From 1ebccb8477095332067873c032cf1792d95f2e5b Mon Sep 17 00:00:00 2001 From: Laurent Magnin Date: Fri, 5 Jun 2020 16:52:02 +0200 Subject: [PATCH] First released WPShop 2.0.0-Beta --- .browserslist | 6 + .codecov.yml | 26 + .editorconfig | 18 + .gitattributes | 1 + .gitignore | 4 + .gitmodules | 3 + .scrutinizer.yml | 27 + .travis.yml | 58 + README.md | 45 + build/block.asset.php | 1 + build/block.js | 340 + build/block.js.map | 1 + composer.json | 37 + composer.lock | 1713 ++ core/action/class-core-action.php | 233 + core/action/index.php | 2 + core/asset/css/index.php | 2 + .../css/scss-frontend/element/_element.scss | 4 + .../css/scss-frontend/element/cart/_cart.scss | 3 + .../scss-frontend/element/cart/_checkout.scss | 24 + .../scss-frontend/element/cart/_product.scss | 3 + .../scss-frontend/element/cart/_resume.scss | 26 + .../element/checkout/_checkout.scss | 3 + .../element/checkout/_payment.scss | 48 + .../element/checkout/_resume-product.scss | 32 + .../scss-frontend/element/checkout/_step.scss | 48 + .../element/my-account/_login.scss | 10 + .../element/my-account/_my-account.scss | 3 + .../element/my-account/_navigation.scss | 55 + .../element/my-account/_wps-box.scss | 87 + .../element/product/_grid-product.scss | 91 + .../element/product/_list-product.scss | 91 + .../element/product/_product.scss | 4 + .../element/product/_single-product.scss | 6 + .../element/product/_taxonomy.scss | 5 + .../css/scss-frontend/external/_external.scss | 2 + .../eoframework-color/_autocomplete.scss | 13 + .../external/eoframework-color/_button.scss | 140 + .../eoframework-color/_eoframework-color.scss | 11 + .../external/eoframework-color/_form.scss | 24 + .../external/eoframework-color/_loader.scss | 5 + .../external/eoframework-color/_modal.scss | 9 + .../eoframework-color/_notification.scss | 34 + .../eoframework-color/_pagination.scss | 10 + .../external/eoframework-color/_popover.scss | 32 + .../external/eoframework-color/_tab.scss | 31 + .../external/eoframework-color/_table.scss | 23 + .../external/eoframework-color/_tooltip.scss | 31 + .../external/eoframework-modules/_button.scss | 11 + .../_eoframework-modules.scss | 3 + .../external/eoframework-modules/_notice.scss | 3 + .../external/eoframework-modules/_table.scss | 10 + core/asset/css/scss-frontend/font/_font.scss | 1 + .../font/font-awesome/_core.scss | 20 + .../font/font-awesome/_fontawesome.scss | 7 + .../font/font-awesome/_mixins.scss | 57 + .../font/font-awesome/_variables.scss | 1383 ++ core/asset/css/scss-frontend/index.php | 2 + .../scss-frontend/mixins/_mixins-master.scss | 31 + core/asset/css/scss-frontend/style.scss | 18 + .../css/scss-frontend/variables/_colors.scss | 15 + .../scss-frontend/variables/_structure.scss | 3 + .../scss-frontend/variables/_typography.scss | 2 + .../scss-frontend/variables/_variables.scss | 3 + .../scss/element-global/_element-global.scss | 1 + .../css/scss/element-global/_modal-sync.scss | 136 + core/asset/css/scss/element/_element.scss | 12 + core/asset/css/scss/element/_filter-bar.scss | 8 + .../asset/css/scss/element/_metabox-list.scss | 1 + core/asset/css/scss/element/_metabox.scss | 37 + core/asset/css/scss/element/_page-header.scss | 20 + core/asset/css/scss/element/_status.scss | 16 + .../asset/css/scss/element/_sync-element.scss | 49 + .../css/scss/element/table/_commercial.scss | 8 + core/asset/css/scss/element/table/_flex.scss | 36 + .../css/scss/element/table/_list-contact.scss | 26 + .../css/scss/element/table/_list-product.scss | 5 + .../css/scss/element/table/_reference.scss | 80 + core/asset/css/scss/element/table/_table.scss | 35 + core/asset/css/scss/external/_button.scss | 11 + core/asset/css/scss/external/_external.scss | 3 + core/asset/css/scss/external/_table.scss | 10 + .../eoframework-color/_autocomplete.scss | 13 + .../external/eoframework-color/_button.scss | 140 + .../eoframework-color/_eoframework-color.scss | 11 + .../external/eoframework-color/_form.scss | 24 + .../external/eoframework-color/_loader.scss | 5 + .../external/eoframework-color/_modal.scss | 9 + .../eoframework-color/_notification.scss | 34 + .../eoframework-color/_pagination.scss | 10 + .../external/eoframework-color/_popover.scss | 32 + .../scss/external/eoframework-color/_tab.scss | 31 + .../external/eoframework-color/_table.scss | 23 + .../external/eoframework-color/_tooltip.scss | 31 + core/asset/css/scss/font/_font.scss | 1 + .../css/scss/font/font-awesome/_core.scss | 20 + .../scss/font/font-awesome/_fontawesome.scss | 7 + .../css/scss/font/font-awesome/_mixins.scss | 57 + .../scss/font/font-awesome/_variables.scss | 1383 ++ core/asset/css/scss/index.php | 2 + .../asset/css/scss/mixins/_mixins-master.scss | 31 + core/asset/css/scss/page/_page.scss | 1 + .../css/scss/page/_single-third-party.scss | 1 + core/asset/css/scss/page/_status.scss | 25 + core/asset/css/scss/style.scss | 139 + core/asset/css/scss/variables/_colors.scss | 15 + core/asset/css/scss/variables/_structure.scss | 3 + .../asset/css/scss/variables/_typography.scss | 2 + core/asset/css/scss/variables/_variables.scss | 3 + core/asset/css/style.css | 1150 ++ core/asset/css/style.frontend.css | 942 + core/asset/css/style.frontend.min.css | 4 + core/asset/css/style.min.css | 1 + .../image/default-product-thumbnail-min.jpg | Bin 0 -> 4139 bytes .../asset/image/default-product-thumbnail.jpg | Bin 0 -> 2894 bytes core/asset/image/index.php | 2 + core/asset/index.php | 2 + core/asset/js/backend.min.js | 1 + core/asset/js/blocks/block.js | 161 + core/asset/js/frontend.min.js | 281 + core/asset/js/index.php | 2 + core/asset/js/init.js | 49 + core/asset/language/index.php | 2 + core/asset/language/wpshop-fr_FR.mo | Bin 0 -> 25663 bytes core/asset/language/wpshop-fr_FR.po | 2153 +++ core/class/class-core.php | 47 + core/core.config.json | 13 + core/external/eo-framework/.editorconfig | 18 + core/external/eo-framework/.gitignore | 8 + core/external/eo-framework/.travis.yml | 63 + core/external/eo-framework/LICENSE | 674 + core/external/eo-framework/README.md | 39 + core/external/eo-framework/composer.json | 16 + core/external/eo-framework/composer.lock | 114 + .../eo-framework/core/action/core.action.php | 102 + .../eo-framework/core/assets/README.md | 12 + .../css/fontawesome/fontawesome-all.min.css | 5 + .../eo-framework/core/assets/css/index.php | 2 + .../core/assets/css/jquery.datetimepicker.css | 418 + .../core/assets/css/scss/_normalize.scss | 211 + .../core/assets/css/scss/core/_core.scss | 2 + .../scss/core/custom-menu/_custom-menu.scss | 158 + .../css/scss/core/structure/_structure.scss | 67 + .../assets/css/scss/fontawesome/_core.scss | 20 + .../css/scss/fontawesome/_fontawesome.scss | 7 + .../assets/css/scss/fontawesome/_mixins.scss | 75 + .../css/scss/fontawesome/_variables.scss | 1383 ++ .../core/assets/css/scss/index.php | 2 + .../css/scss/mixins/_mixins-master.scss | 31 + .../assets/css/scss/modules/_modules.scss | 26 + .../scss/modules/animation/_animation.scss | 226 + .../animation/attention_seekers/_bounce.scss | 20 + .../animation/attention_seekers/_flash.scss | 9 + .../attention_seekers/_headShake.scss | 25 + .../animation/attention_seekers/_jello.scss | 33 + .../animation/attention_seekers/_pulse.scss | 15 + .../attention_seekers/_rubberBand.scss | 29 + .../animation/attention_seekers/_shake.scss | 13 + .../animation/attention_seekers/_swing.scss | 21 + .../animation/attention_seekers/_tada.scss | 21 + .../animation/attention_seekers/_wobble.scss | 31 + .../bouncing_entrances/_bounceIn.scss | 32 + .../bouncing_entrances/_bounceInDown.scss | 27 + .../bouncing_entrances/_bounceInLeft.scss | 27 + .../bouncing_entrances/_bounceInRight.scss | 27 + .../bouncing_entrances/_bounceInUp.scss | 27 + .../animation/bouncing_exits/_bounceOut.scss | 15 + .../bouncing_exits/_bounceOutDown.scss | 15 + .../bouncing_exits/_bounceOutLeft.scss | 11 + .../bouncing_exits/_bounceOutRight.scss | 11 + .../bouncing_exits/_bounceOutUp.scss | 15 + .../animation/custom/_bounceInLight.scss | 29 + .../modules/animation/custom/_downAndUp.scss | 11 + .../modules/animation/custom/_rotate.scss | 8 + .../animation/fading_entrances/_fadeIn.scss | 9 + .../fading_entrances/_fadeInDown.scss | 11 + .../fading_entrances/_fadeInDownBig.scss | 11 + .../fading_entrances/_fadeInLeft.scss | 11 + .../fading_entrances/_fadeInLeftBig.scss | 11 + .../fading_entrances/_fadeInRight.scss | 11 + .../fading_entrances/_fadeInRightBig.scss | 11 + .../animation/fading_entrances/_fadeInUp.scss | 11 + .../fading_entrances/_fadeInUpBig.scss | 11 + .../animation/fading_exits/_fadeOut.scss | 9 + .../animation/fading_exits/_fadeOutDown.scss | 10 + .../fading_exits/_fadeOutDownBig.scss | 10 + .../animation/fading_exits/_fadeOutLeft.scss | 10 + .../fading_exits/_fadeOutLeftBig.scss | 10 + .../animation/fading_exits/_fadeOutRight.scss | 10 + .../fading_exits/_fadeOutRightBig.scss | 10 + .../animation/fading_exits/_fadeOutUp.scss | 10 + .../animation/fading_exits/_fadeOutUpBig.scss | 10 + .../sliding_entrances/_slideInDown.scss | 10 + .../sliding_entrances/_slideInLeft.scss | 10 + .../sliding_entrances/_slideInRight.scss | 10 + .../sliding_entrances/_slideInUp.scss | 10 + .../sliding_exits/_slideOutDown.scss | 10 + .../sliding_exits/_slideOutLeft.scss | 10 + .../sliding_exits/_slideOutRight.scss | 10 + .../animation/sliding_exits/_slideOutUp.scss | 10 + .../modules/autocomplete/_autocomplete.scss | 188 + .../css/scss/modules/button/_button.scss | 194 + .../css/scss/modules/button/_colors.scss | 133 + .../css/scss/modules/button/_progress.scss | 92 + .../css/scss/modules/dropdown/_dropdown.scss | 129 + .../css/scss/modules/dropdown/_grid.scss | 11 + .../css/scss/modules/dropdown/_list.scss | 30 + .../scss/modules/form/_archive-moderne.scss | 98 + .../scss/modules/form/_archive-simple.scss | 117 + .../css/scss/modules/form/_checkbox.scss | 52 + .../assets/css/scss/modules/form/_form.scss | 155 + .../assets/css/scss/modules/form/_input.scss | 75 + .../assets/css/scss/modules/form/_radio.scss | 53 + .../assets/css/scss/modules/grid/_grid.scss | 79 + .../scss/modules/gridlayout/_gridlayout.scss | 77 + .../css/scss/modules/loader/_loader.scss | 35 + .../assets/css/scss/modules/modal/_modal.scss | 110 + .../css/scss/modules/notice/_notice.scss | 56 + .../css/scss/modules/notice/_status.scss | 55 + .../modules/notification/_notification.scss | 143 + .../scss/modules/pagination/_pagination.scss | 71 + .../css/scss/modules/popover/_popover.scss | 107 + .../assets/css/scss/modules/tab/_effect.scss | 50 + .../assets/css/scss/modules/tab/_tab.scss | 119 + .../css/scss/modules/tab/_template.scss | 46 + .../assets/css/scss/modules/table/_flex.scss | 88 + .../css/scss/modules/table/_standard.scss | 73 + .../assets/css/scss/modules/table/_table.scss | 10 + .../css/scss/modules/tooltip/_tooltip.scss | 107 + .../assets/css/scss/modules/util/_util.scss | 11 + .../core/assets/css/scss/style.scss | 78 + .../assets/css/scss/variables/_colors.scss | 11 + .../assets/css/scss/variables/_structure.scss | 3 + .../css/scss/variables/_typography.scss | 2 + .../assets/css/scss/variables/_variables.scss | 3 + .../eo-framework/core/assets/css/style.css | 5908 ++++++ .../core/assets/css/style.min.css | 9 + .../assets/css/webfonts/fa-brands-400.eot | Bin 0 -> 125320 bytes .../assets/css/webfonts/fa-brands-400.svg | 3296 ++++ .../assets/css/webfonts/fa-brands-400.ttf | Bin 0 -> 125016 bytes .../assets/css/webfonts/fa-brands-400.woff | Bin 0 -> 84564 bytes .../assets/css/webfonts/fa-brands-400.woff2 | Bin 0 -> 72112 bytes .../assets/css/webfonts/fa-regular-400.eot | Bin 0 -> 34388 bytes .../assets/css/webfonts/fa-regular-400.svg | 799 + .../assets/css/webfonts/fa-regular-400.ttf | Bin 0 -> 34092 bytes .../assets/css/webfonts/fa-regular-400.woff | Bin 0 -> 16812 bytes .../assets/css/webfonts/fa-regular-400.woff2 | Bin 0 -> 13592 bytes .../core/assets/css/webfonts/fa-solid-900.eot | Bin 0 -> 186512 bytes .../core/assets/css/webfonts/fa-solid-900.svg | 4516 +++++ .../core/assets/css/webfonts/fa-solid-900.ttf | Bin 0 -> 186228 bytes .../assets/css/webfonts/fa-solid-900.woff | Bin 0 -> 96244 bytes .../assets/css/webfonts/fa-solid-900.woff2 | Bin 0 -> 74348 bytes .../assets/examples/assets/img/gravatar.jpg | Bin 0 -> 14291 bytes .../core/assets/examples/assets/includejs.js | 397 + .../core/assets/examples/assets/jquery.min.js | 4 + .../core/assets/examples/assets/prism.min.css | 138 + .../core/assets/examples/assets/prism.min.js | 10 + .../core/assets/examples/assets/script.js | 74 + .../core/assets/examples/assets/style.css | 369 + .../examples/inc/animation/animation.html | 140 + .../inc/autocomplete/autocomplete.html | 219 + .../assets/examples/inc/button/button.html | 148 + .../examples/inc/container/container.html | 11 + .../examples/inc/dropdown/dropdown.html | 184 + .../core/assets/examples/inc/form/form.html | 597 + .../core/assets/examples/inc/grid/grid.html | 70 + .../assets/examples/inc/heading/heading.html | 12 + .../assets/examples/inc/loader/loader.html | 15 + .../core/assets/examples/inc/modal/modal.html | 98 + .../assets/examples/inc/notice/notice.html | 48 + .../assets/examples/inc/notification.html | 1 + .../inc/notification/notification.html | 103 + .../examples/inc/pagination/pagination.html | 44 + .../core/assets/examples/inc/tab/tab.html | 215 + .../core/assets/examples/inc/table/table.html | 205 + .../assets/examples/inc/tooltip/tooltip.html | 38 + .../core/assets/examples/inc/util/util.html | 9 + .../core/assets/examples/index.html | 82 + .../core/assets/examples/index.php | 2 + .../eo-framework/core/assets/index.php | 2 + .../eo-framework/core/assets/js/README.md | 45 + .../eo-framework/core/assets/js/action.lib.js | 265 + .../core/assets/js/array-form.lib.js | 78 + .../core/assets/js/attribute.lib.js | 43 + .../core/assets/js/auto-complete.lib.js | 293 + .../eo-framework/core/assets/js/date.lib.js | 63 + .../js/dest/jquery.datetimepicker.full.js | 1849 ++ .../core/assets/js/dest/wpeo-assets.js | 2212 +++ .../core/assets/js/dropdown.lib.js | 169 + .../eo-framework/core/assets/js/form.lib.js | 112 + .../eo-framework/core/assets/js/global.lib.js | 77 + .../eo-framework/core/assets/js/index.php | 2 + .../eo-framework/core/assets/js/init.js | 137 + .../eo-framework/core/assets/js/loader.lib.js | 81 + .../eo-framework/core/assets/js/modal.lib.js | 260 + .../core/assets/js/popover.lib.js | 129 + .../eo-framework/core/assets/js/regex.lib.js | 38 + .../eo-framework/core/assets/js/render.lib.js | 63 + .../core/assets/js/request.lib.js | 134 + .../eo-framework/core/assets/js/tab.lib.js | 126 + .../core/assets/js/tooltip.lib.js | 128 + .../core/assets/languages/eoxia-fr_FR.mo | Bin 0 -> 2975 bytes .../core/assets/languages/eoxia-fr_FR.po | 268 + .../eo-framework/core/core.config.json | 11 + .../external/eo-framework/core/util/README.md | 81 + .../core/util/class-array-util.php | 138 + .../core/util/class-config-util.php | 99 + .../eo-framework/core/util/class-csv-util.php | 69 + .../core/util/class-date-util.php | 153 + .../core/util/class-external-util.php | 135 + .../core/util/class-file-util.php | 75 + .../core/util/class-include-util.php | 57 + .../core/util/class-init-util.php | 154 + .../core/util/class-json-util.php | 89 + .../eo-framework/core/util/class-log-util.php | 94 + .../core/util/class-module-util.php | 181 + .../core/util/class-post-util.php | 78 + .../core/util/class-singleton-util.php | 70 + .../core/util/class-view-util.php | 63 + .../eo-framework/core/util/class-zip-util.php | 76 + .../external/eo-framework/core/util/index.php | 2 + .../core/view/modal-buttons.view.php | 19 + .../core/view/modal-title.view.php | 18 + .../eo-framework/core/view/modal.view.php | 34 + .../eo-framework/eo-framework.config.json | 23 + core/external/eo-framework/eo-framework.php | 23 + core/external/eo-framework/gulpfile.js | 77 + core/external/eo-framework/index.php | 2 + core/external/eo-framework/jsdoc.conf.json | 13 + core/external/eo-framework/modules/index.php | 2 + .../action/class-custom-menu-action.php | 76 + .../modules/wpeo-custom-menu/action/index.php | 0 .../asset/css/wpeo-custom-menu.css | 210 + .../asset/js/wpeo-custom-menu.js | 55 + .../class/class-custom-menu-handler.php | 130 + .../class/class-custom-menu.php | 63 + .../filter/class-custom-menu-filter.php | 84 + .../modules/wpeo-custom-menu/filter/index.php | 0 .../wpeo-custom-menu/view/content.view.php | 43 + .../view/header-multisite.view.php | 46 + .../wpeo-custom-menu/view/header.view.php | 46 + .../modules/wpeo-custom-menu/view/index.php | 0 .../wpeo-custom-menu/view/nav.view.php | 103 + .../view/screen-options.view.php | 44 + .../wpeo_custom_menu.config.json | 15 + .../wpeo-model/class/attachment.class.php | 67 + .../wpeo-model/class/comment.class.php | 256 + .../modules/wpeo-model/class/data.class.php | 296 + .../modules/wpeo-model/class/helper.class.php | 137 + .../modules/wpeo-model/class/index.php | 2 + .../modules/wpeo-model/class/object.class.php | 213 + .../modules/wpeo-model/class/post.class.php | 341 + .../modules/wpeo-model/class/rest.class.php | 228 + .../wpeo-model/class/save_meta.class.php | 115 + .../modules/wpeo-model/class/schema.class.php | 134 + .../modules/wpeo-model/class/term.class.php | 246 + .../modules/wpeo-model/class/user.class.php | 184 + .../filter/class-comment-filter.php | 73 + .../filter/class-handle-value-filter.php | 77 + .../wpeo-model/filter/class-post-filter.php | 108 + .../wpeo-model/filter/class-term-filter.php | 72 + .../wpeo-model/filter/class-user-filter.php | 129 + .../modules/wpeo-model/filter/index.php | 2 + .../eo-framework/modules/wpeo-model/index.php | 2 + .../model/class-attachment-model.php | 69 + .../wpeo-model/model/class-comment-model.php | 119 + .../wpeo-model/model/class-post-model.php | 128 + .../wpeo-model/model/class-term-model.php | 86 + .../wpeo-model/model/class-user-model.php | 155 + .../modules/wpeo-model/model/index.php | 2 + .../modules/wpeo-model/wpeo_model.config.json | 31 + .../modules/wpeo-odt/class/odt.class.php | 492 + .../wpeo-odt/model/class-odt-model.php | 75 + .../modules/wpeo-odt/wpeo_odt.config.json | 12 + .../action/class-search-action.php | 107 + .../wpeo-search/assets/js/wpeo-search.js | 48 + .../wpeo-search/class/class-search.php | 170 + .../shortcode/class-search-shortcode.php | 58 + .../view/list-post-simple.view.php | 37 + .../wpeo-search/view/list-post.view.php | 45 + .../wpeo-search/view/list-user.view.php | 39 + .../modules/wpeo-search/view/main.view.php | 57 + .../wpeo-search/wpeo_search.config.json | 13 + .../action/class-update-manager-action.php | 101 + .../wpeo-update-manager/action/index.php | 2 + .../assets/css/scss/element/_element.scss | 1 + .../css/scss/element/_update_manager.scss | 141 + .../assets/css/scss/fontawesome/_core.scss | 20 + .../css/scss/fontawesome/_fontawesome.scss | 7 + .../assets/css/scss/fontawesome/_mixins.scss | 75 + .../css/scss/fontawesome/_variables.scss | 1368 ++ .../assets/css/scss/style.scss | 17 + .../assets/css/scss/variables/_colors.scss | 6 + .../assets/css/scss/variables/_variables.scss | 1 + .../wpeo-update-manager/assets/css/style.css | 201 + .../assets/css/style.min.css | 9 + .../wpeo-update-manager/assets/index.php | 2 + .../wpeo-update-manager/assets/js/index.php | 2 + .../assets/js/wpeo-update-manager.js | 101 + .../class/update-manager.class.php | 45 + .../modules/wpeo-update-manager/index.php | 2 + .../wpeo-update-manager/view/index.php | 2 + .../wpeo-update-manager/view/main.view.php | 89 + .../view/say-to-update.view.php | 35 + .../wpeo_update_manager.config.json | 12 + .../modules/wpeo-upload/README.md | 141 + .../modules/wpeo-upload/action/index.php | 2 + .../wpeo-upload/action/wpeo-upload.action.php | 226 + .../modules/wpeo-upload/assets/css/index.php | 2 + .../assets/css/scss/element/_animation.scss | 24 + .../assets/css/scss/element/_element.scss | 3 + .../assets/css/scss/element/_gallery.scss | 264 + .../assets/css/scss/element/_media.scss | 96 + .../wpeo-upload/assets/css/scss/index.php | 2 + .../css/scss/mixins/_mixins-master.scss | 31 + .../wpeo-upload/assets/css/scss/style.scss | 24 + .../assets/css/scss/variables/_colors.scss | 11 + .../assets/css/scss/variables/_structure.scss | 3 + .../css/scss/variables/_typography.scss | 2 + .../assets/css/scss/variables/_variables.scss | 3 + .../modules/wpeo-upload/assets/css/style.css | 381 + .../wpeo-upload/assets/css/style.min.css | 6 + .../modules/wpeo-upload/assets/index.php | 2 + .../modules/wpeo-upload/assets/js/index.php | 2 + .../wpeo-upload/assets/js/wpeo-upload.js | 412 + .../assets/language/wpeo-upload-fr_FR.mo | Bin 0 -> 955 bytes .../assets/language/wpeo-upload-fr_FR.po | 54 + .../modules/wpeo-upload/class/index.php | 2 + .../wpeo-upload/class/wpeo-upload.class.php | 251 + .../modules/wpeo-upload/index.php | 2 + .../shortcode/class-wpeo-upload-shortcode.php | 103 + .../modules/wpeo-upload/shortcode/index.php | 2 + .../wpeo-upload/view/box/button.view.php | 53 + .../view/box/gallery/actions.view.php | 42 + .../view/box/gallery/attributes.view.php | 27 + .../view/box/gallery/button-add.view.php | 28 + .../view/box/gallery/list.view.php | 64 + .../view/box/gallery/main.view.php | 67 + .../box/gallery/navigation-arrow.view.php | 23 + .../modules/wpeo-upload/view/box/index.php | 2 + .../modules/wpeo-upload/view/index.php | 2 + .../wpeo-upload/view/list/button.view.php | 36 + .../modules/wpeo-upload/view/list/index.php | 2 + .../wpeo-upload/view/list/list-item.view.php | 24 + .../wpeo-upload/view/list/list.view.php | 40 + .../wpeo-upload/wpeo_upload.config.json | 13 + core/external/eo-framework/package-lock.json | 5105 ++++++ core/external/eo-framework/package.json | 22 + core/external/eo-framework/phpcs.xml.dist | 17 + core/external/eo-framework/phpdoc.xml | 16 + core/external/eo-framework/phpunit.xml.dist | 15 + .../external/eo-framework/tests/bootstrap.php | 31 + .../eo-framework/tests/test-post-class.php | 100 + core/external/index.php | 2 + core/filter/class-core-filter.php | 139 + core/index.php | 2 + core/util/class-countries-util.php | 760 + core/util/class-date-util.php | 58 + core/util/class-price-util.php | 39 + core/util/class-request-util.php | 123 + core/util/class-template-util.php | 52 + core/util/index.php | 2 + core/view/erp-connexion-error.view.php | 30 + gulpfile.js | 76 + index.php | 2 + license.txt | 674 + modules/api/action/class-api-action.php | 449 + modules/api/action/index.php | 2 + modules/api/api.config.json | 11 + modules/api/asset/api.backend.js | 12 + modules/api/class/class-api.php | 87 + modules/api/view/field-api.view.php | 36 + modules/cart/action/class-cart-action.php | 186 + modules/cart/action/index.php | 2 + modules/cart/asset/cart.frontend.js | 77 + modules/cart/asset/index.php | 2 + modules/cart/cart.config.json | 13 + modules/cart/class/class-cart-session.php | 296 + modules/cart/class/class-cart.php | 206 + modules/cart/class/index.php | 2 + modules/cart/filter/class-cart-filter.php | 87 + modules/cart/filter/index.php | 2 + modules/cart/index.php | 2 + .../cart/shortcode/class-cart-shortcode.php | 89 + modules/cart/shortcode/index.php | 2 + modules/cart/view/frontend/add-to-cart.php | 37 + modules/cart/view/frontend/cart-resume.php | 56 + modules/cart/view/frontend/cart-totals.php | 47 + modules/cart/view/frontend/cart.php | 64 + modules/cart/view/frontend/empty-cart.php | 19 + modules/cart/view/frontend/index.php | 2 + modules/cart/view/frontend/link-cart.php | 38 + modules/cart/view/index.php | 2 + .../checkout/action/class-checkout-action.php | 494 + modules/checkout/action/index.php | 2 + modules/checkout/asset/index.php | 2 + .../checkout/asset/js/checkout.frontend.js | 56 + modules/checkout/asset/js/index.php | 2 + modules/checkout/checkout.config.json | 13 + modules/checkout/class/class-checkout.php | 288 + modules/checkout/class/index.php | 2 + .../checkout/filter/class-checkout-filter.php | 60 + modules/checkout/index.php | 2 + .../shortcode/class-checkout-shortcode.php | 154 + modules/checkout/shortcode/index.php | 2 + .../checkout/view/frontend/devis-button.php | 25 + .../view/frontend/form-checkout-step-1.php | 25 + .../view/frontend/form-checkout-step-2.php | 25 + .../view/frontend/form-checkout-step-3.php | 30 + .../checkout/view/frontend/form-checkout.php | 40 + .../checkout/view/frontend/form-payment.php | 36 + .../checkout/view/frontend/form-shipping.php | 91 + modules/checkout/view/frontend/index.php | 2 + .../checkout/view/frontend/notice-error.php | 29 + modules/checkout/view/frontend/payment.php | 56 + .../view/frontend/place-order-button.php | 21 + .../frontend/proceed-to-checkout-button.php | 21 + .../view/frontend/resume-list-product.php | 31 + .../checkout/view/frontend/review-order.php | 79 + modules/checkout/view/frontend/terms.php | 26 + .../checkout/view/frontend/valid-checkout.php | 56 + modules/checkout/view/index.php | 2 + .../action/class-dashboard-action.php | 46 + modules/dashboard/action/index.php | 2 + modules/dashboard/class/class-dashboard.php | 239 + modules/dashboard/dashboard.config.json | 11 + .../filter/class-dashboard-filter.php | 68 + modules/dashboard/index.php | 2 + modules/dashboard/view/index.php | 2 + modules/dashboard/view/main.view.php | 25 + modules/dashboard/view/metaboxes/index.php | 2 + .../view/metaboxes/metabox-customers.view.php | 52 + .../view/metaboxes/metabox-invoices.view.php | 54 + .../view/metaboxes/metabox-orders.view.php | 54 + .../view/metaboxes/metabox-payments.view.php | 56 + .../view/metaboxes/metabox-products.view.php | 55 + .../metaboxes/metabox-quotations.view.php | 54 + .../view/metaboxes/metabox-sync.view.php | 29 + .../action/class-doli-associate-action.php | 214 + .../asset/js/doli-associate.backend.js | 92 + .../doli-associate/doli-associate.config.json | 10 + .../filter/class-doli-associate-filter.php | 53 + .../view/compare-footer.view.php | 38 + .../view/compare-wps-product.view.php | 44 + .../view/compare-wps-proposal.view.php | 41 + .../view/compare-wps-third-party.view.php | 44 + .../view/compare-wps-user.view.php | 42 + .../view/item-wps-product.view.php | 29 + .../view/item-wps-proposal.view.php | 29 + .../view/item-wps-third-party.view.php | 29 + .../view/item-wps-user.view.php | 29 + .../doli-associate/view/main.view.php | 68 + .../view/modal-associate-footer.view.php | 27 + .../view/modal-associate-result.view.php | 52 + .../view/single-footer.view.php | 30 + .../action/class-doli-invoice-action.php | 318 + .../dolibarr/doli-invoice/action/index.php | 2 + .../doli-invoice/class/class-doli-invoice.php | 331 + modules/dolibarr/doli-invoice/class/index.php | 2 + .../doli-invoice/doli-invoice.config.json | 12 + .../filter/class-doli-invoice-filter.php | 102 + modules/dolibarr/doli-invoice/index.php | 2 + .../model/class-doli-invoice-model.php | 147 + modules/dolibarr/doli-invoice/model/index.php | 2 + modules/dolibarr/doli-invoice/view/index.php | 2 + .../dolibarr/doli-invoice/view/item.view.php | 74 + .../dolibarr/doli-invoice/view/list.view.php | 41 + .../dolibarr/doli-invoice/view/main.view.php | 40 + .../doli-invoice/view/metabox-action.view.php | 17 + .../view/metabox-invoice-details.view.php | 80 + .../view/metabox-invoice-products.view.php | 99 + .../doli-invoice/view/single.view.php | 27 + .../action/class-doli-order-action.php | 550 + modules/dolibarr/doli-order/action/index.php | 2 + .../doli-order/asset/js/order.backend.js | 21 + .../doli-order/class/class-doli-order.php | 352 + modules/dolibarr/doli-order/class/index.php | 2 + .../doli-order/doli-order.config.json | 13 + .../filter/class-doli-order-filter.php | 128 + modules/dolibarr/doli-order/filter/index.php | 2 + modules/dolibarr/doli-order/index.php | 2 + .../model/class-doli-order-model.php | 190 + modules/dolibarr/doli-order/model/index.php | 2 + modules/dolibarr/doli-order/view/index.php | 2 + .../dolibarr/doli-order/view/item.view.php | 53 + .../dolibarr/doli-order/view/list.view.php | 39 + .../dolibarr/doli-order/view/main.view.php | 93 + .../doli-order/view/metabox-action.view.php | 17 + .../view/metabox-order-details.view.php | 56 + .../view/metabox-order-payment.view.php | 68 + .../metabox-order-related-object.view.php | 36 + .../view/metabox-shipment-tracking.view.php | 47 + .../dolibarr/doli-order/view/single.view.php | 27 + .../doli-payment/class/class-doli-payment.php | 161 + modules/dolibarr/doli-payment/class/index.php | 2 + .../doli-payment/doli-payment.config.json | 11 + .../filter/class-doli-payment-filter.php | 52 + .../dolibarr/doli-payment/filter/index.php | 2 + modules/dolibarr/doli-payment/index.php | 2 + .../model/class-doli-payment-model.php | 58 + modules/dolibarr/doli-payment/model/index.php | 2 + .../action/class-doli-products-action.php | 61 + .../class/class-doli-products.php | 108 + .../dolibarr/doli-products/class/index.php | 2 + .../doli-products/doli-products.config.json | 11 + .../filter/class-doli-products-filter.php | 72 + modules/dolibarr/doli-products/index.php | 2 + .../action/class-doli-proposals-action.php | 358 + .../dolibarr/doli-proposals/action/index.php | 2 + .../dolibarr/doli-proposals/asset/index.php | 2 + .../doli-proposals/asset/js/index.php | 2 + .../class/class-doli-proposals.php | 233 + .../dolibarr/doli-proposals/class/index.php | 2 + .../doli-proposals/doli-proposals.config.json | 11 + modules/dolibarr/doli-proposals/index.php | 2 + .../dolibarr/doli-proposals/view/index.php | 2 + .../doli-proposals/view/item.view.php | 48 + .../doli-proposals/view/list.view.php | 39 + .../doli-proposals/view/main.view.php | 93 + .../class-doli-shipping-cost-action.php | 60 + .../doli-shipping-cost/action/index.php | 2 + .../doli-shipping-cost.config.json | 9 + modules/dolibarr/doli-shipping-cost/index.php | 2 + .../doli-statut/class/class-doli-statut.php | 156 + .../doli-statut/doli-statut.config.json | 9 + .../dolibarr/doli-statut/view/item.view.php | 19 + .../action/class-doli-sync-action.php | 260 + modules/dolibarr/doli-sync/action/index.php | 2 + modules/dolibarr/doli-sync/asset/index.php | 2 + .../doli-sync/asset/js/doli-sync.backend.js | 119 + modules/dolibarr/doli-sync/asset/js/index.php | 2 + .../doli-sync/class/class-doli-sync.php | 332 + modules/dolibarr/doli-sync/class/index.php | 2 + .../dolibarr/doli-sync/doli-sync.config.json | 11 + .../filter/class-doli-sync-filter.php | 127 + modules/dolibarr/doli-sync/filter/index.php | 2 + modules/dolibarr/doli-sync/index.php | 2 + modules/dolibarr/doli-sync/view/index.php | 2 + modules/dolibarr/doli-sync/view/main.view.php | 57 + .../doli-sync/view/modal-sync-button.view.php | 21 + .../doli-sync/view/sync-header.view.php | 19 + .../doli-sync/view/sync-item.view.php | 35 + .../class-doli-third-parties-action.php | 90 + .../doli-third-parties/action/index.php | 2 + .../class/class-doli-third-parties.php | 170 + .../doli-third-parties/class/index.php | 2 + .../doli-third-parties.config.json | 11 + .../class-doli-third-parties-filter.php | 52 + .../doli-third-parties/filter/index.php | 2 + modules/dolibarr/doli-third-parties/index.php | 2 + .../action/class-doli-user-action.php | 74 + modules/dolibarr/doli-user/action/index.php | 2 + .../doli-user/class/class-doli-user.php | 267 + modules/dolibarr/doli-user/class/index.php | 2 + .../dolibarr/doli-user/doli-user.config.json | 11 + .../filter/class-doli-user-filter.php | 45 + modules/dolibarr/doli-user/index.php | 2 + .../doli-user/view/frontend/user-alert.php | 23 + modules/emails/action/class-emails-action.php | 105 + modules/emails/action/index.php | 2 + modules/emails/class/class-emails.php | 203 + modules/emails/class/index.php | 2 + modules/emails/emails.config.json | 10 + modules/emails/index.php | 2 + modules/emails/view/admin-new-order.php | 44 + .../emails/view/customer-completed-order.php | 36 + .../emails/view/customer-delivered-order.php | 57 + modules/emails/view/customer-invoice.php | 48 + modules/emails/view/customer-new-account.php | 52 + .../emails/view/customer-processing-order.php | 44 + modules/emails/view/frontend/index.php | 2 + .../emails/view/frontend/order-details.php | 84 + modules/emails/view/frontend/type-payment.php | 27 + modules/emails/view/index.php | 2 + modules/health/filter/class-health-filter.php | 71 + modules/health/health.config.json | 9 + modules/index.php | 2 + .../action/class-my-account-action.php | 235 + modules/my-account/action/index.php | 2 + modules/my-account/asset/index.php | 2 + .../my-account/asset/my-account.frontend.js | 26 + modules/my-account/class/class-my-account.php | 296 + modules/my-account/class/index.php | 2 + .../filter/class-my-account-filter.php | 32 + modules/my-account/index.php | 2 + modules/my-account/my-account.config.json | 12 + .../shortcode/class-my-account-shortcode.php | 100 + modules/my-account/shortcode/index.php | 2 + .../view/frontend/checkout-login.php | 25 + .../my-account/view/frontend/form-login.php | 69 + modules/my-account/view/frontend/index.php | 2 + .../my-account/view/frontend/login-title.php | 21 + .../view/frontend/lost-password.php | 46 + .../view/frontend/my-account-details.php | 102 + .../my-account-dolibarr-proposals.php | 97 + .../view/frontend/my-account-downloads.php | 53 + .../view/frontend/my-account-invoices.php | 94 + .../view/frontend/my-account-navigation.php | 35 + .../view/frontend/my-account-orders.php | 100 + .../my-account-proposals-dolibarr-devis.php | 24 + .../view/frontend/my-account-proposals.php | 84 + .../my-account/view/frontend/my-account.php | 26 + modules/my-account/view/index.php | 2 + modules/order/action/class-order-action.php | 70 + modules/order/order.config.json | 9 + modules/order/view/review-order.view.php | 71 + modules/pages/class/class-pages.php | 332 + modules/pages/class/index.php | 2 + modules/pages/filter/class-pages-filter.php | 135 + modules/pages/filter/index.php | 2 + modules/pages/index.php | 2 + modules/pages/pages.config.json | 10 + modules/payment/class/class-payment.php | 172 + modules/payment/class/index.php | 2 + modules/payment/index.php | 2 + modules/payment/payment.config.json | 9 + modules/paypal/action/class-paypal-action.php | 149 + modules/paypal/action/index.php | 2 + modules/paypal/class/class-paypal.php | 135 + modules/paypal/class/index.php | 2 + modules/paypal/filter/class-paypal-filter.php | 53 + modules/paypal/filter/index.php | 2 + modules/paypal/index.php | 2 + modules/paypal/paypal.config.json | 11 + modules/paypal/view/form-setting.view.php | 31 + modules/paypal/view/index.php | 2 + .../class-product-downloadable-action.php | 91 + .../class/class-product-downloadable.php | 113 + .../class-product-downloadable-model.php | 52 + .../products-downloadable.config.json | 11 + .../products/action/class-product-action.php | 424 + modules/products/action/index.php | 2 + modules/products/asset/index.php | 2 + modules/products/asset/js/index.php | 2 + modules/products/asset/js/product.backend.js | 84 + modules/products/asset/js/product.frontend.js | 40 + modules/products/class/class-product.php | 269 + modules/products/class/index.php | 2 + .../products/filter/class-product-filter.php | 299 + modules/products/filter/index.php | 2 + modules/products/index.php | 2 + .../products/model/class-product-model.php | 229 + modules/products/model/index.php | 2 + modules/products/products.config.json | 13 + .../shortcode/class-products-shortcode.php | 143 + modules/products/view/frontend/index.php | 2 + .../view/frontend/list-wps-product.php | 44 + .../frontend/wps-product-grid-container.php | 39 + .../view/frontend/wps-product-grid.php | 60 + .../view/frontend/wps-product-list-edit.php | 60 + .../view/frontend/wps-product-list.php | 45 + .../view/frontend/wps-product-single.php | 52 + .../view/frontend/wps-product-stock.php | 21 + .../wps-product-taxonomy-container.php | 26 + .../view/frontend/wps-product-taxonomy.php | 24 + modules/products/view/index.php | 2 + modules/products/view/item-edit.view.php | 88 + modules/products/view/item.view.php | 48 + modules/products/view/list.view.php | 43 + modules/products/view/main.view.php | 96 + modules/products/view/metabox/index.php | 2 + modules/products/view/metabox/main.view.php | 141 + .../action/class-proposals-action.php | 273 + modules/proposals/class/class-proposals.php | 289 + modules/proposals/class/index.php | 2 + .../filter/class-proposals-filter.php | 73 + modules/proposals/filter/index.php | 2 + modules/proposals/index.php | 2 + .../proposals/model/class-proposals-model.php | 166 + modules/proposals/model/index.php | 2 + modules/proposals/proposals.config.json | 13 + modules/proposals/view/index.php | 2 + modules/proposals/view/item.view.php | 49 + modules/proposals/view/list.view.php | 39 + modules/proposals/view/main.view.php | 107 + .../proposals/view/metabox-action.view.php | 17 + .../view/metabox-proposal-address.view.php | 70 + .../view/metabox-proposal-details.view.php | 24 + .../view/metabox-proposal-products.view.php | 71 + modules/proposals/view/single.view.php | 27 + modules/search/action/class-search-action.php | 43 + modules/search/search.config.json | 10 + modules/search/view/search-field.view.php | 24 + modules/search/widget/class-search-widget.php | 88 + .../settings/action/class-settings-action.php | 352 + modules/settings/action/index.php | 2 + modules/settings/asset/js/settings.backend.js | 17 + modules/settings/class/class-settings.php | 271 + modules/settings/class/index.php | 2 + modules/settings/index.php | 2 + modules/settings/settings.config.json | 10 + .../settings/view/delivery-method.view.php | 19 + modules/settings/view/email-single.view.php | 49 + modules/settings/view/emails.view.php | 47 + modules/settings/view/erp.view.php | 184 + modules/settings/view/general.view.php | 59 + modules/settings/view/index.php | 2 + modules/settings/view/main.view.php | 48 + .../view/notice-activate-erp.view.php | 30 + .../settings/view/notice-error-erp.view.php | 30 + modules/settings/view/pages.view.php | 58 + .../view/payment-method-single.view.php | 54 + modules/settings/view/payment-method.view.php | 46 + modules/settings/view/shipping-cost.view.php | 55 + modules/stripe/action/class-stripe-action.php | 110 + modules/stripe/asset/stripe.frontend.js | 28 + modules/stripe/class/class-stripe.php | 66 + modules/stripe/filter/class-stripe-filter.php | 53 + modules/stripe/stripe.config.json | 11 + modules/stripe/view/form-setting.view.php | 38 + .../action/class-third-party-action.php | 363 + modules/third-parties/action/index.php | 2 + modules/third-parties/asset/index.php | 2 + .../asset/third-parties.backend.js | 50 + .../third-parties/class/class-third-party.php | 297 + modules/third-parties/class/index.php | 2 + .../filter/class-third-party-filter.php | 102 + modules/third-parties/filter/index.php | 2 + modules/third-parties/index.php | 2 + .../model/class-third-party-model.php | 137 + modules/third-parties/model/index.php | 2 + .../third-parties/third-parties.config.json | 12 + .../third-parties/view/commercial.view.php | 47 + modules/third-parties/view/index.php | 2 + modules/third-parties/view/item.view.php | 46 + modules/third-parties/view/list.view.php | 40 + modules/third-parties/view/main.view.php | 94 + .../third-parties/view/metaboxes/index.php | 2 + .../metaboxes/metabox-activities.view.php | 40 + .../view/metaboxes/metabox-activity.view.php | 25 + .../metabox-billing-address-edit.view.php | 38 + .../metabox-billing-address.view.php | 37 + .../metaboxes/metabox-contacts-edit.view.php | 34 + .../metaboxes/metabox-contacts-item.view.php | 34 + .../view/metaboxes/metabox-contacts.view.php | 42 + .../metabox-dolibarr-proposals.view.php | 49 + .../view/metaboxes/metabox-indicator.view.php | 37 + .../metaboxes/metabox-informations.view.php | 49 + .../view/metaboxes/metabox-invoices.view.php | 64 + .../view/metaboxes/metabox-orders.view.php | 49 + .../view/metaboxes/metabox-proposals.view.php | 49 + .../view/metaboxes/metabox-task.view.php | 31 + .../view/single-title-edit.view.php | 45 + .../third-parties/view/single-title.view.php | 19 + modules/third-parties/view/single.view.php | 39 + modules/tools/action/class-tools-action.php | 282 + modules/tools/action/index.php | 2 + modules/tools/asset/tools.backend.js | 138 + modules/tools/class/class-tools.php | 42 + modules/tools/class/index.php | 2 + modules/tools/index.php | 2 + modules/tools/tools.config.json | 10 + modules/tools/view/general.view.php | 52 + modules/tools/view/index.php | 2 + modules/tools/view/main.view.php | 33 + .../action/class-transfert-data-action.php | 222 + modules/transfert-data/action/index.php | 2 + modules/transfert-data/asset/index.php | 2 + modules/transfert-data/asset/js/index.php | 2 + .../asset/js/transfert-data.backend.js | 54 + modules/transfert-data/index.php | 2 + .../transfert-data/transfert-data.config.json | 9 + modules/transfert-data/view/index.php | 2 + modules/transfert-data/view/main.view.php | 35 + modules/user/class/class-user.php | 91 + modules/user/class/index.php | 2 + modules/user/filter/class-user-filter.php | 54 + modules/user/index.php | 2 + modules/user/model/class-user-model.php | 78 + modules/user/model/index.php | 2 + modules/user/user.config.json | 11 + modules/user/view/index.php | 2 + modules/user/view/item.view.php | 38 + modules/user/view/list.view.php | 30 + package-lock.json | 14782 ++++++++++++++++ package.json | 27 + phpcs.xml | 32 + tests/bin/travis.sh | 32 + vendor/autoload.php | 7 + vendor/bin/phpunit | 14 + vendor/bin/phpunit.bat | 4 + vendor/composer/ClassLoader.php | 445 + vendor/composer/LICENSE | 21 + vendor/composer/autoload_classmap.php | 551 + vendor/composer/autoload_files.php | 11 + vendor/composer/autoload_namespaces.php | 10 + vendor/composer/autoload_psr4.php | 16 + vendor/composer/autoload_real.php | 73 + vendor/composer/autoload_static.php | 637 + vendor/composer/installed.json | 1757 ++ vendor/composer/installers/LICENSE | 19 + vendor/composer/installers/composer.json | 105 + .../src/Composer/Installers/AglInstaller.php | 21 + .../Composer/Installers/AimeosInstaller.php | 9 + .../Installers/AnnotateCmsInstaller.php | 11 + .../Composer/Installers/AsgardInstaller.php | 49 + .../Composer/Installers/AttogramInstaller.php | 9 + .../src/Composer/Installers/BaseInstaller.php | 136 + .../Composer/Installers/BitrixInstaller.php | 126 + .../Composer/Installers/BonefishInstaller.php | 9 + .../Composer/Installers/CakePHPInstaller.php | 82 + .../src/Composer/Installers/ChefInstaller.php | 11 + .../Composer/Installers/CiviCrmInstaller.php | 9 + .../Installers/ClanCatsFrameworkInstaller.php | 10 + .../Composer/Installers/CockpitInstaller.php | 34 + .../Installers/CodeIgniterInstaller.php | 11 + .../Installers/Concrete5Installer.php | 13 + .../Composer/Installers/CraftInstaller.php | 35 + .../Composer/Installers/CroogoInstaller.php | 21 + .../Composer/Installers/DecibelInstaller.php | 10 + .../Composer/Installers/DokuWikiInstaller.php | 50 + .../Composer/Installers/DolibarrInstaller.php | 16 + .../Composer/Installers/DrupalInstaller.php | 16 + .../src/Composer/Installers/ElggInstaller.php | 9 + .../Composer/Installers/EliasisInstaller.php | 12 + .../Installers/ExpressionEngineInstaller.php | 29 + .../Installers/EzPlatformInstaller.php | 10 + .../src/Composer/Installers/FuelInstaller.php | 11 + .../Composer/Installers/FuelphpInstaller.php | 9 + .../src/Composer/Installers/GravInstaller.php | 30 + .../Composer/Installers/HuradInstaller.php | 25 + .../Composer/Installers/ImageCMSInstaller.php | 11 + .../src/Composer/Installers/Installer.php | 274 + .../src/Composer/Installers/ItopInstaller.php | 9 + .../Composer/Installers/JoomlaInstaller.php | 15 + .../Composer/Installers/KanboardInstaller.php | 18 + .../Composer/Installers/KirbyInstaller.php | 11 + .../Composer/Installers/KodiCMSInstaller.php | 10 + .../Composer/Installers/KohanaInstaller.php | 9 + .../LanManagementSystemInstaller.php | 27 + .../Composer/Installers/LaravelInstaller.php | 9 + .../Composer/Installers/LavaLiteInstaller.php | 10 + .../Composer/Installers/LithiumInstaller.php | 10 + .../Installers/MODULEWorkInstaller.php | 9 + .../Composer/Installers/MODXEvoInstaller.php | 16 + .../Composer/Installers/MagentoInstaller.php | 11 + .../Composer/Installers/MajimaInstaller.php | 37 + .../src/Composer/Installers/MakoInstaller.php | 9 + .../Composer/Installers/MauticInstaller.php | 25 + .../src/Composer/Installers/MayaInstaller.php | 33 + .../Installers/MediaWikiInstaller.php | 51 + .../Installers/MicroweberInstaller.php | 111 + .../src/Composer/Installers/ModxInstaller.php | 12 + .../Composer/Installers/MoodleInstaller.php | 57 + .../Composer/Installers/OctoberInstaller.php | 47 + .../Composer/Installers/OntoWikiInstaller.php | 24 + .../Composer/Installers/OsclassInstaller.php | 14 + .../src/Composer/Installers/OxidInstaller.php | 59 + .../src/Composer/Installers/PPIInstaller.php | 9 + .../Composer/Installers/PhiftyInstaller.php | 11 + .../Composer/Installers/PhpBBInstaller.php | 11 + .../Composer/Installers/PimcoreInstaller.php | 21 + .../Composer/Installers/PiwikInstaller.php | 32 + .../Installers/PlentymarketsInstaller.php | 29 + .../src/Composer/Installers/Plugin.php | 17 + .../Composer/Installers/PortoInstaller.php | 9 + .../Installers/PrestashopInstaller.php | 10 + .../Composer/Installers/PuppetInstaller.php | 11 + .../Composer/Installers/PxcmsInstaller.php | 63 + .../Composer/Installers/RadPHPInstaller.php | 24 + .../Composer/Installers/ReIndexInstaller.php | 10 + .../Composer/Installers/RedaxoInstaller.php | 10 + .../Installers/RoundcubeInstaller.php | 22 + .../src/Composer/Installers/SMFInstaller.php | 10 + .../Composer/Installers/ShopwareInstaller.php | 60 + .../Installers/SilverStripeInstaller.php | 35 + .../Installers/SiteDirectInstaller.php | 25 + .../Composer/Installers/SyDESInstaller.php | 49 + .../Composer/Installers/Symfony1Installer.php | 26 + .../Composer/Installers/TYPO3CmsInstaller.php | 16 + .../Installers/TYPO3FlowInstaller.php | 38 + .../Composer/Installers/TheliaInstaller.php | 12 + .../src/Composer/Installers/TuskInstaller.php | 14 + .../Installers/UserFrostingInstaller.php | 9 + .../Composer/Installers/VanillaInstaller.php | 10 + .../Composer/Installers/VgmcpInstaller.php | 49 + .../Composer/Installers/WHMCSInstaller.php | 10 + .../Composer/Installers/WolfCMSInstaller.php | 9 + .../Installers/WordPressInstaller.php | 12 + .../Composer/Installers/YawikInstaller.php | 32 + .../src/Composer/Installers/ZendInstaller.php | 11 + .../Composer/Installers/ZikulaInstaller.php | 10 + vendor/composer/installers/src/bootstrap.php | 13 + vendor/doctrine/instantiator/.gitignore | 5 + vendor/doctrine/instantiator/.scrutinizer.yml | 46 + .../doctrine/instantiator/.travis.install.sh | 14 + vendor/doctrine/instantiator/.travis.yml | 22 + vendor/doctrine/instantiator/CONTRIBUTING.md | 35 + vendor/doctrine/instantiator/LICENSE | 19 + vendor/doctrine/instantiator/README.md | 40 + vendor/doctrine/instantiator/composer.json | 45 + vendor/doctrine/instantiator/phpmd.xml.dist | 27 + vendor/doctrine/instantiator/phpunit.xml.dist | 22 + .../Exception/ExceptionInterface.php | 29 + .../Exception/InvalidArgumentException.php | 62 + .../Exception/UnexpectedValueException.php | 79 + .../Doctrine/Instantiator/Instantiator.php | 273 + .../Instantiator/InstantiatorInterface.php | 37 + .../InstantiatorPerformanceEvent.php | 96 + .../InvalidArgumentExceptionTest.php | 83 + .../UnexpectedValueExceptionTest.php | 69 + .../InstantiatorTest/InstantiatorTest.php | 219 + .../AbstractClassAsset.php | 29 + .../ArrayObjectAsset.php | 41 + .../InstantiatorTestAsset/ExceptionAsset.php | 41 + .../FinalExceptionAsset.php | 41 + .../InstantiatorTestAsset/PharAsset.php | 41 + .../PharExceptionAsset.php | 44 + .../SerializableArrayObjectAsset.php | 62 + .../SimpleSerializableAsset.php | 61 + .../SimpleTraitAsset.php | 29 + .../UnCloneableAsset.php | 50 + .../UnserializeExceptionArrayObjectAsset.php | 39 + .../WakeUpNoticesAsset.php | 38 + .../InstantiatorTestAsset/XMLReaderAsset.php | 41 + vendor/myclabs/deep-copy/.gitattributes | 7 + vendor/myclabs/deep-copy/.gitignore | 3 + vendor/myclabs/deep-copy/.travis.yml | 40 + vendor/myclabs/deep-copy/LICENSE | 20 + vendor/myclabs/deep-copy/README.md | 372 + vendor/myclabs/deep-copy/composer.json | 35 + vendor/myclabs/deep-copy/doc/clone.png | Bin 0 -> 12380 bytes vendor/myclabs/deep-copy/doc/deep-clone.png | Bin 0 -> 14009 bytes vendor/myclabs/deep-copy/doc/deep-copy.png | Bin 0 -> 10895 bytes vendor/myclabs/deep-copy/doc/graph.png | Bin 0 -> 6436 bytes vendor/myclabs/deep-copy/fixtures/f001/A.php | 20 + vendor/myclabs/deep-copy/fixtures/f001/B.php | 20 + vendor/myclabs/deep-copy/fixtures/f002/A.php | 33 + .../myclabs/deep-copy/fixtures/f003/Foo.php | 26 + .../fixtures/f004/UnclonableItem.php | 13 + .../myclabs/deep-copy/fixtures/f005/Foo.php | 13 + vendor/myclabs/deep-copy/fixtures/f006/A.php | 26 + vendor/myclabs/deep-copy/fixtures/f006/B.php | 26 + .../fixtures/f007/FooDateInterval.php | 15 + .../fixtures/f007/FooDateTimeZone.php | 15 + vendor/myclabs/deep-copy/fixtures/f008/A.php | 18 + vendor/myclabs/deep-copy/fixtures/f008/B.php | 7 + .../deep-copy/src/DeepCopy/DeepCopy.php | 281 + .../src/DeepCopy/Exception/CloneException.php | 9 + .../DeepCopy/Exception/PropertyException.php | 9 + .../Doctrine/DoctrineCollectionFilter.php | 33 + .../DoctrineEmptyCollectionFilter.php | 28 + .../Filter/Doctrine/DoctrineProxyFilter.php | 22 + .../deep-copy/src/DeepCopy/Filter/Filter.php | 18 + .../src/DeepCopy/Filter/KeepFilter.php | 16 + .../src/DeepCopy/Filter/ReplaceFilter.php | 39 + .../src/DeepCopy/Filter/SetNullFilter.php | 24 + .../Matcher/Doctrine/DoctrineProxyMatcher.php | 22 + .../src/DeepCopy/Matcher/Matcher.php | 14 + .../src/DeepCopy/Matcher/PropertyMatcher.php | 39 + .../DeepCopy/Matcher/PropertyNameMatcher.php | 32 + .../DeepCopy/Matcher/PropertyTypeMatcher.php | 46 + .../DeepCopy/Reflection/ReflectionHelper.php | 78 + .../TypeFilter/Date/DateIntervalFilter.php | 33 + .../src/DeepCopy/TypeFilter/ReplaceFilter.php | 30 + .../DeepCopy/TypeFilter/ShallowCopyFilter.php | 17 + .../TypeFilter/Spl/SplDoublyLinkedList.php | 10 + .../Spl/SplDoublyLinkedListFilter.php | 51 + .../src/DeepCopy/TypeFilter/TypeFilter.php | 13 + .../src/DeepCopy/TypeMatcher/TypeMatcher.php | 29 + .../deep-copy/src/DeepCopy/deep_copy.php | 16 + vendor/phar-io/manifest/.gitignore | 8 + vendor/phar-io/manifest/.php_cs | 67 + vendor/phar-io/manifest/.travis.yml | 33 + vendor/phar-io/manifest/LICENSE | 31 + vendor/phar-io/manifest/README.md | 30 + vendor/phar-io/manifest/build.xml | 50 + vendor/phar-io/manifest/composer.json | 42 + .../phar-io/manifest/examples/example-01.php | 23 + vendor/phar-io/manifest/phive.xml | 4 + vendor/phar-io/manifest/phpunit.xml | 20 + .../manifest/src/ManifestDocumentMapper.php | 193 + .../phar-io/manifest/src/ManifestLoader.php | 66 + .../manifest/src/ManifestSerializer.php | 163 + .../manifest/src/exceptions/Exception.php | 14 + .../InvalidApplicationNameException.php | 16 + .../src/exceptions/InvalidEmailException.php | 14 + .../src/exceptions/InvalidUrlException.php | 14 + .../exceptions/ManifestDocumentException.php | 6 + .../ManifestDocumentMapperException.php | 6 + .../exceptions/ManifestElementException.php | 6 + .../exceptions/ManifestLoaderException.php | 6 + .../manifest/src/values/Application.php | 20 + .../manifest/src/values/ApplicationName.php | 65 + vendor/phar-io/manifest/src/values/Author.php | 57 + .../manifest/src/values/AuthorCollection.php | 43 + .../src/values/AuthorCollectionIterator.php | 56 + .../manifest/src/values/BundledComponent.php | 48 + .../src/values/BundledComponentCollection.php | 43 + .../BundledComponentCollectionIterator.php | 56 + .../src/values/CopyrightInformation.php | 42 + vendor/phar-io/manifest/src/values/Email.php | 47 + .../phar-io/manifest/src/values/Extension.php | 75 + .../phar-io/manifest/src/values/Library.php | 20 + .../phar-io/manifest/src/values/License.php | 42 + .../phar-io/manifest/src/values/Manifest.php | 138 + .../src/values/PhpExtensionRequirement.php | 32 + .../src/values/PhpVersionRequirement.php | 31 + .../manifest/src/values/Requirement.php | 14 + .../src/values/RequirementCollection.php | 43 + .../values/RequirementCollectionIterator.php | 56 + vendor/phar-io/manifest/src/values/Type.php | 60 + vendor/phar-io/manifest/src/values/Url.php | 47 + .../manifest/src/xml/AuthorElement.php | 21 + .../src/xml/AuthorElementCollection.php | 19 + .../manifest/src/xml/BundlesElement.php | 19 + .../manifest/src/xml/ComponentElement.php | 21 + .../src/xml/ComponentElementCollection.php | 19 + .../manifest/src/xml/ContainsElement.php | 31 + .../manifest/src/xml/CopyrightElement.php | 25 + .../manifest/src/xml/ElementCollection.php | 58 + .../phar-io/manifest/src/xml/ExtElement.php | 17 + .../manifest/src/xml/ExtElementCollection.php | 20 + .../manifest/src/xml/ExtensionElement.php | 21 + .../manifest/src/xml/LicenseElement.php | 21 + .../manifest/src/xml/ManifestDocument.php | 118 + .../xml/ManifestDocumentLoadingException.php | 48 + .../manifest/src/xml/ManifestElement.php | 100 + .../phar-io/manifest/src/xml/PhpElement.php | 27 + .../manifest/src/xml/RequiresElement.php | 19 + .../tests/ManifestDocumentMapperTest.php | 110 + .../manifest/tests/ManifestLoaderTest.php | 83 + .../manifest/tests/ManifestSerializerTest.php | 114 + .../manifest/tests/_fixture/custom.xml | 10 + .../_fixture/extension-invalidcompatible.xml | 13 + .../manifest/tests/_fixture/extension.xml | 13 + .../tests/_fixture/invalidversion.xml | 11 + .../_fixture/invalidversionconstraint.xml | 11 + .../manifest/tests/_fixture/library.xml | 11 + .../manifest/tests/_fixture/manifest.xml | 11 + .../manifest/tests/_fixture/phpunit-5.6.5.xml | 46 + .../phar-io/manifest/tests/_fixture/test.phar | Bin 0 -> 7165 bytes .../ManifestDocumentLoadingExceptionTest.php | 19 + .../tests/values/ApplicationNameTest.php | 48 + .../manifest/tests/values/ApplicationTest.php | 44 + .../tests/values/AuthorCollectionTest.php | 62 + .../manifest/tests/values/AuthorTest.php | 45 + .../values/BundledComponentCollectionTest.php | 63 + .../tests/values/BundledComponentTest.php | 42 + .../tests/values/CopyrightInformationTest.php | 62 + .../manifest/tests/values/EmailTest.php | 35 + .../manifest/tests/values/ExtensionTest.php | 109 + .../manifest/tests/values/LibraryTest.php | 44 + .../manifest/tests/values/LicenseTest.php | 41 + .../manifest/tests/values/ManifestTest.php | 187 + .../values/PhpExtensionRequirementTest.php | 26 + .../values/PhpVersionRequirementTest.php | 38 + .../values/RequirementCollectionTest.php | 63 + .../phar-io/manifest/tests/values/UrlTest.php | 35 + .../tests/xml/AuthorElementCollectionTest.php | 18 + .../manifest/tests/xml/AuthorElementTest.php | 25 + .../manifest/tests/xml/BundlesElementTest.php | 41 + .../xml/ComponentElementCollectionTest.php | 18 + .../tests/xml/ComponentElementTest.php | 25 + .../tests/xml/ContainsElementTest.php | 63 + .../tests/xml/CopyrightElementTest.php | 52 + .../tests/xml/ExtElementCollectionTest.php | 19 + .../manifest/tests/xml/ExtElementTest.php | 21 + .../tests/xml/ExtensionElementTest.php | 25 + .../manifest/tests/xml/LicenseElementTest.php | 25 + .../tests/xml/ManifestDocumentTest.php | 110 + .../manifest/tests/xml/PhpElementTest.php | 48 + .../tests/xml/RequiresElementTest.php | 37 + vendor/phar-io/version/.gitignore | 7 + vendor/phar-io/version/.php_cs | 67 + vendor/phar-io/version/.travis.yml | 33 + vendor/phar-io/version/LICENSE | 31 + vendor/phar-io/version/README.md | 16 + vendor/phar-io/version/build.xml | 41 + vendor/phar-io/version/composer.json | 34 + vendor/phar-io/version/phive.xml | 5 + vendor/phar-io/version/phpunit.xml | 19 + .../version/src/AbstractVersionConstraint.php | 32 + .../version/src/AndVersionConstraintGroup.php | 43 + .../version/src/AnyVersionConstraint.php | 29 + .../version/src/ExactVersionConstraint.php | 22 + vendor/phar-io/version/src/Exception.php | 14 + .../GreaterThanOrEqualToVersionConstraint.php | 38 + .../version/src/InvalidVersionException.php | 5 + .../version/src/OrVersionConstraintGroup.php | 43 + .../phar-io/version/src/PreReleaseSuffix.php | 41 + ...SpecificMajorAndMinorVersionConstraint.php | 48 + .../src/SpecificMajorVersionConstraint.php | 37 + .../UnsupportedVersionConstraintException.php | 14 + vendor/phar-io/version/src/Version.php | 162 + .../phar-io/version/src/VersionConstraint.php | 26 + .../version/src/VersionConstraintParser.php | 122 + .../version/src/VersionConstraintValue.php | 123 + vendor/phar-io/version/src/VersionNumber.php | 41 + .../VersionConstraintParserTest.php | 125 + .../Unit/AbstractVersionConstraintTest.php | 25 + .../Unit/AndVersionConstraintGroupTest.php | 52 + .../tests/Unit/AnyVersionConstraintTest.php | 41 + .../tests/Unit/ExactVersionConstraintTest.php | 58 + ...aterThanOrEqualToVersionConstraintTest.php | 47 + .../Unit/OrVersionConstraintGroupTest.php | 65 + ...ificMajorAndMinorVersionConstraintTest.php | 45 + .../SpecificMajorVersionConstraintTest.php | 44 + .../version/tests/Unit/VersionTest.php | 104 + .../reflection-common/.travis.yml | 35 + .../phpdocumentor/reflection-common/LICENSE | 22 + .../phpdocumentor/reflection-common/README.md | 2 + .../reflection-common/composer.json | 29 + .../reflection-common/src/Element.php | 32 + .../reflection-common/src/File.php | 40 + .../reflection-common/src/Fqsen.php | 82 + .../reflection-common/src/Location.php | 57 + .../reflection-common/src/Project.php | 25 + .../reflection-common/src/ProjectFactory.php | 27 + .../reflection-docblock/.coveralls.yml | 3 + .../phpdocumentor/reflection-docblock/LICENSE | 21 + .../reflection-docblock/README.md | 67 + .../reflection-docblock/composer.json | 34 + .../easy-coding-standard.neon | 31 + .../reflection-docblock/src/DocBlock.php | 236 + .../src/DocBlock/Description.php | 114 + .../src/DocBlock/DescriptionFactory.php | 191 + .../src/DocBlock/ExampleFinder.php | 170 + .../src/DocBlock/Serializer.php | 155 + .../src/DocBlock/StandardTagFactory.php | 319 + .../reflection-docblock/src/DocBlock/Tag.php | 26 + .../src/DocBlock/TagFactory.php | 93 + .../src/DocBlock/Tags/Author.php | 100 + .../src/DocBlock/Tags/BaseTag.php | 52 + .../src/DocBlock/Tags/Covers.php | 83 + .../src/DocBlock/Tags/Deprecated.php | 97 + .../src/DocBlock/Tags/Example.php | 176 + .../DocBlock/Tags/Factory/StaticMethod.php | 18 + .../src/DocBlock/Tags/Factory/Strategy.php | 18 + .../src/DocBlock/Tags/Formatter.php | 27 + .../Tags/Formatter/AlignFormatter.php | 47 + .../Tags/Formatter/PassthroughFormatter.php | 31 + .../src/DocBlock/Tags/Generic.php | 91 + .../src/DocBlock/Tags/Link.php | 77 + .../src/DocBlock/Tags/Method.php | 242 + .../src/DocBlock/Tags/Param.php | 141 + .../src/DocBlock/Tags/Property.php | 118 + .../src/DocBlock/Tags/PropertyRead.php | 118 + .../src/DocBlock/Tags/PropertyWrite.php | 118 + .../src/DocBlock/Tags/Reference/Fqsen.php | 42 + .../src/DocBlock/Tags/Reference/Reference.php | 21 + .../src/DocBlock/Tags/Reference/Url.php | 40 + .../src/DocBlock/Tags/Return_.php | 72 + .../src/DocBlock/Tags/See.php | 88 + .../src/DocBlock/Tags/Since.php | 94 + .../src/DocBlock/Tags/Source.php | 97 + .../src/DocBlock/Tags/Throws.php | 72 + .../src/DocBlock/Tags/Uses.php | 83 + .../src/DocBlock/Tags/Var_.php | 118 + .../src/DocBlock/Tags/Version.php | 94 + .../src/DocBlockFactory.php | 277 + .../src/DocBlockFactoryInterface.php | 23 + vendor/phpdocumentor/type-resolver/LICENSE | 21 + vendor/phpdocumentor/type-resolver/README.md | 182 + .../phpdocumentor/type-resolver/composer.json | 27 + .../type-resolver/src/FqsenResolver.php | 77 + .../phpdocumentor/type-resolver/src/Type.php | 18 + .../type-resolver/src/TypeResolver.php | 298 + .../type-resolver/src/Types/Array_.php | 86 + .../type-resolver/src/Types/Boolean.php | 31 + .../type-resolver/src/Types/Callable_.php | 31 + .../type-resolver/src/Types/Compound.php | 93 + .../type-resolver/src/Types/Context.php | 84 + .../src/Types/ContextFactory.php | 210 + .../type-resolver/src/Types/Float_.php | 31 + .../type-resolver/src/Types/Integer.php | 28 + .../type-resolver/src/Types/Iterable_.php | 31 + .../type-resolver/src/Types/Mixed_.php | 31 + .../type-resolver/src/Types/Null_.php | 31 + .../type-resolver/src/Types/Nullable.php | 56 + .../type-resolver/src/Types/Object_.php | 71 + .../type-resolver/src/Types/Parent_.php | 33 + .../type-resolver/src/Types/Resource_.php | 31 + .../type-resolver/src/Types/Scalar.php | 31 + .../type-resolver/src/Types/Self_.php | 33 + .../type-resolver/src/Types/Static_.php | 38 + .../type-resolver/src/Types/String_.php | 31 + .../type-resolver/src/Types/This.php | 34 + .../type-resolver/src/Types/Void_.php | 34 + vendor/phpspec/prophecy/CHANGES.md | 213 + vendor/phpspec/prophecy/LICENSE | 23 + vendor/phpspec/prophecy/README.md | 391 + vendor/phpspec/prophecy/composer.json | 50 + .../prophecy/src/Prophecy/Argument.php | 212 + .../Prophecy/Argument/ArgumentsWildcard.php | 101 + .../Prophecy/Argument/Token/AnyValueToken.php | 52 + .../Argument/Token/AnyValuesToken.php | 52 + .../Argument/Token/ApproximateValueToken.php | 55 + .../Argument/Token/ArrayCountToken.php | 86 + .../Argument/Token/ArrayEntryToken.php | 143 + .../Argument/Token/ArrayEveryEntryToken.php | 82 + .../Prophecy/Argument/Token/CallbackToken.php | 75 + .../Argument/Token/ExactValueToken.php | 116 + .../Argument/Token/IdenticalValueToken.php | 74 + .../Argument/Token/LogicalAndToken.php | 80 + .../Argument/Token/LogicalNotToken.php | 73 + .../Argument/Token/ObjectStateToken.php | 104 + .../Argument/Token/StringContainsToken.php | 67 + .../Argument/Token/TokenInterface.php | 43 + .../src/Prophecy/Argument/Token/TypeToken.php | 76 + .../prophecy/src/Prophecy/Call/Call.php | 162 + .../prophecy/src/Prophecy/Call/CallCenter.php | 229 + .../Prophecy/Comparator/ClosureComparator.php | 42 + .../src/Prophecy/Comparator/Factory.php | 47 + .../Comparator/ProphecyComparator.php | 28 + .../src/Prophecy/Doubler/CachedDoubler.php | 68 + .../ClassPatch/ClassPatchInterface.php | 48 + .../ClassPatch/DisableConstructorPatch.php | 72 + .../Doubler/ClassPatch/HhvmExceptionPatch.php | 63 + .../Doubler/ClassPatch/KeywordPatch.php | 140 + .../Doubler/ClassPatch/MagicCallPatch.php | 94 + .../ClassPatch/ProphecySubjectPatch.php | 104 + .../ReflectionClassNewInstancePatch.php | 57 + .../Doubler/ClassPatch/SplFileInfoPatch.php | 123 + .../Doubler/ClassPatch/ThrowablePatch.php | 95 + .../Doubler/ClassPatch/TraversablePatch.php | 83 + .../src/Prophecy/Doubler/DoubleInterface.php | 22 + .../prophecy/src/Prophecy/Doubler/Doubler.php | 146 + .../Doubler/Generator/ClassCodeGenerator.php | 129 + .../Doubler/Generator/ClassCreator.php | 67 + .../Doubler/Generator/ClassMirror.php | 260 + .../Doubler/Generator/Node/ArgumentNode.php | 102 + .../Doubler/Generator/Node/ClassNode.php | 169 + .../Doubler/Generator/Node/MethodNode.php | 198 + .../Doubler/Generator/ReflectionInterface.php | 22 + .../Doubler/Generator/TypeHintReference.php | 46 + .../src/Prophecy/Doubler/LazyDouble.php | 127 + .../src/Prophecy/Doubler/NameGenerator.php | 52 + .../Call/UnexpectedCallException.php | 40 + .../Doubler/ClassCreatorException.php | 31 + .../Doubler/ClassMirrorException.php | 31 + .../Doubler/ClassNotFoundException.php | 33 + .../Exception/Doubler/DoubleException.php | 18 + .../Exception/Doubler/DoublerException.php | 18 + .../Doubler/InterfaceNotFoundException.php | 20 + .../Doubler/MethodNotExtendableException.php | 41 + .../Doubler/MethodNotFoundException.php | 60 + .../Doubler/ReturnByReferenceException.php | 41 + .../src/Prophecy/Exception/Exception.php | 26 + .../Exception/InvalidArgumentException.php | 16 + .../Prediction/AggregateException.php | 51 + .../Prediction/FailedPredictionException.php | 24 + .../Exception/Prediction/NoCallsException.php | 18 + .../Prediction/PredictionException.php | 18 + .../UnexpectedCallsCountException.php | 31 + .../Prediction/UnexpectedCallsException.php | 32 + .../Prophecy/MethodProphecyException.php | 34 + .../Prophecy/ObjectProphecyException.php | 34 + .../Exception/Prophecy/ProphecyException.php | 18 + .../ClassAndInterfaceTagRetriever.php | 69 + .../PhpDocumentor/ClassTagRetriever.php | 52 + .../PhpDocumentor/LegacyClassTagRetriever.php | 35 + .../MethodTagRetrieverInterface.php | 30 + .../Prophecy/Prediction/CallPrediction.php | 86 + .../Prediction/CallTimesPrediction.php | 107 + .../Prediction/CallbackPrediction.php | 65 + .../Prophecy/Prediction/NoCallsPrediction.php | 68 + .../Prediction/PredictionInterface.php | 37 + .../src/Prophecy/Promise/CallbackPromise.php | 66 + .../src/Prophecy/Promise/PromiseInterface.php | 35 + .../Promise/ReturnArgumentPromise.php | 61 + .../src/Prophecy/Promise/ReturnPromise.php | 55 + .../src/Prophecy/Promise/ThrowPromise.php | 99 + .../src/Prophecy/Prophecy/MethodProphecy.php | 488 + .../src/Prophecy/Prophecy/ObjectProphecy.php | 281 + .../Prophecy/Prophecy/ProphecyInterface.php | 27 + .../Prophecy/ProphecySubjectInterface.php | 34 + .../src/Prophecy/Prophecy/Revealer.php | 44 + .../Prophecy/Prophecy/RevealerInterface.php | 29 + .../phpspec/prophecy/src/Prophecy/Prophet.php | 135 + .../prophecy/src/Prophecy/Util/ExportUtil.php | 212 + .../prophecy/src/Prophecy/Util/StringUtil.php | 99 + .../phpunit/php-code-coverage/.gitattributes | 1 + .../php-code-coverage/.github/CONTRIBUTING.md | 1 + .../.github/ISSUE_TEMPLATE.md | 18 + vendor/phpunit/php-code-coverage/.gitignore | 6 + vendor/phpunit/php-code-coverage/.php_cs | 87 + vendor/phpunit/php-code-coverage/.travis.yml | 40 + .../php-code-coverage/ChangeLog-2.2.md | 56 + .../php-code-coverage/ChangeLog-3.0.md | 31 + .../php-code-coverage/ChangeLog-3.1.md | 30 + .../php-code-coverage/ChangeLog-3.2.md | 23 + .../php-code-coverage/ChangeLog-3.3.md | 33 + .../php-code-coverage/ChangeLog-4.0.md | 67 + .../php-code-coverage/ChangeLog-5.0.md | 45 + .../php-code-coverage/ChangeLog-5.1.md | 19 + .../php-code-coverage/ChangeLog-5.2.md | 44 + .../php-code-coverage/ChangeLog-5.3.md | 34 + vendor/phpunit/php-code-coverage/LICENSE | 33 + vendor/phpunit/php-code-coverage/README.md | 40 + vendor/phpunit/php-code-coverage/build.xml | 19 + .../phpunit/php-code-coverage/composer.json | 55 + vendor/phpunit/php-code-coverage/phpunit.xml | 21 + .../php-code-coverage/src/CodeCoverage.php | 1184 ++ .../php-code-coverage/src/Driver/Driver.php | 52 + .../php-code-coverage/src/Driver/HHVM.php | 29 + .../php-code-coverage/src/Driver/PHPDBG.php | 111 + .../php-code-coverage/src/Driver/Xdebug.php | 117 + .../CoveredCodeNotExecutedException.php | 18 + .../src/Exception/Exception.php | 18 + .../Exception/InvalidArgumentException.php | 37 + .../MissingCoversAnnotationException.php | 18 + .../src/Exception/RuntimeException.php | 15 + .../UnintentionallyCoveredCodeException.php | 54 + .../phpunit/php-code-coverage/src/Filter.php | 173 + .../src/Node/AbstractNode.php | 404 + .../php-code-coverage/src/Node/Builder.php | 245 + .../php-code-coverage/src/Node/Directory.php | 483 + .../php-code-coverage/src/Node/File.php | 744 + .../php-code-coverage/src/Node/Iterator.php | 103 + vendor/phpunit/php-code-coverage/src/Util.php | 46 + .../phpunit/php-code-coverage/src/Version.php | 31 + .../php-code-coverage/tests/TestCase.php | 343 + .../tests/_files/BankAccount-clover.xml | 26 + .../tests/_files/BankAccount-crap4j.xml | 59 + .../tests/_files/BankAccount-text.txt | 12 + .../tests/_files/BankAccount.php | 33 + .../tests/_files/BankAccountTest.php | 68 + .../_files/CoverageClassExtendedTest.php | 14 + .../tests/_files/CoverageClassTest.php | 14 + .../CoverageFunctionParenthesesTest.php | 13 + ...erageFunctionParenthesesWhitespaceTest.php | 13 + .../tests/_files/CoverageFunctionTest.php | 13 + .../CoverageMethodOneLineAnnotationTest.php | 12 + .../_files/CoverageMethodParenthesesTest.php | 14 + ...overageMethodParenthesesWhitespaceTest.php | 14 + .../tests/_files/CoverageMethodTest.php | 14 + .../tests/_files/CoverageNoneTest.php | 11 + .../tests/_files/CoverageNotPrivateTest.php | 14 + .../tests/_files/CoverageNotProtectedTest.php | 14 + .../tests/_files/CoverageNotPublicTest.php | 14 + .../tests/_files/CoverageNothingTest.php | 15 + .../tests/_files/CoveragePrivateTest.php | 14 + .../tests/_files/CoverageProtectedTest.php | 14 + .../tests/_files/CoveragePublicTest.php | 14 + .../CoverageTwoDefaultClassAnnotations.php | 17 + .../tests/_files/CoveredClass.php | 36 + .../tests/_files/CoveredFunction.php | 4 + .../NamespaceCoverageClassExtendedTest.php | 14 + .../_files/NamespaceCoverageClassTest.php | 14 + ...NamespaceCoverageCoversClassPublicTest.php | 17 + .../NamespaceCoverageCoversClassTest.php | 22 + .../_files/NamespaceCoverageMethodTest.php | 14 + .../NamespaceCoverageNotPrivateTest.php | 14 + .../NamespaceCoverageNotProtectedTest.php | 14 + .../_files/NamespaceCoverageNotPublicTest.php | 14 + .../_files/NamespaceCoveragePrivateTest.php | 14 + .../_files/NamespaceCoverageProtectedTest.php | 14 + .../_files/NamespaceCoveragePublicTest.php | 14 + .../tests/_files/NamespaceCoveredClass.php | 38 + .../_files/NotExistingCoveredElementTest.php | 26 + .../class-with-anonymous-function-clover.xml | 22 + .../class-with-anonymous-function-crap4j.xml | 37 + .../class-with-anonymous-function-text.txt | 12 + .../tests/_files/ignored-lines-clover.xml | 17 + .../tests/_files/ignored-lines-crap4j.xml | 37 + .../tests/_files/ignored-lines-text.txt | 10 + ...urce_with_class_and_anonymous_function.php | 19 + .../tests/_files/source_with_ignore.php | 37 + .../tests/_files/source_with_namespace.php | 20 + .../source_with_oneline_annotations.php | 36 + .../tests/_files/source_without_ignore.php | 4 + .../tests/_files/source_without_namespace.php | 18 + .../php-code-coverage/tests/bootstrap.php | 5 + .../tests/tests/BuilderTest.php | 212 + .../tests/tests/CloverTest.php | 49 + .../tests/tests/CodeCoverageTest.php | 560 + .../tests/tests/Crap4jTest.php | 49 + .../tests/tests/FilterTest.php | 196 + .../tests/tests/HTMLTest.php | 103 + .../tests/tests/TextTest.php | 49 + .../tests/tests/UtilTest.php | 29 + .../php-code-coverage/tests/tests/XMLTest.php | 98 + .../phpunit/php-file-iterator/.gitattributes | 1 + vendor/phpunit/php-file-iterator/.gitignore | 7 + vendor/phpunit/php-file-iterator/ChangeLog.md | 41 + vendor/phpunit/php-file-iterator/LICENSE | 33 + vendor/phpunit/php-file-iterator/README.md | 12 + .../phpunit/php-file-iterator/composer.json | 36 + .../phpunit/php-file-iterator/src/Facade.php | 123 + .../phpunit/php-file-iterator/src/Factory.php | 91 + .../php-file-iterator/src/Iterator.php | 158 + .../phpunit/php-text-template/.gitattributes | 1 + vendor/phpunit/php-text-template/.gitignore | 5 + vendor/phpunit/php-text-template/LICENSE | 33 + vendor/phpunit/php-text-template/README.md | 14 + .../phpunit/php-text-template/composer.json | 29 + .../php-text-template/src/Template.php | 135 + vendor/phpunit/php-timer/.gitattributes | 1 + vendor/phpunit/php-timer/.gitignore | 4 + vendor/phpunit/php-timer/.travis.yml | 27 + vendor/phpunit/php-timer/LICENSE | 33 + vendor/phpunit/php-timer/README.md | 45 + vendor/phpunit/php-timer/composer.json | 37 + vendor/phpunit/php-timer/phpunit.xml | 19 + vendor/phpunit/php-timer/src/Timer.php | 105 + vendor/phpunit/php-timer/tests/TimerTest.php | 98 + .../phpunit/php-token-stream/.gitattributes | 1 + vendor/phpunit/php-token-stream/.gitignore | 3 + vendor/phpunit/php-token-stream/.travis.yml | 26 + vendor/phpunit/php-token-stream/ChangeLog.md | 19 + vendor/phpunit/php-token-stream/LICENSE | 33 + vendor/phpunit/php-token-stream/README.md | 14 + vendor/phpunit/php-token-stream/build.xml | 21 + vendor/phpunit/php-token-stream/composer.json | 38 + vendor/phpunit/php-token-stream/phpunit.xml | 17 + vendor/phpunit/php-token-stream/src/Token.php | 1460 ++ .../php-token-stream/src/Token/Stream.php | 607 + .../src/Token/Stream/CachingFactory.php | 46 + .../tests/Token/ClassTest.php | 169 + .../tests/Token/ClosureTest.php | 78 + .../tests/Token/FunctionTest.php | 139 + .../tests/Token/IncludeTest.php | 65 + .../tests/Token/InterfaceTest.php | 195 + .../tests/Token/NamespaceTest.php | 69 + .../php-token-stream/tests/TokenTest.php | 32 + .../_fixture/classExtendsNamespacedClass.php | 10 + .../tests/_fixture/classInNamespace.php | 6 + .../tests/_fixture/classInScopedNamespace.php | 9 + .../_fixture/classUsesNamespacedFunction.php | 8 + .../class_with_method_named_empty.php | 7 + ...h_method_that_declares_anonymous_class.php | 15 + ..._method_that_declares_anonymous_class2.php | 16 + ...ltiple_anonymous_classes_and_functions.php | 26 + .../tests/_fixture/closure.php | 7 + .../tests/_fixture/issue19.php | 3 + .../tests/_fixture/issue30.php | 8 + ...tipleNamespacesWithOneClassUsingBraces.php | 12 + ...espacesWithOneClassUsingNonBraceSyntax.php | 14 + .../_fixture/php-code-coverage-issue-424.php | 13 + .../tests/_fixture/source.php | 36 + .../tests/_fixture/source2.php | 6 + .../tests/_fixture/source3.php | 14 + .../tests/_fixture/source4.php | 30 + .../tests/_fixture/source5.php | 5 + .../php-token-stream/tests/bootstrap.php | 15 + .../phpunit-mock-objects/.gitattributes | 1 + .../.github/ISSUE_TEMPLATE.md | 15 + .../phpunit/phpunit-mock-objects/.gitignore | 4 + vendor/phpunit/phpunit-mock-objects/.php_cs | 87 + .../phpunit/phpunit-mock-objects/.travis.yml | 34 + .../phpunit-mock-objects/CONTRIBUTING.md | 1 + vendor/phpunit/phpunit-mock-objects/LICENSE | 33 + vendor/phpunit/phpunit-mock-objects/README.md | 7 + vendor/phpunit/phpunit-mock-objects/build.xml | 19 + .../phpunit-mock-objects/composer.json | 57 + .../phpunit/phpunit-mock-objects/phpunit.xml | 28 + .../src/Builder/Identity.php | 30 + .../src/Builder/InvocationMocker.php | 299 + .../src/Builder/Match.php | 26 + .../src/Builder/MethodNameMatch.php | 26 + .../src/Builder/NamespaceMatch.php | 37 + .../src/Builder/ParametersMatch.php | 50 + .../phpunit-mock-objects/src/Builder/Stub.php | 28 + .../src/Exception/BadMethodCallException.php | 14 + .../src/Exception/Exception.php | 17 + .../src/Exception/RuntimeException.php | 14 + .../src/ForwardCompatibility/MockObject.php | 17 + .../phpunit-mock-objects/src/Generator.php | 1182 ++ .../src/Generator/deprecation.tpl.dist | 2 + .../src/Generator/mocked_class.tpl.dist | 40 + .../Generator/mocked_class_method.tpl.dist | 7 + .../src/Generator/mocked_clone.tpl.dist | 4 + .../src/Generator/mocked_method.tpl.dist | 22 + .../src/Generator/mocked_method_void.tpl.dist | 20 + .../Generator/mocked_static_method.tpl.dist | 5 + .../src/Generator/proxied_method.tpl.dist | 22 + .../Generator/proxied_method_void.tpl.dist | 22 + .../src/Generator/trait_class.tpl.dist | 4 + .../src/Generator/unmocked_clone.tpl.dist | 5 + .../src/Generator/wsdl_class.tpl.dist | 7 + .../src/Generator/wsdl_method.tpl.dist | 4 + .../src/Invocation/Invocation.php | 31 + .../src/Invocation/ObjectInvocation.php | 41 + .../src/Invocation/StaticInvocation.php | 255 + .../src/InvocationMocker.php | 185 + .../phpunit-mock-objects/src/Invokable.php | 38 + .../phpunit-mock-objects/src/Matcher.php | 321 + .../src/Matcher/AnyInvokedCount.php | 29 + .../src/Matcher/AnyParameters.php | 36 + .../src/Matcher/ConsecutiveParameters.php | 134 + .../src/Matcher/Invocation.php | 49 + .../src/Matcher/InvokedAtIndex.php | 89 + .../src/Matcher/InvokedAtLeastCount.php | 58 + .../src/Matcher/InvokedAtLeastOnce.php | 46 + .../src/Matcher/InvokedAtMostCount.php | 58 + .../src/Matcher/InvokedCount.php | 111 + .../src/Matcher/InvokedRecorder.php | 68 + .../src/Matcher/MethodName.php | 73 + .../src/Matcher/Parameters.php | 165 + .../src/Matcher/StatelessInvocation.php | 54 + .../phpunit-mock-objects/src/MockBuilder.php | 389 + .../phpunit-mock-objects/src/MockObject.php | 55 + .../phpunit/phpunit-mock-objects/src/Stub.php | 31 + .../src/Stub/ConsecutiveCalls.php | 56 + .../src/Stub/Exception.php | 42 + .../src/Stub/MatcherCollection.php | 26 + .../src/Stub/ReturnArgument.php | 43 + .../src/Stub/ReturnCallback.php | 52 + .../src/Stub/ReturnReference.php | 45 + .../src/Stub/ReturnSelf.php | 38 + .../src/Stub/ReturnStub.php | 45 + .../src/Stub/ReturnValueMap.php | 53 + .../phpunit-mock-objects/src/Verifiable.php | 26 + .../tests/Builder/InvocationMockerTest.php | 74 + .../tests/Generator/232.phpt | 129 + .../3154_namespaced_constant_resolving.phpt | 112 + .../tests/Generator/397.phpt | 101 + .../tests/Generator/abstract_class.phpt | 147 + .../tests/Generator/class.phpt | 125 + .../Generator/class_call_parent_clone.phpt | 77 + .../class_call_parent_constructor.phpt | 76 + .../class_dont_call_parent_clone.phpt | 76 + .../class_dont_call_parent_constructor.phpt | 76 + ...ing_interface_call_parent_constructor.phpt | 81 + ...nterface_dont_call_parent_constructor.phpt | 81 + .../tests/Generator/class_partial.phpt | 103 + .../class_with_deprecated_method.phpt | 105 + .../class_with_method_named_method.phpt | 92 + ...ullable_typehinted_variadic_arguments.phpt | 103 + ...od_with_typehinted_variadic_arguments.phpt | 99 + ...s_with_method_with_variadic_arguments.phpt | 99 + .../constant_as_parameter_default_value.phpt | 99 + .../tests/Generator/interface.phpt | 97 + .../invocation_object_clone_object.phpt | 126 + .../tests/Generator/namespaced_class.phpt | 127 + .../namespaced_class_call_parent_clone.phpt | 79 + ...espaced_class_call_parent_constructor.phpt | 78 + ...mespaced_class_dont_call_parent_clone.phpt | 78 + ...ed_class_dont_call_parent_constructor.phpt | 78 + ...ing_interface_call_parent_constructor.phpt | 83 + ...nterface_dont_call_parent_constructor.phpt | 83 + .../Generator/namespaced_class_partial.phpt | 105 + .../tests/Generator/namespaced_interface.phpt | 99 + .../tests/Generator/nonexistent_class.phpt | 74 + .../nonexistent_class_with_namespace.phpt | 82 + ...ith_namespace_starting_with_separator.phpt | 82 + .../tests/Generator/nullable_types.phpt | 103 + .../tests/Generator/proxy.phpt | 121 + .../return_type_declarations_closure.phpt | 97 + .../return_type_declarations_final.phpt | 108 + .../return_type_declarations_generator.phpt | 97 + .../return_type_declarations_nullable.phpt | 101 + ...eturn_type_declarations_object_method.phpt | 100 + .../return_type_declarations_self.phpt | 97 + ...eturn_type_declarations_static_method.phpt | 83 + .../return_type_declarations_void.phpt | 99 + .../Generator/scalar_type_declarations.phpt | 99 + .../tests/Generator/wsdl_class.phpt | 37 + .../tests/Generator/wsdl_class_namespace.phpt | 39 + .../tests/Generator/wsdl_class_partial.phpt | 30 + .../tests/GeneratorTest.php | 210 + .../tests/Invocation/ObjectInvocationTest.php | 120 + .../tests/Invocation/StaticInvocationTest.php | 99 + .../Matcher/ConsecutiveParametersTest.php | 68 + .../tests/MockBuilderTest.php | 129 + .../tests/MockObjectTest.php | 1085 ++ .../tests/ProxyObjectTest.php | 41 + .../tests/_fixture/AbstractMockTestClass.php | 10 + .../tests/_fixture/AbstractTrait.php | 15 + .../tests/_fixture/AnInterface.php | 6 + .../_fixture/AnInterfaceWithReturnType.php | 5 + .../tests/_fixture/AnotherInterface.php | 5 + .../tests/_fixture/Bar.php | 8 + .../ClassThatImplementsSerializable.php | 15 + .../ClassWithAllPossibleReturnTypes.php | 56 + .../tests/_fixture/ClassWithSelfTypeHint.php | 7 + .../tests/_fixture/ClassWithStaticMethod.php | 7 + .../tests/_fixture/Foo.php | 8 + .../tests/_fixture/FunctionCallback.php | 9 + .../tests/_fixture/Go ogle-Sea.rch.wsdl | 198 + .../tests/_fixture/GoogleSearch.wsdl | 198 + .../InterfaceWithSemiReservedMethodName.php | 5 + .../_fixture/InterfaceWithStaticMethod.php | 5 + .../tests/_fixture/MethodCallback.php | 21 + .../_fixture/MethodCallbackByReference.php | 13 + .../tests/_fixture/MockTestInterface.php | 6 + .../tests/_fixture/Mockable.php | 28 + .../tests/_fixture/PartialMockTestClass.php | 18 + .../tests/_fixture/SingletonClass.php | 28 + .../tests/_fixture/SomeClass.php | 13 + .../tests/_fixture/StaticMockTestClass.php | 12 + .../tests/_fixture/StringableClass.php | 8 + .../_fixture/TraversableMockTestInterface.php | 5 + .../phpunit-mock-objects/tests/bootstrap.php | 3 + vendor/phpunit/phpunit/.editorconfig | 8 + vendor/phpunit/phpunit/.gitattributes | 4 + .../phpunit/.github/CODE_OF_CONDUCT.md | 28 + .../phpunit/phpunit/.github/CONTRIBUTING.md | 69 + .../phpunit/phpunit/.github/ISSUE_TEMPLATE.md | 15 + vendor/phpunit/phpunit/.gitignore | 21 + vendor/phpunit/phpunit/.php_cs.dist | 89 + vendor/phpunit/phpunit/.travis.yml | 50 + vendor/phpunit/phpunit/ChangeLog-6.5.md | 121 + vendor/phpunit/phpunit/LICENSE | 33 + vendor/phpunit/phpunit/README.md | 41 + vendor/phpunit/phpunit/appveyor.yml | 65 + vendor/phpunit/phpunit/build.xml | 431 + vendor/phpunit/phpunit/composer.json | 88 + vendor/phpunit/phpunit/phive.xml | 7 + vendor/phpunit/phpunit/phpunit | 53 + vendor/phpunit/phpunit/phpunit.xml | 29 + vendor/phpunit/phpunit/phpunit.xsd | 279 + vendor/phpunit/phpunit/src/Exception.php | 18 + .../phpunit/phpunit/src/Framework/Assert.php | 2920 +++ .../src/Framework/Assert/Functions.php | 1843 ++ .../src/Framework/AssertionFailedError.php | 27 + .../src/Framework/BaseTestListener.php | 20 + .../src/Framework/CodeCoverageException.php | 15 + .../src/Framework/Constraint/ArrayHasKey.php | 83 + .../src/Framework/Constraint/ArraySubset.php | 141 + .../src/Framework/Constraint/Attribute.php | 88 + .../src/Framework/Constraint/Callback.php | 62 + .../Constraint/ClassHasAttribute.php | 83 + .../Constraint/ClassHasStaticAttribute.php | 55 + .../src/Framework/Constraint/Composite.php | 70 + .../src/Framework/Constraint/Constraint.php | 155 + .../src/Framework/Constraint/Count.php | 135 + .../Framework/Constraint/DirectoryExists.php | 59 + .../src/Framework/Constraint/Exception.php | 89 + .../Framework/Constraint/ExceptionCode.php | 68 + .../Framework/Constraint/ExceptionMessage.php | 83 + .../ExceptionMessageRegularExpression.php | 77 + .../src/Framework/Constraint/FileExists.php | 59 + .../src/Framework/Constraint/GreaterThan.php | 55 + .../src/Framework/Constraint/IsAnything.php | 61 + .../src/Framework/Constraint/IsEmpty.php | 67 + .../src/Framework/Constraint/IsEqual.php | 178 + .../src/Framework/Constraint/IsFalse.php | 39 + .../src/Framework/Constraint/IsFinite.php | 39 + .../src/Framework/Constraint/IsIdentical.php | 133 + .../src/Framework/Constraint/IsInfinite.php | 39 + .../src/Framework/Constraint/IsInstanceOf.php | 96 + .../src/Framework/Constraint/IsJson.php | 76 + .../src/Framework/Constraint/IsNan.php | 39 + .../src/Framework/Constraint/IsNull.php | 39 + .../src/Framework/Constraint/IsReadable.php | 59 + .../src/Framework/Constraint/IsTrue.php | 39 + .../src/Framework/Constraint/IsType.php | 142 + .../src/Framework/Constraint/IsWritable.php | 59 + .../src/Framework/Constraint/JsonMatches.php | 113 + .../JsonMatchesErrorMessageProvider.php | 72 + .../src/Framework/Constraint/LessThan.php | 55 + .../src/Framework/Constraint/LogicalAnd.php | 134 + .../src/Framework/Constraint/LogicalNot.php | 181 + .../src/Framework/Constraint/LogicalOr.php | 126 + .../src/Framework/Constraint/LogicalXor.php | 131 + .../Constraint/ObjectHasAttribute.php | 36 + .../Constraint/RegularExpression.php | 62 + .../src/Framework/Constraint/SameSize.php | 26 + .../Framework/Constraint/StringContains.php | 84 + .../Framework/Constraint/StringEndsWith.php | 54 + .../StringMatchesFormatDescription.php | 101 + .../Framework/Constraint/StringStartsWith.php | 54 + .../Constraint/TraversableContains.php | 131 + .../Constraint/TraversableContainsOnly.php | 97 + .../CoveredCodeNotExecutedException.php | 15 + .../src/Framework/DataProviderTestSuite.php | 25 + .../src/Framework/Error/Deprecated.php | 15 + .../phpunit/src/Framework/Error/Error.php | 36 + .../phpunit/src/Framework/Error/Notice.php | 15 + .../phpunit/src/Framework/Error/Warning.php | 15 + .../phpunit/src/Framework/Exception.php | 80 + .../src/Framework/ExceptionWrapper.php | 93 + .../Framework/ExpectationFailedException.php | 44 + .../phpunit/src/Framework/IncompleteTest.php | 19 + .../src/Framework/IncompleteTestCase.php | 83 + .../src/Framework/IncompleteTestError.php | 14 + .../InvalidCoversTargetException.php | 14 + .../MissingCoversAnnotationException.php | 15 + .../phpunit/src/Framework/OutputError.php | 14 + .../phpunit/src/Framework/RiskyTest.php | 15 + .../phpunit/src/Framework/RiskyTestError.php | 14 + .../phpunit/src/Framework/SelfDescribing.php | 24 + .../phpunit/src/Framework/SkippedTest.php | 15 + .../phpunit/src/Framework/SkippedTestCase.php | 81 + .../src/Framework/SkippedTestError.php | 15 + .../src/Framework/SkippedTestSuiteError.php | 15 + .../phpunit/src/Framework/SyntheticError.php | 80 + vendor/phpunit/phpunit/src/Framework/Test.php | 28 + .../phpunit/src/Framework/TestCase.php | 2535 +++ .../phpunit/src/Framework/TestFailure.php | 169 + .../phpunit/src/Framework/TestListener.php | 99 + .../TestListenerDefaultImplementation.php | 53 + .../phpunit/src/Framework/TestResult.php | 1310 ++ .../phpunit/src/Framework/TestSuite.php | 1020 ++ .../src/Framework/TestSuiteIterator.php | 104 + .../UnintentionallyCoveredCodeError.php | 18 + .../phpunit/phpunit/src/Framework/Warning.php | 26 + .../phpunit/src/Framework/WarningTestCase.php | 76 + .../phpunit/src/Runner/BaseTestRunner.php | 147 + .../phpunit/phpunit/src/Runner/Exception.php | 14 + .../Filter/ExcludeGroupFilterIterator.php | 23 + .../phpunit/src/Runner/Filter/Factory.php | 55 + .../src/Runner/Filter/GroupFilterIterator.php | 61 + .../Filter/IncludeGroupFilterIterator.php | 23 + .../src/Runner/Filter/NameFilterIterator.php | 121 + .../phpunit/src/Runner/PhptTestCase.php | 613 + .../src/Runner/StandardTestSuiteLoader.php | 120 + .../phpunit/src/Runner/TestSuiteLoader.php | 34 + vendor/phpunit/phpunit/src/Runner/Version.php | 75 + vendor/phpunit/phpunit/src/TextUI/Command.php | 1276 ++ .../phpunit/src/TextUI/ResultPrinter.php | 706 + .../phpunit/phpunit/src/TextUI/TestRunner.php | 1113 ++ vendor/phpunit/phpunit/src/Util/Blacklist.php | 113 + .../phpunit/src/Util/Configuration.php | 1208 ++ .../src/Util/ConfigurationGenerator.php | 67 + .../phpunit/phpunit/src/Util/ErrorHandler.php | 118 + .../phpunit/phpunit/src/Util/Fileloader.php | 80 + .../phpunit/phpunit/src/Util/Filesystem.php | 40 + vendor/phpunit/phpunit/src/Util/Filter.php | 107 + vendor/phpunit/phpunit/src/Util/Getopt.php | 166 + .../phpunit/phpunit/src/Util/GlobalState.php | 202 + .../src/Util/InvalidArgumentHelper.php | 42 + vendor/phpunit/phpunit/src/Util/Json.php | 78 + vendor/phpunit/phpunit/src/Util/Log/JUnit.php | 450 + .../phpunit/phpunit/src/Util/Log/TeamCity.php | 437 + .../src/Util/PHP/AbstractPhpProcess.php | 421 + .../src/Util/PHP/DefaultPhpProcess.php | 232 + .../Util/PHP/Template/PhptTestCase.tpl.dist | 46 + .../Util/PHP/Template/TestCaseClass.tpl.dist | 107 + .../Util/PHP/Template/TestCaseMethod.tpl.dist | 109 + .../src/Util/PHP/WindowsPhpProcess.php | 43 + .../phpunit/src/Util/PHP/eval-stdin.php | 10 + vendor/phpunit/phpunit/src/Util/Printer.php | 151 + .../phpunit/src/Util/RegularExpression.php | 34 + vendor/phpunit/phpunit/src/Util/Test.php | 1193 ++ .../src/Util/TestDox/HtmlResultPrinter.php | 138 + .../src/Util/TestDox/NamePrettifier.php | 142 + .../src/Util/TestDox/ResultPrinter.php | 412 + .../src/Util/TestDox/TextResultPrinter.php | 53 + .../src/Util/TestDox/XmlResultPrinter.php | 238 + .../phpunit/src/Util/TextTestListRenderer.php | 44 + vendor/phpunit/phpunit/src/Util/Type.php | 43 + vendor/phpunit/phpunit/src/Util/Xml.php | 314 + .../phpunit/src/Util/XmlTestListRenderer.php | 82 + .../phpunit/tests/_files/AbstractTest.php | 10 + .../phpunit/tests/_files/ArrayAccessible.php | 40 + .../phpunit/tests/_files/AssertionExample.php | 8 + .../tests/_files/AssertionExampleTest.php | 12 + .../phpunit/phpunit/tests/_files/Author.php | 25 + .../phpunit/tests/_files/BankAccount.php | 80 + .../phpunit/tests/_files/BankAccountTest.php | 93 + .../tests/_files/BankAccountTest.test.php | 86 + .../phpunit/tests/_files/BankAccountTest2.php | 56 + .../tests/_files/BaseTestListenerSample.php | 14 + .../tests/_files/BeforeAndAfterTest.php | 37 + .../_files/BeforeClassAndAfterClassTest.php | 37 + .../BeforeClassWithOnlyDataProviderTest.php | 39 + vendor/phpunit/phpunit/tests/_files/Book.php | 18 + .../phpunit/tests/_files/Calculator.php | 14 + .../ChangeCurrentWorkingDirectoryTest.php | 11 + .../_files/ClassWithNonPublicAttributes.php | 29 + .../ClassWithScalarTypeDeclarations.php | 7 + .../tests/_files/ClassWithToString.php | 20 + .../tests/_files/ClonedDependencyTest.php | 59 + .../phpunit/tests/_files/ConcreteTest.my.php | 8 + .../phpunit/tests/_files/ConcreteTest.php | 8 + .../phpunit/tests/_files/CountConstraint.php | 37 + .../_files/CoverageClassExtendedTest.php | 14 + .../tests/_files/CoverageClassTest.php | 14 + .../CoverageFunctionParenthesesTest.php | 13 + ...erageFunctionParenthesesWhitespaceTest.php | 13 + .../tests/_files/CoverageFunctionTest.php | 13 + .../CoverageMethodOneLineAnnotationTest.php | 13 + .../_files/CoverageMethodParenthesesTest.php | 14 + ...overageMethodParenthesesWhitespaceTest.php | 14 + .../tests/_files/CoverageMethodTest.php | 14 + .../_files/CoverageNamespacedFunctionTest.php | 13 + .../phpunit/tests/_files/CoverageNoneTest.php | 11 + .../tests/_files/CoverageNotPrivateTest.php | 14 + .../tests/_files/CoverageNotProtectedTest.php | 14 + .../tests/_files/CoverageNotPublicTest.php | 14 + .../tests/_files/CoverageNothingTest.php | 15 + .../tests/_files/CoveragePrivateTest.php | 14 + .../tests/_files/CoverageProtectedTest.php | 14 + .../tests/_files/CoveragePublicTest.php | 14 + .../CoverageTwoDefaultClassAnnotations.php | 17 + .../phpunit/tests/_files/CoveredClass.php | 36 + .../phpunit/tests/_files/CoveredFunction.php | 4 + .../phpunit/tests/_files/CustomPrinter.php | 6 + .../tests/_files/DataProviderDebugTest.php | 50 + .../_files/DataProviderDependencyTest.php | 24 + .../tests/_files/DataProviderFilterTest.php | 41 + .../_files/DataProviderIncompleteTest.php | 39 + .../DataProviderIssue2833/FirstTest.php | 23 + .../DataProviderIssue2833/SecondTest.php | 15 + .../_files/DataProviderIssue2859/phpunit.xml | 10 + .../another/TestWithDataProviderTest.php | 21 + .../DataProviderIssue2922/FirstTest.php | 24 + .../DataProviderIssue2922/SecondTest.php | 14 + .../tests/_files/DataProviderSkippedTest.php | 39 + .../phpunit/tests/_files/DataProviderTest.php | 23 + .../tests/_files/DataProviderTestDoxTest.php | 30 + .../tests/_files/DependencyFailureTest.php | 34 + .../tests/_files/DependencySuccessTest.php | 26 + .../tests/_files/DependencyTestSuite.php | 15 + .../phpunit/tests/_files/DoubleTestCase.php | 29 + .../phpunit/tests/_files/DummyBarTest.php | 18 + .../phpunit/tests/_files/DummyException.php | 5 + .../phpunit/tests/_files/DummyFooTest.php | 18 + .../tests/_files/EmptyTestCaseTest.php | 6 + .../ExceptionInAssertPostConditionsTest.php | 37 + .../ExceptionInAssertPreConditionsTest.php | 37 + .../tests/_files/ExceptionInSetUpTest.php | 37 + .../tests/_files/ExceptionInTearDownTest.php | 37 + .../phpunit/tests/_files/ExceptionInTest.php | 37 + .../tests/_files/ExceptionNamespaceTest.php | 38 + .../tests/_files/ExceptionStackTest.php | 26 + .../phpunit/tests/_files/ExceptionTest.php | 141 + .../phpunit/phpunit/tests/_files/Failure.php | 10 + .../phpunit/tests/_files/FailureTest.php | 77 + .../phpunit/tests/_files/FalsyConstraint.php | 18 + .../phpunit/tests/_files/FatalTest.php | 15 + .../tests/_files/IgnoreCodeCoverageClass.php | 16 + .../_files/IgnoreCodeCoverageClassTest.php | 17 + .../phpunit/tests/_files/IncompleteTest.php | 10 + .../tests/_files/Inheritance/InheritanceA.php | 7 + .../tests/_files/Inheritance/InheritanceB.php | 10 + .../tests/_files/InheritedTestCase.php | 7 + .../phpunit/phpunit/tests/_files/IniTest.php | 10 + .../phpunit/tests/_files/IsolationTest.php | 15 + .../tests/_files/JsonData/arrayObject.json | 1 + .../tests/_files/JsonData/simpleObject.json | 1 + .../phpunit/tests/_files/MockRunner.php | 9 + .../phpunit/phpunit/tests/_files/Mockable.php | 26 + .../tests/_files/MultiDependencyTest.php | 29 + .../tests/_files/MultipleDataProviderTest.php | 77 + .../phpunit/tests/_files/MyCommand.php | 16 + .../phpunit/tests/_files/NamedConstraint.php | 29 + .../NamespaceCoverageClassExtendedTest.php | 14 + .../_files/NamespaceCoverageClassTest.php | 14 + ...NamespaceCoverageCoversClassPublicTest.php | 17 + .../NamespaceCoverageCoversClassTest.php | 22 + .../_files/NamespaceCoverageMethodTest.php | 14 + .../NamespaceCoverageNotPrivateTest.php | 14 + .../NamespaceCoverageNotProtectedTest.php | 14 + .../_files/NamespaceCoverageNotPublicTest.php | 14 + .../_files/NamespaceCoveragePrivateTest.php | 14 + .../_files/NamespaceCoverageProtectedTest.php | 14 + .../_files/NamespaceCoveragePublicTest.php | 14 + .../tests/_files/NamespaceCoveredClass.php | 38 + .../tests/_files/NamespaceCoveredFunction.php | 7 + .../tests/_files/NoArgTestCaseTest.php | 9 + .../phpunit/tests/_files/NoTestCaseClass.php | 4 + .../phpunit/tests/_files/NoTestCases.php | 9 + .../phpunit/tests/_files/NonStatic.php | 7 + .../_files/NotExistingCoveredElementTest.php | 26 + .../tests/_files/NotPublicTestCase.php | 13 + .../phpunit/tests/_files/NotVoidTestCase.php | 6 + .../phpunit/tests/_files/NothingTest.php | 9 + .../phpunit/tests/_files/OneTestCase.php | 13 + .../phpunit/tests/_files/OutputTestCase.php | 29 + .../phpunit/tests/_files/OverrideTestCase.php | 7 + .../_files/ParseTestMethodAnnotationsMock.php | 15 + .../RequirementsClassBeforeClassHookTest.php | 13 + .../_files/RequirementsClassDocBlockTest.php | 22 + .../phpunit/tests/_files/RequirementsTest.php | 455 + .../tests/_files/SampleArrayAccess.php | 36 + .../phpunit/tests/_files/SampleClass.php | 14 + .../phpunit/tests/_files/Singleton.php | 22 + .../phpunit/tests/_files/StackTest.php | 26 + .../phpunit/tests/_files/StatusTest.php | 42 + .../tests/_files/StopOnWarningTestSuite.php | 15 + .../tests/_files/StopsOnWarningTest.php | 9 + .../phpunit/phpunit/tests/_files/Struct.php | 10 + .../phpunit/phpunit/tests/_files/Success.php | 10 + .../tests/_files/TemplateMethodsTest.php | 53 + .../tests/_files/TestAutoreferenced.php | 12 + .../phpunit/tests/_files/TestDoxGroupTest.php | 22 + .../tests/_files/TestGeneratorMaker.php | 10 + .../phpunit/tests/_files/TestIncomplete.php | 10 + .../phpunit/tests/_files/TestIterator.php | 36 + .../phpunit/tests/_files/TestIterator2.php | 35 + .../tests/_files/TestIteratorAggregate.php | 16 + .../tests/_files/TestIteratorAggregate2.php | 19 + .../phpunit/tests/_files/TestSkipped.php | 10 + .../phpunit/tests/_files/TestTestError.php | 10 + .../phpunit/tests/_files/TestWithTest.php | 26 + .../tests/_files/ThrowExceptionTestCase.php | 10 + .../tests/_files/ThrowNoExceptionTestCase.php | 9 + .../phpunit/tests/_files/TruthyConstraint.php | 18 + .../VariousIterableDataProviderTest.php | 38 + .../phpunit/phpunit/tests/_files/WasRun.php | 12 + .../tests/_files/WrapperIteratorAggregate.php | 22 + vendor/phpunit/phpunit/tests/_files/bar.xml | 1 + .../_files/configuration.colors.empty.xml | 1 + .../_files/configuration.colors.false.xml | 1 + .../_files/configuration.colors.invalid.xml | 1 + .../_files/configuration.colors.true.xml | 1 + .../_files/configuration.custom-printer.xml | 2 + .../_files/configuration.defaulttestsuite.xml | 10 + .../_files/configuration.one-file-suite.xml | 7 + .../tests/_files/configuration.suites.xml | 6 + .../phpunit/tests/_files/configuration.xml | 131 + .../tests/_files/configuration_empty.xml | 49 + .../_files/configuration_stop_on_warning.xml | 2 + .../tests/_files/configuration_xinclude.xml | 79 + .../tests/_files/expectedFileFormat.txt | 1 + vendor/phpunit/phpunit/tests/_files/foo.xml | 1 + .../tests/_files/phpt-for-coverage.phpt | 8 + .../phpunit/tests/_files/phpt-xfail.phpt | 11 + .../phpunit-example-extension/phpunit.xml | 10 + .../tests/OneTest.php | 13 + .../phpunit-example-extension-1.0.1.phar | Bin 0 -> 6464 bytes ...uctureAttributesAreSameButValuesAreNot.xml | 10 + .../tests/_files/structureExpected.xml | 10 + .../tests/_files/structureIgnoreTextNodes.xml | 13 + .../_files/structureIsSameButDataIsNot.xml | 10 + .../structureWrongNumberOfAttributes.xml | 10 + .../_files/structureWrongNumberOfNodes.xml | 9 + vendor/phpunit/phpunit/tests/bootstrap.php | 30 + .../end-to-end/_files/expect_external.txt | 1 + .../end-to-end/_files/phpt-env.expected.txt | 1 + .../tests/end-to-end/_files/phpt_external.php | 2 + .../tests/end-to-end/abstract-test-class.phpt | 24 + .../phpunit/tests/end-to-end/assertion.phpt | 38 + .../end-to-end/code-coverage-ignore.phpt | 36 + .../tests/end-to-end/code-coverage-phpt.phpt | 43 + .../tests/end-to-end/colors-always.phpt | 18 + .../tests/end-to-end/concrete-test-class.phpt | 18 + .../end-to-end/custom-printer-debug.phpt | 26 + .../end-to-end/custom-printer-verbose.phpt | 31 + .../tests/end-to-end/dataprovider-debug.phpt | 33 + .../end-to-end/dataprovider-issue-2833.phpt | 17 + .../end-to-end/dataprovider-issue-2859.phpt | 17 + .../end-to-end/dataprovider-issue-2922.phpt | 18 + .../dataprovider-log-xml-isolation.phpt | 46 + .../end-to-end/dataprovider-log-xml.phpt | 45 + .../end-to-end/dataprovider-testdox.phpt | 19 + .../phpunit/tests/end-to-end/debug.phpt | 25 + .../tests/end-to-end/default-isolation.phpt | 19 + .../phpunit/tests/end-to-end/default.phpt | 18 + .../defaulttestsuite-using-testsuite.phpt | 17 + .../tests/end-to-end/defaulttestsuite.phpt | 15 + .../tests/end-to-end/dependencies-clone.phpt | 22 + .../end-to-end/dependencies-isolation.phpt | 42 + .../tests/end-to-end/dependencies.phpt | 41 + .../end-to-end/dependencies2-isolation.phpt | 19 + .../tests/end-to-end/dependencies2.phpt | 18 + .../end-to-end/dependencies3-isolation.phpt | 19 + .../tests/end-to-end/dependencies3.phpt | 19 + .../disable-code-coverage-ignore.phpt | 40 + .../tests/end-to-end/empty-testcase.phpt | 25 + .../tests/end-to-end/exception-stack.phpt | 62 + .../end-to-end/exclude-group-isolation.phpt | 21 + .../tests/end-to-end/exclude-group.phpt | 20 + .../tests/end-to-end/failure-isolation.phpt | 137 + .../end-to-end/failure-reverse-list.phpt | 137 + .../phpunit/tests/end-to-end/failure.phpt | 136 + .../tests/end-to-end/fatal-isolation.phpt | 25 + .../end-to-end/filter-class-isolation.phpt | 21 + .../tests/end-to-end/filter-class.phpt | 20 + ...ider-by-classname-and-range-isolation.phpt | 21 + ...r-dataprovider-by-classname-and-range.phpt | 20 + ...lter-dataprovider-by-number-isolation.phpt | 21 + .../filter-dataprovider-by-number.phpt | 20 + ...-dataprovider-by-only-range-isolation.phpt | 21 + .../filter-dataprovider-by-only-range.phpt | 20 + ...dataprovider-by-only-regexp-isolation.phpt | 21 + .../filter-dataprovider-by-only-regexp.phpt | 20 + ...dataprovider-by-only-string-isolation.phpt | 21 + .../filter-dataprovider-by-only-string.phpt | 20 + ...ilter-dataprovider-by-range-isolation.phpt | 21 + .../filter-dataprovider-by-range.phpt | 20 + ...lter-dataprovider-by-regexp-isolation.phpt | 21 + .../filter-dataprovider-by-regexp.phpt | 20 + ...lter-dataprovider-by-string-isolation.phpt | 21 + .../filter-dataprovider-by-string.phpt | 20 + .../filter-method-case-insensitive.phpt | 20 + ...ilter-method-case-sensitive-no-result.phpt | 20 + .../end-to-end/filter-method-isolation.phpt | 21 + .../tests/end-to-end/filter-method.phpt | 20 + .../tests/end-to-end/filter-no-results.phpt | 20 + .../end-to-end/forward-compatibility.phpt | 18 + .../tests/end-to-end/group-isolation.phpt | 21 + .../phpunit/tests/end-to-end/group.phpt | 20 + .../phpunit/tests/end-to-end/help.phpt | 103 + .../phpunit/tests/end-to-end/help2.phpt | 104 + .../tests/end-to-end/ini-isolation.phpt | 21 + .../phpunit/tests/end-to-end/list-groups.phpt | 18 + .../phpunit/tests/end-to-end/list-suites.phpt | 16 + .../end-to-end/list-tests-dataprovider.phpt | 19 + .../list-tests-xml-dataprovider.phpt | 31 + .../phpunit/tests/end-to-end/log-junit.phpt | 89 + .../tests/end-to-end/log-teamcity.phpt | 38 + .../phpunit/tests/end-to-end/mycommand.phpt | 23 + .../end-to-end/options-after-arguments.phpt | 18 + .../tests/end-to-end/output-isolation.phpt | 20 + .../end-to-end/phar-extension-suppressed.phpt | 12 + .../tests/end-to-end/phar-extension.phpt | 21 + .../phpunit/tests/end-to-end/phpt-args.phpt | 12 + .../phpunit/tests/end-to-end/phpt-env.phpt | 12 + .../tests/end-to-end/phpt-external.phpt | 6 + .../phpunit/tests/end-to-end/phpt-stderr.phpt | 8 + .../phpunit/tests/end-to-end/phpt-stdin.phpt | 11 + .../phpunit/tests/end-to-end/phpt-xfail.phpt | 18 + .../end-to-end/regression/GitHub/1149.phpt | 20 + .../regression/GitHub/1149/Issue1149Test.php | 20 + .../end-to-end/regression/GitHub/1216.phpt | 25 + .../regression/GitHub/1216/Issue1216Test.php | 10 + .../regression/GitHub/1216/bootstrap1216.php | 2 + .../regression/GitHub/1216/phpunit1216.xml | 8 + .../end-to-end/regression/GitHub/1265.phpt | 21 + .../regression/GitHub/1265/Issue1265Test.php | 10 + .../regression/GitHub/1265/phpunit1265.xml | 2 + .../end-to-end/regression/GitHub/1330.phpt | 24 + .../regression/GitHub/1330/Issue1330Test.php | 10 + .../regression/GitHub/1330/phpunit1330.xml | 5 + .../end-to-end/regression/GitHub/1335.phpt | 19 + .../regression/GitHub/1335/Issue1335Test.php | 69 + .../regression/GitHub/1335/bootstrap1335.php | 13 + .../end-to-end/regression/GitHub/1337.phpt | 19 + .../regression/GitHub/1337/Issue1337Test.php | 21 + .../end-to-end/regression/GitHub/1348.phpt | 33 + .../regression/GitHub/1348/Issue1348Test.php | 16 + .../end-to-end/regression/GitHub/1351.phpt | 46 + .../GitHub/1351/ChildProcessClass1351.php | 4 + .../regression/GitHub/1351/Issue1351Test.php | 50 + .../end-to-end/regression/GitHub/1374.phpt | 19 + .../regression/GitHub/1374/Issue1374Test.php | 23 + .../end-to-end/regression/GitHub/1437.phpt | 26 + .../regression/GitHub/1437/Issue1437Test.php | 11 + .../end-to-end/regression/GitHub/1468.phpt | 20 + .../regression/GitHub/1468/Issue1468Test.php | 13 + .../end-to-end/regression/GitHub/1471.phpt | 26 + .../regression/GitHub/1471/Issue1471Test.php | 14 + .../end-to-end/regression/GitHub/1472.phpt | 18 + .../regression/GitHub/1472/Issue1472Test.php | 23 + .../end-to-end/regression/GitHub/1570.phpt | 25 + .../regression/GitHub/1570/Issue1570Test.php | 10 + .../regression/GitHub/2137-filter.phpt | 28 + .../regression/GitHub/2137-no_filter.phpt | 30 + .../regression/GitHub/2137/Issue2137Test.php | 33 + .../end-to-end/regression/GitHub/2145.phpt | 27 + .../regression/GitHub/2145/Issue2145Test.php | 16 + .../end-to-end/regression/GitHub/2158.phpt | 19 + .../regression/GitHub/2158/Issue2158Test.php | 25 + .../regression/GitHub/2158/constant.inc | 5 + .../end-to-end/regression/GitHub/2366.phpt | 19 + .../regression/GitHub/2366/Issue2366Test.php | 32 + .../end-to-end/regression/GitHub/2380.phpt | 19 + .../regression/GitHub/2380/Issue2380Test.php | 21 + .../end-to-end/regression/GitHub/2382.phpt | 19 + .../regression/GitHub/2382/Issue2382Test.php | 22 + .../end-to-end/regression/GitHub/2435.phpt | 20 + .../regression/GitHub/2435/Issue2435Test.php | 11 + .../end-to-end/regression/GitHub/244.phpt | 32 + .../regression/GitHub/244/Issue244Test.php | 57 + .../regression/GitHub/2448-existing-test.phpt | 20 + .../GitHub/2448-not-existing-test.phpt | 12 + .../regression/GitHub/2448/Test.php | 8 + ...-separate-class-preserve-no-bootstrap.phpt | 30 + .../GitHub/2591-separate-class-preserve.phpt | 21 + ...ction-no-preserve-no-bootstrap-xdebug.phpt | 39 + ...ate-function-no-preserve-no-bootstrap.phpt | 35 + .../2591-separate-function-no-preserve.phpt | 20 + .../2591-separate-function-preserve.phpt | 20 + .../GitHub/2591/SeparateClassPreserveTest.php | 26 + .../2591/SeparateFunctionNoPreserveTest.php | 21 + .../2591/SeparateFunctionPreserveTest.php | 21 + .../GitHub/2591/bootstrapNoBootstrap.php | 7 + .../GitHub/2591/bootstrapWithBootstrap.php | 4 + .../2591/bootstrapWithBootstrapNoGlobal.php | 4 + .../2725-separate-class-before-after-pid.phpt | 19 + .../GitHub/2725/BeforeAfterClassPidTest.php | 37 + .../end-to-end/regression/GitHub/2731.phpt | 26 + .../regression/GitHub/2731/Issue2731Test.php | 11 + .../end-to-end/regression/GitHub/2811.phpt | 20 + .../regression/GitHub/2811/Issue2811Test.php | 10 + .../end-to-end/regression/GitHub/2830.phpt | 20 + .../regression/GitHub/2830/Issue2830Test.php | 22 + .../end-to-end/regression/GitHub/2972.phpt | 18 + .../GitHub/2972/issue-2972-test.phpt | 10 + .../2972/unconventiallyNamedIssue2972Test.php | 13 + .../end-to-end/regression/GitHub/322.phpt | 27 + .../regression/GitHub/322/Issue322Test.php | 21 + .../regression/GitHub/322/phpunit322.xml | 11 + .../end-to-end/regression/GitHub/433.phpt | 31 + .../regression/GitHub/433/Issue433Test.php | 23 + .../end-to-end/regression/GitHub/445.phpt | 32 + .../regression/GitHub/445/Issue445Test.php | 23 + .../end-to-end/regression/GitHub/498.phpt | 29 + .../regression/GitHub/498/Issue498Test.php | 46 + .../end-to-end/regression/GitHub/503.phpt | 34 + .../regression/GitHub/503/Issue503Test.php | 13 + .../end-to-end/regression/GitHub/581.phpt | 38 + .../regression/GitHub/581/Issue581Test.php | 13 + .../end-to-end/regression/GitHub/74.phpt | 28 + .../regression/GitHub/74/Issue74Test.php | 11 + .../regression/GitHub/74/NewException.php | 4 + .../end-to-end/regression/GitHub/765.phpt | 26 + .../regression/GitHub/765/Issue765Test.php | 24 + .../end-to-end/regression/GitHub/797.phpt | 22 + .../regression/GitHub/797/Issue797Test.php | 12 + .../regression/GitHub/797/bootstrap797.php | 6 + .../end-to-end/regression/GitHub/863.phpt | 24 + .../end-to-end/regression/GitHub/873.phpt | 22 + .../regression/GitHub/873/Issue873Test.php | 9 + .../end-to-end/regression/Trac/1021.phpt | 19 + .../regression/Trac/1021/Issue1021Test.php | 26 + .../tests/end-to-end/regression/Trac/523.phpt | 19 + .../regression/Trac/523/Issue523Test.php | 15 + .../tests/end-to-end/regression/Trac/578.phpt | 37 + .../regression/Trac/578/Issue578Test.php | 22 + .../tests/end-to-end/regression/Trac/684.phpt | 25 + .../regression/Trac/684/Issue684Test.php | 6 + .../tests/end-to-end/regression/Trac/783.phpt | 21 + .../regression/Trac/783/ChildSuite.php | 17 + .../regression/Trac/783/OneTest.php | 13 + .../regression/Trac/783/ParentSuite.php | 15 + .../regression/Trac/783/TwoTest.php | 13 + .../phpunit/tests/end-to-end/repeat.phpt | 20 + .../report-useless-tests-incomplete.phpt | 19 + .../report-useless-tests-isolation.phpt | 25 + .../end-to-end/report-useless-tests.phpt | 24 + .../end-to-end/stop-on-warning-via-cli.phpt | 25 + .../stop-on-warning-via-config.phpt | 26 + .../end-to-end/teamcity-inner-exceptions.phpt | 39 + .../phpunit/tests/end-to-end/teamcity.phpt | 37 + .../end-to-end/test-suffix-multiple.phpt | 19 + .../tests/end-to-end/test-suffix-single.phpt | 19 + .../end-to-end/testdox-exclude-group.phpt | 25 + .../tests/end-to-end/testdox-group.phpt | 25 + .../tests/end-to-end/testdox-html.phpt | 56 + .../tests/end-to-end/testdox-text.phpt | 24 + .../phpunit/tests/end-to-end/testdox-xml.phpt | 62 + .../phpunit/tests/end-to-end/testdox.phpt | 18 + vendor/phpunit/phpunit/tests/fail/fail.phpt | 5 + .../tests/unit/Framework/AssertTest.php | 3179 ++++ .../unit/Framework/BaseTestListenerTest.php | 32 + .../Framework/Constraint/ArrayHasKeyTest.php | 65 + .../Framework/Constraint/ArraySubsetTest.php | 84 + .../Framework/Constraint/AttributeTest.php | 81 + .../Framework/Constraint/CallbackTest.php | 66 + .../Constraint/ClassHasAttributeTest.php | 71 + .../ClassHasStaticAttributeTest.php | 67 + .../Constraint/ConstraintTestCase.php | 57 + .../unit/Framework/Constraint/CountTest.php | 146 + .../Constraint/DirectoryExistsTest.php | 67 + .../Constraint/ExceptionMessageRegExpTest.php | 56 + .../Constraint/ExceptionMessageTest.php | 52 + .../Framework/Constraint/FileExistsTest.php | 66 + .../Framework/Constraint/GreaterThanTest.php | 67 + .../unit/Framework/Constraint/IsEmptyTest.php | 68 + .../unit/Framework/Constraint/IsEqualTest.php | 287 + .../Framework/Constraint/IsIdenticalTest.php | 101 + .../unit/Framework/Constraint/IsJsonTest.php | 32 + .../unit/Framework/Constraint/IsNullTest.php | 67 + .../Framework/Constraint/IsReadableTest.php | 43 + .../unit/Framework/Constraint/IsTypeTest.php | 103 + .../Framework/Constraint/IsWritableTest.php | 43 + .../JsonMatchesErrorMessageProviderTest.php | 82 + .../Framework/Constraint/JsonMatchesTest.php | 86 + .../Framework/Constraint/LessThanTest.php | 67 + .../Framework/Constraint/LogicalAndTest.php | 238 + .../Framework/Constraint/LogicalOrTest.php | 233 + .../Framework/Constraint/LogicalXorTest.php | 44 + .../Constraint/ObjectHasAttributeTest.php | 67 + .../Constraint/RegularExpressionTest.php | 67 + .../Framework/Constraint/SameSizeTest.php | 63 + .../Constraint/StringContainsTest.php | 97 + .../Constraint/StringEndsWithTest.php | 88 + .../StringMatchesFormatDescriptionTest.php | 74 + .../Constraint/StringStartsWithTest.php | 89 + .../Constraint/TraversableContainsTest.php | 171 + .../tests/unit/Framework/ConstraintTest.php | 1493 ++ .../tests/unit/Framework/SuiteTest.php | 236 + .../tests/unit/Framework/TestCaseTest.php | 720 + .../tests/unit/Framework/TestFailureTest.php | 41 + .../unit/Framework/TestImplementorTest.php | 26 + .../tests/unit/Framework/TestListenerTest.php | 112 + .../Runner/Filter/NameFilterIteratorTest.php | 38 + .../tests/unit/Runner/PhptTestCaseTest.php | 321 + .../tests/unit/TextUI/TestRunnerTest.php | 49 + .../unit/Util/ConfigurationGeneratorTest.php | 50 + .../tests/unit/Util/ConfigurationTest.php | 481 + .../phpunit/tests/unit/Util/GetoptTest.php | 215 + .../tests/unit/Util/GlobalStateTest.php | 36 + .../phpunit/tests/unit/Util/JsonTest.php | 79 + .../unit/Util/PHP/AbstractPhpProcessTest.php | 124 + .../tests/unit/Util/RegularExpressionTest.php | 51 + .../unit/Util/TestDox/NamePrettifierTest.php | 79 + .../phpunit/tests/unit/Util/TestTest.php | 1002 ++ .../phpunit/tests/unit/Util/XmlTest.php | 117 + .../code-unit-reverse-lookup/.gitignore | 4 + .../code-unit-reverse-lookup/.php_cs | 67 + .../code-unit-reverse-lookup/.travis.yml | 25 + .../code-unit-reverse-lookup/ChangeLog.md | 10 + .../code-unit-reverse-lookup/LICENSE | 33 + .../code-unit-reverse-lookup/README.md | 14 + .../code-unit-reverse-lookup/build.xml | 22 + .../code-unit-reverse-lookup/composer.json | 28 + .../code-unit-reverse-lookup/phpunit.xml | 21 + .../code-unit-reverse-lookup/src/Wizard.php | 111 + .../tests/WizardTest.php | 45 + vendor/sebastian/comparator/.gitignore | 4 + vendor/sebastian/comparator/.php_cs.dist | 88 + vendor/sebastian/comparator/.travis.yml | 34 + vendor/sebastian/comparator/ChangeLog.md | 33 + vendor/sebastian/comparator/LICENSE | 33 + vendor/sebastian/comparator/README.md | 37 + vendor/sebastian/comparator/build.xml | 21 + vendor/sebastian/comparator/composer.json | 54 + vendor/sebastian/comparator/phpunit.xml | 18 + .../comparator/src/ArrayComparator.php | 131 + .../sebastian/comparator/src/Comparator.php | 65 + .../comparator/src/ComparisonFailure.php | 135 + .../comparator/src/DOMNodeComparator.php | 87 + .../comparator/src/DateTimeComparator.php | 84 + .../comparator/src/DoubleComparator.php | 57 + .../comparator/src/ExceptionComparator.php | 53 + vendor/sebastian/comparator/src/Factory.php | 139 + .../comparator/src/MockObjectComparator.php | 48 + .../comparator/src/NumericComparator.php | 69 + .../comparator/src/ObjectComparator.php | 107 + .../comparator/src/ResourceComparator.php | 53 + .../comparator/src/ScalarComparator.php | 92 + .../src/SplObjectStorageComparator.php | 70 + .../comparator/src/TypeComparator.php | 60 + .../comparator/tests/ArrayComparatorTest.php | 168 + .../tests/ComparisonFailureTest.php | 58 + .../tests/DOMNodeComparatorTest.php | 163 + .../tests/DateTimeComparatorTest.php | 223 + .../comparator/tests/DoubleComparatorTest.php | 137 + .../tests/ExceptionComparatorTest.php | 138 + .../comparator/tests/FactoryTest.php | 126 + .../tests/MockObjectComparatorTest.php | 170 + .../tests/NumericComparatorTest.php | 125 + .../comparator/tests/ObjectComparatorTest.php | 152 + .../tests/ResourceComparatorTest.php | 124 + .../comparator/tests/ScalarComparatorTest.php | 161 + .../tests/SplObjectStorageComparatorTest.php | 149 + .../comparator/tests/TypeComparatorTest.php | 108 + .../comparator/tests/_fixture/Author.php | 27 + .../comparator/tests/_fixture/Book.php | 20 + .../tests/_fixture/ClassWithToString.php | 19 + .../comparator/tests/_fixture/SampleClass.php | 28 + .../comparator/tests/_fixture/Struct.php | 24 + .../comparator/tests/_fixture/TestClass.php | 15 + .../tests/_fixture/TestClassComparator.php | 15 + vendor/sebastian/diff/.gitignore | 5 + vendor/sebastian/diff/.php_cs | 81 + vendor/sebastian/diff/.travis.yml | 27 + vendor/sebastian/diff/ChangeLog.md | 22 + vendor/sebastian/diff/LICENSE | 33 + vendor/sebastian/diff/README.md | 126 + vendor/sebastian/diff/build.xml | 22 + vendor/sebastian/diff/composer.json | 33 + vendor/sebastian/diff/phpunit.xml | 19 + vendor/sebastian/diff/src/Chunk.php | 78 + vendor/sebastian/diff/src/Diff.php | 67 + vendor/sebastian/diff/src/Differ.php | 321 + .../diff/src/Exception/Exception.php | 15 + .../Exception/InvalidArgumentException.php | 15 + vendor/sebastian/diff/src/Line.php | 44 + .../LongestCommonSubsequenceCalculator.php | 24 + ...ientLongestCommonSubsequenceCalculator.php | 81 + .../src/Output/AbstractChunkOutputBuilder.php | 56 + .../diff/src/Output/DiffOnlyOutputBuilder.php | 63 + .../src/Output/DiffOutputBuilderInterface.php | 19 + .../src/Output/UnifiedDiffOutputBuilder.php | 165 + vendor/sebastian/diff/src/Parser.php | 106 + ...ientLongestCommonSubsequenceCalculator.php | 66 + vendor/sebastian/diff/tests/ChunkTest.php | 68 + vendor/sebastian/diff/tests/DiffTest.php | 55 + vendor/sebastian/diff/tests/DifferTest.php | 1042 ++ .../sebastian/diff/tests/DifferTestTest.php | 83 + vendor/sebastian/diff/tests/LineTest.php | 44 + .../tests/LongestCommonSubsequenceTest.php | 201 + .../MemoryEfficientImplementationTest.php | 22 + vendor/sebastian/diff/tests/ParserTest.php | 151 + .../tests/TimeEfficientImplementationTest.php | 22 + .../sebastian/diff/tests/fixtures/patch.txt | 9 + .../sebastian/diff/tests/fixtures/patch2.txt | 21 + vendor/sebastian/environment/.gitignore | 5 + vendor/sebastian/environment/.php_cs | 79 + vendor/sebastian/environment/.travis.yml | 34 + vendor/sebastian/environment/ChangeLog.md | 51 + vendor/sebastian/environment/LICENSE | 33 + vendor/sebastian/environment/README.md | 17 + vendor/sebastian/environment/build.xml | 21 + vendor/sebastian/environment/composer.json | 30 + vendor/sebastian/environment/phpunit.xml | 18 + vendor/sebastian/environment/src/Console.php | 146 + .../environment/src/OperatingSystem.php | 51 + vendor/sebastian/environment/src/Runtime.php | 186 + .../environment/tests/ConsoleTest.php | 67 + .../environment/tests/OperatingSystemTest.php | 39 + .../environment/tests/RuntimeTest.php | 112 + vendor/sebastian/exporter/.gitignore | 4 + vendor/sebastian/exporter/.php_cs | 77 + vendor/sebastian/exporter/.travis.yml | 26 + vendor/sebastian/exporter/LICENSE | 33 + vendor/sebastian/exporter/README.md | 172 + vendor/sebastian/exporter/build.xml | 21 + vendor/sebastian/exporter/composer.json | 48 + vendor/sebastian/exporter/phpunit.xml | 19 + vendor/sebastian/exporter/src/Exporter.php | 312 + .../sebastian/exporter/tests/ExporterTest.php | 361 + vendor/sebastian/global-state/.gitignore | 4 + vendor/sebastian/global-state/.php_cs | 79 + vendor/sebastian/global-state/.travis.yml | 26 + vendor/sebastian/global-state/LICENSE | 33 + vendor/sebastian/global-state/README.md | 16 + vendor/sebastian/global-state/build.xml | 22 + vendor/sebastian/global-state/composer.json | 40 + vendor/sebastian/global-state/phpunit.xml | 24 + .../sebastian/global-state/src/Blacklist.php | 123 + .../global-state/src/CodeExporter.php | 94 + .../sebastian/global-state/src/Restorer.php | 137 + .../sebastian/global-state/src/Snapshot.php | 368 + .../global-state/src/exceptions/Exception.php | 17 + .../src/exceptions/RuntimeException.php | 17 + .../global-state/tests/BlacklistTest.php | 120 + .../global-state/tests/CodeExporterTest.php | 38 + .../global-state/tests/RestorerTest.php | 105 + .../global-state/tests/SnapshotTest.php | 116 + .../tests/_fixture/BlacklistedChildClass.php | 17 + .../tests/_fixture/BlacklistedClass.php | 18 + .../tests/_fixture/BlacklistedImplementor.php | 18 + .../tests/_fixture/BlacklistedInterface.php | 17 + .../tests/_fixture/SnapshotClass.php | 37 + .../tests/_fixture/SnapshotDomDocument.php | 19 + .../tests/_fixture/SnapshotFunctions.php | 17 + .../tests/_fixture/SnapshotTrait.php | 17 + vendor/sebastian/object-enumerator/.gitignore | 8 + vendor/sebastian/object-enumerator/.php_cs | 67 + .../sebastian/object-enumerator/.travis.yml | 26 + .../sebastian/object-enumerator/ChangeLog.md | 53 + vendor/sebastian/object-enumerator/LICENSE | 33 + vendor/sebastian/object-enumerator/README.md | 14 + vendor/sebastian/object-enumerator/build.xml | 22 + .../sebastian/object-enumerator/composer.json | 35 + .../sebastian/object-enumerator/phpunit.xml | 20 + .../object-enumerator/src/Enumerator.php | 85 + .../object-enumerator/src/Exception.php | 15 + .../src/InvalidArgumentException.php | 15 + .../tests/EnumeratorTest.php | 139 + .../tests/_fixture/ExceptionThrower.php | 28 + vendor/sebastian/object-reflector/.gitignore | 4 + vendor/sebastian/object-reflector/.php_cs | 79 + vendor/sebastian/object-reflector/.travis.yml | 26 + .../sebastian/object-reflector/ChangeLog.md | 20 + vendor/sebastian/object-reflector/LICENSE | 33 + vendor/sebastian/object-reflector/README.md | 14 + vendor/sebastian/object-reflector/build.xml | 22 + .../sebastian/object-reflector/composer.json | 33 + vendor/sebastian/object-reflector/phpunit.xml | 19 + .../object-reflector/src/Exception.php | 17 + .../src/InvalidArgumentException.php | 17 + .../object-reflector/src/ObjectReflector.php | 51 + .../tests/ObjectReflectorTest.php | 70 + .../tests/_fixture/ChildClass.php | 25 + .../ClassWithIntegerAttributeName.php | 22 + .../tests/_fixture/ParentClass.php | 20 + vendor/sebastian/recursion-context/.gitignore | 3 + .../sebastian/recursion-context/.travis.yml | 23 + vendor/sebastian/recursion-context/LICENSE | 33 + vendor/sebastian/recursion-context/README.md | 14 + vendor/sebastian/recursion-context/build.xml | 21 + .../sebastian/recursion-context/composer.json | 36 + .../sebastian/recursion-context/phpunit.xml | 19 + .../recursion-context/src/Context.php | 167 + .../recursion-context/src/Exception.php | 17 + .../src/InvalidArgumentException.php | 17 + .../recursion-context/tests/ContextTest.php | 142 + .../sebastian/resource-operations/.gitignore | 3 + vendor/sebastian/resource-operations/LICENSE | 33 + .../sebastian/resource-operations/README.md | 16 + .../sebastian/resource-operations/build.xml | 24 + .../resource-operations/build/generate.php | 62 + .../resource-operations/composer.json | 26 + .../src/ResourceOperations.php | 670 + vendor/sebastian/version/.gitattributes | 1 + vendor/sebastian/version/.gitignore | 1 + vendor/sebastian/version/.php_cs | 66 + vendor/sebastian/version/LICENSE | 33 + vendor/sebastian/version/README.md | 43 + vendor/sebastian/version/composer.json | 29 + vendor/sebastian/version/src/Version.php | 109 + vendor/stripe/stripe-php/.gitignore | 17 + vendor/stripe/stripe-php/CHANGELOG.md | 626 + vendor/stripe/stripe-php/LICENSE | 21 + vendor/stripe/stripe-php/README.md | 242 + vendor/stripe/stripe-php/VERSION | 1 + vendor/stripe/stripe-php/build.php | 36 + vendor/stripe/stripe-php/composer.json | 37 + .../stripe-php/data/ca-certificates.crt | 3646 ++++ vendor/stripe/stripe-php/init.php | 138 + vendor/stripe/stripe-php/lib/Account.php | 316 + vendor/stripe/stripe-php/lib/AccountLink.php | 21 + .../stripe/stripe-php/lib/AlipayAccount.php | 72 + .../stripe-php/lib/ApiOperations/All.php | 34 + .../stripe-php/lib/ApiOperations/Create.php | 28 + .../stripe-php/lib/ApiOperations/Delete.php | 27 + .../lib/ApiOperations/NestedResource.php | 118 + .../stripe-php/lib/ApiOperations/Request.php | 61 + .../stripe-php/lib/ApiOperations/Retrieve.php | 27 + .../stripe-php/lib/ApiOperations/Update.php | 46 + vendor/stripe/stripe-php/lib/ApiRequestor.php | 508 + vendor/stripe/stripe-php/lib/ApiResource.php | 112 + vendor/stripe/stripe-php/lib/ApiResponse.php | 32 + .../stripe/stripe-php/lib/ApplePayDomain.php | 28 + .../stripe/stripe-php/lib/ApplicationFee.php | 98 + .../stripe-php/lib/ApplicationFeeRefund.php | 60 + vendor/stripe/stripe-php/lib/Balance.php | 30 + .../stripe-php/lib/BalanceTransaction.php | 41 + vendor/stripe/stripe-php/lib/BankAccount.php | 99 + .../stripe/stripe-php/lib/BitcoinReceiver.php | 49 + .../stripe-php/lib/BitcoinTransaction.php | 14 + vendor/stripe/stripe-php/lib/Card.php | 105 + vendor/stripe/stripe-php/lib/Charge.php | 194 + .../stripe-php/lib/Checkout/Session.php | 30 + vendor/stripe/stripe-php/lib/Collection.php | 108 + vendor/stripe/stripe-php/lib/CountrySpec.php | 26 + vendor/stripe/stripe-php/lib/Coupon.php | 36 + vendor/stripe/stripe-php/lib/Customer.php | 205 + vendor/stripe/stripe-php/lib/Discount.php | 21 + vendor/stripe/stripe-php/lib/Dispute.php | 77 + vendor/stripe/stripe-php/lib/EphemeralKey.php | 41 + vendor/stripe/stripe-php/lib/Error/Api.php | 7 + .../stripe-php/lib/Error/ApiConnection.php | 7 + .../stripe-php/lib/Error/Authentication.php | 7 + vendor/stripe/stripe-php/lib/Error/Base.php | 69 + vendor/stripe/stripe-php/lib/Error/Card.php | 40 + .../stripe-php/lib/Error/Idempotency.php | 7 + .../stripe-php/lib/Error/InvalidRequest.php | 23 + .../lib/Error/OAuth/InvalidClient.php | 10 + .../lib/Error/OAuth/InvalidGrant.php | 13 + .../lib/Error/OAuth/InvalidRequest.php | 11 + .../lib/Error/OAuth/InvalidScope.php | 10 + .../stripe-php/lib/Error/OAuth/OAuthBase.php | 23 + .../lib/Error/OAuth/UnsupportedGrantType.php | 11 + .../Error/OAuth/UnsupportedResponseType.php | 11 + .../stripe-php/lib/Error/Permission.php | 7 + .../stripe/stripe-php/lib/Error/RateLimit.php | 7 + .../lib/Error/SignatureVerification.php | 20 + vendor/stripe/stripe-php/lib/Event.php | 151 + vendor/stripe/stripe-php/lib/ExchangeRate.php | 17 + vendor/stripe/stripe-php/lib/File.php | 55 + vendor/stripe/stripe-php/lib/FileLink.php | 29 + vendor/stripe/stripe-php/lib/FileUpload.php | 6 + .../lib/HttpClient/ClientInterface.php | 21 + .../stripe-php/lib/HttpClient/CurlClient.php | 409 + vendor/stripe/stripe-php/lib/Invoice.php | 151 + vendor/stripe/stripe-php/lib/InvoiceItem.php | 39 + .../stripe/stripe-php/lib/InvoiceLineItem.php | 30 + .../stripe-php/lib/IssuerFraudRecord.php | 25 + .../stripe-php/lib/Issuing/Authorization.php | 68 + vendor/stripe/stripe-php/lib/Issuing/Card.php | 51 + .../stripe-php/lib/Issuing/CardDetails.php | 21 + .../stripe-php/lib/Issuing/Cardholder.php | 30 + .../stripe/stripe-php/lib/Issuing/Dispute.php | 30 + .../stripe-php/lib/Issuing/Transaction.php | 33 + vendor/stripe/stripe-php/lib/LoginLink.php | 18 + vendor/stripe/stripe-php/lib/OAuth.php | 93 + vendor/stripe/stripe-php/lib/Order.php | 64 + vendor/stripe/stripe-php/lib/OrderItem.php | 22 + vendor/stripe/stripe-php/lib/OrderReturn.php | 27 + .../stripe/stripe-php/lib/PaymentIntent.php | 94 + .../stripe/stripe-php/lib/PaymentMethod.php | 60 + vendor/stripe/stripe-php/lib/Payout.php | 69 + vendor/stripe/stripe-php/lib/Person.php | 93 + vendor/stripe/stripe-php/lib/Plan.php | 40 + vendor/stripe/stripe-php/lib/Product.php | 40 + .../stripe/stripe-php/lib/Radar/ValueList.php | 32 + .../stripe-php/lib/Radar/ValueListItem.php | 26 + vendor/stripe/stripe-php/lib/Recipient.php | 48 + .../stripe-php/lib/RecipientTransfer.php | 39 + vendor/stripe/stripe-php/lib/Refund.php | 36 + .../stripe-php/lib/Reporting/ReportRun.php | 28 + .../stripe-php/lib/Reporting/ReportType.php | 24 + .../stripe-php/lib/RequestTelemetry.php | 27 + vendor/stripe/stripe-php/lib/Review.php | 44 + vendor/stripe/stripe-php/lib/SKU.php | 35 + .../lib/Sigma/ScheduledQueryRun.php | 33 + .../stripe-php/lib/SingletonApiResource.php | 38 + vendor/stripe/stripe-php/lib/Source.php | 153 + .../stripe-php/lib/SourceTransaction.php | 23 + vendor/stripe/stripe-php/lib/Stripe.php | 265 + vendor/stripe/stripe-php/lib/StripeObject.php | 523 + vendor/stripe/stripe-php/lib/Subscription.php | 93 + .../stripe-php/lib/SubscriptionItem.php | 44 + .../stripe-php/lib/SubscriptionSchedule.php | 111 + .../lib/SubscriptionScheduleRevision.php | 77 + .../lib/Terminal/ConnectionToken.php | 17 + .../stripe-php/lib/Terminal/Location.php | 25 + .../stripe/stripe-php/lib/Terminal/Reader.php | 30 + vendor/stripe/stripe-php/lib/ThreeDSecure.php | 20 + vendor/stripe/stripe-php/lib/Token.php | 27 + vendor/stripe/stripe-php/lib/Topup.php | 50 + vendor/stripe/stripe-php/lib/Transfer.php | 112 + .../stripe-php/lib/TransferReversal.php | 62 + vendor/stripe/stripe-php/lib/UsageRecord.php | 44 + .../stripe-php/lib/UsageRecordSummary.php | 22 + .../lib/Util/AutoPagingIterator.php | 61 + .../lib/Util/CaseInsensitiveArray.php | 62 + .../stripe-php/lib/Util/DefaultLogger.php | 18 + .../stripe-php/lib/Util/LoggerInterface.php | 36 + .../stripe-php/lib/Util/RandomGenerator.php | 34 + .../stripe-php/lib/Util/RequestOptions.php | 108 + vendor/stripe/stripe-php/lib/Util/Set.php | 44 + vendor/stripe/stripe-php/lib/Util/Util.php | 354 + vendor/stripe/stripe-php/lib/Webhook.php | 40 + .../stripe/stripe-php/lib/WebhookEndpoint.php | 29 + .../stripe-php/lib/WebhookSignature.php | 133 + vendor/stripe/stripe-php/update_certs.php | 19 + vendor/symfony/polyfill-ctype/Ctype.php | 227 + vendor/symfony/polyfill-ctype/LICENSE | 19 + vendor/symfony/polyfill-ctype/README.md | 12 + vendor/symfony/polyfill-ctype/bootstrap.php | 26 + vendor/symfony/polyfill-ctype/composer.json | 34 + vendor/theseer/tokenizer/.gitignore | 7 + vendor/theseer/tokenizer/.php_cs | 67 + vendor/theseer/tokenizer/.travis.yml | 33 + vendor/theseer/tokenizer/LICENSE | 30 + vendor/theseer/tokenizer/README.md | 49 + vendor/theseer/tokenizer/build.xml | 41 + vendor/theseer/tokenizer/composer.json | 27 + vendor/theseer/tokenizer/phive.xml | 5 + vendor/theseer/tokenizer/phpunit.xml | 25 + vendor/theseer/tokenizer/src/Exception.php | 6 + vendor/theseer/tokenizer/src/NamespaceUri.php | 28 + .../tokenizer/src/NamespaceUriException.php | 6 + vendor/theseer/tokenizer/src/Token.php | 55 + .../theseer/tokenizer/src/TokenCollection.php | 128 + .../src/TokenCollectionException.php | 6 + vendor/theseer/tokenizer/src/Tokenizer.php | 82 + .../theseer/tokenizer/src/XMLSerializer.php | 94 + .../tokenizer/tests/NamespaceUriTest.php | 29 + .../tokenizer/tests/TokenCollectionTest.php | 72 + vendor/theseer/tokenizer/tests/TokenTest.php | 31 + .../theseer/tokenizer/tests/TokenizerTest.php | 21 + .../tokenizer/tests/XMLSerializerTest.php | 43 + .../tokenizer/tests/_files/customns.xml | 177 + .../theseer/tokenizer/tests/_files/test.php | 25 + .../tokenizer/tests/_files/test.php.tokens | Bin 0 -> 29474 bytes .../tokenizer/tests/_files/test.php.xml | 177 + vendor/webmozart/assert/CHANGELOG.md | 76 + vendor/webmozart/assert/LICENSE | 20 + vendor/webmozart/assert/README.md | 258 + vendor/webmozart/assert/composer.json | 39 + vendor/webmozart/assert/src/Assert.php | 1187 ++ wpshop.config.json | 51 + wpshop.php | 32 + 2646 files changed, 232498 insertions(+) create mode 100644 .browserslist create mode 100644 .codecov.yml create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .scrutinizer.yml create mode 100644 .travis.yml create mode 100644 README.md create mode 100644 build/block.asset.php create mode 100644 build/block.js create mode 100644 build/block.js.map create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 core/action/class-core-action.php create mode 100644 core/action/index.php create mode 100644 core/asset/css/index.php create mode 100644 core/asset/css/scss-frontend/element/_element.scss create mode 100644 core/asset/css/scss-frontend/element/cart/_cart.scss create mode 100644 core/asset/css/scss-frontend/element/cart/_checkout.scss create mode 100644 core/asset/css/scss-frontend/element/cart/_product.scss create mode 100644 core/asset/css/scss-frontend/element/cart/_resume.scss create mode 100644 core/asset/css/scss-frontend/element/checkout/_checkout.scss create mode 100644 core/asset/css/scss-frontend/element/checkout/_payment.scss create mode 100644 core/asset/css/scss-frontend/element/checkout/_resume-product.scss create mode 100644 core/asset/css/scss-frontend/element/checkout/_step.scss create mode 100644 core/asset/css/scss-frontend/element/my-account/_login.scss create mode 100644 core/asset/css/scss-frontend/element/my-account/_my-account.scss create mode 100644 core/asset/css/scss-frontend/element/my-account/_navigation.scss create mode 100644 core/asset/css/scss-frontend/element/my-account/_wps-box.scss create mode 100644 core/asset/css/scss-frontend/element/product/_grid-product.scss create mode 100644 core/asset/css/scss-frontend/element/product/_list-product.scss create mode 100644 core/asset/css/scss-frontend/element/product/_product.scss create mode 100644 core/asset/css/scss-frontend/element/product/_single-product.scss create mode 100644 core/asset/css/scss-frontend/element/product/_taxonomy.scss create mode 100644 core/asset/css/scss-frontend/external/_external.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_autocomplete.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_button.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_eoframework-color.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_form.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_loader.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_modal.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_notification.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_pagination.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_popover.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_tab.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_table.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-color/_tooltip.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-modules/_button.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-modules/_eoframework-modules.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-modules/_notice.scss create mode 100644 core/asset/css/scss-frontend/external/eoframework-modules/_table.scss create mode 100644 core/asset/css/scss-frontend/font/_font.scss create mode 100644 core/asset/css/scss-frontend/font/font-awesome/_core.scss create mode 100644 core/asset/css/scss-frontend/font/font-awesome/_fontawesome.scss create mode 100644 core/asset/css/scss-frontend/font/font-awesome/_mixins.scss create mode 100644 core/asset/css/scss-frontend/font/font-awesome/_variables.scss create mode 100644 core/asset/css/scss-frontend/index.php create mode 100644 core/asset/css/scss-frontend/mixins/_mixins-master.scss create mode 100644 core/asset/css/scss-frontend/style.scss create mode 100644 core/asset/css/scss-frontend/variables/_colors.scss create mode 100644 core/asset/css/scss-frontend/variables/_structure.scss create mode 100644 core/asset/css/scss-frontend/variables/_typography.scss create mode 100644 core/asset/css/scss-frontend/variables/_variables.scss create mode 100644 core/asset/css/scss/element-global/_element-global.scss create mode 100644 core/asset/css/scss/element-global/_modal-sync.scss create mode 100644 core/asset/css/scss/element/_element.scss create mode 100644 core/asset/css/scss/element/_filter-bar.scss create mode 100644 core/asset/css/scss/element/_metabox-list.scss create mode 100644 core/asset/css/scss/element/_metabox.scss create mode 100644 core/asset/css/scss/element/_page-header.scss create mode 100644 core/asset/css/scss/element/_status.scss create mode 100644 core/asset/css/scss/element/_sync-element.scss create mode 100644 core/asset/css/scss/element/table/_commercial.scss create mode 100644 core/asset/css/scss/element/table/_flex.scss create mode 100644 core/asset/css/scss/element/table/_list-contact.scss create mode 100644 core/asset/css/scss/element/table/_list-product.scss create mode 100644 core/asset/css/scss/element/table/_reference.scss create mode 100644 core/asset/css/scss/element/table/_table.scss create mode 100644 core/asset/css/scss/external/_button.scss create mode 100644 core/asset/css/scss/external/_external.scss create mode 100644 core/asset/css/scss/external/_table.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_autocomplete.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_button.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_eoframework-color.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_form.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_loader.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_modal.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_notification.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_pagination.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_popover.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_tab.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_table.scss create mode 100644 core/asset/css/scss/external/eoframework-color/_tooltip.scss create mode 100644 core/asset/css/scss/font/_font.scss create mode 100644 core/asset/css/scss/font/font-awesome/_core.scss create mode 100644 core/asset/css/scss/font/font-awesome/_fontawesome.scss create mode 100644 core/asset/css/scss/font/font-awesome/_mixins.scss create mode 100644 core/asset/css/scss/font/font-awesome/_variables.scss create mode 100644 core/asset/css/scss/index.php create mode 100644 core/asset/css/scss/mixins/_mixins-master.scss create mode 100644 core/asset/css/scss/page/_page.scss create mode 100644 core/asset/css/scss/page/_single-third-party.scss create mode 100644 core/asset/css/scss/page/_status.scss create mode 100644 core/asset/css/scss/style.scss create mode 100644 core/asset/css/scss/variables/_colors.scss create mode 100644 core/asset/css/scss/variables/_structure.scss create mode 100644 core/asset/css/scss/variables/_typography.scss create mode 100644 core/asset/css/scss/variables/_variables.scss create mode 100644 core/asset/css/style.css create mode 100644 core/asset/css/style.frontend.css create mode 100644 core/asset/css/style.frontend.min.css create mode 100644 core/asset/css/style.min.css create mode 100644 core/asset/image/default-product-thumbnail-min.jpg create mode 100644 core/asset/image/default-product-thumbnail.jpg create mode 100644 core/asset/image/index.php create mode 100644 core/asset/index.php create mode 100644 core/asset/js/backend.min.js create mode 100644 core/asset/js/blocks/block.js create mode 100644 core/asset/js/frontend.min.js create mode 100644 core/asset/js/index.php create mode 100644 core/asset/js/init.js create mode 100644 core/asset/language/index.php create mode 100644 core/asset/language/wpshop-fr_FR.mo create mode 100644 core/asset/language/wpshop-fr_FR.po create mode 100644 core/class/class-core.php create mode 100644 core/core.config.json create mode 100644 core/external/eo-framework/.editorconfig create mode 100644 core/external/eo-framework/.gitignore create mode 100644 core/external/eo-framework/.travis.yml create mode 100644 core/external/eo-framework/LICENSE create mode 100644 core/external/eo-framework/README.md create mode 100644 core/external/eo-framework/composer.json create mode 100644 core/external/eo-framework/composer.lock create mode 100644 core/external/eo-framework/core/action/core.action.php create mode 100644 core/external/eo-framework/core/assets/README.md create mode 100644 core/external/eo-framework/core/assets/css/fontawesome/fontawesome-all.min.css create mode 100644 core/external/eo-framework/core/assets/css/index.php create mode 100644 core/external/eo-framework/core/assets/css/jquery.datetimepicker.css create mode 100644 core/external/eo-framework/core/assets/css/scss/_normalize.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/core/_core.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/core/custom-menu/_custom-menu.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/core/structure/_structure.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/fontawesome/_core.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/fontawesome/_fontawesome.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/fontawesome/_mixins.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/fontawesome/_variables.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/index.php create mode 100644 core/external/eo-framework/core/assets/css/scss/mixins/_mixins-master.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/_modules.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/_animation.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_bounce.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_flash.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_headShake.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_jello.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_pulse.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_rubberBand.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_shake.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_swing.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_tada.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_wobble.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceIn.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOut.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_bounceInLight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_downAndUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_rotate.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeIn.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDownBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeftBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRightBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUpBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOut.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDownBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeftBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRightBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUpBig.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutDown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutLeft.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutRight.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutUp.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/autocomplete/_autocomplete.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/button/_button.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/button/_colors.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/button/_progress.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/dropdown/_dropdown.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/dropdown/_grid.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/dropdown/_list.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_archive-moderne.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_archive-simple.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_checkbox.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_form.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_input.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/form/_radio.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/grid/_grid.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/gridlayout/_gridlayout.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/loader/_loader.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/modal/_modal.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/notice/_notice.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/notice/_status.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/notification/_notification.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/pagination/_pagination.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/popover/_popover.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/tab/_effect.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/tab/_tab.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/tab/_template.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/table/_flex.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/table/_standard.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/table/_table.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/tooltip/_tooltip.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/modules/util/_util.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/style.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/variables/_colors.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/variables/_structure.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/variables/_typography.scss create mode 100644 core/external/eo-framework/core/assets/css/scss/variables/_variables.scss create mode 100644 core/external/eo-framework/core/assets/css/style.css create mode 100644 core/external/eo-framework/core/assets/css/style.min.css create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.eot create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.svg create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.ttf create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.woff create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.woff2 create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.eot create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.svg create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.ttf create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.woff create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.woff2 create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.eot create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.svg create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.ttf create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.woff create mode 100644 core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.woff2 create mode 100644 core/external/eo-framework/core/assets/examples/assets/img/gravatar.jpg create mode 100644 core/external/eo-framework/core/assets/examples/assets/includejs.js create mode 100644 core/external/eo-framework/core/assets/examples/assets/jquery.min.js create mode 100644 core/external/eo-framework/core/assets/examples/assets/prism.min.css create mode 100644 core/external/eo-framework/core/assets/examples/assets/prism.min.js create mode 100644 core/external/eo-framework/core/assets/examples/assets/script.js create mode 100644 core/external/eo-framework/core/assets/examples/assets/style.css create mode 100644 core/external/eo-framework/core/assets/examples/inc/animation/animation.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/autocomplete/autocomplete.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/button/button.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/container/container.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/dropdown/dropdown.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/form/form.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/grid/grid.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/heading/heading.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/loader/loader.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/modal/modal.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/notice/notice.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/notification.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/notification/notification.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/pagination/pagination.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/tab/tab.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/table/table.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/tooltip/tooltip.html create mode 100644 core/external/eo-framework/core/assets/examples/inc/util/util.html create mode 100644 core/external/eo-framework/core/assets/examples/index.html create mode 100644 core/external/eo-framework/core/assets/examples/index.php create mode 100644 core/external/eo-framework/core/assets/index.php create mode 100644 core/external/eo-framework/core/assets/js/README.md create mode 100644 core/external/eo-framework/core/assets/js/action.lib.js create mode 100644 core/external/eo-framework/core/assets/js/array-form.lib.js create mode 100644 core/external/eo-framework/core/assets/js/attribute.lib.js create mode 100644 core/external/eo-framework/core/assets/js/auto-complete.lib.js create mode 100644 core/external/eo-framework/core/assets/js/date.lib.js create mode 100644 core/external/eo-framework/core/assets/js/dest/jquery.datetimepicker.full.js create mode 100644 core/external/eo-framework/core/assets/js/dest/wpeo-assets.js create mode 100644 core/external/eo-framework/core/assets/js/dropdown.lib.js create mode 100644 core/external/eo-framework/core/assets/js/form.lib.js create mode 100644 core/external/eo-framework/core/assets/js/global.lib.js create mode 100644 core/external/eo-framework/core/assets/js/index.php create mode 100644 core/external/eo-framework/core/assets/js/init.js create mode 100644 core/external/eo-framework/core/assets/js/loader.lib.js create mode 100644 core/external/eo-framework/core/assets/js/modal.lib.js create mode 100644 core/external/eo-framework/core/assets/js/popover.lib.js create mode 100644 core/external/eo-framework/core/assets/js/regex.lib.js create mode 100644 core/external/eo-framework/core/assets/js/render.lib.js create mode 100644 core/external/eo-framework/core/assets/js/request.lib.js create mode 100644 core/external/eo-framework/core/assets/js/tab.lib.js create mode 100644 core/external/eo-framework/core/assets/js/tooltip.lib.js create mode 100644 core/external/eo-framework/core/assets/languages/eoxia-fr_FR.mo create mode 100644 core/external/eo-framework/core/assets/languages/eoxia-fr_FR.po create mode 100644 core/external/eo-framework/core/core.config.json create mode 100644 core/external/eo-framework/core/util/README.md create mode 100644 core/external/eo-framework/core/util/class-array-util.php create mode 100644 core/external/eo-framework/core/util/class-config-util.php create mode 100644 core/external/eo-framework/core/util/class-csv-util.php create mode 100644 core/external/eo-framework/core/util/class-date-util.php create mode 100644 core/external/eo-framework/core/util/class-external-util.php create mode 100644 core/external/eo-framework/core/util/class-file-util.php create mode 100644 core/external/eo-framework/core/util/class-include-util.php create mode 100644 core/external/eo-framework/core/util/class-init-util.php create mode 100644 core/external/eo-framework/core/util/class-json-util.php create mode 100644 core/external/eo-framework/core/util/class-log-util.php create mode 100644 core/external/eo-framework/core/util/class-module-util.php create mode 100644 core/external/eo-framework/core/util/class-post-util.php create mode 100644 core/external/eo-framework/core/util/class-singleton-util.php create mode 100644 core/external/eo-framework/core/util/class-view-util.php create mode 100644 core/external/eo-framework/core/util/class-zip-util.php create mode 100644 core/external/eo-framework/core/util/index.php create mode 100644 core/external/eo-framework/core/view/modal-buttons.view.php create mode 100644 core/external/eo-framework/core/view/modal-title.view.php create mode 100644 core/external/eo-framework/core/view/modal.view.php create mode 100644 core/external/eo-framework/eo-framework.config.json create mode 100644 core/external/eo-framework/eo-framework.php create mode 100644 core/external/eo-framework/gulpfile.js create mode 100644 core/external/eo-framework/index.php create mode 100644 core/external/eo-framework/jsdoc.conf.json create mode 100644 core/external/eo-framework/modules/index.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/action/class-custom-menu-action.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/action/index.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/asset/css/wpeo-custom-menu.css create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/asset/js/wpeo-custom-menu.js create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu-handler.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/filter/class-custom-menu-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/filter/index.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/content.view.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/header-multisite.view.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/header.view.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/index.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/nav.view.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/view/screen-options.view.php create mode 100644 core/external/eo-framework/modules/wpeo-custom-menu/wpeo_custom_menu.config.json create mode 100644 core/external/eo-framework/modules/wpeo-model/class/attachment.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/comment.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/data.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/helper.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/index.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/object.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/post.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/rest.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/save_meta.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/schema.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/term.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/class/user.class.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/class-comment-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/class-handle-value-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/class-post-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/class-term-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/class-user-filter.php create mode 100644 core/external/eo-framework/modules/wpeo-model/filter/index.php create mode 100644 core/external/eo-framework/modules/wpeo-model/index.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/class-attachment-model.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/class-comment-model.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/class-post-model.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/class-term-model.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/class-user-model.php create mode 100644 core/external/eo-framework/modules/wpeo-model/model/index.php create mode 100644 core/external/eo-framework/modules/wpeo-model/wpeo_model.config.json create mode 100644 core/external/eo-framework/modules/wpeo-odt/class/odt.class.php create mode 100644 core/external/eo-framework/modules/wpeo-odt/model/class-odt-model.php create mode 100644 core/external/eo-framework/modules/wpeo-odt/wpeo_odt.config.json create mode 100644 core/external/eo-framework/modules/wpeo-search/action/class-search-action.php create mode 100644 core/external/eo-framework/modules/wpeo-search/assets/js/wpeo-search.js create mode 100644 core/external/eo-framework/modules/wpeo-search/class/class-search.php create mode 100644 core/external/eo-framework/modules/wpeo-search/shortcode/class-search-shortcode.php create mode 100644 core/external/eo-framework/modules/wpeo-search/view/list-post-simple.view.php create mode 100644 core/external/eo-framework/modules/wpeo-search/view/list-post.view.php create mode 100644 core/external/eo-framework/modules/wpeo-search/view/list-user.view.php create mode 100644 core/external/eo-framework/modules/wpeo-search/view/main.view.php create mode 100644 core/external/eo-framework/modules/wpeo-search/wpeo_search.config.json create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/action/class-update-manager-action.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/action/index.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/element/_element.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/element/_update_manager.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/fontawesome/_core.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/fontawesome/_fontawesome.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/fontawesome/_mixins.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/fontawesome/_variables.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/style.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/variables/_colors.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/scss/variables/_variables.scss create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/style.css create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/css/style.min.css create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/index.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/js/index.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/assets/js/wpeo-update-manager.js create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/class/update-manager.class.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/index.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/view/index.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/view/main.view.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/view/say-to-update.view.php create mode 100644 core/external/eo-framework/modules/wpeo-update-manager/wpeo_update_manager.config.json create mode 100644 core/external/eo-framework/modules/wpeo-upload/README.md create mode 100644 core/external/eo-framework/modules/wpeo-upload/action/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/action/wpeo-upload.action.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/element/_animation.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/element/_element.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/element/_gallery.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/element/_media.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/mixins/_mixins-master.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/style.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_colors.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_structure.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_typography.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_variables.scss create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/style.css create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/css/style.min.css create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/js/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/js/wpeo-upload.js create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.mo create mode 100644 core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.po create mode 100644 core/external/eo-framework/modules/wpeo-upload/class/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/class/wpeo-upload.class.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/shortcode/class-wpeo-upload-shortcode.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/shortcode/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/button.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/actions.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/attributes.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/button-add.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/list.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/main.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/gallery/navigation-arrow.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/box/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/list/button.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/list/index.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/list/list-item.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/view/list/list.view.php create mode 100644 core/external/eo-framework/modules/wpeo-upload/wpeo_upload.config.json create mode 100644 core/external/eo-framework/package-lock.json create mode 100644 core/external/eo-framework/package.json create mode 100644 core/external/eo-framework/phpcs.xml.dist create mode 100644 core/external/eo-framework/phpdoc.xml create mode 100644 core/external/eo-framework/phpunit.xml.dist create mode 100644 core/external/eo-framework/tests/bootstrap.php create mode 100644 core/external/eo-framework/tests/test-post-class.php create mode 100644 core/external/index.php create mode 100644 core/filter/class-core-filter.php create mode 100644 core/index.php create mode 100644 core/util/class-countries-util.php create mode 100644 core/util/class-date-util.php create mode 100644 core/util/class-price-util.php create mode 100644 core/util/class-request-util.php create mode 100644 core/util/class-template-util.php create mode 100644 core/util/index.php create mode 100644 core/view/erp-connexion-error.view.php create mode 100644 gulpfile.js create mode 100644 index.php create mode 100644 license.txt create mode 100644 modules/api/action/class-api-action.php create mode 100644 modules/api/action/index.php create mode 100644 modules/api/api.config.json create mode 100644 modules/api/asset/api.backend.js create mode 100644 modules/api/class/class-api.php create mode 100644 modules/api/view/field-api.view.php create mode 100644 modules/cart/action/class-cart-action.php create mode 100644 modules/cart/action/index.php create mode 100644 modules/cart/asset/cart.frontend.js create mode 100644 modules/cart/asset/index.php create mode 100644 modules/cart/cart.config.json create mode 100644 modules/cart/class/class-cart-session.php create mode 100644 modules/cart/class/class-cart.php create mode 100644 modules/cart/class/index.php create mode 100644 modules/cart/filter/class-cart-filter.php create mode 100644 modules/cart/filter/index.php create mode 100644 modules/cart/index.php create mode 100644 modules/cart/shortcode/class-cart-shortcode.php create mode 100644 modules/cart/shortcode/index.php create mode 100644 modules/cart/view/frontend/add-to-cart.php create mode 100644 modules/cart/view/frontend/cart-resume.php create mode 100644 modules/cart/view/frontend/cart-totals.php create mode 100644 modules/cart/view/frontend/cart.php create mode 100644 modules/cart/view/frontend/empty-cart.php create mode 100644 modules/cart/view/frontend/index.php create mode 100644 modules/cart/view/frontend/link-cart.php create mode 100644 modules/cart/view/index.php create mode 100644 modules/checkout/action/class-checkout-action.php create mode 100644 modules/checkout/action/index.php create mode 100644 modules/checkout/asset/index.php create mode 100644 modules/checkout/asset/js/checkout.frontend.js create mode 100644 modules/checkout/asset/js/index.php create mode 100644 modules/checkout/checkout.config.json create mode 100644 modules/checkout/class/class-checkout.php create mode 100644 modules/checkout/class/index.php create mode 100644 modules/checkout/filter/class-checkout-filter.php create mode 100644 modules/checkout/index.php create mode 100644 modules/checkout/shortcode/class-checkout-shortcode.php create mode 100644 modules/checkout/shortcode/index.php create mode 100644 modules/checkout/view/frontend/devis-button.php create mode 100644 modules/checkout/view/frontend/form-checkout-step-1.php create mode 100644 modules/checkout/view/frontend/form-checkout-step-2.php create mode 100644 modules/checkout/view/frontend/form-checkout-step-3.php create mode 100644 modules/checkout/view/frontend/form-checkout.php create mode 100644 modules/checkout/view/frontend/form-payment.php create mode 100644 modules/checkout/view/frontend/form-shipping.php create mode 100644 modules/checkout/view/frontend/index.php create mode 100644 modules/checkout/view/frontend/notice-error.php create mode 100644 modules/checkout/view/frontend/payment.php create mode 100644 modules/checkout/view/frontend/place-order-button.php create mode 100644 modules/checkout/view/frontend/proceed-to-checkout-button.php create mode 100644 modules/checkout/view/frontend/resume-list-product.php create mode 100644 modules/checkout/view/frontend/review-order.php create mode 100644 modules/checkout/view/frontend/terms.php create mode 100644 modules/checkout/view/frontend/valid-checkout.php create mode 100644 modules/checkout/view/index.php create mode 100644 modules/dashboard/action/class-dashboard-action.php create mode 100644 modules/dashboard/action/index.php create mode 100644 modules/dashboard/class/class-dashboard.php create mode 100644 modules/dashboard/dashboard.config.json create mode 100644 modules/dashboard/filter/class-dashboard-filter.php create mode 100644 modules/dashboard/index.php create mode 100644 modules/dashboard/view/index.php create mode 100644 modules/dashboard/view/main.view.php create mode 100644 modules/dashboard/view/metaboxes/index.php create mode 100644 modules/dashboard/view/metaboxes/metabox-customers.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-invoices.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-orders.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-payments.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-products.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-quotations.view.php create mode 100644 modules/dashboard/view/metaboxes/metabox-sync.view.php create mode 100644 modules/dolibarr/doli-associate/action/class-doli-associate-action.php create mode 100644 modules/dolibarr/doli-associate/asset/js/doli-associate.backend.js create mode 100644 modules/dolibarr/doli-associate/doli-associate.config.json create mode 100644 modules/dolibarr/doli-associate/filter/class-doli-associate-filter.php create mode 100644 modules/dolibarr/doli-associate/view/compare-footer.view.php create mode 100644 modules/dolibarr/doli-associate/view/compare-wps-product.view.php create mode 100644 modules/dolibarr/doli-associate/view/compare-wps-proposal.view.php create mode 100644 modules/dolibarr/doli-associate/view/compare-wps-third-party.view.php create mode 100644 modules/dolibarr/doli-associate/view/compare-wps-user.view.php create mode 100644 modules/dolibarr/doli-associate/view/item-wps-product.view.php create mode 100644 modules/dolibarr/doli-associate/view/item-wps-proposal.view.php create mode 100644 modules/dolibarr/doli-associate/view/item-wps-third-party.view.php create mode 100644 modules/dolibarr/doli-associate/view/item-wps-user.view.php create mode 100644 modules/dolibarr/doli-associate/view/main.view.php create mode 100644 modules/dolibarr/doli-associate/view/modal-associate-footer.view.php create mode 100644 modules/dolibarr/doli-associate/view/modal-associate-result.view.php create mode 100644 modules/dolibarr/doli-associate/view/single-footer.view.php create mode 100644 modules/dolibarr/doli-invoice/action/class-doli-invoice-action.php create mode 100644 modules/dolibarr/doli-invoice/action/index.php create mode 100644 modules/dolibarr/doli-invoice/class/class-doli-invoice.php create mode 100644 modules/dolibarr/doli-invoice/class/index.php create mode 100644 modules/dolibarr/doli-invoice/doli-invoice.config.json create mode 100644 modules/dolibarr/doli-invoice/filter/class-doli-invoice-filter.php create mode 100644 modules/dolibarr/doli-invoice/index.php create mode 100644 modules/dolibarr/doli-invoice/model/class-doli-invoice-model.php create mode 100644 modules/dolibarr/doli-invoice/model/index.php create mode 100644 modules/dolibarr/doli-invoice/view/index.php create mode 100644 modules/dolibarr/doli-invoice/view/item.view.php create mode 100644 modules/dolibarr/doli-invoice/view/list.view.php create mode 100644 modules/dolibarr/doli-invoice/view/main.view.php create mode 100644 modules/dolibarr/doli-invoice/view/metabox-action.view.php create mode 100644 modules/dolibarr/doli-invoice/view/metabox-invoice-details.view.php create mode 100644 modules/dolibarr/doli-invoice/view/metabox-invoice-products.view.php create mode 100644 modules/dolibarr/doli-invoice/view/single.view.php create mode 100644 modules/dolibarr/doli-order/action/class-doli-order-action.php create mode 100644 modules/dolibarr/doli-order/action/index.php create mode 100644 modules/dolibarr/doli-order/asset/js/order.backend.js create mode 100644 modules/dolibarr/doli-order/class/class-doli-order.php create mode 100644 modules/dolibarr/doli-order/class/index.php create mode 100644 modules/dolibarr/doli-order/doli-order.config.json create mode 100644 modules/dolibarr/doli-order/filter/class-doli-order-filter.php create mode 100644 modules/dolibarr/doli-order/filter/index.php create mode 100644 modules/dolibarr/doli-order/index.php create mode 100644 modules/dolibarr/doli-order/model/class-doli-order-model.php create mode 100644 modules/dolibarr/doli-order/model/index.php create mode 100644 modules/dolibarr/doli-order/view/index.php create mode 100644 modules/dolibarr/doli-order/view/item.view.php create mode 100644 modules/dolibarr/doli-order/view/list.view.php create mode 100644 modules/dolibarr/doli-order/view/main.view.php create mode 100644 modules/dolibarr/doli-order/view/metabox-action.view.php create mode 100644 modules/dolibarr/doli-order/view/metabox-order-details.view.php create mode 100644 modules/dolibarr/doli-order/view/metabox-order-payment.view.php create mode 100644 modules/dolibarr/doli-order/view/metabox-order-related-object.view.php create mode 100644 modules/dolibarr/doli-order/view/metabox-shipment-tracking.view.php create mode 100644 modules/dolibarr/doli-order/view/single.view.php create mode 100644 modules/dolibarr/doli-payment/class/class-doli-payment.php create mode 100644 modules/dolibarr/doli-payment/class/index.php create mode 100644 modules/dolibarr/doli-payment/doli-payment.config.json create mode 100644 modules/dolibarr/doli-payment/filter/class-doli-payment-filter.php create mode 100644 modules/dolibarr/doli-payment/filter/index.php create mode 100644 modules/dolibarr/doli-payment/index.php create mode 100644 modules/dolibarr/doli-payment/model/class-doli-payment-model.php create mode 100644 modules/dolibarr/doli-payment/model/index.php create mode 100644 modules/dolibarr/doli-products/action/class-doli-products-action.php create mode 100644 modules/dolibarr/doli-products/class/class-doli-products.php create mode 100644 modules/dolibarr/doli-products/class/index.php create mode 100644 modules/dolibarr/doli-products/doli-products.config.json create mode 100644 modules/dolibarr/doli-products/filter/class-doli-products-filter.php create mode 100644 modules/dolibarr/doli-products/index.php create mode 100644 modules/dolibarr/doli-proposals/action/class-doli-proposals-action.php create mode 100644 modules/dolibarr/doli-proposals/action/index.php create mode 100644 modules/dolibarr/doli-proposals/asset/index.php create mode 100644 modules/dolibarr/doli-proposals/asset/js/index.php create mode 100644 modules/dolibarr/doli-proposals/class/class-doli-proposals.php create mode 100644 modules/dolibarr/doli-proposals/class/index.php create mode 100644 modules/dolibarr/doli-proposals/doli-proposals.config.json create mode 100644 modules/dolibarr/doli-proposals/index.php create mode 100644 modules/dolibarr/doli-proposals/view/index.php create mode 100644 modules/dolibarr/doli-proposals/view/item.view.php create mode 100644 modules/dolibarr/doli-proposals/view/list.view.php create mode 100644 modules/dolibarr/doli-proposals/view/main.view.php create mode 100644 modules/dolibarr/doli-shipping-cost/action/class-doli-shipping-cost-action.php create mode 100644 modules/dolibarr/doli-shipping-cost/action/index.php create mode 100644 modules/dolibarr/doli-shipping-cost/doli-shipping-cost.config.json create mode 100644 modules/dolibarr/doli-shipping-cost/index.php create mode 100644 modules/dolibarr/doli-statut/class/class-doli-statut.php create mode 100644 modules/dolibarr/doli-statut/doli-statut.config.json create mode 100644 modules/dolibarr/doli-statut/view/item.view.php create mode 100644 modules/dolibarr/doli-sync/action/class-doli-sync-action.php create mode 100644 modules/dolibarr/doli-sync/action/index.php create mode 100644 modules/dolibarr/doli-sync/asset/index.php create mode 100644 modules/dolibarr/doli-sync/asset/js/doli-sync.backend.js create mode 100644 modules/dolibarr/doli-sync/asset/js/index.php create mode 100644 modules/dolibarr/doli-sync/class/class-doli-sync.php create mode 100644 modules/dolibarr/doli-sync/class/index.php create mode 100644 modules/dolibarr/doli-sync/doli-sync.config.json create mode 100644 modules/dolibarr/doli-sync/filter/class-doli-sync-filter.php create mode 100644 modules/dolibarr/doli-sync/filter/index.php create mode 100644 modules/dolibarr/doli-sync/index.php create mode 100644 modules/dolibarr/doli-sync/view/index.php create mode 100644 modules/dolibarr/doli-sync/view/main.view.php create mode 100644 modules/dolibarr/doli-sync/view/modal-sync-button.view.php create mode 100644 modules/dolibarr/doli-sync/view/sync-header.view.php create mode 100644 modules/dolibarr/doli-sync/view/sync-item.view.php create mode 100644 modules/dolibarr/doli-third-parties/action/class-doli-third-parties-action.php create mode 100644 modules/dolibarr/doli-third-parties/action/index.php create mode 100644 modules/dolibarr/doli-third-parties/class/class-doli-third-parties.php create mode 100644 modules/dolibarr/doli-third-parties/class/index.php create mode 100644 modules/dolibarr/doli-third-parties/doli-third-parties.config.json create mode 100644 modules/dolibarr/doli-third-parties/filter/class-doli-third-parties-filter.php create mode 100644 modules/dolibarr/doli-third-parties/filter/index.php create mode 100644 modules/dolibarr/doli-third-parties/index.php create mode 100644 modules/dolibarr/doli-user/action/class-doli-user-action.php create mode 100644 modules/dolibarr/doli-user/action/index.php create mode 100644 modules/dolibarr/doli-user/class/class-doli-user.php create mode 100644 modules/dolibarr/doli-user/class/index.php create mode 100644 modules/dolibarr/doli-user/doli-user.config.json create mode 100644 modules/dolibarr/doli-user/filter/class-doli-user-filter.php create mode 100644 modules/dolibarr/doli-user/index.php create mode 100644 modules/dolibarr/doli-user/view/frontend/user-alert.php create mode 100644 modules/emails/action/class-emails-action.php create mode 100644 modules/emails/action/index.php create mode 100644 modules/emails/class/class-emails.php create mode 100644 modules/emails/class/index.php create mode 100644 modules/emails/emails.config.json create mode 100644 modules/emails/index.php create mode 100644 modules/emails/view/admin-new-order.php create mode 100644 modules/emails/view/customer-completed-order.php create mode 100644 modules/emails/view/customer-delivered-order.php create mode 100644 modules/emails/view/customer-invoice.php create mode 100644 modules/emails/view/customer-new-account.php create mode 100644 modules/emails/view/customer-processing-order.php create mode 100644 modules/emails/view/frontend/index.php create mode 100644 modules/emails/view/frontend/order-details.php create mode 100644 modules/emails/view/frontend/type-payment.php create mode 100644 modules/emails/view/index.php create mode 100644 modules/health/filter/class-health-filter.php create mode 100644 modules/health/health.config.json create mode 100644 modules/index.php create mode 100644 modules/my-account/action/class-my-account-action.php create mode 100644 modules/my-account/action/index.php create mode 100644 modules/my-account/asset/index.php create mode 100644 modules/my-account/asset/my-account.frontend.js create mode 100644 modules/my-account/class/class-my-account.php create mode 100644 modules/my-account/class/index.php create mode 100644 modules/my-account/filter/class-my-account-filter.php create mode 100644 modules/my-account/index.php create mode 100644 modules/my-account/my-account.config.json create mode 100644 modules/my-account/shortcode/class-my-account-shortcode.php create mode 100644 modules/my-account/shortcode/index.php create mode 100644 modules/my-account/view/frontend/checkout-login.php create mode 100644 modules/my-account/view/frontend/form-login.php create mode 100644 modules/my-account/view/frontend/index.php create mode 100644 modules/my-account/view/frontend/login-title.php create mode 100644 modules/my-account/view/frontend/lost-password.php create mode 100644 modules/my-account/view/frontend/my-account-details.php create mode 100644 modules/my-account/view/frontend/my-account-dolibarr-proposals.php create mode 100644 modules/my-account/view/frontend/my-account-downloads.php create mode 100644 modules/my-account/view/frontend/my-account-invoices.php create mode 100644 modules/my-account/view/frontend/my-account-navigation.php create mode 100644 modules/my-account/view/frontend/my-account-orders.php create mode 100644 modules/my-account/view/frontend/my-account-proposals-dolibarr-devis.php create mode 100644 modules/my-account/view/frontend/my-account-proposals.php create mode 100644 modules/my-account/view/frontend/my-account.php create mode 100644 modules/my-account/view/index.php create mode 100644 modules/order/action/class-order-action.php create mode 100644 modules/order/order.config.json create mode 100644 modules/order/view/review-order.view.php create mode 100644 modules/pages/class/class-pages.php create mode 100644 modules/pages/class/index.php create mode 100644 modules/pages/filter/class-pages-filter.php create mode 100644 modules/pages/filter/index.php create mode 100644 modules/pages/index.php create mode 100644 modules/pages/pages.config.json create mode 100644 modules/payment/class/class-payment.php create mode 100644 modules/payment/class/index.php create mode 100644 modules/payment/index.php create mode 100644 modules/payment/payment.config.json create mode 100644 modules/paypal/action/class-paypal-action.php create mode 100644 modules/paypal/action/index.php create mode 100644 modules/paypal/class/class-paypal.php create mode 100644 modules/paypal/class/index.php create mode 100644 modules/paypal/filter/class-paypal-filter.php create mode 100644 modules/paypal/filter/index.php create mode 100644 modules/paypal/index.php create mode 100644 modules/paypal/paypal.config.json create mode 100644 modules/paypal/view/form-setting.view.php create mode 100644 modules/paypal/view/index.php create mode 100644 modules/products-downloadable/action/class-product-downloadable-action.php create mode 100644 modules/products-downloadable/class/class-product-downloadable.php create mode 100644 modules/products-downloadable/model/class-product-downloadable-model.php create mode 100644 modules/products-downloadable/products-downloadable.config.json create mode 100644 modules/products/action/class-product-action.php create mode 100644 modules/products/action/index.php create mode 100644 modules/products/asset/index.php create mode 100644 modules/products/asset/js/index.php create mode 100644 modules/products/asset/js/product.backend.js create mode 100644 modules/products/asset/js/product.frontend.js create mode 100644 modules/products/class/class-product.php create mode 100644 modules/products/class/index.php create mode 100644 modules/products/filter/class-product-filter.php create mode 100644 modules/products/filter/index.php create mode 100644 modules/products/index.php create mode 100644 modules/products/model/class-product-model.php create mode 100644 modules/products/model/index.php create mode 100644 modules/products/products.config.json create mode 100644 modules/products/shortcode/class-products-shortcode.php create mode 100644 modules/products/view/frontend/index.php create mode 100644 modules/products/view/frontend/list-wps-product.php create mode 100644 modules/products/view/frontend/wps-product-grid-container.php create mode 100644 modules/products/view/frontend/wps-product-grid.php create mode 100644 modules/products/view/frontend/wps-product-list-edit.php create mode 100644 modules/products/view/frontend/wps-product-list.php create mode 100644 modules/products/view/frontend/wps-product-single.php create mode 100644 modules/products/view/frontend/wps-product-stock.php create mode 100644 modules/products/view/frontend/wps-product-taxonomy-container.php create mode 100644 modules/products/view/frontend/wps-product-taxonomy.php create mode 100644 modules/products/view/index.php create mode 100644 modules/products/view/item-edit.view.php create mode 100644 modules/products/view/item.view.php create mode 100644 modules/products/view/list.view.php create mode 100644 modules/products/view/main.view.php create mode 100644 modules/products/view/metabox/index.php create mode 100644 modules/products/view/metabox/main.view.php create mode 100644 modules/proposals/action/class-proposals-action.php create mode 100644 modules/proposals/class/class-proposals.php create mode 100644 modules/proposals/class/index.php create mode 100644 modules/proposals/filter/class-proposals-filter.php create mode 100644 modules/proposals/filter/index.php create mode 100644 modules/proposals/index.php create mode 100644 modules/proposals/model/class-proposals-model.php create mode 100644 modules/proposals/model/index.php create mode 100644 modules/proposals/proposals.config.json create mode 100644 modules/proposals/view/index.php create mode 100644 modules/proposals/view/item.view.php create mode 100644 modules/proposals/view/list.view.php create mode 100644 modules/proposals/view/main.view.php create mode 100644 modules/proposals/view/metabox-action.view.php create mode 100644 modules/proposals/view/metabox-proposal-address.view.php create mode 100644 modules/proposals/view/metabox-proposal-details.view.php create mode 100644 modules/proposals/view/metabox-proposal-products.view.php create mode 100644 modules/proposals/view/single.view.php create mode 100644 modules/search/action/class-search-action.php create mode 100644 modules/search/search.config.json create mode 100644 modules/search/view/search-field.view.php create mode 100644 modules/search/widget/class-search-widget.php create mode 100644 modules/settings/action/class-settings-action.php create mode 100644 modules/settings/action/index.php create mode 100644 modules/settings/asset/js/settings.backend.js create mode 100644 modules/settings/class/class-settings.php create mode 100644 modules/settings/class/index.php create mode 100644 modules/settings/index.php create mode 100644 modules/settings/settings.config.json create mode 100644 modules/settings/view/delivery-method.view.php create mode 100644 modules/settings/view/email-single.view.php create mode 100644 modules/settings/view/emails.view.php create mode 100644 modules/settings/view/erp.view.php create mode 100644 modules/settings/view/general.view.php create mode 100644 modules/settings/view/index.php create mode 100644 modules/settings/view/main.view.php create mode 100644 modules/settings/view/notice-activate-erp.view.php create mode 100644 modules/settings/view/notice-error-erp.view.php create mode 100644 modules/settings/view/pages.view.php create mode 100644 modules/settings/view/payment-method-single.view.php create mode 100644 modules/settings/view/payment-method.view.php create mode 100644 modules/settings/view/shipping-cost.view.php create mode 100644 modules/stripe/action/class-stripe-action.php create mode 100644 modules/stripe/asset/stripe.frontend.js create mode 100644 modules/stripe/class/class-stripe.php create mode 100644 modules/stripe/filter/class-stripe-filter.php create mode 100644 modules/stripe/stripe.config.json create mode 100644 modules/stripe/view/form-setting.view.php create mode 100644 modules/third-parties/action/class-third-party-action.php create mode 100644 modules/third-parties/action/index.php create mode 100644 modules/third-parties/asset/index.php create mode 100644 modules/third-parties/asset/third-parties.backend.js create mode 100644 modules/third-parties/class/class-third-party.php create mode 100644 modules/third-parties/class/index.php create mode 100644 modules/third-parties/filter/class-third-party-filter.php create mode 100644 modules/third-parties/filter/index.php create mode 100644 modules/third-parties/index.php create mode 100644 modules/third-parties/model/class-third-party-model.php create mode 100644 modules/third-parties/model/index.php create mode 100644 modules/third-parties/third-parties.config.json create mode 100644 modules/third-parties/view/commercial.view.php create mode 100644 modules/third-parties/view/index.php create mode 100644 modules/third-parties/view/item.view.php create mode 100644 modules/third-parties/view/list.view.php create mode 100644 modules/third-parties/view/main.view.php create mode 100644 modules/third-parties/view/metaboxes/index.php create mode 100644 modules/third-parties/view/metaboxes/metabox-activities.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-activity.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-billing-address-edit.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-billing-address.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-contacts-edit.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-contacts-item.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-contacts.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-dolibarr-proposals.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-indicator.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-informations.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-invoices.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-orders.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-proposals.view.php create mode 100644 modules/third-parties/view/metaboxes/metabox-task.view.php create mode 100644 modules/third-parties/view/single-title-edit.view.php create mode 100644 modules/third-parties/view/single-title.view.php create mode 100644 modules/third-parties/view/single.view.php create mode 100644 modules/tools/action/class-tools-action.php create mode 100644 modules/tools/action/index.php create mode 100644 modules/tools/asset/tools.backend.js create mode 100644 modules/tools/class/class-tools.php create mode 100644 modules/tools/class/index.php create mode 100644 modules/tools/index.php create mode 100644 modules/tools/tools.config.json create mode 100644 modules/tools/view/general.view.php create mode 100644 modules/tools/view/index.php create mode 100644 modules/tools/view/main.view.php create mode 100644 modules/transfert-data/action/class-transfert-data-action.php create mode 100644 modules/transfert-data/action/index.php create mode 100644 modules/transfert-data/asset/index.php create mode 100644 modules/transfert-data/asset/js/index.php create mode 100644 modules/transfert-data/asset/js/transfert-data.backend.js create mode 100644 modules/transfert-data/index.php create mode 100644 modules/transfert-data/transfert-data.config.json create mode 100644 modules/transfert-data/view/index.php create mode 100644 modules/transfert-data/view/main.view.php create mode 100644 modules/user/class/class-user.php create mode 100644 modules/user/class/index.php create mode 100644 modules/user/filter/class-user-filter.php create mode 100644 modules/user/index.php create mode 100644 modules/user/model/class-user-model.php create mode 100644 modules/user/model/index.php create mode 100644 modules/user/user.config.json create mode 100644 modules/user/view/index.php create mode 100644 modules/user/view/item.view.php create mode 100644 modules/user/view/list.view.php create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpcs.xml create mode 100644 tests/bin/travis.sh create mode 100644 vendor/autoload.php create mode 100644 vendor/bin/phpunit create mode 100644 vendor/bin/phpunit.bat create mode 100644 vendor/composer/ClassLoader.php create mode 100644 vendor/composer/LICENSE create mode 100644 vendor/composer/autoload_classmap.php create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/autoload_namespaces.php create mode 100644 vendor/composer/autoload_psr4.php create mode 100644 vendor/composer/autoload_real.php create mode 100644 vendor/composer/autoload_static.php create mode 100644 vendor/composer/installed.json create mode 100644 vendor/composer/installers/LICENSE create mode 100644 vendor/composer/installers/composer.json create mode 100644 vendor/composer/installers/src/Composer/Installers/AglInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/BaseInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ChefInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CraftInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ElggInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/FuelInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/GravInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/HuradInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/Installer.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ItopInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MakoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MauticInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MayaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ModxInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/OxidInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PPIInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/Plugin.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PortoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/SMFInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php create mode 100644 vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/TuskInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/YawikInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ZendInstaller.php create mode 100644 vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php create mode 100644 vendor/composer/installers/src/bootstrap.php create mode 100644 vendor/doctrine/instantiator/.gitignore create mode 100644 vendor/doctrine/instantiator/.scrutinizer.yml create mode 100644 vendor/doctrine/instantiator/.travis.install.sh create mode 100644 vendor/doctrine/instantiator/.travis.yml create mode 100644 vendor/doctrine/instantiator/CONTRIBUTING.md create mode 100644 vendor/doctrine/instantiator/LICENSE create mode 100644 vendor/doctrine/instantiator/README.md create mode 100644 vendor/doctrine/instantiator/composer.json create mode 100644 vendor/doctrine/instantiator/phpmd.xml.dist create mode 100644 vendor/doctrine/instantiator/phpunit.xml.dist create mode 100644 vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php create mode 100644 vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php create mode 100644 vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php create mode 100644 vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php create mode 100644 vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php create mode 100644 vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php create mode 100644 vendor/myclabs/deep-copy/.gitattributes create mode 100644 vendor/myclabs/deep-copy/.gitignore create mode 100644 vendor/myclabs/deep-copy/.travis.yml create mode 100644 vendor/myclabs/deep-copy/LICENSE create mode 100644 vendor/myclabs/deep-copy/README.md create mode 100644 vendor/myclabs/deep-copy/composer.json create mode 100644 vendor/myclabs/deep-copy/doc/clone.png create mode 100644 vendor/myclabs/deep-copy/doc/deep-clone.png create mode 100644 vendor/myclabs/deep-copy/doc/deep-copy.png create mode 100644 vendor/myclabs/deep-copy/doc/graph.png create mode 100644 vendor/myclabs/deep-copy/fixtures/f001/A.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f001/B.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f002/A.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f003/Foo.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f004/UnclonableItem.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f005/Foo.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f006/A.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f006/B.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f007/FooDateInterval.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f007/FooDateTimeZone.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f008/A.php create mode 100644 vendor/myclabs/deep-copy/fixtures/f008/B.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php create mode 100644 vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php create mode 100644 vendor/phar-io/manifest/.gitignore create mode 100644 vendor/phar-io/manifest/.php_cs create mode 100644 vendor/phar-io/manifest/.travis.yml create mode 100644 vendor/phar-io/manifest/LICENSE create mode 100644 vendor/phar-io/manifest/README.md create mode 100644 vendor/phar-io/manifest/build.xml create mode 100644 vendor/phar-io/manifest/composer.json create mode 100644 vendor/phar-io/manifest/examples/example-01.php create mode 100644 vendor/phar-io/manifest/phive.xml create mode 100644 vendor/phar-io/manifest/phpunit.xml create mode 100644 vendor/phar-io/manifest/src/ManifestDocumentMapper.php create mode 100644 vendor/phar-io/manifest/src/ManifestLoader.php create mode 100644 vendor/phar-io/manifest/src/ManifestSerializer.php create mode 100644 vendor/phar-io/manifest/src/exceptions/Exception.php create mode 100644 vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/ManifestElementException.php create mode 100644 vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php create mode 100644 vendor/phar-io/manifest/src/values/Application.php create mode 100644 vendor/phar-io/manifest/src/values/ApplicationName.php create mode 100644 vendor/phar-io/manifest/src/values/Author.php create mode 100644 vendor/phar-io/manifest/src/values/AuthorCollection.php create mode 100644 vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php create mode 100644 vendor/phar-io/manifest/src/values/BundledComponent.php create mode 100644 vendor/phar-io/manifest/src/values/BundledComponentCollection.php create mode 100644 vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php create mode 100644 vendor/phar-io/manifest/src/values/CopyrightInformation.php create mode 100644 vendor/phar-io/manifest/src/values/Email.php create mode 100644 vendor/phar-io/manifest/src/values/Extension.php create mode 100644 vendor/phar-io/manifest/src/values/Library.php create mode 100644 vendor/phar-io/manifest/src/values/License.php create mode 100644 vendor/phar-io/manifest/src/values/Manifest.php create mode 100644 vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php create mode 100644 vendor/phar-io/manifest/src/values/PhpVersionRequirement.php create mode 100644 vendor/phar-io/manifest/src/values/Requirement.php create mode 100644 vendor/phar-io/manifest/src/values/RequirementCollection.php create mode 100644 vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php create mode 100644 vendor/phar-io/manifest/src/values/Type.php create mode 100644 vendor/phar-io/manifest/src/values/Url.php create mode 100644 vendor/phar-io/manifest/src/xml/AuthorElement.php create mode 100644 vendor/phar-io/manifest/src/xml/AuthorElementCollection.php create mode 100644 vendor/phar-io/manifest/src/xml/BundlesElement.php create mode 100644 vendor/phar-io/manifest/src/xml/ComponentElement.php create mode 100644 vendor/phar-io/manifest/src/xml/ComponentElementCollection.php create mode 100644 vendor/phar-io/manifest/src/xml/ContainsElement.php create mode 100644 vendor/phar-io/manifest/src/xml/CopyrightElement.php create mode 100644 vendor/phar-io/manifest/src/xml/ElementCollection.php create mode 100644 vendor/phar-io/manifest/src/xml/ExtElement.php create mode 100644 vendor/phar-io/manifest/src/xml/ExtElementCollection.php create mode 100644 vendor/phar-io/manifest/src/xml/ExtensionElement.php create mode 100644 vendor/phar-io/manifest/src/xml/LicenseElement.php create mode 100644 vendor/phar-io/manifest/src/xml/ManifestDocument.php create mode 100644 vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php create mode 100644 vendor/phar-io/manifest/src/xml/ManifestElement.php create mode 100644 vendor/phar-io/manifest/src/xml/PhpElement.php create mode 100644 vendor/phar-io/manifest/src/xml/RequiresElement.php create mode 100644 vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php create mode 100644 vendor/phar-io/manifest/tests/ManifestLoaderTest.php create mode 100644 vendor/phar-io/manifest/tests/ManifestSerializerTest.php create mode 100644 vendor/phar-io/manifest/tests/_fixture/custom.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/extension.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/invalidversion.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/library.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/manifest.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml create mode 100644 vendor/phar-io/manifest/tests/_fixture/test.phar create mode 100644 vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php create mode 100644 vendor/phar-io/manifest/tests/values/ApplicationNameTest.php create mode 100644 vendor/phar-io/manifest/tests/values/ApplicationTest.php create mode 100644 vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/values/AuthorTest.php create mode 100644 vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/values/BundledComponentTest.php create mode 100644 vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php create mode 100644 vendor/phar-io/manifest/tests/values/EmailTest.php create mode 100644 vendor/phar-io/manifest/tests/values/ExtensionTest.php create mode 100644 vendor/phar-io/manifest/tests/values/LibraryTest.php create mode 100644 vendor/phar-io/manifest/tests/values/LicenseTest.php create mode 100644 vendor/phar-io/manifest/tests/values/ManifestTest.php create mode 100644 vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php create mode 100644 vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php create mode 100644 vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/values/UrlTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/AuthorElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/BundlesElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ComponentElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ContainsElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ExtElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/LicenseElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/PhpElementTest.php create mode 100644 vendor/phar-io/manifest/tests/xml/RequiresElementTest.php create mode 100644 vendor/phar-io/version/.gitignore create mode 100644 vendor/phar-io/version/.php_cs create mode 100644 vendor/phar-io/version/.travis.yml create mode 100644 vendor/phar-io/version/LICENSE create mode 100644 vendor/phar-io/version/README.md create mode 100644 vendor/phar-io/version/build.xml create mode 100644 vendor/phar-io/version/composer.json create mode 100644 vendor/phar-io/version/phive.xml create mode 100644 vendor/phar-io/version/phpunit.xml create mode 100644 vendor/phar-io/version/src/AbstractVersionConstraint.php create mode 100644 vendor/phar-io/version/src/AndVersionConstraintGroup.php create mode 100644 vendor/phar-io/version/src/AnyVersionConstraint.php create mode 100644 vendor/phar-io/version/src/ExactVersionConstraint.php create mode 100644 vendor/phar-io/version/src/Exception.php create mode 100644 vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php create mode 100644 vendor/phar-io/version/src/InvalidVersionException.php create mode 100644 vendor/phar-io/version/src/OrVersionConstraintGroup.php create mode 100644 vendor/phar-io/version/src/PreReleaseSuffix.php create mode 100644 vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php create mode 100644 vendor/phar-io/version/src/SpecificMajorVersionConstraint.php create mode 100644 vendor/phar-io/version/src/UnsupportedVersionConstraintException.php create mode 100644 vendor/phar-io/version/src/Version.php create mode 100644 vendor/phar-io/version/src/VersionConstraint.php create mode 100644 vendor/phar-io/version/src/VersionConstraintParser.php create mode 100644 vendor/phar-io/version/src/VersionConstraintValue.php create mode 100644 vendor/phar-io/version/src/VersionNumber.php create mode 100644 vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php create mode 100644 vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php create mode 100644 vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php create mode 100644 vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php create mode 100644 vendor/phar-io/version/tests/Unit/VersionTest.php create mode 100644 vendor/phpdocumentor/reflection-common/.travis.yml create mode 100644 vendor/phpdocumentor/reflection-common/LICENSE create mode 100644 vendor/phpdocumentor/reflection-common/README.md create mode 100644 vendor/phpdocumentor/reflection-common/composer.json create mode 100644 vendor/phpdocumentor/reflection-common/src/Element.php create mode 100644 vendor/phpdocumentor/reflection-common/src/File.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Fqsen.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Location.php create mode 100644 vendor/phpdocumentor/reflection-common/src/Project.php create mode 100644 vendor/phpdocumentor/reflection-common/src/ProjectFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/.coveralls.yml create mode 100644 vendor/phpdocumentor/reflection-docblock/LICENSE create mode 100644 vendor/phpdocumentor/reflection-docblock/README.md create mode 100644 vendor/phpdocumentor/reflection-docblock/composer.json create mode 100644 vendor/phpdocumentor/reflection-docblock/easy-coding-standard.neon create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/Strategy.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php create mode 100644 vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php create mode 100644 vendor/phpdocumentor/type-resolver/LICENSE create mode 100644 vendor/phpdocumentor/type-resolver/README.md create mode 100644 vendor/phpdocumentor/type-resolver/composer.json create mode 100644 vendor/phpdocumentor/type-resolver/src/FqsenResolver.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Type.php create mode 100644 vendor/phpdocumentor/type-resolver/src/TypeResolver.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Array_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Boolean.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Callable_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Compound.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Context.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Float_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Integer.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Null_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Nullable.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Object_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Parent_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Resource_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Scalar.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Self_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Static_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/String_.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/This.php create mode 100644 vendor/phpdocumentor/type-resolver/src/Types/Void_.php create mode 100644 vendor/phpspec/prophecy/CHANGES.md create mode 100644 vendor/phpspec/prophecy/LICENSE create mode 100644 vendor/phpspec/prophecy/README.md create mode 100644 vendor/phpspec/prophecy/composer.json create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Call/Call.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Prophet.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php create mode 100644 vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php create mode 100644 vendor/phpunit/php-code-coverage/.gitattributes create mode 100644 vendor/phpunit/php-code-coverage/.github/CONTRIBUTING.md create mode 100644 vendor/phpunit/php-code-coverage/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/phpunit/php-code-coverage/.gitignore create mode 100644 vendor/phpunit/php-code-coverage/.php_cs create mode 100644 vendor/phpunit/php-code-coverage/.travis.yml create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-2.2.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.0.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.1.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.2.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-3.3.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-4.0.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-5.0.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-5.1.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-5.2.md create mode 100644 vendor/phpunit/php-code-coverage/ChangeLog-5.3.md create mode 100644 vendor/phpunit/php-code-coverage/LICENSE create mode 100644 vendor/phpunit/php-code-coverage/README.md create mode 100644 vendor/phpunit/php-code-coverage/build.xml create mode 100644 vendor/phpunit/php-code-coverage/composer.json create mode 100644 vendor/phpunit/php-code-coverage/phpunit.xml create mode 100644 vendor/phpunit/php-code-coverage/src/CodeCoverage.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Driver.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/HHVM.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/PHPDBG.php create mode 100644 vendor/phpunit/php-code-coverage/src/Driver/Xdebug.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/Exception.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/RuntimeException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php create mode 100644 vendor/phpunit/php-code-coverage/src/Filter.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Builder.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Directory.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/File.php create mode 100644 vendor/phpunit/php-code-coverage/src/Node/Iterator.php create mode 100644 vendor/phpunit/php-code-coverage/src/Util.php create mode 100644 vendor/phpunit/php-code-coverage/src/Version.php create mode 100644 vendor/phpunit/php-code-coverage/tests/TestCase.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccount.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/BankAccountTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassExtendedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageFunctionTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodOneLineAnnotationTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageMethodTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNoneTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNotPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageNothingTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveragePublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoverageTwoDefaultClassAnnotations.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredClass.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/CoveredFunction.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassExtendedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageCoversClassTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageMethodTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageNotPublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePrivateTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoverageProtectedTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveragePublicTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NamespaceCoveredClass.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/NotExistingCoveredElementTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/class-with-anonymous-function-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-clover.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-crap4j.xml create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/ignored-lines-text.txt create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_class_and_anonymous_function.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_ignore.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_namespace.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_with_oneline_annotations.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_ignore.php create mode 100644 vendor/phpunit/php-code-coverage/tests/_files/source_without_namespace.php create mode 100644 vendor/phpunit/php-code-coverage/tests/bootstrap.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/BuilderTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CloverTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/CodeCoverageTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/Crap4jTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/FilterTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/HTMLTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/TextTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/UtilTest.php create mode 100644 vendor/phpunit/php-code-coverage/tests/tests/XMLTest.php create mode 100644 vendor/phpunit/php-file-iterator/.gitattributes create mode 100644 vendor/phpunit/php-file-iterator/.gitignore create mode 100644 vendor/phpunit/php-file-iterator/ChangeLog.md create mode 100644 vendor/phpunit/php-file-iterator/LICENSE create mode 100644 vendor/phpunit/php-file-iterator/README.md create mode 100644 vendor/phpunit/php-file-iterator/composer.json create mode 100644 vendor/phpunit/php-file-iterator/src/Facade.php create mode 100644 vendor/phpunit/php-file-iterator/src/Factory.php create mode 100644 vendor/phpunit/php-file-iterator/src/Iterator.php create mode 100644 vendor/phpunit/php-text-template/.gitattributes create mode 100644 vendor/phpunit/php-text-template/.gitignore create mode 100644 vendor/phpunit/php-text-template/LICENSE create mode 100644 vendor/phpunit/php-text-template/README.md create mode 100644 vendor/phpunit/php-text-template/composer.json create mode 100644 vendor/phpunit/php-text-template/src/Template.php create mode 100644 vendor/phpunit/php-timer/.gitattributes create mode 100644 vendor/phpunit/php-timer/.gitignore create mode 100644 vendor/phpunit/php-timer/.travis.yml create mode 100644 vendor/phpunit/php-timer/LICENSE create mode 100644 vendor/phpunit/php-timer/README.md create mode 100644 vendor/phpunit/php-timer/composer.json create mode 100644 vendor/phpunit/php-timer/phpunit.xml create mode 100644 vendor/phpunit/php-timer/src/Timer.php create mode 100644 vendor/phpunit/php-timer/tests/TimerTest.php create mode 100644 vendor/phpunit/php-token-stream/.gitattributes create mode 100644 vendor/phpunit/php-token-stream/.gitignore create mode 100644 vendor/phpunit/php-token-stream/.travis.yml create mode 100644 vendor/phpunit/php-token-stream/ChangeLog.md create mode 100644 vendor/phpunit/php-token-stream/LICENSE create mode 100644 vendor/phpunit/php-token-stream/README.md create mode 100644 vendor/phpunit/php-token-stream/build.xml create mode 100644 vendor/phpunit/php-token-stream/composer.json create mode 100644 vendor/phpunit/php-token-stream/phpunit.xml create mode 100644 vendor/phpunit/php-token-stream/src/Token.php create mode 100644 vendor/phpunit/php-token-stream/src/Token/Stream.php create mode 100644 vendor/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/ClassTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/ClosureTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/FunctionTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/IncludeTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/InterfaceTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/Token/NamespaceTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/TokenTest.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classExtendsNamespacedClass.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classInNamespace.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classInScopedNamespace.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/classUsesNamespacedFunction.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_named_empty.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_method_that_declares_anonymous_class2.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/class_with_multiple_anonymous_classes_and_functions.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/closure.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/issue19.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/issue30.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/multipleNamespacesWithOneClassUsingBraces.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/multipleNamespacesWithOneClassUsingNonBraceSyntax.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/php-code-coverage-issue-424.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source2.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source3.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source4.php create mode 100644 vendor/phpunit/php-token-stream/tests/_fixture/source5.php create mode 100644 vendor/phpunit/php-token-stream/tests/bootstrap.php create mode 100644 vendor/phpunit/phpunit-mock-objects/.gitattributes create mode 100644 vendor/phpunit/phpunit-mock-objects/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/phpunit/phpunit-mock-objects/.gitignore create mode 100644 vendor/phpunit/phpunit-mock-objects/.php_cs create mode 100644 vendor/phpunit/phpunit-mock-objects/.travis.yml create mode 100644 vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md create mode 100644 vendor/phpunit/phpunit-mock-objects/LICENSE create mode 100644 vendor/phpunit/phpunit-mock-objects/README.md create mode 100644 vendor/phpunit/phpunit-mock-objects/build.xml create mode 100644 vendor/phpunit/phpunit-mock-objects/composer.json create mode 100644 vendor/phpunit/phpunit-mock-objects/phpunit.xml create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/Identity.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/Match.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Builder/Stub.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Exception/Exception.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/deprecation.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_class_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_clone.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_method_void.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/mocked_static_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/proxied_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/proxied_method_void.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/trait_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/unmocked_clone.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/wsdl_class.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Generator/wsdl_method.tpl.dist create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/InvocationMocker.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Invokable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/MockBuilder.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/MockObject.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/Exception.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php create mode 100644 vendor/phpunit/phpunit-mock-objects/src/Verifiable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Builder/InvocationMockerTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/232.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/3154_namespaced_constant_resolving.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/397.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/abstract_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_dont_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_implementing_interface_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_with_deprecated_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_with_method_named_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_with_method_with_nullable_typehinted_variadic_arguments.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_with_method_with_typehinted_variadic_arguments.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/class_with_method_with_variadic_arguments.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/constant_as_parameter_default_value.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/interface.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/invocation_object_clone_object.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_dont_call_parent_clone.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_implementing_interface_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/namespaced_interface.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/nonexistent_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/nonexistent_class_with_namespace.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/nonexistent_class_with_namespace_starting_with_separator.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/nullable_types.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/proxy.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_closure.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_final.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_generator.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_nullable.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_object_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_self.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_static_method.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/return_type_declarations_void.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/scalar_type_declarations.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/wsdl_class.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/wsdl_class_namespace.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Generator/wsdl_class_partial.phpt create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Invocation/ObjectInvocationTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Invocation/StaticInvocationTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/Matcher/ConsecutiveParametersTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockBuilderTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/MockObjectTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/ProxyObjectTest.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AbstractTrait.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnInterfaceWithReturnType.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/AnotherInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Bar.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassThatImplementsSerializable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithAllPossibleReturnTypes.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithSelfTypeHint.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/ClassWithStaticMethod.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Foo.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/FunctionCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Go ogle-Sea.rch.wsdl create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/GoogleSearch.wsdl create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithSemiReservedMethodName.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/InterfaceWithStaticMethod.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallback.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MethodCallbackByReference.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/MockTestInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/Mockable.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/PartialMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/SingletonClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/SomeClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/StaticMockTestClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/StringableClass.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/_fixture/TraversableMockTestInterface.php create mode 100644 vendor/phpunit/phpunit-mock-objects/tests/bootstrap.php create mode 100644 vendor/phpunit/phpunit/.editorconfig create mode 100644 vendor/phpunit/phpunit/.gitattributes create mode 100644 vendor/phpunit/phpunit/.github/CODE_OF_CONDUCT.md create mode 100644 vendor/phpunit/phpunit/.github/CONTRIBUTING.md create mode 100644 vendor/phpunit/phpunit/.github/ISSUE_TEMPLATE.md create mode 100644 vendor/phpunit/phpunit/.gitignore create mode 100644 vendor/phpunit/phpunit/.php_cs.dist create mode 100644 vendor/phpunit/phpunit/.travis.yml create mode 100644 vendor/phpunit/phpunit/ChangeLog-6.5.md create mode 100644 vendor/phpunit/phpunit/LICENSE create mode 100644 vendor/phpunit/phpunit/README.md create mode 100644 vendor/phpunit/phpunit/appveyor.yml create mode 100644 vendor/phpunit/phpunit/build.xml create mode 100644 vendor/phpunit/phpunit/composer.json create mode 100644 vendor/phpunit/phpunit/phive.xml create mode 100644 vendor/phpunit/phpunit/phpunit create mode 100644 vendor/phpunit/phpunit/phpunit.xml create mode 100644 vendor/phpunit/phpunit/phpunit.xsd create mode 100644 vendor/phpunit/phpunit/src/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Assert.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Assert/Functions.php create mode 100644 vendor/phpunit/phpunit/src/Framework/AssertionFailedError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/BaseTestListener.php create mode 100644 vendor/phpunit/phpunit/src/Framework/CodeCoverageException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Attribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Composite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Count.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/FileExists.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsEqual.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsFalse.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsFinite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsJson.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsNan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsNull.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsReadable.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsTrue.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsType.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/IsWritable.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LessThan.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/SameSize.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringContains.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php create mode 100644 vendor/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Error.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Notice.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Error/Warning.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php create mode 100644 vendor/phpunit/phpunit/src/Framework/ExpectationFailedException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/IncompleteTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php create mode 100644 vendor/phpunit/phpunit/src/Framework/OutputError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/RiskyTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/RiskyTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SelfDescribing.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTest.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/SyntheticError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Test.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestCase.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestFailure.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestListener.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestResult.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestSuite.php create mode 100644 vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php create mode 100644 vendor/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php create mode 100644 vendor/phpunit/phpunit/src/Framework/Warning.php create mode 100644 vendor/phpunit/phpunit/src/Framework/WarningTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Exception.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/Factory.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php create mode 100644 vendor/phpunit/phpunit/src/Runner/PhptTestCase.php create mode 100644 vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php create mode 100644 vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php create mode 100644 vendor/phpunit/phpunit/src/Runner/Version.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/Command.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/TextUI/TestRunner.php create mode 100644 vendor/phpunit/phpunit/src/Util/Blacklist.php create mode 100644 vendor/phpunit/phpunit/src/Util/Configuration.php create mode 100644 vendor/phpunit/phpunit/src/Util/ConfigurationGenerator.php create mode 100644 vendor/phpunit/phpunit/src/Util/ErrorHandler.php create mode 100644 vendor/phpunit/phpunit/src/Util/Fileloader.php create mode 100644 vendor/phpunit/phpunit/src/Util/Filesystem.php create mode 100644 vendor/phpunit/phpunit/src/Util/Filter.php create mode 100644 vendor/phpunit/phpunit/src/Util/Getopt.php create mode 100644 vendor/phpunit/phpunit/src/Util/GlobalState.php create mode 100644 vendor/phpunit/phpunit/src/Util/InvalidArgumentHelper.php create mode 100644 vendor/phpunit/phpunit/src/Util/Json.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/JUnit.php create mode 100644 vendor/phpunit/phpunit/src/Util/Log/TeamCity.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl.dist create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl.dist create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl.dist create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php create mode 100644 vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php create mode 100644 vendor/phpunit/phpunit/src/Util/Printer.php create mode 100644 vendor/phpunit/phpunit/src/Util/RegularExpression.php create mode 100644 vendor/phpunit/phpunit/src/Util/Test.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php create mode 100644 vendor/phpunit/phpunit/src/Util/TextTestListRenderer.php create mode 100644 vendor/phpunit/phpunit/src/Util/Type.php create mode 100644 vendor/phpunit/phpunit/src/Util/Xml.php create mode 100644 vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AbstractTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ArrayAccessible.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AssertionExample.php create mode 100644 vendor/phpunit/phpunit/tests/_files/AssertionExampleTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Author.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccount.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest.test.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BankAccountTest2.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BaseTestListenerSample.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeAndAfterTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeClassAndAfterClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/BeforeClassWithOnlyDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Book.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Calculator.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ChangeCurrentWorkingDirectoryTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithNonPublicAttributes.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithScalarTypeDeclarations.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClassWithToString.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ClonedDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ConcreteTest.my.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ConcreteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CountConstraint.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageClassExtendedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionParenthesesTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageFunctionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodOneLineAnnotationTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodParenthesesTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodParenthesesWhitespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageMethodTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNamespacedFunctionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNoneTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotPrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNotPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageNothingTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveragePrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveragePublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoverageTwoDefaultClassAnnotations.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveredClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CoveredFunction.php create mode 100644 vendor/phpunit/phpunit/tests/_files/CustomPrinter.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderDebugTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderFilterTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIncompleteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2833/FirstTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2833/SecondTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2859/phpunit.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2859/tests/another/TestWithDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2922/FirstTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderIssue2922/SecondTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderSkippedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DataProviderTestDoxTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencyFailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencySuccessTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DependencyTestSuite.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DoubleTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DummyBarTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DummyException.php create mode 100644 vendor/phpunit/phpunit/tests/_files/DummyFooTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/EmptyTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInAssertPostConditionsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInAssertPreConditionsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInSetUpTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInTearDownTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionInTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionNamespaceTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionStackTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ExceptionTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Failure.php create mode 100644 vendor/phpunit/phpunit/tests/_files/FailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/FalsyConstraint.php create mode 100644 vendor/phpunit/phpunit/tests/_files/FatalTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IgnoreCodeCoverageClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IgnoreCodeCoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IncompleteTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Inheritance/InheritanceA.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Inheritance/InheritanceB.php create mode 100644 vendor/phpunit/phpunit/tests/_files/InheritedTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IniTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/IsolationTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/JsonData/arrayObject.json create mode 100644 vendor/phpunit/phpunit/tests/_files/JsonData/simpleObject.json create mode 100644 vendor/phpunit/phpunit/tests/_files/MockRunner.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Mockable.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MultiDependencyTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MultipleDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/MyCommand.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamedConstraint.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageClassExtendedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageCoversClassPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageCoversClassTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageMethodTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotPrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageNotPublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveragePrivateTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoverageProtectedTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveragePublicTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveredClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NamespaceCoveredFunction.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoArgTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoTestCaseClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NoTestCases.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NonStatic.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotExistingCoveredElementTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotPublicTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NotVoidTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/NothingTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OneTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OutputTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/OverrideTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ParseTestMethodAnnotationsMock.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsClassBeforeClassHookTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsClassDocBlockTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/RequirementsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/SampleArrayAccess.php create mode 100644 vendor/phpunit/phpunit/tests/_files/SampleClass.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Singleton.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StackTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StatusTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StopOnWarningTestSuite.php create mode 100644 vendor/phpunit/phpunit/tests/_files/StopsOnWarningTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Struct.php create mode 100644 vendor/phpunit/phpunit/tests/_files/Success.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TemplateMethodsTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestAutoreferenced.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestDoxGroupTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestGeneratorMaker.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIncomplete.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIterator.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIterator2.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIteratorAggregate.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestIteratorAggregate2.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestSkipped.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestTestError.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TestWithTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ThrowExceptionTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/ThrowNoExceptionTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/_files/TruthyConstraint.php create mode 100644 vendor/phpunit/phpunit/tests/_files/VariousIterableDataProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/WasRun.php create mode 100644 vendor/phpunit/phpunit/tests/_files/WrapperIteratorAggregate.php create mode 100644 vendor/phpunit/phpunit/tests/_files/bar.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.empty.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.false.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.invalid.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.colors.true.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.custom-printer.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.defaulttestsuite.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.one-file-suite.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.suites.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_empty.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_stop_on_warning.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/configuration_xinclude.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/expectedFileFormat.txt create mode 100644 vendor/phpunit/phpunit/tests/_files/foo.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/phpt-for-coverage.phpt create mode 100644 vendor/phpunit/phpunit/tests/_files/phpt-xfail.phpt create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/phpunit.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/tests/OneTest.php create mode 100644 vendor/phpunit/phpunit/tests/_files/phpunit-example-extension/tools/phpunit.d/phpunit-example-extension-1.0.1.phar create mode 100644 vendor/phpunit/phpunit/tests/_files/structureAttributesAreSameButValuesAreNot.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureExpected.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureIgnoreTextNodes.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureIsSameButDataIsNot.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureWrongNumberOfAttributes.xml create mode 100644 vendor/phpunit/phpunit/tests/_files/structureWrongNumberOfNodes.xml create mode 100644 vendor/phpunit/phpunit/tests/bootstrap.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/_files/expect_external.txt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/_files/phpt-env.expected.txt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/_files/phpt_external.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/abstract-test-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/assertion.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/code-coverage-ignore.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/code-coverage-phpt.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/colors-always.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/concrete-test-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/custom-printer-debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/custom-printer-verbose.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-issue-2833.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-issue-2859.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-issue-2922.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-log-xml-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-log-xml.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dataprovider-testdox.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/debug.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/default-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/default.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/defaulttestsuite-using-testsuite.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/defaulttestsuite.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies-clone.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies2-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies2.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies3-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/dependencies3.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/disable-code-coverage-ignore.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/empty-testcase.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/exception-stack.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/exclude-group-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/exclude-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/failure-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/failure-reverse-list.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/failure.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/fatal-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-class-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-class.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-classname-and-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-classname-and-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-number-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-number.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-regexp-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-regexp.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-string-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-only-string.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-range-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-range.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-regexp-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-regexp.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-string-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-dataprovider-by-string.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-method-case-insensitive.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-method-case-sensitive-no-result.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-method-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-method.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/filter-no-results.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/forward-compatibility.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/group-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/group.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/help.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/help2.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/ini-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/list-groups.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/list-suites.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/list-tests-dataprovider.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/list-tests-xml-dataprovider.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/log-junit.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/log-teamcity.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/mycommand.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/options-after-arguments.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/output-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phar-extension-suppressed.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phar-extension.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-args.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-env.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-external.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-stderr.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-stdin.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/phpt-xfail.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1149.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1149/Issue1149Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1216.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1216/Issue1216Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1216/bootstrap1216.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1216/phpunit1216.xml create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1265.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1265/Issue1265Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1265/phpunit1265.xml create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1330.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1330/Issue1330Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1330/phpunit1330.xml create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1335.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1335/Issue1335Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1335/bootstrap1335.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1337.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1337/Issue1337Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1348.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1348/Issue1348Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1351.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1351/ChildProcessClass1351.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1351/Issue1351Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1374.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1374/Issue1374Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1437.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1437/Issue1437Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1468.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1468/Issue1468Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1471.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1471/Issue1471Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1472.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1472/Issue1472Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1570.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/1570/Issue1570Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2137-filter.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2137-no_filter.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2137/Issue2137Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2145.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2145/Issue2145Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2158.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2158/Issue2158Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2158/constant.inc create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2366.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2366/Issue2366Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2380.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2380/Issue2380Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2382.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2382/Issue2382Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2435.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2435/Issue2435Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/244.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/244/Issue244Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2448-existing-test.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2448-not-existing-test.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2448/Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-class-preserve-no-bootstrap.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-class-preserve.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-function-no-preserve-no-bootstrap-xdebug.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-function-no-preserve-no-bootstrap.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-function-no-preserve.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591-separate-function-preserve.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/SeparateClassPreserveTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/SeparateFunctionNoPreserveTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/SeparateFunctionPreserveTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/bootstrapNoBootstrap.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/bootstrapWithBootstrap.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2591/bootstrapWithBootstrapNoGlobal.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2725-separate-class-before-after-pid.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2725/BeforeAfterClassPidTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2731.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2731/Issue2731Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2811.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2811/Issue2811Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2830.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2830/Issue2830Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2972.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2972/issue-2972-test.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/2972/unconventiallyNamedIssue2972Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/322.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/322/Issue322Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/322/phpunit322.xml create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/433.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/433/Issue433Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/445.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/445/Issue445Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/498.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/498/Issue498Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/503.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/503/Issue503Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/581.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/581/Issue581Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/74.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/74/Issue74Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/74/NewException.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/765.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/765/Issue765Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/797.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/797/Issue797Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/797/bootstrap797.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/863.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/873.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/GitHub/873/Issue873Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/1021.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/1021/Issue1021Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/523.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/523/Issue523Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/578.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/578/Issue578Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/684.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/684/Issue684Test.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/783.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/783/ChildSuite.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/783/OneTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/783/ParentSuite.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/regression/Trac/783/TwoTest.php create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/repeat.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/report-useless-tests-incomplete.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/report-useless-tests-isolation.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/report-useless-tests.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/stop-on-warning-via-cli.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/stop-on-warning-via-config.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/teamcity-inner-exceptions.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/teamcity.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/test-suffix-multiple.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/test-suffix-single.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox-exclude-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox-group.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox-html.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox-text.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox-xml.phpt create mode 100644 vendor/phpunit/phpunit/tests/end-to-end/testdox.phpt create mode 100644 vendor/phpunit/phpunit/tests/fail/fail.phpt create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/AssertTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/BaseTestListenerTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ArrayHasKeyTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ArraySubsetTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/AttributeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/CallbackTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ClassHasAttributeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ClassHasStaticAttributeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ConstraintTestCase.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/CountTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/DirectoryExistsTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ExceptionMessageRegExpTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ExceptionMessageTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/FileExistsTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/GreaterThanTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsEmptyTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsEqualTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsIdenticalTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsJsonTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsNullTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsReadableTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsTypeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/IsWritableTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/JsonMatchesErrorMessageProviderTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/JsonMatchesTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/LessThanTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/LogicalAndTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/LogicalOrTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/LogicalXorTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/ObjectHasAttributeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/RegularExpressionTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/SameSizeTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/StringContainsTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/StringEndsWithTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/StringMatchesFormatDescriptionTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/StringStartsWithTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/Constraint/TraversableContainsTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/ConstraintTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/SuiteTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/TestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/TestFailureTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/TestImplementorTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Framework/TestListenerTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Runner/Filter/NameFilterIteratorTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Runner/PhptTestCaseTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/TextUI/TestRunnerTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/ConfigurationGeneratorTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/ConfigurationTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/GetoptTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/GlobalStateTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/JsonTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/PHP/AbstractPhpProcessTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/RegularExpressionTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/TestDox/NamePrettifierTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/TestTest.php create mode 100644 vendor/phpunit/phpunit/tests/unit/Util/XmlTest.php create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.gitignore create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.php_cs create mode 100644 vendor/sebastian/code-unit-reverse-lookup/.travis.yml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md create mode 100644 vendor/sebastian/code-unit-reverse-lookup/LICENSE create mode 100644 vendor/sebastian/code-unit-reverse-lookup/README.md create mode 100644 vendor/sebastian/code-unit-reverse-lookup/build.xml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/composer.json create mode 100644 vendor/sebastian/code-unit-reverse-lookup/phpunit.xml create mode 100644 vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php create mode 100644 vendor/sebastian/code-unit-reverse-lookup/tests/WizardTest.php create mode 100644 vendor/sebastian/comparator/.gitignore create mode 100644 vendor/sebastian/comparator/.php_cs.dist create mode 100644 vendor/sebastian/comparator/.travis.yml create mode 100644 vendor/sebastian/comparator/ChangeLog.md create mode 100644 vendor/sebastian/comparator/LICENSE create mode 100644 vendor/sebastian/comparator/README.md create mode 100644 vendor/sebastian/comparator/build.xml create mode 100644 vendor/sebastian/comparator/composer.json create mode 100644 vendor/sebastian/comparator/phpunit.xml create mode 100644 vendor/sebastian/comparator/src/ArrayComparator.php create mode 100644 vendor/sebastian/comparator/src/Comparator.php create mode 100644 vendor/sebastian/comparator/src/ComparisonFailure.php create mode 100644 vendor/sebastian/comparator/src/DOMNodeComparator.php create mode 100644 vendor/sebastian/comparator/src/DateTimeComparator.php create mode 100644 vendor/sebastian/comparator/src/DoubleComparator.php create mode 100644 vendor/sebastian/comparator/src/ExceptionComparator.php create mode 100644 vendor/sebastian/comparator/src/Factory.php create mode 100644 vendor/sebastian/comparator/src/MockObjectComparator.php create mode 100644 vendor/sebastian/comparator/src/NumericComparator.php create mode 100644 vendor/sebastian/comparator/src/ObjectComparator.php create mode 100644 vendor/sebastian/comparator/src/ResourceComparator.php create mode 100644 vendor/sebastian/comparator/src/ScalarComparator.php create mode 100644 vendor/sebastian/comparator/src/SplObjectStorageComparator.php create mode 100644 vendor/sebastian/comparator/src/TypeComparator.php create mode 100644 vendor/sebastian/comparator/tests/ArrayComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ComparisonFailureTest.php create mode 100644 vendor/sebastian/comparator/tests/DOMNodeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/DateTimeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/DoubleComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ExceptionComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/FactoryTest.php create mode 100644 vendor/sebastian/comparator/tests/MockObjectComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/NumericComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ObjectComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ResourceComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/ScalarComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/SplObjectStorageComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/TypeComparatorTest.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/Author.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/Book.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/ClassWithToString.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/SampleClass.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/Struct.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/TestClass.php create mode 100644 vendor/sebastian/comparator/tests/_fixture/TestClassComparator.php create mode 100644 vendor/sebastian/diff/.gitignore create mode 100644 vendor/sebastian/diff/.php_cs create mode 100644 vendor/sebastian/diff/.travis.yml create mode 100644 vendor/sebastian/diff/ChangeLog.md create mode 100644 vendor/sebastian/diff/LICENSE create mode 100644 vendor/sebastian/diff/README.md create mode 100644 vendor/sebastian/diff/build.xml create mode 100644 vendor/sebastian/diff/composer.json create mode 100644 vendor/sebastian/diff/phpunit.xml create mode 100644 vendor/sebastian/diff/src/Chunk.php create mode 100644 vendor/sebastian/diff/src/Diff.php create mode 100644 vendor/sebastian/diff/src/Differ.php create mode 100644 vendor/sebastian/diff/src/Exception/Exception.php create mode 100644 vendor/sebastian/diff/src/Exception/InvalidArgumentException.php create mode 100644 vendor/sebastian/diff/src/Line.php create mode 100644 vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php create mode 100644 vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php create mode 100644 vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php create mode 100644 vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php create mode 100644 vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php create mode 100644 vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php create mode 100644 vendor/sebastian/diff/src/Parser.php create mode 100644 vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php create mode 100644 vendor/sebastian/diff/tests/ChunkTest.php create mode 100644 vendor/sebastian/diff/tests/DiffTest.php create mode 100644 vendor/sebastian/diff/tests/DifferTest.php create mode 100644 vendor/sebastian/diff/tests/DifferTestTest.php create mode 100644 vendor/sebastian/diff/tests/LineTest.php create mode 100644 vendor/sebastian/diff/tests/LongestCommonSubsequenceTest.php create mode 100644 vendor/sebastian/diff/tests/MemoryEfficientImplementationTest.php create mode 100644 vendor/sebastian/diff/tests/ParserTest.php create mode 100644 vendor/sebastian/diff/tests/TimeEfficientImplementationTest.php create mode 100644 vendor/sebastian/diff/tests/fixtures/patch.txt create mode 100644 vendor/sebastian/diff/tests/fixtures/patch2.txt create mode 100644 vendor/sebastian/environment/.gitignore create mode 100644 vendor/sebastian/environment/.php_cs create mode 100644 vendor/sebastian/environment/.travis.yml create mode 100644 vendor/sebastian/environment/ChangeLog.md create mode 100644 vendor/sebastian/environment/LICENSE create mode 100644 vendor/sebastian/environment/README.md create mode 100644 vendor/sebastian/environment/build.xml create mode 100644 vendor/sebastian/environment/composer.json create mode 100644 vendor/sebastian/environment/phpunit.xml create mode 100644 vendor/sebastian/environment/src/Console.php create mode 100644 vendor/sebastian/environment/src/OperatingSystem.php create mode 100644 vendor/sebastian/environment/src/Runtime.php create mode 100644 vendor/sebastian/environment/tests/ConsoleTest.php create mode 100644 vendor/sebastian/environment/tests/OperatingSystemTest.php create mode 100644 vendor/sebastian/environment/tests/RuntimeTest.php create mode 100644 vendor/sebastian/exporter/.gitignore create mode 100644 vendor/sebastian/exporter/.php_cs create mode 100644 vendor/sebastian/exporter/.travis.yml create mode 100644 vendor/sebastian/exporter/LICENSE create mode 100644 vendor/sebastian/exporter/README.md create mode 100644 vendor/sebastian/exporter/build.xml create mode 100644 vendor/sebastian/exporter/composer.json create mode 100644 vendor/sebastian/exporter/phpunit.xml create mode 100644 vendor/sebastian/exporter/src/Exporter.php create mode 100644 vendor/sebastian/exporter/tests/ExporterTest.php create mode 100644 vendor/sebastian/global-state/.gitignore create mode 100644 vendor/sebastian/global-state/.php_cs create mode 100644 vendor/sebastian/global-state/.travis.yml create mode 100644 vendor/sebastian/global-state/LICENSE create mode 100644 vendor/sebastian/global-state/README.md create mode 100644 vendor/sebastian/global-state/build.xml create mode 100644 vendor/sebastian/global-state/composer.json create mode 100644 vendor/sebastian/global-state/phpunit.xml create mode 100644 vendor/sebastian/global-state/src/Blacklist.php create mode 100644 vendor/sebastian/global-state/src/CodeExporter.php create mode 100644 vendor/sebastian/global-state/src/Restorer.php create mode 100644 vendor/sebastian/global-state/src/Snapshot.php create mode 100644 vendor/sebastian/global-state/src/exceptions/Exception.php create mode 100644 vendor/sebastian/global-state/src/exceptions/RuntimeException.php create mode 100644 vendor/sebastian/global-state/tests/BlacklistTest.php create mode 100644 vendor/sebastian/global-state/tests/CodeExporterTest.php create mode 100644 vendor/sebastian/global-state/tests/RestorerTest.php create mode 100644 vendor/sebastian/global-state/tests/SnapshotTest.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedChildClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedImplementor.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/BlacklistedInterface.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotClass.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotDomDocument.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotFunctions.php create mode 100644 vendor/sebastian/global-state/tests/_fixture/SnapshotTrait.php create mode 100644 vendor/sebastian/object-enumerator/.gitignore create mode 100644 vendor/sebastian/object-enumerator/.php_cs create mode 100644 vendor/sebastian/object-enumerator/.travis.yml create mode 100644 vendor/sebastian/object-enumerator/ChangeLog.md create mode 100644 vendor/sebastian/object-enumerator/LICENSE create mode 100644 vendor/sebastian/object-enumerator/README.md create mode 100644 vendor/sebastian/object-enumerator/build.xml create mode 100644 vendor/sebastian/object-enumerator/composer.json create mode 100644 vendor/sebastian/object-enumerator/phpunit.xml create mode 100644 vendor/sebastian/object-enumerator/src/Enumerator.php create mode 100644 vendor/sebastian/object-enumerator/src/Exception.php create mode 100644 vendor/sebastian/object-enumerator/src/InvalidArgumentException.php create mode 100644 vendor/sebastian/object-enumerator/tests/EnumeratorTest.php create mode 100644 vendor/sebastian/object-enumerator/tests/_fixture/ExceptionThrower.php create mode 100644 vendor/sebastian/object-reflector/.gitignore create mode 100644 vendor/sebastian/object-reflector/.php_cs create mode 100644 vendor/sebastian/object-reflector/.travis.yml create mode 100644 vendor/sebastian/object-reflector/ChangeLog.md create mode 100644 vendor/sebastian/object-reflector/LICENSE create mode 100644 vendor/sebastian/object-reflector/README.md create mode 100644 vendor/sebastian/object-reflector/build.xml create mode 100644 vendor/sebastian/object-reflector/composer.json create mode 100644 vendor/sebastian/object-reflector/phpunit.xml create mode 100644 vendor/sebastian/object-reflector/src/Exception.php create mode 100644 vendor/sebastian/object-reflector/src/InvalidArgumentException.php create mode 100644 vendor/sebastian/object-reflector/src/ObjectReflector.php create mode 100644 vendor/sebastian/object-reflector/tests/ObjectReflectorTest.php create mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ChildClass.php create mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ClassWithIntegerAttributeName.php create mode 100644 vendor/sebastian/object-reflector/tests/_fixture/ParentClass.php create mode 100644 vendor/sebastian/recursion-context/.gitignore create mode 100644 vendor/sebastian/recursion-context/.travis.yml create mode 100644 vendor/sebastian/recursion-context/LICENSE create mode 100644 vendor/sebastian/recursion-context/README.md create mode 100644 vendor/sebastian/recursion-context/build.xml create mode 100644 vendor/sebastian/recursion-context/composer.json create mode 100644 vendor/sebastian/recursion-context/phpunit.xml create mode 100644 vendor/sebastian/recursion-context/src/Context.php create mode 100644 vendor/sebastian/recursion-context/src/Exception.php create mode 100644 vendor/sebastian/recursion-context/src/InvalidArgumentException.php create mode 100644 vendor/sebastian/recursion-context/tests/ContextTest.php create mode 100644 vendor/sebastian/resource-operations/.gitignore create mode 100644 vendor/sebastian/resource-operations/LICENSE create mode 100644 vendor/sebastian/resource-operations/README.md create mode 100644 vendor/sebastian/resource-operations/build.xml create mode 100644 vendor/sebastian/resource-operations/build/generate.php create mode 100644 vendor/sebastian/resource-operations/composer.json create mode 100644 vendor/sebastian/resource-operations/src/ResourceOperations.php create mode 100644 vendor/sebastian/version/.gitattributes create mode 100644 vendor/sebastian/version/.gitignore create mode 100644 vendor/sebastian/version/.php_cs create mode 100644 vendor/sebastian/version/LICENSE create mode 100644 vendor/sebastian/version/README.md create mode 100644 vendor/sebastian/version/composer.json create mode 100644 vendor/sebastian/version/src/Version.php create mode 100644 vendor/stripe/stripe-php/.gitignore create mode 100644 vendor/stripe/stripe-php/CHANGELOG.md create mode 100644 vendor/stripe/stripe-php/LICENSE create mode 100644 vendor/stripe/stripe-php/README.md create mode 100644 vendor/stripe/stripe-php/VERSION create mode 100644 vendor/stripe/stripe-php/build.php create mode 100644 vendor/stripe/stripe-php/composer.json create mode 100644 vendor/stripe/stripe-php/data/ca-certificates.crt create mode 100644 vendor/stripe/stripe-php/init.php create mode 100644 vendor/stripe/stripe-php/lib/Account.php create mode 100644 vendor/stripe/stripe-php/lib/AccountLink.php create mode 100644 vendor/stripe/stripe-php/lib/AlipayAccount.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/All.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/Create.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/Delete.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/NestedResource.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/Request.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/Retrieve.php create mode 100644 vendor/stripe/stripe-php/lib/ApiOperations/Update.php create mode 100644 vendor/stripe/stripe-php/lib/ApiRequestor.php create mode 100644 vendor/stripe/stripe-php/lib/ApiResource.php create mode 100644 vendor/stripe/stripe-php/lib/ApiResponse.php create mode 100644 vendor/stripe/stripe-php/lib/ApplePayDomain.php create mode 100644 vendor/stripe/stripe-php/lib/ApplicationFee.php create mode 100644 vendor/stripe/stripe-php/lib/ApplicationFeeRefund.php create mode 100644 vendor/stripe/stripe-php/lib/Balance.php create mode 100644 vendor/stripe/stripe-php/lib/BalanceTransaction.php create mode 100644 vendor/stripe/stripe-php/lib/BankAccount.php create mode 100644 vendor/stripe/stripe-php/lib/BitcoinReceiver.php create mode 100644 vendor/stripe/stripe-php/lib/BitcoinTransaction.php create mode 100644 vendor/stripe/stripe-php/lib/Card.php create mode 100644 vendor/stripe/stripe-php/lib/Charge.php create mode 100644 vendor/stripe/stripe-php/lib/Checkout/Session.php create mode 100644 vendor/stripe/stripe-php/lib/Collection.php create mode 100644 vendor/stripe/stripe-php/lib/CountrySpec.php create mode 100644 vendor/stripe/stripe-php/lib/Coupon.php create mode 100644 vendor/stripe/stripe-php/lib/Customer.php create mode 100644 vendor/stripe/stripe-php/lib/Discount.php create mode 100644 vendor/stripe/stripe-php/lib/Dispute.php create mode 100644 vendor/stripe/stripe-php/lib/EphemeralKey.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Api.php create mode 100644 vendor/stripe/stripe-php/lib/Error/ApiConnection.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Authentication.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Base.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Card.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Idempotency.php create mode 100644 vendor/stripe/stripe-php/lib/Error/InvalidRequest.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/InvalidClient.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/InvalidGrant.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/InvalidRequest.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/InvalidScope.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/OAuthBase.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/UnsupportedGrantType.php create mode 100644 vendor/stripe/stripe-php/lib/Error/OAuth/UnsupportedResponseType.php create mode 100644 vendor/stripe/stripe-php/lib/Error/Permission.php create mode 100644 vendor/stripe/stripe-php/lib/Error/RateLimit.php create mode 100644 vendor/stripe/stripe-php/lib/Error/SignatureVerification.php create mode 100644 vendor/stripe/stripe-php/lib/Event.php create mode 100644 vendor/stripe/stripe-php/lib/ExchangeRate.php create mode 100644 vendor/stripe/stripe-php/lib/File.php create mode 100644 vendor/stripe/stripe-php/lib/FileLink.php create mode 100644 vendor/stripe/stripe-php/lib/FileUpload.php create mode 100644 vendor/stripe/stripe-php/lib/HttpClient/ClientInterface.php create mode 100644 vendor/stripe/stripe-php/lib/HttpClient/CurlClient.php create mode 100644 vendor/stripe/stripe-php/lib/Invoice.php create mode 100644 vendor/stripe/stripe-php/lib/InvoiceItem.php create mode 100644 vendor/stripe/stripe-php/lib/InvoiceLineItem.php create mode 100644 vendor/stripe/stripe-php/lib/IssuerFraudRecord.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/Authorization.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/Card.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/CardDetails.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/Cardholder.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/Dispute.php create mode 100644 vendor/stripe/stripe-php/lib/Issuing/Transaction.php create mode 100644 vendor/stripe/stripe-php/lib/LoginLink.php create mode 100644 vendor/stripe/stripe-php/lib/OAuth.php create mode 100644 vendor/stripe/stripe-php/lib/Order.php create mode 100644 vendor/stripe/stripe-php/lib/OrderItem.php create mode 100644 vendor/stripe/stripe-php/lib/OrderReturn.php create mode 100644 vendor/stripe/stripe-php/lib/PaymentIntent.php create mode 100644 vendor/stripe/stripe-php/lib/PaymentMethod.php create mode 100644 vendor/stripe/stripe-php/lib/Payout.php create mode 100644 vendor/stripe/stripe-php/lib/Person.php create mode 100644 vendor/stripe/stripe-php/lib/Plan.php create mode 100644 vendor/stripe/stripe-php/lib/Product.php create mode 100644 vendor/stripe/stripe-php/lib/Radar/ValueList.php create mode 100644 vendor/stripe/stripe-php/lib/Radar/ValueListItem.php create mode 100644 vendor/stripe/stripe-php/lib/Recipient.php create mode 100644 vendor/stripe/stripe-php/lib/RecipientTransfer.php create mode 100644 vendor/stripe/stripe-php/lib/Refund.php create mode 100644 vendor/stripe/stripe-php/lib/Reporting/ReportRun.php create mode 100644 vendor/stripe/stripe-php/lib/Reporting/ReportType.php create mode 100644 vendor/stripe/stripe-php/lib/RequestTelemetry.php create mode 100644 vendor/stripe/stripe-php/lib/Review.php create mode 100644 vendor/stripe/stripe-php/lib/SKU.php create mode 100644 vendor/stripe/stripe-php/lib/Sigma/ScheduledQueryRun.php create mode 100644 vendor/stripe/stripe-php/lib/SingletonApiResource.php create mode 100644 vendor/stripe/stripe-php/lib/Source.php create mode 100644 vendor/stripe/stripe-php/lib/SourceTransaction.php create mode 100644 vendor/stripe/stripe-php/lib/Stripe.php create mode 100644 vendor/stripe/stripe-php/lib/StripeObject.php create mode 100644 vendor/stripe/stripe-php/lib/Subscription.php create mode 100644 vendor/stripe/stripe-php/lib/SubscriptionItem.php create mode 100644 vendor/stripe/stripe-php/lib/SubscriptionSchedule.php create mode 100644 vendor/stripe/stripe-php/lib/SubscriptionScheduleRevision.php create mode 100644 vendor/stripe/stripe-php/lib/Terminal/ConnectionToken.php create mode 100644 vendor/stripe/stripe-php/lib/Terminal/Location.php create mode 100644 vendor/stripe/stripe-php/lib/Terminal/Reader.php create mode 100644 vendor/stripe/stripe-php/lib/ThreeDSecure.php create mode 100644 vendor/stripe/stripe-php/lib/Token.php create mode 100644 vendor/stripe/stripe-php/lib/Topup.php create mode 100644 vendor/stripe/stripe-php/lib/Transfer.php create mode 100644 vendor/stripe/stripe-php/lib/TransferReversal.php create mode 100644 vendor/stripe/stripe-php/lib/UsageRecord.php create mode 100644 vendor/stripe/stripe-php/lib/UsageRecordSummary.php create mode 100644 vendor/stripe/stripe-php/lib/Util/AutoPagingIterator.php create mode 100644 vendor/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php create mode 100644 vendor/stripe/stripe-php/lib/Util/DefaultLogger.php create mode 100644 vendor/stripe/stripe-php/lib/Util/LoggerInterface.php create mode 100644 vendor/stripe/stripe-php/lib/Util/RandomGenerator.php create mode 100644 vendor/stripe/stripe-php/lib/Util/RequestOptions.php create mode 100644 vendor/stripe/stripe-php/lib/Util/Set.php create mode 100644 vendor/stripe/stripe-php/lib/Util/Util.php create mode 100644 vendor/stripe/stripe-php/lib/Webhook.php create mode 100644 vendor/stripe/stripe-php/lib/WebhookEndpoint.php create mode 100644 vendor/stripe/stripe-php/lib/WebhookSignature.php create mode 100644 vendor/stripe/stripe-php/update_certs.php create mode 100644 vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 vendor/symfony/polyfill-ctype/LICENSE create mode 100644 vendor/symfony/polyfill-ctype/README.md create mode 100644 vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 vendor/symfony/polyfill-ctype/composer.json create mode 100644 vendor/theseer/tokenizer/.gitignore create mode 100644 vendor/theseer/tokenizer/.php_cs create mode 100644 vendor/theseer/tokenizer/.travis.yml create mode 100644 vendor/theseer/tokenizer/LICENSE create mode 100644 vendor/theseer/tokenizer/README.md create mode 100644 vendor/theseer/tokenizer/build.xml create mode 100644 vendor/theseer/tokenizer/composer.json create mode 100644 vendor/theseer/tokenizer/phive.xml create mode 100644 vendor/theseer/tokenizer/phpunit.xml create mode 100644 vendor/theseer/tokenizer/src/Exception.php create mode 100644 vendor/theseer/tokenizer/src/NamespaceUri.php create mode 100644 vendor/theseer/tokenizer/src/NamespaceUriException.php create mode 100644 vendor/theseer/tokenizer/src/Token.php create mode 100644 vendor/theseer/tokenizer/src/TokenCollection.php create mode 100644 vendor/theseer/tokenizer/src/TokenCollectionException.php create mode 100644 vendor/theseer/tokenizer/src/Tokenizer.php create mode 100644 vendor/theseer/tokenizer/src/XMLSerializer.php create mode 100644 vendor/theseer/tokenizer/tests/NamespaceUriTest.php create mode 100644 vendor/theseer/tokenizer/tests/TokenCollectionTest.php create mode 100644 vendor/theseer/tokenizer/tests/TokenTest.php create mode 100644 vendor/theseer/tokenizer/tests/TokenizerTest.php create mode 100644 vendor/theseer/tokenizer/tests/XMLSerializerTest.php create mode 100644 vendor/theseer/tokenizer/tests/_files/customns.xml create mode 100644 vendor/theseer/tokenizer/tests/_files/test.php create mode 100644 vendor/theseer/tokenizer/tests/_files/test.php.tokens create mode 100644 vendor/theseer/tokenizer/tests/_files/test.php.xml create mode 100644 vendor/webmozart/assert/CHANGELOG.md create mode 100644 vendor/webmozart/assert/LICENSE create mode 100644 vendor/webmozart/assert/README.md create mode 100644 vendor/webmozart/assert/composer.json create mode 100644 vendor/webmozart/assert/src/Assert.php create mode 100644 wpshop.config.json create mode 100644 wpshop.php diff --git a/.browserslist b/.browserslist new file mode 100644 index 0000000..915a1f1 --- /dev/null +++ b/.browserslist @@ -0,0 +1,6 @@ +# Browsers that we support + +last 1 version +> 1% +maintained node versions +not dead diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000..115ca2c --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,26 @@ +codecov: + notify: + require_ci_to_pass: yes + +coverage: + precision: 2 + round: nearest + range: "50...100" + + status: + project: yes + patch: off + changes: off + +parsers: + gcov: + branch_detection: + conditional: yes + loop: yes + method: no + macro: no + +comment: + layout: "files" + behavior: default + require_changes: yes diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..085bb33 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = LF +tab_width = 4 +indent_style = tab +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.txt] +trim_trailing_whitespace = false + +[*.{md,json,yml}] +trim_trailing_whitespace = false +indent_style = space +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e39e37c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log +report +.idea diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..22887ee --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "core/external/eo-framework"] + path = core/external/eo-framework + url = https://github.com/Eoxia/eo-framework diff --git a/.scrutinizer.yml b/.scrutinizer.yml new file mode 100644 index 0000000..8aed3f9 --- /dev/null +++ b/.scrutinizer.yml @@ -0,0 +1,27 @@ +tools: + php_code_sniffer: + config: + standard: WordPress + sensiolabs_security_checker: true + external_code_coverage: + timeout: 2500 +checks: + php: + avoid_closing_tag: false + avoid_superglobals: false + coding_standard: + name: WordPress + no_exit: false + no_global_keyword: false + one_class_per_file: false + psr2_class_declaration: false + psr2_control_structure_declaration: false + psr2_switch_declaration: false + variable_existence: false + verify_access_scope_valid: false + verify_argument_usable_as_reference: false + verify_property_names: false +filter: + excluded_paths: + - core/external/ + - tests/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..d874a9f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,58 @@ +sudo: false +dist: trusty + +language: php + +notifications: + email: + on_success: never + on_failure: change + +cache: + directories: + - $HOME/.composer/cache + +matrix: + include: + - php: 5.6 + env: WP_TRAVISCI=phpcs + - php: 7.1 + env: WP_TRAVISCI=phpcs RUN_CODE_COVERAGE=1 + +before_script: + - export PATH="$HOME/.composer/vendor/bin:$PATH" + - | + if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then + phpenv config-rm xdebug.ini + else + echo "xdebug.ini does not exist" + fi + - | + if [[ ! -z "$WP_VERSION" ]] ; then + bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION + composer global require "phpunit/phpunit=4.8.*|5.7.*" + fi + - | + if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then + composer global require wp-coding-standards/wpcs + phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs + fi + - | + if [[ "$RUN_CODE_COVERAGE" == "1" ]] ; then + bash ./tests/bin/travis.sh before + fi +script: + - | + if [[ ! -z "$WP_VERSION" ]] ; then + phpunit + WP_MULTISITE=1 phpunit + fi + - | + if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then + phpcs ./ + fi +after_script: + - | + if [[ "$RUN_CODE_COVERAGE" == "1" ]] ; then + bash ./tests/bin/travis.sh after + fi diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9c6941 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +

WPshop

+ +

+ Build Status + +

+ +WpShop 2.X will turn your WordPress into a simple, fast and intuitive Ecommerce for your customers. +WpShop 2.X will be connected to your PGI. +Say hello, simplicity and goodbye to duplicate content. +Synchronization with the Dolibarr PGI will be installed by default and completely free. + +WpShop 2.X transformera votre WordPress en un Ecommerce simple, rapide et intuitif pour vos clients. +WpShop 2.X sera connecté à votre PGI. +Dites Bonjour, à la simplicité et au revoir au contenu dupliqué. +La synchronisation avec le ERP - CRM Dolibarr sera installée par défaut et totalement gratuite. + +## Documentation + +- Official website [WPShop](https://wordpress.org/plugins/wpshop2/) +- Official website [Dolibarr](https://www.dolibarr.fr/) +- [Documentation](https://www.wpshop.fr/documentations) + +## Reporting Security Issues + +- Report your bugs: [github](https://github.com/Eoxia/wpshop/issues) + +## Support + +- Free support is based on mutual help and the community in this case you can post on [github](https://github.com/Eoxia/wpshop/issues), we read all the issues carefully. We love working for peanuts, but only for our projects :) +- Le support gratuit est basé sur l'entre-aide et la communauté dans ce cas vous pouvez poster sur [github](https://github.com/Eoxia/wpshop/issues), nous lisons toutes les issues avec attention. On adore travailler pour des cacahuètes mais que pour nos projets :) +- Paid support is available with the purchase of support tickets on our site [shop.eoxia.com](https://shop.eoxia.com/boutique/assistance/) +- Le support payant est disponible avec l'achat de tickets d'assistance sur notre site [shop.eoxia.com](https://shop.eoxia.com/boutique/assistance/) + +## Communication + +- The official website : [WPShop.fr](https://www.wpshop.fr/) +- Monitoring the project : [github](https://github.com/Eoxia/wpshop/projects) + +## Licence +Licence GNU [GPLv3 ou supérieure](https://www.gnu.org/licenses/gpl-3.0.html) + +## Contributors + +- L'agence [Eoxia](https://www.eoxia.com/) WordPress Expert diff --git a/build/block.asset.php b/build/block.asset.php new file mode 100644 index 0000000..8a492be --- /dev/null +++ b/build/block.asset.php @@ -0,0 +1 @@ + array('wp-blocks', 'wp-element', 'wp-i18n', 'wp-polyfill'), 'version' => '97ec32035279376ad270678fbdacee1f'); \ No newline at end of file diff --git a/build/block.js b/build/block.js new file mode 100644 index 0000000..ca0f9d8 --- /dev/null +++ b/build/block.js @@ -0,0 +1,340 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./core/asset/js/blocks/block.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./core/asset/js/blocks/block.js": +/*!***************************************!*\ + !*** ./core/asset/js/blocks/block.js ***! + \***************************************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element"); +/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); +/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks"); +/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__); + + +/** + * BLOCK: wpshop-block-products + * + * Products block. + */ +// Import CSS. + + +/** + * Register: Products block + * + * @link https://wordpress.org/gutenberg/handbook/block-api/ + * @param {string} name Block name. + * @param {Object} settings Block settings. + * @return {?WPBlock} The block, if it has been successfully + * registered; otherwise `undefined`. + */ + +Object(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_2__["registerBlockType"])('wpshop/block-products', { + title: Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('Products'), + icon: 'screenoptions', + category: 'common', + keywords: [Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__["__"])('product')], + attributes: { + items: { + type: 'array' + } + }, + + /** + * The edit function describes the structure of your block in the context of the editor. + * This represents what the editor will render when the block is used. + * + * The "edit" property must be a valid function. + * + * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/ + * + * @param {Object} props Props. + * @returns {Mixed} JSX Component. + */ + edit: function edit(_ref) { + var attributes = _ref.attributes, + setAttributes = _ref.setAttributes, + className = _ref.className; + + if (!attributes.items) { + var fetchObject = { + credentials: 'same-origin', + method: 'GET', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }; + fetch(wpshop.homeUrl + '/wp-json/wpshop/v1/product').then(function (response) { + return response.json().then(function (json) { + if (json.code == "rest_forbidden") { + setAttributes({ + err: json.message + }); + } else { + setAttributes({ + items: json + }); + } + }); + }); + } + + if (attributes.err) { + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("p", null, attributes.err); + } + + if (!attributes.items) { + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", null, "Loading..."); + } + + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-grid wpeo-gridlayout grid-4" + }, attributes.items.map(function (item, key) { + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemScope: true, + itemType: "https://schema.org/Product", + className: "wps-product" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("figure", { + className: "wps-product-thumbnail" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("img", { + width: "360", + height: "460", + src: item.data.thumbnail_url, + alt: "Image", + className: "attachment-wps-product-thumbnail wp-post-image", + itemProp: "image" + }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-action" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", { + itemProp: "url", + href: item.data.link, + className: "wpeo-button button-square-40 button-rounded button-light" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("i", { + className: "button-icon fas fa-eye" + })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-buy wpeo-button button-square-40 button-rounded button-light action-attribute", + "data-action": "add_to_cart", + "data-nonce": wpshop.addToCartNonce, + "data-id": item.data.id + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("i", { + className: "button-icon fas fa-cart-arrow-down" + })))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-content" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemProp: "name", + className: "wps-product-title" + }, item.data.title), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemProp: "offers", + itemScope: "", + itemType: "https://schema.org/Offer", + className: "wps-product-price" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", { + itemProp: "price", + content: item.data.price_ttc + }, item.data.price_ttc), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", { + itemProp: "priceCurrency", + content: "EUR" + }, "\u20AC")))); + })); + }, + + /** + * The save function defines the way in which the different attributes should be combined + * into the final markup, which is then serialized by Gutenberg into post_content. + * + * The "save" property must be specified and must be a valid function. + * + * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/ + * + * @param {Object} props Props. + * @returns {Mixed} JSX Frontend HTML. + */ + save: function save(_ref2) { + var attributes = _ref2.attributes; + + if (!attributes.items) { + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", null, "Loading..."); + } + + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-grid wpeo-gridlayout grid-4" + }, attributes.items.map(function (item, key) { + return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemscope: true, + itemtype: "https://schema.org/Product", + className: "wps-product" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("figure", { + className: "wps-product-thumbnail" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("img", { + width: "360", + height: "460", + src: item.data.thumbnail_url, + alt: "Image", + className: "attachment-wps-product-thumbnail wp-post-image", + itemprop: "image" + }), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + class: "wps-product-action" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("a", { + itemprop: "url", + href: item.data.link, + className: "wpeo-button button-square-40 button-rounded button-light" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("i", { + className: "button-icon fas fa-eye" + })), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-buy wpeo-button button-square-40 button-rounded button-light action-attribute", + "data-action": "add_to_cart", + "data-nonce": wpshop.addToCartNonce, + "data-id": item.data.id + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("i", { + className: "button-icon fas fa-cart-arrow-down" + })))), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + className: "wps-product-content" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemProp: "name", + className: "wps-product-title" + }, item.data.title), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("div", { + itemProp: "offers", + itemScope: "", + itemType: "https://schema.org/Offer", + className: "wps-product-price" + }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", { + itemProp: "price", + content: item.data.price_ttc + }, item.data.price_ttc), Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])("span", { + itemProp: "priceCurrency", + content: "EUR" + }, "\u20AC")))); + })); + } +}); + +/***/ }), + +/***/ "@wordpress/blocks": +/*!*****************************************!*\ + !*** external {"this":["wp","blocks"]} ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["blocks"]; }()); + +/***/ }), + +/***/ "@wordpress/element": +/*!******************************************!*\ + !*** external {"this":["wp","element"]} ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["element"]; }()); + +/***/ }), + +/***/ "@wordpress/i18n": +/*!***************************************!*\ + !*** external {"this":["wp","i18n"]} ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["i18n"]; }()); + +/***/ }) + +/******/ }); +//# sourceMappingURL=block.js.map \ No newline at end of file diff --git a/build/block.js.map b/build/block.js.map new file mode 100644 index 0000000..a8d2db9 --- /dev/null +++ b/build/block.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./core/asset/js/blocks/block.js","webpack:///external {\"this\":[\"wp\",\"blocks\"]}","webpack:///external {\"this\":[\"wp\",\"element\"]}","webpack:///external {\"this\":[\"wp\",\"i18n\"]}"],"names":["registerBlockType","title","__","icon","category","keywords","attributes","items","type","edit","setAttributes","className","fetchObject","credentials","method","headers","fetch","wpshop","homeUrl","then","response","json","code","err","message","map","item","key","data","thumbnail_url","link","addToCartNonce","id","price_ttc","save"],"mappings":"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","file":"block.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./core/asset/js/blocks/block.js\");\n","/**\n * BLOCK: wpshop-block-products\n *\n * Products block.\n */\n\n// Import CSS.\nimport { __ } from '@wordpress/i18n';\nimport { registerBlockType } from '@wordpress/blocks';\n\n/**\n * Register: Products block\n *\n * @link https://wordpress.org/gutenberg/handbook/block-api/\n * @param {string} name Block name.\n * @param {Object} settings Block settings.\n * @return {?WPBlock} The block, if it has been successfully\n * registered; otherwise `undefined`.\n */\nregisterBlockType( 'wpshop/block-products', {\n\ttitle: __( 'Products' ),\n\ticon: 'screenoptions',\n\tcategory: 'common',\n\tkeywords: [\n\t\t__( 'product' ),\n\t],\n\tattributes: {\n\t\titems: {\n\t\t\ttype: 'array'\n\t\t}\n\t},\n\n\t/**\n\t * The edit function describes the structure of your block in the context of the editor.\n\t * This represents what the editor will render when the block is used.\n\t *\n\t * The \"edit\" property must be a valid function.\n\t *\n\t * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n\t *\n\t * @param {Object} props Props.\n\t * @returns {Mixed} JSX Component.\n\t */\n\tedit: ( { attributes, setAttributes, className } ) => {\n\t\tif ( ! attributes.items ) {\n\t\t\tlet fetchObject = {\n\t\t\t\tcredentials: 'same-origin',\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\t'Accept': 'application/json',\n\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfetch( wpshop.homeUrl + '/wp-json/wpshop/v1/product' )\n\t\t\t\t.then( response => {\n\t\t\t\t\treturn response.json().then( json => {\n\t\t\t\t\t\tif ( json.code == \"rest_forbidden\" ) {\n\t\t\t\t\t\t\tsetAttributes( { err: json.message } );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetAttributes( { items: json } );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t}\n\n\t\tif ( attributes.err ) {\n\t\t\treturn

{ attributes.err }

;\n\t\t}\n\n\t\tif ( ! attributes.items ) {\n\t\t\treturn
Loading...
;\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{attributes.items.map((item, key) => (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\"Image\"\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{ item.data.title }
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{ item.data.price_ttc }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t\n\t\t);\n\t},\n\n\t/**\n\t * The save function defines the way in which the different attributes should be combined\n\t * into the final markup, which is then serialized by Gutenberg into post_content.\n\t *\n\t * The \"save\" property must be specified and must be a valid function.\n\t *\n\t * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/\n\t *\n\t * @param {Object} props Props.\n\t * @returns {Mixed} JSX Frontend HTML.\n\t */\n\tsave: ( { attributes } ) => {\n\t\tif ( ! attributes.items ) {\n\t\t\treturn
Loading...
;\n\t\t}\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t{attributes.items.map( ( item, key ) => (\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\"Image\"\n\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
{ item.data.title }
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t{ item.data.price_ttc }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t))}\n\t\t\t\n\t\t);\n\t},\n} );\n","(function() { module.exports = this[\"wp\"][\"blocks\"]; }());","(function() { module.exports = this[\"wp\"][\"element\"]; }());","(function() { module.exports = this[\"wp\"][\"i18n\"]; }());"],"sourceRoot":""} \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..97da088 --- /dev/null +++ b/composer.json @@ -0,0 +1,37 @@ +{ + "name": "eoxia/wpshop", + "description": "An eCommerce connected to your PGI.", + "homepage": "https://wpshop.fr/", + "type": "wordpress-plugin", + "license": "GPL-3.0-or-later", + "prefer-stable": true, + "minimum-stability": "dev", + "require": { + "composer/installers": "1.6.0", + "stripe/stripe-php": "^6.31" + }, + "require-dev": { + "phpunit/phpunit": "6.5.14" + }, + "scripts": { + "test": [ + "phpunit" + ], + "phpcs": [ + "phpcs -s -p" + ], + "phpcs-pre-commit": [ + "phpcs -s -p -n" + ], + "phpcbf": [ + "phpcbf -p" + ] + }, + "extra": { + "scripts-description": { + "test": "Run unit tests", + "phpcs": "Analyze code against the WordPress coding standards with PHP_CodeSniffer", + "phpcbf": "Fix coding standards warnings/errors automatically with PHP Code Beautifier" + } + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..d9e11eb --- /dev/null +++ b/composer.lock @@ -0,0 +1,1713 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "hash": "1fa9fa684330a2a91bd44da064387316", + "content-hash": "9495143e51bdc20eb72c971bf10e3073", + "packages": [ + { + "name": "composer/installers", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b", + "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpunit/phpunit": "^4.8.36" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Thelia", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "modulework", + "modx", + "moodle", + "osclass", + "phpbb", + "piwik", + "ppi", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "time": "2018-08-27 06:10:37" + }, + { + "name": "stripe/stripe-php", + "version": "v6.31.0", + "source": { + "type": "git", + "url": "https://github.com/stripe/stripe-php.git", + "reference": "a44a095af88057922a08b03daaf79d6859e12e2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/a44a095af88057922a08b03daaf79d6859e12e2d", + "reference": "a44a095af88057922a08b03daaf79d6859e12e2d", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "1.*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0", + "symfony/process": "~2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Stripe\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stripe and contributors", + "homepage": "https://github.com/stripe/stripe-php/contributors" + } + ], + "description": "Stripe PHP Library", + "homepage": "https://stripe.com/", + "keywords": [ + "api", + "payment processing", + "stripe" + ], + "time": "2019-03-18 23:36:33" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14 21:17:01" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19 19:58:43" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05 18:14:27" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05 17:38:23" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11 18:02:19" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30 07:14:17" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14 14:27:02" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05 17:53:17" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-04-06 15:36:58" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27 13:52:08" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21 13:50:34" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26 11:10:40" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-11-27 05:48:46" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-02-01 05:22:47" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true, + "time": "2018-08-09 05:50:03" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04 06:30:41" + }, + { + "name": "sebastian/comparator", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01 13:46:46" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-08-03 08:09:46" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01 08:51:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03 13:19:02" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27 15:39:26" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03 12:35:26" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29 09:07:27" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03 06:23:57" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28 20:34:47" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03 07:35:21" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "backendtea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06 14:22:27" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07 12:08:54" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-12-25 11:19:39" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/core/action/class-core-action.php b/core/action/class-core-action.php new file mode 100644 index 0000000..3b2bd51 --- /dev/null +++ b/core/action/class-core-action.php @@ -0,0 +1,233 @@ + + * @copyright (c) 2011-2019 Eoxia . + * + * @license AGPLv3 + * + * @package WPshop\Classes + * + * @since 2.0.0 + */ + +namespace wpshop; + +defined( 'ABSPATH' ) || exit; + +/** + * Main actions of wpshop. + */ +class Core_Action { + + /** + * Constructor. + * + * @since 2.0.0 + */ + public function __construct() { + add_action( 'init', array( $this, 'callback_register_session' ), 1 ); + add_action( 'init', array( $this, 'callback_language' ) ); + add_action( 'init', array( $this, 'callback_install_default' ) ); + add_action( 'init', array( $this, 'callback_init_block' ) ); + + add_action( 'wp_head', array( $this, 'define_ajax_url' ) ); + + add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_enqueue_scripts' ), 11 ); + add_action( 'wp_enqueue_scripts', array( $this, 'callback_enqueue_scripts' ), 11 ); + + add_action( 'admin_menu', array( $this, 'callback_admin_menu' ) ); + + add_action( 'wp_ajax_check_erp_statut', array( $this, 'check_erp_statut' ) ); + + add_action( 'admin_init', array( $this, 'redirect_to' ) ); + } + + /** + * Enregistre la session et enlève l'admin bar. + * + * @since 2.0.0 + */ + public function callback_register_session() { + if ( ! session_id() ) { + session_start(); + } + + if ( ! current_user_can( 'manage_options' ) ) { + show_admin_bar( false ); + } + } + + /** + * Charge le fichier de traduction. + * + * @since 2.0.0 + */ + public function callback_language() { + load_plugin_textdomain( 'wpshop', false, PLUGIN_WPSHOP_DIR . '/core/asset/language/' ); + } + + /** + * Installe les données par défaut. + * + * @todo: Documenter les données par défaut. + * + * @since 2.0.0 + */ + public function callback_install_default() { + Core::g()->default_install(); + } + + /** + * Enregistre les blocks gutenberg. + * + * @since 2.0.0 + */ + public function callback_init_block() { + $asset_file = include( PLUGIN_WPSHOP_PATH . 'build/block.asset.php'); + + wp_register_script( + 'wpshop-products', + PLUGIN_WPSHOP_URL . '/build/block.js', + $asset_file['dependencies'], + $asset_file['version'] + ); + + wp_localize_script( 'wpshop-products', 'wpshop', array( + 'homeUrl' => home_url(), + 'addToCartNonce' => wp_create_nonce( 'add_to_cart' ), + ) + ); + + register_block_type( 'wpshop/products', array( + 'editor_script' => 'wpshop-products', + ) ); + } + + /** + * Ajoute ajaxurl. + * + * @since 2.0.0 + */ + public function define_ajax_url() { + echo ''; + } + + /** + * Init backend style and script + * + * @since 2.0.0 + */ + public function callback_admin_enqueue_scripts() { + wp_enqueue_media(); + + wp_dequeue_script( 'wpeo-assets-datepicker-js' ); + wp_dequeue_style( 'wpeo-assets-datepicker' ); + + wp_enqueue_style( 'select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css' ); + wp_enqueue_script( 'select2', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js', array( 'jquery' ) ); + + wp_enqueue_style( 'wpshop-style', PLUGIN_WPSHOP_URL . 'core/asset/css/style.css', array(), \eoxia\Config_Util::$init['wpshop']->version ); + wp_enqueue_script( 'wpshop-backend-script', PLUGIN_WPSHOP_URL . 'core/asset/js/backend.min.js', array( 'jquery', 'jquery-form' ), \eoxia\Config_Util::$init['wpshop']->version ); + + $script_params = array( + 'check_erp_statut_nonce' => wp_create_nonce( 'check_erp_statut' ), + 'url' => get_option( 'siteurl' ), + ); + + wp_localize_script( 'wpshop-backend-script', 'scriptParams', $script_params ); + } + + /** + * Init backend style and script + * + * @since 2.0.0 + */ + public function callback_enqueue_scripts() { + wp_dequeue_script( 'wpeo-assets-datepicker-js' ); + wp_dequeue_style( 'wpeo-assets-datepicker' ); + wp_enqueue_style( 'wpshop-style', PLUGIN_WPSHOP_URL . 'core/asset/css/style.css', array(), \eoxia\Config_Util::$init['wpshop']->version ); + wp_enqueue_style( 'wpshop-style-frontend', PLUGIN_WPSHOP_URL . 'core/asset/css/style.frontend.min.css', array(), \eoxia\Config_Util::$init['wpshop']->version ); + wp_enqueue_script( 'wpshop-frontend-script', PLUGIN_WPSHOP_URL . 'core/asset/js/frontend.min.js', array(), \eoxia\Config_Util::$init['wpshop']->version ); + + $dolibarr_option = get_option( 'wps_dolibarr', Settings::g()->default_settings ); + + $script_params = array( + 'check_erp_statut_nonce' => wp_create_nonce( 'check_erp_statut' ), + 'url' => get_option( 'siteurl' ), + 'dolibarr_url' => $dolibarr_option['dolibarr_url'], + 'dolibarr_public_key' => ! empty( $dolibarr_option['dolibarr_public_key'] ) ? $dolibarr_option['dolibarr_public_key'] : null, + ); + + wp_localize_script( 'wpshop-frontend-script', 'scriptParams', $script_params ); + } + + /** + * Ajoute le menu principal de WPshop. + * + * @since 2.0.0 + */ + public function callback_admin_menu() { + add_menu_page( __( 'WPshop', 'wpshop' ), __( 'WPshop', 'wpshop' ), 'manage_options', 'wpshop', '', 'dashicons-store' ); + add_submenu_page( 'wpshop', __( 'Dashboard', 'wpshop' ), __( 'Dashboard', 'wpshop' ), 'manage_options', 'wpshop', array( Dashboard::g(), 'callback_add_menu_page' ) ); + } + + public function check_erp_statut() { + check_ajax_referer( 'check_erp_statut' ); + + $statut = false; + $dolibarr_option = get_option( 'wps_dolibarr', Settings::g()->default_settings ); + + if ( empty( $dolibarr_option['dolibarr_url'] ) || empty( $dolibarr_option['dolibarr_secret'] ) ) { + wp_send_json_success( array( + 'connected' => false, + ) ); + } + + $response = Request_Util::get( 'status' ); + + if ( ! empty( $response ) && 200 === $response->success->code ) { + $statut = true; + } + + ob_start(); + if ( current_user_can( 'administrator') ) { + require_once( PLUGIN_WPSHOP_PATH . '/core/view/erp-connexion-error.view.php' ); + } + wp_send_json_success( array( + 'connected' => true, + 'statut' => $statut, + 'view' => ob_get_clean(), + ) ); + } + + /** + * Permet de rediriger l'utilisateur Client/Abonné vers la page de gestion de compte. + * + * @since 2.0.0 + */ + public function redirect_to() { + + $current_user = current_user_can( 'subscriber' ); + + if ( $current_user ) { + $_pos = strlen($_SERVER['REQUEST_URI']) - strlen('/wp-admin/'); + $_pos2 = strlen($_SERVER['REQUEST_URI']) - strlen('/wp-admin/profile.php'); + + if ( ( strpos($_SERVER['REQUEST_URI'], '/wp-admin/') !== false && ( ( strpos( $_SERVER['REQUEST_URI'], '/wp-admin/' ) == $_pos ) || ( strpos( $_SERVER['REQUEST_URI'], '/wp-admin/' ) == $_pos2 ) ) ) ) { + + wp_redirect( home_url( '/mon-compte' ) ); + + die(); + } + } + } +} + +new Core_Action(); diff --git a/core/action/index.php b/core/action/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/action/index.php @@ -0,0 +1,2 @@ + * { + margin: auto 0; + } + + .wps-box-primary { + width: 100%; + + .wps-box-title { + font-size: 20px; + color: rgba(0,0,0,0.9); + line-height: 1.2; + } + .wps-box-attributes { + display: flex; + margin: 0; + padding: 0; + + .wps-box-subtitle-item { + list-style-type: none; + margin: 0 0.5em 0 0; + color: rgba(0,0,0,0.4); + font-size: 14px; + } + .wps-box-subtitle-icon { + margin-right: 0.2em; + } + } + .wps-box-display-more { + color: $color__primary; + font-size: 14px; + margin-top: 0.6em; + @include transition; + + &:hover { + cursor: pointer; + opacity: 0.6; + } + &.active .wps-box-display-more-icon::before { + content: fa-content( $fa-var-angle-down ); + } + } + } + + .wps-box-secondary { + text-align: right; + padding: 0 1.2em; + + .wps-box-status { + font-size: 14px; + font-weight: 700; + line-height: 1; + + .wps-box-status-dot { + display: inline-block; + width: 8px; + height: 8px; + border-radius: 50%; + background: rgba(0,0,0,0.8); + margin-right: 0.2em; + } + } + .wps-box-price { + font-weight: 700; + font-size: 35px; + } + } + .wps-box-action { + display: flex; + + > * { + margin: auto 0; + } + } +} + +.wps-list-box .wps-box .wps-box-detail { + display: none; +} diff --git a/core/asset/css/scss-frontend/element/product/_grid-product.scss b/core/asset/css/scss-frontend/element/product/_grid-product.scss new file mode 100644 index 0000000..8bd3162 --- /dev/null +++ b/core/asset/css/scss-frontend/element/product/_grid-product.scss @@ -0,0 +1,91 @@ +.wps-product-grid .wps-product { + display: block; + + .wps-product-thumbnail { + position: relative; + + &::before { + display: block; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.3); + opacity: 0; + z-index: 1; + @include transition; + } + + .attachment-wps-product-thumbnail { + display: block; + width: 100%; + } + .wps-product-action { + position: absolute; + z-index: 3; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + opacity: 0; + @include transition(); + + .wpeo-button { + color: $color__primary; + transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), all 0.2s ease-out; + + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + border-color: $color__primary; + color: #fff; + } + &:first-child { + transform: translateX(-10px); + } + &:last-child { + transform: translateX(10px); + } + } + } + .wps-product-link { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 2; + } + } + + .wps-product-content { + text-align: center; + line-height: 1.2; + padding: 0.6em 0; + + .wps-product-title { + font-size: 16px; + font-weight: 700; + } + .wps-product-price { + font-size: 26px; + font-weight: 100; + } + } + + &:hover { + .wps-product-thumbnail:before { + opacity: 1; + } + .wps-product-action { + opacity: 1; + + .wpeo-button { + transform: translateX(0) !important; + } + .wpeo-button:last-child { + + } + } + } +} diff --git a/core/asset/css/scss-frontend/element/product/_list-product.scss b/core/asset/css/scss-frontend/element/product/_list-product.scss new file mode 100644 index 0000000..a94a9ec --- /dev/null +++ b/core/asset/css/scss-frontend/element/product/_list-product.scss @@ -0,0 +1,91 @@ +.wps-list-product .wps-product { + display: flex; + background: #fff; + padding: 1em; + margin-bottom: 0.6em; + position: relative; + + &:last-child { + margin-bottom: 0; + } + + .wps-product-thumbnail, .wps-product-content { + margin: auto 0; + } + .wps-product-thumbnail { + min-width: 20%; + width: 20%; + margin-right: 0.6em; + + .attachment-wps-product-thumbnail { + width: 100%; + height: auto; + display: block; + } + } + + .wps-delete-product { + position: absolute; + top: 0.6em; + right: 0.6em; + color: rgba(0,0,0,0.4); + @include transition(); + + &:hover { + cursor: pointer; + color: rgba(0,0,0,0.9); + } + } + + .wps-product-content { + width: 100%; + line-height: 1.2; + + .wps-product-title { + font-size: 20px; + color: rgba(0,0,0,0.9); + line-height: 1.2; + } + .wps-product-attributes { + display: flex; + margin: 0; + padding: 0; + + .wps-product-attributes-item { + list-style-type: none; + margin: 0 0.2em 0 0; + color: rgba(0,0,0,0.4); + font-size: 14px; + } + .wps-product-attributes-icon { + margin-right: 0.2em; + } + } + .wps-product-footer { + display: flex; + margin-top: 0.8em; + + .wps-product-price, .wps-product-quantity { + font-size: 16px; + font-weight: 700; + color: rgba(0,0,0,0.8); + + .wps-quantity-plus, .wps-quantity-minus { + position: relative; + @include transition(opacity, 0.2s, ease-out); + + &:focus, &:active { + top: 2px; + } + &:hover { + opacity: 0.6; + cursor: pointer; + } + } + } + .wps-product-price { + margin-left: auto; + } + } + } +} diff --git a/core/asset/css/scss-frontend/element/product/_product.scss b/core/asset/css/scss-frontend/element/product/_product.scss new file mode 100644 index 0000000..3adb38c --- /dev/null +++ b/core/asset/css/scss-frontend/element/product/_product.scss @@ -0,0 +1,4 @@ +@import "single-product"; +@import "grid-product"; +@import "list-product"; +@import "taxonomy"; diff --git a/core/asset/css/scss-frontend/element/product/_single-product.scss b/core/asset/css/scss-frontend/element/product/_single-product.scss new file mode 100644 index 0000000..793cc73 --- /dev/null +++ b/core/asset/css/scss-frontend/element/product/_single-product.scss @@ -0,0 +1,6 @@ +body.single-wps-product { + .wps-product-price { + font-size: 2em; + font-weight: 300; + } +} diff --git a/core/asset/css/scss-frontend/element/product/_taxonomy.scss b/core/asset/css/scss-frontend/element/product/_taxonomy.scss new file mode 100644 index 0000000..9214adb --- /dev/null +++ b/core/asset/css/scss-frontend/element/product/_taxonomy.scss @@ -0,0 +1,5 @@ +.wps-taxonomy { + .wps-taxonomy-title { + font-weight: 900; + } +} diff --git a/core/asset/css/scss-frontend/external/_external.scss b/core/asset/css/scss-frontend/external/_external.scss new file mode 100644 index 0000000..f28fbe9 --- /dev/null +++ b/core/asset/css/scss-frontend/external/_external.scss @@ -0,0 +1,2 @@ +@import "eoframework-color/eoframework-color"; +@import "eoframework-modules/eoframework-modules"; diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_autocomplete.scss b/core/asset/css/scss-frontend/external/eoframework-color/_autocomplete.scss new file mode 100644 index 0000000..20ffc50 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_autocomplete.scss @@ -0,0 +1,13 @@ +.wpeo-autocomplete { + .autocomplete-label { + &:hover { + border: 1px solid $color__primary; + } + .autocomplete-loading { + background: $color__primary; + } + .autocomplete-loading-background { + background: rgba($color__primary, 0.4); + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_button.scss b/core/asset/css/scss-frontend/external/eoframework-color/_button.scss new file mode 100644 index 0000000..76a7488 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_button.scss @@ -0,0 +1,140 @@ +// Bouton plein +.wpeo-button, a.wpeo-button { + /* par défaut */ + background: $color__primary; + border-color: $color__primary; + + &.button-main { + background: $color__primary; + border-color: $color__primary; + } + &.button-dark { + background: $color__secondary; + border-color: $color__secondary; + } + &.button-grey { + background: $color__grey; + border-color: $color__grey; + } + &.button-red { + background: $color__red; + border-color: $color__red; + } + &.button-yellow { + background: $color__yellow; + border-color: $color__yellow; + } + &.button-green { + background: $color__green; + border-color: $color__green; + } + &.button-pink { + background: $color__pink; + border-color: $color__pink; + } + &.button-purple { + background: $color__purple; + border-color: $color__purple; + } + &.button-grey { + background: $color__grey; + border-color: $color__grey; + } + &.button-transparent { + background: transparent; + border-color: transparent; + } +} + +// Bordered +.wpeo-button.button-bordered { + border-color: $color__primary; + color: $color__primary; + + &.button-main { + border-color: $color__primary; + color: $color__primary; + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + } + } + &.button-dark { + border-color: $color__secondary; + color: $color__secondary; + &:hover { + box-shadow: inset 0 -2.6em $color__secondary; + } + } + &.button-grey { + border-color: $color__grey; + color: darken($color__grey, 30%); + &:hover { + box-shadow: inset 0 -2.6em $color__grey; + } + } + &.button-red { + border-color: $color__red; + color: $color__red; + &:hover { + box-shadow: inset 0 -2.6em $color__red; + } + } + &.button-yellow { + border-color: $color__yellow; + color: $color__yellow; + &:hover { + box-shadow: inset 0 -2.6em $color__yellow; + } + } + &.button-green { + border-color: $color__green; + color: $color__green; + &:hover { + box-shadow: inset 0 -2.6em $color__green; + } + } + &.button-pink { + border-color: $color__pink; + color: $color__pink; + &:hover { + box-shadow: inset 0 -2.6em $color__pink; + } + } + &.button-purple { + border-color: $color__purple; + color: $color__purple; + &:hover { + box-shadow: inset 0 -2.6em $color__purple; + } + } + &.button-grey { + border-color: $color__grey; + color: $color__grey; + &:hover { + box-shadow: inset 0 -2.6em $color__grey; + } + } + + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + } +} + + +/** Progress button */ +.wpeo-button.button-progress { + &.button-success { + background: $color__green; + border-color: $color__green; + } + &.button-error { + background: $color__red; + border-color: $color__red; + } + &.button-load { + background: $color__grey; + &:before { + border-top: 3px solid $color__primary; + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_eoframework-color.scss b/core/asset/css/scss-frontend/external/eoframework-color/_eoframework-color.scss new file mode 100644 index 0000000..3260d18 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_eoframework-color.scss @@ -0,0 +1,11 @@ +@import "autocomplete"; +@import "button"; +@import "form"; +@import "loader"; +@import "modal"; +@import "notification"; +@import "pagination"; +@import "popover"; +@import "tab"; +@import "table"; +@import "tooltip"; diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_form.scss b/core/asset/css/scss-frontend/external/eoframework-color/_form.scss new file mode 100644 index 0000000..448c9e3 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_form.scss @@ -0,0 +1,24 @@ +.wpeo-form .form-element { + input[type="checkbox"].form-field { + &:not(:checked) + label:hover::before { + box-shadow: 0 0 0 2px $color__primary; + } + &:checked + label { + &::before { + box-shadow: 0 0 0 2px $color__primary; + background: $color__primary; + } + } + } + + input[type="radio"].form-field { + &:hover { + border: 1px solid $color__primary; + box-shadow: 0 0 0 1px $color__primary inset; + } + &:checked { + border: 1px solid $color__primary; + box-shadow: 0 0 0 4px $color__primary inset; + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_loader.scss b/core/asset/css/scss-frontend/external/eoframework-color/_loader.scss new file mode 100644 index 0000000..7eb18b1 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_loader.scss @@ -0,0 +1,5 @@ +.wpeo-loader { + .loader-spin { + border-top: 3px solid $color__primary; + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_modal.scss b/core/asset/css/scss-frontend/external/eoframework-color/_modal.scss new file mode 100644 index 0000000..92b0944 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_modal.scss @@ -0,0 +1,9 @@ +.wpeo-modal { + .modal-container .modal-header { + .modal-close { + &:hover { + color: $color__primary; + } + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_notification.scss b/core/asset/css/scss-frontend/external/eoframework-color/_notification.scss new file mode 100644 index 0000000..46b1e3d --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_notification.scss @@ -0,0 +1,34 @@ +.wpeo-notification { + .notification-title { + a { + color: $color__primary; + } + } + .notification-close { + &:hover { + color: $color__primary; + } + } +} + +/** Couleur */ +.wpeo-notification { + &.notification-green { + border-left: 4px solid $color__green; + .notification-icon { + color: $color__green; + } + } + &.notification-orange { + border-left: 4px solid $color__yellow; + .notification-icon { + color: $color__yellow; + } + } + &.notification-red { + border-left: 4px solid $color__red; + .notification-icon { + color: $color__red; + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_pagination.scss b/core/asset/css/scss-frontend/external/eoframework-color/_pagination.scss new file mode 100644 index 0000000..7464ded --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_pagination.scss @@ -0,0 +1,10 @@ +.wpeo-pagination .pagination-element { + &.pagination-current { + a { + background: $color__primary; + &:hover { + background: $color__primary; + } + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_popover.scss b/core/asset/css/scss-frontend/external/eoframework-color/_popover.scss new file mode 100644 index 0000000..a5303ef --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_popover.scss @@ -0,0 +1,32 @@ + +/* Couleurs */ +@mixin set-arrow-color($color) { + &.popover-top::before { + border-color: $color transparent transparent transparent; + } + &.popover-right::before { + border-color: transparent $color transparent transparent; + } + &.popover-bottom::before { + border-color: transparent transparent $color transparent; + } + &.popover-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-popover { + &.popover-primary { + background: $color__primary; + @include set-arrow-color($color__primary); + } + &.popover-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-color($color__grey); + } + &.popover-red { + background: $color__red; + @include set-arrow-color($color__red); + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_tab.scss b/core/asset/css/scss-frontend/external/eoframework-color/_tab.scss new file mode 100644 index 0000000..04cc493 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_tab.scss @@ -0,0 +1,31 @@ +.wpeo-tab .tab-list { + .tab-element { + + &::before { + background: $color__primary; + } + /* Active */ + &.tab-active { + color: $color__primary; + + > a { + color: $color__primary; + } + } + } +} + +/* Vertical */ +.wpeo-tab.tab-vertical { + .tab-list { + .tab-element { + /* Active */ + &.tab-active { + color: $color__primary; + a { + color: $color__primary; + } + } + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_table.scss b/core/asset/css/scss-frontend/external/eoframework-color/_table.scss new file mode 100644 index 0000000..41b9f30 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_table.scss @@ -0,0 +1,23 @@ + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: $color__primary; +} + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: $color__secondary; +} + + +@media ( max-width: $media__small ) { + .wpeo-table { + > tbody { + td, th { + &:before { + color: $color__primary; + } + } + } + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-color/_tooltip.scss b/core/asset/css/scss-frontend/external/eoframework-color/_tooltip.scss new file mode 100644 index 0000000..f5aa59b --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-color/_tooltip.scss @@ -0,0 +1,31 @@ +/* Couleurs */ +@mixin set-arrow-tooltip-color($color) { + &.tooltip-top::before { + border-color: $color transparent transparent transparent; + } + &.tooltip-right::before { + border-color: transparent $color transparent transparent; + } + &.tooltip-bottom::before { + border-color: transparent transparent $color transparent; + } + &.tooltip-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-tooltip { + &.tooltip-primary { + background: $color__primary; + @include set-arrow-tooltip-color($color__primary); + } + &.tooltip-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-tooltip-color($color__grey); + } + &.tooltip-red { + background: $color__red; + @include set-arrow-tooltip-color($color__red); + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-modules/_button.scss b/core/asset/css/scss-frontend/external/eoframework-modules/_button.scss new file mode 100644 index 0000000..58f6cd7 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-modules/_button.scss @@ -0,0 +1,11 @@ +.wpeo-button { + box-sizing: border-box; +} + +.wpeo-button { + &.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; + } +} diff --git a/core/asset/css/scss-frontend/external/eoframework-modules/_eoframework-modules.scss b/core/asset/css/scss-frontend/external/eoframework-modules/_eoframework-modules.scss new file mode 100644 index 0000000..c2dc3e4 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-modules/_eoframework-modules.scss @@ -0,0 +1,3 @@ +@import "button"; +@import "table"; +@import "notice"; diff --git a/core/asset/css/scss-frontend/external/eoframework-modules/_notice.scss b/core/asset/css/scss-frontend/external/eoframework-modules/_notice.scss new file mode 100644 index 0000000..1e213ee --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-modules/_notice.scss @@ -0,0 +1,3 @@ +.wps-account-page .wpeo-notice { + margin: 0; +} diff --git a/core/asset/css/scss-frontend/external/eoframework-modules/_table.scss b/core/asset/css/scss-frontend/external/eoframework-modules/_table.scss new file mode 100644 index 0000000..1ce5ab1 --- /dev/null +++ b/core/asset/css/scss-frontend/external/eoframework-modules/_table.scss @@ -0,0 +1,10 @@ +.wpeo-table.table-flex .table-cell { + $w: 25; + @for $i from 1 through 16 { + $y: $w*$i; + &.table-#{$y} { + max-width: #{$y}px; + min-width: #{$y}px; + } + } +} diff --git a/core/asset/css/scss-frontend/font/_font.scss b/core/asset/css/scss-frontend/font/_font.scss new file mode 100644 index 0000000..d78a165 --- /dev/null +++ b/core/asset/css/scss-frontend/font/_font.scss @@ -0,0 +1 @@ +@import "font-awesome/fontawesome"; diff --git a/core/asset/css/scss-frontend/font/font-awesome/_core.scss b/core/asset/css/scss-frontend/font/font-awesome/_core.scss new file mode 100644 index 0000000..a4ee7e8 --- /dev/null +++ b/core/asset/css/scss-frontend/font/font-awesome/_core.scss @@ -0,0 +1,20 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix}, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +%fa-icon { + @include fa-icon; +} diff --git a/core/asset/css/scss-frontend/font/font-awesome/_fontawesome.scss b/core/asset/css/scss-frontend/font/font-awesome/_fontawesome.scss new file mode 100644 index 0000000..35606cc --- /dev/null +++ b/core/asset/css/scss-frontend/font/font-awesome/_fontawesome.scss @@ -0,0 +1,7 @@ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +@import 'variables'; +@import 'mixins'; +@import 'core'; diff --git a/core/asset/css/scss-frontend/font/font-awesome/_mixins.scss b/core/asset/css/scss-frontend/font/font-awesome/_mixins.scss new file mode 100644 index 0000000..50a2e9f --- /dev/null +++ b/core/asset/css/scss-frontend/font/font-awesome/_mixins.scss @@ -0,0 +1,57 @@ +// Mixins +// -------------------------- + +@mixin fa-icon { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + } +} diff --git a/core/asset/css/scss-frontend/font/font-awesome/_variables.scss b/core/asset/css/scss-frontend/font/font-awesome/_variables.scss new file mode 100644 index 0000000..eb625f1 --- /dev/null +++ b/core/asset/css/scss-frontend/font/font-awesome/_variables.scss @@ -0,0 +1,1383 @@ +// Variables +// -------------------------- + +$fa-font-path: "../webfonts" !default; +$fa-font-size-base: 16px !default; +$fa-font-display: auto !default; +$fa-css-prefix: fa !default; +$fa-version: "5.8.2" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: 2em !default; +$fa-fw-width: (20em / 16); + +// Convenience function used to set content property +@function fa-content($fa-var) { + @return unquote("\"#{ $fa-var }\""); +} + +$fa-var-500px: \f26e; +$fa-var-accessible-icon: \f368; +$fa-var-accusoft: \f369; +$fa-var-acquisitions-incorporated: \f6af; +$fa-var-ad: \f641; +$fa-var-address-book: \f2b9; +$fa-var-address-card: \f2bb; +$fa-var-adjust: \f042; +$fa-var-adn: \f170; +$fa-var-adobe: \f778; +$fa-var-adversal: \f36a; +$fa-var-affiliatetheme: \f36b; +$fa-var-air-freshener: \f5d0; +$fa-var-airbnb: \f834; +$fa-var-algolia: \f36c; +$fa-var-align-center: \f037; +$fa-var-align-justify: \f039; +$fa-var-align-left: \f036; +$fa-var-align-right: \f038; +$fa-var-alipay: \f642; +$fa-var-allergies: \f461; +$fa-var-amazon: \f270; +$fa-var-amazon-pay: \f42c; +$fa-var-ambulance: \f0f9; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-amilia: \f36d; +$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-angry: \f556; +$fa-var-angrycreative: \f36e; +$fa-var-angular: \f420; +$fa-var-ankh: \f644; +$fa-var-app-store: \f36f; +$fa-var-app-store-ios: \f370; +$fa-var-apper: \f371; +$fa-var-apple: \f179; +$fa-var-apple-alt: \f5d1; +$fa-var-apple-pay: \f415; +$fa-var-archive: \f187; +$fa-var-archway: \f557; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-arrow-circle-left: \f0a8; +$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-alt: \f0b2; +$fa-var-arrows-alt-h: \f337; +$fa-var-arrows-alt-v: \f338; +$fa-var-artstation: \f77a; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-asterisk: \f069; +$fa-var-asymmetrik: \f372; +$fa-var-at: \f1fa; +$fa-var-atlas: \f558; +$fa-var-atlassian: \f77b; +$fa-var-atom: \f5d2; +$fa-var-audible: \f373; +$fa-var-audio-description: \f29e; +$fa-var-autoprefixer: \f41c; +$fa-var-avianex: \f374; +$fa-var-aviato: \f421; +$fa-var-award: \f559; +$fa-var-aws: \f375; +$fa-var-baby: \f77c; +$fa-var-baby-carriage: \f77d; +$fa-var-backspace: \f55a; +$fa-var-backward: \f04a; +$fa-var-bacon: \f7e5; +$fa-var-balance-scale: \f24e; +$fa-var-ban: \f05e; +$fa-var-band-aid: \f462; +$fa-var-bandcamp: \f2d5; +$fa-var-barcode: \f02a; +$fa-var-bars: \f0c9; +$fa-var-baseball-ball: \f433; +$fa-var-basketball-ball: \f434; +$fa-var-bath: \f2cd; +$fa-var-battery-empty: \f244; +$fa-var-battery-full: \f240; +$fa-var-battery-half: \f242; +$fa-var-battery-quarter: \f243; +$fa-var-battery-three-quarters: \f241; +$fa-var-battle-net: \f835; +$fa-var-bed: \f236; +$fa-var-beer: \f0fc; +$fa-var-behance: \f1b4; +$fa-var-behance-square: \f1b5; +$fa-var-bell: \f0f3; +$fa-var-bell-slash: \f1f6; +$fa-var-bezier-curve: \f55b; +$fa-var-bible: \f647; +$fa-var-bicycle: \f206; +$fa-var-bimobject: \f378; +$fa-var-binoculars: \f1e5; +$fa-var-biohazard: \f780; +$fa-var-birthday-cake: \f1fd; +$fa-var-bitbucket: \f171; +$fa-var-bitcoin: \f379; +$fa-var-bity: \f37a; +$fa-var-black-tie: \f27e; +$fa-var-blackberry: \f37b; +$fa-var-blender: \f517; +$fa-var-blender-phone: \f6b6; +$fa-var-blind: \f29d; +$fa-var-blog: \f781; +$fa-var-blogger: \f37c; +$fa-var-blogger-b: \f37d; +$fa-var-bluetooth: \f293; +$fa-var-bluetooth-b: \f294; +$fa-var-bold: \f032; +$fa-var-bolt: \f0e7; +$fa-var-bomb: \f1e2; +$fa-var-bone: \f5d7; +$fa-var-bong: \f55c; +$fa-var-book: \f02d; +$fa-var-book-dead: \f6b7; +$fa-var-book-medical: \f7e6; +$fa-var-book-open: \f518; +$fa-var-book-reader: \f5da; +$fa-var-bookmark: \f02e; +$fa-var-bootstrap: \f836; +$fa-var-bowling-ball: \f436; +$fa-var-box: \f466; +$fa-var-box-open: \f49e; +$fa-var-boxes: \f468; +$fa-var-braille: \f2a1; +$fa-var-brain: \f5dc; +$fa-var-bread-slice: \f7ec; +$fa-var-briefcase: \f0b1; +$fa-var-briefcase-medical: \f469; +$fa-var-broadcast-tower: \f519; +$fa-var-broom: \f51a; +$fa-var-brush: \f55d; +$fa-var-btc: \f15a; +$fa-var-buffer: \f837; +$fa-var-bug: \f188; +$fa-var-building: \f1ad; +$fa-var-bullhorn: \f0a1; +$fa-var-bullseye: \f140; +$fa-var-burn: \f46a; +$fa-var-buromobelexperte: \f37f; +$fa-var-bus: \f207; +$fa-var-bus-alt: \f55e; +$fa-var-business-time: \f64a; +$fa-var-buysellads: \f20d; +$fa-var-calculator: \f1ec; +$fa-var-calendar: \f133; +$fa-var-calendar-alt: \f073; +$fa-var-calendar-check: \f274; +$fa-var-calendar-day: \f783; +$fa-var-calendar-minus: \f272; +$fa-var-calendar-plus: \f271; +$fa-var-calendar-times: \f273; +$fa-var-calendar-week: \f784; +$fa-var-camera: \f030; +$fa-var-camera-retro: \f083; +$fa-var-campground: \f6bb; +$fa-var-canadian-maple-leaf: \f785; +$fa-var-candy-cane: \f786; +$fa-var-cannabis: \f55f; +$fa-var-capsules: \f46b; +$fa-var-car: \f1b9; +$fa-var-car-alt: \f5de; +$fa-var-car-battery: \f5df; +$fa-var-car-crash: \f5e1; +$fa-var-car-side: \f5e4; +$fa-var-caret-down: \f0d7; +$fa-var-caret-left: \f0d9; +$fa-var-caret-right: \f0da; +$fa-var-caret-square-down: \f150; +$fa-var-caret-square-left: \f191; +$fa-var-caret-square-right: \f152; +$fa-var-caret-square-up: \f151; +$fa-var-caret-up: \f0d8; +$fa-var-carrot: \f787; +$fa-var-cart-arrow-down: \f218; +$fa-var-cart-plus: \f217; +$fa-var-cash-register: \f788; +$fa-var-cat: \f6be; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-cc-amex: \f1f3; +$fa-var-cc-apple-pay: \f416; +$fa-var-cc-diners-club: \f24c; +$fa-var-cc-discover: \f1f2; +$fa-var-cc-jcb: \f24b; +$fa-var-cc-mastercard: \f1f1; +$fa-var-cc-paypal: \f1f4; +$fa-var-cc-stripe: \f1f5; +$fa-var-cc-visa: \f1f0; +$fa-var-centercode: \f380; +$fa-var-centos: \f789; +$fa-var-certificate: \f0a3; +$fa-var-chair: \f6c0; +$fa-var-chalkboard: \f51b; +$fa-var-chalkboard-teacher: \f51c; +$fa-var-charging-station: \f5e7; +$fa-var-chart-area: \f1fe; +$fa-var-chart-bar: \f080; +$fa-var-chart-line: \f201; +$fa-var-chart-pie: \f200; +$fa-var-check: \f00c; +$fa-var-check-circle: \f058; +$fa-var-check-double: \f560; +$fa-var-check-square: \f14a; +$fa-var-cheese: \f7ef; +$fa-var-chess: \f439; +$fa-var-chess-bishop: \f43a; +$fa-var-chess-board: \f43c; +$fa-var-chess-king: \f43f; +$fa-var-chess-knight: \f441; +$fa-var-chess-pawn: \f443; +$fa-var-chess-queen: \f445; +$fa-var-chess-rook: \f447; +$fa-var-chevron-circle-down: \f13a; +$fa-var-chevron-circle-left: \f137; +$fa-var-chevron-circle-right: \f138; +$fa-var-chevron-circle-up: \f139; +$fa-var-chevron-down: \f078; +$fa-var-chevron-left: \f053; +$fa-var-chevron-right: \f054; +$fa-var-chevron-up: \f077; +$fa-var-child: \f1ae; +$fa-var-chrome: \f268; +$fa-var-chromecast: \f838; +$fa-var-church: \f51d; +$fa-var-circle: \f111; +$fa-var-circle-notch: \f1ce; +$fa-var-city: \f64f; +$fa-var-clinic-medical: \f7f2; +$fa-var-clipboard: \f328; +$fa-var-clipboard-check: \f46c; +$fa-var-clipboard-list: \f46d; +$fa-var-clock: \f017; +$fa-var-clone: \f24d; +$fa-var-closed-captioning: \f20a; +$fa-var-cloud: \f0c2; +$fa-var-cloud-download-alt: \f381; +$fa-var-cloud-meatball: \f73b; +$fa-var-cloud-moon: \f6c3; +$fa-var-cloud-moon-rain: \f73c; +$fa-var-cloud-rain: \f73d; +$fa-var-cloud-showers-heavy: \f740; +$fa-var-cloud-sun: \f6c4; +$fa-var-cloud-sun-rain: \f743; +$fa-var-cloud-upload-alt: \f382; +$fa-var-cloudscale: \f383; +$fa-var-cloudsmith: \f384; +$fa-var-cloudversify: \f385; +$fa-var-cocktail: \f561; +$fa-var-code: \f121; +$fa-var-code-branch: \f126; +$fa-var-codepen: \f1cb; +$fa-var-codiepie: \f284; +$fa-var-coffee: \f0f4; +$fa-var-cog: \f013; +$fa-var-cogs: \f085; +$fa-var-coins: \f51e; +$fa-var-columns: \f0db; +$fa-var-comment: \f075; +$fa-var-comment-alt: \f27a; +$fa-var-comment-dollar: \f651; +$fa-var-comment-dots: \f4ad; +$fa-var-comment-medical: \f7f5; +$fa-var-comment-slash: \f4b3; +$fa-var-comments: \f086; +$fa-var-comments-dollar: \f653; +$fa-var-compact-disc: \f51f; +$fa-var-compass: \f14e; +$fa-var-compress: \f066; +$fa-var-compress-arrows-alt: \f78c; +$fa-var-concierge-bell: \f562; +$fa-var-confluence: \f78d; +$fa-var-connectdevelop: \f20e; +$fa-var-contao: \f26d; +$fa-var-cookie: \f563; +$fa-var-cookie-bite: \f564; +$fa-var-copy: \f0c5; +$fa-var-copyright: \f1f9; +$fa-var-couch: \f4b8; +$fa-var-cpanel: \f388; +$fa-var-creative-commons: \f25e; +$fa-var-creative-commons-by: \f4e7; +$fa-var-creative-commons-nc: \f4e8; +$fa-var-creative-commons-nc-eu: \f4e9; +$fa-var-creative-commons-nc-jp: \f4ea; +$fa-var-creative-commons-nd: \f4eb; +$fa-var-creative-commons-pd: \f4ec; +$fa-var-creative-commons-pd-alt: \f4ed; +$fa-var-creative-commons-remix: \f4ee; +$fa-var-creative-commons-sa: \f4ef; +$fa-var-creative-commons-sampling: \f4f0; +$fa-var-creative-commons-sampling-plus: \f4f1; +$fa-var-creative-commons-share: \f4f2; +$fa-var-creative-commons-zero: \f4f3; +$fa-var-credit-card: \f09d; +$fa-var-critical-role: \f6c9; +$fa-var-crop: \f125; +$fa-var-crop-alt: \f565; +$fa-var-cross: \f654; +$fa-var-crosshairs: \f05b; +$fa-var-crow: \f520; +$fa-var-crown: \f521; +$fa-var-crutch: \f7f7; +$fa-var-css3: \f13c; +$fa-var-css3-alt: \f38b; +$fa-var-cube: \f1b2; +$fa-var-cubes: \f1b3; +$fa-var-cut: \f0c4; +$fa-var-cuttlefish: \f38c; +$fa-var-d-and-d: \f38d; +$fa-var-d-and-d-beyond: \f6ca; +$fa-var-dashcube: \f210; +$fa-var-database: \f1c0; +$fa-var-deaf: \f2a4; +$fa-var-delicious: \f1a5; +$fa-var-democrat: \f747; +$fa-var-deploydog: \f38e; +$fa-var-deskpro: \f38f; +$fa-var-desktop: \f108; +$fa-var-dev: \f6cc; +$fa-var-deviantart: \f1bd; +$fa-var-dharmachakra: \f655; +$fa-var-dhl: \f790; +$fa-var-diagnoses: \f470; +$fa-var-diaspora: \f791; +$fa-var-dice: \f522; +$fa-var-dice-d20: \f6cf; +$fa-var-dice-d6: \f6d1; +$fa-var-dice-five: \f523; +$fa-var-dice-four: \f524; +$fa-var-dice-one: \f525; +$fa-var-dice-six: \f526; +$fa-var-dice-three: \f527; +$fa-var-dice-two: \f528; +$fa-var-digg: \f1a6; +$fa-var-digital-ocean: \f391; +$fa-var-digital-tachograph: \f566; +$fa-var-directions: \f5eb; +$fa-var-discord: \f392; +$fa-var-discourse: \f393; +$fa-var-divide: \f529; +$fa-var-dizzy: \f567; +$fa-var-dna: \f471; +$fa-var-dochub: \f394; +$fa-var-docker: \f395; +$fa-var-dog: \f6d3; +$fa-var-dollar-sign: \f155; +$fa-var-dolly: \f472; +$fa-var-dolly-flatbed: \f474; +$fa-var-donate: \f4b9; +$fa-var-door-closed: \f52a; +$fa-var-door-open: \f52b; +$fa-var-dot-circle: \f192; +$fa-var-dove: \f4ba; +$fa-var-download: \f019; +$fa-var-draft2digital: \f396; +$fa-var-drafting-compass: \f568; +$fa-var-dragon: \f6d5; +$fa-var-draw-polygon: \f5ee; +$fa-var-dribbble: \f17d; +$fa-var-dribbble-square: \f397; +$fa-var-dropbox: \f16b; +$fa-var-drum: \f569; +$fa-var-drum-steelpan: \f56a; +$fa-var-drumstick-bite: \f6d7; +$fa-var-drupal: \f1a9; +$fa-var-dumbbell: \f44b; +$fa-var-dumpster: \f793; +$fa-var-dumpster-fire: \f794; +$fa-var-dungeon: \f6d9; +$fa-var-dyalog: \f399; +$fa-var-earlybirds: \f39a; +$fa-var-ebay: \f4f4; +$fa-var-edge: \f282; +$fa-var-edit: \f044; +$fa-var-egg: \f7fb; +$fa-var-eject: \f052; +$fa-var-elementor: \f430; +$fa-var-ellipsis-h: \f141; +$fa-var-ellipsis-v: \f142; +$fa-var-ello: \f5f1; +$fa-var-ember: \f423; +$fa-var-empire: \f1d1; +$fa-var-envelope: \f0e0; +$fa-var-envelope-open: \f2b6; +$fa-var-envelope-open-text: \f658; +$fa-var-envelope-square: \f199; +$fa-var-envira: \f299; +$fa-var-equals: \f52c; +$fa-var-eraser: \f12d; +$fa-var-erlang: \f39d; +$fa-var-ethereum: \f42e; +$fa-var-ethernet: \f796; +$fa-var-etsy: \f2d7; +$fa-var-euro-sign: \f153; +$fa-var-evernote: \f839; +$fa-var-exchange-alt: \f362; +$fa-var-exclamation: \f12a; +$fa-var-exclamation-circle: \f06a; +$fa-var-exclamation-triangle: \f071; +$fa-var-expand: \f065; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-expeditedssl: \f23e; +$fa-var-external-link-alt: \f35d; +$fa-var-external-link-square-alt: \f360; +$fa-var-eye: \f06e; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-slash: \f070; +$fa-var-facebook: \f09a; +$fa-var-facebook-f: \f39e; +$fa-var-facebook-messenger: \f39f; +$fa-var-facebook-square: \f082; +$fa-var-fantasy-flight-games: \f6dc; +$fa-var-fast-backward: \f049; +$fa-var-fast-forward: \f050; +$fa-var-fax: \f1ac; +$fa-var-feather: \f52d; +$fa-var-feather-alt: \f56b; +$fa-var-fedex: \f797; +$fa-var-fedora: \f798; +$fa-var-female: \f182; +$fa-var-fighter-jet: \f0fb; +$fa-var-figma: \f799; +$fa-var-file: \f15b; +$fa-var-file-alt: \f15c; +$fa-var-file-archive: \f1c6; +$fa-var-file-audio: \f1c7; +$fa-var-file-code: \f1c9; +$fa-var-file-contract: \f56c; +$fa-var-file-csv: \f6dd; +$fa-var-file-download: \f56d; +$fa-var-file-excel: \f1c3; +$fa-var-file-export: \f56e; +$fa-var-file-image: \f1c5; +$fa-var-file-import: \f56f; +$fa-var-file-invoice: \f570; +$fa-var-file-invoice-dollar: \f571; +$fa-var-file-medical: \f477; +$fa-var-file-medical-alt: \f478; +$fa-var-file-pdf: \f1c1; +$fa-var-file-powerpoint: \f1c4; +$fa-var-file-prescription: \f572; +$fa-var-file-signature: \f573; +$fa-var-file-upload: \f574; +$fa-var-file-video: \f1c8; +$fa-var-file-word: \f1c2; +$fa-var-fill: \f575; +$fa-var-fill-drip: \f576; +$fa-var-film: \f008; +$fa-var-filter: \f0b0; +$fa-var-fingerprint: \f577; +$fa-var-fire: \f06d; +$fa-var-fire-alt: \f7e4; +$fa-var-fire-extinguisher: \f134; +$fa-var-firefox: \f269; +$fa-var-first-aid: \f479; +$fa-var-first-order: \f2b0; +$fa-var-first-order-alt: \f50a; +$fa-var-firstdraft: \f3a1; +$fa-var-fish: \f578; +$fa-var-fist-raised: \f6de; +$fa-var-flag: \f024; +$fa-var-flag-checkered: \f11e; +$fa-var-flag-usa: \f74d; +$fa-var-flask: \f0c3; +$fa-var-flickr: \f16e; +$fa-var-flipboard: \f44d; +$fa-var-flushed: \f579; +$fa-var-fly: \f417; +$fa-var-folder: \f07b; +$fa-var-folder-minus: \f65d; +$fa-var-folder-open: \f07c; +$fa-var-folder-plus: \f65e; +$fa-var-font: \f031; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-alt: \f35c; +$fa-var-font-awesome-flag: \f425; +$fa-var-font-awesome-logo-full: \f4e6; +$fa-var-fonticons: \f280; +$fa-var-fonticons-fi: \f3a2; +$fa-var-football-ball: \f44e; +$fa-var-fort-awesome: \f286; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-forumbee: \f211; +$fa-var-forward: \f04e; +$fa-var-foursquare: \f180; +$fa-var-free-code-camp: \f2c5; +$fa-var-freebsd: \f3a4; +$fa-var-frog: \f52e; +$fa-var-frown: \f119; +$fa-var-frown-open: \f57a; +$fa-var-fulcrum: \f50b; +$fa-var-funnel-dollar: \f662; +$fa-var-futbol: \f1e3; +$fa-var-galactic-republic: \f50c; +$fa-var-galactic-senate: \f50d; +$fa-var-gamepad: \f11b; +$fa-var-gas-pump: \f52f; +$fa-var-gavel: \f0e3; +$fa-var-gem: \f3a5; +$fa-var-genderless: \f22d; +$fa-var-get-pocket: \f265; +$fa-var-gg: \f260; +$fa-var-gg-circle: \f261; +$fa-var-ghost: \f6e2; +$fa-var-gift: \f06b; +$fa-var-gifts: \f79c; +$fa-var-git: \f1d3; +$fa-var-git-alt: \f841; +$fa-var-git-square: \f1d2; +$fa-var-github: \f09b; +$fa-var-github-alt: \f113; +$fa-var-github-square: \f092; +$fa-var-gitkraken: \f3a6; +$fa-var-gitlab: \f296; +$fa-var-gitter: \f426; +$fa-var-glass-cheers: \f79f; +$fa-var-glass-martini: \f000; +$fa-var-glass-martini-alt: \f57b; +$fa-var-glass-whiskey: \f7a0; +$fa-var-glasses: \f530; +$fa-var-glide: \f2a5; +$fa-var-glide-g: \f2a6; +$fa-var-globe: \f0ac; +$fa-var-globe-africa: \f57c; +$fa-var-globe-americas: \f57d; +$fa-var-globe-asia: \f57e; +$fa-var-globe-europe: \f7a2; +$fa-var-gofore: \f3a7; +$fa-var-golf-ball: \f450; +$fa-var-goodreads: \f3a8; +$fa-var-goodreads-g: \f3a9; +$fa-var-google: \f1a0; +$fa-var-google-drive: \f3aa; +$fa-var-google-play: \f3ab; +$fa-var-google-plus: \f2b3; +$fa-var-google-plus-g: \f0d5; +$fa-var-google-plus-square: \f0d4; +$fa-var-google-wallet: \f1ee; +$fa-var-gopuram: \f664; +$fa-var-graduation-cap: \f19d; +$fa-var-gratipay: \f184; +$fa-var-grav: \f2d6; +$fa-var-greater-than: \f531; +$fa-var-greater-than-equal: \f532; +$fa-var-grimace: \f57f; +$fa-var-grin: \f580; +$fa-var-grin-alt: \f581; +$fa-var-grin-beam: \f582; +$fa-var-grin-beam-sweat: \f583; +$fa-var-grin-hearts: \f584; +$fa-var-grin-squint: \f585; +$fa-var-grin-squint-tears: \f586; +$fa-var-grin-stars: \f587; +$fa-var-grin-tears: \f588; +$fa-var-grin-tongue: \f589; +$fa-var-grin-tongue-squint: \f58a; +$fa-var-grin-tongue-wink: \f58b; +$fa-var-grin-wink: \f58c; +$fa-var-grip-horizontal: \f58d; +$fa-var-grip-lines: \f7a4; +$fa-var-grip-lines-vertical: \f7a5; +$fa-var-grip-vertical: \f58e; +$fa-var-gripfire: \f3ac; +$fa-var-grunt: \f3ad; +$fa-var-guitar: \f7a6; +$fa-var-gulp: \f3ae; +$fa-var-h-square: \f0fd; +$fa-var-hacker-news: \f1d4; +$fa-var-hacker-news-square: \f3af; +$fa-var-hackerrank: \f5f7; +$fa-var-hamburger: \f805; +$fa-var-hammer: \f6e3; +$fa-var-hamsa: \f665; +$fa-var-hand-holding: \f4bd; +$fa-var-hand-holding-heart: \f4be; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-hand-lizard: \f258; +$fa-var-hand-middle-finger: \f806; +$fa-var-hand-paper: \f256; +$fa-var-hand-peace: \f25b; +$fa-var-hand-point-down: \f0a7; +$fa-var-hand-point-left: \f0a5; +$fa-var-hand-point-right: \f0a4; +$fa-var-hand-point-up: \f0a6; +$fa-var-hand-pointer: \f25a; +$fa-var-hand-rock: \f255; +$fa-var-hand-scissors: \f257; +$fa-var-hand-spock: \f259; +$fa-var-hands: \f4c2; +$fa-var-hands-helping: \f4c4; +$fa-var-handshake: \f2b5; +$fa-var-hanukiah: \f6e6; +$fa-var-hard-hat: \f807; +$fa-var-hashtag: \f292; +$fa-var-hat-wizard: \f6e8; +$fa-var-haykal: \f666; +$fa-var-hdd: \f0a0; +$fa-var-heading: \f1dc; +$fa-var-headphones: \f025; +$fa-var-headphones-alt: \f58f; +$fa-var-headset: \f590; +$fa-var-heart: \f004; +$fa-var-heart-broken: \f7a9; +$fa-var-heartbeat: \f21e; +$fa-var-helicopter: \f533; +$fa-var-highlighter: \f591; +$fa-var-hiking: \f6ec; +$fa-var-hippo: \f6ed; +$fa-var-hips: \f452; +$fa-var-hire-a-helper: \f3b0; +$fa-var-history: \f1da; +$fa-var-hockey-puck: \f453; +$fa-var-holly-berry: \f7aa; +$fa-var-home: \f015; +$fa-var-hooli: \f427; +$fa-var-hornbill: \f592; +$fa-var-horse: \f6f0; +$fa-var-horse-head: \f7ab; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f47d; +$fa-var-hospital-symbol: \f47e; +$fa-var-hot-tub: \f593; +$fa-var-hotdog: \f80f; +$fa-var-hotel: \f594; +$fa-var-hotjar: \f3b1; +$fa-var-hourglass: \f254; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-start: \f251; +$fa-var-house-damage: \f6f1; +$fa-var-houzz: \f27c; +$fa-var-hryvnia: \f6f2; +$fa-var-html5: \f13b; +$fa-var-hubspot: \f3b2; +$fa-var-i-cursor: \f246; +$fa-var-ice-cream: \f810; +$fa-var-icicles: \f7ad; +$fa-var-id-badge: \f2c1; +$fa-var-id-card: \f2c2; +$fa-var-id-card-alt: \f47f; +$fa-var-igloo: \f7ae; +$fa-var-image: \f03e; +$fa-var-images: \f302; +$fa-var-imdb: \f2d8; +$fa-var-inbox: \f01c; +$fa-var-indent: \f03c; +$fa-var-industry: \f275; +$fa-var-infinity: \f534; +$fa-var-info: \f129; +$fa-var-info-circle: \f05a; +$fa-var-instagram: \f16d; +$fa-var-intercom: \f7af; +$fa-var-internet-explorer: \f26b; +$fa-var-invision: \f7b0; +$fa-var-ioxhost: \f208; +$fa-var-italic: \f033; +$fa-var-itch-io: \f83a; +$fa-var-itunes: \f3b4; +$fa-var-itunes-note: \f3b5; +$fa-var-java: \f4e4; +$fa-var-jedi: \f669; +$fa-var-jedi-order: \f50e; +$fa-var-jenkins: \f3b6; +$fa-var-jira: \f7b1; +$fa-var-joget: \f3b7; +$fa-var-joint: \f595; +$fa-var-joomla: \f1aa; +$fa-var-journal-whills: \f66a; +$fa-var-js: \f3b8; +$fa-var-js-square: \f3b9; +$fa-var-jsfiddle: \f1cc; +$fa-var-kaaba: \f66b; +$fa-var-kaggle: \f5fa; +$fa-var-key: \f084; +$fa-var-keybase: \f4f5; +$fa-var-keyboard: \f11c; +$fa-var-keycdn: \f3ba; +$fa-var-khanda: \f66d; +$fa-var-kickstarter: \f3bb; +$fa-var-kickstarter-k: \f3bc; +$fa-var-kiss: \f596; +$fa-var-kiss-beam: \f597; +$fa-var-kiss-wink-heart: \f598; +$fa-var-kiwi-bird: \f535; +$fa-var-korvue: \f42f; +$fa-var-landmark: \f66f; +$fa-var-language: \f1ab; +$fa-var-laptop: \f109; +$fa-var-laptop-code: \f5fc; +$fa-var-laptop-medical: \f812; +$fa-var-laravel: \f3bd; +$fa-var-lastfm: \f202; +$fa-var-lastfm-square: \f203; +$fa-var-laugh: \f599; +$fa-var-laugh-beam: \f59a; +$fa-var-laugh-squint: \f59b; +$fa-var-laugh-wink: \f59c; +$fa-var-layer-group: \f5fd; +$fa-var-leaf: \f06c; +$fa-var-leanpub: \f212; +$fa-var-lemon: \f094; +$fa-var-less: \f41d; +$fa-var-less-than: \f536; +$fa-var-less-than-equal: \f537; +$fa-var-level-down-alt: \f3be; +$fa-var-level-up-alt: \f3bf; +$fa-var-life-ring: \f1cd; +$fa-var-lightbulb: \f0eb; +$fa-var-line: \f3c0; +$fa-var-link: \f0c1; +$fa-var-linkedin: \f08c; +$fa-var-linkedin-in: \f0e1; +$fa-var-linode: \f2b8; +$fa-var-linux: \f17c; +$fa-var-lira-sign: \f195; +$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-lock-open: \f3c1; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-low-vision: \f2a8; +$fa-var-luggage-cart: \f59d; +$fa-var-lyft: \f3c3; +$fa-var-magento: \f3c4; +$fa-var-magic: \f0d0; +$fa-var-magnet: \f076; +$fa-var-mail-bulk: \f674; +$fa-var-mailchimp: \f59e; +$fa-var-male: \f183; +$fa-var-mandalorian: \f50f; +$fa-var-map: \f279; +$fa-var-map-marked: \f59f; +$fa-var-map-marked-alt: \f5a0; +$fa-var-map-marker: \f041; +$fa-var-map-marker-alt: \f3c5; +$fa-var-map-pin: \f276; +$fa-var-map-signs: \f277; +$fa-var-markdown: \f60f; +$fa-var-marker: \f5a1; +$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-mask: \f6fa; +$fa-var-mastodon: \f4f6; +$fa-var-maxcdn: \f136; +$fa-var-medal: \f5a2; +$fa-var-medapps: \f3c6; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f3c7; +$fa-var-medkit: \f0fa; +$fa-var-medrt: \f3c8; +$fa-var-meetup: \f2e0; +$fa-var-megaport: \f5a3; +$fa-var-meh: \f11a; +$fa-var-meh-blank: \f5a4; +$fa-var-meh-rolling-eyes: \f5a5; +$fa-var-memory: \f538; +$fa-var-mendeley: \f7b3; +$fa-var-menorah: \f676; +$fa-var-mercury: \f223; +$fa-var-meteor: \f753; +$fa-var-microchip: \f2db; +$fa-var-microphone: \f130; +$fa-var-microphone-alt: \f3c9; +$fa-var-microphone-alt-slash: \f539; +$fa-var-microphone-slash: \f131; +$fa-var-microscope: \f610; +$fa-var-microsoft: \f3ca; +$fa-var-minus: \f068; +$fa-var-minus-circle: \f056; +$fa-var-minus-square: \f146; +$fa-var-mitten: \f7b5; +$fa-var-mix: \f3cb; +$fa-var-mixcloud: \f289; +$fa-var-mizuni: \f3cc; +$fa-var-mobile: \f10b; +$fa-var-mobile-alt: \f3cd; +$fa-var-modx: \f285; +$fa-var-monero: \f3d0; +$fa-var-money-bill: \f0d6; +$fa-var-money-bill-alt: \f3d1; +$fa-var-money-bill-wave: \f53a; +$fa-var-money-bill-wave-alt: \f53b; +$fa-var-money-check: \f53c; +$fa-var-money-check-alt: \f53d; +$fa-var-monument: \f5a6; +$fa-var-moon: \f186; +$fa-var-mortar-pestle: \f5a7; +$fa-var-mosque: \f678; +$fa-var-motorcycle: \f21c; +$fa-var-mountain: \f6fc; +$fa-var-mouse-pointer: \f245; +$fa-var-mug-hot: \f7b6; +$fa-var-music: \f001; +$fa-var-napster: \f3d2; +$fa-var-neos: \f612; +$fa-var-network-wired: \f6ff; +$fa-var-neuter: \f22c; +$fa-var-newspaper: \f1ea; +$fa-var-nimblr: \f5a8; +$fa-var-nintendo-switch: \f418; +$fa-var-node: \f419; +$fa-var-node-js: \f3d3; +$fa-var-not-equal: \f53e; +$fa-var-notes-medical: \f481; +$fa-var-npm: \f3d4; +$fa-var-ns8: \f3d5; +$fa-var-nutritionix: \f3d6; +$fa-var-object-group: \f247; +$fa-var-object-ungroup: \f248; +$fa-var-odnoklassniki: \f263; +$fa-var-odnoklassniki-square: \f264; +$fa-var-oil-can: \f613; +$fa-var-old-republic: \f510; +$fa-var-om: \f679; +$fa-var-opencart: \f23d; +$fa-var-openid: \f19b; +$fa-var-opera: \f26a; +$fa-var-optin-monster: \f23c; +$fa-var-osi: \f41a; +$fa-var-otter: \f700; +$fa-var-outdent: \f03b; +$fa-var-page4: \f3d7; +$fa-var-pagelines: \f18c; +$fa-var-pager: \f815; +$fa-var-paint-brush: \f1fc; +$fa-var-paint-roller: \f5aa; +$fa-var-palette: \f53f; +$fa-var-palfed: \f3d8; +$fa-var-pallet: \f482; +$fa-var-paper-plane: \f1d8; +$fa-var-paperclip: \f0c6; +$fa-var-parachute-box: \f4cd; +$fa-var-paragraph: \f1dd; +$fa-var-parking: \f540; +$fa-var-passport: \f5ab; +$fa-var-pastafarianism: \f67b; +$fa-var-paste: \f0ea; +$fa-var-patreon: \f3d9; +$fa-var-pause: \f04c; +$fa-var-pause-circle: \f28b; +$fa-var-paw: \f1b0; +$fa-var-paypal: \f1ed; +$fa-var-peace: \f67c; +$fa-var-pen: \f304; +$fa-var-pen-alt: \f305; +$fa-var-pen-fancy: \f5ac; +$fa-var-pen-nib: \f5ad; +$fa-var-pen-square: \f14b; +$fa-var-pencil-alt: \f303; +$fa-var-pencil-ruler: \f5ae; +$fa-var-penny-arcade: \f704; +$fa-var-people-carry: \f4ce; +$fa-var-pepper-hot: \f816; +$fa-var-percent: \f295; +$fa-var-percentage: \f541; +$fa-var-periscope: \f3da; +$fa-var-person-booth: \f756; +$fa-var-phabricator: \f3db; +$fa-var-phoenix-framework: \f3dc; +$fa-var-phoenix-squadron: \f511; +$fa-var-phone: \f095; +$fa-var-phone-slash: \f3dd; +$fa-var-phone-square: \f098; +$fa-var-phone-volume: \f2a0; +$fa-var-php: \f457; +$fa-var-pied-piper: \f2ae; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-piggy-bank: \f4d3; +$fa-var-pills: \f484; +$fa-var-pinterest: \f0d2; +$fa-var-pinterest-p: \f231; +$fa-var-pinterest-square: \f0d3; +$fa-var-pizza-slice: \f818; +$fa-var-place-of-worship: \f67f; +$fa-var-plane: \f072; +$fa-var-plane-arrival: \f5af; +$fa-var-plane-departure: \f5b0; +$fa-var-play: \f04b; +$fa-var-play-circle: \f144; +$fa-var-playstation: \f3df; +$fa-var-plug: \f1e6; +$fa-var-plus: \f067; +$fa-var-plus-circle: \f055; +$fa-var-plus-square: \f0fe; +$fa-var-podcast: \f2ce; +$fa-var-poll: \f681; +$fa-var-poll-h: \f682; +$fa-var-poo: \f2fe; +$fa-var-poo-storm: \f75a; +$fa-var-poop: \f619; +$fa-var-portrait: \f3e0; +$fa-var-pound-sign: \f154; +$fa-var-power-off: \f011; +$fa-var-pray: \f683; +$fa-var-praying-hands: \f684; +$fa-var-prescription: \f5b1; +$fa-var-prescription-bottle: \f485; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-print: \f02f; +$fa-var-procedures: \f487; +$fa-var-product-hunt: \f288; +$fa-var-project-diagram: \f542; +$fa-var-pushed: \f3e1; +$fa-var-puzzle-piece: \f12e; +$fa-var-python: \f3e2; +$fa-var-qq: \f1d6; +$fa-var-qrcode: \f029; +$fa-var-question: \f128; +$fa-var-question-circle: \f059; +$fa-var-quidditch: \f458; +$fa-var-quinscape: \f459; +$fa-var-quora: \f2c4; +$fa-var-quote-left: \f10d; +$fa-var-quote-right: \f10e; +$fa-var-quran: \f687; +$fa-var-r-project: \f4f7; +$fa-var-radiation: \f7b9; +$fa-var-radiation-alt: \f7ba; +$fa-var-rainbow: \f75b; +$fa-var-random: \f074; +$fa-var-raspberry-pi: \f7bb; +$fa-var-ravelry: \f2d9; +$fa-var-react: \f41b; +$fa-var-reacteurope: \f75d; +$fa-var-readme: \f4d5; +$fa-var-rebel: \f1d0; +$fa-var-receipt: \f543; +$fa-var-recycle: \f1b8; +$fa-var-red-river: \f3e3; +$fa-var-reddit: \f1a1; +$fa-var-reddit-alien: \f281; +$fa-var-reddit-square: \f1a2; +$fa-var-redhat: \f7bc; +$fa-var-redo: \f01e; +$fa-var-redo-alt: \f2f9; +$fa-var-registered: \f25d; +$fa-var-renren: \f18b; +$fa-var-reply: \f3e5; +$fa-var-reply-all: \f122; +$fa-var-replyd: \f3e6; +$fa-var-republican: \f75e; +$fa-var-researchgate: \f4f8; +$fa-var-resolving: \f3e7; +$fa-var-restroom: \f7bd; +$fa-var-retweet: \f079; +$fa-var-rev: \f5b2; +$fa-var-ribbon: \f4d6; +$fa-var-ring: \f70b; +$fa-var-road: \f018; +$fa-var-robot: \f544; +$fa-var-rocket: \f135; +$fa-var-rocketchat: \f3e8; +$fa-var-rockrms: \f3e9; +$fa-var-route: \f4d7; +$fa-var-rss: \f09e; +$fa-var-rss-square: \f143; +$fa-var-ruble-sign: \f158; +$fa-var-ruler: \f545; +$fa-var-ruler-combined: \f546; +$fa-var-ruler-horizontal: \f547; +$fa-var-ruler-vertical: \f548; +$fa-var-running: \f70c; +$fa-var-rupee-sign: \f156; +$fa-var-sad-cry: \f5b3; +$fa-var-sad-tear: \f5b4; +$fa-var-safari: \f267; +$fa-var-salesforce: \f83b; +$fa-var-sass: \f41e; +$fa-var-satellite: \f7bf; +$fa-var-satellite-dish: \f7c0; +$fa-var-save: \f0c7; +$fa-var-schlix: \f3ea; +$fa-var-school: \f549; +$fa-var-screwdriver: \f54a; +$fa-var-scribd: \f28a; +$fa-var-scroll: \f70e; +$fa-var-sd-card: \f7c2; +$fa-var-search: \f002; +$fa-var-search-dollar: \f688; +$fa-var-search-location: \f689; +$fa-var-search-minus: \f010; +$fa-var-search-plus: \f00e; +$fa-var-searchengin: \f3eb; +$fa-var-seedling: \f4d8; +$fa-var-sellcast: \f2da; +$fa-var-sellsy: \f213; +$fa-var-server: \f233; +$fa-var-servicestack: \f3ec; +$fa-var-shapes: \f61f; +$fa-var-share: \f064; +$fa-var-share-alt: \f1e0; +$fa-var-share-alt-square: \f1e1; +$fa-var-share-square: \f14d; +$fa-var-shekel-sign: \f20b; +$fa-var-shield-alt: \f3ed; +$fa-var-ship: \f21a; +$fa-var-shipping-fast: \f48b; +$fa-var-shirtsinbulk: \f214; +$fa-var-shoe-prints: \f54b; +$fa-var-shopping-bag: \f290; +$fa-var-shopping-basket: \f291; +$fa-var-shopping-cart: \f07a; +$fa-var-shopware: \f5b5; +$fa-var-shower: \f2cc; +$fa-var-shuttle-van: \f5b6; +$fa-var-sign: \f4d9; +$fa-var-sign-in-alt: \f2f6; +$fa-var-sign-language: \f2a7; +$fa-var-sign-out-alt: \f2f5; +$fa-var-signal: \f012; +$fa-var-signature: \f5b7; +$fa-var-sim-card: \f7c4; +$fa-var-simplybuilt: \f215; +$fa-var-sistrix: \f3ee; +$fa-var-sitemap: \f0e8; +$fa-var-sith: \f512; +$fa-var-skating: \f7c5; +$fa-var-sketch: \f7c6; +$fa-var-skiing: \f7c9; +$fa-var-skiing-nordic: \f7ca; +$fa-var-skull: \f54c; +$fa-var-skull-crossbones: \f714; +$fa-var-skyatlas: \f216; +$fa-var-skype: \f17e; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f3ef; +$fa-var-slash: \f715; +$fa-var-sleigh: \f7cc; +$fa-var-sliders-h: \f1de; +$fa-var-slideshare: \f1e7; +$fa-var-smile: \f118; +$fa-var-smile-beam: \f5b8; +$fa-var-smile-wink: \f4da; +$fa-var-smog: \f75f; +$fa-var-smoking: \f48d; +$fa-var-smoking-ban: \f54d; +$fa-var-sms: \f7cd; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ac; +$fa-var-snapchat-square: \f2ad; +$fa-var-snowboarding: \f7ce; +$fa-var-snowflake: \f2dc; +$fa-var-snowman: \f7d0; +$fa-var-snowplow: \f7d2; +$fa-var-socks: \f696; +$fa-var-solar-panel: \f5ba; +$fa-var-sort: \f0dc; +$fa-var-sort-alpha-down: \f15d; +$fa-var-sort-alpha-up: \f15e; +$fa-var-sort-amount-down: \f160; +$fa-var-sort-amount-up: \f161; +$fa-var-sort-down: \f0dd; +$fa-var-sort-numeric-down: \f162; +$fa-var-sort-numeric-up: \f163; +$fa-var-sort-up: \f0de; +$fa-var-soundcloud: \f1be; +$fa-var-sourcetree: \f7d3; +$fa-var-spa: \f5bb; +$fa-var-space-shuttle: \f197; +$fa-var-speakap: \f3f3; +$fa-var-speaker-deck: \f83c; +$fa-var-spider: \f717; +$fa-var-spinner: \f110; +$fa-var-splotch: \f5bc; +$fa-var-spotify: \f1bc; +$fa-var-spray-can: \f5bd; +$fa-var-square: \f0c8; +$fa-var-square-full: \f45c; +$fa-var-square-root-alt: \f698; +$fa-var-squarespace: \f5be; +$fa-var-stack-exchange: \f18d; +$fa-var-stack-overflow: \f16c; +$fa-var-stackpath: \f842; +$fa-var-stamp: \f5bf; +$fa-var-star: \f005; +$fa-var-star-and-crescent: \f699; +$fa-var-star-half: \f089; +$fa-var-star-half-alt: \f5c0; +$fa-var-star-of-david: \f69a; +$fa-var-star-of-life: \f621; +$fa-var-staylinked: \f3f5; +$fa-var-steam: \f1b6; +$fa-var-steam-square: \f1b7; +$fa-var-steam-symbol: \f3f6; +$fa-var-step-backward: \f048; +$fa-var-step-forward: \f051; +$fa-var-stethoscope: \f0f1; +$fa-var-sticker-mule: \f3f7; +$fa-var-sticky-note: \f249; +$fa-var-stop: \f04d; +$fa-var-stop-circle: \f28d; +$fa-var-stopwatch: \f2f2; +$fa-var-store: \f54e; +$fa-var-store-alt: \f54f; +$fa-var-strava: \f428; +$fa-var-stream: \f550; +$fa-var-street-view: \f21d; +$fa-var-strikethrough: \f0cc; +$fa-var-stripe: \f429; +$fa-var-stripe-s: \f42a; +$fa-var-stroopwafel: \f551; +$fa-var-studiovinari: \f3f8; +$fa-var-stumbleupon: \f1a4; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-subscript: \f12c; +$fa-var-subway: \f239; +$fa-var-suitcase: \f0f2; +$fa-var-suitcase-rolling: \f5c1; +$fa-var-sun: \f185; +$fa-var-superpowers: \f2dd; +$fa-var-superscript: \f12b; +$fa-var-supple: \f3f9; +$fa-var-surprise: \f5c2; +$fa-var-suse: \f7d6; +$fa-var-swatchbook: \f5c3; +$fa-var-swimmer: \f5c4; +$fa-var-swimming-pool: \f5c5; +$fa-var-symfony: \f83d; +$fa-var-synagogue: \f69b; +$fa-var-sync: \f021; +$fa-var-sync-alt: \f2f1; +$fa-var-syringe: \f48e; +$fa-var-table: \f0ce; +$fa-var-table-tennis: \f45d; +$fa-var-tablet: \f10a; +$fa-var-tablet-alt: \f3fa; +$fa-var-tablets: \f490; +$fa-var-tachometer-alt: \f3fd; +$fa-var-tag: \f02b; +$fa-var-tags: \f02c; +$fa-var-tape: \f4db; +$fa-var-tasks: \f0ae; +$fa-var-taxi: \f1ba; +$fa-var-teamspeak: \f4f9; +$fa-var-teeth: \f62e; +$fa-var-teeth-open: \f62f; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f3fe; +$fa-var-temperature-high: \f769; +$fa-var-temperature-low: \f76b; +$fa-var-tencent-weibo: \f1d5; +$fa-var-tenge: \f7d7; +$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-the-red-yeti: \f69d; +$fa-var-theater-masks: \f630; +$fa-var-themeco: \f5c6; +$fa-var-themeisle: \f2b2; +$fa-var-thermometer: \f491; +$fa-var-thermometer-empty: \f2cb; +$fa-var-thermometer-full: \f2c7; +$fa-var-thermometer-half: \f2c9; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-think-peaks: \f731; +$fa-var-thumbs-down: \f165; +$fa-var-thumbs-up: \f164; +$fa-var-thumbtack: \f08d; +$fa-var-ticket-alt: \f3ff; +$fa-var-times: \f00d; +$fa-var-times-circle: \f057; +$fa-var-tint: \f043; +$fa-var-tint-slash: \f5c7; +$fa-var-tired: \f5c8; +$fa-var-toggle-off: \f204; +$fa-var-toggle-on: \f205; +$fa-var-toilet: \f7d8; +$fa-var-toilet-paper: \f71e; +$fa-var-toolbox: \f552; +$fa-var-tools: \f7d9; +$fa-var-tooth: \f5c9; +$fa-var-torah: \f6a0; +$fa-var-torii-gate: \f6a1; +$fa-var-tractor: \f722; +$fa-var-trade-federation: \f513; +$fa-var-trademark: \f25c; +$fa-var-traffic-light: \f637; +$fa-var-train: \f238; +$fa-var-tram: \f7da; +$fa-var-transgender: \f224; +$fa-var-transgender-alt: \f225; +$fa-var-trash: \f1f8; +$fa-var-trash-alt: \f2ed; +$fa-var-trash-restore: \f829; +$fa-var-trash-restore-alt: \f82a; +$fa-var-tree: \f1bb; +$fa-var-trello: \f181; +$fa-var-tripadvisor: \f262; +$fa-var-trophy: \f091; +$fa-var-truck: \f0d1; +$fa-var-truck-loading: \f4de; +$fa-var-truck-monster: \f63b; +$fa-var-truck-moving: \f4df; +$fa-var-truck-pickup: \f63c; +$fa-var-tshirt: \f553; +$fa-var-tty: \f1e4; +$fa-var-tumblr: \f173; +$fa-var-tumblr-square: \f174; +$fa-var-tv: \f26c; +$fa-var-twitch: \f1e8; +$fa-var-twitter: \f099; +$fa-var-twitter-square: \f081; +$fa-var-typo3: \f42b; +$fa-var-uber: \f402; +$fa-var-ubuntu: \f7df; +$fa-var-uikit: \f403; +$fa-var-umbrella: \f0e9; +$fa-var-umbrella-beach: \f5ca; +$fa-var-underline: \f0cd; +$fa-var-undo: \f0e2; +$fa-var-undo-alt: \f2ea; +$fa-var-uniregistry: \f404; +$fa-var-universal-access: \f29a; +$fa-var-university: \f19c; +$fa-var-unlink: \f127; +$fa-var-unlock: \f09c; +$fa-var-unlock-alt: \f13e; +$fa-var-untappd: \f405; +$fa-var-upload: \f093; +$fa-var-ups: \f7e0; +$fa-var-usb: \f287; +$fa-var-user: \f007; +$fa-var-user-alt: \f406; +$fa-var-user-alt-slash: \f4fa; +$fa-var-user-astronaut: \f4fb; +$fa-var-user-check: \f4fc; +$fa-var-user-circle: \f2bd; +$fa-var-user-clock: \f4fd; +$fa-var-user-cog: \f4fe; +$fa-var-user-edit: \f4ff; +$fa-var-user-friends: \f500; +$fa-var-user-graduate: \f501; +$fa-var-user-injured: \f728; +$fa-var-user-lock: \f502; +$fa-var-user-md: \f0f0; +$fa-var-user-minus: \f503; +$fa-var-user-ninja: \f504; +$fa-var-user-nurse: \f82f; +$fa-var-user-plus: \f234; +$fa-var-user-secret: \f21b; +$fa-var-user-shield: \f505; +$fa-var-user-slash: \f506; +$fa-var-user-tag: \f507; +$fa-var-user-tie: \f508; +$fa-var-user-times: \f235; +$fa-var-users: \f0c0; +$fa-var-users-cog: \f509; +$fa-var-usps: \f7e1; +$fa-var-ussunnah: \f407; +$fa-var-utensil-spoon: \f2e5; +$fa-var-utensils: \f2e7; +$fa-var-vaadin: \f408; +$fa-var-vector-square: \f5cb; +$fa-var-venus: \f221; +$fa-var-venus-double: \f226; +$fa-var-venus-mars: \f228; +$fa-var-viacoin: \f237; +$fa-var-viadeo: \f2a9; +$fa-var-viadeo-square: \f2aa; +$fa-var-vial: \f492; +$fa-var-vials: \f493; +$fa-var-viber: \f409; +$fa-var-video: \f03d; +$fa-var-video-slash: \f4e2; +$fa-var-vihara: \f6a7; +$fa-var-vimeo: \f40a; +$fa-var-vimeo-square: \f194; +$fa-var-vimeo-v: \f27d; +$fa-var-vine: \f1ca; +$fa-var-vk: \f189; +$fa-var-vnv: \f40b; +$fa-var-volleyball-ball: \f45f; +$fa-var-volume-down: \f027; +$fa-var-volume-mute: \f6a9; +$fa-var-volume-off: \f026; +$fa-var-volume-up: \f028; +$fa-var-vote-yea: \f772; +$fa-var-vr-cardboard: \f729; +$fa-var-vuejs: \f41f; +$fa-var-walking: \f554; +$fa-var-wallet: \f555; +$fa-var-warehouse: \f494; +$fa-var-water: \f773; +$fa-var-wave-square: \f83e; +$fa-var-waze: \f83f; +$fa-var-weebly: \f5cc; +$fa-var-weibo: \f18a; +$fa-var-weight: \f496; +$fa-var-weight-hanging: \f5cd; +$fa-var-weixin: \f1d7; +$fa-var-whatsapp: \f232; +$fa-var-whatsapp-square: \f40c; +$fa-var-wheelchair: \f193; +$fa-var-whmcs: \f40d; +$fa-var-wifi: \f1eb; +$fa-var-wikipedia-w: \f266; +$fa-var-wind: \f72e; +$fa-var-window-close: \f410; +$fa-var-window-maximize: \f2d0; +$fa-var-window-minimize: \f2d1; +$fa-var-window-restore: \f2d2; +$fa-var-windows: \f17a; +$fa-var-wine-bottle: \f72f; +$fa-var-wine-glass: \f4e3; +$fa-var-wine-glass-alt: \f5ce; +$fa-var-wix: \f5cf; +$fa-var-wizards-of-the-coast: \f730; +$fa-var-wolf-pack-battalion: \f514; +$fa-var-won-sign: \f159; +$fa-var-wordpress: \f19a; +$fa-var-wordpress-simple: \f411; +$fa-var-wpbeginner: \f297; +$fa-var-wpexplorer: \f2de; +$fa-var-wpforms: \f298; +$fa-var-wpressr: \f3e4; +$fa-var-wrench: \f0ad; +$fa-var-x-ray: \f497; +$fa-var-xbox: \f412; +$fa-var-xing: \f168; +$fa-var-xing-square: \f169; +$fa-var-y-combinator: \f23b; +$fa-var-yahoo: \f19e; +$fa-var-yammer: \f840; +$fa-var-yandex: \f413; +$fa-var-yandex-international: \f414; +$fa-var-yarn: \f7e3; +$fa-var-yelp: \f1e9; +$fa-var-yen-sign: \f157; +$fa-var-yin-yang: \f6ad; +$fa-var-yoast: \f2b1; +$fa-var-youtube: \f167; +$fa-var-youtube-square: \f431; +$fa-var-zhihu: \f63f; diff --git a/core/asset/css/scss-frontend/index.php b/core/asset/css/scss-frontend/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/asset/css/scss-frontend/index.php @@ -0,0 +1,2 @@ + * { + display: inline-block; + } + .wpeo-button { + margin-right: 1em; + } +} diff --git a/core/asset/css/scss/element/_metabox-list.scss b/core/asset/css/scss/element/_metabox-list.scss new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/core/asset/css/scss/element/_metabox-list.scss @@ -0,0 +1 @@ + diff --git a/core/asset/css/scss/element/_metabox.scss b/core/asset/css/scss/element/_metabox.scss new file mode 100644 index 0000000..c2b721f --- /dev/null +++ b/core/asset/css/scss/element/_metabox.scss @@ -0,0 +1,37 @@ +.wps-metabox { + background: #fff; + padding: 2em; + position: relative; + + .metabox-title { + font-weight: 300; + font-size: 22px; + margin: 0 0 1em 0; + } + .metabox-edit { + position: absolute; + top: 1em; + right: 1em; + } +} + +/** Metabox List */ +.wps-metabox { + .metabox-list-title { + font-size: 16px; + margin: 0 0 1em 0; + } + + .metabox-list { + margin: 0; + + li { + margin: 0; + + span { + font-weight: 700; + margin-right: 0.4em; + } + } + } +} diff --git a/core/asset/css/scss/element/_page-header.scss b/core/asset/css/scss/element/_page-header.scss new file mode 100644 index 0000000..beb26a9 --- /dev/null +++ b/core/asset/css/scss/element/_page-header.scss @@ -0,0 +1,20 @@ +.page-header { + display: flex; + padding-top: 9px; + margin-bottom: 1.8em; + + h2 { + font-size: 23px; + font-weight: 400; + margin: 0; + padding: 0; + line-height: 29px; + } + .wps-edit-title { + margin: 0 0.6em; + vertical-align: top; + } + .wps-sync { + margin: auto 1em; + } +} diff --git a/core/asset/css/scss/element/_status.scss b/core/asset/css/scss/element/_status.scss new file mode 100644 index 0000000..500d0a7 --- /dev/null +++ b/core/asset/css/scss/element/_status.scss @@ -0,0 +1,16 @@ +.wps-status { + font-weight: 600; + + &.status-grey { + color: #ababab; + } + &.status-green { + color: #19d854; + } + &.status-orange { + color: #ffa500; + } + &.status-red { + color: #ff1818; + } +} diff --git a/core/asset/css/scss/element/_sync-element.scss b/core/asset/css/scss/element/_sync-element.scss new file mode 100644 index 0000000..738ea16 --- /dev/null +++ b/core/asset/css/scss/element/_sync-element.scss @@ -0,0 +1,49 @@ +/** Synchro */ +.wps-sync { + .button-synchro { + float: left; + width: 25px; + height: 25px; + background: rgba(0,0,0,0.1); + color: rgba(0,0,0,0.6); + text-align: center; + line-height: 25px; + border-radius: 50%; + @include transition(); + + i { + @include transition(); + } + + &:hover { + cursor: pointer; + background: rgba(0,0,0,0.2); + + i { + transform: rotate(180deg); + } + } + } + + .statut { + float: left; + width: 25px; + height: 25px; + border-radius: 50%; + margin-left: 0.6em; + background: rgba(0,0,0,0.1); + + &.statut-grey { + background: $color__grey; + } + &.statut-green { + background: $color__green; + } + &.statut-orange { + background: $color__yellow; + } + &.statut-red { + background: $color__red; + } + } +} diff --git a/core/asset/css/scss/element/table/_commercial.scss b/core/asset/css/scss/element/table/_commercial.scss new file mode 100644 index 0000000..c92ca48 --- /dev/null +++ b/core/asset/css/scss/element/table/_commercial.scss @@ -0,0 +1,8 @@ +.wpeo-table .list-commercial { + .commercial-date { + color: rgba(0,0,0,0.4); + } + .commercial-title { + color: $color__primary; + } +} diff --git a/core/asset/css/scss/element/table/_flex.scss b/core/asset/css/scss/element/table/_flex.scss new file mode 100644 index 0000000..f65d602 --- /dev/null +++ b/core/asset/css/scss/element/table/_flex.scss @@ -0,0 +1,36 @@ +.wpeo-table.table-flex { + border: 0; + background: #fff; + + .table-row.table-header { + background: #fff; + border-bottom: 2px solid rgba(0,0,0,0.3); + + .table-cell { + color: rgba(0,0,0,0.8); + } + } + .table-row:not(.table-header):nth-of-type(odd) { + background: rgba(0,0,0,0.02); + } + .table-button-edit { + color: $color__primary + } + input[type=date], + input[type=datetime-local], + input[type=datetime], + input[type=email], + input[type=month], + input[type=number], + input[type=password], + input[type=search], + input[type=tel], + input[type=text], + input[type=time], + input[type=url], + input[type=week], + select, + textarea { + width: 100%; + } +} diff --git a/core/asset/css/scss/element/table/_list-contact.scss b/core/asset/css/scss/element/table/_list-contact.scss new file mode 100644 index 0000000..bdcca09 --- /dev/null +++ b/core/asset/css/scss/element/table/_list-contact.scss @@ -0,0 +1,26 @@ +.wpeo-table .list-contact { + .contact { + margin-bottom: 0.6em; + + &:last-child { + margin-bottom: 0; + } + } + .contact-title { + font-size: 16px; + } + .contact-list-data { + margin: 0; + } + .contact-data { + display: inline-block; + margin: 0 0.4em 0 0; + + &:last-child { + margin: 0; + } + i { + color: rgba(0,0,0,0.2); + } + } +} diff --git a/core/asset/css/scss/element/table/_list-product.scss b/core/asset/css/scss/element/table/_list-product.scss new file mode 100644 index 0000000..a359e25 --- /dev/null +++ b/core/asset/css/scss/element/table/_list-product.scss @@ -0,0 +1,5 @@ +.wps-list-product { + img { + display: block; + } +} diff --git a/core/asset/css/scss/element/table/_reference.scss b/core/asset/css/scss/element/table/_reference.scss new file mode 100644 index 0000000..e995485 --- /dev/null +++ b/core/asset/css/scss/element/table/_reference.scss @@ -0,0 +1,80 @@ +.wpeo-table.table-flex { + .reference-id { + margin: 0; + + li { + display: inline-block; + margin: 0 0.6em 0 0; + color: rgba(0,0,0,0.4); + + &:last-child { + margin: 0; + } + } + } + + .reference-title { + font-size: 20px; + + a { + color: rgba(0,0,0,0.8); + @include transition(); + text-decoration: none; + + &:hover { + color: rgba(0,0,0,0.5); + } + } + } + + .reference-content { + font-size: 14px; + margin: 0.2em 0; + + i { + color: rgba(0,0,0,0.2); + } + } + + .reference-actions { + margin: 0.6em 0 0 0; + line-height: 1; + opacity: 0; + pointer-events: none; + @include transition(); + + li { + display: inline-block; + margin: 0 0.3em 0 0; + padding-right: 0.3em; + border-right: 1px solid rgba(0,0,0,0.2); + + a { + color: $color__primary; + text-decoration: none; + + &:hover { + color: rgba( $color__primary, 0.7 ); + } + } + &.delete a { + color: $color__red; + + &:hover { + color: rgba( $color__red, 0.7 ); + } + } + &:last-child { + margin: 0; + padding: 0; + border-right: 0; + } + } + } + .table-row { + &:hover .reference-actions { + opacity: 1; + pointer-events: all; + } + } +} diff --git a/core/asset/css/scss/element/table/_table.scss b/core/asset/css/scss/element/table/_table.scss new file mode 100644 index 0000000..db732b9 --- /dev/null +++ b/core/asset/css/scss/element/table/_table.scss @@ -0,0 +1,35 @@ +@import "reference"; +@import "list-product"; +@import "list-contact"; +@import "commercial"; +@import "flex"; + +.wpeo-table { + td, th { + border: 0; + } + + td.table-end, th.table-end { + text-align: right; + } + + > tfoot { + background: rgba(0,0,0,0.05); + color: rgba(0,0,0,0.8); + + td { + padding: .2em .6em; + border: 1px solid rgba(0,0,0,0.1); + } + } + a:not(.wpeo-button) { + color: $color__primary; + text-decoration: none; + } +} + +.wps-checkout-review-order-table { + tbody tr td:last-child, tfoot tr td:last-child { + text-align: right; + } +} diff --git a/core/asset/css/scss/external/_button.scss b/core/asset/css/scss/external/_button.scss new file mode 100644 index 0000000..58f6cd7 --- /dev/null +++ b/core/asset/css/scss/external/_button.scss @@ -0,0 +1,11 @@ +.wpeo-button { + box-sizing: border-box; +} + +.wpeo-button { + &.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; + } +} diff --git a/core/asset/css/scss/external/_external.scss b/core/asset/css/scss/external/_external.scss new file mode 100644 index 0000000..ea5fd6c --- /dev/null +++ b/core/asset/css/scss/external/_external.scss @@ -0,0 +1,3 @@ +@import "eoframework-color/eoframework-color"; +@import "button"; +@import "table"; diff --git a/core/asset/css/scss/external/_table.scss b/core/asset/css/scss/external/_table.scss new file mode 100644 index 0000000..1ce5ab1 --- /dev/null +++ b/core/asset/css/scss/external/_table.scss @@ -0,0 +1,10 @@ +.wpeo-table.table-flex .table-cell { + $w: 25; + @for $i from 1 through 16 { + $y: $w*$i; + &.table-#{$y} { + max-width: #{$y}px; + min-width: #{$y}px; + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_autocomplete.scss b/core/asset/css/scss/external/eoframework-color/_autocomplete.scss new file mode 100644 index 0000000..20ffc50 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_autocomplete.scss @@ -0,0 +1,13 @@ +.wpeo-autocomplete { + .autocomplete-label { + &:hover { + border: 1px solid $color__primary; + } + .autocomplete-loading { + background: $color__primary; + } + .autocomplete-loading-background { + background: rgba($color__primary, 0.4); + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_button.scss b/core/asset/css/scss/external/eoframework-color/_button.scss new file mode 100644 index 0000000..76a7488 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_button.scss @@ -0,0 +1,140 @@ +// Bouton plein +.wpeo-button, a.wpeo-button { + /* par défaut */ + background: $color__primary; + border-color: $color__primary; + + &.button-main { + background: $color__primary; + border-color: $color__primary; + } + &.button-dark { + background: $color__secondary; + border-color: $color__secondary; + } + &.button-grey { + background: $color__grey; + border-color: $color__grey; + } + &.button-red { + background: $color__red; + border-color: $color__red; + } + &.button-yellow { + background: $color__yellow; + border-color: $color__yellow; + } + &.button-green { + background: $color__green; + border-color: $color__green; + } + &.button-pink { + background: $color__pink; + border-color: $color__pink; + } + &.button-purple { + background: $color__purple; + border-color: $color__purple; + } + &.button-grey { + background: $color__grey; + border-color: $color__grey; + } + &.button-transparent { + background: transparent; + border-color: transparent; + } +} + +// Bordered +.wpeo-button.button-bordered { + border-color: $color__primary; + color: $color__primary; + + &.button-main { + border-color: $color__primary; + color: $color__primary; + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + } + } + &.button-dark { + border-color: $color__secondary; + color: $color__secondary; + &:hover { + box-shadow: inset 0 -2.6em $color__secondary; + } + } + &.button-grey { + border-color: $color__grey; + color: darken($color__grey, 30%); + &:hover { + box-shadow: inset 0 -2.6em $color__grey; + } + } + &.button-red { + border-color: $color__red; + color: $color__red; + &:hover { + box-shadow: inset 0 -2.6em $color__red; + } + } + &.button-yellow { + border-color: $color__yellow; + color: $color__yellow; + &:hover { + box-shadow: inset 0 -2.6em $color__yellow; + } + } + &.button-green { + border-color: $color__green; + color: $color__green; + &:hover { + box-shadow: inset 0 -2.6em $color__green; + } + } + &.button-pink { + border-color: $color__pink; + color: $color__pink; + &:hover { + box-shadow: inset 0 -2.6em $color__pink; + } + } + &.button-purple { + border-color: $color__purple; + color: $color__purple; + &:hover { + box-shadow: inset 0 -2.6em $color__purple; + } + } + &.button-grey { + border-color: $color__grey; + color: $color__grey; + &:hover { + box-shadow: inset 0 -2.6em $color__grey; + } + } + + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + } +} + + +/** Progress button */ +.wpeo-button.button-progress { + &.button-success { + background: $color__green; + border-color: $color__green; + } + &.button-error { + background: $color__red; + border-color: $color__red; + } + &.button-load { + background: $color__grey; + &:before { + border-top: 3px solid $color__primary; + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_eoframework-color.scss b/core/asset/css/scss/external/eoframework-color/_eoframework-color.scss new file mode 100644 index 0000000..3260d18 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_eoframework-color.scss @@ -0,0 +1,11 @@ +@import "autocomplete"; +@import "button"; +@import "form"; +@import "loader"; +@import "modal"; +@import "notification"; +@import "pagination"; +@import "popover"; +@import "tab"; +@import "table"; +@import "tooltip"; diff --git a/core/asset/css/scss/external/eoframework-color/_form.scss b/core/asset/css/scss/external/eoframework-color/_form.scss new file mode 100644 index 0000000..448c9e3 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_form.scss @@ -0,0 +1,24 @@ +.wpeo-form .form-element { + input[type="checkbox"].form-field { + &:not(:checked) + label:hover::before { + box-shadow: 0 0 0 2px $color__primary; + } + &:checked + label { + &::before { + box-shadow: 0 0 0 2px $color__primary; + background: $color__primary; + } + } + } + + input[type="radio"].form-field { + &:hover { + border: 1px solid $color__primary; + box-shadow: 0 0 0 1px $color__primary inset; + } + &:checked { + border: 1px solid $color__primary; + box-shadow: 0 0 0 4px $color__primary inset; + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_loader.scss b/core/asset/css/scss/external/eoframework-color/_loader.scss new file mode 100644 index 0000000..7eb18b1 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_loader.scss @@ -0,0 +1,5 @@ +.wpeo-loader { + .loader-spin { + border-top: 3px solid $color__primary; + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_modal.scss b/core/asset/css/scss/external/eoframework-color/_modal.scss new file mode 100644 index 0000000..92b0944 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_modal.scss @@ -0,0 +1,9 @@ +.wpeo-modal { + .modal-container .modal-header { + .modal-close { + &:hover { + color: $color__primary; + } + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_notification.scss b/core/asset/css/scss/external/eoframework-color/_notification.scss new file mode 100644 index 0000000..46b1e3d --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_notification.scss @@ -0,0 +1,34 @@ +.wpeo-notification { + .notification-title { + a { + color: $color__primary; + } + } + .notification-close { + &:hover { + color: $color__primary; + } + } +} + +/** Couleur */ +.wpeo-notification { + &.notification-green { + border-left: 4px solid $color__green; + .notification-icon { + color: $color__green; + } + } + &.notification-orange { + border-left: 4px solid $color__yellow; + .notification-icon { + color: $color__yellow; + } + } + &.notification-red { + border-left: 4px solid $color__red; + .notification-icon { + color: $color__red; + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_pagination.scss b/core/asset/css/scss/external/eoframework-color/_pagination.scss new file mode 100644 index 0000000..7464ded --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_pagination.scss @@ -0,0 +1,10 @@ +.wpeo-pagination .pagination-element { + &.pagination-current { + a { + background: $color__primary; + &:hover { + background: $color__primary; + } + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_popover.scss b/core/asset/css/scss/external/eoframework-color/_popover.scss new file mode 100644 index 0000000..a5303ef --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_popover.scss @@ -0,0 +1,32 @@ + +/* Couleurs */ +@mixin set-arrow-color($color) { + &.popover-top::before { + border-color: $color transparent transparent transparent; + } + &.popover-right::before { + border-color: transparent $color transparent transparent; + } + &.popover-bottom::before { + border-color: transparent transparent $color transparent; + } + &.popover-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-popover { + &.popover-primary { + background: $color__primary; + @include set-arrow-color($color__primary); + } + &.popover-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-color($color__grey); + } + &.popover-red { + background: $color__red; + @include set-arrow-color($color__red); + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_tab.scss b/core/asset/css/scss/external/eoframework-color/_tab.scss new file mode 100644 index 0000000..04cc493 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_tab.scss @@ -0,0 +1,31 @@ +.wpeo-tab .tab-list { + .tab-element { + + &::before { + background: $color__primary; + } + /* Active */ + &.tab-active { + color: $color__primary; + + > a { + color: $color__primary; + } + } + } +} + +/* Vertical */ +.wpeo-tab.tab-vertical { + .tab-list { + .tab-element { + /* Active */ + &.tab-active { + color: $color__primary; + a { + color: $color__primary; + } + } + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_table.scss b/core/asset/css/scss/external/eoframework-color/_table.scss new file mode 100644 index 0000000..41b9f30 --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_table.scss @@ -0,0 +1,23 @@ + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: $color__primary; +} + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: $color__secondary; +} + + +@media ( max-width: $media__small ) { + .wpeo-table { + > tbody { + td, th { + &:before { + color: $color__primary; + } + } + } + } +} diff --git a/core/asset/css/scss/external/eoframework-color/_tooltip.scss b/core/asset/css/scss/external/eoframework-color/_tooltip.scss new file mode 100644 index 0000000..f5aa59b --- /dev/null +++ b/core/asset/css/scss/external/eoframework-color/_tooltip.scss @@ -0,0 +1,31 @@ +/* Couleurs */ +@mixin set-arrow-tooltip-color($color) { + &.tooltip-top::before { + border-color: $color transparent transparent transparent; + } + &.tooltip-right::before { + border-color: transparent $color transparent transparent; + } + &.tooltip-bottom::before { + border-color: transparent transparent $color transparent; + } + &.tooltip-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-tooltip { + &.tooltip-primary { + background: $color__primary; + @include set-arrow-tooltip-color($color__primary); + } + &.tooltip-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-tooltip-color($color__grey); + } + &.tooltip-red { + background: $color__red; + @include set-arrow-tooltip-color($color__red); + } +} diff --git a/core/asset/css/scss/font/_font.scss b/core/asset/css/scss/font/_font.scss new file mode 100644 index 0000000..d78a165 --- /dev/null +++ b/core/asset/css/scss/font/_font.scss @@ -0,0 +1 @@ +@import "font-awesome/fontawesome"; diff --git a/core/asset/css/scss/font/font-awesome/_core.scss b/core/asset/css/scss/font/font-awesome/_core.scss new file mode 100644 index 0000000..a4ee7e8 --- /dev/null +++ b/core/asset/css/scss/font/font-awesome/_core.scss @@ -0,0 +1,20 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix}, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +%fa-icon { + @include fa-icon; +} diff --git a/core/asset/css/scss/font/font-awesome/_fontawesome.scss b/core/asset/css/scss/font/font-awesome/_fontawesome.scss new file mode 100644 index 0000000..35606cc --- /dev/null +++ b/core/asset/css/scss/font/font-awesome/_fontawesome.scss @@ -0,0 +1,7 @@ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +@import 'variables'; +@import 'mixins'; +@import 'core'; diff --git a/core/asset/css/scss/font/font-awesome/_mixins.scss b/core/asset/css/scss/font/font-awesome/_mixins.scss new file mode 100644 index 0000000..50a2e9f --- /dev/null +++ b/core/asset/css/scss/font/font-awesome/_mixins.scss @@ -0,0 +1,57 @@ +// Mixins +// -------------------------- + +@mixin fa-icon { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + } +} diff --git a/core/asset/css/scss/font/font-awesome/_variables.scss b/core/asset/css/scss/font/font-awesome/_variables.scss new file mode 100644 index 0000000..eb625f1 --- /dev/null +++ b/core/asset/css/scss/font/font-awesome/_variables.scss @@ -0,0 +1,1383 @@ +// Variables +// -------------------------- + +$fa-font-path: "../webfonts" !default; +$fa-font-size-base: 16px !default; +$fa-font-display: auto !default; +$fa-css-prefix: fa !default; +$fa-version: "5.8.2" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: 2em !default; +$fa-fw-width: (20em / 16); + +// Convenience function used to set content property +@function fa-content($fa-var) { + @return unquote("\"#{ $fa-var }\""); +} + +$fa-var-500px: \f26e; +$fa-var-accessible-icon: \f368; +$fa-var-accusoft: \f369; +$fa-var-acquisitions-incorporated: \f6af; +$fa-var-ad: \f641; +$fa-var-address-book: \f2b9; +$fa-var-address-card: \f2bb; +$fa-var-adjust: \f042; +$fa-var-adn: \f170; +$fa-var-adobe: \f778; +$fa-var-adversal: \f36a; +$fa-var-affiliatetheme: \f36b; +$fa-var-air-freshener: \f5d0; +$fa-var-airbnb: \f834; +$fa-var-algolia: \f36c; +$fa-var-align-center: \f037; +$fa-var-align-justify: \f039; +$fa-var-align-left: \f036; +$fa-var-align-right: \f038; +$fa-var-alipay: \f642; +$fa-var-allergies: \f461; +$fa-var-amazon: \f270; +$fa-var-amazon-pay: \f42c; +$fa-var-ambulance: \f0f9; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-amilia: \f36d; +$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-angry: \f556; +$fa-var-angrycreative: \f36e; +$fa-var-angular: \f420; +$fa-var-ankh: \f644; +$fa-var-app-store: \f36f; +$fa-var-app-store-ios: \f370; +$fa-var-apper: \f371; +$fa-var-apple: \f179; +$fa-var-apple-alt: \f5d1; +$fa-var-apple-pay: \f415; +$fa-var-archive: \f187; +$fa-var-archway: \f557; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-arrow-circle-left: \f0a8; +$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-alt: \f0b2; +$fa-var-arrows-alt-h: \f337; +$fa-var-arrows-alt-v: \f338; +$fa-var-artstation: \f77a; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-asterisk: \f069; +$fa-var-asymmetrik: \f372; +$fa-var-at: \f1fa; +$fa-var-atlas: \f558; +$fa-var-atlassian: \f77b; +$fa-var-atom: \f5d2; +$fa-var-audible: \f373; +$fa-var-audio-description: \f29e; +$fa-var-autoprefixer: \f41c; +$fa-var-avianex: \f374; +$fa-var-aviato: \f421; +$fa-var-award: \f559; +$fa-var-aws: \f375; +$fa-var-baby: \f77c; +$fa-var-baby-carriage: \f77d; +$fa-var-backspace: \f55a; +$fa-var-backward: \f04a; +$fa-var-bacon: \f7e5; +$fa-var-balance-scale: \f24e; +$fa-var-ban: \f05e; +$fa-var-band-aid: \f462; +$fa-var-bandcamp: \f2d5; +$fa-var-barcode: \f02a; +$fa-var-bars: \f0c9; +$fa-var-baseball-ball: \f433; +$fa-var-basketball-ball: \f434; +$fa-var-bath: \f2cd; +$fa-var-battery-empty: \f244; +$fa-var-battery-full: \f240; +$fa-var-battery-half: \f242; +$fa-var-battery-quarter: \f243; +$fa-var-battery-three-quarters: \f241; +$fa-var-battle-net: \f835; +$fa-var-bed: \f236; +$fa-var-beer: \f0fc; +$fa-var-behance: \f1b4; +$fa-var-behance-square: \f1b5; +$fa-var-bell: \f0f3; +$fa-var-bell-slash: \f1f6; +$fa-var-bezier-curve: \f55b; +$fa-var-bible: \f647; +$fa-var-bicycle: \f206; +$fa-var-bimobject: \f378; +$fa-var-binoculars: \f1e5; +$fa-var-biohazard: \f780; +$fa-var-birthday-cake: \f1fd; +$fa-var-bitbucket: \f171; +$fa-var-bitcoin: \f379; +$fa-var-bity: \f37a; +$fa-var-black-tie: \f27e; +$fa-var-blackberry: \f37b; +$fa-var-blender: \f517; +$fa-var-blender-phone: \f6b6; +$fa-var-blind: \f29d; +$fa-var-blog: \f781; +$fa-var-blogger: \f37c; +$fa-var-blogger-b: \f37d; +$fa-var-bluetooth: \f293; +$fa-var-bluetooth-b: \f294; +$fa-var-bold: \f032; +$fa-var-bolt: \f0e7; +$fa-var-bomb: \f1e2; +$fa-var-bone: \f5d7; +$fa-var-bong: \f55c; +$fa-var-book: \f02d; +$fa-var-book-dead: \f6b7; +$fa-var-book-medical: \f7e6; +$fa-var-book-open: \f518; +$fa-var-book-reader: \f5da; +$fa-var-bookmark: \f02e; +$fa-var-bootstrap: \f836; +$fa-var-bowling-ball: \f436; +$fa-var-box: \f466; +$fa-var-box-open: \f49e; +$fa-var-boxes: \f468; +$fa-var-braille: \f2a1; +$fa-var-brain: \f5dc; +$fa-var-bread-slice: \f7ec; +$fa-var-briefcase: \f0b1; +$fa-var-briefcase-medical: \f469; +$fa-var-broadcast-tower: \f519; +$fa-var-broom: \f51a; +$fa-var-brush: \f55d; +$fa-var-btc: \f15a; +$fa-var-buffer: \f837; +$fa-var-bug: \f188; +$fa-var-building: \f1ad; +$fa-var-bullhorn: \f0a1; +$fa-var-bullseye: \f140; +$fa-var-burn: \f46a; +$fa-var-buromobelexperte: \f37f; +$fa-var-bus: \f207; +$fa-var-bus-alt: \f55e; +$fa-var-business-time: \f64a; +$fa-var-buysellads: \f20d; +$fa-var-calculator: \f1ec; +$fa-var-calendar: \f133; +$fa-var-calendar-alt: \f073; +$fa-var-calendar-check: \f274; +$fa-var-calendar-day: \f783; +$fa-var-calendar-minus: \f272; +$fa-var-calendar-plus: \f271; +$fa-var-calendar-times: \f273; +$fa-var-calendar-week: \f784; +$fa-var-camera: \f030; +$fa-var-camera-retro: \f083; +$fa-var-campground: \f6bb; +$fa-var-canadian-maple-leaf: \f785; +$fa-var-candy-cane: \f786; +$fa-var-cannabis: \f55f; +$fa-var-capsules: \f46b; +$fa-var-car: \f1b9; +$fa-var-car-alt: \f5de; +$fa-var-car-battery: \f5df; +$fa-var-car-crash: \f5e1; +$fa-var-car-side: \f5e4; +$fa-var-caret-down: \f0d7; +$fa-var-caret-left: \f0d9; +$fa-var-caret-right: \f0da; +$fa-var-caret-square-down: \f150; +$fa-var-caret-square-left: \f191; +$fa-var-caret-square-right: \f152; +$fa-var-caret-square-up: \f151; +$fa-var-caret-up: \f0d8; +$fa-var-carrot: \f787; +$fa-var-cart-arrow-down: \f218; +$fa-var-cart-plus: \f217; +$fa-var-cash-register: \f788; +$fa-var-cat: \f6be; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-cc-amex: \f1f3; +$fa-var-cc-apple-pay: \f416; +$fa-var-cc-diners-club: \f24c; +$fa-var-cc-discover: \f1f2; +$fa-var-cc-jcb: \f24b; +$fa-var-cc-mastercard: \f1f1; +$fa-var-cc-paypal: \f1f4; +$fa-var-cc-stripe: \f1f5; +$fa-var-cc-visa: \f1f0; +$fa-var-centercode: \f380; +$fa-var-centos: \f789; +$fa-var-certificate: \f0a3; +$fa-var-chair: \f6c0; +$fa-var-chalkboard: \f51b; +$fa-var-chalkboard-teacher: \f51c; +$fa-var-charging-station: \f5e7; +$fa-var-chart-area: \f1fe; +$fa-var-chart-bar: \f080; +$fa-var-chart-line: \f201; +$fa-var-chart-pie: \f200; +$fa-var-check: \f00c; +$fa-var-check-circle: \f058; +$fa-var-check-double: \f560; +$fa-var-check-square: \f14a; +$fa-var-cheese: \f7ef; +$fa-var-chess: \f439; +$fa-var-chess-bishop: \f43a; +$fa-var-chess-board: \f43c; +$fa-var-chess-king: \f43f; +$fa-var-chess-knight: \f441; +$fa-var-chess-pawn: \f443; +$fa-var-chess-queen: \f445; +$fa-var-chess-rook: \f447; +$fa-var-chevron-circle-down: \f13a; +$fa-var-chevron-circle-left: \f137; +$fa-var-chevron-circle-right: \f138; +$fa-var-chevron-circle-up: \f139; +$fa-var-chevron-down: \f078; +$fa-var-chevron-left: \f053; +$fa-var-chevron-right: \f054; +$fa-var-chevron-up: \f077; +$fa-var-child: \f1ae; +$fa-var-chrome: \f268; +$fa-var-chromecast: \f838; +$fa-var-church: \f51d; +$fa-var-circle: \f111; +$fa-var-circle-notch: \f1ce; +$fa-var-city: \f64f; +$fa-var-clinic-medical: \f7f2; +$fa-var-clipboard: \f328; +$fa-var-clipboard-check: \f46c; +$fa-var-clipboard-list: \f46d; +$fa-var-clock: \f017; +$fa-var-clone: \f24d; +$fa-var-closed-captioning: \f20a; +$fa-var-cloud: \f0c2; +$fa-var-cloud-download-alt: \f381; +$fa-var-cloud-meatball: \f73b; +$fa-var-cloud-moon: \f6c3; +$fa-var-cloud-moon-rain: \f73c; +$fa-var-cloud-rain: \f73d; +$fa-var-cloud-showers-heavy: \f740; +$fa-var-cloud-sun: \f6c4; +$fa-var-cloud-sun-rain: \f743; +$fa-var-cloud-upload-alt: \f382; +$fa-var-cloudscale: \f383; +$fa-var-cloudsmith: \f384; +$fa-var-cloudversify: \f385; +$fa-var-cocktail: \f561; +$fa-var-code: \f121; +$fa-var-code-branch: \f126; +$fa-var-codepen: \f1cb; +$fa-var-codiepie: \f284; +$fa-var-coffee: \f0f4; +$fa-var-cog: \f013; +$fa-var-cogs: \f085; +$fa-var-coins: \f51e; +$fa-var-columns: \f0db; +$fa-var-comment: \f075; +$fa-var-comment-alt: \f27a; +$fa-var-comment-dollar: \f651; +$fa-var-comment-dots: \f4ad; +$fa-var-comment-medical: \f7f5; +$fa-var-comment-slash: \f4b3; +$fa-var-comments: \f086; +$fa-var-comments-dollar: \f653; +$fa-var-compact-disc: \f51f; +$fa-var-compass: \f14e; +$fa-var-compress: \f066; +$fa-var-compress-arrows-alt: \f78c; +$fa-var-concierge-bell: \f562; +$fa-var-confluence: \f78d; +$fa-var-connectdevelop: \f20e; +$fa-var-contao: \f26d; +$fa-var-cookie: \f563; +$fa-var-cookie-bite: \f564; +$fa-var-copy: \f0c5; +$fa-var-copyright: \f1f9; +$fa-var-couch: \f4b8; +$fa-var-cpanel: \f388; +$fa-var-creative-commons: \f25e; +$fa-var-creative-commons-by: \f4e7; +$fa-var-creative-commons-nc: \f4e8; +$fa-var-creative-commons-nc-eu: \f4e9; +$fa-var-creative-commons-nc-jp: \f4ea; +$fa-var-creative-commons-nd: \f4eb; +$fa-var-creative-commons-pd: \f4ec; +$fa-var-creative-commons-pd-alt: \f4ed; +$fa-var-creative-commons-remix: \f4ee; +$fa-var-creative-commons-sa: \f4ef; +$fa-var-creative-commons-sampling: \f4f0; +$fa-var-creative-commons-sampling-plus: \f4f1; +$fa-var-creative-commons-share: \f4f2; +$fa-var-creative-commons-zero: \f4f3; +$fa-var-credit-card: \f09d; +$fa-var-critical-role: \f6c9; +$fa-var-crop: \f125; +$fa-var-crop-alt: \f565; +$fa-var-cross: \f654; +$fa-var-crosshairs: \f05b; +$fa-var-crow: \f520; +$fa-var-crown: \f521; +$fa-var-crutch: \f7f7; +$fa-var-css3: \f13c; +$fa-var-css3-alt: \f38b; +$fa-var-cube: \f1b2; +$fa-var-cubes: \f1b3; +$fa-var-cut: \f0c4; +$fa-var-cuttlefish: \f38c; +$fa-var-d-and-d: \f38d; +$fa-var-d-and-d-beyond: \f6ca; +$fa-var-dashcube: \f210; +$fa-var-database: \f1c0; +$fa-var-deaf: \f2a4; +$fa-var-delicious: \f1a5; +$fa-var-democrat: \f747; +$fa-var-deploydog: \f38e; +$fa-var-deskpro: \f38f; +$fa-var-desktop: \f108; +$fa-var-dev: \f6cc; +$fa-var-deviantart: \f1bd; +$fa-var-dharmachakra: \f655; +$fa-var-dhl: \f790; +$fa-var-diagnoses: \f470; +$fa-var-diaspora: \f791; +$fa-var-dice: \f522; +$fa-var-dice-d20: \f6cf; +$fa-var-dice-d6: \f6d1; +$fa-var-dice-five: \f523; +$fa-var-dice-four: \f524; +$fa-var-dice-one: \f525; +$fa-var-dice-six: \f526; +$fa-var-dice-three: \f527; +$fa-var-dice-two: \f528; +$fa-var-digg: \f1a6; +$fa-var-digital-ocean: \f391; +$fa-var-digital-tachograph: \f566; +$fa-var-directions: \f5eb; +$fa-var-discord: \f392; +$fa-var-discourse: \f393; +$fa-var-divide: \f529; +$fa-var-dizzy: \f567; +$fa-var-dna: \f471; +$fa-var-dochub: \f394; +$fa-var-docker: \f395; +$fa-var-dog: \f6d3; +$fa-var-dollar-sign: \f155; +$fa-var-dolly: \f472; +$fa-var-dolly-flatbed: \f474; +$fa-var-donate: \f4b9; +$fa-var-door-closed: \f52a; +$fa-var-door-open: \f52b; +$fa-var-dot-circle: \f192; +$fa-var-dove: \f4ba; +$fa-var-download: \f019; +$fa-var-draft2digital: \f396; +$fa-var-drafting-compass: \f568; +$fa-var-dragon: \f6d5; +$fa-var-draw-polygon: \f5ee; +$fa-var-dribbble: \f17d; +$fa-var-dribbble-square: \f397; +$fa-var-dropbox: \f16b; +$fa-var-drum: \f569; +$fa-var-drum-steelpan: \f56a; +$fa-var-drumstick-bite: \f6d7; +$fa-var-drupal: \f1a9; +$fa-var-dumbbell: \f44b; +$fa-var-dumpster: \f793; +$fa-var-dumpster-fire: \f794; +$fa-var-dungeon: \f6d9; +$fa-var-dyalog: \f399; +$fa-var-earlybirds: \f39a; +$fa-var-ebay: \f4f4; +$fa-var-edge: \f282; +$fa-var-edit: \f044; +$fa-var-egg: \f7fb; +$fa-var-eject: \f052; +$fa-var-elementor: \f430; +$fa-var-ellipsis-h: \f141; +$fa-var-ellipsis-v: \f142; +$fa-var-ello: \f5f1; +$fa-var-ember: \f423; +$fa-var-empire: \f1d1; +$fa-var-envelope: \f0e0; +$fa-var-envelope-open: \f2b6; +$fa-var-envelope-open-text: \f658; +$fa-var-envelope-square: \f199; +$fa-var-envira: \f299; +$fa-var-equals: \f52c; +$fa-var-eraser: \f12d; +$fa-var-erlang: \f39d; +$fa-var-ethereum: \f42e; +$fa-var-ethernet: \f796; +$fa-var-etsy: \f2d7; +$fa-var-euro-sign: \f153; +$fa-var-evernote: \f839; +$fa-var-exchange-alt: \f362; +$fa-var-exclamation: \f12a; +$fa-var-exclamation-circle: \f06a; +$fa-var-exclamation-triangle: \f071; +$fa-var-expand: \f065; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-expeditedssl: \f23e; +$fa-var-external-link-alt: \f35d; +$fa-var-external-link-square-alt: \f360; +$fa-var-eye: \f06e; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-slash: \f070; +$fa-var-facebook: \f09a; +$fa-var-facebook-f: \f39e; +$fa-var-facebook-messenger: \f39f; +$fa-var-facebook-square: \f082; +$fa-var-fantasy-flight-games: \f6dc; +$fa-var-fast-backward: \f049; +$fa-var-fast-forward: \f050; +$fa-var-fax: \f1ac; +$fa-var-feather: \f52d; +$fa-var-feather-alt: \f56b; +$fa-var-fedex: \f797; +$fa-var-fedora: \f798; +$fa-var-female: \f182; +$fa-var-fighter-jet: \f0fb; +$fa-var-figma: \f799; +$fa-var-file: \f15b; +$fa-var-file-alt: \f15c; +$fa-var-file-archive: \f1c6; +$fa-var-file-audio: \f1c7; +$fa-var-file-code: \f1c9; +$fa-var-file-contract: \f56c; +$fa-var-file-csv: \f6dd; +$fa-var-file-download: \f56d; +$fa-var-file-excel: \f1c3; +$fa-var-file-export: \f56e; +$fa-var-file-image: \f1c5; +$fa-var-file-import: \f56f; +$fa-var-file-invoice: \f570; +$fa-var-file-invoice-dollar: \f571; +$fa-var-file-medical: \f477; +$fa-var-file-medical-alt: \f478; +$fa-var-file-pdf: \f1c1; +$fa-var-file-powerpoint: \f1c4; +$fa-var-file-prescription: \f572; +$fa-var-file-signature: \f573; +$fa-var-file-upload: \f574; +$fa-var-file-video: \f1c8; +$fa-var-file-word: \f1c2; +$fa-var-fill: \f575; +$fa-var-fill-drip: \f576; +$fa-var-film: \f008; +$fa-var-filter: \f0b0; +$fa-var-fingerprint: \f577; +$fa-var-fire: \f06d; +$fa-var-fire-alt: \f7e4; +$fa-var-fire-extinguisher: \f134; +$fa-var-firefox: \f269; +$fa-var-first-aid: \f479; +$fa-var-first-order: \f2b0; +$fa-var-first-order-alt: \f50a; +$fa-var-firstdraft: \f3a1; +$fa-var-fish: \f578; +$fa-var-fist-raised: \f6de; +$fa-var-flag: \f024; +$fa-var-flag-checkered: \f11e; +$fa-var-flag-usa: \f74d; +$fa-var-flask: \f0c3; +$fa-var-flickr: \f16e; +$fa-var-flipboard: \f44d; +$fa-var-flushed: \f579; +$fa-var-fly: \f417; +$fa-var-folder: \f07b; +$fa-var-folder-minus: \f65d; +$fa-var-folder-open: \f07c; +$fa-var-folder-plus: \f65e; +$fa-var-font: \f031; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-alt: \f35c; +$fa-var-font-awesome-flag: \f425; +$fa-var-font-awesome-logo-full: \f4e6; +$fa-var-fonticons: \f280; +$fa-var-fonticons-fi: \f3a2; +$fa-var-football-ball: \f44e; +$fa-var-fort-awesome: \f286; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-forumbee: \f211; +$fa-var-forward: \f04e; +$fa-var-foursquare: \f180; +$fa-var-free-code-camp: \f2c5; +$fa-var-freebsd: \f3a4; +$fa-var-frog: \f52e; +$fa-var-frown: \f119; +$fa-var-frown-open: \f57a; +$fa-var-fulcrum: \f50b; +$fa-var-funnel-dollar: \f662; +$fa-var-futbol: \f1e3; +$fa-var-galactic-republic: \f50c; +$fa-var-galactic-senate: \f50d; +$fa-var-gamepad: \f11b; +$fa-var-gas-pump: \f52f; +$fa-var-gavel: \f0e3; +$fa-var-gem: \f3a5; +$fa-var-genderless: \f22d; +$fa-var-get-pocket: \f265; +$fa-var-gg: \f260; +$fa-var-gg-circle: \f261; +$fa-var-ghost: \f6e2; +$fa-var-gift: \f06b; +$fa-var-gifts: \f79c; +$fa-var-git: \f1d3; +$fa-var-git-alt: \f841; +$fa-var-git-square: \f1d2; +$fa-var-github: \f09b; +$fa-var-github-alt: \f113; +$fa-var-github-square: \f092; +$fa-var-gitkraken: \f3a6; +$fa-var-gitlab: \f296; +$fa-var-gitter: \f426; +$fa-var-glass-cheers: \f79f; +$fa-var-glass-martini: \f000; +$fa-var-glass-martini-alt: \f57b; +$fa-var-glass-whiskey: \f7a0; +$fa-var-glasses: \f530; +$fa-var-glide: \f2a5; +$fa-var-glide-g: \f2a6; +$fa-var-globe: \f0ac; +$fa-var-globe-africa: \f57c; +$fa-var-globe-americas: \f57d; +$fa-var-globe-asia: \f57e; +$fa-var-globe-europe: \f7a2; +$fa-var-gofore: \f3a7; +$fa-var-golf-ball: \f450; +$fa-var-goodreads: \f3a8; +$fa-var-goodreads-g: \f3a9; +$fa-var-google: \f1a0; +$fa-var-google-drive: \f3aa; +$fa-var-google-play: \f3ab; +$fa-var-google-plus: \f2b3; +$fa-var-google-plus-g: \f0d5; +$fa-var-google-plus-square: \f0d4; +$fa-var-google-wallet: \f1ee; +$fa-var-gopuram: \f664; +$fa-var-graduation-cap: \f19d; +$fa-var-gratipay: \f184; +$fa-var-grav: \f2d6; +$fa-var-greater-than: \f531; +$fa-var-greater-than-equal: \f532; +$fa-var-grimace: \f57f; +$fa-var-grin: \f580; +$fa-var-grin-alt: \f581; +$fa-var-grin-beam: \f582; +$fa-var-grin-beam-sweat: \f583; +$fa-var-grin-hearts: \f584; +$fa-var-grin-squint: \f585; +$fa-var-grin-squint-tears: \f586; +$fa-var-grin-stars: \f587; +$fa-var-grin-tears: \f588; +$fa-var-grin-tongue: \f589; +$fa-var-grin-tongue-squint: \f58a; +$fa-var-grin-tongue-wink: \f58b; +$fa-var-grin-wink: \f58c; +$fa-var-grip-horizontal: \f58d; +$fa-var-grip-lines: \f7a4; +$fa-var-grip-lines-vertical: \f7a5; +$fa-var-grip-vertical: \f58e; +$fa-var-gripfire: \f3ac; +$fa-var-grunt: \f3ad; +$fa-var-guitar: \f7a6; +$fa-var-gulp: \f3ae; +$fa-var-h-square: \f0fd; +$fa-var-hacker-news: \f1d4; +$fa-var-hacker-news-square: \f3af; +$fa-var-hackerrank: \f5f7; +$fa-var-hamburger: \f805; +$fa-var-hammer: \f6e3; +$fa-var-hamsa: \f665; +$fa-var-hand-holding: \f4bd; +$fa-var-hand-holding-heart: \f4be; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-hand-lizard: \f258; +$fa-var-hand-middle-finger: \f806; +$fa-var-hand-paper: \f256; +$fa-var-hand-peace: \f25b; +$fa-var-hand-point-down: \f0a7; +$fa-var-hand-point-left: \f0a5; +$fa-var-hand-point-right: \f0a4; +$fa-var-hand-point-up: \f0a6; +$fa-var-hand-pointer: \f25a; +$fa-var-hand-rock: \f255; +$fa-var-hand-scissors: \f257; +$fa-var-hand-spock: \f259; +$fa-var-hands: \f4c2; +$fa-var-hands-helping: \f4c4; +$fa-var-handshake: \f2b5; +$fa-var-hanukiah: \f6e6; +$fa-var-hard-hat: \f807; +$fa-var-hashtag: \f292; +$fa-var-hat-wizard: \f6e8; +$fa-var-haykal: \f666; +$fa-var-hdd: \f0a0; +$fa-var-heading: \f1dc; +$fa-var-headphones: \f025; +$fa-var-headphones-alt: \f58f; +$fa-var-headset: \f590; +$fa-var-heart: \f004; +$fa-var-heart-broken: \f7a9; +$fa-var-heartbeat: \f21e; +$fa-var-helicopter: \f533; +$fa-var-highlighter: \f591; +$fa-var-hiking: \f6ec; +$fa-var-hippo: \f6ed; +$fa-var-hips: \f452; +$fa-var-hire-a-helper: \f3b0; +$fa-var-history: \f1da; +$fa-var-hockey-puck: \f453; +$fa-var-holly-berry: \f7aa; +$fa-var-home: \f015; +$fa-var-hooli: \f427; +$fa-var-hornbill: \f592; +$fa-var-horse: \f6f0; +$fa-var-horse-head: \f7ab; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f47d; +$fa-var-hospital-symbol: \f47e; +$fa-var-hot-tub: \f593; +$fa-var-hotdog: \f80f; +$fa-var-hotel: \f594; +$fa-var-hotjar: \f3b1; +$fa-var-hourglass: \f254; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-start: \f251; +$fa-var-house-damage: \f6f1; +$fa-var-houzz: \f27c; +$fa-var-hryvnia: \f6f2; +$fa-var-html5: \f13b; +$fa-var-hubspot: \f3b2; +$fa-var-i-cursor: \f246; +$fa-var-ice-cream: \f810; +$fa-var-icicles: \f7ad; +$fa-var-id-badge: \f2c1; +$fa-var-id-card: \f2c2; +$fa-var-id-card-alt: \f47f; +$fa-var-igloo: \f7ae; +$fa-var-image: \f03e; +$fa-var-images: \f302; +$fa-var-imdb: \f2d8; +$fa-var-inbox: \f01c; +$fa-var-indent: \f03c; +$fa-var-industry: \f275; +$fa-var-infinity: \f534; +$fa-var-info: \f129; +$fa-var-info-circle: \f05a; +$fa-var-instagram: \f16d; +$fa-var-intercom: \f7af; +$fa-var-internet-explorer: \f26b; +$fa-var-invision: \f7b0; +$fa-var-ioxhost: \f208; +$fa-var-italic: \f033; +$fa-var-itch-io: \f83a; +$fa-var-itunes: \f3b4; +$fa-var-itunes-note: \f3b5; +$fa-var-java: \f4e4; +$fa-var-jedi: \f669; +$fa-var-jedi-order: \f50e; +$fa-var-jenkins: \f3b6; +$fa-var-jira: \f7b1; +$fa-var-joget: \f3b7; +$fa-var-joint: \f595; +$fa-var-joomla: \f1aa; +$fa-var-journal-whills: \f66a; +$fa-var-js: \f3b8; +$fa-var-js-square: \f3b9; +$fa-var-jsfiddle: \f1cc; +$fa-var-kaaba: \f66b; +$fa-var-kaggle: \f5fa; +$fa-var-key: \f084; +$fa-var-keybase: \f4f5; +$fa-var-keyboard: \f11c; +$fa-var-keycdn: \f3ba; +$fa-var-khanda: \f66d; +$fa-var-kickstarter: \f3bb; +$fa-var-kickstarter-k: \f3bc; +$fa-var-kiss: \f596; +$fa-var-kiss-beam: \f597; +$fa-var-kiss-wink-heart: \f598; +$fa-var-kiwi-bird: \f535; +$fa-var-korvue: \f42f; +$fa-var-landmark: \f66f; +$fa-var-language: \f1ab; +$fa-var-laptop: \f109; +$fa-var-laptop-code: \f5fc; +$fa-var-laptop-medical: \f812; +$fa-var-laravel: \f3bd; +$fa-var-lastfm: \f202; +$fa-var-lastfm-square: \f203; +$fa-var-laugh: \f599; +$fa-var-laugh-beam: \f59a; +$fa-var-laugh-squint: \f59b; +$fa-var-laugh-wink: \f59c; +$fa-var-layer-group: \f5fd; +$fa-var-leaf: \f06c; +$fa-var-leanpub: \f212; +$fa-var-lemon: \f094; +$fa-var-less: \f41d; +$fa-var-less-than: \f536; +$fa-var-less-than-equal: \f537; +$fa-var-level-down-alt: \f3be; +$fa-var-level-up-alt: \f3bf; +$fa-var-life-ring: \f1cd; +$fa-var-lightbulb: \f0eb; +$fa-var-line: \f3c0; +$fa-var-link: \f0c1; +$fa-var-linkedin: \f08c; +$fa-var-linkedin-in: \f0e1; +$fa-var-linode: \f2b8; +$fa-var-linux: \f17c; +$fa-var-lira-sign: \f195; +$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-lock-open: \f3c1; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-low-vision: \f2a8; +$fa-var-luggage-cart: \f59d; +$fa-var-lyft: \f3c3; +$fa-var-magento: \f3c4; +$fa-var-magic: \f0d0; +$fa-var-magnet: \f076; +$fa-var-mail-bulk: \f674; +$fa-var-mailchimp: \f59e; +$fa-var-male: \f183; +$fa-var-mandalorian: \f50f; +$fa-var-map: \f279; +$fa-var-map-marked: \f59f; +$fa-var-map-marked-alt: \f5a0; +$fa-var-map-marker: \f041; +$fa-var-map-marker-alt: \f3c5; +$fa-var-map-pin: \f276; +$fa-var-map-signs: \f277; +$fa-var-markdown: \f60f; +$fa-var-marker: \f5a1; +$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-mask: \f6fa; +$fa-var-mastodon: \f4f6; +$fa-var-maxcdn: \f136; +$fa-var-medal: \f5a2; +$fa-var-medapps: \f3c6; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f3c7; +$fa-var-medkit: \f0fa; +$fa-var-medrt: \f3c8; +$fa-var-meetup: \f2e0; +$fa-var-megaport: \f5a3; +$fa-var-meh: \f11a; +$fa-var-meh-blank: \f5a4; +$fa-var-meh-rolling-eyes: \f5a5; +$fa-var-memory: \f538; +$fa-var-mendeley: \f7b3; +$fa-var-menorah: \f676; +$fa-var-mercury: \f223; +$fa-var-meteor: \f753; +$fa-var-microchip: \f2db; +$fa-var-microphone: \f130; +$fa-var-microphone-alt: \f3c9; +$fa-var-microphone-alt-slash: \f539; +$fa-var-microphone-slash: \f131; +$fa-var-microscope: \f610; +$fa-var-microsoft: \f3ca; +$fa-var-minus: \f068; +$fa-var-minus-circle: \f056; +$fa-var-minus-square: \f146; +$fa-var-mitten: \f7b5; +$fa-var-mix: \f3cb; +$fa-var-mixcloud: \f289; +$fa-var-mizuni: \f3cc; +$fa-var-mobile: \f10b; +$fa-var-mobile-alt: \f3cd; +$fa-var-modx: \f285; +$fa-var-monero: \f3d0; +$fa-var-money-bill: \f0d6; +$fa-var-money-bill-alt: \f3d1; +$fa-var-money-bill-wave: \f53a; +$fa-var-money-bill-wave-alt: \f53b; +$fa-var-money-check: \f53c; +$fa-var-money-check-alt: \f53d; +$fa-var-monument: \f5a6; +$fa-var-moon: \f186; +$fa-var-mortar-pestle: \f5a7; +$fa-var-mosque: \f678; +$fa-var-motorcycle: \f21c; +$fa-var-mountain: \f6fc; +$fa-var-mouse-pointer: \f245; +$fa-var-mug-hot: \f7b6; +$fa-var-music: \f001; +$fa-var-napster: \f3d2; +$fa-var-neos: \f612; +$fa-var-network-wired: \f6ff; +$fa-var-neuter: \f22c; +$fa-var-newspaper: \f1ea; +$fa-var-nimblr: \f5a8; +$fa-var-nintendo-switch: \f418; +$fa-var-node: \f419; +$fa-var-node-js: \f3d3; +$fa-var-not-equal: \f53e; +$fa-var-notes-medical: \f481; +$fa-var-npm: \f3d4; +$fa-var-ns8: \f3d5; +$fa-var-nutritionix: \f3d6; +$fa-var-object-group: \f247; +$fa-var-object-ungroup: \f248; +$fa-var-odnoklassniki: \f263; +$fa-var-odnoklassniki-square: \f264; +$fa-var-oil-can: \f613; +$fa-var-old-republic: \f510; +$fa-var-om: \f679; +$fa-var-opencart: \f23d; +$fa-var-openid: \f19b; +$fa-var-opera: \f26a; +$fa-var-optin-monster: \f23c; +$fa-var-osi: \f41a; +$fa-var-otter: \f700; +$fa-var-outdent: \f03b; +$fa-var-page4: \f3d7; +$fa-var-pagelines: \f18c; +$fa-var-pager: \f815; +$fa-var-paint-brush: \f1fc; +$fa-var-paint-roller: \f5aa; +$fa-var-palette: \f53f; +$fa-var-palfed: \f3d8; +$fa-var-pallet: \f482; +$fa-var-paper-plane: \f1d8; +$fa-var-paperclip: \f0c6; +$fa-var-parachute-box: \f4cd; +$fa-var-paragraph: \f1dd; +$fa-var-parking: \f540; +$fa-var-passport: \f5ab; +$fa-var-pastafarianism: \f67b; +$fa-var-paste: \f0ea; +$fa-var-patreon: \f3d9; +$fa-var-pause: \f04c; +$fa-var-pause-circle: \f28b; +$fa-var-paw: \f1b0; +$fa-var-paypal: \f1ed; +$fa-var-peace: \f67c; +$fa-var-pen: \f304; +$fa-var-pen-alt: \f305; +$fa-var-pen-fancy: \f5ac; +$fa-var-pen-nib: \f5ad; +$fa-var-pen-square: \f14b; +$fa-var-pencil-alt: \f303; +$fa-var-pencil-ruler: \f5ae; +$fa-var-penny-arcade: \f704; +$fa-var-people-carry: \f4ce; +$fa-var-pepper-hot: \f816; +$fa-var-percent: \f295; +$fa-var-percentage: \f541; +$fa-var-periscope: \f3da; +$fa-var-person-booth: \f756; +$fa-var-phabricator: \f3db; +$fa-var-phoenix-framework: \f3dc; +$fa-var-phoenix-squadron: \f511; +$fa-var-phone: \f095; +$fa-var-phone-slash: \f3dd; +$fa-var-phone-square: \f098; +$fa-var-phone-volume: \f2a0; +$fa-var-php: \f457; +$fa-var-pied-piper: \f2ae; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-piggy-bank: \f4d3; +$fa-var-pills: \f484; +$fa-var-pinterest: \f0d2; +$fa-var-pinterest-p: \f231; +$fa-var-pinterest-square: \f0d3; +$fa-var-pizza-slice: \f818; +$fa-var-place-of-worship: \f67f; +$fa-var-plane: \f072; +$fa-var-plane-arrival: \f5af; +$fa-var-plane-departure: \f5b0; +$fa-var-play: \f04b; +$fa-var-play-circle: \f144; +$fa-var-playstation: \f3df; +$fa-var-plug: \f1e6; +$fa-var-plus: \f067; +$fa-var-plus-circle: \f055; +$fa-var-plus-square: \f0fe; +$fa-var-podcast: \f2ce; +$fa-var-poll: \f681; +$fa-var-poll-h: \f682; +$fa-var-poo: \f2fe; +$fa-var-poo-storm: \f75a; +$fa-var-poop: \f619; +$fa-var-portrait: \f3e0; +$fa-var-pound-sign: \f154; +$fa-var-power-off: \f011; +$fa-var-pray: \f683; +$fa-var-praying-hands: \f684; +$fa-var-prescription: \f5b1; +$fa-var-prescription-bottle: \f485; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-print: \f02f; +$fa-var-procedures: \f487; +$fa-var-product-hunt: \f288; +$fa-var-project-diagram: \f542; +$fa-var-pushed: \f3e1; +$fa-var-puzzle-piece: \f12e; +$fa-var-python: \f3e2; +$fa-var-qq: \f1d6; +$fa-var-qrcode: \f029; +$fa-var-question: \f128; +$fa-var-question-circle: \f059; +$fa-var-quidditch: \f458; +$fa-var-quinscape: \f459; +$fa-var-quora: \f2c4; +$fa-var-quote-left: \f10d; +$fa-var-quote-right: \f10e; +$fa-var-quran: \f687; +$fa-var-r-project: \f4f7; +$fa-var-radiation: \f7b9; +$fa-var-radiation-alt: \f7ba; +$fa-var-rainbow: \f75b; +$fa-var-random: \f074; +$fa-var-raspberry-pi: \f7bb; +$fa-var-ravelry: \f2d9; +$fa-var-react: \f41b; +$fa-var-reacteurope: \f75d; +$fa-var-readme: \f4d5; +$fa-var-rebel: \f1d0; +$fa-var-receipt: \f543; +$fa-var-recycle: \f1b8; +$fa-var-red-river: \f3e3; +$fa-var-reddit: \f1a1; +$fa-var-reddit-alien: \f281; +$fa-var-reddit-square: \f1a2; +$fa-var-redhat: \f7bc; +$fa-var-redo: \f01e; +$fa-var-redo-alt: \f2f9; +$fa-var-registered: \f25d; +$fa-var-renren: \f18b; +$fa-var-reply: \f3e5; +$fa-var-reply-all: \f122; +$fa-var-replyd: \f3e6; +$fa-var-republican: \f75e; +$fa-var-researchgate: \f4f8; +$fa-var-resolving: \f3e7; +$fa-var-restroom: \f7bd; +$fa-var-retweet: \f079; +$fa-var-rev: \f5b2; +$fa-var-ribbon: \f4d6; +$fa-var-ring: \f70b; +$fa-var-road: \f018; +$fa-var-robot: \f544; +$fa-var-rocket: \f135; +$fa-var-rocketchat: \f3e8; +$fa-var-rockrms: \f3e9; +$fa-var-route: \f4d7; +$fa-var-rss: \f09e; +$fa-var-rss-square: \f143; +$fa-var-ruble-sign: \f158; +$fa-var-ruler: \f545; +$fa-var-ruler-combined: \f546; +$fa-var-ruler-horizontal: \f547; +$fa-var-ruler-vertical: \f548; +$fa-var-running: \f70c; +$fa-var-rupee-sign: \f156; +$fa-var-sad-cry: \f5b3; +$fa-var-sad-tear: \f5b4; +$fa-var-safari: \f267; +$fa-var-salesforce: \f83b; +$fa-var-sass: \f41e; +$fa-var-satellite: \f7bf; +$fa-var-satellite-dish: \f7c0; +$fa-var-save: \f0c7; +$fa-var-schlix: \f3ea; +$fa-var-school: \f549; +$fa-var-screwdriver: \f54a; +$fa-var-scribd: \f28a; +$fa-var-scroll: \f70e; +$fa-var-sd-card: \f7c2; +$fa-var-search: \f002; +$fa-var-search-dollar: \f688; +$fa-var-search-location: \f689; +$fa-var-search-minus: \f010; +$fa-var-search-plus: \f00e; +$fa-var-searchengin: \f3eb; +$fa-var-seedling: \f4d8; +$fa-var-sellcast: \f2da; +$fa-var-sellsy: \f213; +$fa-var-server: \f233; +$fa-var-servicestack: \f3ec; +$fa-var-shapes: \f61f; +$fa-var-share: \f064; +$fa-var-share-alt: \f1e0; +$fa-var-share-alt-square: \f1e1; +$fa-var-share-square: \f14d; +$fa-var-shekel-sign: \f20b; +$fa-var-shield-alt: \f3ed; +$fa-var-ship: \f21a; +$fa-var-shipping-fast: \f48b; +$fa-var-shirtsinbulk: \f214; +$fa-var-shoe-prints: \f54b; +$fa-var-shopping-bag: \f290; +$fa-var-shopping-basket: \f291; +$fa-var-shopping-cart: \f07a; +$fa-var-shopware: \f5b5; +$fa-var-shower: \f2cc; +$fa-var-shuttle-van: \f5b6; +$fa-var-sign: \f4d9; +$fa-var-sign-in-alt: \f2f6; +$fa-var-sign-language: \f2a7; +$fa-var-sign-out-alt: \f2f5; +$fa-var-signal: \f012; +$fa-var-signature: \f5b7; +$fa-var-sim-card: \f7c4; +$fa-var-simplybuilt: \f215; +$fa-var-sistrix: \f3ee; +$fa-var-sitemap: \f0e8; +$fa-var-sith: \f512; +$fa-var-skating: \f7c5; +$fa-var-sketch: \f7c6; +$fa-var-skiing: \f7c9; +$fa-var-skiing-nordic: \f7ca; +$fa-var-skull: \f54c; +$fa-var-skull-crossbones: \f714; +$fa-var-skyatlas: \f216; +$fa-var-skype: \f17e; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f3ef; +$fa-var-slash: \f715; +$fa-var-sleigh: \f7cc; +$fa-var-sliders-h: \f1de; +$fa-var-slideshare: \f1e7; +$fa-var-smile: \f118; +$fa-var-smile-beam: \f5b8; +$fa-var-smile-wink: \f4da; +$fa-var-smog: \f75f; +$fa-var-smoking: \f48d; +$fa-var-smoking-ban: \f54d; +$fa-var-sms: \f7cd; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ac; +$fa-var-snapchat-square: \f2ad; +$fa-var-snowboarding: \f7ce; +$fa-var-snowflake: \f2dc; +$fa-var-snowman: \f7d0; +$fa-var-snowplow: \f7d2; +$fa-var-socks: \f696; +$fa-var-solar-panel: \f5ba; +$fa-var-sort: \f0dc; +$fa-var-sort-alpha-down: \f15d; +$fa-var-sort-alpha-up: \f15e; +$fa-var-sort-amount-down: \f160; +$fa-var-sort-amount-up: \f161; +$fa-var-sort-down: \f0dd; +$fa-var-sort-numeric-down: \f162; +$fa-var-sort-numeric-up: \f163; +$fa-var-sort-up: \f0de; +$fa-var-soundcloud: \f1be; +$fa-var-sourcetree: \f7d3; +$fa-var-spa: \f5bb; +$fa-var-space-shuttle: \f197; +$fa-var-speakap: \f3f3; +$fa-var-speaker-deck: \f83c; +$fa-var-spider: \f717; +$fa-var-spinner: \f110; +$fa-var-splotch: \f5bc; +$fa-var-spotify: \f1bc; +$fa-var-spray-can: \f5bd; +$fa-var-square: \f0c8; +$fa-var-square-full: \f45c; +$fa-var-square-root-alt: \f698; +$fa-var-squarespace: \f5be; +$fa-var-stack-exchange: \f18d; +$fa-var-stack-overflow: \f16c; +$fa-var-stackpath: \f842; +$fa-var-stamp: \f5bf; +$fa-var-star: \f005; +$fa-var-star-and-crescent: \f699; +$fa-var-star-half: \f089; +$fa-var-star-half-alt: \f5c0; +$fa-var-star-of-david: \f69a; +$fa-var-star-of-life: \f621; +$fa-var-staylinked: \f3f5; +$fa-var-steam: \f1b6; +$fa-var-steam-square: \f1b7; +$fa-var-steam-symbol: \f3f6; +$fa-var-step-backward: \f048; +$fa-var-step-forward: \f051; +$fa-var-stethoscope: \f0f1; +$fa-var-sticker-mule: \f3f7; +$fa-var-sticky-note: \f249; +$fa-var-stop: \f04d; +$fa-var-stop-circle: \f28d; +$fa-var-stopwatch: \f2f2; +$fa-var-store: \f54e; +$fa-var-store-alt: \f54f; +$fa-var-strava: \f428; +$fa-var-stream: \f550; +$fa-var-street-view: \f21d; +$fa-var-strikethrough: \f0cc; +$fa-var-stripe: \f429; +$fa-var-stripe-s: \f42a; +$fa-var-stroopwafel: \f551; +$fa-var-studiovinari: \f3f8; +$fa-var-stumbleupon: \f1a4; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-subscript: \f12c; +$fa-var-subway: \f239; +$fa-var-suitcase: \f0f2; +$fa-var-suitcase-rolling: \f5c1; +$fa-var-sun: \f185; +$fa-var-superpowers: \f2dd; +$fa-var-superscript: \f12b; +$fa-var-supple: \f3f9; +$fa-var-surprise: \f5c2; +$fa-var-suse: \f7d6; +$fa-var-swatchbook: \f5c3; +$fa-var-swimmer: \f5c4; +$fa-var-swimming-pool: \f5c5; +$fa-var-symfony: \f83d; +$fa-var-synagogue: \f69b; +$fa-var-sync: \f021; +$fa-var-sync-alt: \f2f1; +$fa-var-syringe: \f48e; +$fa-var-table: \f0ce; +$fa-var-table-tennis: \f45d; +$fa-var-tablet: \f10a; +$fa-var-tablet-alt: \f3fa; +$fa-var-tablets: \f490; +$fa-var-tachometer-alt: \f3fd; +$fa-var-tag: \f02b; +$fa-var-tags: \f02c; +$fa-var-tape: \f4db; +$fa-var-tasks: \f0ae; +$fa-var-taxi: \f1ba; +$fa-var-teamspeak: \f4f9; +$fa-var-teeth: \f62e; +$fa-var-teeth-open: \f62f; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f3fe; +$fa-var-temperature-high: \f769; +$fa-var-temperature-low: \f76b; +$fa-var-tencent-weibo: \f1d5; +$fa-var-tenge: \f7d7; +$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-the-red-yeti: \f69d; +$fa-var-theater-masks: \f630; +$fa-var-themeco: \f5c6; +$fa-var-themeisle: \f2b2; +$fa-var-thermometer: \f491; +$fa-var-thermometer-empty: \f2cb; +$fa-var-thermometer-full: \f2c7; +$fa-var-thermometer-half: \f2c9; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-think-peaks: \f731; +$fa-var-thumbs-down: \f165; +$fa-var-thumbs-up: \f164; +$fa-var-thumbtack: \f08d; +$fa-var-ticket-alt: \f3ff; +$fa-var-times: \f00d; +$fa-var-times-circle: \f057; +$fa-var-tint: \f043; +$fa-var-tint-slash: \f5c7; +$fa-var-tired: \f5c8; +$fa-var-toggle-off: \f204; +$fa-var-toggle-on: \f205; +$fa-var-toilet: \f7d8; +$fa-var-toilet-paper: \f71e; +$fa-var-toolbox: \f552; +$fa-var-tools: \f7d9; +$fa-var-tooth: \f5c9; +$fa-var-torah: \f6a0; +$fa-var-torii-gate: \f6a1; +$fa-var-tractor: \f722; +$fa-var-trade-federation: \f513; +$fa-var-trademark: \f25c; +$fa-var-traffic-light: \f637; +$fa-var-train: \f238; +$fa-var-tram: \f7da; +$fa-var-transgender: \f224; +$fa-var-transgender-alt: \f225; +$fa-var-trash: \f1f8; +$fa-var-trash-alt: \f2ed; +$fa-var-trash-restore: \f829; +$fa-var-trash-restore-alt: \f82a; +$fa-var-tree: \f1bb; +$fa-var-trello: \f181; +$fa-var-tripadvisor: \f262; +$fa-var-trophy: \f091; +$fa-var-truck: \f0d1; +$fa-var-truck-loading: \f4de; +$fa-var-truck-monster: \f63b; +$fa-var-truck-moving: \f4df; +$fa-var-truck-pickup: \f63c; +$fa-var-tshirt: \f553; +$fa-var-tty: \f1e4; +$fa-var-tumblr: \f173; +$fa-var-tumblr-square: \f174; +$fa-var-tv: \f26c; +$fa-var-twitch: \f1e8; +$fa-var-twitter: \f099; +$fa-var-twitter-square: \f081; +$fa-var-typo3: \f42b; +$fa-var-uber: \f402; +$fa-var-ubuntu: \f7df; +$fa-var-uikit: \f403; +$fa-var-umbrella: \f0e9; +$fa-var-umbrella-beach: \f5ca; +$fa-var-underline: \f0cd; +$fa-var-undo: \f0e2; +$fa-var-undo-alt: \f2ea; +$fa-var-uniregistry: \f404; +$fa-var-universal-access: \f29a; +$fa-var-university: \f19c; +$fa-var-unlink: \f127; +$fa-var-unlock: \f09c; +$fa-var-unlock-alt: \f13e; +$fa-var-untappd: \f405; +$fa-var-upload: \f093; +$fa-var-ups: \f7e0; +$fa-var-usb: \f287; +$fa-var-user: \f007; +$fa-var-user-alt: \f406; +$fa-var-user-alt-slash: \f4fa; +$fa-var-user-astronaut: \f4fb; +$fa-var-user-check: \f4fc; +$fa-var-user-circle: \f2bd; +$fa-var-user-clock: \f4fd; +$fa-var-user-cog: \f4fe; +$fa-var-user-edit: \f4ff; +$fa-var-user-friends: \f500; +$fa-var-user-graduate: \f501; +$fa-var-user-injured: \f728; +$fa-var-user-lock: \f502; +$fa-var-user-md: \f0f0; +$fa-var-user-minus: \f503; +$fa-var-user-ninja: \f504; +$fa-var-user-nurse: \f82f; +$fa-var-user-plus: \f234; +$fa-var-user-secret: \f21b; +$fa-var-user-shield: \f505; +$fa-var-user-slash: \f506; +$fa-var-user-tag: \f507; +$fa-var-user-tie: \f508; +$fa-var-user-times: \f235; +$fa-var-users: \f0c0; +$fa-var-users-cog: \f509; +$fa-var-usps: \f7e1; +$fa-var-ussunnah: \f407; +$fa-var-utensil-spoon: \f2e5; +$fa-var-utensils: \f2e7; +$fa-var-vaadin: \f408; +$fa-var-vector-square: \f5cb; +$fa-var-venus: \f221; +$fa-var-venus-double: \f226; +$fa-var-venus-mars: \f228; +$fa-var-viacoin: \f237; +$fa-var-viadeo: \f2a9; +$fa-var-viadeo-square: \f2aa; +$fa-var-vial: \f492; +$fa-var-vials: \f493; +$fa-var-viber: \f409; +$fa-var-video: \f03d; +$fa-var-video-slash: \f4e2; +$fa-var-vihara: \f6a7; +$fa-var-vimeo: \f40a; +$fa-var-vimeo-square: \f194; +$fa-var-vimeo-v: \f27d; +$fa-var-vine: \f1ca; +$fa-var-vk: \f189; +$fa-var-vnv: \f40b; +$fa-var-volleyball-ball: \f45f; +$fa-var-volume-down: \f027; +$fa-var-volume-mute: \f6a9; +$fa-var-volume-off: \f026; +$fa-var-volume-up: \f028; +$fa-var-vote-yea: \f772; +$fa-var-vr-cardboard: \f729; +$fa-var-vuejs: \f41f; +$fa-var-walking: \f554; +$fa-var-wallet: \f555; +$fa-var-warehouse: \f494; +$fa-var-water: \f773; +$fa-var-wave-square: \f83e; +$fa-var-waze: \f83f; +$fa-var-weebly: \f5cc; +$fa-var-weibo: \f18a; +$fa-var-weight: \f496; +$fa-var-weight-hanging: \f5cd; +$fa-var-weixin: \f1d7; +$fa-var-whatsapp: \f232; +$fa-var-whatsapp-square: \f40c; +$fa-var-wheelchair: \f193; +$fa-var-whmcs: \f40d; +$fa-var-wifi: \f1eb; +$fa-var-wikipedia-w: \f266; +$fa-var-wind: \f72e; +$fa-var-window-close: \f410; +$fa-var-window-maximize: \f2d0; +$fa-var-window-minimize: \f2d1; +$fa-var-window-restore: \f2d2; +$fa-var-windows: \f17a; +$fa-var-wine-bottle: \f72f; +$fa-var-wine-glass: \f4e3; +$fa-var-wine-glass-alt: \f5ce; +$fa-var-wix: \f5cf; +$fa-var-wizards-of-the-coast: \f730; +$fa-var-wolf-pack-battalion: \f514; +$fa-var-won-sign: \f159; +$fa-var-wordpress: \f19a; +$fa-var-wordpress-simple: \f411; +$fa-var-wpbeginner: \f297; +$fa-var-wpexplorer: \f2de; +$fa-var-wpforms: \f298; +$fa-var-wpressr: \f3e4; +$fa-var-wrench: \f0ad; +$fa-var-x-ray: \f497; +$fa-var-xbox: \f412; +$fa-var-xing: \f168; +$fa-var-xing-square: \f169; +$fa-var-y-combinator: \f23b; +$fa-var-yahoo: \f19e; +$fa-var-yammer: \f840; +$fa-var-yandex: \f413; +$fa-var-yandex-international: \f414; +$fa-var-yarn: \f7e3; +$fa-var-yelp: \f1e9; +$fa-var-yen-sign: \f157; +$fa-var-yin-yang: \f6ad; +$fa-var-yoast: \f2b1; +$fa-var-youtube: \f167; +$fa-var-youtube-square: \f431; +$fa-var-zhihu: \f63f; diff --git a/core/asset/css/scss/index.php b/core/asset/css/scss/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/asset/css/scss/index.php @@ -0,0 +1,2 @@ + a { + color: #1897e7; +} + +/* Vertical */ +.wpeo-tab.tab-vertical .tab-list .tab-element { + /* Active */ +} + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active { + color: #1897e7; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a { + color: #1897e7; +} + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: #1897e7; +} + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: #272a35; +} + +@media (max-width: 480px) { + .wpeo-table > tbody td:before, .wpeo-table > tbody th:before { + color: #1897e7; + } +} + +/* Couleurs */ +.wpeo-tooltip.tooltip-primary { + background: #1897e7; +} + +.wpeo-tooltip.tooltip-primary.tooltip-top::before { + border-color: #1897e7 transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-right::before { + border-color: transparent #1897e7 transparent transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-bottom::before { + border-color: transparent transparent #1897e7 transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-left::before { + border-color: transparent transparent transparent #1897e7; +} + +.wpeo-tooltip.tooltip-light { + background: #ececec; + color: rgba(0, 0, 0, 0.6); +} + +.wpeo-tooltip.tooltip-light.tooltip-top::before { + border-color: #ececec transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-right::before { + border-color: transparent #ececec transparent transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-bottom::before { + border-color: transparent transparent #ececec transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-left::before { + border-color: transparent transparent transparent #ececec; +} + +.wpeo-tooltip.tooltip-red { + background: #e05353; +} + +.wpeo-tooltip.tooltip-red.tooltip-top::before { + border-color: #e05353 transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-right::before { + border-color: transparent #e05353 transparent transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-bottom::before { + border-color: transparent transparent #e05353 transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-left::before { + border-color: transparent transparent transparent #e05353; +} + +.wpeo-button { + box-sizing: border-box; +} + +.wpeo-button.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; +} + +.wpeo-table.table-flex .table-cell.table-25 { + max-width: 25px; + min-width: 25px; +} + +.wpeo-table.table-flex .table-cell.table-50 { + max-width: 50px; + min-width: 50px; +} + +.wpeo-table.table-flex .table-cell.table-75 { + max-width: 75px; + min-width: 75px; +} + +.wpeo-table.table-flex .table-cell.table-100 { + max-width: 100px; + min-width: 100px; +} + +.wpeo-table.table-flex .table-cell.table-125 { + max-width: 125px; + min-width: 125px; +} + +.wpeo-table.table-flex .table-cell.table-150 { + max-width: 150px; + min-width: 150px; +} + +.wpeo-table.table-flex .table-cell.table-175 { + max-width: 175px; + min-width: 175px; +} + +.wpeo-table.table-flex .table-cell.table-200 { + max-width: 200px; + min-width: 200px; +} + +.wpeo-table.table-flex .table-cell.table-225 { + max-width: 225px; + min-width: 225px; +} + +.wpeo-table.table-flex .table-cell.table-250 { + max-width: 250px; + min-width: 250px; +} + +.wpeo-table.table-flex .table-cell.table-275 { + max-width: 275px; + min-width: 275px; +} + +.wpeo-table.table-flex .table-cell.table-300 { + max-width: 300px; + min-width: 300px; +} + +.wpeo-table.table-flex .table-cell.table-325 { + max-width: 325px; + min-width: 325px; +} + +.wpeo-table.table-flex .table-cell.table-350 { + max-width: 350px; + min-width: 350px; +} + +.wpeo-table.table-flex .table-cell.table-375 { + max-width: 375px; + min-width: 375px; +} + +.wpeo-table.table-flex .table-cell.table-400 { + max-width: 400px; + min-width: 400px; +} + +/** + * Interface de mise à jour des données + */ +.wpeo-modal .notice { + margin-left: 0; +} + +.wpeo-modal .wpeo-grid { + width: 100%; +} + +.wpeo-modal .item { + display: block; + background-color: #fff; + font-size: 14px; + display: -webkit-box; + display: flex; + height: 100%; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal .item::after { + display: block; + content: ''; + clear: both; +} + +.wpeo-modal .item .item-spin { + width: 80px; + position: relative; + border-left: 6px solid #4c4c4c; +} + +.wpeo-modal .item .item-spin .wps-spinner, .wpeo-modal .item .item-spin .icon { + position: absolute; + top: 50%; + left: 50%; + margin: 0; + padding: 0; + font-size: 20px; +} + +.wpeo-modal .item .item-spin .wps-spinner { + opacity: 0; + -webkit-transform: translate(-50%, -120%); + transform: translate(-50%, -120%); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal .item .item-spin .icon { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal .item .item-container { + width: 100%; + margin: auto 0; + padding: 2em 2em 2em 0em; +} + +.wpeo-modal .item .item-content .item-title { + font-size: 12px; + text-transform: uppercase; + color: rgba(0, 0, 0, 0.8); + font-weight: 900; + margin-bottom: 0.4em; +} + +.wpeo-modal .item .item-content .item-description { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); +} + +.wpeo-modal .item .item-progress { + background: rgba(0, 0, 0, 0.1); + position: relative; + display: block; + padding: 0 1em; + height: 26px; + line-height: 26px; + border-radius: 20px; + overflow: hidden; + margin-top: 2em; +} + +.wpeo-modal .item .item-progress .item-progression { + position: absolute; + background-color: #47e58e; + top: 0; + left: 0; + width: 0%; + height: 100%; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal .item .item-progress .item-stats { + position: relative; + font-size: 12px; +} + +.wpeo-modal .item.in-progress-item { + -webkit-transform: translateX(-10px); + transform: translateX(-10px); +} + +.wpeo-modal .item.in-progress-item .item-spin { + border-left: 6px solid #0d8aff; +} + +.wpeo-modal .item.in-progress-item .item-spin .fa-spin { + color: #0d8aff; +} + +.wpeo-modal .item.in-progress-item .wps-spinner { + opacity: 1; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.wpeo-modal .item.in-progress-item .icon { + -webkit-transform: translate(-50%, 0%); + transform: translate(-50%, 0%); + opacity: 0; +} + +.wpeo-modal .item.done-item .item-spin { + border-left: 6px solid #47e58e; +} + +.wpeo-modal .item.done-item .icon::before { + color: #47e58e; +} + +.wpeo-modal .general-message { + width: 80%; + margin: 0 auto; + font-size: 14px; + text-align: center; +} + +.wpshop_page_wps-status .wpeo-wrap table { + width: 100%; +} + +.wpshop_page_wps-status .wpeo-wrap table tr td { + padding: 10px; +} + +.wpshop_page_wps-status .wpeo-wrap table tr td:first-child { + width: 30%; +} + +.wpshop_page_wps-status .wpeo-wrap table tr td:last-child { + width: 70%; +} + +.wpshop_page_wps-status .wpeo-wrap table tr .fa-check { + color: green !important; +} + +.wpshop_page_wps-status .wpeo-wrap table tr .fa-times { + color: red !important; +} + +.wpeo-wrap { + /** Synchro */ + /** Metabox List */ + /** Page Content */ +} + +.wpeo-wrap .wpeo-table.table-flex .reference-id { + margin: 0; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-id li { + display: inline-block; + margin: 0 0.6em 0 0; + color: rgba(0, 0, 0, 0.4); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-id li:last-child { + margin: 0; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-title { + font-size: 20px; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-title a { + color: rgba(0, 0, 0, 0.8); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + text-decoration: none; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-title a:hover { + color: rgba(0, 0, 0, 0.5); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-content { + font-size: 14px; + margin: 0.2em 0; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-content i { + color: rgba(0, 0, 0, 0.2); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions { + margin: 0.6em 0 0 0; + line-height: 1; + opacity: 0; + pointer-events: none; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li { + display: inline-block; + margin: 0 0.3em 0 0; + padding-right: 0.3em; + border-right: 1px solid rgba(0, 0, 0, 0.2); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li a { + color: #1897e7; + text-decoration: none; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li a:hover { + color: rgba(24, 151, 231, 0.7); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li.delete a { + color: #e05353; +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li.delete a:hover { + color: rgba(224, 83, 83, 0.7); +} + +.wpeo-wrap .wpeo-table.table-flex .reference-actions li:last-child { + margin: 0; + padding: 0; + border-right: 0; +} + +.wpeo-wrap .wpeo-table.table-flex .table-row:hover .reference-actions { + opacity: 1; + pointer-events: all; +} + +.wpeo-wrap .wps-list-product img { + display: block; +} + +.wpeo-wrap .wpeo-table .list-contact .contact { + margin-bottom: 0.6em; +} + +.wpeo-wrap .wpeo-table .list-contact .contact:last-child { + margin-bottom: 0; +} + +.wpeo-wrap .wpeo-table .list-contact .contact-title { + font-size: 16px; +} + +.wpeo-wrap .wpeo-table .list-contact .contact-list-data { + margin: 0; +} + +.wpeo-wrap .wpeo-table .list-contact .contact-data { + display: inline-block; + margin: 0 0.4em 0 0; +} + +.wpeo-wrap .wpeo-table .list-contact .contact-data:last-child { + margin: 0; +} + +.wpeo-wrap .wpeo-table .list-contact .contact-data i { + color: rgba(0, 0, 0, 0.2); +} + +.wpeo-wrap .wpeo-table .list-commercial .commercial-date { + color: rgba(0, 0, 0, 0.4); +} + +.wpeo-wrap .wpeo-table .list-commercial .commercial-title { + color: #1897e7; +} + +.wpeo-wrap .wpeo-table.table-flex { + border: 0; + background: #fff; +} + +.wpeo-wrap .wpeo-table.table-flex .table-row.table-header { + background: #fff; + border-bottom: 2px solid rgba(0, 0, 0, 0.3); +} + +.wpeo-wrap .wpeo-table.table-flex .table-row.table-header .table-cell { + color: rgba(0, 0, 0, 0.8); +} + +.wpeo-wrap .wpeo-table.table-flex .table-row:not(.table-header):nth-of-type(odd) { + background: rgba(0, 0, 0, 0.02); +} + +.wpeo-wrap .wpeo-table.table-flex .table-button-edit { + color: #1897e7; +} + +.wpeo-wrap .wpeo-table.table-flex input[type=date], +.wpeo-wrap .wpeo-table.table-flex input[type=datetime-local], +.wpeo-wrap .wpeo-table.table-flex input[type=datetime], +.wpeo-wrap .wpeo-table.table-flex input[type=email], +.wpeo-wrap .wpeo-table.table-flex input[type=month], +.wpeo-wrap .wpeo-table.table-flex input[type=number], +.wpeo-wrap .wpeo-table.table-flex input[type=password], +.wpeo-wrap .wpeo-table.table-flex input[type=search], +.wpeo-wrap .wpeo-table.table-flex input[type=tel], +.wpeo-wrap .wpeo-table.table-flex input[type=text], +.wpeo-wrap .wpeo-table.table-flex input[type=time], +.wpeo-wrap .wpeo-table.table-flex input[type=url], +.wpeo-wrap .wpeo-table.table-flex input[type=week], +.wpeo-wrap .wpeo-table.table-flex select, +.wpeo-wrap .wpeo-table.table-flex textarea { + width: 100%; +} + +.wpeo-wrap .wpeo-table td, .wpeo-wrap .wpeo-table th { + border: 0; +} + +.wpeo-wrap .wpeo-table td.table-end, .wpeo-wrap .wpeo-table th.table-end { + text-align: right; +} + +.wpeo-wrap .wpeo-table > tfoot { + background: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.8); +} + +.wpeo-wrap .wpeo-table > tfoot td { + padding: .2em .6em; + border: 1px solid rgba(0, 0, 0, 0.1); +} + +.wpeo-wrap .wpeo-table a:not(.wpeo-button) { + color: #1897e7; + text-decoration: none; +} + +.wpeo-wrap .wps-checkout-review-order-table tbody tr td:last-child, .wpeo-wrap .wps-checkout-review-order-table tfoot tr td:last-child { + text-align: right; +} + +.wpeo-wrap .wps-filter-bar > * { + display: inline-block; +} + +.wpeo-wrap .wps-filter-bar .wpeo-button { + margin-right: 1em; +} + +.wpeo-wrap .wps-sync .button-synchro { + float: left; + width: 25px; + height: 25px; + background: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.6); + text-align: center; + line-height: 25px; + border-radius: 50%; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-wrap .wps-sync .button-synchro i { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-wrap .wps-sync .button-synchro:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.2); +} + +.wpeo-wrap .wps-sync .button-synchro:hover i { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.wpeo-wrap .wps-sync .statut { + float: left; + width: 25px; + height: 25px; + border-radius: 50%; + margin-left: 0.6em; + background: rgba(0, 0, 0, 0.1); +} + +.wpeo-wrap .wps-sync .statut.statut-grey { + background: #ececec; +} + +.wpeo-wrap .wps-sync .statut.statut-green { + background: #47e58e; +} + +.wpeo-wrap .wps-sync .statut.statut-orange { + background: #e9ad4f; +} + +.wpeo-wrap .wps-sync .statut.statut-red { + background: #e05353; +} + +.wpeo-wrap .wps-metabox { + background: #fff; + padding: 2em; + position: relative; +} + +.wpeo-wrap .wps-metabox .metabox-title { + font-weight: 300; + font-size: 22px; + margin: 0 0 1em 0; +} + +.wpeo-wrap .wps-metabox .metabox-edit { + position: absolute; + top: 1em; + right: 1em; +} + +.wpeo-wrap .wps-metabox .metabox-list-title { + font-size: 16px; + margin: 0 0 1em 0; +} + +.wpeo-wrap .wps-metabox .metabox-list { + margin: 0; +} + +.wpeo-wrap .wps-metabox .metabox-list li { + margin: 0; +} + +.wpeo-wrap .wps-metabox .metabox-list li span { + font-weight: 700; + margin-right: 0.4em; +} + +.wpeo-wrap .page-header { + display: -webkit-box; + display: flex; + padding-top: 9px; + margin-bottom: 1.8em; +} + +.wpeo-wrap .page-header h2 { + font-size: 23px; + font-weight: 400; + margin: 0; + padding: 0; + line-height: 29px; +} + +.wpeo-wrap .page-header .wps-edit-title { + margin: 0 0.6em; + vertical-align: top; +} + +.wpeo-wrap .page-header .wps-sync { + margin: auto 1em; +} + +.wpeo-wrap .wps-status { + font-weight: 600; +} + +.wpeo-wrap .wps-status.status-grey { + color: #ababab; +} + +.wpeo-wrap .wps-status.status-green { + color: #19d854; +} + +.wpeo-wrap .wps-status.status-orange { + color: #ffa500; +} + +.wpeo-wrap .wps-status.status-red { + color: #ff1818; +} + +.wpeo-wrap a:not(.wpeo-button) { + color: #1897e7; + text-decoration: none; +} + +.notification-add-to-cart { + width: 90%; + right: 0; + left: 0; + margin-right: auto; + margin-left: auto; + top: 3em; + bottom: auto; +} + +.wpshop_page_wps-third-party .wpeo-wrap .page-header h2 { + display: -webkit-box; + display: flex; +} + +.wpshop_page_wps-order .wpeo-wrap .page-header h2 { + display: -webkit-box; + display: flex; +} + +/** Temporaire **/ +.wp-admin select { + height: auto !important; +} + +.post-type-wps-order #post-body-content, .post-type-wps-order #titlediv { + display: none; +} + +.post-type-wps-proposal #post-body-content, .post-type-wps-proposal #titlediv { + display: none; +} + +#toplevel_page_wps-order .wp-first-item { + display: none; +} + +.synchro-single .filter-entry { + width: 99.8%; + padding: 10px; +} + +.synchro-single .select { + margin: 0; + height: 280px; + overflow-y: scroll; + overflow-x: hidden; + border: solid black 1px; +} + +.synchro-single .select li { + display: block; + padding: 10px; + margin: 0; +} + +.synchro-single .select li:nth-child(odd) { + background-color: rgba(0, 0, 0, 0); +} + +.synchro-single .select li:nth-child(even) { + background-color: rgba(0, 0, 0, 0.1); +} + +.synchro-single .select li:hover { + color: white; + background-color: #1897e7; + cursor: pointer; +} + +.synchro-single .select li.active { + color: white; + background-color: #1897e7; +} + +.need-to-confirm .modal-container { + max-width: 600px; + max-height: 420px; +} + +.need-to-confirm .modal-container .modal-content { + height: 68%; +} + +.choose { + padding: 10px; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.choose:hover { + background-color: #ececec; +} + +.choose .wpeo-button.button-main { + background-color: #272a35; +} + +.mask { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: rgba(0, 0, 0, 0.8); + z-index: 999999; + text-align: center; +} + +.mask h3 { + font-size: 30px; + color: white; +} + +.mask .content { + position: relative; + top: 50%; + -webkit-transform: translateY(-70%); + transform: translateY(-70%); +} + +.fa-toggle-on { + color: green; +} diff --git a/core/asset/css/style.frontend.css b/core/asset/css/style.frontend.css new file mode 100644 index 0000000..6a57a4d --- /dev/null +++ b/core/asset/css/style.frontend.css @@ -0,0 +1,942 @@ +@charset "UTF-8"; +/* Bleu ciel, couleur principale */ +/* Bleu fonce, couleur de l'interface */ +/* Autres couleurs */ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +.fa, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; } + +.wpeo-autocomplete .autocomplete-label:hover { + border: 1px solid #0088FF; } + +.wpeo-autocomplete .autocomplete-label .autocomplete-loading { + background: #0088FF; } + +.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background { + background: rgba(0, 136, 255, 0.4); } + +.wpeo-button, a.wpeo-button { + /* par défaut */ + background: #0088FF; + border-color: #0088FF; } + +.wpeo-button.button-main, a.wpeo-button.button-main { + background: #0088FF; + border-color: #0088FF; } + +.wpeo-button.button-dark, a.wpeo-button.button-dark { + background: #272a35; + border-color: #272a35; } + +.wpeo-button.button-grey, a.wpeo-button.button-grey { + background: #ececec; + border-color: #ececec; } + +.wpeo-button.button-red, a.wpeo-button.button-red { + background: #e05353; + border-color: #e05353; } + +.wpeo-button.button-yellow, a.wpeo-button.button-yellow { + background: #e9ad4f; + border-color: #e9ad4f; } + +.wpeo-button.button-green, a.wpeo-button.button-green { + background: #47e58e; + border-color: #47e58e; } + +.wpeo-button.button-pink, a.wpeo-button.button-pink { + background: #e454a2; + border-color: #e454a2; } + +.wpeo-button.button-purple, a.wpeo-button.button-purple { + background: #898de5; + border-color: #898de5; } + +.wpeo-button.button-grey, a.wpeo-button.button-grey { + background: #ececec; + border-color: #ececec; } + +.wpeo-button.button-transparent, a.wpeo-button.button-transparent { + background: transparent; + border-color: transparent; } + +.wpeo-button.button-bordered { + border-color: #0088FF; + color: #0088FF; } + +.wpeo-button.button-bordered.button-main { + border-color: #0088FF; + color: #0088FF; } + +.wpeo-button.button-bordered.button-main:hover { + -webkit-box-shadow: inset 0 -2.6em #0088FF; + box-shadow: inset 0 -2.6em #0088FF; } + +.wpeo-button.button-bordered.button-dark { + border-color: #272a35; + color: #272a35; } + +.wpeo-button.button-bordered.button-dark:hover { + -webkit-box-shadow: inset 0 -2.6em #272a35; + box-shadow: inset 0 -2.6em #272a35; } + +.wpeo-button.button-bordered.button-grey { + border-color: #ececec; + color: #a0a0a0; } + +.wpeo-button.button-bordered.button-grey:hover { + -webkit-box-shadow: inset 0 -2.6em #ececec; + box-shadow: inset 0 -2.6em #ececec; } + +.wpeo-button.button-bordered.button-red { + border-color: #e05353; + color: #e05353; } + +.wpeo-button.button-bordered.button-red:hover { + -webkit-box-shadow: inset 0 -2.6em #e05353; + box-shadow: inset 0 -2.6em #e05353; } + +.wpeo-button.button-bordered.button-yellow { + border-color: #e9ad4f; + color: #e9ad4f; } + +.wpeo-button.button-bordered.button-yellow:hover { + -webkit-box-shadow: inset 0 -2.6em #e9ad4f; + box-shadow: inset 0 -2.6em #e9ad4f; } + +.wpeo-button.button-bordered.button-green { + border-color: #47e58e; + color: #47e58e; } + +.wpeo-button.button-bordered.button-green:hover { + -webkit-box-shadow: inset 0 -2.6em #47e58e; + box-shadow: inset 0 -2.6em #47e58e; } + +.wpeo-button.button-bordered.button-pink { + border-color: #e454a2; + color: #e454a2; } + +.wpeo-button.button-bordered.button-pink:hover { + -webkit-box-shadow: inset 0 -2.6em #e454a2; + box-shadow: inset 0 -2.6em #e454a2; } + +.wpeo-button.button-bordered.button-purple { + border-color: #898de5; + color: #898de5; } + +.wpeo-button.button-bordered.button-purple:hover { + -webkit-box-shadow: inset 0 -2.6em #898de5; + box-shadow: inset 0 -2.6em #898de5; } + +.wpeo-button.button-bordered.button-grey { + border-color: #ececec; + color: #ececec; } + +.wpeo-button.button-bordered.button-grey:hover { + -webkit-box-shadow: inset 0 -2.6em #ececec; + box-shadow: inset 0 -2.6em #ececec; } + +.wpeo-button.button-bordered:hover { + -webkit-box-shadow: inset 0 -2.6em #0088FF; + box-shadow: inset 0 -2.6em #0088FF; } + +/** Progress button */ +.wpeo-button.button-progress.button-success { + background: #47e58e; + border-color: #47e58e; } + +.wpeo-button.button-progress.button-error { + background: #e05353; + border-color: #e05353; } + +.wpeo-button.button-progress.button-load { + background: #ececec; } + +.wpeo-button.button-progress.button-load:before { + border-top: 3px solid #0088FF; } + +.wpeo-form .form-element input[type="checkbox"].form-field:not(:checked) + label:hover:before { + -webkit-box-shadow: 0 0 0 2px #0088FF; + box-shadow: 0 0 0 2px #0088FF; } + +.wpeo-form .form-element input[type="checkbox"].form-field:checked + label:before { + -webkit-box-shadow: 0 0 0 2px #0088FF; + box-shadow: 0 0 0 2px #0088FF; + background: #0088FF; } + +.wpeo-form .form-element input[type="radio"].form-field:hover { + border: 1px solid #0088FF; + -webkit-box-shadow: 0 0 0 1px #0088FF inset; + box-shadow: 0 0 0 1px #0088FF inset; } + +.wpeo-form .form-element input[type="radio"].form-field:checked { + border: 1px solid #0088FF; + -webkit-box-shadow: 0 0 0 4px #0088FF inset; + box-shadow: 0 0 0 4px #0088FF inset; } + +.wpeo-loader .loader-spin { + border-top: 3px solid #0088FF; } + +.wpeo-modal .modal-container .modal-header .modal-close:hover { + color: #0088FF; } + +.wpeo-notification .notification-title a { + color: #0088FF; } + +.wpeo-notification .notification-close:hover { + color: #0088FF; } + +/** Couleur */ +.wpeo-notification.notification-green { + border-left: 4px solid #47e58e; } + +.wpeo-notification.notification-green .notification-icon { + color: #47e58e; } + +.wpeo-notification.notification-orange { + border-left: 4px solid #e9ad4f; } + +.wpeo-notification.notification-orange .notification-icon { + color: #e9ad4f; } + +.wpeo-notification.notification-red { + border-left: 4px solid #e05353; } + +.wpeo-notification.notification-red .notification-icon { + color: #e05353; } + +.wpeo-pagination .pagination-element.pagination-current a { + background: #0088FF; } + +.wpeo-pagination .pagination-element.pagination-current a:hover { + background: #0088FF; } + +/* Couleurs */ +.wpeo-popover.popover-primary { + background: #0088FF; } + +.wpeo-popover.popover-primary.popover-top:before { + border-color: #0088FF transparent transparent transparent; } + +.wpeo-popover.popover-primary.popover-right:before { + border-color: transparent #0088FF transparent transparent; } + +.wpeo-popover.popover-primary.popover-bottom:before { + border-color: transparent transparent #0088FF transparent; } + +.wpeo-popover.popover-primary.popover-left:before { + border-color: transparent transparent transparent #0088FF; } + +.wpeo-popover.popover-light { + background: #ececec; + color: rgba(0, 0, 0, 0.6); } + +.wpeo-popover.popover-light.popover-top:before { + border-color: #ececec transparent transparent transparent; } + +.wpeo-popover.popover-light.popover-right:before { + border-color: transparent #ececec transparent transparent; } + +.wpeo-popover.popover-light.popover-bottom:before { + border-color: transparent transparent #ececec transparent; } + +.wpeo-popover.popover-light.popover-left:before { + border-color: transparent transparent transparent #ececec; } + +.wpeo-popover.popover-red { + background: #e05353; } + +.wpeo-popover.popover-red.popover-top:before { + border-color: #e05353 transparent transparent transparent; } + +.wpeo-popover.popover-red.popover-right:before { + border-color: transparent #e05353 transparent transparent; } + +.wpeo-popover.popover-red.popover-bottom:before { + border-color: transparent transparent #e05353 transparent; } + +.wpeo-popover.popover-red.popover-left:before { + border-color: transparent transparent transparent #e05353; } + +.wpeo-tab .tab-list .tab-element { + /* Active */ } + +.wpeo-tab .tab-list .tab-element:before { + background: #0088FF; } + +.wpeo-tab .tab-list .tab-element.tab-active { + color: #0088FF; } + +.wpeo-tab .tab-list .tab-element.tab-active > a { + color: #0088FF; } + +/* Vertical */ +.wpeo-tab.tab-vertical .tab-list .tab-element { + /* Active */ } + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active { + color: #0088FF; } + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a { + color: #0088FF; } + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: #0088FF; } + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: #272a35; } + +@media (max-width: 480px) { + .wpeo-table > tbody td:before, .wpeo-table > tbody th:before { + color: #0088FF; } } + +/* Couleurs */ +.wpeo-tooltip.tooltip-primary { + background: #0088FF; } + +.wpeo-tooltip.tooltip-primary.tooltip-top:before { + border-color: #0088FF transparent transparent transparent; } + +.wpeo-tooltip.tooltip-primary.tooltip-right:before { + border-color: transparent #0088FF transparent transparent; } + +.wpeo-tooltip.tooltip-primary.tooltip-bottom:before { + border-color: transparent transparent #0088FF transparent; } + +.wpeo-tooltip.tooltip-primary.tooltip-left:before { + border-color: transparent transparent transparent #0088FF; } + +.wpeo-tooltip.tooltip-light { + background: #ececec; + color: rgba(0, 0, 0, 0.6); } + +.wpeo-tooltip.tooltip-light.tooltip-top:before { + border-color: #ececec transparent transparent transparent; } + +.wpeo-tooltip.tooltip-light.tooltip-right:before { + border-color: transparent #ececec transparent transparent; } + +.wpeo-tooltip.tooltip-light.tooltip-bottom:before { + border-color: transparent transparent #ececec transparent; } + +.wpeo-tooltip.tooltip-light.tooltip-left:before { + border-color: transparent transparent transparent #ececec; } + +.wpeo-tooltip.tooltip-red { + background: #e05353; } + +.wpeo-tooltip.tooltip-red.tooltip-top:before { + border-color: #e05353 transparent transparent transparent; } + +.wpeo-tooltip.tooltip-red.tooltip-right:before { + border-color: transparent #e05353 transparent transparent; } + +.wpeo-tooltip.tooltip-red.tooltip-bottom:before { + border-color: transparent transparent #e05353 transparent; } + +.wpeo-tooltip.tooltip-red.tooltip-left:before { + border-color: transparent transparent transparent #e05353; } + +.wpeo-button { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +.wpeo-button.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; } + +.wpeo-table.table-flex .table-cell.table-25 { + max-width: 25px; + min-width: 25px; } + +.wpeo-table.table-flex .table-cell.table-50 { + max-width: 50px; + min-width: 50px; } + +.wpeo-table.table-flex .table-cell.table-75 { + max-width: 75px; + min-width: 75px; } + +.wpeo-table.table-flex .table-cell.table-100 { + max-width: 100px; + min-width: 100px; } + +.wpeo-table.table-flex .table-cell.table-125 { + max-width: 125px; + min-width: 125px; } + +.wpeo-table.table-flex .table-cell.table-150 { + max-width: 150px; + min-width: 150px; } + +.wpeo-table.table-flex .table-cell.table-175 { + max-width: 175px; + min-width: 175px; } + +.wpeo-table.table-flex .table-cell.table-200 { + max-width: 200px; + min-width: 200px; } + +.wpeo-table.table-flex .table-cell.table-225 { + max-width: 225px; + min-width: 225px; } + +.wpeo-table.table-flex .table-cell.table-250 { + max-width: 250px; + min-width: 250px; } + +.wpeo-table.table-flex .table-cell.table-275 { + max-width: 275px; + min-width: 275px; } + +.wpeo-table.table-flex .table-cell.table-300 { + max-width: 300px; + min-width: 300px; } + +.wpeo-table.table-flex .table-cell.table-325 { + max-width: 325px; + min-width: 325px; } + +.wpeo-table.table-flex .table-cell.table-350 { + max-width: 350px; + min-width: 350px; } + +.wpeo-table.table-flex .table-cell.table-375 { + max-width: 375px; + min-width: 375px; } + +.wpeo-table.table-flex .table-cell.table-400 { + max-width: 400px; + min-width: 400px; } + +.wps-account-page .wpeo-notice { + margin: 0; } + +.wps-cart .wps-list-product .wps-product { + background: rgba(0, 0, 0, 0.075); } + +.wps-cart-resume { + display: block; + margin: 0; + padding: 1em; + background: rgba(0, 0, 0, 0.075); } + +.wps-cart-resume .wps-resume-line { + margin: 0; + list-style-type: none; + font-size: 16px; + font-weight: 400; + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; } + +.wps-cart-resume .wps-resume-line .wps-line-value { + margin-left: auto; + text-align: right; + font-weight: 700; } + +.wps-cart-resume .wps-resume-line.featured { + margin-top: 30px; + font-size: 22px; + font-weight: 600; + color: rgba(0, 0, 0, 0.8); } + +.wps-cart .wps-process-checkout-button, .wps-checkout .wps-process-checkout-button { + display: block; + float: none; + width: 100%; + text-align: center; + -webkit-border-radius: 6px; + border-radius: 6px; + margin: 1em 0; + text-decoration: none !important; } + +.wps-cart .wps-checkout-quotation-button, .wps-checkout .wps-checkout-quotation-button { + display: block; + text-align: center; + font-weight: 700; + text-decoration: underline; + color: rgba(0, 0, 0, 0.8); } + +.wps-cart .wps-checkout-quotation-button:hover, .wps-checkout .wps-checkout-quotation-button:hover { + color: #0088FF; + cursor: pointer; } + +.wps-checkout .wps-checkout-subtitle { + font-weight: 700; + font-size: 18px; + margin-bottom: 0.8em; + color: rgba(0, 0, 0, 0.8); } + +.wps-checkout .wps-checkout-subtitle:before { + display: inline-block; + content: ''; + font-weight: 900; + color: #0088FF; + margin-right: 0.4em; } + +.wps-checkout .wps-checkout-step-1 .wps-checkout-subtitle:before { + content: '01.'; } + +.wps-checkout .wps-checkout-step-2 .wps-checkout-subtitle:before { + content: '02.'; } + +.wps-checkout .wps-checkout-step-3 .wps-checkout-subtitle:before { + content: '03.'; } + +.wps-checkout [class*="wps-checkout-step"] { + margin-bottom: 1em; } + +/** Etape 3 */ +.wps-checkout .wps-checkout-step-3 .wps-checkout-subtitle { + float: left; } + +.wps-checkout .wps-checkout-step-3 .wps-checkout-edit-order { + float: right; + font-size: 14px; + line-height: 2.3; + color: #0088FF; } + +.wps-checkout .wps-checkout-step-3 .wps-checkout-review-order { + clear: both; } + +.wps-checkout-payment .wps-payment-list, .wps-checkout-payment .wps-payment { + list-style-type: none; + margin: 0; + padding: 0; } + +.wps-checkout-payment .wps-payment-title { + font-size: 16px; + font-weight: 700; + color: rgba(0, 0, 0, 0.8); + line-height: 1.4; + margin-bottom: 0.4em; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.wps-checkout-payment .wps-payment-title .wps-payement-icon { + font-weight: 400; + color: #0088FF; } + +.wps-checkout-payment .wps-payment-description { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); + line-height: 1.4; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.wps-checkout-payment .wps-payment { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-checkout-payment .wps-payment.checked { + background: #0088FF; + color: #fff; } + +.wps-checkout-payment .wps-payment.checked .wps-payment-title, .wps-checkout-payment .wps-payment.checked .wps-payment-description, .wps-checkout-payment .wps-payment.checked .wps-payement-icon { + color: #fff; } + +.wps-checkout-payment .wps-payment .wps-payment-container { + padding: 0.6em; + display: block; } + +.wps-checkout-payment .wps-payment .wps-payment-container:hover { + cursor: pointer; } + +.wps-checkout-review-order .wps-list-product { + margin-bottom: 30px; } + +.wps-checkout-review-order .wps-list-product .wps-product { + padding: 0; + background: transparent; } + +.wps-checkout-review-order .wps-list-product .wps-product:last-child { + margin-bottom: 1em; } + +.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-title { + font-size: 16px; } + +.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-attributes { + display: none; } + +.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer { + margin-top: 0; } + +.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity { + color: rgba(0, 0, 0, 0.4); + font-weight: 400; } + +.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price { + color: inherit; } + +body.single-wps-product .wps-product-price { + font-size: 2em; + font-weight: 300; } + +.wps-product-grid .wps-product { + display: block; } + +.wps-product-grid .wps-product .wps-product-thumbnail { + position: relative; } + +.wps-product-grid .wps-product .wps-product-thumbnail:before { + display: block; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.3); + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + z-index: 1; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-product-grid .wps-product .wps-product-thumbnail .attachment-wps-product-thumbnail { + display: block; + width: 100%; } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action { + position: absolute; + z-index: 3; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button { + color: #0088FF; + -webkit-transition: all 0.2s ease-out, -webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition: all 0.2s ease-out, -webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); + transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), all 0.2s ease-out; + transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275), all 0.2s ease-out, -webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:hover { + -webkit-box-shadow: inset 0 -2.6em #0088FF; + box-shadow: inset 0 -2.6em #0088FF; + border-color: #0088FF; + color: #fff; } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:first-child { + -webkit-transform: translateX(-10px); + -ms-transform: translateX(-10px); + transform: translateX(-10px); } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:last-child { + -webkit-transform: translateX(10px); + -ms-transform: translateX(10px); + transform: translateX(10px); } + +.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-link { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 2; } + +.wps-product-grid .wps-product .wps-product-content { + text-align: center; + line-height: 1.2; + padding: 0.6em 0; } + +.wps-product-grid .wps-product .wps-product-content .wps-product-title { + font-size: 16px; + font-weight: 700; } + +.wps-product-grid .wps-product .wps-product-content .wps-product-price { + font-size: 26px; + font-weight: 100; } + +.wps-product-grid .wps-product:hover .wps-product-thumbnail:before { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } + +.wps-product-grid .wps-product:hover .wps-product-action { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } + +.wps-product-grid .wps-product:hover .wps-product-action .wpeo-button { + -webkit-transform: translateX(0) !important; + -ms-transform: translateX(0) !important; + transform: translateX(0) !important; } + +.wps-list-product .wps-product { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + background: #fff; + padding: 1em; + margin-bottom: 0.6em; + position: relative; } + +.wps-list-product .wps-product:last-child { + margin-bottom: 0; } + +.wps-list-product .wps-product .wps-product-thumbnail, .wps-list-product .wps-product .wps-product-content { + margin: auto 0; } + +.wps-list-product .wps-product .wps-product-thumbnail { + min-width: 20%; + width: 20%; + margin-right: 0.6em; } + +.wps-list-product .wps-product .wps-product-thumbnail .attachment-wps-product-thumbnail { + width: 100%; + height: auto; + display: block; } + +.wps-list-product .wps-product .wps-delete-product { + position: absolute; + top: 0.6em; + right: 0.6em; + color: rgba(0, 0, 0, 0.4); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-list-product .wps-product .wps-delete-product:hover { + cursor: pointer; + color: rgba(0, 0, 0, 0.9); } + +.wps-list-product .wps-product .wps-product-content { + width: 100%; + line-height: 1.2; } + +.wps-list-product .wps-product .wps-product-content .wps-product-title { + font-size: 20px; + color: rgba(0, 0, 0, 0.9); + line-height: 1.2; } + +.wps-list-product .wps-product .wps-product-content .wps-product-attributes { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + margin: 0; + padding: 0; } + +.wps-list-product .wps-product .wps-product-content .wps-product-attributes .wps-product-attributes-item { + list-style-type: none; + margin: 0 0.2em 0 0; + color: rgba(0, 0, 0, 0.4); + font-size: 14px; } + +.wps-list-product .wps-product .wps-product-content .wps-product-attributes .wps-product-attributes-icon { + margin-right: 0.2em; } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + margin-top: 0.8em; } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity { + font-size: 16px; + font-weight: 700; + color: rgba(0, 0, 0, 0.8); } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus { + position: relative; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:focus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:active, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:focus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:active, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:focus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:active, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:focus, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:active { + top: 2px; } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:hover, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:hover, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:hover, .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:hover { + opacity: 0.6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; + cursor: pointer; } + +.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price { + margin-left: auto; } + +.wps-taxonomy .wps-taxonomy-title { + font-weight: 900; } + +.wps-account-page .wps-account-navigation { + list-style-type: none; + margin: 0; + padding: 0; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item { + background: rgba(0, 0, 0, 0.075); + font-size: 16px; + margin-bottom: 1px; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a { + text-decoration: none; + color: rgba(0, 0, 0, 0.8); + display: block; + padding: 0.8em 0.8em 0.8em 1.4em; + position: relative; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a:after, .wps-account-page .wps-account-navigation .wps-account-navigation-item a:before { + display: block; + content: ''; + background: #0088FF; + width: 6px; + height: 100%; + position: absolute; + top: 0; + left: 0; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + z-index: -1; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a:after { + width: 0; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a.active { + font-weight: 700; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a.active:before { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item a:hover:after { + width: 6px; + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } + +.wps-account-page .wps-account-navigation .wps-account-navigation-item .navigation-icon { + font-size: 14px; + margin-right: 0.4em; + color: #0088FF; } + +.wps-list-box .wps-box { + background: rgba(0, 0, 0, 0.075); + padding: 1em; + margin-bottom: 1em; } + +.wps-list-box .wps-box .wps-box-resume { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; } + +.wps-list-box .wps-box .wps-box-resume > * { + margin: auto 0; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary { + width: 100%; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-title { + font-size: 20px; + color: rgba(0, 0, 0, 0.9); + line-height: 1.2; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + margin: 0; + padding: 0; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes .wps-box-subtitle-item { + list-style-type: none; + margin: 0 0.5em 0 0; + color: rgba(0, 0, 0, 0.4); + font-size: 14px; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes .wps-box-subtitle-icon { + margin-right: 0.2em; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more { + color: #0088FF; + font-size: 14px; + margin-top: 0.6em; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more:hover { + cursor: pointer; + opacity: 0.6; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more.active .wps-box-display-more-icon:before { + content: "\f107"; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-secondary { + text-align: right; + padding: 0 1.2em; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-status { + font-size: 14px; + font-weight: 700; + line-height: 1; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-status .wps-box-status-dot { + display: inline-block; + width: 8px; + height: 8px; + -webkit-border-radius: 50%; + border-radius: 50%; + background: rgba(0, 0, 0, 0.8); + margin-right: 0.2em; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-price { + font-weight: 700; + font-size: 35px; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-action { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; } + +.wps-list-box .wps-box .wps-box-resume .wps-box-action > * { + margin: auto 0; } + +.wps-list-box .wps-box .wps-box-detail { + display: none; } + +.checkout-login .checkout-login-toggle span { + color: #0088FF; } + +.checkout-login .checkout-login-toggle span:hover { + cursor: pointer; + text-decoration: underline; } diff --git a/core/asset/css/style.frontend.min.css b/core/asset/css/style.frontend.min.css new file mode 100644 index 0000000..cc5405e --- /dev/null +++ b/core/asset/css/style.frontend.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.wpeo-autocomplete .autocomplete-label:hover{border:1px solid #0088FF}.wpeo-autocomplete .autocomplete-label .autocomplete-loading{background:#0088FF}.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background{background:rgba(0,136,255,0.4)}.wpeo-button,a.wpeo-button{background:#0088FF;border-color:#0088FF}.wpeo-button.button-main,a.wpeo-button.button-main{background:#0088FF;border-color:#0088FF}.wpeo-button.button-dark,a.wpeo-button.button-dark{background:#272a35;border-color:#272a35}.wpeo-button.button-grey,a.wpeo-button.button-grey{background:#ececec;border-color:#ececec}.wpeo-button.button-red,a.wpeo-button.button-red{background:#e05353;border-color:#e05353}.wpeo-button.button-yellow,a.wpeo-button.button-yellow{background:#e9ad4f;border-color:#e9ad4f}.wpeo-button.button-green,a.wpeo-button.button-green{background:#47e58e;border-color:#47e58e}.wpeo-button.button-pink,a.wpeo-button.button-pink{background:#e454a2;border-color:#e454a2}.wpeo-button.button-purple,a.wpeo-button.button-purple{background:#898de5;border-color:#898de5}.wpeo-button.button-grey,a.wpeo-button.button-grey{background:#ececec;border-color:#ececec}.wpeo-button.button-transparent,a.wpeo-button.button-transparent{background:transparent;border-color:transparent}.wpeo-button.button-bordered{border-color:#0088FF;color:#0088FF}.wpeo-button.button-bordered.button-main{border-color:#0088FF;color:#0088FF}.wpeo-button.button-bordered.button-main:hover{box-shadow:inset 0 -2.6em #0088FF}.wpeo-button.button-bordered.button-dark{border-color:#272a35;color:#272a35}.wpeo-button.button-bordered.button-dark:hover{box-shadow:inset 0 -2.6em #272a35}.wpeo-button.button-bordered.button-grey{border-color:#ececec;color:#a0a0a0}.wpeo-button.button-bordered.button-grey:hover{box-shadow:inset 0 -2.6em #ececec}.wpeo-button.button-bordered.button-red{border-color:#e05353;color:#e05353}.wpeo-button.button-bordered.button-red:hover{box-shadow:inset 0 -2.6em #e05353}.wpeo-button.button-bordered.button-yellow{border-color:#e9ad4f;color:#e9ad4f}.wpeo-button.button-bordered.button-yellow:hover{box-shadow:inset 0 -2.6em #e9ad4f}.wpeo-button.button-bordered.button-green{border-color:#47e58e;color:#47e58e}.wpeo-button.button-bordered.button-green:hover{box-shadow:inset 0 -2.6em #47e58e}.wpeo-button.button-bordered.button-pink{border-color:#e454a2;color:#e454a2}.wpeo-button.button-bordered.button-pink:hover{box-shadow:inset 0 -2.6em #e454a2}.wpeo-button.button-bordered.button-purple{border-color:#898de5;color:#898de5}.wpeo-button.button-bordered.button-purple:hover{box-shadow:inset 0 -2.6em #898de5}.wpeo-button.button-bordered.button-grey{border-color:#ececec;color:#ececec}.wpeo-button.button-bordered.button-grey:hover{box-shadow:inset 0 -2.6em #ececec}.wpeo-button.button-bordered:hover{box-shadow:inset 0 -2.6em #0088FF}.wpeo-button.button-progress.button-success{background:#47e58e;border-color:#47e58e}.wpeo-button.button-progress.button-error{background:#e05353;border-color:#e05353}.wpeo-button.button-progress.button-load{background:#ececec}.wpeo-button.button-progress.button-load:before{border-top:3px solid #0088FF}.wpeo-form .form-element input[type="checkbox"].form-field:not(:checked)+label:hover::before{box-shadow:0 0 0 2px #0088FF}.wpeo-form .form-element input[type="checkbox"].form-field:checked+label::before{box-shadow:0 0 0 2px #0088FF;background:#0088FF}.wpeo-form .form-element input[type="radio"].form-field:hover{border:1px solid #0088FF;box-shadow:0 0 0 1px #0088FF inset}.wpeo-form .form-element input[type="radio"].form-field:checked{border:1px solid #0088FF;box-shadow:0 0 0 4px #0088FF inset}.wpeo-loader .loader-spin{border-top:3px solid #0088FF}.wpeo-modal .modal-container .modal-header .modal-close:hover{color:#0088FF}.wpeo-notification .notification-title a{color:#0088FF}.wpeo-notification .notification-close:hover{color:#0088FF}.wpeo-notification.notification-green{border-left:4px solid #47e58e}.wpeo-notification.notification-green .notification-icon{color:#47e58e}.wpeo-notification.notification-orange{border-left:4px solid #e9ad4f}.wpeo-notification.notification-orange .notification-icon{color:#e9ad4f}.wpeo-notification.notification-red{border-left:4px solid #e05353}.wpeo-notification.notification-red .notification-icon{color:#e05353}.wpeo-pagination .pagination-element.pagination-current a{background:#0088FF}.wpeo-pagination .pagination-element.pagination-current a:hover{background:#0088FF}.wpeo-popover.popover-primary{background:#0088FF}.wpeo-popover.popover-primary.popover-top::before{border-color:#0088FF transparent transparent transparent}.wpeo-popover.popover-primary.popover-right::before{border-color:transparent #0088FF transparent transparent}.wpeo-popover.popover-primary.popover-bottom::before{border-color:transparent transparent #0088FF transparent}.wpeo-popover.popover-primary.popover-left::before{border-color:transparent transparent transparent #0088FF}.wpeo-popover.popover-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-popover.popover-light.popover-top::before{border-color:#ececec transparent transparent transparent}.wpeo-popover.popover-light.popover-right::before{border-color:transparent #ececec transparent transparent}.wpeo-popover.popover-light.popover-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-popover.popover-light.popover-left::before{border-color:transparent transparent transparent #ececec}.wpeo-popover.popover-red{background:#e05353}.wpeo-popover.popover-red.popover-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-popover.popover-red.popover-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-popover.popover-red.popover-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-popover.popover-red.popover-left::before{border-color:transparent transparent transparent #e05353}.wpeo-tab .tab-list .tab-element::before{background:#0088FF}.wpeo-tab .tab-list .tab-element.tab-active{color:#0088FF}.wpeo-tab .tab-list .tab-element.tab-active>a{color:#0088FF}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active{color:#0088FF}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a{color:#0088FF}.wpeo-table.table-flex .table-row.table-header{background:#0088FF}.wpeo-table>thead,.wpeo-table>tfoot{background:#272a35}@media (max-width: 480px){.wpeo-table>tbody td:before,.wpeo-table>tbody th:before{color:#0088FF}}.wpeo-tooltip.tooltip-primary{background:#0088FF}.wpeo-tooltip.tooltip-primary.tooltip-top::before{border-color:#0088FF transparent transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-right::before{border-color:transparent #0088FF transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-bottom::before{border-color:transparent transparent #0088FF transparent}.wpeo-tooltip.tooltip-primary.tooltip-left::before{border-color:transparent transparent transparent #0088FF}.wpeo-tooltip.tooltip-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-tooltip.tooltip-light.tooltip-top::before{border-color:#ececec transparent transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-right::before{border-color:transparent #ececec transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-tooltip.tooltip-light.tooltip-left::before{border-color:transparent transparent transparent #ececec}.wpeo-tooltip.tooltip-red{background:#e05353}.wpeo-tooltip.tooltip-red.tooltip-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-tooltip.tooltip-red.tooltip-left::before{border-color:transparent transparent transparent #e05353}.wpeo-button{box-sizing:border-box}.wpeo-button.button-square-30{width:30px;height:30px;line-height:24px}.wpeo-table.table-flex .table-cell.table-25{max-width:25px;min-width:25px}.wpeo-table.table-flex .table-cell.table-50{max-width:50px;min-width:50px}.wpeo-table.table-flex .table-cell.table-75{max-width:75px;min-width:75px}.wpeo-table.table-flex .table-cell.table-100{max-width:100px;min-width:100px}.wpeo-table.table-flex .table-cell.table-125{max-width:125px;min-width:125px}.wpeo-table.table-flex .table-cell.table-150{max-width:150px;min-width:150px}.wpeo-table.table-flex .table-cell.table-175{max-width:175px;min-width:175px}.wpeo-table.table-flex .table-cell.table-200{max-width:200px;min-width:200px}.wpeo-table.table-flex .table-cell.table-225{max-width:225px;min-width:225px}.wpeo-table.table-flex .table-cell.table-250{max-width:250px;min-width:250px}.wpeo-table.table-flex .table-cell.table-275{max-width:275px;min-width:275px}.wpeo-table.table-flex .table-cell.table-300{max-width:300px;min-width:300px}.wpeo-table.table-flex .table-cell.table-325{max-width:325px;min-width:325px}.wpeo-table.table-flex .table-cell.table-350{max-width:350px;min-width:350px}.wpeo-table.table-flex .table-cell.table-375{max-width:375px;min-width:375px}.wpeo-table.table-flex .table-cell.table-400{max-width:400px;min-width:400px}.wps-account-page .wpeo-notice{margin:0}.wps-cart .wps-list-product .wps-product{background:rgba(0,0,0,0.075)}.wps-cart-resume{display:block;margin:0;padding:1em;background:rgba(0,0,0,0.075)}.wps-cart-resume .wps-resume-line{margin:0;list-style-type:none;font-size:16px;font-weight:400;display:-webkit-box;display:flex}.wps-cart-resume .wps-resume-line .wps-line-value{margin-left:auto;text-align:right;font-weight:700}.wps-cart-resume .wps-resume-line.featured{margin-top:30px;font-size:22px;font-weight:600;color:rgba(0,0,0,0.8)}.wps-cart .wps-process-checkout-button,.wps-checkout .wps-process-checkout-button{display:block;float:none;width:100%;text-align:center;border-radius:6px;margin:1em 0;text-decoration:none !important}.wps-cart .wps-checkout-quotation-button,.wps-checkout .wps-checkout-quotation-button{display:block;text-align:center;font-weight:700;text-decoration:underline;color:rgba(0,0,0,0.8)}.wps-cart .wps-checkout-quotation-button:hover,.wps-checkout .wps-checkout-quotation-button:hover{color:#0088FF;cursor:pointer}.wps-checkout .wps-checkout-subtitle{font-weight:700;font-size:18px;margin-bottom:0.8em;color:rgba(0,0,0,0.8)}.wps-checkout .wps-checkout-subtitle::before{display:inline-block;content:'';font-weight:900;color:#0088FF;margin-right:0.4em}.wps-checkout .wps-checkout-step-1 .wps-checkout-subtitle::before{content:'01.'}.wps-checkout .wps-checkout-step-2 .wps-checkout-subtitle::before{content:'02.'}.wps-checkout .wps-checkout-step-3 .wps-checkout-subtitle::before{content:'03.'}.wps-checkout [class*="wps-checkout-step"]{margin-bottom:1em}.wps-checkout .wps-checkout-step-3 .wps-checkout-subtitle{float:left}.wps-checkout .wps-checkout-step-3 .wps-checkout-edit-order{float:right;font-size:14px;line-height:2.3;color:#0088FF}.wps-checkout .wps-checkout-step-3 .wps-checkout-review-order{clear:both}.wps-checkout-payment .wps-payment-list,.wps-checkout-payment .wps-payment{list-style-type:none;margin:0;padding:0}.wps-checkout-payment .wps-payment-title{font-size:16px;font-weight:700;color:rgba(0,0,0,0.8);line-height:1.4;margin-bottom:0.4em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wps-checkout-payment .wps-payment-title .wps-payement-icon{font-weight:400;color:#0088FF}.wps-checkout-payment .wps-payment-description{font-size:14px;color:rgba(0,0,0,0.5);line-height:1.4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.wps-checkout-payment .wps-payment{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-checkout-payment .wps-payment.checked{background:#0088FF;color:#fff}.wps-checkout-payment .wps-payment.checked .wps-payment-title,.wps-checkout-payment .wps-payment.checked .wps-payment-description,.wps-checkout-payment .wps-payment.checked .wps-payement-icon{color:#fff}.wps-checkout-payment .wps-payment .wps-payment-container{padding:0.6em;display:block}.wps-checkout-payment .wps-payment .wps-payment-container:hover{cursor:pointer}.wps-checkout-review-order .wps-list-product{margin-bottom:30px}.wps-checkout-review-order .wps-list-product .wps-product{padding:0;background:transparent}.wps-checkout-review-order .wps-list-product .wps-product:last-child{margin-bottom:1em}.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-title{font-size:16px}.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-attributes{display:none}.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer{margin-top:0}.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity{color:rgba(0,0,0,0.4);font-weight:400}.wps-checkout-review-order .wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price{color:inherit}body.single-wps-product .wps-product-price{font-size:2em;font-weight:300}.wps-product-grid .wps-product{display:block}.wps-product-grid .wps-product .wps-product-thumbnail{position:relative}.wps-product-grid .wps-product .wps-product-thumbnail::before{display:block;content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.3);opacity:0;z-index:1;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-product-grid .wps-product .wps-product-thumbnail .attachment-wps-product-thumbnail{display:block;width:100%}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action{position:absolute;z-index:3;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button{color:#0088FF;-webkit-transition:all 0.2s ease-out,-webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:all 0.2s ease-out,-webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);transition:transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275),all 0.2s ease-out;transition:transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275),all 0.2s ease-out,-webkit-transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275)}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:hover{box-shadow:inset 0 -2.6em #0088FF;border-color:#0088FF;color:#fff}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:first-child{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-action .wpeo-button:last-child{-webkit-transform:translateX(10px);transform:translateX(10px)}.wps-product-grid .wps-product .wps-product-thumbnail .wps-product-link{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.wps-product-grid .wps-product .wps-product-content{text-align:center;line-height:1.2;padding:0.6em 0}.wps-product-grid .wps-product .wps-product-content .wps-product-title{font-size:16px;font-weight:700}.wps-product-grid .wps-product .wps-product-content .wps-product-price{font-size:26px;font-weight:100}.wps-product-grid .wps-product:hover .wps-product-thumbnail:before{opacity:1}.wps-product-grid .wps-product:hover .wps-product-action{opacity:1}.wps-product-grid .wps-product:hover .wps-product-action .wpeo-button{-webkit-transform:translateX(0) !important;transform:translateX(0) !important}.wps-list-product .wps-product{display:-webkit-box;display:flex;background:#fff;padding:1em;margin-bottom:0.6em;position:relative}.wps-list-product .wps-product:last-child{margin-bottom:0}.wps-list-product .wps-product .wps-product-thumbnail,.wps-list-product .wps-product .wps-product-content{margin:auto 0}.wps-list-product .wps-product .wps-product-thumbnail{min-width:20%;width:20%;margin-right:0.6em}.wps-list-product .wps-product .wps-product-thumbnail .attachment-wps-product-thumbnail{width:100%;height:auto;display:block}.wps-list-product .wps-product .wps-delete-product{position:absolute;top:0.6em;right:0.6em;color:rgba(0,0,0,0.4);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-list-product .wps-product .wps-delete-product:hover{cursor:pointer;color:rgba(0,0,0,0.9)}.wps-list-product .wps-product .wps-product-content{width:100%;line-height:1.2}.wps-list-product .wps-product .wps-product-content .wps-product-title{font-size:20px;color:rgba(0,0,0,0.9);line-height:1.2}.wps-list-product .wps-product .wps-product-content .wps-product-attributes{display:-webkit-box;display:flex;margin:0;padding:0}.wps-list-product .wps-product .wps-product-content .wps-product-attributes .wps-product-attributes-item{list-style-type:none;margin:0 0.2em 0 0;color:rgba(0,0,0,0.4);font-size:14px}.wps-list-product .wps-product .wps-product-content .wps-product-attributes .wps-product-attributes-icon{margin-right:0.2em}.wps-list-product .wps-product .wps-product-content .wps-product-footer{display:-webkit-box;display:flex;margin-top:0.8em}.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity{font-size:16px;font-weight:700;color:rgba(0,0,0,0.8)}.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus{position:relative;-webkit-transition:opacity 0.2s ease-out;transition:opacity 0.2s ease-out}.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:focus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:active,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:focus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:active,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:focus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:active,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:focus,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:active{top:2px}.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-plus:hover,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price .wps-quantity-minus:hover,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-plus:hover,.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-quantity .wps-quantity-minus:hover{opacity:0.6;cursor:pointer}.wps-list-product .wps-product .wps-product-content .wps-product-footer .wps-product-price{margin-left:auto}.wps-taxonomy .wps-taxonomy-title{font-weight:900}.wps-account-page .wps-account-navigation{list-style-type:none;margin:0;padding:0}.wps-account-page .wps-account-navigation .wps-account-navigation-item{background:rgba(0,0,0,0.075);font-size:16px;margin-bottom:1px}.wps-account-page .wps-account-navigation .wps-account-navigation-item a{text-decoration:none;color:rgba(0,0,0,0.8);display:block;padding:0.8em 0.8em 0.8em 1.4em;position:relative}.wps-account-page .wps-account-navigation .wps-account-navigation-item a::after,.wps-account-page .wps-account-navigation .wps-account-navigation-item a::before{display:block;content:'';background:#0088FF;width:6px;height:100%;position:absolute;top:0;left:0;opacity:0;z-index:-1;opacity:0}.wps-account-page .wps-account-navigation .wps-account-navigation-item a::after{width:0;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-account-page .wps-account-navigation .wps-account-navigation-item a.active{font-weight:700}.wps-account-page .wps-account-navigation .wps-account-navigation-item a.active::before{opacity:1}.wps-account-page .wps-account-navigation .wps-account-navigation-item a:hover::after{width:6px;opacity:1}.wps-account-page .wps-account-navigation .wps-account-navigation-item .navigation-icon{font-size:14px;margin-right:0.4em;color:#0088FF}.wps-list-box .wps-box{background:rgba(0,0,0,0.075);padding:1em;margin-bottom:1em}.wps-list-box .wps-box .wps-box-resume{display:-webkit-box;display:flex}.wps-list-box .wps-box .wps-box-resume>*{margin:auto 0}.wps-list-box .wps-box .wps-box-resume .wps-box-primary{width:100%}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-title{font-size:20px;color:rgba(0,0,0,0.9);line-height:1.2}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes{display:-webkit-box;display:flex;margin:0;padding:0}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes .wps-box-subtitle-item{list-style-type:none;margin:0 0.5em 0 0;color:rgba(0,0,0,0.4);font-size:14px}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-attributes .wps-box-subtitle-icon{margin-right:0.2em}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more{color:#0088FF;font-size:14px;margin-top:0.6em;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more:hover{cursor:pointer;opacity:0.6}.wps-list-box .wps-box .wps-box-resume .wps-box-primary .wps-box-display-more.active .wps-box-display-more-icon::before{content:"\f107"}.wps-list-box .wps-box .wps-box-resume .wps-box-secondary{text-align:right;padding:0 1.2em}.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-status{font-size:14px;font-weight:700;line-height:1}.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-status .wps-box-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:rgba(0,0,0,0.8);margin-right:0.2em}.wps-list-box .wps-box .wps-box-resume .wps-box-secondary .wps-box-price{font-weight:700;font-size:35px}.wps-list-box .wps-box .wps-box-resume .wps-box-action{display:-webkit-box;display:flex}.wps-list-box .wps-box .wps-box-resume .wps-box-action>*{margin:auto 0}.wps-list-box .wps-box .wps-box-detail{display:none}.checkout-login .checkout-login-toggle span{color:#0088FF}.checkout-login .checkout-login-toggle span:hover{cursor:pointer;text-decoration:underline}.wps-modal-alert .modal-container{max-height:200px}.wps-modal-alert .modal-container .modal-content{padding-top:50px;height:100%;overflow-y:hidden} diff --git a/core/asset/css/style.min.css b/core/asset/css/style.min.css new file mode 100644 index 0000000..7c52480 --- /dev/null +++ b/core/asset/css/style.min.css @@ -0,0 +1 @@ +.wpeo-autocomplete .autocomplete-label:hover{border:1px solid #1897e7}.wpeo-autocomplete .autocomplete-label .autocomplete-loading{background:#1897e7}.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background{background:rgba(24,151,231,0.4)}.wpeo-button,a.wpeo-button{background:#1897e7;border-color:#1897e7}.wpeo-button.button-main,a.wpeo-button.button-main{background:#1897e7;border-color:#1897e7}.wpeo-button.button-dark,a.wpeo-button.button-dark{background:#272a35;border-color:#272a35}.wpeo-button.button-grey,a.wpeo-button.button-grey{background:#ececec;border-color:#ececec}.wpeo-button.button-red,a.wpeo-button.button-red{background:#e05353;border-color:#e05353}.wpeo-button.button-yellow,a.wpeo-button.button-yellow{background:#e9ad4f;border-color:#e9ad4f}.wpeo-button.button-green,a.wpeo-button.button-green{background:#47e58e;border-color:#47e58e}.wpeo-button.button-pink,a.wpeo-button.button-pink{background:#e454a2;border-color:#e454a2}.wpeo-button.button-purple,a.wpeo-button.button-purple{background:#898de5;border-color:#898de5}.wpeo-button.button-grey,a.wpeo-button.button-grey{background:#ececec;border-color:#ececec}.wpeo-button.button-transparent,a.wpeo-button.button-transparent{background:transparent;border-color:transparent}.wpeo-button.button-bordered{border-color:#1897e7;color:#1897e7}.wpeo-button.button-bordered.button-main{border-color:#1897e7;color:#1897e7}.wpeo-button.button-bordered.button-main:hover{box-shadow:inset 0 -2.6em #1897e7}.wpeo-button.button-bordered.button-dark{border-color:#272a35;color:#272a35}.wpeo-button.button-bordered.button-dark:hover{box-shadow:inset 0 -2.6em #272a35}.wpeo-button.button-bordered.button-grey{border-color:#ececec;color:#a0a0a0}.wpeo-button.button-bordered.button-grey:hover{box-shadow:inset 0 -2.6em #ececec}.wpeo-button.button-bordered.button-red{border-color:#e05353;color:#e05353}.wpeo-button.button-bordered.button-red:hover{box-shadow:inset 0 -2.6em #e05353}.wpeo-button.button-bordered.button-yellow{border-color:#e9ad4f;color:#e9ad4f}.wpeo-button.button-bordered.button-yellow:hover{box-shadow:inset 0 -2.6em #e9ad4f}.wpeo-button.button-bordered.button-green{border-color:#47e58e;color:#47e58e}.wpeo-button.button-bordered.button-green:hover{box-shadow:inset 0 -2.6em #47e58e}.wpeo-button.button-bordered.button-pink{border-color:#e454a2;color:#e454a2}.wpeo-button.button-bordered.button-pink:hover{box-shadow:inset 0 -2.6em #e454a2}.wpeo-button.button-bordered.button-purple{border-color:#898de5;color:#898de5}.wpeo-button.button-bordered.button-purple:hover{box-shadow:inset 0 -2.6em #898de5}.wpeo-button.button-bordered.button-grey{border-color:#ececec;color:#ececec}.wpeo-button.button-bordered.button-grey:hover{box-shadow:inset 0 -2.6em #ececec}.wpeo-button.button-bordered:hover{box-shadow:inset 0 -2.6em #1897e7}.wpeo-button.button-progress.button-success{background:#47e58e;border-color:#47e58e}.wpeo-button.button-progress.button-error{background:#e05353;border-color:#e05353}.wpeo-button.button-progress.button-load{background:#ececec}.wpeo-button.button-progress.button-load:before{border-top:3px solid #1897e7}.wpeo-form .form-element input[type="checkbox"].form-field:not(:checked)+label:hover::before{box-shadow:0 0 0 2px #1897e7}.wpeo-form .form-element input[type="checkbox"].form-field:checked+label::before{box-shadow:0 0 0 2px #1897e7;background:#1897e7}.wpeo-form .form-element input[type="radio"].form-field:hover{border:1px solid #1897e7;box-shadow:0 0 0 1px #1897e7 inset}.wpeo-form .form-element input[type="radio"].form-field:checked{border:1px solid #1897e7;box-shadow:0 0 0 4px #1897e7 inset}.wpeo-loader .loader-spin{border-top:3px solid #1897e7}.wpeo-modal .modal-container .modal-header .modal-close:hover{color:#1897e7}.wpeo-notification .notification-title a{color:#1897e7}.wpeo-notification .notification-close:hover{color:#1897e7}.wpeo-notification.notification-green{border-left:4px solid #47e58e}.wpeo-notification.notification-green .notification-icon{color:#47e58e}.wpeo-notification.notification-orange{border-left:4px solid #e9ad4f}.wpeo-notification.notification-orange .notification-icon{color:#e9ad4f}.wpeo-notification.notification-red{border-left:4px solid #e05353}.wpeo-notification.notification-red .notification-icon{color:#e05353}.wpeo-pagination .pagination-element.pagination-current a{background:#1897e7}.wpeo-pagination .pagination-element.pagination-current a:hover{background:#1897e7}.wpeo-popover.popover-primary{background:#1897e7}.wpeo-popover.popover-primary.popover-top::before{border-color:#1897e7 transparent transparent transparent}.wpeo-popover.popover-primary.popover-right::before{border-color:transparent #1897e7 transparent transparent}.wpeo-popover.popover-primary.popover-bottom::before{border-color:transparent transparent #1897e7 transparent}.wpeo-popover.popover-primary.popover-left::before{border-color:transparent transparent transparent #1897e7}.wpeo-popover.popover-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-popover.popover-light.popover-top::before{border-color:#ececec transparent transparent transparent}.wpeo-popover.popover-light.popover-right::before{border-color:transparent #ececec transparent transparent}.wpeo-popover.popover-light.popover-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-popover.popover-light.popover-left::before{border-color:transparent transparent transparent #ececec}.wpeo-popover.popover-red{background:#e05353}.wpeo-popover.popover-red.popover-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-popover.popover-red.popover-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-popover.popover-red.popover-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-popover.popover-red.popover-left::before{border-color:transparent transparent transparent #e05353}.wpeo-tab .tab-list .tab-element::before{background:#1897e7}.wpeo-tab .tab-list .tab-element.tab-active{color:#1897e7}.wpeo-tab .tab-list .tab-element.tab-active>a{color:#1897e7}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active{color:#1897e7}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a{color:#1897e7}.wpeo-table.table-flex .table-row.table-header{background:#1897e7}.wpeo-table>thead,.wpeo-table>tfoot{background:#272a35}@media (max-width: 480px){.wpeo-table>tbody td:before,.wpeo-table>tbody th:before{color:#1897e7}}.wpeo-tooltip.tooltip-primary{background:#1897e7}.wpeo-tooltip.tooltip-primary.tooltip-top::before{border-color:#1897e7 transparent transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-right::before{border-color:transparent #1897e7 transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-bottom::before{border-color:transparent transparent #1897e7 transparent}.wpeo-tooltip.tooltip-primary.tooltip-left::before{border-color:transparent transparent transparent #1897e7}.wpeo-tooltip.tooltip-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-tooltip.tooltip-light.tooltip-top::before{border-color:#ececec transparent transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-right::before{border-color:transparent #ececec transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-tooltip.tooltip-light.tooltip-left::before{border-color:transparent transparent transparent #ececec}.wpeo-tooltip.tooltip-red{background:#e05353}.wpeo-tooltip.tooltip-red.tooltip-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-tooltip.tooltip-red.tooltip-left::before{border-color:transparent transparent transparent #e05353}.wpeo-button{box-sizing:border-box}.wpeo-button.button-square-30{width:30px;height:30px;line-height:24px}.wpeo-table.table-flex .table-cell.table-25{max-width:25px;min-width:25px}.wpeo-table.table-flex .table-cell.table-50{max-width:50px;min-width:50px}.wpeo-table.table-flex .table-cell.table-75{max-width:75px;min-width:75px}.wpeo-table.table-flex .table-cell.table-100{max-width:100px;min-width:100px}.wpeo-table.table-flex .table-cell.table-125{max-width:125px;min-width:125px}.wpeo-table.table-flex .table-cell.table-150{max-width:150px;min-width:150px}.wpeo-table.table-flex .table-cell.table-175{max-width:175px;min-width:175px}.wpeo-table.table-flex .table-cell.table-200{max-width:200px;min-width:200px}.wpeo-table.table-flex .table-cell.table-225{max-width:225px;min-width:225px}.wpeo-table.table-flex .table-cell.table-250{max-width:250px;min-width:250px}.wpeo-table.table-flex .table-cell.table-275{max-width:275px;min-width:275px}.wpeo-table.table-flex .table-cell.table-300{max-width:300px;min-width:300px}.wpeo-table.table-flex .table-cell.table-325{max-width:325px;min-width:325px}.wpeo-table.table-flex .table-cell.table-350{max-width:350px;min-width:350px}.wpeo-table.table-flex .table-cell.table-375{max-width:375px;min-width:375px}.wpeo-table.table-flex .table-cell.table-400{max-width:400px;min-width:400px}.wpeo-modal .notice{margin-left:0}.wpeo-modal .wpeo-grid{width:100%}.wpeo-modal .item{display:block;background-color:#fff;font-size:14px;display:-webkit-box;display:flex;height:100%;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal .item::after{display:block;content:'';clear:both}.wpeo-modal .item .item-spin{width:80px;position:relative;border-left:6px solid #4c4c4c}.wpeo-modal .item .item-spin .wps-spinner,.wpeo-modal .item .item-spin .icon{position:absolute;top:50%;left:50%;margin:0;padding:0;font-size:20px}.wpeo-modal .item .item-spin .wps-spinner{opacity:0;-webkit-transform:translate(-50%, -120%);transform:translate(-50%, -120%);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal .item .item-spin .icon{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal .item .item-container{width:100%;margin:auto 0;padding:2em 2em 2em 0em}.wpeo-modal .item .item-content .item-title{font-size:12px;text-transform:uppercase;color:rgba(0,0,0,0.8);font-weight:900;margin-bottom:0.4em}.wpeo-modal .item .item-content .item-description{font-size:14px;color:rgba(0,0,0,0.5)}.wpeo-modal .item .item-progress{background:rgba(0,0,0,0.1);position:relative;display:block;padding:0 1em;height:26px;line-height:26px;border-radius:20px;overflow:hidden;margin-top:2em}.wpeo-modal .item .item-progress .item-progression{position:absolute;background-color:#47e58e;top:0;left:0;width:0%;height:100%;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal .item .item-progress .item-stats{position:relative;font-size:12px}.wpeo-modal .item.in-progress-item{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.wpeo-modal .item.in-progress-item .item-spin{border-left:6px solid #0d8aff}.wpeo-modal .item.in-progress-item .item-spin .fa-spin{color:#0d8aff}.wpeo-modal .item.in-progress-item .wps-spinner{opacity:1;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.wpeo-modal .item.in-progress-item .icon{-webkit-transform:translate(-50%, 0%);transform:translate(-50%, 0%);opacity:0}.wpeo-modal .item.done-item .item-spin{border-left:6px solid #47e58e}.wpeo-modal .item.done-item .icon::before{color:#47e58e}.wpeo-modal .general-message{width:80%;margin:0 auto;font-size:14px;text-align:center}.wpshop_page_wps-status .wpeo-wrap table{width:100%}.wpshop_page_wps-status .wpeo-wrap table tr td{padding:10px}.wpshop_page_wps-status .wpeo-wrap table tr td:first-child{width:30%}.wpshop_page_wps-status .wpeo-wrap table tr td:last-child{width:70%}.wpshop_page_wps-status .wpeo-wrap table tr .fa-check{color:green !important}.wpshop_page_wps-status .wpeo-wrap table tr .fa-times{color:red !important}.wpeo-wrap .wpeo-table.table-flex .reference-id{margin:0}.wpeo-wrap .wpeo-table.table-flex .reference-id li{display:inline-block;margin:0 0.6em 0 0;color:rgba(0,0,0,0.4)}.wpeo-wrap .wpeo-table.table-flex .reference-id li:last-child{margin:0}.wpeo-wrap .wpeo-table.table-flex .reference-title{font-size:20px}.wpeo-wrap .wpeo-table.table-flex .reference-title a{color:rgba(0,0,0,0.8);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;text-decoration:none}.wpeo-wrap .wpeo-table.table-flex .reference-title a:hover{color:rgba(0,0,0,0.5)}.wpeo-wrap .wpeo-table.table-flex .reference-content{font-size:14px;margin:0.2em 0}.wpeo-wrap .wpeo-table.table-flex .reference-content i{color:rgba(0,0,0,0.2)}.wpeo-wrap .wpeo-table.table-flex .reference-actions{margin:0.6em 0 0 0;line-height:1;opacity:0;pointer-events:none;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-wrap .wpeo-table.table-flex .reference-actions li{display:inline-block;margin:0 0.3em 0 0;padding-right:0.3em;border-right:1px solid rgba(0,0,0,0.2)}.wpeo-wrap .wpeo-table.table-flex .reference-actions li a{color:#1897e7;text-decoration:none}.wpeo-wrap .wpeo-table.table-flex .reference-actions li a:hover{color:rgba(24,151,231,0.7)}.wpeo-wrap .wpeo-table.table-flex .reference-actions li.delete a{color:#e05353}.wpeo-wrap .wpeo-table.table-flex .reference-actions li.delete a:hover{color:rgba(224,83,83,0.7)}.wpeo-wrap .wpeo-table.table-flex .reference-actions li:last-child{margin:0;padding:0;border-right:0}.wpeo-wrap .wpeo-table.table-flex .table-row:hover .reference-actions{opacity:1;pointer-events:all}.wpeo-wrap .wps-list-product img{display:block}.wpeo-wrap .wpeo-table .list-contact .contact{margin-bottom:0.6em}.wpeo-wrap .wpeo-table .list-contact .contact:last-child{margin-bottom:0}.wpeo-wrap .wpeo-table .list-contact .contact-title{font-size:16px}.wpeo-wrap .wpeo-table .list-contact .contact-list-data{margin:0}.wpeo-wrap .wpeo-table .list-contact .contact-data{display:inline-block;margin:0 0.4em 0 0}.wpeo-wrap .wpeo-table .list-contact .contact-data:last-child{margin:0}.wpeo-wrap .wpeo-table .list-contact .contact-data i{color:rgba(0,0,0,0.2)}.wpeo-wrap .wpeo-table .list-commercial .commercial-date{color:rgba(0,0,0,0.4)}.wpeo-wrap .wpeo-table .list-commercial .commercial-title{color:#1897e7}.wpeo-wrap .wpeo-table.table-flex{border:0;background:#fff}.wpeo-wrap .wpeo-table.table-flex .table-row.table-header{background:#fff;border-bottom:2px solid rgba(0,0,0,0.3)}.wpeo-wrap .wpeo-table.table-flex .table-row.table-header .table-cell{color:rgba(0,0,0,0.8)}.wpeo-wrap .wpeo-table.table-flex .table-row:not(.table-header):nth-of-type(odd){background:rgba(0,0,0,0.02)}.wpeo-wrap .wpeo-table.table-flex .table-button-edit{color:#1897e7}.wpeo-wrap .wpeo-table.table-flex input[type=date],.wpeo-wrap .wpeo-table.table-flex input[type=datetime-local],.wpeo-wrap .wpeo-table.table-flex input[type=datetime],.wpeo-wrap .wpeo-table.table-flex input[type=email],.wpeo-wrap .wpeo-table.table-flex input[type=month],.wpeo-wrap .wpeo-table.table-flex input[type=number],.wpeo-wrap .wpeo-table.table-flex input[type=password],.wpeo-wrap .wpeo-table.table-flex input[type=search],.wpeo-wrap .wpeo-table.table-flex input[type=tel],.wpeo-wrap .wpeo-table.table-flex input[type=text],.wpeo-wrap .wpeo-table.table-flex input[type=time],.wpeo-wrap .wpeo-table.table-flex input[type=url],.wpeo-wrap .wpeo-table.table-flex input[type=week],.wpeo-wrap .wpeo-table.table-flex select,.wpeo-wrap .wpeo-table.table-flex textarea{width:100%}.wpeo-wrap .wpeo-table td,.wpeo-wrap .wpeo-table th{border:0}.wpeo-wrap .wpeo-table td.table-end,.wpeo-wrap .wpeo-table th.table-end{text-align:right}.wpeo-wrap .wpeo-table>tfoot{background:rgba(0,0,0,0.05);color:rgba(0,0,0,0.8)}.wpeo-wrap .wpeo-table>tfoot td{padding:.2em .6em;border:1px solid rgba(0,0,0,0.1)}.wpeo-wrap .wpeo-table a:not(.wpeo-button){color:#1897e7;text-decoration:none}.wpeo-wrap .wps-checkout-review-order-table tbody tr td:last-child,.wpeo-wrap .wps-checkout-review-order-table tfoot tr td:last-child{text-align:right}.wpeo-wrap .wps-filter-bar>*{display:inline-block}.wpeo-wrap .wps-filter-bar .wpeo-button{margin-right:1em}.wpeo-wrap .wps-sync .button-synchro{float:left;width:25px;height:25px;background:rgba(0,0,0,0.1);color:rgba(0,0,0,0.6);text-align:center;line-height:25px;border-radius:50%;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-wrap .wps-sync .button-synchro i{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-wrap .wps-sync .button-synchro:hover{cursor:pointer;background:rgba(0,0,0,0.2)}.wpeo-wrap .wps-sync .button-synchro:hover i{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.wpeo-wrap .wps-sync .statut{float:left;width:25px;height:25px;border-radius:50%;margin-left:0.6em;background:rgba(0,0,0,0.1)}.wpeo-wrap .wps-sync .statut.statut-grey{background:#ececec}.wpeo-wrap .wps-sync .statut.statut-green{background:#47e58e}.wpeo-wrap .wps-sync .statut.statut-orange{background:#e9ad4f}.wpeo-wrap .wps-sync .statut.statut-red{background:#e05353}.wpeo-wrap .wps-metabox{background:#fff;padding:2em;position:relative}.wpeo-wrap .wps-metabox .metabox-title{font-weight:300;font-size:22px;margin:0 0 1em 0}.wpeo-wrap .wps-metabox .metabox-edit{position:absolute;top:1em;right:1em}.wpeo-wrap .wps-metabox .metabox-list-title{font-size:16px;margin:0 0 1em 0}.wpeo-wrap .wps-metabox .metabox-list{margin:0}.wpeo-wrap .wps-metabox .metabox-list li{margin:0}.wpeo-wrap .wps-metabox .metabox-list li span{font-weight:700;margin-right:0.4em}.wpeo-wrap .page-header{display:-webkit-box;display:flex;padding-top:9px;margin-bottom:1.8em}.wpeo-wrap .page-header h2{font-size:23px;font-weight:400;margin:0;padding:0;line-height:29px}.wpeo-wrap .page-header .wps-edit-title{margin:0 0.6em;vertical-align:top}.wpeo-wrap .page-header .wps-sync{margin:auto 1em}.wpeo-wrap .wps-status{font-weight:600}.wpeo-wrap .wps-status.status-grey{color:#ababab}.wpeo-wrap .wps-status.status-green{color:#19d854}.wpeo-wrap .wps-status.status-orange{color:#ffa500}.wpeo-wrap .wps-status.status-red{color:#ff1818}.wpeo-wrap a:not(.wpeo-button){color:#1897e7;text-decoration:none}.notification-add-to-cart{width:90%;right:0;left:0;margin-right:auto;margin-left:auto;top:3em;bottom:auto}.wpshop_page_wps-third-party .wpeo-wrap .page-header h2{display:-webkit-box;display:flex}.wpshop_page_wps-order .wpeo-wrap .page-header h2{display:-webkit-box;display:flex}.wp-admin select{height:auto !important}.post-type-wps-order #post-body-content,.post-type-wps-order #titlediv{display:none}.post-type-wps-proposal #post-body-content,.post-type-wps-proposal #titlediv{display:none}#toplevel_page_wps-order .wp-first-item{display:none}.synchro-single .filter-entry{width:99.8%;padding:10px}.synchro-single .select{margin:0;height:280px;overflow-y:scroll;overflow-x:hidden;border:solid black 1px}.synchro-single .select li{display:block;padding:10px;margin:0}.synchro-single .select li:nth-child(odd){background-color:rgba(0,0,0,0)}.synchro-single .select li:nth-child(even){background-color:rgba(0,0,0,0.1)}.synchro-single .select li:hover{color:white;background-color:#1897e7;cursor:pointer}.synchro-single .select li.active{color:white;background-color:#1897e7}.need-to-confirm .modal-container{max-width:600px;max-height:420px}.need-to-confirm .modal-container .modal-content{height:68%}.choose{padding:10px;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.choose:hover{background-color:#ececec}.choose .wpeo-button.button-main{background-color:#272a35}.mask{position:absolute;top:0;left:0;height:100%;width:100%;background-color:rgba(0,0,0,0.8);z-index:999999;text-align:center}.mask h3{font-size:30px;color:white}.mask .content{position:relative;top:50%;-webkit-transform:translateY(-70%);transform:translateY(-70%)}.fa-toggle-on{color:green} diff --git a/core/asset/image/default-product-thumbnail-min.jpg b/core/asset/image/default-product-thumbnail-min.jpg new file mode 100644 index 0000000000000000000000000000000000000000..60f137d989a2107ba2857a2d9bc58e48294e8fe6 GIT binary patch literal 4139 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 literal 0 HcmV?d00001 diff --git a/core/asset/image/default-product-thumbnail.jpg b/core/asset/image/default-product-thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29aefbac32ea8271bb886ad871e972f5a2f027a3 GIT binary patch literal 2894 zcmeHHc~BE)6yGHXI#n=*%2BIv3361j*@Td6YJ!k(selj=>(P>9ArX@e*+l}DYDddZ zi&!eCAc9Bb?C4aqjzhIIr>uEG@< zONnb?qg)RoEH(_x4mRrL$~25*D6mwGP6XXM@;k)Ps6;Se78;vC(>8D@-J0=`lDSBk&A^5~JW=7P4L_F<^2M zHzeTr3Tqb^sBsb})VQ7@kyyIMXZR**bSgZP@EhhtM+>8L1S!`ku_&nsqEuKKjY`Nz zP)@j1D&X_O!Vn}34dL+uL#T%FL(!1Xupo(*E5(%=T1-b;xvEhvIwsdL4q82xS&A7n zD=}5L0oO8yk1f=UT}#lIdLvxb*tPJ-& zw9Wm1)9}Cos-x5=1e*JRb%2Yrvm4#bd&(4VnE4SCp2hU?V$KqBEGCqQhE4J&16|$R zrg=_dy1O&E%xO$+DA&)A8!8DEbHt%<;@S4hM*;eH@Fb|Ffe>Iv2WfQB+z4O*_}oT+ z0rul)cAx_Yj;=iSCW8QIXYXKVN3(8$b~JjNz3U7_zVm&TkV1%){#87eZr!!<%@=@) z6vvKEqXWUfvt--GJLj!*z^k_xNsz`)oFYyP<9*qc$9Y=Y5$j*Sc}wNS0Y~Zv+6U^; zC3}wW8vj^o>P*!6<&`QOH!w|~c^rlRt01sB(Y>!c&#zWfrrZ{DO`LF&#MbV;em!T$ z#fzN>e5>Y##kn+pd#1Z!#}X)$`NCf}46 z)Mzqz&KZHxK8Z^zZhfLYd8w_WDTNsKi%`ES6u3SZK)1^2UOS8x4mFm^H~ zH3<$X(y{q+f$CJfp=1}b^{UhE&i!Rq?hMMxa@L+2xKkw<5*6K;p8Rn3kY9(m6GNNN ziJZl4#K!vbG3kTOl2LH`lV8;(sj_J@dg*V=T1pjA`ejpP)rWopN5fD_>%GHeYa>&J`cr)xt{W!J*haQ7~K zkHR99aa=L4Gq`w-P5TvR)2Bo+{ppFXx5-xOAOEwecXij<2xMJzi|DTJ@oV0FvgP{n z&nGcUTMOt9oU&Ju7faR`X|<1He|TmF_FOU@Jk)cc?^Zu8_spLONf1=CK1&i;oHXIP z%%7?TBZ`-9ukDs0kN@5>&&5T@CLIzJ+PUina&yaXY { + if ( ! attributes.items ) { + let fetchObject = { + credentials: 'same-origin', + method: 'GET', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + } + }; + + fetch( wpshop.homeUrl + '/wp-json/wpshop/v1/product' ) + .then( response => { + return response.json().then( json => { + if ( json.code == "rest_forbidden" ) { + setAttributes( { err: json.message } ); + } else { + setAttributes( { items: json } ); + } + } ); + } ); + } + + if ( attributes.err ) { + return

{ attributes.err }

; + } + + if ( ! attributes.items ) { + return
Loading...
; + } + + return ( +
+ {attributes.items.map((item, key) => ( +
+
+ Image + +
+ + +
+ +
+
+
+ +
+
{ item.data.title }
+
+ { item.data.price_ttc } + +
+
+
+ ))} +
+ ); + }, + + /** + * The save function defines the way in which the different attributes should be combined + * into the final markup, which is then serialized by Gutenberg into post_content. + * + * The "save" property must be specified and must be a valid function. + * + * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/ + * + * @param {Object} props Props. + * @returns {Mixed} JSX Frontend HTML. + */ + save: ( { attributes } ) => { + if ( ! attributes.items ) { + return
Loading...
; + } + + return ( +
+ {attributes.items.map( ( item, key ) => ( +
+
+ Image + +
+ + +
+ +
+
+
+ +
+
{ item.data.title }
+
+ { item.data.price_ttc } + +
+
+
+ ))} +
+ ); + }, +} ); diff --git a/core/asset/js/frontend.min.js b/core/asset/js/frontend.min.js new file mode 100644 index 0000000..b286856 --- /dev/null +++ b/core/asset/js/frontend.min.js @@ -0,0 +1,281 @@ +/** + * Initialise l'objet principale de WPshop. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshop = {}; +window.eoxiaJS.wpshopFrontend = {}; + +window.eoxiaJS.wpshop.init = function() { + if ( jQuery( '.wps-sync' ).length ) { + jQuery( '.wps-sync' ).each( function() { + var data = { + action: 'check_sync_status', + wp_id: jQuery( this ).find( '.button-synchro' ).data( 'wp-id' ), + type: jQuery( this ).find( '.button-synchro' ).data( 'type' ) + }; + + window.eoxiaJS.loader.display( jQuery( this ) ); + + var _this = jQuery( this ); + + // @todo: Handle fatal error or no response. + jQuery.post( ajaxurl, data, function( response ) { + window.eoxiaJS.loader.remove(_this); + _this.replaceWith( response.data.view ); + + if ( response.data.status && response.data.status.status_code == '0x1' ) { + jQuery( '.table-row[data-id="' + response.data.id + '"] .reference-id li:last' ).remove(); + } + } ) + .fail( function() { + window.eoxiaJS.loader.remove(_this); + _this.find( ".statut" ).attr( 'aria-label', '500 (Internal Server Error)' ); + _this.find( ".statut" ).addClass( 'statut-red' ); + } ); + } ); + } + + var data = { + action: 'check_erp_statut', + _wpnonce: scriptParams.check_erp_statut_nonce + }; + + jQuery.post( ajaxurl, data, function( response ) { + if ( ! response.data.statut && response.data.view ) { + jQuery( 'body' ).append( response.data.view ); + } + } ); +}; + +/** + * Gestion JS du tunnel de vente. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.cart = {}; + +/** + * La méthode "init" est appelé automatiquement par la lib JS de Eo-Framework + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.cart.init = function() { + window.eoxiaJS.wpshopFrontend.cart.event(); +}; + +window.eoxiaJS.wpshopFrontend.cart.event = function() { + jQuery( document ).on( 'click', '.wps-cart .wps-product-quantity .wps-quantity-minus', window.eoxiaJS.wpshopFrontend.cart.updateQuantity ); + jQuery( document ).on( 'click', '.wps-cart .wps-product-quantity .wps-quantity-plus', window.eoxiaJS.wpshopFrontend.cart.updateQuantity ); +} + +window.eoxiaJS.wpshopFrontend.cart.updateQuantity = function() { + var qty = parseInt( jQuery( this ).closest( '.wps-product-quantity' ).find( 'input[type="hidden"]' ).val() ); + + if ( jQuery( this ).hasClass( 'wps-quantity-minus' ) ) { + if ( qty > 1 ) { + qty--; + } + } + + if ( jQuery( this ).hasClass( 'wps-quantity-plus' ) ) { + qty++; + } + + jQuery( this ).closest( '.wps-product-quantity' ).find( '.qty' ).text( qty ); + jQuery( this ).closest( '.wps-product-quantity' ).find( 'input[type="hidden"]' ).val( qty ); + jQuery( '.wps-cart .update-cart' ).click(); + + window.eoxiaJS.loader.display( jQuery( '.wps-cart-resume' ) ); +}; + +window.eoxiaJS.wpshopFrontend.cart.addedToCart = function ( triggeredElement, response ) { + if ( response.data.added ) { + var tmp = jQuery( response.data.view ); + jQuery( 'body' ).append( tmp ); + + tmp.timeout = setTimeout( function() { + tmp.remove(); + }, 5000 ); + } + + if ( response.data.qty ) { + jQuery( '.cart-button .qty' ).html( '(' + response.data.qty + ')' ); + } +}; + +window.eoxiaJS.wpshopFrontend.cart.updatedCart = function ( triggeredElement, response ) { + jQuery( '.wps-cart' ).replaceWith( response.data.view ); + + if ( response.data.qty == 0 ) { + jQuery( '.cart-button .qty' ).html( '' ); + + } else { + jQuery( '.cart-button .qty' ).html( '(' + response.data.qty + ')' ); + } +}; + +window.eoxiaJS.wpshopFrontend.cart.deletedProdutFromCart = function ( triggeredElement, response ) { + jQuery( '.wps-cart' ).replaceWith( response.data.view ); + + if ( response.data.qty == 0 ) { + jQuery( '.cart-button .qty' ).html( '' ); + + } else { + jQuery( '.cart-button .qty' ).html( '(' + response.data.qty + ')' ); + } +}; + +/** + * Gestion JS du tunnel de vente. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.myAccount = {}; + +/** + * La méthode "init" est appelé automatiquement par la lib JS de Eo-Framework + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.myAccount.init = function() { + window.eoxiaJS.wpshopFrontend.myAccount.event(); +}; + +window.eoxiaJS.wpshopFrontend.myAccount.reorderSuccess = function( triggeredElement, response ) { + document.location.href = response.data.redirect_url; +}; + +window.eoxiaJS.wpshopFrontend.myAccount.event = function() { + jQuery( '.wps-box-display-more' ).click( function() { + jQuery( this ).toggleClass( 'active' ); + jQuery( this ).closest( '.wps-box' ).find( '.wps-box-detail' ).slideToggle( 'fast' ) + } ); +}; + +/** + * Gestion JS du tunnel de vente. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.stripe = {}; + +/** + * La méthode "init" est appelé automatiquement par la lib JS de Eo-Framework + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.stripe.init = function() {}; + +window.eoxiaJS.wpshopFrontend.stripe.redirectToPayment = function(triggeredElement, response) { + var stripe = Stripe( + stripe_key, + { + betas: ['checkout_beta_4'], + } + ); + + stripe.redirectToCheckout({ + sessionId: response.data.id + }).then(function (result) { + console.log(result); + }); +} + +/** + * Gestion JS du tunnel de vente. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.checkout = {}; + +/** + * La méthode "init" est appelé automatiquement par la lib JS de Eo-Framework + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.checkout.init = function() { + window.eoxiaJS.wpshopFrontend.checkout.event(); +}; + +window.eoxiaJS.wpshopFrontend.checkout.event = function() { + jQuery( '.checkout-login .checkout-login-toggle' ).click( function() { + jQuery( '.checkout-login .content-login' ).slideToggle(); + } ); + + jQuery( document ).on( 'change', '.wps-checkout .wps-payment-list li.wps-payment input', window.eoxiaJS.wpshopFrontend.checkout.makeActive ); +}; + +window.eoxiaJS.wpshopFrontend.checkout.makeActive = function( event ) { + jQuery( '.wps-checkout .wps-payment-list li.wps-payment.checked' ).removeClass( 'checked' ); + jQuery( this ).closest( 'li.wps-payment' ).addClass( 'checked' ); +}; + +window.eoxiaJS.wpshopFrontend.checkout.loadedEditBillingAddress = function( triggeredElement, response ) { + jQuery( '.shipping-contact' ).html( response.data.view ); +}; + +window.eoxiaJS.wpshopFrontend.checkout.checkoutErrors = function( triggeredElement, response ) { + if ( 0 === jQuery( 'form.wps-checkout-step-1 ul.error.notice' ).length ) { + jQuery( '.wps-checkout .wps-checkout-step-1' ).prepend( response.data.template ); + } else { + jQuery( '.wps-checkout .wps-checkout-step-1 ul.error.notice' ).replaceWith( response.data.template ); + } + + for ( var key in response.data.errors.error_data ) { + jQuery( '.wps-checkout .' + response.data.errors.error_data[ key ].input_class ).addClass( 'form-element-error' ); + } +}; + +window.eoxiaJS.wpshopFrontend.checkout.createdThirdSuccess = function( triggeredElement, response ) { + document.location.href = response.data.redirect_url; +} + +window.eoxiaJS.wpshopFrontend.checkout.redirectToPayment = function( triggeredElement, response ) { + document.location.href = response.data.url; +}; + +window.eoxiaJS.wpshopFrontend.checkout.redirect = function( triggeredElement, response ) { + document.location.href = response.data.url; +}; + +/** + * Gestion JS du tunnel de vente. + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.product = {}; + +/** + * La méthode "init" est appelé automatiquement par la lib JS de Eo-Framework + * + * @since 2.0.0 + */ +window.eoxiaJS.wpshopFrontend.product.init = function() { + jQuery( document ).on( 'click', '.single-wps-product .wps-product .wps-quantity-minus, .single-wps-product .wps-product .wps-quantity-plus', window.eoxiaJS.wpshopFrontend.product.updateQty ); +}; + +window.eoxiaJS.wpshopFrontend.product.updateQty = function( event ) { + qty = parseInt( jQuery( '.single-wps-product .wps-product .wps-product-quantity .qty' ).text() ); + var price = parseFloat( jQuery( '.single-wps-product .wps-product .base-price' ).val() ); + if ( jQuery( this ).hasClass( 'wps-quantity-minus' ) ) { + if ( qty > 1 ) { + qty--; + } + } + + if ( jQuery( this ).hasClass( 'wps-quantity-plus' ) ) { + qty++; + } + + price *= qty; + + price = new Intl.NumberFormat( 'fr-FR', { style: 'currency', currency: 'EUR' }).format(price); + + jQuery( '.single-wps-product .wps-product' ).find( '.qty' ).text( qty ); + + if ( jQuery( '.single-wps-product .wps-product .wps-product-buy' ).length > 0 ) { + jQuery( '.single-wps-product .wps-product .wps-product-buy' ).attr( 'data-qty', qty ); + } + jQuery( '.single-wps-product .wps-product .wps-product-price' ).text( price ); +} diff --git a/core/asset/js/index.php b/core/asset/js/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/asset/js/index.php @@ -0,0 +1,2 @@ +5X)fZW?+Co%8}I?M>B9a_LG{QMW3cw5SN8 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 CG?VK9 literal 0 HcmV?d00001 diff --git a/core/asset/language/wpshop-fr_FR.po b/core/asset/language/wpshop-fr_FR.po new file mode 100644 index 0000000..13627e7 --- /dev/null +++ b/core/asset/language/wpshop-fr_FR.po @@ -0,0 +1,2153 @@ +msgid "" +msgstr "" +"Project-Id-Version: wpshop\n" +"POT-Creation-Date: 2020-06-05 12:37+0200\n" +"PO-Revision-Date: 2020-06-05 12:58+0200\n" +"Last-Translator: \n" +"Language-Team: Eoxia\n" +"Language: fr_FR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.3.1\n" +"X-Poedit-Basepath: ../../..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: _e;esc_html_e;esc_html__;esc_attr_e;_x;__\n" +"X-Poedit-SearchPath-0: core\n" +"X-Poedit-SearchPath-1: modules\n" +"X-Poedit-SearchPathExcluded-0: core/external\n" + +#: core/action/class-core-action.php:177 +#: modules/health/filter/class-health-filter.php:47 +msgid "WPshop" +msgstr "WPshop" + +#: core/action/class-core-action.php:178 +#: modules/dashboard/view/main.view.php:20 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: core/asset/js/blocks/block.js:21 +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:63 +#: modules/order/action/class-order-action.php:39 +#: modules/order/action/class-order-action.php:40 +#: modules/products/action/class-product-action.php:48 +#: modules/products/action/class-product-action.php:49 +#: modules/products/action/class-product-action.php:116 +#: modules/products/filter/class-product-filter.php:65 +#: modules/products/filter/class-product-filter.php:67 +#: modules/products/view/main.view.php:21 +msgid "Products" +msgstr "Produits" + +#: core/asset/js/blocks/block.js:25 +#: modules/products/filter/class-product-filter.php:100 +msgid "product" +msgstr "produit" + +#: core/filter/class-core-filter.php:126 +#: modules/settings/action/class-settings-action.php:52 +#: modules/settings/view/main.view.php:20 +#: modules/settings/view/payment-method.view.php:24 +msgid "Settings" +msgstr "Réglages" + +#: core/util/class-countries-util.php:63 +#: modules/checkout/class/class-checkout.php:95 +#: modules/dolibarr/doli-associate/view/compare-wps-third-party.view.php:36 +#: modules/dolibarr/doli-order/view/metabox-order-details.view.php:41 +#: modules/dolibarr/doli-order/view/metabox-order-details.view.php:52 +#: modules/dolibarr/doli-sync/filter/class-doli-sync-filter.php:56 +#: modules/my-account/view/frontend/my-account-details.php:95 +#: modules/third-parties/view/metaboxes/metabox-billing-address.view.php:34 +msgid "Country" +msgstr "Pays" + +#: core/view/erp-connexion-error.view.php:22 +msgid "Connection failed with your ERP" +msgstr "Échec de la connexion avec votre ERP" + +#: core/view/erp-connexion-error.view.php:25 +msgid "" +"Your ERP is not connected. Maybe your ERP is not connected or your " +"configuration is not correct" +msgstr "" +"Votre ERP n'est pas connecté. Peut-être que votre ERP n'est pas connecté ou " +"que votre configuration n'est pas correcte" + +#: core/view/erp-connexion-error.view.php:26 +msgid "Need help ? Follow this guide" +msgstr "Besoin d'aide ? Suivez ce guide" + +#: modules/api/view/field-api.view.php:20 +msgid "WPshop API" +msgstr "API de WPshop" + +#: modules/api/view/field-api.view.php:25 +msgid "API Key" +msgstr "Clé API" + +#: modules/cart/class/class-cart.php:177 +#, php-format +msgid "%s is sold out." +msgstr "%s n'est plus disponible." + +#: modules/cart/shortcode/class-cart-shortcode.php:78 +#: modules/products/view/frontend/wps-product-single.php:38 +msgid "Add to cart" +msgstr "Ajouter au panier" + +#: modules/cart/view/frontend/cart-resume.php:51 +#: modules/checkout/view/frontend/review-order.php:71 +#: modules/dolibarr/doli-associate/view/compare-wps-proposal.view.php:34 +#: modules/emails/view/frontend/order-details.php:76 +msgid "Total TTC" +msgstr "Total TTC" + +#: modules/cart/view/frontend/cart-totals.php:30 +msgid "Cart totals" +msgstr "Total du panier" + +#: modules/cart/view/frontend/cart-totals.php:39 +#: modules/checkout/view/frontend/valid-checkout.php:35 +msgid "Total" +msgstr "Total" + +#: modules/cart/view/frontend/cart.php:51 +msgid "Update cart" +msgstr "Mettre à jour le panier" + +#: modules/cart/view/frontend/empty-cart.php:19 +msgid "Your cart is empty." +msgstr "Votre panier est vide." + +#: modules/cart/view/frontend/link-cart.php:31 +#, php-format +msgid "Product \"%1$s\" x%2$d added to the card" +msgstr "Produit \"%1$s\" x%2$d ajouté au panier" + +#: modules/cart/view/frontend/link-cart.php:34 +msgid "View cart" +msgstr "Voir le panier" + +#: modules/checkout/action/class-checkout-action.php:457 +msgid "I accept " +msgstr "J'accepte " + +#: modules/checkout/action/class-checkout-action.php:461 +#, php-format +msgid "the %2$s and " +msgstr "les %2$s et " + +#: modules/checkout/action/class-checkout-action.php:466 +#, php-format +msgid "the %2$s" +msgstr "la %2$s" + +#: modules/checkout/class/class-checkout.php:68 +msgid "Terms" +msgstr "Termes" + +#: modules/checkout/class/class-checkout.php:73 +#: modules/checkout/view/frontend/form-shipping.php:26 +msgid "First name" +msgstr "Prénom" + +#: modules/checkout/class/class-checkout.php:77 +msgid "Last name" +msgstr "Nom de famille" + +#: modules/checkout/class/class-checkout.php:81 +#: modules/dolibarr/doli-order/view/metabox-order-details.view.php:28 +#: modules/my-account/view/frontend/my-account-details.php:46 +#: modules/third-parties/view/metaboxes/metabox-billing-address-edit.view.php:34 +#: modules/third-parties/view/metaboxes/metabox-billing-address.view.php:35 +#: modules/third-parties/view/metaboxes/metabox-contacts-edit.view.php:23 +msgid "Phone" +msgstr "Numéro de téléphone" + +#: modules/checkout/class/class-checkout.php:85 +msgid "Email contact" +msgstr "Adresse email" + +#: modules/checkout/class/class-checkout.php:89 +#: modules/my-account/view/frontend/form-login.php:56 +msgid "Password" +msgstr "Mot de passe" + +#: modules/checkout/class/class-checkout.php:99 +msgid "Street Address" +msgstr "Adresse" + +#: modules/checkout/class/class-checkout.php:103 +msgid "Postcode / Zip" +msgstr "Code postal" + +#: modules/checkout/class/class-checkout.php:107 +#: modules/checkout/view/frontend/form-shipping.php:79 +msgid "Town / City" +msgstr "Ville" + +#: modules/checkout/class/class-checkout.php:126 +msgid "" +"You need to accept the general conditions of sale and " +"the privacy policy" +msgstr "" +"Veuillez accepter Les conditions générales de vente et " +"la Politique confidentialité" + +#: modules/checkout/class/class-checkout.php:139 +#, php-format +msgid "%s is a required field." +msgstr "%s est un champs requis." + +#: modules/checkout/class/class-checkout.php:151 +#, php-format +msgid "%s is already used." +msgstr "%s est déjà utilisé." + +#: modules/checkout/filter/class-checkout-filter.php:55 +#: modules/checkout/view/frontend/devis-button.php:22 +msgid "Ask for a Quotation" +msgstr "Demander un devis" + +#: modules/checkout/shortcode/class-checkout-shortcode.php:102 +#: modules/checkout/shortcode/class-checkout-shortcode.php:109 +msgid "quotation" +msgstr "devis" + +#: modules/checkout/shortcode/class-checkout-shortcode.php:103 +#: modules/checkout/shortcode/class-checkout-shortcode.php:110 +msgid "See my quotations" +msgstr "Voir mes devis" + +#: modules/checkout/shortcode/class-checkout-shortcode.php:117 +msgid "order" +msgstr "commande" + +#: modules/checkout/shortcode/class-checkout-shortcode.php:118 +msgid "See my orders" +msgstr "Voir mes commandes" + +#: modules/checkout/shortcode/class-checkout-shortcode.php:123 +msgid "You can not see this page. Go back to %s with the dolibarr data" +msgstr "" +"Effacer les données pour le produit %s avec les données de " +"dolibarr" + +#: modules/dolibarr/doli-proposals/action/class-doli-proposals-action.php:68 +#: modules/dolibarr/doli-proposals/view/main.view.php:20 +msgid "Dolibarr Proposals" +msgstr "Propositions commerciales" + +#: modules/dolibarr/doli-proposals/action/class-doli-proposals-action.php:85 +#, fuzzy +#| msgid "Proposals" +msgid "Proposals Dolibarr" +msgstr "Propositions commerciales" + +#: modules/dolibarr/doli-proposals/view/list.view.php:21 +#: modules/proposals/view/list.view.php:21 +msgid "Proposal reference" +msgstr "Référence du devis" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:40 +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:66 +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:88 +msgid "Draft" +msgstr "Brouillon" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:44 +msgid "Waiting for a signature" +msgstr "En attente de la signature" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:48 +msgid "Signed" +msgstr "Signé" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:52 +msgid "Not signed" +msgstr "Non signé" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:70 +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:92 +msgid "Not paid" +msgstr "Non payée" + +#: modules/dolibarr/doli-statut/class/class-doli-statut.php:100 +msgid "Abandoned" +msgstr "Abondonée" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:53 +#: modules/third-parties/action/class-third-party-action.php:155 +#: modules/third-parties/filter/class-third-party-filter.php:43 +#: modules/third-parties/filter/class-third-party-filter.php:45 +msgid "Third parties" +msgstr "Tiers" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:73 +#: modules/proposals/action/class-proposals-action.php:61 +#: modules/proposals/action/class-proposals-action.php:78 +#: modules/proposals/filter/class-proposals-filter.php:42 +#: modules/proposals/filter/class-proposals-filter.php:44 +#: modules/proposals/view/main.view.php:21 +#: modules/third-parties/view/metaboxes/metabox-dolibarr-proposals.view.php:20 +#: modules/third-parties/view/metaboxes/metabox-proposals.view.php:20 +msgid "Proposals" +msgstr "Propositions commerciales" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:162 +#: modules/dolibarr/doli-third-parties/class/class-doli-third-parties.php:63 +#, php-format +msgid "" +"Erase data for the third party %s with the " +"dolibarr data" +msgstr "" +"Effacer les données pour le tiers %s avec les données de " +"dolibarr" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:281 +msgid "Looking for sync status" +msgstr "Rechercher un statut de synchronisation" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:292 +msgid "No associated to an ERP Entity" +msgstr "Cette entitée n'est pas associé à votre ERP" + +#: modules/dolibarr/doli-sync/class/class-doli-sync.php:323 +msgid "Error not defined" +msgstr "Erreur non définie" + +#: modules/dolibarr/doli-sync/view/sync-item.view.php:27 +#, php-format +msgid "Associate and synchronize %s" +msgstr "Associer et synchroniser %s" + +#: modules/dolibarr/doli-third-parties/class/class-doli-third-parties.php:138 +#, php-format +msgid "" +"Erase data for the third party %s with the " +"WordPress data" +msgstr "" +"Effacer les données pour le tiers %s avec les données de " +"WordPress" + +#: modules/dolibarr/doli-user/view/frontend/user-alert.php:6 +msgid "There is a problem connecting your account to our ERP" +msgstr "IL Y A UN PROBLÈME DE CONNEXION DE VOTRE COMPTE À NOTRE ERP" + +#: modules/dolibarr/doli-user/view/frontend/user-alert.php:14 +#: modules/my-account/class/class-my-account.php:140 +msgid "Logout" +msgstr "Deconnexion" + +#: modules/emails/class/class-emails.php:47 +#: modules/pages/class/class-pages.php:103 +msgid "New account" +msgstr "Nouveau compte" + +#: modules/emails/class/class-emails.php:52 +msgid "Pending order" +msgstr "Commande en cours" + +#: modules/emails/class/class-emails.php:57 +msgid "New order" +msgstr "Nouvelle commande payée" + +#: modules/emails/class/class-emails.php:72 +msgid "Send invoice" +msgstr "Votre facture" + +#: modules/emails/view/admin-new-order.php:30 +#, php-format +msgid "You’ve received the following order from %s:" +msgstr "Vous avez reçu la commande suivante de %s:" + +#: modules/emails/view/admin-new-order.php:33 +#, php-format +msgid "View order" +msgstr "Voir la commande" + +#: modules/emails/view/customer-delivered-order.php:30 +#: modules/emails/view/customer-invoice.php:30 +#: modules/emails/view/customer-new-account.php:26 +#: modules/emails/view/customer-processing-order.php:26 +#, php-format +msgid "Hi %s," +msgstr "Bonjour %s," + +#: modules/emails/view/customer-delivered-order.php:36 +#, php-format +msgid "Your %s order has beed marked delivered on our side." +msgstr "Votre commande de %s a été marquée comme livrée de notre côté." + +#: modules/emails/view/customer-delivered-order.php:47 +#, php-format +msgid "Your tracking link: %s." +msgstr "Votre lien de suivi : %s." + +#: modules/emails/view/customer-invoice.php:37 +#, php-format +msgid "Your invoice %1$s for your order %2$s" +msgstr "Votre facture #%1$s pour votre commande #%2$s" + +#: modules/emails/view/customer-new-account.php:32 +#, php-format +msgid "" +"Thanks for creating an account on %1$s. Your username is %2$s. You can " +"access your account area to view orders, change your password, and more at: " +"%4$s" +msgstr "" +"Merci d'avoir crée votre compte sur %1$s. Votre identifiant est %2$s. Vous " +"pouvez accéder à votre compte pour voir vos commandes, télécharger vos " +"factures, réinitialiser votre mot de passe et bien d'autre, sur : %4$s" + +#: modules/emails/view/customer-new-account.php:44 +#, php-format +msgid "" +"Click here to create your password: Create my " +"password" +msgstr "" +"Cliquez ici pour créer votre mot de passe: Créer mon " +"mot de passe" + +#: modules/emails/view/customer-new-account.php:48 +msgid "We look forward to seeing you soon." +msgstr "Nous avons hâte de vous revoir bientôt." + +#: modules/emails/view/customer-processing-order.php:32 +#, php-format +msgid "" +"Just to let you know — we've received your order #%s, and it is now being " +"processed:" +msgstr "" +"Nous vous informons que nous avons bien reçu votre commande #%s. Celle-ci " +"est en cours de traitement:" + +#: modules/emails/view/frontend/order-details.php:26 +#, php-format +msgid "Order #%1$s ()" +msgstr "Commande #%1$s ()" + +#: modules/emails/view/frontend/order-details.php:82 +msgid "See my orders or my downloadable products" +msgstr "Voir mes commandes ou mes produits téléchargeables" + +#: modules/health/filter/class-health-filter.php:53 +msgid "Page not set" +msgstr "Page non utilisé" + +#: modules/my-account/action/class-my-account-action.php:83 +msgid "Your username or password is incorrect." +msgstr "Votre identifiant ou votre mot de passe est incorrect." + +#: modules/my-account/action/class-my-account-action.php:213 +msgid "What do you try to do ?" +msgstr "Qu'essayez-vous de faire ?" + +#: modules/my-account/class/class-my-account.php:110 +msgid "Account details" +msgstr "Détails du compte" + +#: modules/my-account/class/class-my-account.php:115 +msgid "Quotations" +msgstr "Devis" + +#: modules/my-account/class/class-my-account.php:120 +msgid "Dolibarr Quotation" +msgstr "Proposition" + +#: modules/my-account/class/class-my-account.php:135 +msgid "Downloads" +msgstr "Téléchargements" + +#: modules/my-account/class/class-my-account.php:153 +msgid "Switch back" +msgstr "Retour" + +#: modules/my-account/view/frontend/checkout-login.php:21 +msgid "Returning customer ?" +msgstr "Déjà client ? Cliquez ici pour vous connecter ?" + +#: modules/my-account/view/frontend/checkout-login.php:21 +msgid "Click here to login" +msgstr "Cliquez ici pour vous connecter" + +#: modules/my-account/view/frontend/form-login.php:50 +#: modules/my-account/view/frontend/lost-password.php:33 +msgid "Username or email address" +msgstr "Nom d'utilisateur ou adresse électronique" + +#: modules/my-account/view/frontend/form-login.php:63 +msgid "Log in" +msgstr "Connexion" + +#: modules/my-account/view/frontend/form-login.php:64 +msgid "Lost Password" +msgstr "Mot de passe perdu" + +#: modules/my-account/view/frontend/login-title.php:21 +#: modules/my-account/view/frontend/my-account-details.php:53 +msgid "Login" +msgstr "Connexion" + +#: modules/my-account/view/frontend/lost-password.php:20 +msgid "Lost password ?" +msgstr "Mot de passe perdu ?" + +#: modules/my-account/view/frontend/lost-password.php:22 +msgid "" +"Lost your password? Please enter your username or email address. You will " +"receive a link to create a new password via email." +msgstr "" +"Vous avez perdu votre mot de passe ? Veuillez entrer votre nom d'utilisateur " +"ou votre adresse électronique. Vous recevrez un lien pour créer un nouveau " +"mot de passe par courrier électronique." + +#: modules/my-account/view/frontend/lost-password.php:40 +msgid "Reset password" +msgstr "Réinitialisation du mot de passe" + +#: modules/my-account/view/frontend/my-account-details.php:81 +msgid "Zip" +msgstr "Code postal" + +#: modules/my-account/view/frontend/my-account-dolibarr-proposals.php:24 +#: modules/my-account/view/frontend/my-account-invoices.php:25 +#: modules/my-account/view/frontend/my-account-orders.php:24 +msgid "Please contact commercial" +msgstr "Veuillez contacter le service commercial" + +#: modules/my-account/view/frontend/my-account-dolibarr-proposals.php:44 +#: modules/my-account/view/frontend/my-account-invoices.php:46 +#: modules/my-account/view/frontend/my-account-orders.php:44 +#: modules/my-account/view/frontend/my-account-proposals.php:33 +msgid "View details" +msgstr "Voir les détails" + +#: modules/my-account/view/frontend/my-account-dolibarr-proposals.php:78 +#: modules/my-account/view/frontend/my-account-invoices.php:75 +#: modules/my-account/view/frontend/my-account-orders.php:81 +#: modules/my-account/view/frontend/my-account-proposals.php:67 +msgid "No products to display" +msgstr "Aucun produits à afficher" + +#: modules/my-account/view/frontend/my-account-dolibarr-proposals.php:89 +#: modules/my-account/view/frontend/my-account-proposals.php:78 +msgid "No quotations" +msgstr "Aucun devis" + +#: modules/my-account/view/frontend/my-account-downloads.php:47 +msgid "No downloadable product" +msgstr "Aucun produit téléchargeable" + +#: modules/my-account/view/frontend/my-account-invoices.php:86 +msgid "No invoice" +msgstr "Aucune facture" + +#: modules/my-account/view/frontend/my-account-orders.php:92 +msgid "No orders" +msgstr "Aucune commande" + +#: modules/pages/class/class-pages.php:84 +msgid "Shop" +msgstr "Boutique" + +#: modules/pages/class/class-pages.php:85 +msgid "Cart" +msgstr "Panier" + +#: modules/pages/class/class-pages.php:86 +msgid "Checkout" +msgstr "Tunnel de vente" + +#: modules/pages/class/class-pages.php:87 +msgid "My account" +msgstr "Mon compte" + +#: modules/pages/class/class-pages.php:88 +msgid "General conditions of sale" +msgstr "Condition générales de vente" + +#: modules/pages/class/class-pages.php:105 +msgid "Current order" +msgstr "Commande en cours" + +#: modules/pages/class/class-pages.php:107 +msgid "Completed order" +msgstr "Commande complétée" + +#: modules/pages/class/class-pages.php:109 +msgid "Paid order" +msgstr "Commande payée" + +#: modules/pages/class/class-pages.php:113 +msgid "Delivered order" +msgstr "Commande livrée" + +#: modules/payment/class/class-payment.php:52 +msgid "Cheque" +msgstr "Chèque" + +#: modules/payment/class/class-payment.php:53 +msgid "" +"Please send a check to Store Name, Store Street, Store Town, Store State / " +"County, Store Postcode." +msgstr "" +"Veuillez envoyer un chèque au Nom de la boutique, adresse, ville, pays, Code " +"postal." + +#: modules/payment/class/class-payment.php:59 +msgid "Payment in shop" +msgstr "Paiement en boutique" + +#: modules/payment/class/class-payment.php:60 +msgid "Pay and pick up directly your products at the shop." +msgstr "Payez et retirer vos produits à la boutique." + +#: modules/payment/class/class-payment.php:65 +msgid "PayPal" +msgstr "PayPal" + +#: modules/payment/class/class-payment.php:66 +msgid "Accept payments via PayPal using account balance or credit card." +msgstr "" +"Paiements par PayPal utilisant le solde du compte ou la carte de crédit " +"acceptés." + +#: modules/payment/class/class-payment.php:73 +msgid "Stripe" +msgstr "Stripe" + +#: modules/payment/class/class-payment.php:74 +msgid "Use your credit card to place your order" +msgstr "Utilisez votre carte de crédit pour passer votre commande" + +#: modules/payment/class/class-payment.php:85 +msgid "Waiting for the check" +msgstr "En attente du chèque" + +#: modules/payment/class/class-payment.php:86 +#: modules/payment/class/class-payment.php:90 +#: modules/payment/class/class-payment.php:94 +#: modules/payment/class/class-payment.php:98 +msgid "Paid" +msgstr "Payée" + +#: modules/payment/class/class-payment.php:89 +#: modules/payment/class/class-payment.php:93 +#: modules/payment/class/class-payment.php:97 +msgid "Waiting for the payment" +msgstr "En attente du paiement" + +#: modules/paypal/filter/class-paypal-filter.php:46 +msgid "" +" SANDBOX ENABLED. You can use sandbox testing accounts only. See the PayPal " +"Sandbox Testing Guide for more details." +msgstr "" +" BAC À SABLE ACTIVÉ. Vous ne pouvez utiliser que des comptes de test de bac " +"à sable. Voir le Guide de test des bacs à sable de PayPal pour " +"plus de détails." + +#: modules/paypal/view/form-setting.view.php:20 +msgid "Paypal email" +msgstr "Email Paypal" + +#: modules/paypal/view/form-setting.view.php:29 +msgid "PayPal Sandbox" +msgstr "Sandbox de PayPal" + +#: modules/products/action/class-product-action.php:53 +msgid "Products Category" +msgstr "Catégories de produits" + +#: modules/products/action/class-product-action.php:344 +#, php-format +msgid "Search result for \"%s\"" +msgstr "Résultats de la recherche pour \"%s\"" + +#: modules/products/filter/class-product-filter.php:66 +#: modules/products/filter/class-product-filter.php:68 +msgid "Product" +msgstr "Produit" + +#: modules/products/filter/class-product-filter.php:70 +msgid "Add New Product" +msgstr "Ajouter nouveau produit" + +#: modules/products/filter/class-product-filter.php:71 +msgid "New Product" +msgstr "Nouveau produit" + +#: modules/products/filter/class-product-filter.php:72 +msgid "Edit Product" +msgstr "Editer produit" + +#: modules/products/filter/class-product-filter.php:73 +msgid "View Product" +msgstr "Voir produit" + +#: modules/products/filter/class-product-filter.php:74 +msgid "All Products" +msgstr "Tous les produits" + +#: modules/products/filter/class-product-filter.php:75 +msgid "Search Products" +msgstr "Rechercher Produits" + +#: modules/products/filter/class-product-filter.php:76 +msgid "Parent Products:" +msgstr "Parent de produits:" + +#: modules/products/filter/class-product-filter.php:127 +msgid "Products category" +msgstr "Catégorie de produits" + +#: modules/products/filter/class-product-filter.php:128 +#: modules/products/filter/class-product-filter.php:137 +msgid "Product category" +msgstr "Catégorie de produit" + +#: modules/products/filter/class-product-filter.php:129 +msgid "Search Products category" +msgstr "Recherche une catégorie de produits" + +#: modules/products/filter/class-product-filter.php:130 +msgid "All Products category" +msgstr "Toutes les catégories de produits" + +#: modules/products/filter/class-product-filter.php:131 +msgid "Parent Product category" +msgstr "Parent Catégorie de produit" + +#: modules/products/filter/class-product-filter.php:132 +msgid "Parent Product: category" +msgstr "Produit parent : catégorie" + +#: modules/products/filter/class-product-filter.php:133 +msgid "Edit Product category" +msgstr "Modifier la catégorie de produit" + +#: modules/products/filter/class-product-filter.php:134 +msgid "Update Product category" +msgstr "Mise à jour de la catégorie de produits" + +#: modules/products/filter/class-product-filter.php:135 +msgid "Add New Product category" +msgstr "Ajouter une nouvelle catégorie de produits" + +#: modules/products/filter/class-product-filter.php:136 +msgid "New Product categoryName" +msgstr "Nouvelle catégorie de produitNom" + +#: modules/products/filter/class-product-filter.php:148 +msgid "category-product" +msgstr "categorie-produit" + +#: modules/products/filter/class-product-filter.php:256 +msgid "Sold out" +msgstr "Rupture de stock" + +#: modules/products/view/frontend/wps-product-list-edit.php:43 +#: modules/products/view/frontend/wps-product-list.php:33 +msgid "Unit price:" +msgstr "Prix unitaire:" + +#: modules/products/view/frontend/wps-product-single.php:48 +#: modules/products/view/metabox/main.view.php:109 +msgid "Similar products" +msgstr "Produits similaires" + +#: modules/products/view/frontend/wps-product-stock.php:19 +#, php-format +msgid "%s in stock" +msgstr "%s en stock" + +#: modules/products/view/frontend/wps-product-taxonomy.php:23 +msgid "Read more" +msgstr "Détails" + +#: modules/products/view/item-edit.view.php:39 +msgid "Save" +msgstr "Sauvegarder" + +#: modules/products/view/item-edit.view.php:68 +msgid "No product parent" +msgstr "Pas de produit parent" + +#: modules/products/view/item-edit.view.php:74 +#: modules/products/view/metabox/main.view.php:87 +msgid "Manage Stock" +msgstr "Gérer le stock" + +#: modules/products/view/item-edit.view.php:80 +#: modules/products/view/list.view.php:28 +#: modules/products/view/metabox/main.view.php:93 +msgid "Stock" +msgstr "Stock" + +#: modules/products/view/item.view.php:33 +msgid "Edit" +msgstr "Modifier" + +#: modules/products/view/item.view.php:35 +#: modules/products/view/metabox/main.view.php:26 +#: modules/third-parties/view/item.view.php:38 +msgid "Edit in Dolibarr" +msgstr "Editer sur Dolibarr" + +#: modules/products/view/item.view.php:37 +msgid "Delete" +msgstr "Supprimer" + +#: modules/products/view/item.view.php:38 +msgid "Preview" +msgstr "Afficher" + +#: modules/products/view/item.view.php:45 +msgid "No handle stock" +msgstr "Stock non configuré" + +#: modules/products/view/list.view.php:22 +msgid "Thumbnail" +msgstr "Vignette" + +#: modules/products/view/list.view.php:25 +msgid "Tax Rate" +msgstr "Taux de TVA" + +#: modules/products/view/metabox/main.view.php:32 +msgid "Autres informations du produit" +msgstr "" + +#: modules/products/view/metabox/main.view.php:100 +msgid "Product Downloadable" +msgstr "Produit Téléchargeable" + +#: modules/proposals/filter/class-proposals-filter.php:43 +#: modules/proposals/filter/class-proposals-filter.php:45 +#: modules/proposals/view/single.view.php:21 +#: modules/third-parties/view/metaboxes/metabox-dolibarr-proposals.view.php:24 +#: modules/third-parties/view/metaboxes/metabox-proposals.view.php:24 +msgid "Proposal" +msgstr "Proposition commerciale" + +#: modules/proposals/filter/class-proposals-filter.php:47 +msgid "Add New Proposal" +msgstr "Ajouter une nouvelle proposition" + +#: modules/proposals/filter/class-proposals-filter.php:48 +msgid "New Proposal" +msgstr "Nouvelle proposition" + +#: modules/proposals/filter/class-proposals-filter.php:49 +msgid "Edit Proposal" +msgstr "Modifier la proposition" + +#: modules/proposals/filter/class-proposals-filter.php:50 +msgid "View Proposal" +msgstr "Voir la proposition" + +#: modules/proposals/filter/class-proposals-filter.php:51 +msgid "All Proposals" +msgstr "Toutes les propositions" + +#: modules/proposals/filter/class-proposals-filter.php:52 +msgid "Search Proposals" +msgstr "Recherche de propositions" + +#: modules/proposals/filter/class-proposals-filter.php:53 +msgid "Parent Proposals:" +msgstr "Propositions des parents :" + +#: modules/proposals/filter/class-proposals-filter.php:54 +msgid "No proposals found." +msgstr "Aucune proposition trouvée." + +#: modules/proposals/filter/class-proposals-filter.php:55 +msgid "No proposals found in Trash." +msgstr "Aucune proposition trouvée dans Trash." + +#: modules/proposals/view/main.view.php:32 +msgid "All Proposals Sync" +msgstr "Synchroniser tous les devis" + +#: modules/proposals/view/metabox-proposal-details.view.php:20 +msgid "Details" +msgstr "Détails" + +#: modules/search/view/search-field.view.php:20 +msgid "Search for:" +msgstr "Rechercher:" + +#: modules/search/view/search-field.view.php:21 +msgid "Search products…" +msgstr "Rechercher un produit…" + +#: modules/search/widget/class-search-widget.php:32 +#: modules/search/widget/class-search-widget.php:35 +msgid "Search a product" +msgstr "Rechercher un produit" + +#: modules/search/widget/class-search-widget.php:61 +msgid "New title" +msgstr "Nouveau titre" + +#: modules/search/widget/class-search-widget.php:64 +msgid "Title:" +msgstr "Titre:" + +#: modules/settings/action/class-settings-action.php:146 +#: modules/settings/action/class-settings-action.php:305 +msgid "WPshop cannot connect to dolibarr. Please check your settings" +msgstr "" +"WPshop n'est pas connecté à Dolibarr. Veuillez vérifier vos configurations" + +#: modules/settings/action/class-settings-action.php:153 +#: modules/settings/action/class-settings-action.php:189 +#: modules/settings/action/class-settings-action.php:221 +#: modules/settings/action/class-settings-action.php:249 +#: modules/settings/action/class-settings-action.php:312 +msgid "Your settings have been saved." +msgstr "Vos réglages ont été enregistrés." + +#: modules/settings/class/class-settings.php:134 +msgid "No page" +msgstr "Pas de page" + +#: modules/settings/class/class-settings.php:220 +msgid "No product" +msgstr "Aucun produit" + +#: modules/settings/view/email-single.view.php:48 +#: modules/settings/view/erp.view.php:181 +#: modules/settings/view/general.view.php:57 +#: modules/settings/view/pages.view.php:56 +#: modules/settings/view/payment-method-single.view.php:53 +#: modules/settings/view/shipping-cost.view.php:54 +msgid "Save Changes" +msgstr "Enregistrer les changements" + +#: modules/settings/view/emails.view.php:22 +msgid "E-mail" +msgstr "Email" + +#: modules/settings/view/emails.view.php:38 +#: modules/settings/view/notice-activate-erp.view.php:22 +#: modules/settings/view/payment-method.view.php:37 +msgid "Configure" +msgstr "Configurer" + +#: modules/settings/view/erp.view.php:26 +msgid "Dolibarr URL" +msgstr "URL de Dolibarr" + +#: modules/settings/view/erp.view.php:34 +msgid "Dolibarr Secret Key" +msgstr "Clé API de Dolibarr" + +#: modules/settings/view/erp.view.php:35 +msgid "Secret key used for sell with Dolibarr" +msgstr "Clé API utilisée pour la connexion avec Dolibarr" + +#: modules/settings/view/erp.view.php:39 +msgid "Connected to Dolibarr" +msgstr "Connecter à Dolibarr" + +#: modules/settings/view/erp.view.php:43 +msgid "Connection to dolibarr failed" +msgstr "La connexion à Dolibarr a échoué" + +#: modules/settings/view/erp.view.php:55 +msgid "Dolibarr Public Key (Optional)" +msgstr "Clé publique Dolibarr (facultatif)" + +#: modules/settings/view/erp.view.php:56 +msgid "Public key used for your theme" +msgstr "Clé publique utilisée pour votre thème" + +#: modules/settings/view/erp.view.php:68 +msgid "Dolibarr Create Tier" +msgstr "Crée un Tier Dolibarr" + +#: modules/settings/view/erp.view.php:69 modules/settings/view/erp.view.php:78 +#: modules/settings/view/erp.view.php:89 modules/settings/view/erp.view.php:99 +#: modules/settings/view/erp.view.php:120 +#: modules/settings/view/erp.view.php:130 +#: modules/settings/view/erp.view.php:141 +#: modules/settings/view/erp.view.php:150 +#: modules/settings/view/erp.view.php:163 +#: modules/settings/view/erp.view.php:173 +msgid "Test the link" +msgstr "Tester le lien" + +#: modules/settings/view/erp.view.php:77 +msgid "Dolibarr Tiers Lists" +msgstr "Listes des Tiers Dolibarr" + +#: modules/settings/view/erp.view.php:88 +msgid "Dolibarr Create Product" +msgstr "Créer un Produit Dolibarr" + +#: modules/settings/view/erp.view.php:98 +msgid "Dolibarr Products Lists" +msgstr "Listes des Produits Dolibarr" + +#: modules/settings/view/erp.view.php:119 +msgid "Dolibarr Create Proposal" +msgstr "Créer une Proposition Commerciale Dolibarr" + +#: modules/settings/view/erp.view.php:129 +msgid "Dolibarr Proposals Lists" +msgstr "Listes des Propositions Commerciales Dolibarr" + +#: modules/settings/view/erp.view.php:140 +msgid "Dolibarr Create Order" +msgstr "Créer une Commande Dolibarr" + +#: modules/settings/view/erp.view.php:149 +msgid "Dolibarr Orders Lists" +msgstr "Listes des Commandes Dolibarr" + +#: modules/settings/view/erp.view.php:162 +msgid "Dolibarr Invoices Lists" +msgstr "Listes des Factures Dolibarr" + +#: modules/settings/view/erp.view.php:172 +msgid "Dolibarr Payments Lists" +msgstr "Listes des Paiements Dolibarr" + +#: modules/settings/view/general.view.php:25 +msgid "Shop Email" +msgstr "Email de la boutique WPshop" + +#: modules/settings/view/general.view.php:33 +msgid "WPshop width size" +msgstr "Largeur de la fenêtre de WPshop" + +#: modules/settings/view/general.view.php:42 +msgid "WPshop height size" +msgstr "Hauteur de la fenêtre de WPshop" + +#: modules/settings/view/main.view.php:34 modules/tools/view/main.view.php:24 +msgid "General" +msgstr "Général" + +#: modules/settings/view/main.view.php:35 +msgid "Pages" +msgstr "Pages" + +#: modules/settings/view/main.view.php:36 +msgid "Emails" +msgstr "Emails" + +#: modules/settings/view/main.view.php:38 +msgid "ERP" +msgstr "ERP" + +#: modules/settings/view/notice-activate-erp.view.php:21 +msgid "WPshop: You have not yet set up your ERP ?" +msgstr "WPshop: Avez vous réglé votre ERP ?" + +#: modules/settings/view/notice-activate-erp.view.php:23 +#: modules/settings/view/notice-error-erp.view.php:22 +msgid "Follow this guide" +msgstr "Suivre ce guide" + +#: modules/settings/view/notice-activate-erp.view.php:27 +msgid "Do not show this message again." +msgstr "Ne montrez plus ce message." + +#: modules/settings/view/notice-error-erp.view.php:27 +msgid "Do not show this message again" +msgstr "Ne montrez plus ce message" + +#: modules/settings/view/payment-method-single.view.php:39 +#: modules/settings/view/payment-method.view.php:34 +msgid "Activate" +msgstr "Activer" + +#: modules/settings/view/payment-method.view.php:22 +msgid "Method" +msgstr "Méthode" + +#: modules/settings/view/payment-method.view.php:23 +msgid "Activated" +msgstr "Activé" + +#: modules/settings/view/payment-method.view.php:34 +msgid "Deactivate" +msgstr "Désactiver" + +#: modules/settings/view/shipping-cost.view.php:26 +msgid "Select shipping product" +msgstr "Sélectionner votre produit \"Frais de livraison\"" + +#: modules/settings/view/shipping-cost.view.php:48 +msgid "Free delivery starting from (€) HT" +msgstr "Livraison gratuite à partir de (€) HT" + +#: modules/stripe/filter/class-stripe-filter.php:46 +msgid " SANDBOX ENABLED" +msgstr " BAC À SABLE ACTIVÉ" + +#: modules/stripe/view/form-setting.view.php:20 +msgid "Publish key" +msgstr "Clé publique" + +#: modules/stripe/view/form-setting.view.php:27 +msgid "Secret key" +msgstr "Clé secrète" + +#: modules/stripe/view/form-setting.view.php:36 +msgid "Stripe Sandbox" +msgstr "Bac à sable Stripe" + +#: modules/third-parties/action/class-third-party-action.php:64 +#: modules/third-parties/action/class-third-party-action.php:65 +#: modules/third-parties/view/main.view.php:21 +msgid "Third Parties" +msgstr "Tiers" + +#: modules/third-parties/class/class-third-party.php:284 +#, php-format +msgid "Dissociate contact %1$s from %2$s" +msgstr "Dissocier contact %1$s depuis %2$s" + +#: modules/third-parties/filter/class-third-party-filter.php:44 +#: modules/third-parties/filter/class-third-party-filter.php:46 +msgid "Third party" +msgstr "Tier" + +#: modules/third-parties/filter/class-third-party-filter.php:48 +msgid "Add New Third party" +msgstr "Ajouter un nouveau tier" + +#: modules/third-parties/filter/class-third-party-filter.php:49 +msgid "New Third party" +msgstr "Nouveau Tier" + +#: modules/third-parties/filter/class-third-party-filter.php:50 +msgid "Edit Third party" +msgstr "Editer Tier" + +#: modules/third-parties/filter/class-third-party-filter.php:51 +msgid "View Third party" +msgstr "Voir Tier" + +#: modules/third-parties/filter/class-third-party-filter.php:52 +msgid "All Third parties" +msgstr "Tous les tiers" + +#: modules/third-parties/filter/class-third-party-filter.php:53 +msgid "Search Third parties" +msgstr "Rechercher dans les tiers" + +#: modules/third-parties/filter/class-third-party-filter.php:54 +msgid "Parent Third parties:" +msgstr "Parent Tiers:" + +#: modules/third-parties/filter/class-third-party-filter.php:55 +msgid "No third parties found." +msgstr "Aucun tiers trouvé." + +#: modules/third-parties/filter/class-third-party-filter.php:56 +msgid "No third parties found in Trash." +msgstr "Aucun Tier trouvé dans la Corbeille." + +#: modules/third-parties/view/list.view.php:22 +msgid "Society name" +msgstr "Nom de la société" + +#: modules/third-parties/view/list.view.php:23 +msgid "User" +msgstr "Utilisateur" + +#: modules/third-parties/view/list.view.php:24 +msgid "Commercial" +msgstr "Commercial" + +#: modules/third-parties/view/list.view.php:25 +msgid "Actions" +msgstr "Actions" + +#: modules/third-parties/view/metaboxes/metabox-activity.view.php:20 +msgid "Activity" +msgstr "Activité" + +#: modules/third-parties/view/metaboxes/metabox-billing-address-edit.view.php:20 +msgid "Billing Address" +msgstr "Adresse de facturation" + +#: modules/third-parties/view/metaboxes/metabox-contacts.view.php:20 +msgid "Users" +msgstr "Utilisateurs" + +#: modules/third-parties/view/metaboxes/metabox-dolibarr-proposals.view.php:26 +#: modules/third-parties/view/metaboxes/metabox-invoices.view.php:27 +#: modules/third-parties/view/metaboxes/metabox-orders.view.php:26 +#: modules/third-parties/view/metaboxes/metabox-proposals.view.php:26 +msgid "€ TTC" +msgstr "€ TTC" + +#: modules/third-parties/view/metaboxes/metabox-indicator.view.php:20 +msgid "Indicator" +msgstr "Indicateur" + +#: modules/third-parties/view/metaboxes/metabox-task.view.php:20 +msgid "Tasks" +msgstr "Tâches" + +#: modules/third-parties/view/single-title-edit.view.php:26 +msgid "New third party" +msgstr "Nouveau tier" + +#: modules/third-parties/view/single-title.view.php:19 +#, php-format +msgid "Tier name %s" +msgstr "Nom du Tier %s" + +#: modules/tools/view/general.view.php:22 +msgid "Import third party CSV" +msgstr "Importer des clients depuis un CSV" + +#: modules/tools/view/general.view.php:32 +#: modules/tools/view/general.view.php:48 +msgid "Import" +msgstr "Importer" + +#: modules/tools/view/general.view.php:38 +msgid "Import Product CSV" +msgstr "Importer des produits depuis un CSV" + +#: modules/tools/view/main.view.php:20 +msgid "Tools" +msgstr "Outils" + +#: modules/transfert-data/action/class-transfert-data-action.php:184 +#, php-format +msgid "" +"
  • %1$d Contact #%2$d %4$s is already affected to another " +"third party #%3$d %4$s
  • " +msgstr "" +"
  • %1$d Contact #%2$d %4$s est déjà affecté à un tier #" +"%3$d %4$s
  • " + +#~ msgid "An email for reset password" +#~ msgstr "Un courriel pour réinitialiser le mot de passe" + +#~ msgid "Current password is incorrect" +#~ msgstr "Votre identifiant ou votre mot de passe est incorrect" + +#~ msgid "Current password" +#~ msgstr "Mot de passe actuel" + +#~ msgid "Leave blank to leave unchanged" +#~ msgstr "Laisser en blanc pour ne pas modifier" + +#~ msgid "New password" +#~ msgstr "Nouveau mot de passe" + +#~ msgid "Confirm new password" +#~ msgstr "Confirmer le nouveau mot de passe" + +#~ msgid "Save changes" +#~ msgstr "Enregistrer les modifications" + +#~ msgid "Street contact" +#~ msgstr "Adresse" + +#, php-format +#~ msgid "Choose %s" +#~ msgstr "Choisir %s" + +#~ msgid "Refresh page" +#~ msgstr "Actualiser la page" + +#~ msgid "All Orders Sync" +#~ msgstr "Synchroniser toutes les commandes" + +#~ msgid "WP ID" +#~ msgstr "WP ID" + +#~ msgid "Price" +#~ msgstr "Prix" + +#~ msgid "Sync" +#~ msgstr "Synchroniser" + +#, php-format +#~ msgid "Last synchronisation on %s" +#~ msgstr "Dernière synchronisation le %s" + +#~ msgid "Not available in quick release" +#~ msgstr "Indisponible en modification rapide" + +#~ msgid "Contacts" +#~ msgstr "Contacts" + +#~ msgid "Reorder" +#~ msgstr "Refaire cette commande" + +#, fuzzy +#~| msgid "Proposal" +#~ msgid "Pay Proposal" +#~ msgstr "Proposition commerciale" + +#~ msgid "Quick edit" +#~ msgstr "Modification rapide" + +#~ msgid "All Product Sync" +#~ msgstr "Synchroniser tous les produits" + +#~ msgid "Apply" +#~ msgstr "Appliquer" + +#~ msgid "Use quotation" +#~ msgstr "Activer les devis" + +#~ msgid "Shipping cost" +#~ msgstr "Frais de livraison" + +#~ msgid "All Third Parties Sync" +#~ msgstr "Synchroniser tous les tiers" + +#~ msgid "Filter" +#~ msgstr "Filtrer" + +#~ msgid "Valid page" +#~ msgstr "Validation" + +#~ msgid "Proposal details %s" +#~ msgstr "Details de la proposition commerciale %s" + +#~ msgid "%s number :" +#~ msgstr "Référence %s" + +#~ msgid "Subscribe" +#~ msgstr "Inscription" + +#~ msgid "Continue" +#~ msgstr "Continuer" + +#~ msgid "Shipping details" +#~ msgstr "Détails de livraison" + +#~ msgid "Edit billing contact" +#~ msgstr "Modifier mon adresse de livraison" + +#~ msgid "Order number" +#~ msgstr "Numéro de commande" + +#, fuzzy +#~| msgid "Last name" +#~ msgid "Last sync :" +#~ msgstr "Nom de famille" + +#~ msgid "Order #%s" +#~ msgstr "Commande #%s" + +#~ msgid "How to pay for your order" +#~ msgstr "Marche à suivre pour payer votre commande" + +#~ msgid "Thanks, your quotation has bee received" +#~ msgstr "Merci, votre devis a bien été reçu" + +#~ msgid "Quotation number" +#~ msgstr "Numéro de devis" + +#~ msgid "Quotation detail" +#~ msgstr "Détail du devis" + +#~ msgid "Order details #" +#~ msgstr "Détails de la commande #" + +#~ msgid "Payment by" +#~ msgstr "Paiement par" + +#~ msgid "Resume" +#~ msgstr "Résumé" + +#~ msgid "Payment by cheque" +#~ msgstr "Paiement par chèque" + +#~ msgid "Are you sure you want to delete this product ?" +#~ msgstr "Êtes-vous sûre de vouloir supprimer ce produit ?" + +#~ msgid "Photo" +#~ msgstr "Photo" + +#~ msgid "Barcode" +#~ msgstr "Code barre" + +#~ msgid "Proposal actions" +#~ msgstr "Actions de la proposition commerciale" + +#~ msgid "Contact #" +#~ msgstr "Contact #" + +#~ msgid "" +#~ "Click here to create your password: Create my password" +#~ msgstr "" +#~ "Cliquez ici pour créer votre mot de passe : Créer mon mot " +#~ "de passe" diff --git a/core/class/class-core.php b/core/class/class-core.php new file mode 100644 index 0000000..237e6c1 --- /dev/null +++ b/core/class/class-core.php @@ -0,0 +1,47 @@ + + * @copyright (c) 2011-2019 Eoxia . + * + * @license AGPLv3 + * + * @package WPshop\Classes + * + * @since 2.0.0 + */ + +namespace wpshop; + +defined( 'ABSPATH' ) || exit; + +/** + * Cart Session Class. + */ +class Core extends \eoxia\Singleton_Util { + + /** + * Le constructeur. + * + * @since 2.0.0 + */ + protected function construct() {} + + /** + * Méthode appelée à l'activation du plugin. + * + * @since 2.0.0 + */ + public function default_install() { + $db_version = get_option( 'wpshop2_database_version', false ); + + if ( ! $db_version ) { + Pages::g()->create_default_page(); + + update_option( 'wpshop2_database_version', '1.0.0' ); + } + } +} + +Core::g(); diff --git a/core/core.config.json b/core/core.config.json new file mode 100644 index 0000000..491c16e --- /dev/null +++ b/core/core.config.json @@ -0,0 +1,13 @@ +{ + "name": "Core", + "slug": "core", + "since": "2.0.0", + "description": "Main files of my_plugin", + "path": "core/", + "dependencies": { + "class": {}, + "action": {}, + "filter": {}, + "util": {} + } +} diff --git a/core/external/eo-framework/.editorconfig b/core/external/eo-framework/.editorconfig new file mode 100644 index 0000000..22ba22b --- /dev/null +++ b/core/external/eo-framework/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +tab_width = 4 +indent_style = tab +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.txt] +trim_trailing_whitespace = false + +[*.{md,json,yml}] +trim_trailing_whitespace = false +indent_style = space +indent_size = 2 \ No newline at end of file diff --git a/core/external/eo-framework/.gitignore b/core/external/eo-framework/.gitignore new file mode 100644 index 0000000..7461a98 --- /dev/null +++ b/core/external/eo-framework/.gitignore @@ -0,0 +1,8 @@ +docs +output +npm-debug.log +docsjs +docsphp +.idea +node_modules +vendor diff --git a/core/external/eo-framework/.travis.yml b/core/external/eo-framework/.travis.yml new file mode 100644 index 0000000..8cab4ec --- /dev/null +++ b/core/external/eo-framework/.travis.yml @@ -0,0 +1,63 @@ +sudo: false +dist: trusty + +language: php + +notifications: + email: + on_success: never + on_failure: change + +branches: + only: + - master + +cache: + directories: + - $HOME/.composer/cache + +matrix: + include: + - php: 7.1 + env: WP_VERSION=latest + - php: 7.0 + env: WP_VERSION=latest + - php: 5.6 + env: WP_VERSION=latest + - php: 5.6 + env: WP_VERSION=trunk + - php: 5.6 + env: WP_TRAVISCI=phpcs + - php: 5.3 + env: WP_VERSION=latest + dist: precise + +before_script: + - export PATH="$HOME/.composer/vendor/bin:$PATH" + - | + if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then + phpenv config-rm xdebug.ini + else + echo "xdebug.ini does not exist" + fi + - | + if [[ ! -z "$WP_VERSION" ]] ; then + bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION + composer global require "phpunit/phpunit=4.8.*|5.7.*" + fi + - | + if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then + composer global require wp-coding-standards/wpcs + phpcs --config-set installed_paths $HOME/.composer/vendor/wp-coding-standards/wpcs + fi + +script: + - | + if [[ ! -z "$WP_VERSION" ]] ; then + phpunit + WP_MULTISITE=1 phpunit + fi + - | + if [[ "$WP_TRAVISCI" == "phpcs" ]] ; then + phpcs + fi diff --git a/core/external/eo-framework/LICENSE b/core/external/eo-framework/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/core/external/eo-framework/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/core/external/eo-framework/README.md b/core/external/eo-framework/README.md new file mode 100644 index 0000000..f14c929 --- /dev/null +++ b/core/external/eo-framework/README.md @@ -0,0 +1,39 @@ +# EO-Framework 1.0.0 + +EO Framework est une **surcouche** apportant des **fonctionnalités PHP supplémentaires** au framework de WordPress. +Nous avons fait en sorte que toutes les tâches répétitifs d'une création d'un plugin et surtout de sa maintenance soit réduite au maximum. + +Avec **EO Framework**, nous vous offrons la possibilité d'utiliser très rapidement ce dont tout développeur WordPress à besoin. + +## Fonctionnalités + +* Bootage de plugin. +* Inclusion de "module" et "external" ou bien de plugin dépendant. +* Gestion des vues. +* REST API. +* Gestion de la définition de schéma pour vos données avec WPEO_Model. +* Gestion upload de fichier + gallery avec WPEO_Upload. +* Lib JS et CSS. (+ Minificateur JS et CSS automatique avec GULP) +* Gestion des logs. +* Gestion des conflits entre les différents plugins. + +## Installation + +Créer le dossier "core" et dedans le sous-dossier "external" puis taper la commande: + +```bash +git submodule install https://github.com/Eoxia/eo-framework.git core/external/eo-framework +``` + +## Documentation + +* Lire le [Getting Started](https://eoframework.eoxia.com/documentation/quickstart/) si c'est la première fois que vous utiliser EO-Framework. +* [Documentation](https://eoframework.eoxia.com/documentation) +* [Documentation CSS](https://shop.eoxia.com/wp-content/plugins/eo-framework-plugin/eo-framework/core/assets/examples/index.html) +* [Références PHP](https://eoframework.eoxia.com/docsphp/) +* [Références JS](https://eoframework.eoxia.com/docsjs/) + +## Contribuer + +* Faites des suggestions, déclarer un bug en passant par la page [Issues](https://github.com/Eoxia/eo-framework/issues) de GitHub. +* Suivez nous sur [GitHub](https://github.com/Eoxia) et [Twitter](https://twitter.com/eoxia). diff --git a/core/external/eo-framework/composer.json b/core/external/eo-framework/composer.json new file mode 100644 index 0000000..c851d66 --- /dev/null +++ b/core/external/eo-framework/composer.json @@ -0,0 +1,16 @@ +{ + "name": "vendor_name/package_name", + "description": "description_text", + "minimum-stability": "stable", + "license": "proprietary", + "authors": [ + { + "name": "Eoxia", + "email": "webmaster@eoxia.com" + } + ], + "require": { + "squizlabs/php_codesniffer": "3.5.3", + "wp-coding-standards/wpcs": "2.2.0" + } +} diff --git a/core/external/eo-framework/composer.lock b/core/external/eo-framework/composer.lock new file mode 100644 index 0000000..95624e4 --- /dev/null +++ b/core/external/eo-framework/composer.lock @@ -0,0 +1,114 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "adf8714db6c2a648b161ce0fc51f6da5", + "packages": [ + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.3", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2019-12-04T04:46:47+00:00" + }, + { + "name": "wp-coding-standards/wpcs", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "f90e8692ce97b693633db7ab20bfa78d930f536a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/f90e8692ce97b693633db7ab20bfa78d930f536a", + "reference": "f90e8692ce97b693633db7ab20bfa78d930f536a", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.3.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", + "keywords": [ + "phpcs", + "standards", + "wordpress" + ], + "time": "2019-11-11T12:34:03+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/core/external/eo-framework/core/action/core.action.php b/core/external/eo-framework/core/action/core.action.php new file mode 100644 index 0000000..e079291 --- /dev/null +++ b/core/external/eo-framework/core/action/core.action.php @@ -0,0 +1,102 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Action + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Inclusions de wpeo_assets + */ +class Core_Action { + + /** + * Le constructeur ajoutes les actions WordPress suivantes: + * admin_enqueue_scripts (Pour appeller les scripts JS et CSS dans l'admin) + * wp_enqueue_script (Pour appeller les scripts JS et CSS dans le frontend) + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function __construct() { + add_action( 'admin_enqueue_scripts', array( $this, 'callback_mixed_enqueue_scripts' ), 9 ); + add_action( 'wp_enqueue_scripts', array( $this, 'callback_mixed_enqueue_scripts' ), 9 ); + add_action( 'init', array( $this, 'callback_plugins_loaded' ) ); + } + + /** + * Initialise les fichiers JS inclus dans WordPress (jQuery, wp.media et thickbox) + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return void + */ + public function callback_mixed_enqueue_scripts() { + wp_register_script( 'wpeo-assets-scripts', Config_Util::$init['eo-framework']->core->url . 'assets/js/dest/wpeo-assets.js', array( 'jquery' ), \eoxia\Config_Util::$init['eo-framework']->version, false ); + wp_enqueue_script( 'wpeo-assets-datepicker-js', Config_Util::$init['eo-framework']->core->url . 'assets/js/dest/jquery.datetimepicker.full.js', array( 'jquery' ), \eoxia\Config_Util::$init['eo-framework']->version, false ); + + wp_enqueue_style( 'wpeo-font-awesome-free', Config_Util::$init['eo-framework']->core->url . 'assets/css/fontawesome/fontawesome-all.min.css', array(), \eoxia\Config_Util::$init['eo-framework']->version ); + wp_enqueue_style( 'wpeo-assets-styles', Config_Util::$init['eo-framework']->core->url . 'assets/css/style.min.css', \eoxia\Config_Util::$init['eo-framework']->version ); + wp_enqueue_style( 'wpeo-assets-datepicker', Config_Util::$init['eo-framework']->core->url . 'assets/css/jquery.datetimepicker.css', array(), \eoxia\Config_Util::$init['eo-framework']->version ); + + wp_localize_script( 'wpeo-assets-scripts', 'wpeo_framework', $this->get_localize_script_data() ); + wp_enqueue_script( 'wpeo-assets-scripts' ); + } + + /** + * Renvoies les données pour les scripts JS. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return array { + * }. + */ + public function get_localize_script_data() { + ob_start(); + require \eoxia\Config_Util::$init['eo-framework']->path . 'core/view/modal.view.php'; + $view_modal = ob_get_clean(); + + ob_start(); + require \eoxia\Config_Util::$init['eo-framework']->path . 'core/view/modal-title.view.php'; + $view_modal_title = ob_get_clean(); + + ob_start(); + require \eoxia\Config_Util::$init['eo-framework']->path . 'core/view/modal-buttons.view.php'; + $view_modal_buttons = ob_get_clean(); + + $data = array( + 'modalDefaultTitle' => $view_modal_title, + 'modalView' => $view_modal, + 'modalDefaultButtons' => $view_modal_buttons, + ); + + return $data; + } + + /** + * Initialise le fichier MO + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function callback_plugins_loaded() { + $plugin_dir = str_replace( '\\', '/', WP_PLUGIN_DIR ); + $full_plugin_path = str_replace( '\\', '/', \eoxia\Config_Util::$init['main']->full_plugin_path ); + $path = str_replace( $plugin_dir, '', $full_plugin_path ); + load_plugin_textdomain( 'eoxia', false, $path . 'core/external/' . PLUGIN_EO_FRAMEWORK_DIR . '/core/assets/languages/' ); + } +} + +new Core_Action(); diff --git a/core/external/eo-framework/core/assets/README.md b/core/external/eo-framework/core/assets/README.md new file mode 100644 index 0000000..e26348b --- /dev/null +++ b/core/external/eo-framework/core/assets/README.md @@ -0,0 +1,12 @@ +# EoxiaJS + +Framework JS by Eoxia. Current version 1.0.0-easy + +# To do +### 1.1.0 + +* **action.backend.js**: Replace the three actions to one. +* Add comments in code +* Update wiki + +[Wiki](https://github.com/Eoxia/EoxiaJS/wiki) diff --git a/core/external/eo-framework/core/assets/css/fontawesome/fontawesome-all.min.css b/core/external/eo-framework/core/assets/css/fontawesome/fontawesome-all.min.css new file mode 100644 index 0000000..b4c34c6 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/fontawesome/fontawesome-all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/core/external/eo-framework/core/assets/css/index.php b/core/external/eo-framework/core/assets/css/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/index.php @@ -0,0 +1,2 @@ +div >div{ + background: #F5F5F5; + border-top:1px solid #DDDDDD; + color: #666666; + font-size: 12px; + text-align: center; + border-collapse:collapse; + cursor:pointer; + border-bottom-width: 0; + height:25px; + line-height:25px; +} + +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child{ + border-top-width: 0; +} +.xdsoft_datetimepicker .xdsoft_today_button:hover, +.xdsoft_datetimepicker .xdsoft_next:hover, +.xdsoft_datetimepicker .xdsoft_prev:hover { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; +} +.xdsoft_datetimepicker .xdsoft_label{ + display: inline; + position: relative; + z-index: 9999; + margin: 0; + padding: 5px 3px; + font-size: 14px; + line-height: 20px; + font-weight: bold; + background-color: #fff; + float:left; + width:182px; + text-align:center; + cursor:pointer; +} +.xdsoft_datetimepicker .xdsoft_label:hover>span{ + text-decoration:underline; +} +.xdsoft_datetimepicker .xdsoft_label:hover i{ + opacity:1.0; +} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select{ + border:1px solid #ccc; + position:absolute; + right: 0; + top:30px; + z-index:101; + display:none; + background:#fff; + max-height:160px; + overflow-y:hidden; +} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{right:-7px;} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{right:2px;} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover{ + color: #fff; + background: #ff8000; +} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option{ + padding:2px 10px 2px 5px; + text-decoration:none !important; +} +.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current{ + background: #33AAFF; + box-shadow: #178FE5 0 1px 3px 0 inset; + color:#fff; + font-weight: 700; +} +.xdsoft_datetimepicker .xdsoft_month{ + width:100px; + text-align:right; +} +.xdsoft_datetimepicker .xdsoft_calendar{ + clear:both; +} +.xdsoft_datetimepicker .xdsoft_year{ + width: 48px; + margin-left: 5px; +} +.xdsoft_datetimepicker .xdsoft_calendar table{ + border-collapse:collapse; + width:100%; + +} +.xdsoft_datetimepicker .xdsoft_calendar td > div{ + padding-right:5px; +} +.xdsoft_datetimepicker .xdsoft_calendar th{ + height: 25px; +} +.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{ + width:14.2857142%; + background: #F5F5F5; + border:1px solid #DDDDDD; + color: #666666; + font-size: 12px; + text-align: right; + vertical-align: middle; + padding: 0; + border-collapse:collapse; + cursor:pointer; + height: 25px; +} +.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th{ + width:12.5%; +} +.xdsoft_datetimepicker .xdsoft_calendar th{ + background: #F1F1F1; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{ + color:#33AAFF; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{ + background: #33AAFF; + box-shadow: #178FE5 0 1px 3px 0 inset; + color:#fff; + font-weight: 700; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month, +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled, +.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled{ + opacity:0.5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{ + opacity:0.2; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)"; +} +.xdsoft_datetimepicker .xdsoft_calendar td:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover{ + color: #fff !important; + background: #ff8000 !important; + box-shadow: none !important; +} +.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover, +.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover{ + color: inherit !important; + background: inherit !important; + box-shadow: inherit !important; +} +.xdsoft_datetimepicker .xdsoft_calendar th{ + font-weight: 700; + text-align: center; + color: #999; + cursor:default; +} +.xdsoft_datetimepicker .xdsoft_copyright{ color:#ccc !important; font-size:10px;clear:both;float:none;margin-left:8px;} +.xdsoft_datetimepicker .xdsoft_copyright a{ color:#eee !important;} +.xdsoft_datetimepicker .xdsoft_copyright a:hover{ color:#aaa !important;} + + +.xdsoft_time_box{ + position:relative; + border:1px solid #ccc; +} +.xdsoft_scrollbar >.xdsoft_scroller{ + background:#ccc !important; + height:20px; + border-radius:3px; +} +.xdsoft_scrollbar{ + position:absolute; + width:7px; + right: 0; + top: 0; + bottom: 0; + cursor:pointer; +} +.xdsoft_scroller_box{ +position:relative; +} + + +.xdsoft_datetimepicker.xdsoft_dark{ + box-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506); + background: #000000; + border-bottom: 1px solid #444444; + border-left: 1px solid #333333; + border-right: 1px solid #333333; + border-top: 1px solid #333333; + color: #cccccc; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box{ + border-bottom:1px solid #222222; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div{ + background: #0a0a0a; + border-top:1px solid #222222; + color: #999999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label{ + background-color: #000; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select{ + border:1px solid #333; + background:#000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover{ + color: #000; + background: #007fff; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current{ + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color:#000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button{ + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==); +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{ + background: #0a0a0a; + border:1px solid #222222; + color: #999999; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{ + background: #0e0e0e; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today{ + color:#cc5500; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{ + background: #cc5500; + box-shadow: #b03e00 0 1px 3px 0 inset; + color:#000; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover, +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover{ + color: #000 !important; + background: #007fff !important; +} + +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th{ + color: #666; +} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright{ color:#333 !important;} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a{ color:#111 !important;} +.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover{ color:#555 !important;} + + +.xdsoft_dark .xdsoft_time_box{ + border:1px solid #333; +} +.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller{ + background:#333 !important; +} diff --git a/core/external/eo-framework/core/assets/css/scss/_normalize.scss b/core/external/eo-framework/core/assets/css/scss/_normalize.scss new file mode 100644 index 0000000..2c03b80 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/_normalize.scss @@ -0,0 +1,211 @@ +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, +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; + box-shadow: none; +} + +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; +} + +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; +} diff --git a/core/external/eo-framework/core/assets/css/scss/core/_core.scss b/core/external/eo-framework/core/assets/css/scss/core/_core.scss new file mode 100644 index 0000000..c515688 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/core/_core.scss @@ -0,0 +1,2 @@ +@import "custom-menu/custom-menu"; +@import "structure/structure"; diff --git a/core/external/eo-framework/core/assets/css/scss/core/custom-menu/_custom-menu.scss b/core/external/eo-framework/core/assets/css/scss/core/custom-menu/_custom-menu.scss new file mode 100644 index 0000000..39e1798 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/core/custom-menu/_custom-menu.scss @@ -0,0 +1,158 @@ +.eo-custom-page #adminmenuwrap, +.eo-custom-page #wpadminbar, +.eo-custom-page #adminmenumain, +.eo-custom-page #screen-meta-links, +.eo-custom-page #wpfooter { + display: none !important; +} + +body.eo-custom-page { + &.admin-bar { + position: relative; + top: -32px; + } + + #wpcontent { + margin-left: 0 !important; + padding-left: 0; + } + .nav-wrap { + display: flex; + flex-direction: column; + position: absolute; + left: 0; + top: 0; + width: 200px; + height: 100%; + transition: all 0.2s ease-out; + + &::before { + display: block; + content: ''; + position: fixed; + top: 0; + left: 0; + width: 200px; + height: 100%; + background: #1c1d1b; + z-index: -1; + transition: all 0.2s ease-out; + } + + #logo { + padding: 0.5em; + text-align: center; + border-bottom: 1px solid rgba(255,255,255,0.1); + + h1 { + height: 100px; + display: flex; + margin: 0; + } + a { + margin: auto; + } + img { + max-width: 50px; + width: 100%; + transition: all 0.2s ease-out; + } + } + + .nav-menu.nav-bottom { + margin-top: 2em; + } + + &.wrap-reduce { + width: 40px; + &::before { + width: 40px; + } + .nav-menu.nav-bottom .item { + padding: 0; + } + } + + } +} + +/** Menu elements */ +body.eo-custom-page .nav-menu .item { + color: #fff; + text-decoration: none; + font-size: 14px; + + &:focus { + outline: none; + } + + &:hover > div { + background: rgba(255,255,255,0.2); + } + + &.item-active > div { + background: rgba(255,255,255,0.2); + } + + > div { + padding: 0.7em; + border-bottom: 1px solid rgba(255,255,255,0.1); + transition: all 0.2s ease-out; + display: flex; + } + .nav-icon { + margin-right: 0.6em; + min-width: 20px; + line-height: 1.3; + } + .item-label { + transition: all 0.2s ease-out; + white-space: nowrap; + } +} +body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item { + > div { + text-align: center; + } + .item-label { + opacity: 0; + pointer-events: none; + transform: translateX(-10px); + } + .nav-icon { + margin-right: 0; + } +} + +/** Menu du bas */ +body.eo-custom-page .nav-menu.nav-bottom .item { + padding: 0 0.6em; + display: block; + margin-bottom: 0.5em; + + > div { + border-bottom: 0; + } + &:not(.minimize-menu) { + > div { + background: rgba(255, 255, 255, 0.2); + color: #fff; + border-radius: 6px; + } + &:hover > div { + background: rgba(255,255,255,0.4); + } + } + &.minimize-menu { + > div { + color: rgba(255,255,255,0.6); + } + &:hover > div { + background: none; + color: rgba(255,255,255,1); + } + .item-label { + transition: none; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/core/structure/_structure.scss b/core/external/eo-framework/core/assets/css/scss/core/structure/_structure.scss new file mode 100644 index 0000000..684b1d3 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/core/structure/_structure.scss @@ -0,0 +1,67 @@ +body.eo-custom-page .content-wrap { + margin-left: 200px; + padding: 0; + transition: all 0.2s ease-out; + + &.content-reduce { + margin-left: 40px; + } + + #top-header { + display: flex; + flex-wrap: wrap; + padding: 1em; + border-bottom: 1px solid rgba(0,0,0,0.2); + + ul, li { + margin: 0; + } + .nav-left { + display: flex; + max-width: 70%; + margin: auto 0 auto 0; + + > * { + margin-top: auto; + margin-bottom: auto; + } + } + .nav-right { + max-width: 30%; + margin: auto 0 auto auto; + } + .nav-bottom { + width: 100%; + margin-top: 0.5em; + } + } + #top-header .nav-left { + .page-title { + font-size: 22px; + margin-right: 0.6em; + } + .nav-header { + li { + margin: 0; + } + } + } + + #top-header .nav-right { + .navigation-avatar img { + border-radius: 50%; + } + } + + .eo-wrap { + margin: 0; + } + .wpeo-wrap { + margin: 0; + padding: 1em; + } + .wpeo-box { + background: #fff; + padding: 1.4em; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/fontawesome/_core.scss b/core/external/eo-framework/core/assets/css/scss/fontawesome/_core.scss new file mode 100644 index 0000000..a4ee7e8 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/fontawesome/_core.scss @@ -0,0 +1,20 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix}, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +%fa-icon { + @include fa-icon; +} diff --git a/core/external/eo-framework/core/assets/css/scss/fontawesome/_fontawesome.scss b/core/external/eo-framework/core/assets/css/scss/fontawesome/_fontawesome.scss new file mode 100644 index 0000000..35606cc --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/fontawesome/_fontawesome.scss @@ -0,0 +1,7 @@ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +@import 'variables'; +@import 'mixins'; +@import 'core'; diff --git a/core/external/eo-framework/core/assets/css/scss/fontawesome/_mixins.scss b/core/external/eo-framework/core/assets/css/scss/fontawesome/_mixins.scss new file mode 100644 index 0000000..a9bba80 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/fontawesome/_mixins.scss @@ -0,0 +1,75 @@ +// Mixins +// -------------------------- + +@mixin fa-icon( $type: 'solid' ) { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; + + @if $type == 'solid' { + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 900; + } @else if $type == 'regular' { + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 400; + } @else if $type == 'light' { + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 100; + } @else if $type == 'brands' { + font-family: 'Font Awesome 5 Brands'; + } @else if $type == 'duotone' { + font-family: 'Font Awesome 5 Duotone'; + } @else { + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 900; + } +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/fontawesome/_variables.scss b/core/external/eo-framework/core/assets/css/scss/fontawesome/_variables.scss new file mode 100644 index 0000000..eb625f1 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/fontawesome/_variables.scss @@ -0,0 +1,1383 @@ +// Variables +// -------------------------- + +$fa-font-path: "../webfonts" !default; +$fa-font-size-base: 16px !default; +$fa-font-display: auto !default; +$fa-css-prefix: fa !default; +$fa-version: "5.8.2" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: 2em !default; +$fa-fw-width: (20em / 16); + +// Convenience function used to set content property +@function fa-content($fa-var) { + @return unquote("\"#{ $fa-var }\""); +} + +$fa-var-500px: \f26e; +$fa-var-accessible-icon: \f368; +$fa-var-accusoft: \f369; +$fa-var-acquisitions-incorporated: \f6af; +$fa-var-ad: \f641; +$fa-var-address-book: \f2b9; +$fa-var-address-card: \f2bb; +$fa-var-adjust: \f042; +$fa-var-adn: \f170; +$fa-var-adobe: \f778; +$fa-var-adversal: \f36a; +$fa-var-affiliatetheme: \f36b; +$fa-var-air-freshener: \f5d0; +$fa-var-airbnb: \f834; +$fa-var-algolia: \f36c; +$fa-var-align-center: \f037; +$fa-var-align-justify: \f039; +$fa-var-align-left: \f036; +$fa-var-align-right: \f038; +$fa-var-alipay: \f642; +$fa-var-allergies: \f461; +$fa-var-amazon: \f270; +$fa-var-amazon-pay: \f42c; +$fa-var-ambulance: \f0f9; +$fa-var-american-sign-language-interpreting: \f2a3; +$fa-var-amilia: \f36d; +$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-angry: \f556; +$fa-var-angrycreative: \f36e; +$fa-var-angular: \f420; +$fa-var-ankh: \f644; +$fa-var-app-store: \f36f; +$fa-var-app-store-ios: \f370; +$fa-var-apper: \f371; +$fa-var-apple: \f179; +$fa-var-apple-alt: \f5d1; +$fa-var-apple-pay: \f415; +$fa-var-archive: \f187; +$fa-var-archway: \f557; +$fa-var-arrow-alt-circle-down: \f358; +$fa-var-arrow-alt-circle-left: \f359; +$fa-var-arrow-alt-circle-right: \f35a; +$fa-var-arrow-alt-circle-up: \f35b; +$fa-var-arrow-circle-down: \f0ab; +$fa-var-arrow-circle-left: \f0a8; +$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-alt: \f0b2; +$fa-var-arrows-alt-h: \f337; +$fa-var-arrows-alt-v: \f338; +$fa-var-artstation: \f77a; +$fa-var-assistive-listening-systems: \f2a2; +$fa-var-asterisk: \f069; +$fa-var-asymmetrik: \f372; +$fa-var-at: \f1fa; +$fa-var-atlas: \f558; +$fa-var-atlassian: \f77b; +$fa-var-atom: \f5d2; +$fa-var-audible: \f373; +$fa-var-audio-description: \f29e; +$fa-var-autoprefixer: \f41c; +$fa-var-avianex: \f374; +$fa-var-aviato: \f421; +$fa-var-award: \f559; +$fa-var-aws: \f375; +$fa-var-baby: \f77c; +$fa-var-baby-carriage: \f77d; +$fa-var-backspace: \f55a; +$fa-var-backward: \f04a; +$fa-var-bacon: \f7e5; +$fa-var-balance-scale: \f24e; +$fa-var-ban: \f05e; +$fa-var-band-aid: \f462; +$fa-var-bandcamp: \f2d5; +$fa-var-barcode: \f02a; +$fa-var-bars: \f0c9; +$fa-var-baseball-ball: \f433; +$fa-var-basketball-ball: \f434; +$fa-var-bath: \f2cd; +$fa-var-battery-empty: \f244; +$fa-var-battery-full: \f240; +$fa-var-battery-half: \f242; +$fa-var-battery-quarter: \f243; +$fa-var-battery-three-quarters: \f241; +$fa-var-battle-net: \f835; +$fa-var-bed: \f236; +$fa-var-beer: \f0fc; +$fa-var-behance: \f1b4; +$fa-var-behance-square: \f1b5; +$fa-var-bell: \f0f3; +$fa-var-bell-slash: \f1f6; +$fa-var-bezier-curve: \f55b; +$fa-var-bible: \f647; +$fa-var-bicycle: \f206; +$fa-var-bimobject: \f378; +$fa-var-binoculars: \f1e5; +$fa-var-biohazard: \f780; +$fa-var-birthday-cake: \f1fd; +$fa-var-bitbucket: \f171; +$fa-var-bitcoin: \f379; +$fa-var-bity: \f37a; +$fa-var-black-tie: \f27e; +$fa-var-blackberry: \f37b; +$fa-var-blender: \f517; +$fa-var-blender-phone: \f6b6; +$fa-var-blind: \f29d; +$fa-var-blog: \f781; +$fa-var-blogger: \f37c; +$fa-var-blogger-b: \f37d; +$fa-var-bluetooth: \f293; +$fa-var-bluetooth-b: \f294; +$fa-var-bold: \f032; +$fa-var-bolt: \f0e7; +$fa-var-bomb: \f1e2; +$fa-var-bone: \f5d7; +$fa-var-bong: \f55c; +$fa-var-book: \f02d; +$fa-var-book-dead: \f6b7; +$fa-var-book-medical: \f7e6; +$fa-var-book-open: \f518; +$fa-var-book-reader: \f5da; +$fa-var-bookmark: \f02e; +$fa-var-bootstrap: \f836; +$fa-var-bowling-ball: \f436; +$fa-var-box: \f466; +$fa-var-box-open: \f49e; +$fa-var-boxes: \f468; +$fa-var-braille: \f2a1; +$fa-var-brain: \f5dc; +$fa-var-bread-slice: \f7ec; +$fa-var-briefcase: \f0b1; +$fa-var-briefcase-medical: \f469; +$fa-var-broadcast-tower: \f519; +$fa-var-broom: \f51a; +$fa-var-brush: \f55d; +$fa-var-btc: \f15a; +$fa-var-buffer: \f837; +$fa-var-bug: \f188; +$fa-var-building: \f1ad; +$fa-var-bullhorn: \f0a1; +$fa-var-bullseye: \f140; +$fa-var-burn: \f46a; +$fa-var-buromobelexperte: \f37f; +$fa-var-bus: \f207; +$fa-var-bus-alt: \f55e; +$fa-var-business-time: \f64a; +$fa-var-buysellads: \f20d; +$fa-var-calculator: \f1ec; +$fa-var-calendar: \f133; +$fa-var-calendar-alt: \f073; +$fa-var-calendar-check: \f274; +$fa-var-calendar-day: \f783; +$fa-var-calendar-minus: \f272; +$fa-var-calendar-plus: \f271; +$fa-var-calendar-times: \f273; +$fa-var-calendar-week: \f784; +$fa-var-camera: \f030; +$fa-var-camera-retro: \f083; +$fa-var-campground: \f6bb; +$fa-var-canadian-maple-leaf: \f785; +$fa-var-candy-cane: \f786; +$fa-var-cannabis: \f55f; +$fa-var-capsules: \f46b; +$fa-var-car: \f1b9; +$fa-var-car-alt: \f5de; +$fa-var-car-battery: \f5df; +$fa-var-car-crash: \f5e1; +$fa-var-car-side: \f5e4; +$fa-var-caret-down: \f0d7; +$fa-var-caret-left: \f0d9; +$fa-var-caret-right: \f0da; +$fa-var-caret-square-down: \f150; +$fa-var-caret-square-left: \f191; +$fa-var-caret-square-right: \f152; +$fa-var-caret-square-up: \f151; +$fa-var-caret-up: \f0d8; +$fa-var-carrot: \f787; +$fa-var-cart-arrow-down: \f218; +$fa-var-cart-plus: \f217; +$fa-var-cash-register: \f788; +$fa-var-cat: \f6be; +$fa-var-cc-amazon-pay: \f42d; +$fa-var-cc-amex: \f1f3; +$fa-var-cc-apple-pay: \f416; +$fa-var-cc-diners-club: \f24c; +$fa-var-cc-discover: \f1f2; +$fa-var-cc-jcb: \f24b; +$fa-var-cc-mastercard: \f1f1; +$fa-var-cc-paypal: \f1f4; +$fa-var-cc-stripe: \f1f5; +$fa-var-cc-visa: \f1f0; +$fa-var-centercode: \f380; +$fa-var-centos: \f789; +$fa-var-certificate: \f0a3; +$fa-var-chair: \f6c0; +$fa-var-chalkboard: \f51b; +$fa-var-chalkboard-teacher: \f51c; +$fa-var-charging-station: \f5e7; +$fa-var-chart-area: \f1fe; +$fa-var-chart-bar: \f080; +$fa-var-chart-line: \f201; +$fa-var-chart-pie: \f200; +$fa-var-check: \f00c; +$fa-var-check-circle: \f058; +$fa-var-check-double: \f560; +$fa-var-check-square: \f14a; +$fa-var-cheese: \f7ef; +$fa-var-chess: \f439; +$fa-var-chess-bishop: \f43a; +$fa-var-chess-board: \f43c; +$fa-var-chess-king: \f43f; +$fa-var-chess-knight: \f441; +$fa-var-chess-pawn: \f443; +$fa-var-chess-queen: \f445; +$fa-var-chess-rook: \f447; +$fa-var-chevron-circle-down: \f13a; +$fa-var-chevron-circle-left: \f137; +$fa-var-chevron-circle-right: \f138; +$fa-var-chevron-circle-up: \f139; +$fa-var-chevron-down: \f078; +$fa-var-chevron-left: \f053; +$fa-var-chevron-right: \f054; +$fa-var-chevron-up: \f077; +$fa-var-child: \f1ae; +$fa-var-chrome: \f268; +$fa-var-chromecast: \f838; +$fa-var-church: \f51d; +$fa-var-circle: \f111; +$fa-var-circle-notch: \f1ce; +$fa-var-city: \f64f; +$fa-var-clinic-medical: \f7f2; +$fa-var-clipboard: \f328; +$fa-var-clipboard-check: \f46c; +$fa-var-clipboard-list: \f46d; +$fa-var-clock: \f017; +$fa-var-clone: \f24d; +$fa-var-closed-captioning: \f20a; +$fa-var-cloud: \f0c2; +$fa-var-cloud-download-alt: \f381; +$fa-var-cloud-meatball: \f73b; +$fa-var-cloud-moon: \f6c3; +$fa-var-cloud-moon-rain: \f73c; +$fa-var-cloud-rain: \f73d; +$fa-var-cloud-showers-heavy: \f740; +$fa-var-cloud-sun: \f6c4; +$fa-var-cloud-sun-rain: \f743; +$fa-var-cloud-upload-alt: \f382; +$fa-var-cloudscale: \f383; +$fa-var-cloudsmith: \f384; +$fa-var-cloudversify: \f385; +$fa-var-cocktail: \f561; +$fa-var-code: \f121; +$fa-var-code-branch: \f126; +$fa-var-codepen: \f1cb; +$fa-var-codiepie: \f284; +$fa-var-coffee: \f0f4; +$fa-var-cog: \f013; +$fa-var-cogs: \f085; +$fa-var-coins: \f51e; +$fa-var-columns: \f0db; +$fa-var-comment: \f075; +$fa-var-comment-alt: \f27a; +$fa-var-comment-dollar: \f651; +$fa-var-comment-dots: \f4ad; +$fa-var-comment-medical: \f7f5; +$fa-var-comment-slash: \f4b3; +$fa-var-comments: \f086; +$fa-var-comments-dollar: \f653; +$fa-var-compact-disc: \f51f; +$fa-var-compass: \f14e; +$fa-var-compress: \f066; +$fa-var-compress-arrows-alt: \f78c; +$fa-var-concierge-bell: \f562; +$fa-var-confluence: \f78d; +$fa-var-connectdevelop: \f20e; +$fa-var-contao: \f26d; +$fa-var-cookie: \f563; +$fa-var-cookie-bite: \f564; +$fa-var-copy: \f0c5; +$fa-var-copyright: \f1f9; +$fa-var-couch: \f4b8; +$fa-var-cpanel: \f388; +$fa-var-creative-commons: \f25e; +$fa-var-creative-commons-by: \f4e7; +$fa-var-creative-commons-nc: \f4e8; +$fa-var-creative-commons-nc-eu: \f4e9; +$fa-var-creative-commons-nc-jp: \f4ea; +$fa-var-creative-commons-nd: \f4eb; +$fa-var-creative-commons-pd: \f4ec; +$fa-var-creative-commons-pd-alt: \f4ed; +$fa-var-creative-commons-remix: \f4ee; +$fa-var-creative-commons-sa: \f4ef; +$fa-var-creative-commons-sampling: \f4f0; +$fa-var-creative-commons-sampling-plus: \f4f1; +$fa-var-creative-commons-share: \f4f2; +$fa-var-creative-commons-zero: \f4f3; +$fa-var-credit-card: \f09d; +$fa-var-critical-role: \f6c9; +$fa-var-crop: \f125; +$fa-var-crop-alt: \f565; +$fa-var-cross: \f654; +$fa-var-crosshairs: \f05b; +$fa-var-crow: \f520; +$fa-var-crown: \f521; +$fa-var-crutch: \f7f7; +$fa-var-css3: \f13c; +$fa-var-css3-alt: \f38b; +$fa-var-cube: \f1b2; +$fa-var-cubes: \f1b3; +$fa-var-cut: \f0c4; +$fa-var-cuttlefish: \f38c; +$fa-var-d-and-d: \f38d; +$fa-var-d-and-d-beyond: \f6ca; +$fa-var-dashcube: \f210; +$fa-var-database: \f1c0; +$fa-var-deaf: \f2a4; +$fa-var-delicious: \f1a5; +$fa-var-democrat: \f747; +$fa-var-deploydog: \f38e; +$fa-var-deskpro: \f38f; +$fa-var-desktop: \f108; +$fa-var-dev: \f6cc; +$fa-var-deviantart: \f1bd; +$fa-var-dharmachakra: \f655; +$fa-var-dhl: \f790; +$fa-var-diagnoses: \f470; +$fa-var-diaspora: \f791; +$fa-var-dice: \f522; +$fa-var-dice-d20: \f6cf; +$fa-var-dice-d6: \f6d1; +$fa-var-dice-five: \f523; +$fa-var-dice-four: \f524; +$fa-var-dice-one: \f525; +$fa-var-dice-six: \f526; +$fa-var-dice-three: \f527; +$fa-var-dice-two: \f528; +$fa-var-digg: \f1a6; +$fa-var-digital-ocean: \f391; +$fa-var-digital-tachograph: \f566; +$fa-var-directions: \f5eb; +$fa-var-discord: \f392; +$fa-var-discourse: \f393; +$fa-var-divide: \f529; +$fa-var-dizzy: \f567; +$fa-var-dna: \f471; +$fa-var-dochub: \f394; +$fa-var-docker: \f395; +$fa-var-dog: \f6d3; +$fa-var-dollar-sign: \f155; +$fa-var-dolly: \f472; +$fa-var-dolly-flatbed: \f474; +$fa-var-donate: \f4b9; +$fa-var-door-closed: \f52a; +$fa-var-door-open: \f52b; +$fa-var-dot-circle: \f192; +$fa-var-dove: \f4ba; +$fa-var-download: \f019; +$fa-var-draft2digital: \f396; +$fa-var-drafting-compass: \f568; +$fa-var-dragon: \f6d5; +$fa-var-draw-polygon: \f5ee; +$fa-var-dribbble: \f17d; +$fa-var-dribbble-square: \f397; +$fa-var-dropbox: \f16b; +$fa-var-drum: \f569; +$fa-var-drum-steelpan: \f56a; +$fa-var-drumstick-bite: \f6d7; +$fa-var-drupal: \f1a9; +$fa-var-dumbbell: \f44b; +$fa-var-dumpster: \f793; +$fa-var-dumpster-fire: \f794; +$fa-var-dungeon: \f6d9; +$fa-var-dyalog: \f399; +$fa-var-earlybirds: \f39a; +$fa-var-ebay: \f4f4; +$fa-var-edge: \f282; +$fa-var-edit: \f044; +$fa-var-egg: \f7fb; +$fa-var-eject: \f052; +$fa-var-elementor: \f430; +$fa-var-ellipsis-h: \f141; +$fa-var-ellipsis-v: \f142; +$fa-var-ello: \f5f1; +$fa-var-ember: \f423; +$fa-var-empire: \f1d1; +$fa-var-envelope: \f0e0; +$fa-var-envelope-open: \f2b6; +$fa-var-envelope-open-text: \f658; +$fa-var-envelope-square: \f199; +$fa-var-envira: \f299; +$fa-var-equals: \f52c; +$fa-var-eraser: \f12d; +$fa-var-erlang: \f39d; +$fa-var-ethereum: \f42e; +$fa-var-ethernet: \f796; +$fa-var-etsy: \f2d7; +$fa-var-euro-sign: \f153; +$fa-var-evernote: \f839; +$fa-var-exchange-alt: \f362; +$fa-var-exclamation: \f12a; +$fa-var-exclamation-circle: \f06a; +$fa-var-exclamation-triangle: \f071; +$fa-var-expand: \f065; +$fa-var-expand-arrows-alt: \f31e; +$fa-var-expeditedssl: \f23e; +$fa-var-external-link-alt: \f35d; +$fa-var-external-link-square-alt: \f360; +$fa-var-eye: \f06e; +$fa-var-eye-dropper: \f1fb; +$fa-var-eye-slash: \f070; +$fa-var-facebook: \f09a; +$fa-var-facebook-f: \f39e; +$fa-var-facebook-messenger: \f39f; +$fa-var-facebook-square: \f082; +$fa-var-fantasy-flight-games: \f6dc; +$fa-var-fast-backward: \f049; +$fa-var-fast-forward: \f050; +$fa-var-fax: \f1ac; +$fa-var-feather: \f52d; +$fa-var-feather-alt: \f56b; +$fa-var-fedex: \f797; +$fa-var-fedora: \f798; +$fa-var-female: \f182; +$fa-var-fighter-jet: \f0fb; +$fa-var-figma: \f799; +$fa-var-file: \f15b; +$fa-var-file-alt: \f15c; +$fa-var-file-archive: \f1c6; +$fa-var-file-audio: \f1c7; +$fa-var-file-code: \f1c9; +$fa-var-file-contract: \f56c; +$fa-var-file-csv: \f6dd; +$fa-var-file-download: \f56d; +$fa-var-file-excel: \f1c3; +$fa-var-file-export: \f56e; +$fa-var-file-image: \f1c5; +$fa-var-file-import: \f56f; +$fa-var-file-invoice: \f570; +$fa-var-file-invoice-dollar: \f571; +$fa-var-file-medical: \f477; +$fa-var-file-medical-alt: \f478; +$fa-var-file-pdf: \f1c1; +$fa-var-file-powerpoint: \f1c4; +$fa-var-file-prescription: \f572; +$fa-var-file-signature: \f573; +$fa-var-file-upload: \f574; +$fa-var-file-video: \f1c8; +$fa-var-file-word: \f1c2; +$fa-var-fill: \f575; +$fa-var-fill-drip: \f576; +$fa-var-film: \f008; +$fa-var-filter: \f0b0; +$fa-var-fingerprint: \f577; +$fa-var-fire: \f06d; +$fa-var-fire-alt: \f7e4; +$fa-var-fire-extinguisher: \f134; +$fa-var-firefox: \f269; +$fa-var-first-aid: \f479; +$fa-var-first-order: \f2b0; +$fa-var-first-order-alt: \f50a; +$fa-var-firstdraft: \f3a1; +$fa-var-fish: \f578; +$fa-var-fist-raised: \f6de; +$fa-var-flag: \f024; +$fa-var-flag-checkered: \f11e; +$fa-var-flag-usa: \f74d; +$fa-var-flask: \f0c3; +$fa-var-flickr: \f16e; +$fa-var-flipboard: \f44d; +$fa-var-flushed: \f579; +$fa-var-fly: \f417; +$fa-var-folder: \f07b; +$fa-var-folder-minus: \f65d; +$fa-var-folder-open: \f07c; +$fa-var-folder-plus: \f65e; +$fa-var-font: \f031; +$fa-var-font-awesome: \f2b4; +$fa-var-font-awesome-alt: \f35c; +$fa-var-font-awesome-flag: \f425; +$fa-var-font-awesome-logo-full: \f4e6; +$fa-var-fonticons: \f280; +$fa-var-fonticons-fi: \f3a2; +$fa-var-football-ball: \f44e; +$fa-var-fort-awesome: \f286; +$fa-var-fort-awesome-alt: \f3a3; +$fa-var-forumbee: \f211; +$fa-var-forward: \f04e; +$fa-var-foursquare: \f180; +$fa-var-free-code-camp: \f2c5; +$fa-var-freebsd: \f3a4; +$fa-var-frog: \f52e; +$fa-var-frown: \f119; +$fa-var-frown-open: \f57a; +$fa-var-fulcrum: \f50b; +$fa-var-funnel-dollar: \f662; +$fa-var-futbol: \f1e3; +$fa-var-galactic-republic: \f50c; +$fa-var-galactic-senate: \f50d; +$fa-var-gamepad: \f11b; +$fa-var-gas-pump: \f52f; +$fa-var-gavel: \f0e3; +$fa-var-gem: \f3a5; +$fa-var-genderless: \f22d; +$fa-var-get-pocket: \f265; +$fa-var-gg: \f260; +$fa-var-gg-circle: \f261; +$fa-var-ghost: \f6e2; +$fa-var-gift: \f06b; +$fa-var-gifts: \f79c; +$fa-var-git: \f1d3; +$fa-var-git-alt: \f841; +$fa-var-git-square: \f1d2; +$fa-var-github: \f09b; +$fa-var-github-alt: \f113; +$fa-var-github-square: \f092; +$fa-var-gitkraken: \f3a6; +$fa-var-gitlab: \f296; +$fa-var-gitter: \f426; +$fa-var-glass-cheers: \f79f; +$fa-var-glass-martini: \f000; +$fa-var-glass-martini-alt: \f57b; +$fa-var-glass-whiskey: \f7a0; +$fa-var-glasses: \f530; +$fa-var-glide: \f2a5; +$fa-var-glide-g: \f2a6; +$fa-var-globe: \f0ac; +$fa-var-globe-africa: \f57c; +$fa-var-globe-americas: \f57d; +$fa-var-globe-asia: \f57e; +$fa-var-globe-europe: \f7a2; +$fa-var-gofore: \f3a7; +$fa-var-golf-ball: \f450; +$fa-var-goodreads: \f3a8; +$fa-var-goodreads-g: \f3a9; +$fa-var-google: \f1a0; +$fa-var-google-drive: \f3aa; +$fa-var-google-play: \f3ab; +$fa-var-google-plus: \f2b3; +$fa-var-google-plus-g: \f0d5; +$fa-var-google-plus-square: \f0d4; +$fa-var-google-wallet: \f1ee; +$fa-var-gopuram: \f664; +$fa-var-graduation-cap: \f19d; +$fa-var-gratipay: \f184; +$fa-var-grav: \f2d6; +$fa-var-greater-than: \f531; +$fa-var-greater-than-equal: \f532; +$fa-var-grimace: \f57f; +$fa-var-grin: \f580; +$fa-var-grin-alt: \f581; +$fa-var-grin-beam: \f582; +$fa-var-grin-beam-sweat: \f583; +$fa-var-grin-hearts: \f584; +$fa-var-grin-squint: \f585; +$fa-var-grin-squint-tears: \f586; +$fa-var-grin-stars: \f587; +$fa-var-grin-tears: \f588; +$fa-var-grin-tongue: \f589; +$fa-var-grin-tongue-squint: \f58a; +$fa-var-grin-tongue-wink: \f58b; +$fa-var-grin-wink: \f58c; +$fa-var-grip-horizontal: \f58d; +$fa-var-grip-lines: \f7a4; +$fa-var-grip-lines-vertical: \f7a5; +$fa-var-grip-vertical: \f58e; +$fa-var-gripfire: \f3ac; +$fa-var-grunt: \f3ad; +$fa-var-guitar: \f7a6; +$fa-var-gulp: \f3ae; +$fa-var-h-square: \f0fd; +$fa-var-hacker-news: \f1d4; +$fa-var-hacker-news-square: \f3af; +$fa-var-hackerrank: \f5f7; +$fa-var-hamburger: \f805; +$fa-var-hammer: \f6e3; +$fa-var-hamsa: \f665; +$fa-var-hand-holding: \f4bd; +$fa-var-hand-holding-heart: \f4be; +$fa-var-hand-holding-usd: \f4c0; +$fa-var-hand-lizard: \f258; +$fa-var-hand-middle-finger: \f806; +$fa-var-hand-paper: \f256; +$fa-var-hand-peace: \f25b; +$fa-var-hand-point-down: \f0a7; +$fa-var-hand-point-left: \f0a5; +$fa-var-hand-point-right: \f0a4; +$fa-var-hand-point-up: \f0a6; +$fa-var-hand-pointer: \f25a; +$fa-var-hand-rock: \f255; +$fa-var-hand-scissors: \f257; +$fa-var-hand-spock: \f259; +$fa-var-hands: \f4c2; +$fa-var-hands-helping: \f4c4; +$fa-var-handshake: \f2b5; +$fa-var-hanukiah: \f6e6; +$fa-var-hard-hat: \f807; +$fa-var-hashtag: \f292; +$fa-var-hat-wizard: \f6e8; +$fa-var-haykal: \f666; +$fa-var-hdd: \f0a0; +$fa-var-heading: \f1dc; +$fa-var-headphones: \f025; +$fa-var-headphones-alt: \f58f; +$fa-var-headset: \f590; +$fa-var-heart: \f004; +$fa-var-heart-broken: \f7a9; +$fa-var-heartbeat: \f21e; +$fa-var-helicopter: \f533; +$fa-var-highlighter: \f591; +$fa-var-hiking: \f6ec; +$fa-var-hippo: \f6ed; +$fa-var-hips: \f452; +$fa-var-hire-a-helper: \f3b0; +$fa-var-history: \f1da; +$fa-var-hockey-puck: \f453; +$fa-var-holly-berry: \f7aa; +$fa-var-home: \f015; +$fa-var-hooli: \f427; +$fa-var-hornbill: \f592; +$fa-var-horse: \f6f0; +$fa-var-horse-head: \f7ab; +$fa-var-hospital: \f0f8; +$fa-var-hospital-alt: \f47d; +$fa-var-hospital-symbol: \f47e; +$fa-var-hot-tub: \f593; +$fa-var-hotdog: \f80f; +$fa-var-hotel: \f594; +$fa-var-hotjar: \f3b1; +$fa-var-hourglass: \f254; +$fa-var-hourglass-end: \f253; +$fa-var-hourglass-half: \f252; +$fa-var-hourglass-start: \f251; +$fa-var-house-damage: \f6f1; +$fa-var-houzz: \f27c; +$fa-var-hryvnia: \f6f2; +$fa-var-html5: \f13b; +$fa-var-hubspot: \f3b2; +$fa-var-i-cursor: \f246; +$fa-var-ice-cream: \f810; +$fa-var-icicles: \f7ad; +$fa-var-id-badge: \f2c1; +$fa-var-id-card: \f2c2; +$fa-var-id-card-alt: \f47f; +$fa-var-igloo: \f7ae; +$fa-var-image: \f03e; +$fa-var-images: \f302; +$fa-var-imdb: \f2d8; +$fa-var-inbox: \f01c; +$fa-var-indent: \f03c; +$fa-var-industry: \f275; +$fa-var-infinity: \f534; +$fa-var-info: \f129; +$fa-var-info-circle: \f05a; +$fa-var-instagram: \f16d; +$fa-var-intercom: \f7af; +$fa-var-internet-explorer: \f26b; +$fa-var-invision: \f7b0; +$fa-var-ioxhost: \f208; +$fa-var-italic: \f033; +$fa-var-itch-io: \f83a; +$fa-var-itunes: \f3b4; +$fa-var-itunes-note: \f3b5; +$fa-var-java: \f4e4; +$fa-var-jedi: \f669; +$fa-var-jedi-order: \f50e; +$fa-var-jenkins: \f3b6; +$fa-var-jira: \f7b1; +$fa-var-joget: \f3b7; +$fa-var-joint: \f595; +$fa-var-joomla: \f1aa; +$fa-var-journal-whills: \f66a; +$fa-var-js: \f3b8; +$fa-var-js-square: \f3b9; +$fa-var-jsfiddle: \f1cc; +$fa-var-kaaba: \f66b; +$fa-var-kaggle: \f5fa; +$fa-var-key: \f084; +$fa-var-keybase: \f4f5; +$fa-var-keyboard: \f11c; +$fa-var-keycdn: \f3ba; +$fa-var-khanda: \f66d; +$fa-var-kickstarter: \f3bb; +$fa-var-kickstarter-k: \f3bc; +$fa-var-kiss: \f596; +$fa-var-kiss-beam: \f597; +$fa-var-kiss-wink-heart: \f598; +$fa-var-kiwi-bird: \f535; +$fa-var-korvue: \f42f; +$fa-var-landmark: \f66f; +$fa-var-language: \f1ab; +$fa-var-laptop: \f109; +$fa-var-laptop-code: \f5fc; +$fa-var-laptop-medical: \f812; +$fa-var-laravel: \f3bd; +$fa-var-lastfm: \f202; +$fa-var-lastfm-square: \f203; +$fa-var-laugh: \f599; +$fa-var-laugh-beam: \f59a; +$fa-var-laugh-squint: \f59b; +$fa-var-laugh-wink: \f59c; +$fa-var-layer-group: \f5fd; +$fa-var-leaf: \f06c; +$fa-var-leanpub: \f212; +$fa-var-lemon: \f094; +$fa-var-less: \f41d; +$fa-var-less-than: \f536; +$fa-var-less-than-equal: \f537; +$fa-var-level-down-alt: \f3be; +$fa-var-level-up-alt: \f3bf; +$fa-var-life-ring: \f1cd; +$fa-var-lightbulb: \f0eb; +$fa-var-line: \f3c0; +$fa-var-link: \f0c1; +$fa-var-linkedin: \f08c; +$fa-var-linkedin-in: \f0e1; +$fa-var-linode: \f2b8; +$fa-var-linux: \f17c; +$fa-var-lira-sign: \f195; +$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-lock-open: \f3c1; +$fa-var-long-arrow-alt-down: \f309; +$fa-var-long-arrow-alt-left: \f30a; +$fa-var-long-arrow-alt-right: \f30b; +$fa-var-long-arrow-alt-up: \f30c; +$fa-var-low-vision: \f2a8; +$fa-var-luggage-cart: \f59d; +$fa-var-lyft: \f3c3; +$fa-var-magento: \f3c4; +$fa-var-magic: \f0d0; +$fa-var-magnet: \f076; +$fa-var-mail-bulk: \f674; +$fa-var-mailchimp: \f59e; +$fa-var-male: \f183; +$fa-var-mandalorian: \f50f; +$fa-var-map: \f279; +$fa-var-map-marked: \f59f; +$fa-var-map-marked-alt: \f5a0; +$fa-var-map-marker: \f041; +$fa-var-map-marker-alt: \f3c5; +$fa-var-map-pin: \f276; +$fa-var-map-signs: \f277; +$fa-var-markdown: \f60f; +$fa-var-marker: \f5a1; +$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-mask: \f6fa; +$fa-var-mastodon: \f4f6; +$fa-var-maxcdn: \f136; +$fa-var-medal: \f5a2; +$fa-var-medapps: \f3c6; +$fa-var-medium: \f23a; +$fa-var-medium-m: \f3c7; +$fa-var-medkit: \f0fa; +$fa-var-medrt: \f3c8; +$fa-var-meetup: \f2e0; +$fa-var-megaport: \f5a3; +$fa-var-meh: \f11a; +$fa-var-meh-blank: \f5a4; +$fa-var-meh-rolling-eyes: \f5a5; +$fa-var-memory: \f538; +$fa-var-mendeley: \f7b3; +$fa-var-menorah: \f676; +$fa-var-mercury: \f223; +$fa-var-meteor: \f753; +$fa-var-microchip: \f2db; +$fa-var-microphone: \f130; +$fa-var-microphone-alt: \f3c9; +$fa-var-microphone-alt-slash: \f539; +$fa-var-microphone-slash: \f131; +$fa-var-microscope: \f610; +$fa-var-microsoft: \f3ca; +$fa-var-minus: \f068; +$fa-var-minus-circle: \f056; +$fa-var-minus-square: \f146; +$fa-var-mitten: \f7b5; +$fa-var-mix: \f3cb; +$fa-var-mixcloud: \f289; +$fa-var-mizuni: \f3cc; +$fa-var-mobile: \f10b; +$fa-var-mobile-alt: \f3cd; +$fa-var-modx: \f285; +$fa-var-monero: \f3d0; +$fa-var-money-bill: \f0d6; +$fa-var-money-bill-alt: \f3d1; +$fa-var-money-bill-wave: \f53a; +$fa-var-money-bill-wave-alt: \f53b; +$fa-var-money-check: \f53c; +$fa-var-money-check-alt: \f53d; +$fa-var-monument: \f5a6; +$fa-var-moon: \f186; +$fa-var-mortar-pestle: \f5a7; +$fa-var-mosque: \f678; +$fa-var-motorcycle: \f21c; +$fa-var-mountain: \f6fc; +$fa-var-mouse-pointer: \f245; +$fa-var-mug-hot: \f7b6; +$fa-var-music: \f001; +$fa-var-napster: \f3d2; +$fa-var-neos: \f612; +$fa-var-network-wired: \f6ff; +$fa-var-neuter: \f22c; +$fa-var-newspaper: \f1ea; +$fa-var-nimblr: \f5a8; +$fa-var-nintendo-switch: \f418; +$fa-var-node: \f419; +$fa-var-node-js: \f3d3; +$fa-var-not-equal: \f53e; +$fa-var-notes-medical: \f481; +$fa-var-npm: \f3d4; +$fa-var-ns8: \f3d5; +$fa-var-nutritionix: \f3d6; +$fa-var-object-group: \f247; +$fa-var-object-ungroup: \f248; +$fa-var-odnoklassniki: \f263; +$fa-var-odnoklassniki-square: \f264; +$fa-var-oil-can: \f613; +$fa-var-old-republic: \f510; +$fa-var-om: \f679; +$fa-var-opencart: \f23d; +$fa-var-openid: \f19b; +$fa-var-opera: \f26a; +$fa-var-optin-monster: \f23c; +$fa-var-osi: \f41a; +$fa-var-otter: \f700; +$fa-var-outdent: \f03b; +$fa-var-page4: \f3d7; +$fa-var-pagelines: \f18c; +$fa-var-pager: \f815; +$fa-var-paint-brush: \f1fc; +$fa-var-paint-roller: \f5aa; +$fa-var-palette: \f53f; +$fa-var-palfed: \f3d8; +$fa-var-pallet: \f482; +$fa-var-paper-plane: \f1d8; +$fa-var-paperclip: \f0c6; +$fa-var-parachute-box: \f4cd; +$fa-var-paragraph: \f1dd; +$fa-var-parking: \f540; +$fa-var-passport: \f5ab; +$fa-var-pastafarianism: \f67b; +$fa-var-paste: \f0ea; +$fa-var-patreon: \f3d9; +$fa-var-pause: \f04c; +$fa-var-pause-circle: \f28b; +$fa-var-paw: \f1b0; +$fa-var-paypal: \f1ed; +$fa-var-peace: \f67c; +$fa-var-pen: \f304; +$fa-var-pen-alt: \f305; +$fa-var-pen-fancy: \f5ac; +$fa-var-pen-nib: \f5ad; +$fa-var-pen-square: \f14b; +$fa-var-pencil-alt: \f303; +$fa-var-pencil-ruler: \f5ae; +$fa-var-penny-arcade: \f704; +$fa-var-people-carry: \f4ce; +$fa-var-pepper-hot: \f816; +$fa-var-percent: \f295; +$fa-var-percentage: \f541; +$fa-var-periscope: \f3da; +$fa-var-person-booth: \f756; +$fa-var-phabricator: \f3db; +$fa-var-phoenix-framework: \f3dc; +$fa-var-phoenix-squadron: \f511; +$fa-var-phone: \f095; +$fa-var-phone-slash: \f3dd; +$fa-var-phone-square: \f098; +$fa-var-phone-volume: \f2a0; +$fa-var-php: \f457; +$fa-var-pied-piper: \f2ae; +$fa-var-pied-piper-alt: \f1a8; +$fa-var-pied-piper-hat: \f4e5; +$fa-var-pied-piper-pp: \f1a7; +$fa-var-piggy-bank: \f4d3; +$fa-var-pills: \f484; +$fa-var-pinterest: \f0d2; +$fa-var-pinterest-p: \f231; +$fa-var-pinterest-square: \f0d3; +$fa-var-pizza-slice: \f818; +$fa-var-place-of-worship: \f67f; +$fa-var-plane: \f072; +$fa-var-plane-arrival: \f5af; +$fa-var-plane-departure: \f5b0; +$fa-var-play: \f04b; +$fa-var-play-circle: \f144; +$fa-var-playstation: \f3df; +$fa-var-plug: \f1e6; +$fa-var-plus: \f067; +$fa-var-plus-circle: \f055; +$fa-var-plus-square: \f0fe; +$fa-var-podcast: \f2ce; +$fa-var-poll: \f681; +$fa-var-poll-h: \f682; +$fa-var-poo: \f2fe; +$fa-var-poo-storm: \f75a; +$fa-var-poop: \f619; +$fa-var-portrait: \f3e0; +$fa-var-pound-sign: \f154; +$fa-var-power-off: \f011; +$fa-var-pray: \f683; +$fa-var-praying-hands: \f684; +$fa-var-prescription: \f5b1; +$fa-var-prescription-bottle: \f485; +$fa-var-prescription-bottle-alt: \f486; +$fa-var-print: \f02f; +$fa-var-procedures: \f487; +$fa-var-product-hunt: \f288; +$fa-var-project-diagram: \f542; +$fa-var-pushed: \f3e1; +$fa-var-puzzle-piece: \f12e; +$fa-var-python: \f3e2; +$fa-var-qq: \f1d6; +$fa-var-qrcode: \f029; +$fa-var-question: \f128; +$fa-var-question-circle: \f059; +$fa-var-quidditch: \f458; +$fa-var-quinscape: \f459; +$fa-var-quora: \f2c4; +$fa-var-quote-left: \f10d; +$fa-var-quote-right: \f10e; +$fa-var-quran: \f687; +$fa-var-r-project: \f4f7; +$fa-var-radiation: \f7b9; +$fa-var-radiation-alt: \f7ba; +$fa-var-rainbow: \f75b; +$fa-var-random: \f074; +$fa-var-raspberry-pi: \f7bb; +$fa-var-ravelry: \f2d9; +$fa-var-react: \f41b; +$fa-var-reacteurope: \f75d; +$fa-var-readme: \f4d5; +$fa-var-rebel: \f1d0; +$fa-var-receipt: \f543; +$fa-var-recycle: \f1b8; +$fa-var-red-river: \f3e3; +$fa-var-reddit: \f1a1; +$fa-var-reddit-alien: \f281; +$fa-var-reddit-square: \f1a2; +$fa-var-redhat: \f7bc; +$fa-var-redo: \f01e; +$fa-var-redo-alt: \f2f9; +$fa-var-registered: \f25d; +$fa-var-renren: \f18b; +$fa-var-reply: \f3e5; +$fa-var-reply-all: \f122; +$fa-var-replyd: \f3e6; +$fa-var-republican: \f75e; +$fa-var-researchgate: \f4f8; +$fa-var-resolving: \f3e7; +$fa-var-restroom: \f7bd; +$fa-var-retweet: \f079; +$fa-var-rev: \f5b2; +$fa-var-ribbon: \f4d6; +$fa-var-ring: \f70b; +$fa-var-road: \f018; +$fa-var-robot: \f544; +$fa-var-rocket: \f135; +$fa-var-rocketchat: \f3e8; +$fa-var-rockrms: \f3e9; +$fa-var-route: \f4d7; +$fa-var-rss: \f09e; +$fa-var-rss-square: \f143; +$fa-var-ruble-sign: \f158; +$fa-var-ruler: \f545; +$fa-var-ruler-combined: \f546; +$fa-var-ruler-horizontal: \f547; +$fa-var-ruler-vertical: \f548; +$fa-var-running: \f70c; +$fa-var-rupee-sign: \f156; +$fa-var-sad-cry: \f5b3; +$fa-var-sad-tear: \f5b4; +$fa-var-safari: \f267; +$fa-var-salesforce: \f83b; +$fa-var-sass: \f41e; +$fa-var-satellite: \f7bf; +$fa-var-satellite-dish: \f7c0; +$fa-var-save: \f0c7; +$fa-var-schlix: \f3ea; +$fa-var-school: \f549; +$fa-var-screwdriver: \f54a; +$fa-var-scribd: \f28a; +$fa-var-scroll: \f70e; +$fa-var-sd-card: \f7c2; +$fa-var-search: \f002; +$fa-var-search-dollar: \f688; +$fa-var-search-location: \f689; +$fa-var-search-minus: \f010; +$fa-var-search-plus: \f00e; +$fa-var-searchengin: \f3eb; +$fa-var-seedling: \f4d8; +$fa-var-sellcast: \f2da; +$fa-var-sellsy: \f213; +$fa-var-server: \f233; +$fa-var-servicestack: \f3ec; +$fa-var-shapes: \f61f; +$fa-var-share: \f064; +$fa-var-share-alt: \f1e0; +$fa-var-share-alt-square: \f1e1; +$fa-var-share-square: \f14d; +$fa-var-shekel-sign: \f20b; +$fa-var-shield-alt: \f3ed; +$fa-var-ship: \f21a; +$fa-var-shipping-fast: \f48b; +$fa-var-shirtsinbulk: \f214; +$fa-var-shoe-prints: \f54b; +$fa-var-shopping-bag: \f290; +$fa-var-shopping-basket: \f291; +$fa-var-shopping-cart: \f07a; +$fa-var-shopware: \f5b5; +$fa-var-shower: \f2cc; +$fa-var-shuttle-van: \f5b6; +$fa-var-sign: \f4d9; +$fa-var-sign-in-alt: \f2f6; +$fa-var-sign-language: \f2a7; +$fa-var-sign-out-alt: \f2f5; +$fa-var-signal: \f012; +$fa-var-signature: \f5b7; +$fa-var-sim-card: \f7c4; +$fa-var-simplybuilt: \f215; +$fa-var-sistrix: \f3ee; +$fa-var-sitemap: \f0e8; +$fa-var-sith: \f512; +$fa-var-skating: \f7c5; +$fa-var-sketch: \f7c6; +$fa-var-skiing: \f7c9; +$fa-var-skiing-nordic: \f7ca; +$fa-var-skull: \f54c; +$fa-var-skull-crossbones: \f714; +$fa-var-skyatlas: \f216; +$fa-var-skype: \f17e; +$fa-var-slack: \f198; +$fa-var-slack-hash: \f3ef; +$fa-var-slash: \f715; +$fa-var-sleigh: \f7cc; +$fa-var-sliders-h: \f1de; +$fa-var-slideshare: \f1e7; +$fa-var-smile: \f118; +$fa-var-smile-beam: \f5b8; +$fa-var-smile-wink: \f4da; +$fa-var-smog: \f75f; +$fa-var-smoking: \f48d; +$fa-var-smoking-ban: \f54d; +$fa-var-sms: \f7cd; +$fa-var-snapchat: \f2ab; +$fa-var-snapchat-ghost: \f2ac; +$fa-var-snapchat-square: \f2ad; +$fa-var-snowboarding: \f7ce; +$fa-var-snowflake: \f2dc; +$fa-var-snowman: \f7d0; +$fa-var-snowplow: \f7d2; +$fa-var-socks: \f696; +$fa-var-solar-panel: \f5ba; +$fa-var-sort: \f0dc; +$fa-var-sort-alpha-down: \f15d; +$fa-var-sort-alpha-up: \f15e; +$fa-var-sort-amount-down: \f160; +$fa-var-sort-amount-up: \f161; +$fa-var-sort-down: \f0dd; +$fa-var-sort-numeric-down: \f162; +$fa-var-sort-numeric-up: \f163; +$fa-var-sort-up: \f0de; +$fa-var-soundcloud: \f1be; +$fa-var-sourcetree: \f7d3; +$fa-var-spa: \f5bb; +$fa-var-space-shuttle: \f197; +$fa-var-speakap: \f3f3; +$fa-var-speaker-deck: \f83c; +$fa-var-spider: \f717; +$fa-var-spinner: \f110; +$fa-var-splotch: \f5bc; +$fa-var-spotify: \f1bc; +$fa-var-spray-can: \f5bd; +$fa-var-square: \f0c8; +$fa-var-square-full: \f45c; +$fa-var-square-root-alt: \f698; +$fa-var-squarespace: \f5be; +$fa-var-stack-exchange: \f18d; +$fa-var-stack-overflow: \f16c; +$fa-var-stackpath: \f842; +$fa-var-stamp: \f5bf; +$fa-var-star: \f005; +$fa-var-star-and-crescent: \f699; +$fa-var-star-half: \f089; +$fa-var-star-half-alt: \f5c0; +$fa-var-star-of-david: \f69a; +$fa-var-star-of-life: \f621; +$fa-var-staylinked: \f3f5; +$fa-var-steam: \f1b6; +$fa-var-steam-square: \f1b7; +$fa-var-steam-symbol: \f3f6; +$fa-var-step-backward: \f048; +$fa-var-step-forward: \f051; +$fa-var-stethoscope: \f0f1; +$fa-var-sticker-mule: \f3f7; +$fa-var-sticky-note: \f249; +$fa-var-stop: \f04d; +$fa-var-stop-circle: \f28d; +$fa-var-stopwatch: \f2f2; +$fa-var-store: \f54e; +$fa-var-store-alt: \f54f; +$fa-var-strava: \f428; +$fa-var-stream: \f550; +$fa-var-street-view: \f21d; +$fa-var-strikethrough: \f0cc; +$fa-var-stripe: \f429; +$fa-var-stripe-s: \f42a; +$fa-var-stroopwafel: \f551; +$fa-var-studiovinari: \f3f8; +$fa-var-stumbleupon: \f1a4; +$fa-var-stumbleupon-circle: \f1a3; +$fa-var-subscript: \f12c; +$fa-var-subway: \f239; +$fa-var-suitcase: \f0f2; +$fa-var-suitcase-rolling: \f5c1; +$fa-var-sun: \f185; +$fa-var-superpowers: \f2dd; +$fa-var-superscript: \f12b; +$fa-var-supple: \f3f9; +$fa-var-surprise: \f5c2; +$fa-var-suse: \f7d6; +$fa-var-swatchbook: \f5c3; +$fa-var-swimmer: \f5c4; +$fa-var-swimming-pool: \f5c5; +$fa-var-symfony: \f83d; +$fa-var-synagogue: \f69b; +$fa-var-sync: \f021; +$fa-var-sync-alt: \f2f1; +$fa-var-syringe: \f48e; +$fa-var-table: \f0ce; +$fa-var-table-tennis: \f45d; +$fa-var-tablet: \f10a; +$fa-var-tablet-alt: \f3fa; +$fa-var-tablets: \f490; +$fa-var-tachometer-alt: \f3fd; +$fa-var-tag: \f02b; +$fa-var-tags: \f02c; +$fa-var-tape: \f4db; +$fa-var-tasks: \f0ae; +$fa-var-taxi: \f1ba; +$fa-var-teamspeak: \f4f9; +$fa-var-teeth: \f62e; +$fa-var-teeth-open: \f62f; +$fa-var-telegram: \f2c6; +$fa-var-telegram-plane: \f3fe; +$fa-var-temperature-high: \f769; +$fa-var-temperature-low: \f76b; +$fa-var-tencent-weibo: \f1d5; +$fa-var-tenge: \f7d7; +$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-the-red-yeti: \f69d; +$fa-var-theater-masks: \f630; +$fa-var-themeco: \f5c6; +$fa-var-themeisle: \f2b2; +$fa-var-thermometer: \f491; +$fa-var-thermometer-empty: \f2cb; +$fa-var-thermometer-full: \f2c7; +$fa-var-thermometer-half: \f2c9; +$fa-var-thermometer-quarter: \f2ca; +$fa-var-thermometer-three-quarters: \f2c8; +$fa-var-think-peaks: \f731; +$fa-var-thumbs-down: \f165; +$fa-var-thumbs-up: \f164; +$fa-var-thumbtack: \f08d; +$fa-var-ticket-alt: \f3ff; +$fa-var-times: \f00d; +$fa-var-times-circle: \f057; +$fa-var-tint: \f043; +$fa-var-tint-slash: \f5c7; +$fa-var-tired: \f5c8; +$fa-var-toggle-off: \f204; +$fa-var-toggle-on: \f205; +$fa-var-toilet: \f7d8; +$fa-var-toilet-paper: \f71e; +$fa-var-toolbox: \f552; +$fa-var-tools: \f7d9; +$fa-var-tooth: \f5c9; +$fa-var-torah: \f6a0; +$fa-var-torii-gate: \f6a1; +$fa-var-tractor: \f722; +$fa-var-trade-federation: \f513; +$fa-var-trademark: \f25c; +$fa-var-traffic-light: \f637; +$fa-var-train: \f238; +$fa-var-tram: \f7da; +$fa-var-transgender: \f224; +$fa-var-transgender-alt: \f225; +$fa-var-trash: \f1f8; +$fa-var-trash-alt: \f2ed; +$fa-var-trash-restore: \f829; +$fa-var-trash-restore-alt: \f82a; +$fa-var-tree: \f1bb; +$fa-var-trello: \f181; +$fa-var-tripadvisor: \f262; +$fa-var-trophy: \f091; +$fa-var-truck: \f0d1; +$fa-var-truck-loading: \f4de; +$fa-var-truck-monster: \f63b; +$fa-var-truck-moving: \f4df; +$fa-var-truck-pickup: \f63c; +$fa-var-tshirt: \f553; +$fa-var-tty: \f1e4; +$fa-var-tumblr: \f173; +$fa-var-tumblr-square: \f174; +$fa-var-tv: \f26c; +$fa-var-twitch: \f1e8; +$fa-var-twitter: \f099; +$fa-var-twitter-square: \f081; +$fa-var-typo3: \f42b; +$fa-var-uber: \f402; +$fa-var-ubuntu: \f7df; +$fa-var-uikit: \f403; +$fa-var-umbrella: \f0e9; +$fa-var-umbrella-beach: \f5ca; +$fa-var-underline: \f0cd; +$fa-var-undo: \f0e2; +$fa-var-undo-alt: \f2ea; +$fa-var-uniregistry: \f404; +$fa-var-universal-access: \f29a; +$fa-var-university: \f19c; +$fa-var-unlink: \f127; +$fa-var-unlock: \f09c; +$fa-var-unlock-alt: \f13e; +$fa-var-untappd: \f405; +$fa-var-upload: \f093; +$fa-var-ups: \f7e0; +$fa-var-usb: \f287; +$fa-var-user: \f007; +$fa-var-user-alt: \f406; +$fa-var-user-alt-slash: \f4fa; +$fa-var-user-astronaut: \f4fb; +$fa-var-user-check: \f4fc; +$fa-var-user-circle: \f2bd; +$fa-var-user-clock: \f4fd; +$fa-var-user-cog: \f4fe; +$fa-var-user-edit: \f4ff; +$fa-var-user-friends: \f500; +$fa-var-user-graduate: \f501; +$fa-var-user-injured: \f728; +$fa-var-user-lock: \f502; +$fa-var-user-md: \f0f0; +$fa-var-user-minus: \f503; +$fa-var-user-ninja: \f504; +$fa-var-user-nurse: \f82f; +$fa-var-user-plus: \f234; +$fa-var-user-secret: \f21b; +$fa-var-user-shield: \f505; +$fa-var-user-slash: \f506; +$fa-var-user-tag: \f507; +$fa-var-user-tie: \f508; +$fa-var-user-times: \f235; +$fa-var-users: \f0c0; +$fa-var-users-cog: \f509; +$fa-var-usps: \f7e1; +$fa-var-ussunnah: \f407; +$fa-var-utensil-spoon: \f2e5; +$fa-var-utensils: \f2e7; +$fa-var-vaadin: \f408; +$fa-var-vector-square: \f5cb; +$fa-var-venus: \f221; +$fa-var-venus-double: \f226; +$fa-var-venus-mars: \f228; +$fa-var-viacoin: \f237; +$fa-var-viadeo: \f2a9; +$fa-var-viadeo-square: \f2aa; +$fa-var-vial: \f492; +$fa-var-vials: \f493; +$fa-var-viber: \f409; +$fa-var-video: \f03d; +$fa-var-video-slash: \f4e2; +$fa-var-vihara: \f6a7; +$fa-var-vimeo: \f40a; +$fa-var-vimeo-square: \f194; +$fa-var-vimeo-v: \f27d; +$fa-var-vine: \f1ca; +$fa-var-vk: \f189; +$fa-var-vnv: \f40b; +$fa-var-volleyball-ball: \f45f; +$fa-var-volume-down: \f027; +$fa-var-volume-mute: \f6a9; +$fa-var-volume-off: \f026; +$fa-var-volume-up: \f028; +$fa-var-vote-yea: \f772; +$fa-var-vr-cardboard: \f729; +$fa-var-vuejs: \f41f; +$fa-var-walking: \f554; +$fa-var-wallet: \f555; +$fa-var-warehouse: \f494; +$fa-var-water: \f773; +$fa-var-wave-square: \f83e; +$fa-var-waze: \f83f; +$fa-var-weebly: \f5cc; +$fa-var-weibo: \f18a; +$fa-var-weight: \f496; +$fa-var-weight-hanging: \f5cd; +$fa-var-weixin: \f1d7; +$fa-var-whatsapp: \f232; +$fa-var-whatsapp-square: \f40c; +$fa-var-wheelchair: \f193; +$fa-var-whmcs: \f40d; +$fa-var-wifi: \f1eb; +$fa-var-wikipedia-w: \f266; +$fa-var-wind: \f72e; +$fa-var-window-close: \f410; +$fa-var-window-maximize: \f2d0; +$fa-var-window-minimize: \f2d1; +$fa-var-window-restore: \f2d2; +$fa-var-windows: \f17a; +$fa-var-wine-bottle: \f72f; +$fa-var-wine-glass: \f4e3; +$fa-var-wine-glass-alt: \f5ce; +$fa-var-wix: \f5cf; +$fa-var-wizards-of-the-coast: \f730; +$fa-var-wolf-pack-battalion: \f514; +$fa-var-won-sign: \f159; +$fa-var-wordpress: \f19a; +$fa-var-wordpress-simple: \f411; +$fa-var-wpbeginner: \f297; +$fa-var-wpexplorer: \f2de; +$fa-var-wpforms: \f298; +$fa-var-wpressr: \f3e4; +$fa-var-wrench: \f0ad; +$fa-var-x-ray: \f497; +$fa-var-xbox: \f412; +$fa-var-xing: \f168; +$fa-var-xing-square: \f169; +$fa-var-y-combinator: \f23b; +$fa-var-yahoo: \f19e; +$fa-var-yammer: \f840; +$fa-var-yandex: \f413; +$fa-var-yandex-international: \f414; +$fa-var-yarn: \f7e3; +$fa-var-yelp: \f1e9; +$fa-var-yen-sign: \f157; +$fa-var-yin-yang: \f6ad; +$fa-var-yoast: \f2b1; +$fa-var-youtube: \f167; +$fa-var-youtube-square: \f431; +$fa-var-zhihu: \f63f; diff --git a/core/external/eo-framework/core/assets/css/scss/index.php b/core/external/eo-framework/core/assets/css/scss/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/index.php @@ -0,0 +1,2 @@ + classe de base pour le module + .animate-hover => Permet de lancer l'animation au survol + .animate-on => ajouter cette classe lors d'un event js pour animer l'element +--------------------------------------------------------------*/ + +.wpeo-animate { + animation-fill-mode: both; + animation-duration: 1s; + + &.flipOutX, + &.flipOutY, + &.bounceIn, + &.bounceOut { + animation-duration: .75s; + } + + &.animate-hover:hover, &.animate-on { + &.bounce { + animation-name: bounce; + transform-origin: center bottom; + } + &.flash { + animation-name: flash; + } + &.headShake { + animation-timing-function: ease-in-out; + animation-name: headShake; + } + &.jello { + animation-name: jello; + transform-origin: center; + } + &.pulse { + animation-name: pulse; + } + &.rubberBand { + animation-name: rubberBand; + } + &.shake { + animation-name: shake; + } + &.swing { + transform-origin: top center; + animation-name: swing; + } + &.tada { + animation-name: tada; + } + &.wobble { + animation-name: wobble; + } + &.bounceIn { + animation-name: bounceIn; + } + &.bounceInDown { + animation-name: bounceInDown; + } + &.bounceInLeft { + animation-name: bounceInLeft; + } + &.bounceInRight { + animation-name: bounceInRight; + } + &.bounceInUp { + animation-name: bounceInUp; + } + &.bounceOut { + animation-name: bounceOut; + } + &.bounceOutDown { + animation-name: bounceOutDown; + } + &.bounceOutLeft { + animation-name: bounceOutLeft; + } + &.bounceOutRight { + animation-name: bounceOutRight; + } + &.bounceOutUp { + animation-name: bounceOutUp; + } + &.fadeIn { + animation-name: fadeIn; + } + &.fadeInDown { + animation-name: fadeInDown; + } + &.fadeInDownBig { + animation-name: fadeInDownBig; + } + &.fadeInLeft { + animation-name: fadeInLeft; + } + &.fadeInLeftBig { + animation-name: fadeInLeftBig; + } + &.fadeInRight { + animation-name: fadeInRight; + } + &.fadeInRightBig { + animation-name: fadeInRightBig; + } + &.fadeInUp { + animation-name: fadeInUp; + } + &.fadeInUpBig { + animation-name: fadeInUpBig; + } + &.fadeOut { + animation-name: fadeOut; + } + &.fadeOutDown { + animation-name: fadeOutDown; + } + &.fadeOutDownBig { + animation-name: fadeOutDownBig; + } + &.fadeOutLeft { + animation-name: fadeOutLeft; + } + &.fadeOutLeftBig { + animation-name: fadeOutLeftBig; + } + &.fadeOutRight { + animation-name: fadeOutRight; + } + &.fadeOutRightBig { + animation-name: fadeOutRightBig; + } + &.fadeOutUp { + animation-name: fadeOutUp; + } + &.fadeOutUpBig { + animation-name: fadeOutUpBig; + } + &.slideInDown { + animation-name: slideInDown; + } + &.slideInLeft { + animation-name: slideInLeft; + } + &.slideInRight { + animation-name: slideInRight; + } + &.slideInUp { + animation-name: slideInUp; + } + &.slideOutDown { + animation-name: slideOutDown; + } + &.slideOutLeft { + animation-name: slideOutLeft; + } + &.slideOutRight { + animation-name: slideOutRight; + } + &.slideOutUp { + animation-name: slideOutUp; + } + &.bounceInLight{ + animation-name: bounceInLight; + } + &.rotate { + animation-name: rotate; + } + &.downAndUp { + animation-name: downAndUp; + } + } +} + +/* Import des animations */ + +@import "attention_seekers/bounce"; +@import "attention_seekers/flash"; +@import "attention_seekers/headShake"; +@import "attention_seekers/jello"; +@import "attention_seekers/pulse"; +@import "attention_seekers/rubberBand"; +@import "attention_seekers/shake"; +@import "attention_seekers/swing"; +@import "attention_seekers/tada"; +@import "attention_seekers/wobble"; +@import "bouncing_entrances/bounceIn"; +@import "bouncing_entrances/bounceInDown"; +@import "bouncing_entrances/bounceInLeft"; +@import "bouncing_entrances/bounceInRight"; +@import "bouncing_entrances/bounceInUp"; +@import "bouncing_exits/bounceOut"; +@import "bouncing_exits/bounceOutDown"; +@import "bouncing_exits/bounceOutLeft"; +@import "bouncing_exits/bounceOutRight"; +@import "bouncing_exits/bounceOutUp"; +@import "fading_entrances/fadeIn"; +@import "fading_entrances/fadeInDown"; +@import "fading_entrances/fadeInDownBig"; +@import "fading_entrances/fadeInLeft"; +@import "fading_entrances/fadeInLeftBig"; +@import "fading_entrances/fadeInRight"; +@import "fading_entrances/fadeInRightBig"; +@import "fading_entrances/fadeInUp"; +@import "fading_entrances/fadeInUpBig"; +@import "fading_exits/fadeOut"; +@import "fading_exits/fadeOutDown"; +@import "fading_exits/fadeOutDownBig"; +@import "fading_exits/fadeOutLeft"; +@import "fading_exits/fadeOutLeftBig"; +@import "fading_exits/fadeOutRight"; +@import "fading_exits/fadeOutRightBig"; +@import "fading_exits/fadeOutUp"; +@import "fading_exits/fadeOutUpBig"; +@import "sliding_entrances/slideInDown"; +@import "sliding_entrances/slideInLeft"; +@import "sliding_entrances/slideInRight"; +@import "sliding_entrances/slideInUp"; +@import "sliding_exits/slideOutDown"; +@import "sliding_exits/slideOutLeft"; +@import "sliding_exits/slideOutRight"; +@import "sliding_exits/slideOutUp"; +@import "custom/bounceInLight"; +@import "custom/downAndUp"; +@import "custom/rotate"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_bounce.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_bounce.scss new file mode 100644 index 0000000..ca44c9a --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_bounce.scss @@ -0,0 +1,20 @@ +@keyframes bounce { + from, 20%, 53%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + transform: translate3d(0,0,0); + } + + 40%, 43% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -30px, 0); + } + + 70% { + animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); + transform: translate3d(0, -15px, 0); + } + + 90% { + transform: translate3d(0, -4px, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_flash.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_flash.scss new file mode 100644 index 0000000..d5b47e5 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_flash.scss @@ -0,0 +1,9 @@ +@keyframes flash { + from, 50%, to { + opacity: 1; + } + + 25%, 75% { + opacity: 0; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_headShake.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_headShake.scss new file mode 100644 index 0000000..d6fd2b3 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_headShake.scss @@ -0,0 +1,25 @@ +@keyframes headShake { + 0% { + transform: translateX(0); + } + + 6.5% { + transform: translateX(-6px) rotateY(-9deg); + } + + 18.5% { + transform: translateX(5px) rotateY(7deg); + } + + 31.5% { + transform: translateX(-3px) rotateY(-5deg); + } + + 43.5% { + transform: translateX(2px) rotateY(3deg); + } + + 50% { + transform: translateX(0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_jello.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_jello.scss new file mode 100644 index 0000000..a243e89 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_jello.scss @@ -0,0 +1,33 @@ +@keyframes jello { + from, 11.1%, to { + transform: none; + } + + 22.2% { + transform: skewX(-12.5deg) skewY(-12.5deg); + } + + 33.3% { + transform: skewX(6.25deg) skewY(6.25deg); + } + + 44.4% { + transform: skewX(-3.125deg) skewY(-3.125deg); + } + + 55.5% { + transform: skewX(1.5625deg) skewY(1.5625deg); + } + + 66.6% { + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + + 77.7% { + transform: skewX(0.390625deg) skewY(0.390625deg); + } + + 88.8% { + transform: skewX(-0.1953125deg) skewY(-0.1953125deg); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_pulse.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_pulse.scss new file mode 100644 index 0000000..8604d46 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_pulse.scss @@ -0,0 +1,15 @@ +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes pulse { + from { + transform: scale3d(1, 1, 1); + } + + 50% { + transform: scale3d(1.05, 1.05, 1.05); + } + + to { + transform: scale3d(1, 1, 1); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_rubberBand.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_rubberBand.scss new file mode 100644 index 0000000..ddecf32 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_rubberBand.scss @@ -0,0 +1,29 @@ +@keyframes rubberBand { + from { + transform: scale3d(1, 1, 1); + } + + 30% { + transform: scale3d(1.25, 0.75, 1); + } + + 40% { + transform: scale3d(0.75, 1.25, 1); + } + + 50% { + transform: scale3d(1.15, 0.85, 1); + } + + 65% { + transform: scale3d(.95, 1.05, 1); + } + + 75% { + transform: scale3d(1.05, .95, 1); + } + + to { + transform: scale3d(1, 1, 1); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_shake.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_shake.scss new file mode 100644 index 0000000..638fadf --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_shake.scss @@ -0,0 +1,13 @@ +@keyframes shake { + from, to { + transform: translate3d(0, 0, 0); + } + + 10%, 30%, 50%, 70%, 90% { + transform: translate3d(-10px, 0, 0); + } + + 20%, 40%, 60%, 80% { + transform: translate3d(10px, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_swing.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_swing.scss new file mode 100644 index 0000000..69cc9b0 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_swing.scss @@ -0,0 +1,21 @@ +@keyframes swing { + 20% { + transform: rotate3d(0, 0, 1, 15deg); + } + + 40% { + transform: rotate3d(0, 0, 1, -10deg); + } + + 60% { + transform: rotate3d(0, 0, 1, 5deg); + } + + 80% { + transform: rotate3d(0, 0, 1, -5deg); + } + + to { + transform: rotate3d(0, 0, 1, 0deg); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_tada.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_tada.scss new file mode 100644 index 0000000..1267925 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_tada.scss @@ -0,0 +1,21 @@ +@keyframes tada { + from { + transform: scale3d(1, 1, 1); + } + + 10%, 20% { + transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); + } + + 30%, 50%, 70%, 90% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + + 40%, 60%, 80% { + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + + to { + transform: scale3d(1, 1, 1); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_wobble.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_wobble.scss new file mode 100644 index 0000000..3b911da --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/attention_seekers/_wobble.scss @@ -0,0 +1,31 @@ +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ + +@keyframes wobble { + from { + transform: none; + } + + 15% { + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + + 30% { + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + + 45% { + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + + 60% { + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + + 75% { + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + + to { + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceIn.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceIn.scss new file mode 100644 index 0000000..1de6bf2 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceIn.scss @@ -0,0 +1,32 @@ +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: scale3d(.3, .3, .3); + } + + 20% { + transform: scale3d(1.1, 1.1, 1.1); + } + + 40% { + transform: scale3d(.9, .9, .9); + } + + 60% { + opacity: 1; + transform: scale3d(1.03, 1.03, 1.03); + } + + 80% { + transform: scale3d(.97, .97, .97); + } + + to { + opacity: 1; + transform: scale3d(1, 1, 1); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInDown.scss new file mode 100644 index 0000000..b22c3cd --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInDown.scss @@ -0,0 +1,27 @@ +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: translate3d(0, -3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, 25px, 0); + } + + 75% { + transform: translate3d(0, -10px, 0); + } + + 90% { + transform: translate3d(0, 5px, 0); + } + + to { + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInLeft.scss new file mode 100644 index 0000000..8be1f3e --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInLeft.scss @@ -0,0 +1,27 @@ +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: translate3d(-3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(25px, 0, 0); + } + + 75% { + transform: translate3d(-10px, 0, 0); + } + + 90% { + transform: translate3d(5px, 0, 0); + } + + to { + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInRight.scss new file mode 100644 index 0000000..cbad56b --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInRight.scss @@ -0,0 +1,27 @@ +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + + 75% { + transform: translate3d(10px, 0, 0); + } + + 90% { + transform: translate3d(-5px, 0, 0); + } + + to { + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInUp.scss new file mode 100644 index 0000000..04af9f7 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_entrances/_bounceInUp.scss @@ -0,0 +1,27 @@ +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + from { + opacity: 0; + transform: translate3d(0, 3000px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + 75% { + transform: translate3d(0, 10px, 0); + } + + 90% { + transform: translate3d(0, -5px, 0); + } + + to { + transform: translate3d(0, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOut.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOut.scss new file mode 100644 index 0000000..8c7e687 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOut.scss @@ -0,0 +1,15 @@ +@keyframes bounceOut { + 20% { + transform: scale3d(.9, .9, .9); + } + + 50%, 55% { + opacity: 1; + transform: scale3d(1.1, 1.1, 1.1); + } + + to { + opacity: 0; + transform: scale3d(.3, .3, .3); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutDown.scss new file mode 100644 index 0000000..69fb964 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutDown.scss @@ -0,0 +1,15 @@ +@keyframes bounceOutDown { + 20% { + transform: translate3d(0, 10px, 0); + } + + 40%, 45% { + opacity: 1; + transform: translate3d(0, -20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutLeft.scss new file mode 100644 index 0000000..0fa5137 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutLeft.scss @@ -0,0 +1,11 @@ +@keyframes bounceOutLeft { + 20% { + opacity: 1; + transform: translate3d(20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutRight.scss new file mode 100644 index 0000000..827f00a --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutRight.scss @@ -0,0 +1,11 @@ +@keyframes bounceOutRight { + 20% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutUp.scss new file mode 100644 index 0000000..90e2b51 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/bouncing_exits/_bounceOutUp.scss @@ -0,0 +1,15 @@ +@keyframes bounceOutUp { + 20% { + transform: translate3d(0, -10px, 0); + } + + 40%, 45% { + opacity: 1; + transform: translate3d(0, 20px, 0); + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_bounceInLight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_bounceInLight.scss new file mode 100644 index 0000000..8516313 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_bounceInLight.scss @@ -0,0 +1,29 @@ +@keyframes bounceInLight { + 0, 20%, 40%, 60%, 80%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + transform: scale3d(1, 1, 1); + } + + 20% { + transform: scale3d(1.2, 1.2, 1.2); + } + + 40% { + transform: scale3d(.9, .9, .9); + } + + 60% { + transform: scale3d(1.1, 1.1, 1.1); + } + + 80% { + transform: scale3d(.97, .97, .97); + } + + to { + transform: scale3d(1, 1, 1); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_downAndUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_downAndUp.scss new file mode 100644 index 0000000..0f0af8f --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_downAndUp.scss @@ -0,0 +1,11 @@ +@keyframes downAndUp { + 0% { + transform: translateY(0px); + } + 50% { + transform: translateY(4px); + } + 100% { + transform: translateY(0px); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_rotate.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_rotate.scss new file mode 100644 index 0000000..bddc63a --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/custom/_rotate.scss @@ -0,0 +1,8 @@ +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + 100%{ + transform: rotate(90deg); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeIn.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeIn.scss new file mode 100644 index 0000000..ac5c7fe --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeIn.scss @@ -0,0 +1,9 @@ +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDown.scss new file mode 100644 index 0000000..958df43 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDown.scss @@ -0,0 +1,11 @@ +@keyframes fadeInDown { + from { + opacity: 0; + transform: translate3d(0, -100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDownBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDownBig.scss new file mode 100644 index 0000000..81de80d --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInDownBig.scss @@ -0,0 +1,11 @@ +@keyframes fadeInDownBig { + from { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeft.scss new file mode 100644 index 0000000..3d0f58c --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeft.scss @@ -0,0 +1,11 @@ +@keyframes fadeInLeft { + from { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeftBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeftBig.scss new file mode 100644 index 0000000..8f088e7 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInLeftBig.scss @@ -0,0 +1,11 @@ +@keyframes fadeInLeftBig { + from { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRight.scss new file mode 100644 index 0000000..cd2c717 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRight.scss @@ -0,0 +1,11 @@ +@keyframes fadeInRight { + from { + opacity: 0; + transform: translate3d(100%, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRightBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRightBig.scss new file mode 100644 index 0000000..044cd6d --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInRightBig.scss @@ -0,0 +1,11 @@ +@keyframes fadeInRightBig { + from { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUp.scss new file mode 100644 index 0000000..12f1f1a --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUp.scss @@ -0,0 +1,11 @@ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translate3d(0, 100%, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUpBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUpBig.scss new file mode 100644 index 0000000..4050960 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_entrances/_fadeInUpBig.scss @@ -0,0 +1,11 @@ +@keyframes fadeInUpBig { + from { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } + + to { + opacity: 1; + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOut.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOut.scss new file mode 100644 index 0000000..7027418 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOut.scss @@ -0,0 +1,9 @@ +@keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDown.scss new file mode 100644 index 0000000..39786f6 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDown.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutDown { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 100%, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDownBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDownBig.scss new file mode 100644 index 0000000..fdcb757 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutDownBig.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, 2000px, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeft.scss new file mode 100644 index 0000000..6b4005b --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeft.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutLeft { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-100%, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeftBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeftBig.scss new file mode 100644 index 0000000..258e2ca --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutLeftBig.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(-2000px, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRight.scss new file mode 100644 index 0000000..08ae04e --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRight.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutRight { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(100%, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRightBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRightBig.scss new file mode 100644 index 0000000..42be3c2 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutRightBig.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUp.scss new file mode 100644 index 0000000..9a93052 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUp.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutUp { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -100%, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUpBig.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUpBig.scss new file mode 100644 index 0000000..ba02f49 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/fading_exits/_fadeOutUpBig.scss @@ -0,0 +1,10 @@ +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + + to { + opacity: 0; + transform: translate3d(0, -2000px, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInDown.scss new file mode 100644 index 0000000..f897888 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInDown.scss @@ -0,0 +1,10 @@ +@keyframes slideInDown { + from { + transform: translate3d(0, -100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInLeft.scss new file mode 100644 index 0000000..e719d54 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInLeft.scss @@ -0,0 +1,10 @@ +@keyframes slideInLeft { + from { + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInRight.scss new file mode 100644 index 0000000..cfe115f --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInRight.scss @@ -0,0 +1,10 @@ +@keyframes slideInRight { + from { + transform: translate3d(100%, 0, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInUp.scss new file mode 100644 index 0000000..7038ab8 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_entrances/_slideInUp.scss @@ -0,0 +1,10 @@ +@keyframes slideInUp { + from { + transform: translate3d(0, 100%, 0); + visibility: visible; + } + + to { + transform: translate3d(0, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutDown.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutDown.scss new file mode 100644 index 0000000..e38c2a9 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutDown.scss @@ -0,0 +1,10 @@ +@keyframes slideOutDown { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, 100%, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutLeft.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutLeft.scss new file mode 100644 index 0000000..efff0b4 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutLeft.scss @@ -0,0 +1,10 @@ +@keyframes slideOutLeft { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(-100%, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutRight.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutRight.scss new file mode 100644 index 0000000..3c13d9c --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutRight.scss @@ -0,0 +1,10 @@ +@keyframes slideOutRight { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(100%, 0, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutUp.scss b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutUp.scss new file mode 100644 index 0000000..289914f --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/animation/sliding_exits/_slideOutUp.scss @@ -0,0 +1,10 @@ +@keyframes slideOutUp { + from { + transform: translate3d(0, 0, 0); + } + + to { + visibility: hidden; + transform: translate3d(0, -100%, 0); + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/autocomplete/_autocomplete.scss b/core/external/eo-framework/core/assets/css/scss/modules/autocomplete/_autocomplete.scss new file mode 100644 index 0000000..552bf66 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/autocomplete/_autocomplete.scss @@ -0,0 +1,188 @@ +/*-------------------------------------------------------------- + Module : Autocomplete + Version : 1.2.0 + + .wpeo-autocomplete => classe de base pour le module + .autocomplete-loading -> Fais apparaître la barre de Chargement + .autocomplete-full -> Fais apparaître la croix +--------------------------------------------------------------*/ + +.wpeo-autocomplete { + position: relative; + + &.autocomplete-active .autocomplete-search-list { + opacity: 1; + pointer-events: auto; + transform: translateY(0); + } +} + +/** Couleur */ +.wpeo-autocomplete { + .autocomplete-label { + background: $color__grey; + } + .autocomplete-search-list { + background: $color__grey; + } +} +.wpeo-autocomplete.autocomplete-light { + .autocomplete-label { + background: #fff; + } + .autocomplete-search-list { + background: #fff; + } +} + +/** Label */ +.wpeo-autocomplete { + .autocomplete-label { + display: block; + padding: 1em; + margin: 0; + position: relative; + box-shadow: 0 2px 2px 0px rgba(0,0,0,0.3); + @include transition(); + border: 1px solid transparent; + + &:hover { + cursor: text; + border: 1px solid $color__primary; + } + } + .autocomplete-search-input { + background-color: transparent; + border: 0; + width: 100%; + padding: 0 1.6em; + font-size: 14px; + font-weight: 400; + &:focus { + outline: none; + box-shadow: none; + } + } + .autocomplete-icon-before, .autocomplete-icon-after { + position: absolute; + top: 50%; + } + .autocomplete-icon-before { + left: 1em; + transform: translateY(-50%); + } +} + +/** Chargement */ +.wpeo-autocomplete { + .autocomplete-label { + .autocomplete-loading, .autocomplete-loading-background { + display: block; + content: ''; + position: absolute; + bottom: 0; + left: 0; + @include transition(width, 0.6s, linear); + height: 3px; + } + .autocomplete-loading { + width: 10%; + background: $color__primary; + } + .autocomplete-loading-background { + width: 100%; + background: rgba($color__primary, 0.4); + } + } +} + +/** Croix */ +.wpeo-autocomplete { + .autocomplete-icon-after { + right: 0; + padding: 1em; + color: rgba(0,0,0,0.4); + @include transition(); + pointer-events: none; + opacity: 0; + transform: translateY(-50%) translateX(10px); + transform-origin: 50%; + &:hover { + color: rgba(0,0,0,0.8); + cursor: pointer; + } + } + &.autocomplete-full { + .autocomplete-icon-after { + opacity: 1; + pointer-events: all; + transform: translateY(-50%) translateX(0); + } + } +} + +/** Liste de résultats */ +.wpeo-autocomplete .autocomplete-search-list { + opacity: 0; + @include transition(); + transform: translateY(-10px); + margin: 0; + padding: 0; + position: absolute; + box-shadow: 0 2px 2px 0px rgba(0,0,0,0.3); + border-top: 1px solid rgba(0,0,0,0.1); + z-index: 99; + width: 300px; + pointer-events: none; + + .autocomplete-result, .autocomplete-result-text { + list-style-type: none; + padding: 0.6em 2.6em; + @include flexbox(); + margin: 0; + } + .autocomplete-result { + @include transition(); + + &:hover { + background: rgba(0,0,0,0.05); + cursor: pointer; + } + } + .autocomplete-result-image { + margin-right: 1em; + width: auto; + + &.autocomplete-image-rounded { + border-radius: 50%; + } + } + .autocomplete-result-container { + margin: auto 0; + } + .autocomplete-result-title, .autocomplete-result-subtitle { + display: block; + } + .autocomplete-result-title { + font-size: 14px; + } + .autocomplete-result-subtitle { + font-size: 12px; + color: rgba(0,0,0,0.5); + } +} + +/** Taille de la liste */ + +// Taille +.wpeo-autocomplete { + &.autocomplete-small .autocomplete-search-list { + width: 200px; + } + &.autocomplete-medium .autocomplete-search-list { + width: 300px; + } + &.autocomplete-large .autocomplete-search-list { + width: 400px; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/button/_button.scss b/core/external/eo-framework/core/assets/css/scss/modules/button/_button.scss new file mode 100644 index 0000000..81d3c4d --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/button/_button.scss @@ -0,0 +1,194 @@ +/*-------------------------------------------------------------- + Module : Button + Version : 1.2.0 + + * Les boutons se forment grâce à leurs classes CSS + * .button -> classe de base pour un bouton + * .primary + * .light + * .dark + * .red + * .yellow + * .blue + * .green + * .transparent + * .bordered -> Change l'affichage du bouton. Fonctionne avec les même couleurs + * .strong -> texte en gras + * .uppercase -> texte en majuscule + * .float-right -> float right + * .float-left -> float left + * .square-30 -> bouton carré 30px + * .square-40 -> bouton carré 40px + * .square-50 -> bouton carré 50px + * .square-60 -> bouton carré 60px + * .margin -> margin haut et bas sur le bouton + * .radius-1 -> Arrondis les bords + * .radius-3 -> Arrondis les bords + * .radius-3 -> Arrondis les bords + * .rounded -> bouton en forme de rond + * .disable -> désactive les actions sur le bouton + * .size-small -> petite taille + * .size-large -> grande taille + * .progress -> Active le progress button + * .load -> le bouton affiche une icone de chargement + * .success -> le bouton affiche une icone succès + * .error -> Le bouton affiche une icone erreur +--------------------------------------------------------------*/ + +.wpeo-button { + display: inline-block; + border: 0; + box-shadow: none; + background: none; + text-decoration: none; + padding: 6px 14px; + line-height: 1.4; + vertical-align: middle; + height: auto; + border-radius: 0; + @include transition; + position: relative; + border-width: 3px; + border-style: solid; + font-size: 16px; + + background: $color__primary; + border-color: $color__primary; + color: #fff; + + &:focus, &:visited { + color: #fff; + } + &:hover { + color: #fff; + box-shadow: inset 0 -2.6em rgba(255,255,255,0.25); + cursor: pointer; + } + &:focus, &:active { + outline: none; + } +} + +/** Colors */ +@import "colors"; + +// Icon +.wpeo-button { + .button-icon, span { + position: relative; + } + .button-icon ~ span { + margin-left: 10px; + } + span ~ .button-icon { + margin-left: 10px; + } +} + +// Strong +.wpeo-button.button-strong { + span { + font-weight: 800; + } +} + +// Uppercase +.wpeo-button.button-uppercase { + span { + text-transform: uppercase; + font-size: 14px; + } +} + +// Squared +.wpeo-button[class*="button-square-"] { + text-align: center; + overflow: hidden; + padding: 0; +} +.wpeo-button.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; // ne pas oublier les bordures : 6px + .button-icon { + font-size: 12px; + } +} +.wpeo-button.button-square-40 { + width: 40px; + height: 40px; + line-height: 34px; // ne pas oublier les bordures : 6px +} +.wpeo-button.button-square-50 { + width: 50px; + height: 50px; + line-height: 44px; // ne pas oublier les bordures : 6px +} +.wpeo-button.button-square-60 { + width: 60px; + height: 60px; + line-height: 54px; // ne pas oublier les bordures : 6px +} + +// Floats +.wpeo-button { + &.button-float-left { + float: left; + } + &.button-float-right { + float: right; + } +} + +// margin +.wpeo-button.button-margin { + margin: 1em 0; +} + +// radius +.wpeo-button { + &.button-radius-1 { + border-radius: 2px; + } + &.button-radius-2 { + border-radius: 4px; + } + &.button-radius-3 { + border-radius: 6px; + } + &.button-rounded { + border-radius: 50%; + } +} + +// disable +.wpeo-button.button-disable { + background: $color__grey !important; + border-color: $color__grey !important; + color: rgba(0,0,0,0.4) !important; + pointer-events: none; + + &:hover { + box-shadow: none !important; + } + &.button-event { + pointer-events: all; + } +} + +// Taille +.wpeo-button.button-size-small { + font-size: 14px; + &.button-uppercase span { + font-size: 12px; + } +} +.wpeo-button.button-size-large { + font-size: 18px; + &.button-uppercase span { + font-size: 16px; + } +} + +/** Progress */ +@import "progress"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/button/_colors.scss b/core/external/eo-framework/core/assets/css/scss/modules/button/_colors.scss new file mode 100644 index 0000000..46f67bf --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/button/_colors.scss @@ -0,0 +1,133 @@ +// Bouton plein +.wpeo-button { + /* par défaut */ + background: $color__primary; + border-color: $color__primary; + color: $color__primary-text; + + &.button-main { + background: $color__primary; + border-color: $color__primary; + color: $color__primary-text; + } + &.button-light { + background: #fff; + border-color: #fff; + color: $color__text-main; + &:hover { + box-shadow: inset 0 -2.6em rgba(0,0,0,0.1); + color: $color__text-main; + } + } + &.button-dark { + background: $color__dark; + border-color: $color__dark; + } + &.button-grey { + background: $color__grey; + border-color: $color__grey; + color: $color__text-main; + &:hover { + box-shadow: inset 0 -2.6em rgba(0,0,0,0.1); + color: $color__text-main; + } + } + &.button-red { + background: $color__red; + border-color: $color__red; + } + &.button-yellow { + background: $color__yellow; + border-color: $color__yellow; + } + &.button-blue { + background: $color__blue; + border-color: $color__blue; + } + &.button-green { + background: $color__green; + border-color: $color__green; + } + &.button-transparent { + background: transparent; + border-color: transparent; + color: rgba($color__text-main, 0.4); + &:hover { + color: $color__text-main; + box-shadow: inset 0 -2.6em rgba(255,255,255,0); + } + } +} + +// Bordered +.wpeo-button.button-bordered { + background: none; + /* Par defaut */ + border-color: $color__primary; + color: $color__primary; + + &.button-main { + border-color: $color__primary; + color: $color__primary; + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + color: $color__primary-text; + } + } + &.button-light { + border-color: #fff; + color: #fff; + &:hover { + box-shadow: inset 0 -2.6em #fff; + color: $color__text-main; + } + } + &.button-dark { + border-color: $color__dark; + color: $color__dark; + &:hover { + box-shadow: inset 0 -2.6em $color__dark; + } + } + &.button-grey { + border-color: $color__grey; + color: darken($color__grey, 30%); + &:hover { + box-shadow: inset 0 -2.6em $color__grey; + color: $color__text-main; + } + } + &.button-red { + border-color: $color__red; + color: $color__red; + &:hover { + box-shadow: inset 0 -2.6em $color__red; + } + } + &.button-yellow { + border-color: $color__yellow; + color: $color__yellow; + &:hover { + box-shadow: inset 0 -2.6em $color__yellow; + } + } + &.button-blue { + border-color: $color__blue; + color: $color__blue; + &:hover { + box-shadow: inset 0 -2.6em $color__blue; + } + } + &.button-green { + border-color: $color__green; + color: $color__green; + &:hover { + box-shadow: inset 0 -2.6em $color__green; + } + } + + &:hover { + box-shadow: inset 0 -2.6em $color__primary; + color: #fff; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/button/_progress.scss b/core/external/eo-framework/core/assets/css/scss/modules/button/_progress.scss new file mode 100644 index 0000000..3ebcc08 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/button/_progress.scss @@ -0,0 +1,92 @@ +// Progress +.wpeo-button.button-progress { + position: relative; + + &::before { + display: inline-block; + @include fa-icon; + content: ''; + opacity: 0; + transform: translate(-50%, -90%); + font-size: 16px; + animation-duration: 1s; + animation-fill-mode: both; + position: absolute; + left: 50%; + top: 50%; + z-index: 99; + @include transition(); + } + .button-icon, span { + @include transition(); + display: inline-block; + } + &.button-success, &.button-load, &.button-error { + pointer-events: none; + &::before { + opacity: 1; + transform: translate(-50%, -50%); + } + .button-icon, span { + opacity: 0; + transform: translate(0, 40%); + } + } + + &.button-success { + background: $color__green; + border-color: $color__green; + color: #fff; + &:before { + content: fa-content($fa-var-check); + animation-name: progressSuccess; + } + } + + &.button-error { + background: $color__red; + border-color: $color__red; + color: #fff; + &:before { + content: fa-content($fa-var-times); + animation-name: progressError; + } + } + &.button-load { + background: $color__grey; + &:before { + opacity: 1; + border: 3px solid #fff; + border-top: 3px solid $color__primary; + border-radius: 50%; + width: 20px; + height: 20px; + animation: spin 1s ease-out infinite; + } + } +} + +@keyframes progressSuccess { + 0, 20%, 40%, 60%, 80%, to { animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); } + 0% { transform: translate(-50%, -50%) scale3d(1, 1, 1); } + 20% { transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); } + 40% { transform: translate(-50%, -50%) scale3d(.9, .9, .9); } + 60% { transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); } + 80% { transform: translate(-50%, -50%) scale3d(.97, .97, .97); } + to { transform: translate(-50%, -50%) scale3d(1, 1, 1); } +} + +@keyframes progressError { + from { transform: translate(-50%, -50%); } + 15% { transform: translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } + 30% { transform: translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } + 45% { transform: translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } + 60% { transform: translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } + 75% { transform: translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } + to { transform: translate(-50%, -50%); } +} + +@keyframes spin { + 0% { transform: translate(-50%, -50%) rotate(0deg); } + 100% { transform: translate(-50%, -50%) rotate(360deg); } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_dropdown.scss b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_dropdown.scss new file mode 100644 index 0000000..fdf2432 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_dropdown.scss @@ -0,0 +1,129 @@ +/*-------------------------------------------------------------- + Module : Dropdown + Version : 1.0.0 + + .wpeo-dropdown -> classe de base du mobule + .grid -> Affichage en grille + .list -> Affichage en liste +--------------------------------------------------------------*/ + +.wpeo-dropdown { + position: relative; + display: inline-block; + + .dropdown-toggle { + display: inline-block; + + span ~ *[class*="icon"]{ + margin-left: 10px; + } + } + .dropdown-content { + opacity: 0; + pointer-events: none; + transform: translateY(-10px); + transition: all 0.2s ease-out; + position: absolute; + background: #fff; + z-index: 99; + border: 1px solid rgba(0,0,0,0.1); + box-shadow: 0 0 10px 0px rgba(0,0,0,0.3); + width: 220px; + padding: 0.6em; + } + &.dropdown-active .dropdown-content { + opacity: 1; + pointer-events: auto; + transform: translateY(0); + } + ul, li { + margin: 0; + list-style-type: none; + padding: 0; + } + .dropdown-item { + display: block; + color: rgba(0,0,0,0.7); + text-decoration: none; + + .dropdown-result-title, .dropdown-result-subtitle { + display: block; + } + .dropdown-result-title { + font-size: 14px; + } + .dropdown-result-subtitle { + font-size: 12px; + color: rgba(0,0,0,0.5); + } + } +} + +/** Taille */ +.wpeo-dropdown { + &.dropdown-small .dropdown-content { + width: 60px; + } + &.dropdown-medium .dropdown-content { + width: 220px; + } + &.dropdown-large .dropdown-content { + width: 360px; + } +} + +/** Padding */ +.wpeo-dropdown { + &.dropdown-padding-0 .dropdown-content { + padding: 0; + } + &.dropdown-padding-1 .dropdown-content { + padding: 0.6em; + } + &.dropdown-padding-2 .dropdown-content { + padding: 1.2em; + } +} + +/** Alignement */ +.wpeo-dropdown { + &.dropdown-left .dropdown-content { + left: 0; + } + &.dropdown-right .dropdown-content { + right: 0; + } + + &.dropdown-horizontal.dropdown-left .dropdown-content { + left: 100%; + } + &.dropdown-horizontal.dropdown-right .dropdown-content { + right: 100%; + } +} + +/** Sens */ +.wpeo-dropdown { + &.dropdown-horizontal .dropdown-content { + top: 0; + width: auto !important; + display: flex; + flex-wrap: nowrap; + flex-direction: row; + } +} + +/** Disable */ +.wpeo-dropdown .dropdown-item { + &.dropdown-item-disable { + opacity: 0.6; + cursor: default !important; + pointer-events: none; + // Pointer events: none; seulement sur les enfants pour permettre l'utilisation d'une tooltip ou autre module. + > * { + } + } +} + +@import "list"; +@import "grid"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_grid.scss b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_grid.scss new file mode 100644 index 0000000..d67e175 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_grid.scss @@ -0,0 +1,11 @@ +.wpeo-dropdown.dropdown-grid { + .dropdown-item { + padding: 0; + + img { + width: 100%; + height: auto; + display: block; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_list.scss b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_list.scss new file mode 100644 index 0000000..6a2b6e0 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/dropdown/_list.scss @@ -0,0 +1,30 @@ +.wpeo-dropdown { + .dropdown-content { + .dropdown-item { + padding: 0.6em; + background: #fff; + @include transition(); + &:hover { + cursor: pointer; + background: rgba(0,0,0,0.1); + } + } + } +} + +.wpeo-dropdown.dropdown-list { + .dropdown-content { + text-align: left; + } + .dropdown-item { + &::after { + display: block; + content: ''; + clear: both; + } + img { + float: left; + margin-right: 0.4em; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-moderne.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-moderne.scss new file mode 100644 index 0000000..03c9bfe --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-moderne.scss @@ -0,0 +1,98 @@ +// General +.form-element.form-modern { + position: relative; + width: 100%; + margin-bottom: 26px; + + &:after { + content: ''; + display: block; + } +} + +// Design +.form-element.form-modern { + input, textarea { + border: 0; + border-bottom: 1px solid $color__dark; + box-shadow: none; + padding: 10px 0; + margin: 0; + width: 100%; + font-size: 14px; + background: transparent; + &:focus ~ .form-bar { + width: 100%; + } + } + textarea { + &:focus ~ .form-bar { + width: 100%; + } + } + label { + position: absolute; + top: 10px; + left: 0em; + transition: all 0.2s ease-out; + font-size: 14px; + color: rgba(0,0,0,0.4); + pointer-events: none; + font-weight: 600; + font-size: 14px; + } + .form-bar { + position: absolute; + width: 0; + height: 3px; + left: 0; + right: 0; + background: $color__primary; + transition: all 0.2s ease-out; + } + input ~ .form-bar { + bottom: -1px; + } + input:after { + display: block; + content: ''; + + } + textarea ~ .form-bar { + bottom: -1px; + left: 0; + right: 0; + } + select { + width: 100%; + padding: 6px; + height: 40px; + border: 1px solid rgba(0,0,0,0.8); + transition: all 0.2s ease-out; + &:focus { + border: 1px solid $color__primary; + } + } +} + +// Active +.form-element.form-modern { + &.form-active input, &.form-active textarea, input:focus, textarea:focus, select:focus { + outline: none; + & ~ label { + font-size: 12px; + color: $color__primary; + pointer-events: auto; + } + } + &.form-active input, input:focus { + & ~ label { + top: -10px; + } + } + &.form-active textarea, textarea:focus { + & ~ label { + top: -16px; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-simple.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-simple.scss new file mode 100644 index 0000000..7b97128 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_archive-simple.scss @@ -0,0 +1,117 @@ +// General +.form-element { + width: 100%; +} + +// Design +.form-element { + label { + display: block; + font-size: 12px; + text-transform: uppercase; + font-weight: 900; + margin-bottom: 0.6em; + color: rgba(0,0,0,0.8); + } + input, textarea, select { + display: block; + background: $color__grey; + border: 0; + font-size: 14px; + padding: 1em; + transition: all 0.2s ease-out; + width: 100%; + border: 1px solid transparent; + &:hover { + background: darken($color__grey, 5%); + box-shadow: none; + } + &:focus, &:active { + outline: none; + background: darken($color__grey, 5%); + border: 1px solid $color__primary; + box-shadow: none; + } + } + + /* Type radoi */ + input[type="radio"] { + display: inline-block; + width: auto; + appearance: none; + border-radius: 50%; + width: 16px; + height: 16px; + padding: 0; + border: 0; + background: #fff; + border: 1px solid rgba(0,0,0,0.4); + transition: 0.2s all linear; + outline: none; + position: relative; + top: 2px; + &:hover { + cursor: pointer; + border: 1px solid $color__primary; + box-shadow: 0 0 0 1px $color__primary inset; + } + &:checked { + border: 1px solid $color__primary; + box-shadow: 0 0 0 4px $color__primary inset; + } + & + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; + &:hover { + cursor: pointer; + } + &:active { + outline: none; + } + } + } + + /* type checkbox */ + input[type="checkbox"] { + width: auto; + visibility: hidden; + display: none; + & + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; + position: relative; + &:hover { + cursor: pointer; + } + &:active { + outline: none; + } + &::before { + display: inline-block; + content: ''; + width: 14px; + height: 14px; + background: #fff; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4); + border: 2px solid #fff; + @include transition(); + margin-right: 0.6em; + } + } + &:not(:checked) + label:hover::before { + box-shadow: 0 0 0 2px $color__primary; + } + &:checked + label { + &::before { + box-shadow: 0 0 0 2px $color__primary; + background: $color__primary; + } + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_checkbox.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_checkbox.scss new file mode 100644 index 0000000..56213d5 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_checkbox.scss @@ -0,0 +1,52 @@ +/** Général */ +.wpeo-form .form-element { + input[type="checkbox"].form-field { + display: inline-block; + width: auto; + } +} + +/** Design */ +.wpeo-form .form-element { + input[type="checkbox"].form-field { + width: auto; + visibility: hidden; + display: none; + + & + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; + position: relative; + + &:hover { + cursor: pointer; + } + &:active { + outline: none; + } + &::before { + display: inline-block; + content: ''; + width: 14px; + height: 14px; + background: transparent; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4); + border: 2px solid #fff; + @include transition(); + margin-right: 0.6em; + } + } + &:not(:checked) + label:hover::before { + box-shadow: 0 0 0 2px $color__primary; + } + &:checked + label { + &::before { + box-shadow: 0 0 0 2px $color__primary; + background: $color__primary; + } + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_form.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_form.scss new file mode 100644 index 0000000..4fc5fd6 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_form.scss @@ -0,0 +1,155 @@ +/*-------------------------------------------------------------- + Module : Form + Version : 1.0.0 + --------------------------------------------------------------*/ + +@import "input"; +@import "radio"; +@import "checkbox"; + +/** Formulaire design */ +.wpeo-form .form-element { + width: 100%; + + .form-label { + display: block; + font-size: 12px; + text-transform: uppercase; + font-weight: 900; + margin: 0.6em 0; + color: rgba(0,0,0,0.8); + } + .form-field-container { + display: block; + @include flexbox(); + flex-wrap: nowrap; + + &:hover { + box-shadow: none; + } + } + .form-field { + @include transition(); + border-radius: 0; + + &:hover { + box-shadow: none; + } + } + .form-sublabel { + font-size: 12px; + font-style: italic; + color: rgba(0,0,0,0.6); + } +} + +/** Alignement */ +.wpeo-form .form-element { + .form-field-inline { + margin-right: 0.4em; + } + &.form-align-vertical .form-field-container { + flex-direction: column; + } + &.form-align-horizontal .form-field-container { + flex-wrap: wrap; + } +} + +/** Couleur */ +.wpeo-form .form-element { + .form-field-container { + .form-field, [class*="form-field-icon"] { + background: $color__grey; + } + &:hover .form-field, &:hover [class*="form-field-icon"] { + background: darken($color__grey, 5%); + } + } + [class*="form-field-label"] { + background: darken($color__grey, 5%); + } +} +.wpeo-form.form-light .form-element { + .form-field-container { + .form-field, [class*="form-field-icon"] { + background: #fff; + } + &:hover .form-field, &:hover [class*="form-field-icon"] { + background: $color__grey; + } + } + [class*="form-field-label"] { + background: $color__grey; + } +} + +/** Icone */ +.wpeo-form .form-element { + [class*="form-field-icon"] { + padding: 0.8em 0 0.8em 0.8em; + color: rgba(0,0,0,0.4); + font-size: 16px; + @include transition(); + + [class*="fa"] { + vertical-align: middle; + } + } + .form-field-icon-prev { + padding: 0.8em 0 0.8em 0.8em; + } + .form-field-icon-next { + padding: 0.8em 0.8em 0.8em 0; + } +} + +/** Previous & next label */ +.wpeo-form .form-element { + [class*="form-field-label"] { + padding: 1.2em 1em; + font-size: 12px; + } + .form-field-label-prev { + border-right: 1px solid rgba(0,0,0,0.1); + } + .form-field-label-next { + border-left: 1px solid rgba(0,0,0,0.1); + } +} + +/** Required */ +.wpeo-form .form-element { + &.form-element-required .form-label::after { + display: inline-block; + content: '*'; + color: $color__red; + padding: 0 0.4em; + } +} + +/** Erreur sur un champs */ +.wpeo-form .form-element { + &.form-element-error .form-field-container { + border: 1px solid $color__red; + } +} + +/** Champs disabled */ +.wpeo-form .form-element { + &.form-element-disable .form-field-container { + opacity: 0.6; + pointer-events: none; + } +} + +/* Simple */ +.wpeo-form { + // @import "simple"; +} + + +/* Moderne */ +.wpeo-form { + // @import "moderne"; +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_input.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_input.scss new file mode 100644 index 0000000..2e7f4c0 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_input.scss @@ -0,0 +1,75 @@ +/** Reset des champs de base */ +.wpeo-form { + input, textarea, select { + border: 0; + font-size: 14px; + background: transparent; + padding: 0; + margin: 0; + width: 100%; + padding: 1em; + box-shadow: none; + + &:focus, &:active { + outline: none; + box-shadow: none; + } + } + input[type="submit"] { + width: auto; + } +} + +/** compatibilité Date */ +.wpeo-form .group-date .mysql-date { + display: none; +} + +/* Compatibility Dropdown */ +.wpeo-form .wpeo-dropdown { + display: block; + width: 100%; + + .dropdown-toggle { + width: 100%; + display: block; + @include transition(); + border: 0; + font-size: 14px; + padding: 1em 2em 1em 1em; + margin: 0; + + &:hover { + cursor: pointer; + } + } + .dropdown-toggle > .svg-inline--fa { + position: absolute; + right: 1em; + top: 50%; + transform: translateY(-50%); + } +} +.wpeo-form .form-element.disable { + .dropdown-toggle > .svg-inline--fa { + display: none; + } +} + +/* Compatibility Autocomplete */ +.wpeo-form .wpeo-autocomplete { + display: block; + width: 100%; + .autocomplete-label { + box-shadow: none; + padding: 0.74em 1em; + } +} +.wpeo-form.form-light { + .wpeo-autocomplete .autocomplete-label { + background: #fff; + &:hover { + background: $color__grey; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/form/_radio.scss b/core/external/eo-framework/core/assets/css/scss/modules/form/_radio.scss new file mode 100644 index 0000000..9faf61e --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/form/_radio.scss @@ -0,0 +1,53 @@ +/** Général */ +.wpeo-form .form-element { + input[type="radio"].form-field { + display: inline-block; + width: auto; + } +} + +/** Design */ +.wpeo-form .form-element { + input[type="radio"].form-field { + appearance: none; + border-radius: 50%; + width: 16px; + height: 16px; + padding: 0; + border: 0; + background: transparent !important; + border: 1px solid rgba(0,0,0,0.4); + transition: 0.2s all linear; + outline: none; + position: relative; + top: 2px; + + &::before { + display: none !important; + content: '' !important; + } + &:hover { + cursor: pointer; + border: 1px solid $color__primary; + box-shadow: 0 0 0 1px $color__primary inset; + background: transparent !important; + } + &:checked { + border: 1px solid $color__primary; + box-shadow: 0 0 0 4px $color__primary inset; + } + & + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; + &:hover { + cursor: pointer; + } + &:active { + outline: none; + } + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/grid/_grid.scss b/core/external/eo-framework/core/assets/css/scss/modules/grid/_grid.scss new file mode 100644 index 0000000..a76fe29 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/grid/_grid.scss @@ -0,0 +1,79 @@ +/*-------------------------------------------------------------- + Module : Grid + Version : 1.0.0 + + .wpeo-grid -> classe de base du mobule + .grid-x -> Définit le nombre d'élément par ligne + .grid-x -> Sur un élément, multiplie sa taille par le nombre X + .grid-padding-x -> ajoute du padding +--------------------------------------------------------------*/ + +.wpeo-grid { + @include flexbox(); + margin-left: -0.5em; + margin-right: -0.5em; + width: 100%; + + > * { + padding: 0.5em !important; + } + @for $i from 1 through 6 { + &.grid-#{$i} > * { + width: 100%/$i; + } + // Chaque élément enfant peut modifier sa propre taille par rapport au container + @for $y from 1 through 6 { + @if ( $y <= $i ) { + &.grid-#{$i} > .grid-#{$y} { + width: (100%/$i) * $y; + } + } + } + } + + @media ( max-width: $media__medium ) { + &.grid-1 > * { + width: 100%; + } + &.grid-2 > *, &.grid-3 > *, &.grid-4 > *, &.grid-5 > *, &.grid-6 > * { + width: 50%; + } + } + @media ( max-width: $media__small ) { + &.grid-1 > *, &.grid-2 > *, &.grid-3 > *, &.grid-4 > *, &.grid-5 > *, &.grid-6 > * { + width: 100%; + } + } +} + +/** Grid Padding */ +.wpeo-grid { + &.grid-padding-0 { + margin-left: 0; + margin-right: 0; + > * { + padding: 0 !important; + } + } + &.grid-padding-1 { + margin-left: -0.2em; + margin-right: -0.2em; + > * { + padding: 0.2em !important; + } + } + &.grid-padding-2 { + margin-left: -0.5em; + margin-right: -0.5em; + > * { + padding: 0.5em !important; // Par défaut + } + } + &.grid-padding-3 { + margin-left: -1em; + margin-right: -1em; + > * { + padding: 1em !important; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/gridlayout/_gridlayout.scss b/core/external/eo-framework/core/assets/css/scss/modules/gridlayout/_gridlayout.scss new file mode 100644 index 0000000..38933df --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/gridlayout/_gridlayout.scss @@ -0,0 +1,77 @@ +.wpeo-gridlayout { + display: grid; + grid-gap: 1em 1em; + grid-template-columns: repeat( 4, 1fr ); +} + +/** Définition des tailles */ +.wpeo-gridlayout { + /** Du parent */ + @for $i from 1 through 6 { + &.grid-#{$i} { + grid-template-columns: repeat( $i, 1fr ); + } + + /** Chaque enfant peut modifier sa propre taille */ + @for $y from 1 through 6 { + @if ( $y <= $i ) { + &.grid-#{$i} > .gridw-#{$y} { + grid-column: auto / span $y; + + @if ( $y > 1 ) { + @media ( max-width: $media__medium ) { + grid-column: auto / span 2; + } + } + } + } + } + } +} + +/** Mages */ +.wpeo-gridlayout { + @for $i from 0 through 6 { + &.grid-margin-#{$i} { + margin: #{$i}em 0; + } + } +} + +/** Gouttières */ +.wpeo-gridlayout { + @for $i from 0 through 6 { + &.grid-gap-#{$i} { + grid-gap: #{$i}em #{$i}em; + } + } +} + + +/** Définition des hauteur des enfants */ +.wpeo-gridlayout { + @for $i from 1 through 6 { + > .gridh-#{$i} { + grid-row: auto / span $i; + + @media ( max-width: $media__medium ) { + grid-row: auto / span 1 !important; + } + } + } +} + +/** Media queries */ +.wpeo-gridlayout { + @media ( max-width: $media__medium ) { + grid-template-columns: repeat( 2, 1fr ) !important; + } + @media ( max-width: $media__small ) { + grid-template-columns: repeat( 1, 1fr ) !important; + } + > * { + @media ( max-width: $media__small ) { + grid-column: auto / span 1 !important; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/loader/_loader.scss b/core/external/eo-framework/core/assets/css/scss/modules/loader/_loader.scss new file mode 100644 index 0000000..5ef2476 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/loader/_loader.scss @@ -0,0 +1,35 @@ +/*-------------------------------------------------------------- + Module : Loader + Version : 1.0.0 + + .wpeo-loader => classe de base pour le module + .loader-spin => icone de chargement +--------------------------------------------------------------*/ + +.wpeo-loader { + transition: all 0.2s ease-out; + pointer-events: none; + opacity: 0.5; + position: relative; + + .loader-spin { + position: absolute; + border: 3px solid #a7a7a7; + border-top: 3px solid darken($color__primary, 40%); + border-radius: 50%; + width: 20px; + height: 20px; + z-index: 99; + left: 50%; + top: 50%; + margin: 0 !important; + padding: 0 !important; + animation: loader-spin 1s ease-out infinite; + } +} + + + @keyframes loader-spin { + 0% { transform: translate(-50%, -50%) rotate(0deg); } + 100% { transform: translate(-50%, -50%) rotate(360deg); } + } diff --git a/core/external/eo-framework/core/assets/css/scss/modules/modal/_modal.scss b/core/external/eo-framework/core/assets/css/scss/modules/modal/_modal.scss new file mode 100644 index 0000000..a7eedbd --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/modal/_modal.scss @@ -0,0 +1,110 @@ +/*-------------------------------------------------------------- + Module : Modal + Version : 1.0.0 + + .wpeo-modal -> classe de base du mobule + .modalactive -> lance l'apparition de la modal + .no-modal-close -> désactive l'icone fermeture +--------------------------------------------------------------*/ + +.wpeo-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99998; + background: rgba(39,42,53,.9); + opacity: 0; + pointer-events: none; + @include transition(); + + &.modal-active { + opacity: 1; + pointer-events: auto; + .modal-container { + transform: translate(-50%, -50%); + } + } + &.modal-force-display { + .modal-close { + display: none; + } + } +} + +.wpeo-modal { + .modal-container { + position: absolute; + transition: all 0.2s ease-out; + width: 100%; + max-width: 860px; + height: 100%; + max-height: 560px; + background: #fff; + padding: 2em; + margin: auto; + top: 50%; + left: 50%; + transform: translate(-50%, -60%); + @media ( max-width: $media__small ) { + padding: 1em; + } + } + + .modal-container { + .modal-header { + height: 10%; + display: flex; + } + .modal-content { + height: 78%; + } + .modal-footer { + height: 12%; + } + } + .modal-container .modal-header { + .modal-title, .modal-close { + margin: auto 0; + } + .modal-title { + text-transform: uppercase; + font-size: 18px; + white-space: normal; + @media ( max-width: $media__medium ) { + font-size: 16px; + } + @media ( max-width: $media__small ) { + font-size: 14px; + } + } + .modal-close { + margin-left: auto; + color: rgba(0,0,0,0.3); + padding: 4px; + transition: all 0.2s ease-out; + &:hover { + cursor: pointer; + color: $color__primary; + } + } + } + .modal-container .modal-content { + overflow-y: auto; + font-size: 14px; + @media ( max-width: $media__small ) { + font-size: 12px; + } + } + .modal-container .modal-footer { + text-align: right; + padding-top: 1em; + &.left { + text-align: left; + } + &.center { + text-align: center; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/notice/_notice.scss b/core/external/eo-framework/core/assets/css/scss/modules/notice/_notice.scss new file mode 100644 index 0000000..2d0318e --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/notice/_notice.scss @@ -0,0 +1,56 @@ +/*-------------------------------------------------------------- + Module : Notice + Version : 1.0.0 + + .wpeo-notice -> classe de base du mobule +--------------------------------------------------------------*/ + +/* General */ +.wpeo-notice { + position: relative; + font-size: 1em; + padding: 1em; + overflow: hidden; + border-radius: 3px; + border: solid #eee 1px; + margin: 1em 0; + display: flex; + @include transition(); + align-items: center; + + &::before { + display: block; + @include fa-icon; + font-weight: 900; + font-size: 24px; + } + .notice-content { + width: 100%; + padding: 0 1em; + color: rgba(0,0,0,0.6); + } + .notice-title { + font-size: 20px; + font-weight: 600; + color: rgba(0,0,0,0.9); + } + .notice-subtitle { + font-size: 14px; + } + .notice-close { + color: rgba(0,0,0,0.3); + @include transition(); + + &:hover { + color: $color__primary; + cursor: pointer; + } + } + ul { + padding: 0 0 0 1.4em; + margin: 0.4em 0; + } +} + +/** Status */ +@import "status"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/notice/_status.scss b/core/external/eo-framework/core/assets/css/scss/modules/notice/_status.scss new file mode 100644 index 0000000..a2ae8dc --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/notice/_status.scss @@ -0,0 +1,55 @@ +/** Info */ +.wpeo-notice.notice-info { + border-left: solid $color__blue 6px; + color: $color__blue; + background: rgba( $color__blue, 0.05 ); + + &::before { + content: fa-content($fa-var-info-circle); + } + .notice-title, .notice-subtitle, a { + color: $color__blue; + } +} + +/** Error */ +.wpeo-notice.notice-error { + border-left: solid $color__red 6px; + color: $color__red; + background: rgba( $color__red, 0.05 ); + + &::before { + content: fa-content($fa-var-times-circle); + } + .notice-title, .notice-subtitle, a { + color: $color__red; + } +} + +/** Warning */ +.wpeo-notice.notice-warning { + border-left: solid $color__yellow 6px; + color: $color__yellow; + background: rgba( $color__yellow, 0.05 ); + + &::before { + content: fa-content($fa-var-exclamation-triangle); + } + .notice-title, .notice-subtitle, a { + color: $color__yellow; + } +} + +/** Success */ +.wpeo-notice.notice-success { + border-left: solid $color__green 6px; + color: $color__green; + background: rgba( $color__green, 0.05 ); + + &::before { + content: fa-content($fa-var-check-circle); + } + .notice-title, .notice-subtitle, a { + color: $color__green; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/notification/_notification.scss b/core/external/eo-framework/core/assets/css/scss/modules/notification/_notification.scss new file mode 100644 index 0000000..a46f2e9 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/notification/_notification.scss @@ -0,0 +1,143 @@ +/*-------------------------------------------------------------- + Module : Notification + Version : 1.0.0 + + .wpeo-notification -> classe de base du mobule + .notification-active -> lance l'apparition de la notification +--------------------------------------------------------------*/ + +/* General */ +.wpeo-notification { + position: fixed; + background: rgba(255,255,255,0.6); + @include transition(); + z-index: 900; + padding: 1em; + bottom: 3em; + right: 1em; + max-width: 600px; + box-shadow: 0 0 14px 1px rgba(0,0,0,0.2); + display: flex; + opacity: 0; + pointer-events: none; + + &:hover { + background: rgba(255,255,255,1); + box-shadow: 0 0 14px 1px rgba(0,0,0,0.4); + cursor: pointer; + } + &.notification-active { + animation: notification 0.8s ease-out; + animation-fill-mode: forwards; + opacity: 1; + pointer-events: all; + } +} + +/* Content */ +.wpeo-notification { + > * { + margin: auto 0.2em; + } + /* Thumbnail */ + .notification-thumbnail { + width: 40px; + height: 40px; + background: rgba(0,0,0,0.1); + border-radius: 50%; + display: inline-block; + overflow: hidden; + margin-right: 0.4em; + img { + width: 100%; + height: auto; + } + } + /* Icon */ + .notification-icon { + margin-right: 0.4em; + } + /* Title */ + .notification-title { + font-size: 14px; + color: rgba(0,0,0,0.7); + a { + color: $color__primary; + text-decoration: none; + + &:hover { + text-decoration: underline; + } + } + } + /* Close button */ + .notification-close { + padding-left: 0.4em; + color: rgba(0,0,0,0.2); + transition: all 0.2s ease-out; + margin-left: auto; + + &:hover { + color: $color__primary; + } + } +} + +/** Couleur */ +.wpeo-notification { + .notification-icon { + color: rgba(0,0,0,0.3); + } + &.notification-green { + border-left: 4px solid $color__green; + .notification-icon { + color: $color__green; + } + } + &.notification-orange { + border-left: 4px solid $color__yellow; + .notification-icon { + color: $color__yellow; + } + } + &.notification-red { + border-left: 4px solid $color__red; + .notification-icon { + color: $color__red; + } + } + &.notification-blue { + border-left: 4px solid $color__blue; + .notification-icon { + color: $color__blue; + } + } +} + +@keyframes notification { + from, 60%, 75%, 90%, to { + animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); + } + + 0% { + opacity: 0; + transform: translate3d(0, -40px, 0); + } + + 60% { + opacity: 1; + transform: translate3d(0, 10px, 0); + } + + 75% { + transform: translate3d(0, -10px, 0); + } + + 90% { + transform: translate3d(0, 5px, 0); + } + + to { + transform: none; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/pagination/_pagination.scss b/core/external/eo-framework/core/assets/css/scss/modules/pagination/_pagination.scss new file mode 100644 index 0000000..7fca66f --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/pagination/_pagination.scss @@ -0,0 +1,71 @@ +/*-------------------------------------------------------------- + Module : Pagination + Version : 1.0.0 + + .wpeo-pagination -> classe de base du mobule +--------------------------------------------------------------*/ + +.wpeo-pagination { + @include flexbox(); + margin: 0; + padding: 0; + + .pagination-element { + margin: 0; + list-style-type: none; + padding: 0 0.2em; + + a { + padding: 0.2em 0.8em; + display: inline-block; + background: #fff; + @include transition(); + border-radius: 4px; + text-decoration: none; + color: rgba(0,0,0,0.8); + font-size: 12px; + &:hover { + background: rgba(0,0,0,0.1); + } + } + .pagination-icon { + font-size: 12px; + } + } +} + +/* Pagination active */ +.wpeo-pagination .pagination-element { + &.pagination-current { + a { + background: $color__primary; + color: #fff; + &:hover { + background: $color__primary; + } + } + } +} + +/* Prev & Next */ +.wpeo-pagination .pagination-element { + &.pagination-prev, &.pagination-next { + font-weight: 700; + a { + background: rgba(0,0,0,0.05); + &:hover { + background: rgba(0,0,0,0.15); + } + } + } + &.pagination-prev { + .pagination-icon { + margin-right: 0.4em; + } + } + &.pagination-next { + .pagination-icon { + margin-left: 0.4em; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/popover/_popover.scss b/core/external/eo-framework/core/assets/css/scss/modules/popover/_popover.scss new file mode 100644 index 0000000..2748d2a --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/popover/_popover.scss @@ -0,0 +1,107 @@ +/*-------------------------------------------------------------- + Module : Popover + Version : 1.0.0 + + .wpeo-popover -> classe de base du mobule + .popover-primary -> popover sur fond rouge + .popover-light -> popover sur fond rouge + .popover-red -> popover sur fond rouge +--------------------------------------------------------------*/ + +.wpeo-popover { + display: block; + position: absolute; + bottom: 0; + left: 0; + opacity: 0; + pointer-events: none; + z-index: 99999; + white-space: nowrap; + background: $color__dark; + color: #fff; + border-radius: 6px; + font-size: 0.8rem; + padding: 0 1em; + height: 2.2em; + line-height: 2.2em; + + &::before { + display: block; + content: ''; + width: 0; + height: 0; + border-style: solid; + position: absolute; + } + &:focus { + outline: none; + } +} + +/* Couleurs */ +@mixin set-arrow-color($color) { + &.tooltip-top::before { + border-color: $color transparent transparent transparent; + } + &.tooltip-right::before { + border-color: transparent $color transparent transparent; + } + &.tooltip-bottom::before { + border-color: transparent transparent $color transparent; + } + &.tooltip-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-popover { + &.popover-dark { + background: $color__dark; + @include set-arrow-color($color__dark); + } + &.popover-primary { + background: $color__primary; + @include set-arrow-color($color__primary); + } + &.popover-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-color($color__grey); + } + &.popover-red { + background: $color__red; + @include set-arrow-color($color__red); + } +} + +/* Position de la fleche */ +.wpeo-popover { + &.popover-top::before { + border-width: 6px 6px 0 6px; + border-color: $color__dark transparent transparent transparent; + bottom: -6px; + left: 50%; + transform: translateX(-50%); + } + &.popover-right::before { + border-width: 6px 6px 6px 0; + border-color: transparent $color__dark transparent transparent; + top: 50%; + transform: translateY(-50%); + left: -6px; + } + &.popover-bottom::before { + border-width: 0 6px 6px 6px; + border-color: transparent transparent $color__dark transparent; + top: -6px; + left: 50%; + transform: translateX(-50%); + } + &.popover-left::before { + border-width: 6px 0 6px 6px; + border-color: transparent transparent transparent $color__dark; + top: 50%; + transform: translateY(-50%); + right: -6px; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/tab/_effect.scss b/core/external/eo-framework/core/assets/css/scss/modules/tab/_effect.scss new file mode 100644 index 0000000..be21676 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/tab/_effect.scss @@ -0,0 +1,50 @@ +/*-------------------------------------------------------------- + Effets + Version : 1.0.0 + +--------------------------------------------------------------*/ + +/* FADE VERTICAL */ +.wpeo-tab.tab-fade-vertical .tab-container { + .tab-content { + transform: translateY(-40px); + animation: 0.3s linear 0s disappear_tab; + } + .tab-content.tab-active { + transform: translateY(0); + animation: 0.2s ease-out 0s appear_tab; + } +} + +@keyframes disappear_tab { + from { opacity: 1; transform: translateY(0px); } + to { opacity: 0; transform: translateY(40px); } +} + +@keyframes appear_tab { + from { opacity: 0; transform: translateY(-40px); } + to { opacity: 1; transform: translateY(0); } +} + + +/* FADE HORIZONTAL */ +.wpeo-tab.tab-fade-horizontal .tab-container { + .tab-content { + transform: translateX(-40px); + animation: 0.4s linear 0s disappear_tab_2; + } + .tab-content.tab-active { + transform: translateX(0); + animation: 0.2s ease-out 0s appear_tab_2; + } +} + +@keyframes disappear_tab_2 { + from { opacity: 1; transform: translateX(0px); } + to { opacity: 0; transform: translateX(40px); } +} + +@keyframes appear_tab_2 { + from { opacity: 0; transform: translateX(-40px); } + to { opacity: 1; transform: translateX(0); } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/tab/_tab.scss b/core/external/eo-framework/core/assets/css/scss/modules/tab/_tab.scss new file mode 100644 index 0000000..38c82c5 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/tab/_tab.scss @@ -0,0 +1,119 @@ +/*-------------------------------------------------------------- + Module : Tab + Version : 1.0.0 + + .wpeo-tab -> classe de base du mobule +--------------------------------------------------------------*/ + +/* Liste */ +.wpeo-tab .tab-list { + margin: 0; + padding: 0; + @include flexbox(); + + .tab-element { + list-style-type: none; + padding: 1.6em 2.4em; + margin: 0; + text-transform: uppercase; + font-size: 12px !important; + position: relative; + background: rgba(0,0,0,0.1); + color: rgba(0,0,0,0.6); + @include transition(); + + &::before { + display: block; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 0px; + height: 2px; + background: $color__primary; + @include transition(all, 0.2s, ease-out); + } + &:hover { + cursor: pointer; + &:not(.tab-active) { + background: rgba(0,0,0,0.2); + } + } + > a { + color: rgba(0,0,0,0.6); + } + + /* Active */ + &.tab-active { + background: #fff; + color: $color__primary; + + > a { + color: $color__primary; + } + &::before { + width: 100%; + } + } + + /* Disabled */ + &.tab-disabled { + color: rgba(0,0,0,0.2); + pointer-events: none; + + > a { + color: rgba(0,0,0,0.4); + } + } + + /* Icon */ + .tab-icon { + display: block; + text-align: center; + font-size: 20px; + margin-bottom: 0.4em; + } + } +} + +/* Content */ +.wpeo-tab .tab-container { + position: relative; + + .tab-content { + display: block; + width: 100%; + padding: 2em; + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; + pointer-events: none; + background: #fff; + @include transition(); + z-index: 10; + + &.tab-active { + opacity: 1; + pointer-events: all; + position: static; + } + } +} + +/* Dropdown Compatibility */ +.wpeo-tab .tab-list { + .tab-element.wpeo-dropdown { + padding: 0; + + .dropdown-toggle { + padding: 1.6em 2.4em; + } + } +} + + +/* Liste des effets */ +@import "template"; +@import "effect"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/tab/_template.scss b/core/external/eo-framework/core/assets/css/scss/modules/tab/_template.scss new file mode 100644 index 0000000..3a26223 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/tab/_template.scss @@ -0,0 +1,46 @@ +/*-------------------------------------------------------------- + Templates + Version : 1.0.0 + +--------------------------------------------------------------*/ + +/* Vertical */ +.wpeo-tab.tab-vertical { + @include flexbox(); + flex-wrap: nowrap; + + .tab-list { + flex-direction: column; + min-width: 180px; + + .tab-element { + &::before { + width: 2px; + height: 0; + } + + /* Active */ + &.tab-active { + color: $color__primary; + a { + color: $color__primary; + } + &::before { + height: 100%; + } + } + + /* Icon */ + .tab-icon { + display: inline-block; + margin: 0 0.4em 0 0; + font-size: 14px; + text-align: left; + } + } + } + + .tab-container { + width: 100%;; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/table/_flex.scss b/core/external/eo-framework/core/assets/css/scss/modules/table/_flex.scss new file mode 100644 index 0000000..d341d76 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/table/_flex.scss @@ -0,0 +1,88 @@ +/*-------------------------------------------------------------- + Table Flex +--------------------------------------------------------------*/ + +.wpeo-table.table-flex { + display: flex; + flex-direction: column; + font-size: 14px; +} + +/** Ligne */ +.wpeo-table.table-flex .table-row { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + + &:not(.table-header):nth-of-type(odd) { + background: rgba(0,0,0,0.05); + } +} + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: $color__primary; + + .table-cell { + font-weight: 700; + color: #fff; + } +} + +/** Cellule */ +.wpeo-table.table-flex .table-cell { + margin: auto 0; + width: 100%; + padding: 0.8em 0.6em; + + @media ( max-width: $media__medium ) { + padding: 0.4em; + } +} + +/** Taille générale des cellules */ +.wpeo-table.table-flex { + @for $i from 1 through 10 { + &.table-#{$i} .table-cell { + width: 100%/$i; + } + } +} + +/** Taille spécifiques des cellules */ +.wpeo-table.table-flex .table-cell { + $w: 25; + @for $i from 1 through 20 { + $y: $w*$i; + &.table-#{$y} { + max-width: #{$y}px; + min-width: #{$y}px; + } + } + &.table-full { + width: 100%; + } +} + +/** Différentes classes */ +.wpeo-table.table-flex .table-cell { + &.table-end { + text-align: right; + margin-left: auto; + } + &.table-padding-0 { + padding: 0; + } +} + +/** Responsive mobile */ +@media ( max-width: $media__small ) { + .wpeo-table.table-flex { + .table-row { + flex-direction: column; + } + .table-cell { + width: 100%; + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/table/_standard.scss b/core/external/eo-framework/core/assets/css/scss/modules/table/_standard.scss new file mode 100644 index 0000000..6b99191 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/table/_standard.scss @@ -0,0 +1,73 @@ +/*-------------------------------------------------------------- + Table Standard +--------------------------------------------------------------*/ + +.wpeo-table { + width: 100%; + border: 1px solid rgba(0,0,0,0.1); + font-size: 14px; + border-collapse: collapse; + + td, th, tr { + text-align: left; + vertical-align: middle; + } + th { + font-weight: 700; + } + th, td { + padding: 0.8em 0.6em; + @media( max-width: $media__medium ) { + padding: 0.4em; + } + } +} + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: $color__primary; + color: #fff; +} + +/* Body */ +.wpeo-table > tbody { + tr:nth-child(odd) { + background: #fff; + } + tr:nth-child(even) { + background: rgba(0,0,0,0.05); + } +} + +/* Responsive */ +@media ( max-width: $media__small ) { + .wpeo-table { + > thead { + display: none; + } + > tbody { + tr { + border-bottom: 1px solid rgba(0,0,0,0.1); + &:nth-child(even) { + background: #fff; + } + &:last-child { + border-bottom: 0; + } + } + td, th { + display: block; + width: 100%; + font-size: 14px; + padding: 0.4em 0.6em; + &:before { + content: attr(data-title); + display: inline-block; + color: $color__primary; + width: 100%; + max-width: 160px; + } + } + } + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/table/_table.scss b/core/external/eo-framework/core/assets/css/scss/modules/table/_table.scss new file mode 100644 index 0000000..6f9e501 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/table/_table.scss @@ -0,0 +1,10 @@ +/*-------------------------------------------------------------- + Module : Table + Version : 1.0.0 + + .wpeo-table -> classe de base du mobule +--------------------------------------------------------------*/ + + +@import "standard"; +@import "flex"; diff --git a/core/external/eo-framework/core/assets/css/scss/modules/tooltip/_tooltip.scss b/core/external/eo-framework/core/assets/css/scss/modules/tooltip/_tooltip.scss new file mode 100644 index 0000000..a4327b7 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/tooltip/_tooltip.scss @@ -0,0 +1,107 @@ +/*-------------------------------------------------------------- + Module : Tooltip + Version : 1.0.0 + + .wpeo-tooltip -> classe de base du mobule + .tooltip-primary -> tooltip sur fond rouge + .tooltip-light -> tooltip sur fond rouge + .tooltip-red -> tooltip sur fond rouge +--------------------------------------------------------------*/ + +.wpeo-tooltip { + display: block; + position: absolute; + bottom: 0; + left: 0; + opacity: 0; + pointer-events: none; + z-index: 99999; + white-space: nowrap; + background: $color__dark; + color: #fff; + border-radius: 6px; + font-size: 0.8rem; + padding: 0 1em; + height: 2.2em; + line-height: 2.2em; + + &::before { + display: block; + content: ''; + width: 0; + height: 0; + border-style: solid; + position: absolute; + } + &:focus { + outline: none; + } +} + +/* Couleurs */ +@mixin set-arrow-color($color) { + &.tooltip-top::before { + border-color: $color transparent transparent transparent; + } + &.tooltip-right::before { + border-color: transparent $color transparent transparent; + } + &.tooltip-bottom::before { + border-color: transparent transparent $color transparent; + } + &.tooltip-left::before { + border-color: transparent transparent transparent $color; + } +} + +.wpeo-tooltip { + &.tooltip-dark { + background: $color__dark; + @include set-arrow-color($color__dark); + } + &.tooltip-primary { + background: $color__primary; + @include set-arrow-color($color__primary); + } + &.tooltip-light { + background: $color__grey; + color: rgba(0,0,0,0.6); + @include set-arrow-color($color__grey); + } + &.tooltip-red { + background: $color__red; + @include set-arrow-color($color__red); + } +} + +/* Position de la fleche */ +.wpeo-tooltip { + &.tooltip-top::before { + border-width: 6px 6px 0 6px; + border-color: $color__dark transparent transparent transparent; + bottom: -6px; + left: 50%; + transform: translateX(-50%); + } + &.tooltip-right::before { + border-width: 6px 6px 6px 0; + border-color: transparent $color__dark transparent transparent; + top: 50%; + transform: translateY(-50%); + left: -6px; + } + &.tooltip-bottom::before { + border-width: 0 6px 6px 6px; + border-color: transparent transparent $color__dark transparent; + top: -6px; + left: 50%; + transform: translateX(-50%); + } + &.tooltip-left::before { + border-width: 6px 0 6px 6px; + border-color: transparent transparent transparent $color__dark; + top: 50%; + transform: translateY(-50%); + right: -6px; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/modules/util/_util.scss b/core/external/eo-framework/core/assets/css/scss/modules/util/_util.scss new file mode 100644 index 0000000..7335351 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/modules/util/_util.scss @@ -0,0 +1,11 @@ +/*-------------------------------------------------------------- + Module : Util + Version : 1.0.0 + + Contient toutes les classes utilitaires + .wpeo-util-hidden -> Masque l'élément +--------------------------------------------------------------*/ + +.wpeo-util-hidden { + display: none !important; +} diff --git a/core/external/eo-framework/core/assets/css/scss/style.scss b/core/external/eo-framework/core/assets/css/scss/style.scss new file mode 100644 index 0000000..880ea48 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/style.scss @@ -0,0 +1,78 @@ +/*! + EOXIA FRAMEWORK CSS + Created by Eoxia + + version: 1.2.0 +*/ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# fonticons +# Normalize +# Modules + ## Notification + +--------------------------------------------------------------*/ + +@import "mixins/mixins-master"; +@import "variables/variables"; + +/*-------------------------------------------------------------- +# Fonticons +--------------------------------------------------------------*/ +@import "fontawesome/fontawesome"; + +/*-------------------------------------------------------------- +# Normalize +--------------------------------------------------------------*/ +.wpeo-wrap { + @import "normalize"; + * { + box-sizing: border-box; + } +} + +/*-------------------------------------------------------------- +# Core Modules +--------------------------------------------------------------*/ +@import "core/core"; + +/*-------------------------------------------------------------- +# Modules +--------------------------------------------------------------*/ +@import "modules/modules"; + +/*-------------------------------------------------------------- +# Tmp Jimmy Module Screen Options +--------------------------------------------------------------*/ + +.wpeo-screen-options { + text-align: right; + width: 100%; + + .content { + width: 99%; + text-align: left; + margin-left: 20px; + + .wpeo-form { + padding: 20px; + margin: 0; + + background-color: #3495f0; + border: 1px solid #ccd0d4; + + li { + width: 20%; + } + } + + } +} + +.wpeo-modal { + .xdsoft_datetimepicker { + z-index: 99999!important; + } +} diff --git a/core/external/eo-framework/core/assets/css/scss/variables/_colors.scss b/core/external/eo-framework/core/assets/css/scss/variables/_colors.scss new file mode 100644 index 0000000..5fac466 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/variables/_colors.scss @@ -0,0 +1,11 @@ +$color__text-main: #333333; + +$color__primary: #898de5; +$color__primary-text: #fff; + +$color__red: #e05353; +$color__yellow: #e9ad4f; +$color__dark: #2b2b2b; +$color__grey: #ececec; +$color__blue: #0d8aff; +$color__green: #47e58e; diff --git a/core/external/eo-framework/core/assets/css/scss/variables/_structure.scss b/core/external/eo-framework/core/assets/css/scss/variables/_structure.scss new file mode 100644 index 0000000..35d9bac --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/variables/_structure.scss @@ -0,0 +1,3 @@ +$media__large: 1200px; +$media__medium: 770px; +$media__small: 480px; diff --git a/core/external/eo-framework/core/assets/css/scss/variables/_typography.scss b/core/external/eo-framework/core/assets/css/scss/variables/_typography.scss new file mode 100644 index 0000000..257e2d7 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/variables/_typography.scss @@ -0,0 +1,2 @@ +$font__main: 'Open Sans'; +$font__icon: 'FontAwesome'; diff --git a/core/external/eo-framework/core/assets/css/scss/variables/_variables.scss b/core/external/eo-framework/core/assets/css/scss/variables/_variables.scss new file mode 100644 index 0000000..72ab884 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/scss/variables/_variables.scss @@ -0,0 +1,3 @@ +@import "colors"; +@import "typography"; +@import "structure"; diff --git a/core/external/eo-framework/core/assets/css/style.css b/core/external/eo-framework/core/assets/css/style.css new file mode 100644 index 0000000..e5375c8 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/style.css @@ -0,0 +1,5908 @@ +@charset "UTF-8"; +/*! + EOXIA FRAMEWORK CSS + Created by Eoxia + + version: 1.2.0 +*/ +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# fonticons +# Normalize +# Modules + ## Notification + +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- +# Fonticons +--------------------------------------------------------------*/ +/*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */ +.fa, +.fas, +.far, +.fal, +.fab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +/*-------------------------------------------------------------- +# Normalize +--------------------------------------------------------------*/ +.wpeo-wrap html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +.wpeo-wrap body { + margin: 0; +} + +.wpeo-wrap article, +.wpeo-wrap aside, +.wpeo-wrap details, +.wpeo-wrap figcaption, +.wpeo-wrap figure, +.wpeo-wrap footer, +.wpeo-wrap header, +.wpeo-wrap main, +.wpeo-wrap menu, +.wpeo-wrap nav, +.wpeo-wrap section, +.wpeo-wrap summary { + display: block; +} + +.wpeo-wrap audio, +.wpeo-wrap canvas, +.wpeo-wrap progress, +.wpeo-wrap video { + display: inline-block; + vertical-align: baseline; +} + +.wpeo-wrap audio:not([controls]) { + display: none; + height: 0; +} + +.wpeo-wrap [hidden], +.wpeo-wrap template { + display: none; +} + +.wpeo-wrap a { + background-color: transparent; +} + +.wpeo-wrap a:active, +.wpeo-wrap a:hover { + outline: 0; +} + +.wpeo-wrap abbr[title] { + border-bottom: 1px dotted; +} + +.wpeo-wrap b, +.wpeo-wrap strong { + font-weight: bold; +} + +.wpeo-wrap dfn { + font-style: italic; +} + +.wpeo-wrap h1 { + font-size: 2em; + margin: 0.67em 0; +} + +.wpeo-wrap mark { + background: #ff0; + color: #000; +} + +.wpeo-wrap small { + font-size: 80%; +} + +.wpeo-wrap sub, +.wpeo-wrap sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.wpeo-wrap sup { + top: -0.5em; +} + +.wpeo-wrap sub { + bottom: -0.25em; +} + +.wpeo-wrap img { + border: 0; +} + +.wpeo-wrap svg:not(:root) { + overflow: hidden; +} + +.wpeo-wrap figure { + margin: 1em 40px; +} + +.wpeo-wrap hr { + -webkit-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +.wpeo-wrap pre { + overflow: auto; +} + +.wpeo-wrap code, +.wpeo-wrap kbd, +.wpeo-wrap pre, +.wpeo-wrap samp { + font-family: monospace, monospace; + font-size: 1em; +} + +.wpeo-wrap button, +.wpeo-wrap input, +.wpeo-wrap optgroup, +.wpeo-wrap select, +.wpeo-wrap textarea { + color: inherit; + font: inherit; + margin: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-wrap button { + overflow: visible; +} + +.wpeo-wrap button, +.wpeo-wrap select { + text-transform: none; +} + +.wpeo-wrap button, +.wpeo-wrap html input[type="button"], +.wpeo-wrap input[type="reset"], +.wpeo-wrap input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} + +.wpeo-wrap button[disabled], +.wpeo-wrap html input[disabled] { + cursor: default; +} + +.wpeo-wrap button::-moz-focus-inner, +.wpeo-wrap input::-moz-focus-inner { + border: 0; + padding: 0; +} + +.wpeo-wrap input { + line-height: normal; +} + +.wpeo-wrap input[type="checkbox"], +.wpeo-wrap input[type="radio"] { + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} + +.wpeo-wrap input[type="number"]::-webkit-inner-spin-button, +.wpeo-wrap input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +.wpeo-wrap input[type="search"]::-webkit-search-cancel-button, +.wpeo-wrap input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +.wpeo-wrap fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +.wpeo-wrap legend { + border: 0; + padding: 0; +} + +.wpeo-wrap textarea { + overflow: auto; +} + +.wpeo-wrap optgroup { + font-weight: bold; +} + +.wpeo-wrap table { + border-collapse: collapse; + border-spacing: 0; +} + +.wpeo-wrap td, +.wpeo-wrap th { + padding: 0; +} + +.wpeo-wrap * { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +/*-------------------------------------------------------------- +# Core Modules +--------------------------------------------------------------*/ +.eo-custom-page #adminmenuwrap, +.eo-custom-page #wpadminbar, +.eo-custom-page #adminmenumain, +.eo-custom-page #screen-meta-links, +.eo-custom-page #wpfooter { + display: none !important; +} + +body.eo-custom-page.admin-bar { + position: relative; + top: -32px; +} + +body.eo-custom-page #wpcontent { + margin-left: 0 !important; + padding-left: 0; +} + +body.eo-custom-page .nav-wrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: absolute; + left: 0; + top: 0; + width: 200px; + height: 100%; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +body.eo-custom-page .nav-wrap::before { + display: block; + content: ''; + position: fixed; + top: 0; + left: 0; + width: 200px; + height: 100%; + background: #1c1d1b; + z-index: -1; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +body.eo-custom-page .nav-wrap #logo { + padding: 0.5em; + text-align: center; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); +} + +body.eo-custom-page .nav-wrap #logo h1 { + height: 100px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 0; +} + +body.eo-custom-page .nav-wrap #logo a { + margin: auto; +} + +body.eo-custom-page .nav-wrap #logo img { + max-width: 50px; + width: 100%; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +body.eo-custom-page .nav-wrap .nav-menu.nav-bottom { + margin-top: 2em; +} + +body.eo-custom-page .nav-wrap.wrap-reduce { + width: 40px; +} + +body.eo-custom-page .nav-wrap.wrap-reduce::before { + width: 40px; +} + +body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu.nav-bottom .item { + padding: 0; +} + +/** Menu elements */ +body.eo-custom-page .nav-menu .item { + color: #fff; + text-decoration: none; + font-size: 14px; +} + +body.eo-custom-page .nav-menu .item:focus { + outline: none; +} + +body.eo-custom-page .nav-menu .item:hover > div { + background: rgba(255, 255, 255, 0.2); +} + +body.eo-custom-page .nav-menu .item.item-active > div { + background: rgba(255, 255, 255, 0.2); +} + +body.eo-custom-page .nav-menu .item > div { + padding: 0.7em; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +body.eo-custom-page .nav-menu .item .nav-icon { + margin-right: 0.6em; + min-width: 20px; + line-height: 1.3; +} + +body.eo-custom-page .nav-menu .item .item-label { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + white-space: nowrap; +} + +body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item > div { + text-align: center; +} + +body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item .item-label { + opacity: 0; + pointer-events: none; + -webkit-transform: translateX(-10px); + transform: translateX(-10px); +} + +body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item .nav-icon { + margin-right: 0; +} + +/** Menu du bas */ +body.eo-custom-page .nav-menu.nav-bottom .item { + padding: 0 0.6em; + display: block; + margin-bottom: 0.5em; +} + +body.eo-custom-page .nav-menu.nav-bottom .item > div { + border-bottom: 0; +} + +body.eo-custom-page .nav-menu.nav-bottom .item:not(.minimize-menu) > div { + background: rgba(255, 255, 255, 0.2); + color: #fff; + border-radius: 6px; +} + +body.eo-custom-page .nav-menu.nav-bottom .item:not(.minimize-menu):hover > div { + background: rgba(255, 255, 255, 0.4); +} + +body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu > div { + color: rgba(255, 255, 255, 0.6); +} + +body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu:hover > div { + background: none; + color: white; +} + +body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu .item-label { + -webkit-transition: none; + transition: none; +} + +body.eo-custom-page .content-wrap { + margin-left: 200px; + padding: 0; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +body.eo-custom-page .content-wrap.content-reduce { + margin-left: 40px; +} + +body.eo-custom-page .content-wrap #top-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 1em; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); +} + +body.eo-custom-page .content-wrap #top-header ul, body.eo-custom-page .content-wrap #top-header li { + margin: 0; +} + +body.eo-custom-page .content-wrap #top-header .nav-left { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + max-width: 70%; + margin: auto 0 auto 0; +} + +body.eo-custom-page .content-wrap #top-header .nav-left > * { + margin-top: auto; + margin-bottom: auto; +} + +body.eo-custom-page .content-wrap #top-header .nav-right { + max-width: 30%; + margin: auto 0 auto auto; +} + +body.eo-custom-page .content-wrap #top-header .nav-bottom { + width: 100%; + margin-top: 0.5em; +} + +body.eo-custom-page .content-wrap #top-header .nav-left .page-title { + font-size: 22px; + margin-right: 0.6em; +} + +body.eo-custom-page .content-wrap #top-header .nav-left .nav-header li { + margin: 0; +} + +body.eo-custom-page .content-wrap #top-header .nav-right .navigation-avatar img { + border-radius: 50%; +} + +body.eo-custom-page .content-wrap .eo-wrap { + margin: 0; +} + +body.eo-custom-page .content-wrap .wpeo-wrap { + margin: 0; + padding: 1em; +} + +body.eo-custom-page .content-wrap .wpeo-box { + background: #fff; + padding: 1.4em; +} + +/*-------------------------------------------------------------- +# Modules +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- + ## Grid Layout +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- + Module : Grid + Version : 1.0.0 + + .wpeo-grid -> classe de base du mobule + .grid-x -> Définit le nombre d'élément par ligne + .grid-x -> Sur un élément, multiplie sa taille par le nombre X + .grid-padding-x -> ajoute du padding +--------------------------------------------------------------*/ +.wpeo-grid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-left: -0.5em; + margin-right: -0.5em; + width: 100%; +} + +.wpeo-grid > * { + padding: 0.5em !important; +} + +.wpeo-grid.grid-1 > * { + width: 100%; +} + +.wpeo-grid.grid-1 > .grid-1 { + width: 100%; +} + +.wpeo-grid.grid-2 > * { + width: 50%; +} + +.wpeo-grid.grid-2 > .grid-1 { + width: 50%; +} + +.wpeo-grid.grid-2 > .grid-2 { + width: 100%; +} + +.wpeo-grid.grid-3 > * { + width: 33.33333%; +} + +.wpeo-grid.grid-3 > .grid-1 { + width: 33.33333%; +} + +.wpeo-grid.grid-3 > .grid-2 { + width: 66.66667%; +} + +.wpeo-grid.grid-3 > .grid-3 { + width: 100%; +} + +.wpeo-grid.grid-4 > * { + width: 25%; +} + +.wpeo-grid.grid-4 > .grid-1 { + width: 25%; +} + +.wpeo-grid.grid-4 > .grid-2 { + width: 50%; +} + +.wpeo-grid.grid-4 > .grid-3 { + width: 75%; +} + +.wpeo-grid.grid-4 > .grid-4 { + width: 100%; +} + +.wpeo-grid.grid-5 > * { + width: 20%; +} + +.wpeo-grid.grid-5 > .grid-1 { + width: 20%; +} + +.wpeo-grid.grid-5 > .grid-2 { + width: 40%; +} + +.wpeo-grid.grid-5 > .grid-3 { + width: 60%; +} + +.wpeo-grid.grid-5 > .grid-4 { + width: 80%; +} + +.wpeo-grid.grid-5 > .grid-5 { + width: 100%; +} + +.wpeo-grid.grid-6 > * { + width: 16.66667%; +} + +.wpeo-grid.grid-6 > .grid-1 { + width: 16.66667%; +} + +.wpeo-grid.grid-6 > .grid-2 { + width: 33.33333%; +} + +.wpeo-grid.grid-6 > .grid-3 { + width: 50%; +} + +.wpeo-grid.grid-6 > .grid-4 { + width: 66.66667%; +} + +.wpeo-grid.grid-6 > .grid-5 { + width: 83.33333%; +} + +.wpeo-grid.grid-6 > .grid-6 { + width: 100%; +} + +@media (max-width: 770px) { + .wpeo-grid.grid-1 > * { + width: 100%; + } + .wpeo-grid.grid-2 > *, .wpeo-grid.grid-3 > *, .wpeo-grid.grid-4 > *, .wpeo-grid.grid-5 > *, .wpeo-grid.grid-6 > * { + width: 50%; + } +} + +@media (max-width: 480px) { + .wpeo-grid.grid-1 > *, .wpeo-grid.grid-2 > *, .wpeo-grid.grid-3 > *, .wpeo-grid.grid-4 > *, .wpeo-grid.grid-5 > *, .wpeo-grid.grid-6 > * { + width: 100%; + } +} + +/** Grid Padding */ +.wpeo-grid.grid-padding-0 { + margin-left: 0; + margin-right: 0; +} + +.wpeo-grid.grid-padding-0 > * { + padding: 0 !important; +} + +.wpeo-grid.grid-padding-1 { + margin-left: -0.2em; + margin-right: -0.2em; +} + +.wpeo-grid.grid-padding-1 > * { + padding: 0.2em !important; +} + +.wpeo-grid.grid-padding-2 { + margin-left: -0.5em; + margin-right: -0.5em; +} + +.wpeo-grid.grid-padding-2 > * { + padding: 0.5em !important; +} + +.wpeo-grid.grid-padding-3 { + margin-left: -1em; + margin-right: -1em; +} + +.wpeo-grid.grid-padding-3 > * { + padding: 1em !important; +} + +.wpeo-gridlayout { + display: grid; + grid-gap: 1em 1em; + grid-template-columns: repeat(4, 1fr); +} + +/** Définition des tailles */ +.wpeo-gridlayout { + /** Du parent */ + /** Chaque enfant peut modifier sa propre taille */ + /** Chaque enfant peut modifier sa propre taille */ + /** Chaque enfant peut modifier sa propre taille */ + /** Chaque enfant peut modifier sa propre taille */ + /** Chaque enfant peut modifier sa propre taille */ + /** Chaque enfant peut modifier sa propre taille */ +} + +.wpeo-gridlayout.grid-1 { + grid-template-columns: repeat(1, 1fr); +} + +.wpeo-gridlayout.grid-1 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-2 { + grid-template-columns: repeat(2, 1fr); +} + +.wpeo-gridlayout.grid-2 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-2 > .gridw-2 { + grid-column: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-2 > .gridw-2 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-3 { + grid-template-columns: repeat(3, 1fr); +} + +.wpeo-gridlayout.grid-3 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-3 > .gridw-2 { + grid-column: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-3 > .gridw-2 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-3 > .gridw-3 { + grid-column: auto/span 3; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-3 > .gridw-3 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-4 { + grid-template-columns: repeat(4, 1fr); +} + +.wpeo-gridlayout.grid-4 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-4 > .gridw-2 { + grid-column: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-4 > .gridw-2 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-4 > .gridw-3 { + grid-column: auto/span 3; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-4 > .gridw-3 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-4 > .gridw-4 { + grid-column: auto/span 4; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-4 > .gridw-4 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-5 { + grid-template-columns: repeat(5, 1fr); +} + +.wpeo-gridlayout.grid-5 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-5 > .gridw-2 { + grid-column: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-5 > .gridw-2 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-5 > .gridw-3 { + grid-column: auto/span 3; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-5 > .gridw-3 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-5 > .gridw-4 { + grid-column: auto/span 4; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-5 > .gridw-4 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-5 > .gridw-5 { + grid-column: auto/span 5; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-5 > .gridw-5 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-6 { + grid-template-columns: repeat(6, 1fr); +} + +.wpeo-gridlayout.grid-6 > .gridw-1 { + grid-column: auto/span 1; +} + +.wpeo-gridlayout.grid-6 > .gridw-2 { + grid-column: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-6 > .gridw-2 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-6 > .gridw-3 { + grid-column: auto/span 3; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-6 > .gridw-3 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-6 > .gridw-4 { + grid-column: auto/span 4; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-6 > .gridw-4 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-6 > .gridw-5 { + grid-column: auto/span 5; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-6 > .gridw-5 { + grid-column: auto / span 2; + } +} + +.wpeo-gridlayout.grid-6 > .gridw-6 { + grid-column: auto/span 6; +} + +@media (max-width: 770px) { + .wpeo-gridlayout.grid-6 > .gridw-6 { + grid-column: auto / span 2; + } +} + +/** Mages */ +.wpeo-gridlayout.grid-margin-0 { + margin: 0em 0; +} + +.wpeo-gridlayout.grid-margin-1 { + margin: 1em 0; +} + +.wpeo-gridlayout.grid-margin-2 { + margin: 2em 0; +} + +.wpeo-gridlayout.grid-margin-3 { + margin: 3em 0; +} + +.wpeo-gridlayout.grid-margin-4 { + margin: 4em 0; +} + +.wpeo-gridlayout.grid-margin-5 { + margin: 5em 0; +} + +.wpeo-gridlayout.grid-margin-6 { + margin: 6em 0; +} + +/** Gouttières */ +.wpeo-gridlayout.grid-gap-0 { + grid-gap: 0em 0em; +} + +.wpeo-gridlayout.grid-gap-1 { + grid-gap: 1em 1em; +} + +.wpeo-gridlayout.grid-gap-2 { + grid-gap: 2em 2em; +} + +.wpeo-gridlayout.grid-gap-3 { + grid-gap: 3em 3em; +} + +.wpeo-gridlayout.grid-gap-4 { + grid-gap: 4em 4em; +} + +.wpeo-gridlayout.grid-gap-5 { + grid-gap: 5em 5em; +} + +.wpeo-gridlayout.grid-gap-6 { + grid-gap: 6em 6em; +} + +/** Définition des hauteur des enfants */ +.wpeo-gridlayout > .gridh-1 { + grid-row: auto/span 1; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-1 { + grid-row: auto / span 1 !important; + } +} + +.wpeo-gridlayout > .gridh-2 { + grid-row: auto/span 2; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-2 { + grid-row: auto / span 1 !important; + } +} + +.wpeo-gridlayout > .gridh-3 { + grid-row: auto/span 3; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-3 { + grid-row: auto / span 1 !important; + } +} + +.wpeo-gridlayout > .gridh-4 { + grid-row: auto/span 4; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-4 { + grid-row: auto / span 1 !important; + } +} + +.wpeo-gridlayout > .gridh-5 { + grid-row: auto/span 5; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-5 { + grid-row: auto / span 1 !important; + } +} + +.wpeo-gridlayout > .gridh-6 { + grid-row: auto/span 6; +} + +@media (max-width: 770px) { + .wpeo-gridlayout > .gridh-6 { + grid-row: auto / span 1 !important; + } +} + +/** Media queries */ +@media (max-width: 770px) { + .wpeo-gridlayout { + grid-template-columns: repeat(2, 1fr) !important; + } +} + +@media (max-width: 480px) { + .wpeo-gridlayout { + grid-template-columns: repeat(1, 1fr) !important; + } +} + +@media (max-width: 480px) { + .wpeo-gridlayout > * { + grid-column: auto / span 1 !important; + } +} + +/*-------------------------------------------------------------- + ## Animation +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- + Module : Animations + Version : 1.2.0 + + .wpeo-animate => classe de base pour le module + .animate-hover => Permet de lancer l'animation au survol + .animate-on => ajouter cette classe lors d'un event js pour animer l'element +--------------------------------------------------------------*/ +.wpeo-animate { + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: 1s; + animation-duration: 1s; +} + +.wpeo-animate.flipOutX, .wpeo-animate.flipOutY, .wpeo-animate.bounceIn, .wpeo-animate.bounceOut { + -webkit-animation-duration: .75s; + animation-duration: .75s; +} + +.wpeo-animate.animate-hover:hover.bounce, .wpeo-animate.animate-on.bounce { + -webkit-animation-name: bounce; + animation-name: bounce; + -webkit-transform-origin: center bottom; + transform-origin: center bottom; +} + +.wpeo-animate.animate-hover:hover.flash, .wpeo-animate.animate-on.flash { + -webkit-animation-name: flash; + animation-name: flash; +} + +.wpeo-animate.animate-hover:hover.headShake, .wpeo-animate.animate-on.headShake { + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-name: headShake; + animation-name: headShake; +} + +.wpeo-animate.animate-hover:hover.jello, .wpeo-animate.animate-on.jello { + -webkit-animation-name: jello; + animation-name: jello; + -webkit-transform-origin: center; + transform-origin: center; +} + +.wpeo-animate.animate-hover:hover.pulse, .wpeo-animate.animate-on.pulse { + -webkit-animation-name: pulse; + animation-name: pulse; +} + +.wpeo-animate.animate-hover:hover.rubberBand, .wpeo-animate.animate-on.rubberBand { + -webkit-animation-name: rubberBand; + animation-name: rubberBand; +} + +.wpeo-animate.animate-hover:hover.shake, .wpeo-animate.animate-on.shake { + -webkit-animation-name: shake; + animation-name: shake; +} + +.wpeo-animate.animate-hover:hover.swing, .wpeo-animate.animate-on.swing { + -webkit-transform-origin: top center; + transform-origin: top center; + -webkit-animation-name: swing; + animation-name: swing; +} + +.wpeo-animate.animate-hover:hover.tada, .wpeo-animate.animate-on.tada { + -webkit-animation-name: tada; + animation-name: tada; +} + +.wpeo-animate.animate-hover:hover.wobble, .wpeo-animate.animate-on.wobble { + -webkit-animation-name: wobble; + animation-name: wobble; +} + +.wpeo-animate.animate-hover:hover.bounceIn, .wpeo-animate.animate-on.bounceIn { + -webkit-animation-name: bounceIn; + animation-name: bounceIn; +} + +.wpeo-animate.animate-hover:hover.bounceInDown, .wpeo-animate.animate-on.bounceInDown { + -webkit-animation-name: bounceInDown; + animation-name: bounceInDown; +} + +.wpeo-animate.animate-hover:hover.bounceInLeft, .wpeo-animate.animate-on.bounceInLeft { + -webkit-animation-name: bounceInLeft; + animation-name: bounceInLeft; +} + +.wpeo-animate.animate-hover:hover.bounceInRight, .wpeo-animate.animate-on.bounceInRight { + -webkit-animation-name: bounceInRight; + animation-name: bounceInRight; +} + +.wpeo-animate.animate-hover:hover.bounceInUp, .wpeo-animate.animate-on.bounceInUp { + -webkit-animation-name: bounceInUp; + animation-name: bounceInUp; +} + +.wpeo-animate.animate-hover:hover.bounceOut, .wpeo-animate.animate-on.bounceOut { + -webkit-animation-name: bounceOut; + animation-name: bounceOut; +} + +.wpeo-animate.animate-hover:hover.bounceOutDown, .wpeo-animate.animate-on.bounceOutDown { + -webkit-animation-name: bounceOutDown; + animation-name: bounceOutDown; +} + +.wpeo-animate.animate-hover:hover.bounceOutLeft, .wpeo-animate.animate-on.bounceOutLeft { + -webkit-animation-name: bounceOutLeft; + animation-name: bounceOutLeft; +} + +.wpeo-animate.animate-hover:hover.bounceOutRight, .wpeo-animate.animate-on.bounceOutRight { + -webkit-animation-name: bounceOutRight; + animation-name: bounceOutRight; +} + +.wpeo-animate.animate-hover:hover.bounceOutUp, .wpeo-animate.animate-on.bounceOutUp { + -webkit-animation-name: bounceOutUp; + animation-name: bounceOutUp; +} + +.wpeo-animate.animate-hover:hover.fadeIn, .wpeo-animate.animate-on.fadeIn { + -webkit-animation-name: fadeIn; + animation-name: fadeIn; +} + +.wpeo-animate.animate-hover:hover.fadeInDown, .wpeo-animate.animate-on.fadeInDown { + -webkit-animation-name: fadeInDown; + animation-name: fadeInDown; +} + +.wpeo-animate.animate-hover:hover.fadeInDownBig, .wpeo-animate.animate-on.fadeInDownBig { + -webkit-animation-name: fadeInDownBig; + animation-name: fadeInDownBig; +} + +.wpeo-animate.animate-hover:hover.fadeInLeft, .wpeo-animate.animate-on.fadeInLeft { + -webkit-animation-name: fadeInLeft; + animation-name: fadeInLeft; +} + +.wpeo-animate.animate-hover:hover.fadeInLeftBig, .wpeo-animate.animate-on.fadeInLeftBig { + -webkit-animation-name: fadeInLeftBig; + animation-name: fadeInLeftBig; +} + +.wpeo-animate.animate-hover:hover.fadeInRight, .wpeo-animate.animate-on.fadeInRight { + -webkit-animation-name: fadeInRight; + animation-name: fadeInRight; +} + +.wpeo-animate.animate-hover:hover.fadeInRightBig, .wpeo-animate.animate-on.fadeInRightBig { + -webkit-animation-name: fadeInRightBig; + animation-name: fadeInRightBig; +} + +.wpeo-animate.animate-hover:hover.fadeInUp, .wpeo-animate.animate-on.fadeInUp { + -webkit-animation-name: fadeInUp; + animation-name: fadeInUp; +} + +.wpeo-animate.animate-hover:hover.fadeInUpBig, .wpeo-animate.animate-on.fadeInUpBig { + -webkit-animation-name: fadeInUpBig; + animation-name: fadeInUpBig; +} + +.wpeo-animate.animate-hover:hover.fadeOut, .wpeo-animate.animate-on.fadeOut { + -webkit-animation-name: fadeOut; + animation-name: fadeOut; +} + +.wpeo-animate.animate-hover:hover.fadeOutDown, .wpeo-animate.animate-on.fadeOutDown { + -webkit-animation-name: fadeOutDown; + animation-name: fadeOutDown; +} + +.wpeo-animate.animate-hover:hover.fadeOutDownBig, .wpeo-animate.animate-on.fadeOutDownBig { + -webkit-animation-name: fadeOutDownBig; + animation-name: fadeOutDownBig; +} + +.wpeo-animate.animate-hover:hover.fadeOutLeft, .wpeo-animate.animate-on.fadeOutLeft { + -webkit-animation-name: fadeOutLeft; + animation-name: fadeOutLeft; +} + +.wpeo-animate.animate-hover:hover.fadeOutLeftBig, .wpeo-animate.animate-on.fadeOutLeftBig { + -webkit-animation-name: fadeOutLeftBig; + animation-name: fadeOutLeftBig; +} + +.wpeo-animate.animate-hover:hover.fadeOutRight, .wpeo-animate.animate-on.fadeOutRight { + -webkit-animation-name: fadeOutRight; + animation-name: fadeOutRight; +} + +.wpeo-animate.animate-hover:hover.fadeOutRightBig, .wpeo-animate.animate-on.fadeOutRightBig { + -webkit-animation-name: fadeOutRightBig; + animation-name: fadeOutRightBig; +} + +.wpeo-animate.animate-hover:hover.fadeOutUp, .wpeo-animate.animate-on.fadeOutUp { + -webkit-animation-name: fadeOutUp; + animation-name: fadeOutUp; +} + +.wpeo-animate.animate-hover:hover.fadeOutUpBig, .wpeo-animate.animate-on.fadeOutUpBig { + -webkit-animation-name: fadeOutUpBig; + animation-name: fadeOutUpBig; +} + +.wpeo-animate.animate-hover:hover.slideInDown, .wpeo-animate.animate-on.slideInDown { + -webkit-animation-name: slideInDown; + animation-name: slideInDown; +} + +.wpeo-animate.animate-hover:hover.slideInLeft, .wpeo-animate.animate-on.slideInLeft { + -webkit-animation-name: slideInLeft; + animation-name: slideInLeft; +} + +.wpeo-animate.animate-hover:hover.slideInRight, .wpeo-animate.animate-on.slideInRight { + -webkit-animation-name: slideInRight; + animation-name: slideInRight; +} + +.wpeo-animate.animate-hover:hover.slideInUp, .wpeo-animate.animate-on.slideInUp { + -webkit-animation-name: slideInUp; + animation-name: slideInUp; +} + +.wpeo-animate.animate-hover:hover.slideOutDown, .wpeo-animate.animate-on.slideOutDown { + -webkit-animation-name: slideOutDown; + animation-name: slideOutDown; +} + +.wpeo-animate.animate-hover:hover.slideOutLeft, .wpeo-animate.animate-on.slideOutLeft { + -webkit-animation-name: slideOutLeft; + animation-name: slideOutLeft; +} + +.wpeo-animate.animate-hover:hover.slideOutRight, .wpeo-animate.animate-on.slideOutRight { + -webkit-animation-name: slideOutRight; + animation-name: slideOutRight; +} + +.wpeo-animate.animate-hover:hover.slideOutUp, .wpeo-animate.animate-on.slideOutUp { + -webkit-animation-name: slideOutUp; + animation-name: slideOutUp; +} + +.wpeo-animate.animate-hover:hover.bounceInLight, .wpeo-animate.animate-on.bounceInLight { + -webkit-animation-name: bounceInLight; + animation-name: bounceInLight; +} + +.wpeo-animate.animate-hover:hover.rotate, .wpeo-animate.animate-on.rotate { + -webkit-animation-name: rotate; + animation-name: rotate; +} + +.wpeo-animate.animate-hover:hover.downAndUp, .wpeo-animate.animate-on.downAndUp { + -webkit-animation-name: downAndUp; + animation-name: downAndUp; +} + +/* Import des animations */ +@-webkit-keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); + } +} +@keyframes bounce { + from, 20%, 53%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 40%, 43% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -30px, 0); + transform: translate3d(0, -30px, 0); + } + 70% { + -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); + -webkit-transform: translate3d(0, -15px, 0); + transform: translate3d(0, -15px, 0); + } + 90% { + -webkit-transform: translate3d(0, -4px, 0); + transform: translate3d(0, -4px, 0); + } +} + +@-webkit-keyframes flash { + from, 50%, to { + opacity: 1; + } + 25%, 75% { + opacity: 0; + } +} + +@keyframes flash { + from, 50%, to { + opacity: 1; + } + 25%, 75% { + opacity: 0; + } +} + +@-webkit-keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes headShake { + 0% { + -webkit-transform: translateX(0); + transform: translateX(0); + } + 6.5% { + -webkit-transform: translateX(-6px) rotateY(-9deg); + transform: translateX(-6px) rotateY(-9deg); + } + 18.5% { + -webkit-transform: translateX(5px) rotateY(7deg); + transform: translateX(5px) rotateY(7deg); + } + 31.5% { + -webkit-transform: translateX(-3px) rotateY(-5deg); + transform: translateX(-3px) rotateY(-5deg); + } + 43.5% { + -webkit-transform: translateX(2px) rotateY(3deg); + transform: translateX(2px) rotateY(3deg); + } + 50% { + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@-webkit-keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + 77.7% { + -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); + transform: skewX(0.39063deg) skewY(0.39063deg); + } + 88.8% { + -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); + transform: skewX(-0.19531deg) skewY(-0.19531deg); + } +} + +@keyframes jello { + from, 11.1%, to { + -webkit-transform: none; + transform: none; + } + 22.2% { + -webkit-transform: skewX(-12.5deg) skewY(-12.5deg); + transform: skewX(-12.5deg) skewY(-12.5deg); + } + 33.3% { + -webkit-transform: skewX(6.25deg) skewY(6.25deg); + transform: skewX(6.25deg) skewY(6.25deg); + } + 44.4% { + -webkit-transform: skewX(-3.125deg) skewY(-3.125deg); + transform: skewX(-3.125deg) skewY(-3.125deg); + } + 55.5% { + -webkit-transform: skewX(1.5625deg) skewY(1.5625deg); + transform: skewX(1.5625deg) skewY(1.5625deg); + } + 66.6% { + -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg); + transform: skewX(-0.78125deg) skewY(-0.78125deg); + } + 77.7% { + -webkit-transform: skewX(0.39063deg) skewY(0.39063deg); + transform: skewX(0.39063deg) skewY(0.39063deg); + } + 88.8% { + -webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg); + transform: skewX(-0.19531deg) skewY(-0.19531deg); + } +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes pulse { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 50% { + -webkit-transform: scale3d(1.05, 1.05, 1.05); + transform: scale3d(1.05, 1.05, 1.05); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes rubberBand { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 30% { + -webkit-transform: scale3d(1.25, 0.75, 1); + transform: scale3d(1.25, 0.75, 1); + } + 40% { + -webkit-transform: scale3d(0.75, 1.25, 1); + transform: scale3d(0.75, 1.25, 1); + } + 50% { + -webkit-transform: scale3d(1.15, 0.85, 1); + transform: scale3d(1.15, 0.85, 1); + } + 65% { + -webkit-transform: scale3d(0.95, 1.05, 1); + transform: scale3d(0.95, 1.05, 1); + } + 75% { + -webkit-transform: scale3d(1.05, 0.95, 1); + transform: scale3d(1.05, 0.95, 1); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@keyframes shake { + from, to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + 10%, 30%, 50%, 70%, 90% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 20%, 40%, 60%, 80% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } +} + +@-webkit-keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@keyframes swing { + 20% { + -webkit-transform: rotate3d(0, 0, 1, 15deg); + transform: rotate3d(0, 0, 1, 15deg); + } + 40% { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + 60% { + -webkit-transform: rotate3d(0, 0, 1, 5deg); + transform: rotate3d(0, 0, 1, 5deg); + } + 80% { + -webkit-transform: rotate3d(0, 0, 1, -5deg); + transform: rotate3d(0, 0, 1, -5deg); + } + to { + -webkit-transform: rotate3d(0, 0, 1, 0deg); + transform: rotate3d(0, 0, 1, 0deg); + } +} + +@-webkit-keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 10%, 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada { + from { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 10%, 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); + } + 30%, 50%, 70%, 90% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); + } + 40%, 60%, 80% { + -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ +@-webkit-keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + to { + -webkit-transform: none; + transform: none; + } +} +@keyframes wobble { + from { + -webkit-transform: none; + transform: none; + } + 15% { + -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + 30% { + -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + 45% { + -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + 60% { + -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + 75% { + -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceIn { + from, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } + 20% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 60% { + opacity: 1; + -webkit-transform: scale3d(1.03, 1.03, 1.03); + transform: scale3d(1.03, 1.03, 1.03); + } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + to { + opacity: 1; + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInDown { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -3000px, 0); + transform: translate3d(0, -3000px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 25px, 0); + transform: translate3d(0, 25px, 0); + } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInLeft { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(-3000px, 0, 0); + transform: translate3d(-3000px, 0, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(25px, 0, 0); + transform: translate3d(25px, 0, 0); + } + 75% { + -webkit-transform: translate3d(-10px, 0, 0); + transform: translate3d(-10px, 0, 0); + } + 90% { + -webkit-transform: translate3d(5px, 0, 0); + transform: translate3d(5px, 0, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes bounceInRight { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + -webkit-transform: translate3d(3000px, 0, 0); + transform: translate3d(3000px, 0, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(-25px, 0, 0); + transform: translate3d(-25px, 0, 0); + } + 75% { + -webkit-transform: translate3d(10px, 0, 0); + transform: translate3d(10px, 0, 0); + } + 90% { + -webkit-transform: translate3d(-5px, 0, 0); + transform: translate3d(-5px, 0, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes bounceInUp { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + -webkit-transform: translate3d(0, 3000px, 0); + transform: translate3d(0, 3000px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + 75% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 90% { + -webkit-transform: translate3d(0, -5px, 0); + transform: translate3d(0, -5px, 0); + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@-webkit-keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} + +@keyframes bounceOut { + 20% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 50%, 55% { + opacity: 1; + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + to { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 0.3); + transform: scale3d(0.3, 0.3, 0.3); + } +} + +@-webkit-keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes bounceOutDown { + 20% { + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@-webkit-keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes bounceOutLeft { + 20% { + opacity: 1; + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@-webkit-keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes bounceOutRight { + 20% { + opacity: 1; + -webkit-transform: translate3d(-20px, 0, 0); + transform: translate3d(-20px, 0, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@-webkit-keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes bounceOutUp { + 20% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 40%, 45% { + opacity: 1; + -webkit-transform: translate3d(0, 20px, 0); + transform: translate3d(0, 20px, 0); + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@-webkit-keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-webkit-keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInDownBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInLeftBig { + from { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInRightBig { + from { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes fadeInUpBig { + from { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-webkit-keyframes fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes fadeOutDownBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@keyframes fadeOutDownBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 2000px, 0); + transform: translate3d(0, 2000px, 0); + } +} + +@-webkit-keyframes fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@-webkit-keyframes fadeOutLeftBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@keyframes fadeOutLeftBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-2000px, 0, 0); + transform: translate3d(-2000px, 0, 0); + } +} + +@-webkit-keyframes fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@-webkit-keyframes fadeOutRightBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@keyframes fadeOutRightBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(2000px, 0, 0); + transform: translate3d(2000px, 0, 0); + } +} + +@-webkit-keyframes fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes fadeOutUpBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@keyframes fadeOutUpBig { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -2000px, 0); + transform: translate3d(0, -2000px, 0); + } +} + +@-webkit-keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInDown { + from { + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@-webkit-keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInLeft { + from { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@-webkit-keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInRight { + from { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@-webkit-keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@keyframes slideInUp { + from { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + visibility: visible; + } + to { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} + +@-webkit-keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes slideOutDown { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes slideOutLeft { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@-webkit-keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@keyframes slideOutRight { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@-webkit-keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes slideOutUp { + from { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + to { + visibility: hidden; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes bounceInLight { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(1.2, 1.2, 1.2); + transform: scale3d(1.2, 1.2, 1.2); + } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 60% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes bounceInLight { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + 20% { + -webkit-transform: scale3d(1.2, 1.2, 1.2); + transform: scale3d(1.2, 1.2, 1.2); + } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); + } + 60% { + -webkit-transform: scale3d(1.1, 1.1, 1.1); + transform: scale3d(1.1, 1.1, 1.1); + } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); + } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@-webkit-keyframes downAndUp { + 0% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 50% { + -webkit-transform: translateY(4px); + transform: translateY(4px); + } + 100% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } +} + +@keyframes downAndUp { + 0% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + 50% { + -webkit-transform: translateY(4px); + transform: translateY(4px); + } + 100% { + -webkit-transform: translateY(0px); + transform: translateY(0px); + } +} + +@-webkit-keyframes rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } +} + +@keyframes rotate { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + } +} + +/*-------------------------------------------------------------- + Module : Autocomplete + Version : 1.2.0 + + .wpeo-autocomplete => classe de base pour le module + .autocomplete-loading -> Fais apparaître la barre de Chargement + .autocomplete-full -> Fais apparaître la croix +--------------------------------------------------------------*/ +.wpeo-autocomplete { + position: relative; +} + +.wpeo-autocomplete.autocomplete-active .autocomplete-search-list { + opacity: 1; + pointer-events: auto; + -webkit-transform: translateY(0); + transform: translateY(0); +} + +/** Couleur */ +.wpeo-autocomplete .autocomplete-label { + background: #ececec; +} + +.wpeo-autocomplete .autocomplete-search-list { + background: #ececec; +} + +.wpeo-autocomplete.autocomplete-light .autocomplete-label { + background: #fff; +} + +.wpeo-autocomplete.autocomplete-light .autocomplete-search-list { + background: #fff; +} + +/** Label */ +.wpeo-autocomplete .autocomplete-label { + display: block; + padding: 1em; + margin: 0; + position: relative; + -webkit-box-shadow: 0 2px 2px 0px rgba(0, 0, 0, 0.3); + box-shadow: 0 2px 2px 0px rgba(0, 0, 0, 0.3); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + border: 1px solid transparent; +} + +.wpeo-autocomplete .autocomplete-label:hover { + cursor: text; + border: 1px solid #898de5; +} + +.wpeo-autocomplete .autocomplete-search-input { + background-color: transparent; + border: 0; + width: 100%; + padding: 0 1.6em; + font-size: 14px; + font-weight: 400; +} + +.wpeo-autocomplete .autocomplete-search-input:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-autocomplete .autocomplete-icon-before, .wpeo-autocomplete .autocomplete-icon-after { + position: absolute; + top: 50%; +} + +.wpeo-autocomplete .autocomplete-icon-before { + left: 1em; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +/** Chargement */ +.wpeo-autocomplete .autocomplete-label .autocomplete-loading, .wpeo-autocomplete .autocomplete-label .autocomplete-loading-background { + display: block; + content: ''; + position: absolute; + bottom: 0; + left: 0; + -webkit-transition: width 0.6s linear; + transition: width 0.6s linear; + height: 3px; +} + +.wpeo-autocomplete .autocomplete-label .autocomplete-loading { + width: 10%; + background: #898de5; +} + +.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background { + width: 100%; + background: rgba(137, 141, 229, 0.4); +} + +/** Croix */ +.wpeo-autocomplete .autocomplete-icon-after { + right: 0; + padding: 1em; + color: rgba(0, 0, 0, 0.4); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + pointer-events: none; + opacity: 0; + -webkit-transform: translateY(-50%) translateX(10px); + transform: translateY(-50%) translateX(10px); + -webkit-transform-origin: 50%; + transform-origin: 50%; +} + +.wpeo-autocomplete .autocomplete-icon-after:hover { + color: rgba(0, 0, 0, 0.8); + cursor: pointer; +} + +.wpeo-autocomplete.autocomplete-full .autocomplete-icon-after { + opacity: 1; + pointer-events: all; + -webkit-transform: translateY(-50%) translateX(0); + transform: translateY(-50%) translateX(0); +} + +/** Liste de résultats */ +.wpeo-autocomplete .autocomplete-search-list { + opacity: 0; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + margin: 0; + padding: 0; + position: absolute; + -webkit-box-shadow: 0 2px 2px 0px rgba(0, 0, 0, 0.3); + box-shadow: 0 2px 2px 0px rgba(0, 0, 0, 0.3); + border-top: 1px solid rgba(0, 0, 0, 0.1); + z-index: 99; + width: 300px; + pointer-events: none; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result, .wpeo-autocomplete .autocomplete-search-list .autocomplete-result-text { + list-style-type: none; + padding: 0.6em 2.6em; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin: 0; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result:hover { + background: rgba(0, 0, 0, 0.05); + cursor: pointer; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-image { + margin-right: 1em; + width: auto; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-image.autocomplete-image-rounded { + border-radius: 50%; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-container { + margin: auto 0; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-title, .wpeo-autocomplete .autocomplete-search-list .autocomplete-result-subtitle { + display: block; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-title { + font-size: 14px; +} + +.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-subtitle { + font-size: 12px; + color: rgba(0, 0, 0, 0.5); +} + +/** Taille de la liste */ +.wpeo-autocomplete.autocomplete-small .autocomplete-search-list { + width: 200px; +} + +.wpeo-autocomplete.autocomplete-medium .autocomplete-search-list { + width: 300px; +} + +.wpeo-autocomplete.autocomplete-large .autocomplete-search-list { + width: 400px; +} + +/*-------------------------------------------------------------- + Module : Dropdown + Version : 1.0.0 + + .wpeo-dropdown -> classe de base du mobule + .grid -> Affichage en grille + .list -> Affichage en liste +--------------------------------------------------------------*/ +.wpeo-dropdown { + position: relative; + display: inline-block; +} + +.wpeo-dropdown .dropdown-toggle { + display: inline-block; +} + +.wpeo-dropdown .dropdown-toggle span ~ *[class*="icon"] { + margin-left: 10px; +} + +.wpeo-dropdown .dropdown-content { + opacity: 0; + pointer-events: none; + -webkit-transform: translateY(-10px); + transform: translateY(-10px); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + position: absolute; + background: #fff; + z-index: 99; + border: 1px solid rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 0 10px 0px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 10px 0px rgba(0, 0, 0, 0.3); + width: 220px; + padding: 0.6em; +} + +.wpeo-dropdown.dropdown-active .dropdown-content { + opacity: 1; + pointer-events: auto; + -webkit-transform: translateY(0); + transform: translateY(0); +} + +.wpeo-dropdown ul, .wpeo-dropdown li { + margin: 0; + list-style-type: none; + padding: 0; +} + +.wpeo-dropdown .dropdown-item { + display: block; + color: rgba(0, 0, 0, 0.7); + text-decoration: none; +} + +.wpeo-dropdown .dropdown-item .dropdown-result-title, .wpeo-dropdown .dropdown-item .dropdown-result-subtitle { + display: block; +} + +.wpeo-dropdown .dropdown-item .dropdown-result-title { + font-size: 14px; +} + +.wpeo-dropdown .dropdown-item .dropdown-result-subtitle { + font-size: 12px; + color: rgba(0, 0, 0, 0.5); +} + +/** Taille */ +.wpeo-dropdown.dropdown-small .dropdown-content { + width: 60px; +} + +.wpeo-dropdown.dropdown-medium .dropdown-content { + width: 220px; +} + +.wpeo-dropdown.dropdown-large .dropdown-content { + width: 360px; +} + +/** Padding */ +.wpeo-dropdown.dropdown-padding-0 .dropdown-content { + padding: 0; +} + +.wpeo-dropdown.dropdown-padding-1 .dropdown-content { + padding: 0.6em; +} + +.wpeo-dropdown.dropdown-padding-2 .dropdown-content { + padding: 1.2em; +} + +/** Alignement */ +.wpeo-dropdown.dropdown-left .dropdown-content { + left: 0; +} + +.wpeo-dropdown.dropdown-right .dropdown-content { + right: 0; +} + +.wpeo-dropdown.dropdown-horizontal.dropdown-left .dropdown-content { + left: 100%; +} + +.wpeo-dropdown.dropdown-horizontal.dropdown-right .dropdown-content { + right: 100%; +} + +/** Sens */ +.wpeo-dropdown.dropdown-horizontal .dropdown-content { + top: 0; + width: auto !important; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +/** Disable */ +.wpeo-dropdown .dropdown-item.dropdown-item-disable { + opacity: 0.6; + cursor: default !important; + pointer-events: none; +} + +.wpeo-dropdown .dropdown-content .dropdown-item { + padding: 0.6em; + background: #fff; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-dropdown .dropdown-content .dropdown-item:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.1); +} + +.wpeo-dropdown.dropdown-list .dropdown-content { + text-align: left; +} + +.wpeo-dropdown.dropdown-list .dropdown-item::after { + display: block; + content: ''; + clear: both; +} + +.wpeo-dropdown.dropdown-list .dropdown-item img { + float: left; + margin-right: 0.4em; +} + +.wpeo-dropdown.dropdown-grid .dropdown-item { + padding: 0; +} + +.wpeo-dropdown.dropdown-grid .dropdown-item img { + width: 100%; + height: auto; + display: block; +} + +/*-------------------------------------------------------------- + Module : Form + Version : 1.0.0 + --------------------------------------------------------------*/ +/** Reset des champs de base */ +.wpeo-form input, .wpeo-form textarea, .wpeo-form select { + border: 0; + font-size: 14px; + background: transparent; + padding: 0; + margin: 0; + width: 100%; + padding: 1em; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-form input:focus, .wpeo-form input:active, .wpeo-form textarea:focus, .wpeo-form textarea:active, .wpeo-form select:focus, .wpeo-form select:active { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-form input[type="submit"] { + width: auto; +} + +/** compatibilité Date */ +.wpeo-form .group-date .mysql-date { + display: none; +} + +/* Compatibility Dropdown */ +.wpeo-form .wpeo-dropdown { + display: block; + width: 100%; +} + +.wpeo-form .wpeo-dropdown .dropdown-toggle { + width: 100%; + display: block; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + border: 0; + font-size: 14px; + padding: 1em 2em 1em 1em; + margin: 0; +} + +.wpeo-form .wpeo-dropdown .dropdown-toggle:hover { + cursor: pointer; +} + +.wpeo-form .wpeo-dropdown .dropdown-toggle > .svg-inline--fa { + position: absolute; + right: 1em; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.wpeo-form .form-element.disable .dropdown-toggle > .svg-inline--fa { + display: none; +} + +/* Compatibility Autocomplete */ +.wpeo-form .wpeo-autocomplete { + display: block; + width: 100%; +} + +.wpeo-form .wpeo-autocomplete .autocomplete-label { + -webkit-box-shadow: none; + box-shadow: none; + padding: 0.74em 1em; +} + +.wpeo-form.form-light .wpeo-autocomplete .autocomplete-label { + background: #fff; +} + +.wpeo-form.form-light .wpeo-autocomplete .autocomplete-label:hover { + background: #ececec; +} + +/** Général */ +.wpeo-form .form-element input[type="radio"].form-field { + display: inline-block; + width: auto; +} + +/** Design */ +.wpeo-form .form-element input[type="radio"].form-field { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 50%; + width: 16px; + height: 16px; + padding: 0; + border: 0; + background: transparent !important; + border: 1px solid rgba(0, 0, 0, 0.4); + -webkit-transition: 0.2s all linear; + transition: 0.2s all linear; + outline: none; + position: relative; + top: 2px; +} + +.wpeo-form .form-element input[type="radio"].form-field::before { + display: none !important; + content: '' !important; +} + +.wpeo-form .form-element input[type="radio"].form-field:hover { + cursor: pointer; + border: 1px solid #898de5; + -webkit-box-shadow: 0 0 0 1px #898de5 inset; + box-shadow: 0 0 0 1px #898de5 inset; + background: transparent !important; +} + +.wpeo-form .form-element input[type="radio"].form-field:checked { + border: 1px solid #898de5; + -webkit-box-shadow: 0 0 0 4px #898de5 inset; + box-shadow: 0 0 0 4px #898de5 inset; +} + +.wpeo-form .form-element input[type="radio"].form-field + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; +} + +.wpeo-form .form-element input[type="radio"].form-field + label:hover { + cursor: pointer; +} + +.wpeo-form .form-element input[type="radio"].form-field + label:active { + outline: none; +} + +/** Général */ +.wpeo-form .form-element input[type="checkbox"].form-field { + display: inline-block; + width: auto; +} + +/** Design */ +.wpeo-form .form-element input[type="checkbox"].form-field { + width: auto; + visibility: hidden; + display: none; +} + +.wpeo-form .form-element input[type="checkbox"].form-field + label { + text-transform: none; + font-weight: 400; + font-size: 14px; + display: inline-block; + margin-right: 1em; + position: relative; +} + +.wpeo-form .form-element input[type="checkbox"].form-field + label:hover { + cursor: pointer; +} + +.wpeo-form .form-element input[type="checkbox"].form-field + label:active { + outline: none; +} + +.wpeo-form .form-element input[type="checkbox"].form-field + label::before { + display: inline-block; + content: ''; + width: 14px; + height: 14px; + background: transparent; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4); + border: 2px solid #fff; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + margin-right: 0.6em; +} + +.wpeo-form .form-element input[type="checkbox"].form-field:not(:checked) + label:hover::before { + -webkit-box-shadow: 0 0 0 2px #898de5; + box-shadow: 0 0 0 2px #898de5; +} + +.wpeo-form .form-element input[type="checkbox"].form-field:checked + label::before { + -webkit-box-shadow: 0 0 0 2px #898de5; + box-shadow: 0 0 0 2px #898de5; + background: #898de5; +} + +/** Formulaire design */ +.wpeo-form .form-element { + width: 100%; +} + +.wpeo-form .form-element .form-label { + display: block; + font-size: 12px; + text-transform: uppercase; + font-weight: 900; + margin: 0.6em 0; + color: rgba(0, 0, 0, 0.8); +} + +.wpeo-form .form-element .form-field-container { + display: block; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.wpeo-form .form-element .form-field-container:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-form .form-element .form-field { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + border-radius: 0; +} + +.wpeo-form .form-element .form-field:hover { + -webkit-box-shadow: none; + box-shadow: none; +} + +.wpeo-form .form-element .form-sublabel { + font-size: 12px; + font-style: italic; + color: rgba(0, 0, 0, 0.6); +} + +/** Alignement */ +.wpeo-form .form-element .form-field-inline { + margin-right: 0.4em; +} + +.wpeo-form .form-element.form-align-vertical .form-field-container { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.wpeo-form .form-element.form-align-horizontal .form-field-container { + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +/** Couleur */ +.wpeo-form .form-element .form-field-container .form-field, .wpeo-form .form-element .form-field-container [class*="form-field-icon"] { + background: #ececec; +} + +.wpeo-form .form-element .form-field-container:hover .form-field, .wpeo-form .form-element .form-field-container:hover [class*="form-field-icon"] { + background: #dfdfdf; +} + +.wpeo-form .form-element [class*="form-field-label"] { + background: #dfdfdf; +} + +.wpeo-form.form-light .form-element .form-field-container .form-field, .wpeo-form.form-light .form-element .form-field-container [class*="form-field-icon"] { + background: #fff; +} + +.wpeo-form.form-light .form-element .form-field-container:hover .form-field, .wpeo-form.form-light .form-element .form-field-container:hover [class*="form-field-icon"] { + background: #ececec; +} + +.wpeo-form.form-light .form-element [class*="form-field-label"] { + background: #ececec; +} + +/** Icone */ +.wpeo-form .form-element [class*="form-field-icon"] { + padding: 0.8em 0 0.8em 0.8em; + color: rgba(0, 0, 0, 0.4); + font-size: 16px; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-form .form-element [class*="form-field-icon"] [class*="fa"] { + vertical-align: middle; +} + +.wpeo-form .form-element .form-field-icon-prev { + padding: 0.8em 0 0.8em 0.8em; +} + +.wpeo-form .form-element .form-field-icon-next { + padding: 0.8em 0.8em 0.8em 0; +} + +/** Previous & next label */ +.wpeo-form .form-element [class*="form-field-label"] { + padding: 1.2em 1em; + font-size: 12px; +} + +.wpeo-form .form-element .form-field-label-prev { + border-right: 1px solid rgba(0, 0, 0, 0.1); +} + +.wpeo-form .form-element .form-field-label-next { + border-left: 1px solid rgba(0, 0, 0, 0.1); +} + +/** Required */ +.wpeo-form .form-element.form-element-required .form-label::after { + display: inline-block; + content: '*'; + color: #e05353; + padding: 0 0.4em; +} + +/** Erreur sur un champs */ +.wpeo-form .form-element.form-element-error .form-field-container { + border: 1px solid #e05353; +} + +/** Champs disabled */ +.wpeo-form .form-element.form-element-disable .form-field-container { + opacity: 0.6; + pointer-events: none; +} + +/* Simple */ +/* Moderne */ +/*-------------------------------------------------------------- + Module : Button + Version : 1.2.0 + + * Les boutons se forment grâce à leurs classes CSS + * .button -> classe de base pour un bouton + * .primary + * .light + * .dark + * .red + * .yellow + * .blue + * .green + * .transparent + * .bordered -> Change l'affichage du bouton. Fonctionne avec les même couleurs + * .strong -> texte en gras + * .uppercase -> texte en majuscule + * .float-right -> float right + * .float-left -> float left + * .square-30 -> bouton carré 30px + * .square-40 -> bouton carré 40px + * .square-50 -> bouton carré 50px + * .square-60 -> bouton carré 60px + * .margin -> margin haut et bas sur le bouton + * .radius-1 -> Arrondis les bords + * .radius-3 -> Arrondis les bords + * .radius-3 -> Arrondis les bords + * .rounded -> bouton en forme de rond + * .disable -> désactive les actions sur le bouton + * .size-small -> petite taille + * .size-large -> grande taille + * .progress -> Active le progress button + * .load -> le bouton affiche une icone de chargement + * .success -> le bouton affiche une icone succès + * .error -> Le bouton affiche une icone erreur +--------------------------------------------------------------*/ +.wpeo-button { + display: inline-block; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: none; + text-decoration: none; + padding: 6px 14px; + line-height: 1.4; + vertical-align: middle; + height: auto; + border-radius: 0; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + position: relative; + border-width: 3px; + border-style: solid; + font-size: 16px; + background: #898de5; + border-color: #898de5; + color: #fff; +} + +.wpeo-button:focus, .wpeo-button:visited { + color: #fff; +} + +.wpeo-button:hover { + color: #fff; + -webkit-box-shadow: inset 0 -2.6em rgba(255, 255, 255, 0.25); + box-shadow: inset 0 -2.6em rgba(255, 255, 255, 0.25); + cursor: pointer; +} + +.wpeo-button:focus, .wpeo-button:active { + outline: none; +} + +/** Colors */ +.wpeo-button { + /* par défaut */ + background: #898de5; + border-color: #898de5; + color: #fff; +} + +.wpeo-button.button-main { + background: #898de5; + border-color: #898de5; + color: #fff; +} + +.wpeo-button.button-light { + background: #fff; + border-color: #fff; + color: #333333; +} + +.wpeo-button.button-light:hover { + -webkit-box-shadow: inset 0 -2.6em rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -2.6em rgba(0, 0, 0, 0.1); + color: #333333; +} + +.wpeo-button.button-dark { + background: #2b2b2b; + border-color: #2b2b2b; +} + +.wpeo-button.button-grey { + background: #ececec; + border-color: #ececec; + color: #333333; +} + +.wpeo-button.button-grey:hover { + -webkit-box-shadow: inset 0 -2.6em rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -2.6em rgba(0, 0, 0, 0.1); + color: #333333; +} + +.wpeo-button.button-red { + background: #e05353; + border-color: #e05353; +} + +.wpeo-button.button-yellow { + background: #e9ad4f; + border-color: #e9ad4f; +} + +.wpeo-button.button-blue { + background: #0d8aff; + border-color: #0d8aff; +} + +.wpeo-button.button-green { + background: #47e58e; + border-color: #47e58e; +} + +.wpeo-button.button-transparent { + background: transparent; + border-color: transparent; + color: rgba(51, 51, 51, 0.4); +} + +.wpeo-button.button-transparent:hover { + color: #333333; + -webkit-box-shadow: inset 0 -2.6em rgba(255, 255, 255, 0); + box-shadow: inset 0 -2.6em rgba(255, 255, 255, 0); +} + +.wpeo-button.button-bordered { + background: none; + /* Par defaut */ + border-color: #898de5; + color: #898de5; +} + +.wpeo-button.button-bordered.button-main { + border-color: #898de5; + color: #898de5; +} + +.wpeo-button.button-bordered.button-main:hover { + -webkit-box-shadow: inset 0 -2.6em #898de5; + box-shadow: inset 0 -2.6em #898de5; + color: #fff; +} + +.wpeo-button.button-bordered.button-light { + border-color: #fff; + color: #fff; +} + +.wpeo-button.button-bordered.button-light:hover { + -webkit-box-shadow: inset 0 -2.6em #fff; + box-shadow: inset 0 -2.6em #fff; + color: #333333; +} + +.wpeo-button.button-bordered.button-dark { + border-color: #2b2b2b; + color: #2b2b2b; +} + +.wpeo-button.button-bordered.button-dark:hover { + -webkit-box-shadow: inset 0 -2.6em #2b2b2b; + box-shadow: inset 0 -2.6em #2b2b2b; +} + +.wpeo-button.button-bordered.button-grey { + border-color: #ececec; + color: #a0a0a0; +} + +.wpeo-button.button-bordered.button-grey:hover { + -webkit-box-shadow: inset 0 -2.6em #ececec; + box-shadow: inset 0 -2.6em #ececec; + color: #333333; +} + +.wpeo-button.button-bordered.button-red { + border-color: #e05353; + color: #e05353; +} + +.wpeo-button.button-bordered.button-red:hover { + -webkit-box-shadow: inset 0 -2.6em #e05353; + box-shadow: inset 0 -2.6em #e05353; +} + +.wpeo-button.button-bordered.button-yellow { + border-color: #e9ad4f; + color: #e9ad4f; +} + +.wpeo-button.button-bordered.button-yellow:hover { + -webkit-box-shadow: inset 0 -2.6em #e9ad4f; + box-shadow: inset 0 -2.6em #e9ad4f; +} + +.wpeo-button.button-bordered.button-blue { + border-color: #0d8aff; + color: #0d8aff; +} + +.wpeo-button.button-bordered.button-blue:hover { + -webkit-box-shadow: inset 0 -2.6em #0d8aff; + box-shadow: inset 0 -2.6em #0d8aff; +} + +.wpeo-button.button-bordered.button-green { + border-color: #47e58e; + color: #47e58e; +} + +.wpeo-button.button-bordered.button-green:hover { + -webkit-box-shadow: inset 0 -2.6em #47e58e; + box-shadow: inset 0 -2.6em #47e58e; +} + +.wpeo-button.button-bordered:hover { + -webkit-box-shadow: inset 0 -2.6em #898de5; + box-shadow: inset 0 -2.6em #898de5; + color: #fff; +} + +.wpeo-button .button-icon, .wpeo-button span { + position: relative; +} + +.wpeo-button .button-icon ~ span { + margin-left: 10px; +} + +.wpeo-button span ~ .button-icon { + margin-left: 10px; +} + +.wpeo-button.button-strong span { + font-weight: 800; +} + +.wpeo-button.button-uppercase span { + text-transform: uppercase; + font-size: 14px; +} + +.wpeo-button[class*="button-square-"] { + text-align: center; + overflow: hidden; + padding: 0; +} + +.wpeo-button.button-square-30 { + width: 30px; + height: 30px; + line-height: 24px; +} + +.wpeo-button.button-square-30 .button-icon { + font-size: 12px; +} + +.wpeo-button.button-square-40 { + width: 40px; + height: 40px; + line-height: 34px; +} + +.wpeo-button.button-square-50 { + width: 50px; + height: 50px; + line-height: 44px; +} + +.wpeo-button.button-square-60 { + width: 60px; + height: 60px; + line-height: 54px; +} + +.wpeo-button.button-float-left { + float: left; +} + +.wpeo-button.button-float-right { + float: right; +} + +.wpeo-button.button-margin { + margin: 1em 0; +} + +.wpeo-button.button-radius-1 { + border-radius: 2px; +} + +.wpeo-button.button-radius-2 { + border-radius: 4px; +} + +.wpeo-button.button-radius-3 { + border-radius: 6px; +} + +.wpeo-button.button-rounded { + border-radius: 50%; +} + +.wpeo-button.button-disable { + background: #ececec !important; + border-color: #ececec !important; + color: rgba(0, 0, 0, 0.4) !important; + pointer-events: none; +} + +.wpeo-button.button-disable:hover { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.wpeo-button.button-disable.button-event { + pointer-events: all; +} + +.wpeo-button.button-size-small { + font-size: 14px; +} + +.wpeo-button.button-size-small.button-uppercase span { + font-size: 12px; +} + +.wpeo-button.button-size-large { + font-size: 18px; +} + +.wpeo-button.button-size-large.button-uppercase span { + font-size: 16px; +} + +/** Progress */ +.wpeo-button.button-progress { + position: relative; +} + +.wpeo-button.button-progress::before { + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 900; + content: ''; + opacity: 0; + -webkit-transform: translate(-50%, -90%); + transform: translate(-50%, -90%); + font-size: 16px; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; + position: absolute; + left: 50%; + top: 50%; + z-index: 99; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-button.button-progress .button-icon, .wpeo-button.button-progress span { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + display: inline-block; +} + +.wpeo-button.button-progress.button-success, .wpeo-button.button-progress.button-load, .wpeo-button.button-progress.button-error { + pointer-events: none; +} + +.wpeo-button.button-progress.button-success::before, .wpeo-button.button-progress.button-load::before, .wpeo-button.button-progress.button-error::before { + opacity: 1; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.wpeo-button.button-progress.button-success .button-icon, .wpeo-button.button-progress.button-success span, .wpeo-button.button-progress.button-load .button-icon, .wpeo-button.button-progress.button-load span, .wpeo-button.button-progress.button-error .button-icon, .wpeo-button.button-progress.button-error span { + opacity: 0; + -webkit-transform: translate(0, 40%); + transform: translate(0, 40%); +} + +.wpeo-button.button-progress.button-success { + background: #47e58e; + border-color: #47e58e; + color: #fff; +} + +.wpeo-button.button-progress.button-success:before { + content: "\f00c"; + -webkit-animation-name: progressSuccess; + animation-name: progressSuccess; +} + +.wpeo-button.button-progress.button-error { + background: #e05353; + border-color: #e05353; + color: #fff; +} + +.wpeo-button.button-progress.button-error:before { + content: "\f00d"; + -webkit-animation-name: progressError; + animation-name: progressError; +} + +.wpeo-button.button-progress.button-load { + background: #ececec; +} + +.wpeo-button.button-progress.button-load:before { + opacity: 1; + border: 3px solid #fff; + border-top: 3px solid #898de5; + border-radius: 50%; + width: 20px; + height: 20px; + -webkit-animation: spin 1s ease-out infinite; + animation: spin 1s ease-out infinite; +} + +@-webkit-keyframes progressSuccess { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); + } + 20% { + -webkit-transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + } + 40% { + -webkit-transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + } + 60% { + -webkit-transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + } + 80% { + -webkit-transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + } + to { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); + } +} + +@keyframes progressSuccess { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); + } + 20% { + -webkit-transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + } + 40% { + -webkit-transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + } + 60% { + -webkit-transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + } + 80% { + -webkit-transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + } + to { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); + } +} + +@-webkit-keyframes progressError { + from { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } + 15% { + -webkit-transform: translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + 30% { + -webkit-transform: translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + 45% { + -webkit-transform: translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + 60% { + -webkit-transform: translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + 75% { + -webkit-transform: translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + to { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } +} + +@keyframes progressError { + from { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } + 15% { + -webkit-transform: translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + transform: translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); + } + 30% { + -webkit-transform: translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + transform: translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); + } + 45% { + -webkit-transform: translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + transform: translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); + } + 60% { + -webkit-transform: translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + transform: translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); + } + 75% { + -webkit-transform: translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + transform: translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); + } + to { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } +} + +@-webkit-keyframes spin { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(360deg); + transform: translate(-50%, -50%) rotate(360deg); + } +} + +@keyframes spin { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(360deg); + transform: translate(-50%, -50%) rotate(360deg); + } +} + +/*-------------------------------------------------------------- + Module : Loader + Version : 1.0.0 + + .wpeo-loader => classe de base pour le module + .loader-spin => icone de chargement +--------------------------------------------------------------*/ +.wpeo-loader { + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + pointer-events: none; + opacity: 0.5; + position: relative; +} + +.wpeo-loader .loader-spin { + position: absolute; + border: 3px solid #a7a7a7; + border-top: 3px solid #1d2285; + border-radius: 50%; + width: 20px; + height: 20px; + z-index: 99; + left: 50%; + top: 50%; + margin: 0 !important; + padding: 0 !important; + -webkit-animation: loader-spin 1s ease-out infinite; + animation: loader-spin 1s ease-out infinite; +} + +@-webkit-keyframes loader-spin { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(360deg); + transform: translate(-50%, -50%) rotate(360deg); + } +} + +@keyframes loader-spin { + 0% { + -webkit-transform: translate(-50%, -50%) rotate(0deg); + transform: translate(-50%, -50%) rotate(0deg); + } + 100% { + -webkit-transform: translate(-50%, -50%) rotate(360deg); + transform: translate(-50%, -50%) rotate(360deg); + } +} + +/*-------------------------------------------------------------- + Module : Notice + Version : 1.0.0 + + .wpeo-notice -> classe de base du mobule +--------------------------------------------------------------*/ +/* General */ +.wpeo-notice { + position: relative; + font-size: 1em; + padding: 1em; + overflow: hidden; + border-radius: 3px; + border: solid #eee 1px; + margin: 1em 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.wpeo-notice::before { + display: block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + display: inline-block; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1; + vertical-align: -.125em; + font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Pro'; + font-weight: 900; + font-weight: 900; + font-size: 24px; +} + +.wpeo-notice .notice-content { + width: 100%; + padding: 0 1em; + color: rgba(0, 0, 0, 0.6); +} + +.wpeo-notice .notice-title { + font-size: 20px; + font-weight: 600; + color: rgba(0, 0, 0, 0.9); +} + +.wpeo-notice .notice-subtitle { + font-size: 14px; +} + +.wpeo-notice .notice-close { + color: rgba(0, 0, 0, 0.3); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-notice .notice-close:hover { + color: #898de5; + cursor: pointer; +} + +.wpeo-notice ul { + padding: 0 0 0 1.4em; + margin: 0.4em 0; +} + +/** Status */ +/** Info */ +.wpeo-notice.notice-info { + border-left: solid #0d8aff 6px; + color: #0d8aff; + background: rgba(13, 138, 255, 0.05); +} + +.wpeo-notice.notice-info::before { + content: "\f05a"; +} + +.wpeo-notice.notice-info .notice-title, .wpeo-notice.notice-info .notice-subtitle, .wpeo-notice.notice-info a { + color: #0d8aff; +} + +/** Error */ +.wpeo-notice.notice-error { + border-left: solid #e05353 6px; + color: #e05353; + background: rgba(224, 83, 83, 0.05); +} + +.wpeo-notice.notice-error::before { + content: "\f057"; +} + +.wpeo-notice.notice-error .notice-title, .wpeo-notice.notice-error .notice-subtitle, .wpeo-notice.notice-error a { + color: #e05353; +} + +/** Warning */ +.wpeo-notice.notice-warning { + border-left: solid #e9ad4f 6px; + color: #e9ad4f; + background: rgba(233, 173, 79, 0.05); +} + +.wpeo-notice.notice-warning::before { + content: "\f071"; +} + +.wpeo-notice.notice-warning .notice-title, .wpeo-notice.notice-warning .notice-subtitle, .wpeo-notice.notice-warning a { + color: #e9ad4f; +} + +/** Success */ +.wpeo-notice.notice-success { + border-left: solid #47e58e 6px; + color: #47e58e; + background: rgba(71, 229, 142, 0.05); +} + +.wpeo-notice.notice-success::before { + content: "\f058"; +} + +.wpeo-notice.notice-success .notice-title, .wpeo-notice.notice-success .notice-subtitle, .wpeo-notice.notice-success a { + color: #47e58e; +} + +/*-------------------------------------------------------------- + Module : Notification + Version : 1.0.0 + + .wpeo-notification -> classe de base du mobule + .notification-active -> lance l'apparition de la notification +--------------------------------------------------------------*/ +/* General */ +.wpeo-notification { + position: fixed; + background: rgba(255, 255, 255, 0.6); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + z-index: 900; + padding: 1em; + bottom: 3em; + right: 1em; + max-width: 600px; + -webkit-box-shadow: 0 0 14px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 14px 1px rgba(0, 0, 0, 0.2); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + opacity: 0; + pointer-events: none; +} + +.wpeo-notification:hover { + background: white; + -webkit-box-shadow: 0 0 14px 1px rgba(0, 0, 0, 0.4); + box-shadow: 0 0 14px 1px rgba(0, 0, 0, 0.4); + cursor: pointer; +} + +.wpeo-notification.notification-active { + -webkit-animation: notification 0.8s ease-out; + animation: notification 0.8s ease-out; + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; + opacity: 1; + pointer-events: all; +} + +/* Content */ +.wpeo-notification { + /* Thumbnail */ + /* Icon */ + /* Title */ + /* Close button */ +} + +.wpeo-notification > * { + margin: auto 0.2em; +} + +.wpeo-notification .notification-thumbnail { + width: 40px; + height: 40px; + background: rgba(0, 0, 0, 0.1); + border-radius: 50%; + display: inline-block; + overflow: hidden; + margin-right: 0.4em; +} + +.wpeo-notification .notification-thumbnail img { + width: 100%; + height: auto; +} + +.wpeo-notification .notification-icon { + margin-right: 0.4em; +} + +.wpeo-notification .notification-title { + font-size: 14px; + color: rgba(0, 0, 0, 0.7); +} + +.wpeo-notification .notification-title a { + color: #898de5; + text-decoration: none; +} + +.wpeo-notification .notification-title a:hover { + text-decoration: underline; +} + +.wpeo-notification .notification-close { + padding-left: 0.4em; + color: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + margin-left: auto; +} + +.wpeo-notification .notification-close:hover { + color: #898de5; +} + +/** Couleur */ +.wpeo-notification .notification-icon { + color: rgba(0, 0, 0, 0.3); +} + +.wpeo-notification.notification-green { + border-left: 4px solid #47e58e; +} + +.wpeo-notification.notification-green .notification-icon { + color: #47e58e; +} + +.wpeo-notification.notification-orange { + border-left: 4px solid #e9ad4f; +} + +.wpeo-notification.notification-orange .notification-icon { + color: #e9ad4f; +} + +.wpeo-notification.notification-red { + border-left: 4px solid #e05353; +} + +.wpeo-notification.notification-red .notification-icon { + color: #e05353; +} + +.wpeo-notification.notification-blue { + border-left: 4px solid #0d8aff; +} + +.wpeo-notification.notification-blue .notification-icon { + color: #0d8aff; +} + +@-webkit-keyframes notification { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -40px, 0); + transform: translate3d(0, -40px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +@keyframes notification { + from, 60%, 75%, 90%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + 0% { + opacity: 0; + -webkit-transform: translate3d(0, -40px, 0); + transform: translate3d(0, -40px, 0); + } + 60% { + opacity: 1; + -webkit-transform: translate3d(0, 10px, 0); + transform: translate3d(0, 10px, 0); + } + 75% { + -webkit-transform: translate3d(0, -10px, 0); + transform: translate3d(0, -10px, 0); + } + 90% { + -webkit-transform: translate3d(0, 5px, 0); + transform: translate3d(0, 5px, 0); + } + to { + -webkit-transform: none; + transform: none; + } +} + +/*-------------------------------------------------------------- + Module : Modal + Version : 1.0.0 + + .wpeo-modal -> classe de base du mobule + .modalactive -> lance l'apparition de la modal + .no-modal-close -> désactive l'icone fermeture +--------------------------------------------------------------*/ +.wpeo-modal { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99998; + background: rgba(39, 42, 53, 0.9); + opacity: 0; + pointer-events: none; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal.modal-active { + opacity: 1; + pointer-events: auto; +} + +.wpeo-modal.modal-active .modal-container { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.wpeo-modal.modal-force-display .modal-close { + display: none; +} + +.wpeo-modal .modal-container { + position: absolute; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + width: 100%; + max-width: 860px; + height: 100%; + max-height: 560px; + background: #fff; + padding: 2em; + margin: auto; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -60%); + transform: translate(-50%, -60%); +} + +@media (max-width: 480px) { + .wpeo-modal .modal-container { + padding: 1em; + } +} + +.wpeo-modal .modal-container .modal-header { + height: 10%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.wpeo-modal .modal-container .modal-content { + height: 78%; +} + +.wpeo-modal .modal-container .modal-footer { + height: 12%; +} + +.wpeo-modal .modal-container .modal-header .modal-title, .wpeo-modal .modal-container .modal-header .modal-close { + margin: auto 0; +} + +.wpeo-modal .modal-container .modal-header .modal-title { + text-transform: uppercase; + font-size: 18px; + white-space: normal; +} + +@media (max-width: 770px) { + .wpeo-modal .modal-container .modal-header .modal-title { + font-size: 16px; + } +} + +@media (max-width: 480px) { + .wpeo-modal .modal-container .modal-header .modal-title { + font-size: 14px; + } +} + +.wpeo-modal .modal-container .modal-header .modal-close { + margin-left: auto; + color: rgba(0, 0, 0, 0.3); + padding: 4px; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-modal .modal-container .modal-header .modal-close:hover { + cursor: pointer; + color: #898de5; +} + +.wpeo-modal .modal-container .modal-content { + overflow-y: auto; + font-size: 14px; +} + +@media (max-width: 480px) { + .wpeo-modal .modal-container .modal-content { + font-size: 12px; + } +} + +.wpeo-modal .modal-container .modal-footer { + text-align: right; + padding-top: 1em; +} + +.wpeo-modal .modal-container .modal-footer.left { + text-align: left; +} + +.wpeo-modal .modal-container .modal-footer.center { + text-align: center; +} + +/*-------------------------------------------------------------- + Module : Pagination + Version : 1.0.0 + + .wpeo-pagination -> classe de base du mobule +--------------------------------------------------------------*/ +.wpeo-pagination { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin: 0; + padding: 0; +} + +.wpeo-pagination .pagination-element { + margin: 0; + list-style-type: none; + padding: 0 0.2em; +} + +.wpeo-pagination .pagination-element a { + padding: 0.2em 0.8em; + display: inline-block; + background: #fff; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + border-radius: 4px; + text-decoration: none; + color: rgba(0, 0, 0, 0.8); + font-size: 12px; +} + +.wpeo-pagination .pagination-element a:hover { + background: rgba(0, 0, 0, 0.1); +} + +.wpeo-pagination .pagination-element .pagination-icon { + font-size: 12px; +} + +/* Pagination active */ +.wpeo-pagination .pagination-element.pagination-current a { + background: #898de5; + color: #fff; +} + +.wpeo-pagination .pagination-element.pagination-current a:hover { + background: #898de5; +} + +/* Prev & Next */ +.wpeo-pagination .pagination-element.pagination-prev, .wpeo-pagination .pagination-element.pagination-next { + font-weight: 700; +} + +.wpeo-pagination .pagination-element.pagination-prev a, .wpeo-pagination .pagination-element.pagination-next a { + background: rgba(0, 0, 0, 0.05); +} + +.wpeo-pagination .pagination-element.pagination-prev a:hover, .wpeo-pagination .pagination-element.pagination-next a:hover { + background: rgba(0, 0, 0, 0.15); +} + +.wpeo-pagination .pagination-element.pagination-prev .pagination-icon { + margin-right: 0.4em; +} + +.wpeo-pagination .pagination-element.pagination-next .pagination-icon { + margin-left: 0.4em; +} + +/*-------------------------------------------------------------- + Module : Popover + Version : 1.0.0 + + .wpeo-popover -> classe de base du mobule + .popover-primary -> popover sur fond rouge + .popover-light -> popover sur fond rouge + .popover-red -> popover sur fond rouge +--------------------------------------------------------------*/ +.wpeo-popover { + display: block; + position: absolute; + bottom: 0; + left: 0; + opacity: 0; + pointer-events: none; + z-index: 99999; + white-space: nowrap; + background: #2b2b2b; + color: #fff; + border-radius: 6px; + font-size: 0.8rem; + padding: 0 1em; + height: 2.2em; + line-height: 2.2em; +} + +.wpeo-popover::before { + display: block; + content: ''; + width: 0; + height: 0; + border-style: solid; + position: absolute; +} + +.wpeo-popover:focus { + outline: none; +} + +/* Couleurs */ +.wpeo-popover.popover-dark { + background: #2b2b2b; +} + +.wpeo-popover.popover-dark.tooltip-top::before { + border-color: #2b2b2b transparent transparent transparent; +} + +.wpeo-popover.popover-dark.tooltip-right::before { + border-color: transparent #2b2b2b transparent transparent; +} + +.wpeo-popover.popover-dark.tooltip-bottom::before { + border-color: transparent transparent #2b2b2b transparent; +} + +.wpeo-popover.popover-dark.tooltip-left::before { + border-color: transparent transparent transparent #2b2b2b; +} + +.wpeo-popover.popover-primary { + background: #898de5; +} + +.wpeo-popover.popover-primary.tooltip-top::before { + border-color: #898de5 transparent transparent transparent; +} + +.wpeo-popover.popover-primary.tooltip-right::before { + border-color: transparent #898de5 transparent transparent; +} + +.wpeo-popover.popover-primary.tooltip-bottom::before { + border-color: transparent transparent #898de5 transparent; +} + +.wpeo-popover.popover-primary.tooltip-left::before { + border-color: transparent transparent transparent #898de5; +} + +.wpeo-popover.popover-light { + background: #ececec; + color: rgba(0, 0, 0, 0.6); +} + +.wpeo-popover.popover-light.tooltip-top::before { + border-color: #ececec transparent transparent transparent; +} + +.wpeo-popover.popover-light.tooltip-right::before { + border-color: transparent #ececec transparent transparent; +} + +.wpeo-popover.popover-light.tooltip-bottom::before { + border-color: transparent transparent #ececec transparent; +} + +.wpeo-popover.popover-light.tooltip-left::before { + border-color: transparent transparent transparent #ececec; +} + +.wpeo-popover.popover-red { + background: #e05353; +} + +.wpeo-popover.popover-red.tooltip-top::before { + border-color: #e05353 transparent transparent transparent; +} + +.wpeo-popover.popover-red.tooltip-right::before { + border-color: transparent #e05353 transparent transparent; +} + +.wpeo-popover.popover-red.tooltip-bottom::before { + border-color: transparent transparent #e05353 transparent; +} + +.wpeo-popover.popover-red.tooltip-left::before { + border-color: transparent transparent transparent #e05353; +} + +/* Position de la fleche */ +.wpeo-popover.popover-top::before { + border-width: 6px 6px 0 6px; + border-color: #2b2b2b transparent transparent transparent; + bottom: -6px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.wpeo-popover.popover-right::before { + border-width: 6px 6px 6px 0; + border-color: transparent #2b2b2b transparent transparent; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + left: -6px; +} + +.wpeo-popover.popover-bottom::before { + border-width: 0 6px 6px 6px; + border-color: transparent transparent #2b2b2b transparent; + top: -6px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.wpeo-popover.popover-left::before { + border-width: 6px 0 6px 6px; + border-color: transparent transparent transparent #2b2b2b; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: -6px; +} + +/*-------------------------------------------------------------- + Module : Tab + Version : 1.0.0 + + .wpeo-tab -> classe de base du mobule +--------------------------------------------------------------*/ +/* Liste */ +.wpeo-tab .tab-list { + margin: 0; + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; +} + +.wpeo-tab .tab-list .tab-element { + list-style-type: none; + padding: 1.6em 2.4em; + margin: 0; + text-transform: uppercase; + font-size: 12px !important; + position: relative; + background: rgba(0, 0, 0, 0.1); + color: rgba(0, 0, 0, 0.6); + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + /* Active */ + /* Disabled */ + /* Icon */ +} + +.wpeo-tab .tab-list .tab-element::before { + display: block; + content: ''; + position: absolute; + top: 0; + left: 0; + width: 0px; + height: 2px; + background: #898de5; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} + +.wpeo-tab .tab-list .tab-element:hover { + cursor: pointer; +} + +.wpeo-tab .tab-list .tab-element:hover:not(.tab-active) { + background: rgba(0, 0, 0, 0.2); +} + +.wpeo-tab .tab-list .tab-element > a { + color: rgba(0, 0, 0, 0.6); +} + +.wpeo-tab .tab-list .tab-element.tab-active { + background: #fff; + color: #898de5; +} + +.wpeo-tab .tab-list .tab-element.tab-active > a { + color: #898de5; +} + +.wpeo-tab .tab-list .tab-element.tab-active::before { + width: 100%; +} + +.wpeo-tab .tab-list .tab-element.tab-disabled { + color: rgba(0, 0, 0, 0.2); + pointer-events: none; +} + +.wpeo-tab .tab-list .tab-element.tab-disabled > a { + color: rgba(0, 0, 0, 0.4); +} + +.wpeo-tab .tab-list .tab-element .tab-icon { + display: block; + text-align: center; + font-size: 20px; + margin-bottom: 0.4em; +} + +/* Content */ +.wpeo-tab .tab-container { + position: relative; +} + +.wpeo-tab .tab-container .tab-content { + display: block; + width: 100%; + padding: 2em; + position: absolute; + top: 0; + left: 0; + width: 100%; + opacity: 0; + pointer-events: none; + background: #fff; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; + z-index: 10; +} + +.wpeo-tab .tab-container .tab-content.tab-active { + opacity: 1; + pointer-events: all; + position: static; +} + +/* Dropdown Compatibility */ +.wpeo-tab .tab-list .tab-element.wpeo-dropdown { + padding: 0; +} + +.wpeo-tab .tab-list .tab-element.wpeo-dropdown .dropdown-toggle { + padding: 1.6em 2.4em; +} + +/* Liste des effets */ +/*-------------------------------------------------------------- + Templates + Version : 1.0.0 + +--------------------------------------------------------------*/ +/* Vertical */ +.wpeo-tab.tab-vertical { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.wpeo-tab.tab-vertical .tab-list { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-width: 180px; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element { + /* Active */ + /* Icon */ +} + +.wpeo-tab.tab-vertical .tab-list .tab-element::before { + width: 2px; + height: 0; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active { + color: #898de5; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a { + color: #898de5; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active::before { + height: 100%; +} + +.wpeo-tab.tab-vertical .tab-list .tab-element .tab-icon { + display: inline-block; + margin: 0 0.4em 0 0; + font-size: 14px; + text-align: left; +} + +.wpeo-tab.tab-vertical .tab-container { + width: 100%; +} + +/*-------------------------------------------------------------- + Effets + Version : 1.0.0 + +--------------------------------------------------------------*/ +/* FADE VERTICAL */ +.wpeo-tab.tab-fade-vertical .tab-container .tab-content { + -webkit-transform: translateY(-40px); + transform: translateY(-40px); + -webkit-animation: 0.3s linear 0s disappear_tab; + animation: 0.3s linear 0s disappear_tab; +} + +.wpeo-tab.tab-fade-vertical .tab-container .tab-content.tab-active { + -webkit-transform: translateY(0); + transform: translateY(0); + -webkit-animation: 0.2s ease-out 0s appear_tab; + animation: 0.2s ease-out 0s appear_tab; +} + +@-webkit-keyframes disappear_tab { + from { + opacity: 1; + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + to { + opacity: 0; + -webkit-transform: translateY(40px); + transform: translateY(40px); + } +} + +@keyframes disappear_tab { + from { + opacity: 1; + -webkit-transform: translateY(0px); + transform: translateY(0px); + } + to { + opacity: 0; + -webkit-transform: translateY(40px); + transform: translateY(40px); + } +} + +@-webkit-keyframes appear_tab { + from { + opacity: 0; + -webkit-transform: translateY(-40px); + transform: translateY(-40px); + } + to { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +@keyframes appear_tab { + from { + opacity: 0; + -webkit-transform: translateY(-40px); + transform: translateY(-40px); + } + to { + opacity: 1; + -webkit-transform: translateY(0); + transform: translateY(0); + } +} + +/* FADE HORIZONTAL */ +.wpeo-tab.tab-fade-horizontal .tab-container .tab-content { + -webkit-transform: translateX(-40px); + transform: translateX(-40px); + -webkit-animation: 0.4s linear 0s disappear_tab_2; + animation: 0.4s linear 0s disappear_tab_2; +} + +.wpeo-tab.tab-fade-horizontal .tab-container .tab-content.tab-active { + -webkit-transform: translateX(0); + transform: translateX(0); + -webkit-animation: 0.2s ease-out 0s appear_tab_2; + animation: 0.2s ease-out 0s appear_tab_2; +} + +@-webkit-keyframes disappear_tab_2 { + from { + opacity: 1; + -webkit-transform: translateX(0px); + transform: translateX(0px); + } + to { + opacity: 0; + -webkit-transform: translateX(40px); + transform: translateX(40px); + } +} + +@keyframes disappear_tab_2 { + from { + opacity: 1; + -webkit-transform: translateX(0px); + transform: translateX(0px); + } + to { + opacity: 0; + -webkit-transform: translateX(40px); + transform: translateX(40px); + } +} + +@-webkit-keyframes appear_tab_2 { + from { + opacity: 0; + -webkit-transform: translateX(-40px); + transform: translateX(-40px); + } + to { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +@keyframes appear_tab_2 { + from { + opacity: 0; + -webkit-transform: translateX(-40px); + transform: translateX(-40px); + } + to { + opacity: 1; + -webkit-transform: translateX(0); + transform: translateX(0); + } +} + +/*-------------------------------------------------------------- + Module : Table + Version : 1.0.0 + + .wpeo-table -> classe de base du mobule +--------------------------------------------------------------*/ +/*-------------------------------------------------------------- + Table Standard +--------------------------------------------------------------*/ +.wpeo-table { + width: 100%; + border: 1px solid rgba(0, 0, 0, 0.1); + font-size: 14px; + border-collapse: collapse; +} + +.wpeo-table td, .wpeo-table th, .wpeo-table tr { + text-align: left; + vertical-align: middle; +} + +.wpeo-table th { + font-weight: 700; +} + +.wpeo-table th, .wpeo-table td { + padding: 0.8em 0.6em; +} + +@media (max-width: 770px) { + .wpeo-table th, .wpeo-table td { + padding: 0.4em; + } +} + +/* Header, footer */ +.wpeo-table > thead, .wpeo-table > tfoot { + background: #898de5; + color: #fff; +} + +/* Body */ +.wpeo-table > tbody tr:nth-child(odd) { + background: #fff; +} + +.wpeo-table > tbody tr:nth-child(even) { + background: rgba(0, 0, 0, 0.05); +} + +/* Responsive */ +@media (max-width: 480px) { + .wpeo-table > thead { + display: none; + } + .wpeo-table > tbody tr { + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + } + .wpeo-table > tbody tr:nth-child(even) { + background: #fff; + } + .wpeo-table > tbody tr:last-child { + border-bottom: 0; + } + .wpeo-table > tbody td, .wpeo-table > tbody th { + display: block; + width: 100%; + font-size: 14px; + padding: 0.4em 0.6em; + } + .wpeo-table > tbody td:before, .wpeo-table > tbody th:before { + content: attr(data-title); + display: inline-block; + color: #898de5; + width: 100%; + max-width: 160px; + } +} + +/*-------------------------------------------------------------- + Table Flex +--------------------------------------------------------------*/ +.wpeo-table.table-flex { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + font-size: 14px; +} + +/** Ligne */ +.wpeo-table.table-flex .table-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +.wpeo-table.table-flex .table-row:not(.table-header):nth-of-type(odd) { + background: rgba(0, 0, 0, 0.05); +} + +/** Ligne entete */ +.wpeo-table.table-flex .table-row.table-header { + background: #898de5; +} + +.wpeo-table.table-flex .table-row.table-header .table-cell { + font-weight: 700; + color: #fff; +} + +/** Cellule */ +.wpeo-table.table-flex .table-cell { + margin: auto 0; + width: 100%; + padding: 0.8em 0.6em; +} + +@media (max-width: 770px) { + .wpeo-table.table-flex .table-cell { + padding: 0.4em; + } +} + +/** Taille générale des cellules */ +.wpeo-table.table-flex.table-1 .table-cell { + width: 100%; +} + +.wpeo-table.table-flex.table-2 .table-cell { + width: 50%; +} + +.wpeo-table.table-flex.table-3 .table-cell { + width: 33.33333%; +} + +.wpeo-table.table-flex.table-4 .table-cell { + width: 25%; +} + +.wpeo-table.table-flex.table-5 .table-cell { + width: 20%; +} + +.wpeo-table.table-flex.table-6 .table-cell { + width: 16.66667%; +} + +.wpeo-table.table-flex.table-7 .table-cell { + width: 14.28571%; +} + +.wpeo-table.table-flex.table-8 .table-cell { + width: 12.5%; +} + +.wpeo-table.table-flex.table-9 .table-cell { + width: 11.11111%; +} + +.wpeo-table.table-flex.table-10 .table-cell { + width: 10%; +} + +/** Taille spécifiques des cellules */ +.wpeo-table.table-flex .table-cell.table-25 { + max-width: 25px; + min-width: 25px; +} + +.wpeo-table.table-flex .table-cell.table-50 { + max-width: 50px; + min-width: 50px; +} + +.wpeo-table.table-flex .table-cell.table-75 { + max-width: 75px; + min-width: 75px; +} + +.wpeo-table.table-flex .table-cell.table-100 { + max-width: 100px; + min-width: 100px; +} + +.wpeo-table.table-flex .table-cell.table-125 { + max-width: 125px; + min-width: 125px; +} + +.wpeo-table.table-flex .table-cell.table-150 { + max-width: 150px; + min-width: 150px; +} + +.wpeo-table.table-flex .table-cell.table-175 { + max-width: 175px; + min-width: 175px; +} + +.wpeo-table.table-flex .table-cell.table-200 { + max-width: 200px; + min-width: 200px; +} + +.wpeo-table.table-flex .table-cell.table-225 { + max-width: 225px; + min-width: 225px; +} + +.wpeo-table.table-flex .table-cell.table-250 { + max-width: 250px; + min-width: 250px; +} + +.wpeo-table.table-flex .table-cell.table-275 { + max-width: 275px; + min-width: 275px; +} + +.wpeo-table.table-flex .table-cell.table-300 { + max-width: 300px; + min-width: 300px; +} + +.wpeo-table.table-flex .table-cell.table-325 { + max-width: 325px; + min-width: 325px; +} + +.wpeo-table.table-flex .table-cell.table-350 { + max-width: 350px; + min-width: 350px; +} + +.wpeo-table.table-flex .table-cell.table-375 { + max-width: 375px; + min-width: 375px; +} + +.wpeo-table.table-flex .table-cell.table-400 { + max-width: 400px; + min-width: 400px; +} + +.wpeo-table.table-flex .table-cell.table-425 { + max-width: 425px; + min-width: 425px; +} + +.wpeo-table.table-flex .table-cell.table-450 { + max-width: 450px; + min-width: 450px; +} + +.wpeo-table.table-flex .table-cell.table-475 { + max-width: 475px; + min-width: 475px; +} + +.wpeo-table.table-flex .table-cell.table-500 { + max-width: 500px; + min-width: 500px; +} + +.wpeo-table.table-flex .table-cell.table-full { + width: 100%; +} + +/** Différentes classes */ +.wpeo-table.table-flex .table-cell.table-end { + text-align: right; + margin-left: auto; +} + +.wpeo-table.table-flex .table-cell.table-padding-0 { + padding: 0; +} + +/** Responsive mobile */ +@media (max-width: 480px) { + .wpeo-table.table-flex .table-row { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + } + .wpeo-table.table-flex .table-cell { + width: 100%; + } +} + +/*-------------------------------------------------------------- + Module : Tooltip + Version : 1.0.0 + + .wpeo-tooltip -> classe de base du mobule + .tooltip-primary -> tooltip sur fond rouge + .tooltip-light -> tooltip sur fond rouge + .tooltip-red -> tooltip sur fond rouge +--------------------------------------------------------------*/ +.wpeo-tooltip { + display: block; + position: absolute; + bottom: 0; + left: 0; + opacity: 0; + pointer-events: none; + z-index: 99999; + white-space: nowrap; + background: #2b2b2b; + color: #fff; + border-radius: 6px; + font-size: 0.8rem; + padding: 0 1em; + height: 2.2em; + line-height: 2.2em; +} + +.wpeo-tooltip::before { + display: block; + content: ''; + width: 0; + height: 0; + border-style: solid; + position: absolute; +} + +.wpeo-tooltip:focus { + outline: none; +} + +/* Couleurs */ +.wpeo-tooltip.tooltip-dark { + background: #2b2b2b; +} + +.wpeo-tooltip.tooltip-dark.tooltip-top::before { + border-color: #2b2b2b transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-dark.tooltip-right::before { + border-color: transparent #2b2b2b transparent transparent; +} + +.wpeo-tooltip.tooltip-dark.tooltip-bottom::before { + border-color: transparent transparent #2b2b2b transparent; +} + +.wpeo-tooltip.tooltip-dark.tooltip-left::before { + border-color: transparent transparent transparent #2b2b2b; +} + +.wpeo-tooltip.tooltip-primary { + background: #898de5; +} + +.wpeo-tooltip.tooltip-primary.tooltip-top::before { + border-color: #898de5 transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-right::before { + border-color: transparent #898de5 transparent transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-bottom::before { + border-color: transparent transparent #898de5 transparent; +} + +.wpeo-tooltip.tooltip-primary.tooltip-left::before { + border-color: transparent transparent transparent #898de5; +} + +.wpeo-tooltip.tooltip-light { + background: #ececec; + color: rgba(0, 0, 0, 0.6); +} + +.wpeo-tooltip.tooltip-light.tooltip-top::before { + border-color: #ececec transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-right::before { + border-color: transparent #ececec transparent transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-bottom::before { + border-color: transparent transparent #ececec transparent; +} + +.wpeo-tooltip.tooltip-light.tooltip-left::before { + border-color: transparent transparent transparent #ececec; +} + +.wpeo-tooltip.tooltip-red { + background: #e05353; +} + +.wpeo-tooltip.tooltip-red.tooltip-top::before { + border-color: #e05353 transparent transparent transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-right::before { + border-color: transparent #e05353 transparent transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-bottom::before { + border-color: transparent transparent #e05353 transparent; +} + +.wpeo-tooltip.tooltip-red.tooltip-left::before { + border-color: transparent transparent transparent #e05353; +} + +/* Position de la fleche */ +.wpeo-tooltip.tooltip-top::before { + border-width: 6px 6px 0 6px; + border-color: #2b2b2b transparent transparent transparent; + bottom: -6px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.wpeo-tooltip.tooltip-right::before { + border-width: 6px 6px 6px 0; + border-color: transparent #2b2b2b transparent transparent; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + left: -6px; +} + +.wpeo-tooltip.tooltip-bottom::before { + border-width: 0 6px 6px 6px; + border-color: transparent transparent #2b2b2b transparent; + top: -6px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} + +.wpeo-tooltip.tooltip-left::before { + border-width: 6px 0 6px 6px; + border-color: transparent transparent transparent #2b2b2b; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: -6px; +} + +/*-------------------------------------------------------------- + Module : Util + Version : 1.0.0 + + Contient toutes les classes utilitaires + .wpeo-util-hidden -> Masque l'élément +--------------------------------------------------------------*/ +.wpeo-util-hidden { + display: none !important; +} + +/*-------------------------------------------------------------- +# Tmp Jimmy Module Screen Options +--------------------------------------------------------------*/ +.wpeo-screen-options { + text-align: right; + width: 100%; +} + +.wpeo-screen-options .content { + width: 99%; + text-align: left; + margin-left: 20px; +} + +.wpeo-screen-options .content .wpeo-form { + padding: 20px; + margin: 0; + background-color: #3495f0; + border: 1px solid #ccd0d4; +} + +.wpeo-screen-options .content .wpeo-form li { + width: 20%; +} + +.wpeo-modal .xdsoft_datetimepicker { + z-index: 99999 !important; +} diff --git a/core/external/eo-framework/core/assets/css/style.min.css b/core/external/eo-framework/core/assets/css/style.min.css new file mode 100644 index 0000000..a422278 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/style.min.css @@ -0,0 +1,9 @@ +/*! + EOXIA FRAMEWORK CSS + Created by Eoxia + + version: 1.2.0 +*//*! + * Font Awesome Pro 5.0.10 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license (Commercial License) + */.fa,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.wpeo-wrap html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}.wpeo-wrap body{margin:0}.wpeo-wrap article,.wpeo-wrap aside,.wpeo-wrap details,.wpeo-wrap figcaption,.wpeo-wrap figure,.wpeo-wrap footer,.wpeo-wrap header,.wpeo-wrap main,.wpeo-wrap menu,.wpeo-wrap nav,.wpeo-wrap section,.wpeo-wrap summary{display:block}.wpeo-wrap audio,.wpeo-wrap canvas,.wpeo-wrap progress,.wpeo-wrap video{display:inline-block;vertical-align:baseline}.wpeo-wrap audio:not([controls]){display:none;height:0}.wpeo-wrap [hidden],.wpeo-wrap template{display:none}.wpeo-wrap a{background-color:transparent}.wpeo-wrap a:active,.wpeo-wrap a:hover{outline:0}.wpeo-wrap abbr[title]{border-bottom:1px dotted}.wpeo-wrap b,.wpeo-wrap strong{font-weight:bold}.wpeo-wrap dfn{font-style:italic}.wpeo-wrap h1{font-size:2em;margin:0.67em 0}.wpeo-wrap mark{background:#ff0;color:#000}.wpeo-wrap small{font-size:80%}.wpeo-wrap sub,.wpeo-wrap sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.wpeo-wrap sup{top:-0.5em}.wpeo-wrap sub{bottom:-0.25em}.wpeo-wrap img{border:0}.wpeo-wrap svg:not(:root){overflow:hidden}.wpeo-wrap figure{margin:1em 40px}.wpeo-wrap hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}.wpeo-wrap pre{overflow:auto}.wpeo-wrap code,.wpeo-wrap kbd,.wpeo-wrap pre,.wpeo-wrap samp{font-family:monospace, monospace;font-size:1em}.wpeo-wrap button,.wpeo-wrap input,.wpeo-wrap optgroup,.wpeo-wrap select,.wpeo-wrap textarea{color:inherit;font:inherit;margin:0;-webkit-box-shadow:none;box-shadow:none}.wpeo-wrap button{overflow:visible}.wpeo-wrap button,.wpeo-wrap select{text-transform:none}.wpeo-wrap button,.wpeo-wrap html input[type="button"],.wpeo-wrap input[type="reset"],.wpeo-wrap input[type="submit"]{-webkit-appearance:button;cursor:pointer}.wpeo-wrap button[disabled],.wpeo-wrap html input[disabled]{cursor:default}.wpeo-wrap button::-moz-focus-inner,.wpeo-wrap input::-moz-focus-inner{border:0;padding:0}.wpeo-wrap input{line-height:normal}.wpeo-wrap input[type="checkbox"],.wpeo-wrap input[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.wpeo-wrap input[type="number"]::-webkit-inner-spin-button,.wpeo-wrap input[type="number"]::-webkit-outer-spin-button{height:auto}.wpeo-wrap input[type="search"]::-webkit-search-cancel-button,.wpeo-wrap input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}.wpeo-wrap fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}.wpeo-wrap legend{border:0;padding:0}.wpeo-wrap textarea{overflow:auto}.wpeo-wrap optgroup{font-weight:bold}.wpeo-wrap table{border-collapse:collapse;border-spacing:0}.wpeo-wrap td,.wpeo-wrap th{padding:0}.wpeo-wrap *{-webkit-box-sizing:border-box;box-sizing:border-box}.eo-custom-page #adminmenuwrap,.eo-custom-page #wpadminbar,.eo-custom-page #adminmenumain,.eo-custom-page #screen-meta-links,.eo-custom-page #wpfooter{display:none !important}body.eo-custom-page.admin-bar{position:relative;top:-32px}body.eo-custom-page #wpcontent{margin-left:0 !important;padding-left:0}body.eo-custom-page .nav-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;left:0;top:0;width:200px;height:100%;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}body.eo-custom-page .nav-wrap::before{display:block;content:'';position:fixed;top:0;left:0;width:200px;height:100%;background:#1c1d1b;z-index:-1;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}body.eo-custom-page .nav-wrap #logo{padding:0.5em;text-align:center;border-bottom:1px solid rgba(255,255,255,0.1)}body.eo-custom-page .nav-wrap #logo h1{height:100px;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0}body.eo-custom-page .nav-wrap #logo a{margin:auto}body.eo-custom-page .nav-wrap #logo img{max-width:50px;width:100%;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}body.eo-custom-page .nav-wrap .nav-menu.nav-bottom{margin-top:2em}body.eo-custom-page .nav-wrap.wrap-reduce{width:40px}body.eo-custom-page .nav-wrap.wrap-reduce::before{width:40px}body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu.nav-bottom .item{padding:0}body.eo-custom-page .nav-menu .item{color:#fff;text-decoration:none;font-size:14px}body.eo-custom-page .nav-menu .item:focus{outline:none}body.eo-custom-page .nav-menu .item:hover>div{background:rgba(255,255,255,0.2)}body.eo-custom-page .nav-menu .item.item-active>div{background:rgba(255,255,255,0.2)}body.eo-custom-page .nav-menu .item>div{padding:0.7em;border-bottom:1px solid rgba(255,255,255,0.1);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;display:-webkit-box;display:-ms-flexbox;display:flex}body.eo-custom-page .nav-menu .item .nav-icon{margin-right:0.6em;min-width:20px;line-height:1.3}body.eo-custom-page .nav-menu .item .item-label{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;white-space:nowrap}body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item>div{text-align:center}body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item .item-label{opacity:0;pointer-events:none;-webkit-transform:translateX(-10px);transform:translateX(-10px)}body.eo-custom-page .nav-wrap.wrap-reduce .nav-menu .item .nav-icon{margin-right:0}body.eo-custom-page .nav-menu.nav-bottom .item{padding:0 0.6em;display:block;margin-bottom:0.5em}body.eo-custom-page .nav-menu.nav-bottom .item>div{border-bottom:0}body.eo-custom-page .nav-menu.nav-bottom .item:not(.minimize-menu)>div{background:rgba(255,255,255,0.2);color:#fff;border-radius:6px}body.eo-custom-page .nav-menu.nav-bottom .item:not(.minimize-menu):hover>div{background:rgba(255,255,255,0.4)}body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu>div{color:rgba(255,255,255,0.6)}body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu:hover>div{background:none;color:white}body.eo-custom-page .nav-menu.nav-bottom .item.minimize-menu .item-label{-webkit-transition:none;transition:none}body.eo-custom-page .content-wrap{margin-left:200px;padding:0;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}body.eo-custom-page .content-wrap.content-reduce{margin-left:40px}body.eo-custom-page .content-wrap #top-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:1em;border-bottom:1px solid rgba(0,0,0,0.2)}body.eo-custom-page .content-wrap #top-header ul,body.eo-custom-page .content-wrap #top-header li{margin:0}body.eo-custom-page .content-wrap #top-header .nav-left{display:-webkit-box;display:-ms-flexbox;display:flex;max-width:70%;margin:auto 0 auto 0}body.eo-custom-page .content-wrap #top-header .nav-left>*{margin-top:auto;margin-bottom:auto}body.eo-custom-page .content-wrap #top-header .nav-right{max-width:30%;margin:auto 0 auto auto}body.eo-custom-page .content-wrap #top-header .nav-bottom{width:100%;margin-top:0.5em}body.eo-custom-page .content-wrap #top-header .nav-left .page-title{font-size:22px;margin-right:0.6em}body.eo-custom-page .content-wrap #top-header .nav-left .nav-header li{margin:0}body.eo-custom-page .content-wrap #top-header .nav-right .navigation-avatar img{border-radius:50%}body.eo-custom-page .content-wrap .eo-wrap{margin:0}body.eo-custom-page .content-wrap .wpeo-wrap{margin:0;padding:1em}body.eo-custom-page .content-wrap .wpeo-box{background:#fff;padding:1.4em}.wpeo-grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin-left:-0.5em;margin-right:-0.5em;width:100%}.wpeo-grid>*{padding:0.5em !important}.wpeo-grid.grid-1>*{width:100%}.wpeo-grid.grid-1>.grid-1{width:100%}.wpeo-grid.grid-2>*{width:50%}.wpeo-grid.grid-2>.grid-1{width:50%}.wpeo-grid.grid-2>.grid-2{width:100%}.wpeo-grid.grid-3>*{width:33.33333%}.wpeo-grid.grid-3>.grid-1{width:33.33333%}.wpeo-grid.grid-3>.grid-2{width:66.66667%}.wpeo-grid.grid-3>.grid-3{width:100%}.wpeo-grid.grid-4>*{width:25%}.wpeo-grid.grid-4>.grid-1{width:25%}.wpeo-grid.grid-4>.grid-2{width:50%}.wpeo-grid.grid-4>.grid-3{width:75%}.wpeo-grid.grid-4>.grid-4{width:100%}.wpeo-grid.grid-5>*{width:20%}.wpeo-grid.grid-5>.grid-1{width:20%}.wpeo-grid.grid-5>.grid-2{width:40%}.wpeo-grid.grid-5>.grid-3{width:60%}.wpeo-grid.grid-5>.grid-4{width:80%}.wpeo-grid.grid-5>.grid-5{width:100%}.wpeo-grid.grid-6>*{width:16.66667%}.wpeo-grid.grid-6>.grid-1{width:16.66667%}.wpeo-grid.grid-6>.grid-2{width:33.33333%}.wpeo-grid.grid-6>.grid-3{width:50%}.wpeo-grid.grid-6>.grid-4{width:66.66667%}.wpeo-grid.grid-6>.grid-5{width:83.33333%}.wpeo-grid.grid-6>.grid-6{width:100%}@media (max-width: 770px){.wpeo-grid.grid-1>*{width:100%}.wpeo-grid.grid-2>*,.wpeo-grid.grid-3>*,.wpeo-grid.grid-4>*,.wpeo-grid.grid-5>*,.wpeo-grid.grid-6>*{width:50%}}@media (max-width: 480px){.wpeo-grid.grid-1>*,.wpeo-grid.grid-2>*,.wpeo-grid.grid-3>*,.wpeo-grid.grid-4>*,.wpeo-grid.grid-5>*,.wpeo-grid.grid-6>*{width:100%}}.wpeo-grid.grid-padding-0{margin-left:0;margin-right:0}.wpeo-grid.grid-padding-0>*{padding:0 !important}.wpeo-grid.grid-padding-1{margin-left:-0.2em;margin-right:-0.2em}.wpeo-grid.grid-padding-1>*{padding:0.2em !important}.wpeo-grid.grid-padding-2{margin-left:-0.5em;margin-right:-0.5em}.wpeo-grid.grid-padding-2>*{padding:0.5em !important}.wpeo-grid.grid-padding-3{margin-left:-1em;margin-right:-1em}.wpeo-grid.grid-padding-3>*{padding:1em !important}.wpeo-gridlayout{display:grid;grid-gap:1em 1em;grid-template-columns:repeat(4, 1fr)}.wpeo-gridlayout.grid-1{grid-template-columns:repeat(1, 1fr)}.wpeo-gridlayout.grid-1>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-2{grid-template-columns:repeat(2, 1fr)}.wpeo-gridlayout.grid-2>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-2>.gridw-2{grid-column:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout.grid-2>.gridw-2{grid-column:auto / span 2}}.wpeo-gridlayout.grid-3{grid-template-columns:repeat(3, 1fr)}.wpeo-gridlayout.grid-3>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-3>.gridw-2{grid-column:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout.grid-3>.gridw-2{grid-column:auto / span 2}}.wpeo-gridlayout.grid-3>.gridw-3{grid-column:auto/span 3}@media (max-width: 770px){.wpeo-gridlayout.grid-3>.gridw-3{grid-column:auto / span 2}}.wpeo-gridlayout.grid-4{grid-template-columns:repeat(4, 1fr)}.wpeo-gridlayout.grid-4>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-4>.gridw-2{grid-column:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout.grid-4>.gridw-2{grid-column:auto / span 2}}.wpeo-gridlayout.grid-4>.gridw-3{grid-column:auto/span 3}@media (max-width: 770px){.wpeo-gridlayout.grid-4>.gridw-3{grid-column:auto / span 2}}.wpeo-gridlayout.grid-4>.gridw-4{grid-column:auto/span 4}@media (max-width: 770px){.wpeo-gridlayout.grid-4>.gridw-4{grid-column:auto / span 2}}.wpeo-gridlayout.grid-5{grid-template-columns:repeat(5, 1fr)}.wpeo-gridlayout.grid-5>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-5>.gridw-2{grid-column:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout.grid-5>.gridw-2{grid-column:auto / span 2}}.wpeo-gridlayout.grid-5>.gridw-3{grid-column:auto/span 3}@media (max-width: 770px){.wpeo-gridlayout.grid-5>.gridw-3{grid-column:auto / span 2}}.wpeo-gridlayout.grid-5>.gridw-4{grid-column:auto/span 4}@media (max-width: 770px){.wpeo-gridlayout.grid-5>.gridw-4{grid-column:auto / span 2}}.wpeo-gridlayout.grid-5>.gridw-5{grid-column:auto/span 5}@media (max-width: 770px){.wpeo-gridlayout.grid-5>.gridw-5{grid-column:auto / span 2}}.wpeo-gridlayout.grid-6{grid-template-columns:repeat(6, 1fr)}.wpeo-gridlayout.grid-6>.gridw-1{grid-column:auto/span 1}.wpeo-gridlayout.grid-6>.gridw-2{grid-column:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout.grid-6>.gridw-2{grid-column:auto / span 2}}.wpeo-gridlayout.grid-6>.gridw-3{grid-column:auto/span 3}@media (max-width: 770px){.wpeo-gridlayout.grid-6>.gridw-3{grid-column:auto / span 2}}.wpeo-gridlayout.grid-6>.gridw-4{grid-column:auto/span 4}@media (max-width: 770px){.wpeo-gridlayout.grid-6>.gridw-4{grid-column:auto / span 2}}.wpeo-gridlayout.grid-6>.gridw-5{grid-column:auto/span 5}@media (max-width: 770px){.wpeo-gridlayout.grid-6>.gridw-5{grid-column:auto / span 2}}.wpeo-gridlayout.grid-6>.gridw-6{grid-column:auto/span 6}@media (max-width: 770px){.wpeo-gridlayout.grid-6>.gridw-6{grid-column:auto / span 2}}.wpeo-gridlayout.grid-margin-0{margin:0em 0}.wpeo-gridlayout.grid-margin-1{margin:1em 0}.wpeo-gridlayout.grid-margin-2{margin:2em 0}.wpeo-gridlayout.grid-margin-3{margin:3em 0}.wpeo-gridlayout.grid-margin-4{margin:4em 0}.wpeo-gridlayout.grid-margin-5{margin:5em 0}.wpeo-gridlayout.grid-margin-6{margin:6em 0}.wpeo-gridlayout.grid-gap-0{grid-gap:0em 0em}.wpeo-gridlayout.grid-gap-1{grid-gap:1em 1em}.wpeo-gridlayout.grid-gap-2{grid-gap:2em 2em}.wpeo-gridlayout.grid-gap-3{grid-gap:3em 3em}.wpeo-gridlayout.grid-gap-4{grid-gap:4em 4em}.wpeo-gridlayout.grid-gap-5{grid-gap:5em 5em}.wpeo-gridlayout.grid-gap-6{grid-gap:6em 6em}.wpeo-gridlayout>.gridh-1{grid-row:auto/span 1}@media (max-width: 770px){.wpeo-gridlayout>.gridh-1{grid-row:auto / span 1 !important}}.wpeo-gridlayout>.gridh-2{grid-row:auto/span 2}@media (max-width: 770px){.wpeo-gridlayout>.gridh-2{grid-row:auto / span 1 !important}}.wpeo-gridlayout>.gridh-3{grid-row:auto/span 3}@media (max-width: 770px){.wpeo-gridlayout>.gridh-3{grid-row:auto / span 1 !important}}.wpeo-gridlayout>.gridh-4{grid-row:auto/span 4}@media (max-width: 770px){.wpeo-gridlayout>.gridh-4{grid-row:auto / span 1 !important}}.wpeo-gridlayout>.gridh-5{grid-row:auto/span 5}@media (max-width: 770px){.wpeo-gridlayout>.gridh-5{grid-row:auto / span 1 !important}}.wpeo-gridlayout>.gridh-6{grid-row:auto/span 6}@media (max-width: 770px){.wpeo-gridlayout>.gridh-6{grid-row:auto / span 1 !important}}@media (max-width: 770px){.wpeo-gridlayout{grid-template-columns:repeat(2, 1fr) !important}}@media (max-width: 480px){.wpeo-gridlayout{grid-template-columns:repeat(1, 1fr) !important}}@media (max-width: 480px){.wpeo-gridlayout>*{grid-column:auto / span 1 !important}}.wpeo-animate{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:1s;animation-duration:1s}.wpeo-animate.flipOutX,.wpeo-animate.flipOutY,.wpeo-animate.bounceIn,.wpeo-animate.bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s}.wpeo-animate.animate-hover:hover.bounce,.wpeo-animate.animate-on.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}.wpeo-animate.animate-hover:hover.flash,.wpeo-animate.animate-on.flash{-webkit-animation-name:flash;animation-name:flash}.wpeo-animate.animate-hover:hover.headShake,.wpeo-animate.animate-on.headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}.wpeo-animate.animate-hover:hover.jello,.wpeo-animate.animate-on.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}.wpeo-animate.animate-hover:hover.pulse,.wpeo-animate.animate-on.pulse{-webkit-animation-name:pulse;animation-name:pulse}.wpeo-animate.animate-hover:hover.rubberBand,.wpeo-animate.animate-on.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}.wpeo-animate.animate-hover:hover.shake,.wpeo-animate.animate-on.shake{-webkit-animation-name:shake;animation-name:shake}.wpeo-animate.animate-hover:hover.swing,.wpeo-animate.animate-on.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}.wpeo-animate.animate-hover:hover.tada,.wpeo-animate.animate-on.tada{-webkit-animation-name:tada;animation-name:tada}.wpeo-animate.animate-hover:hover.wobble,.wpeo-animate.animate-on.wobble{-webkit-animation-name:wobble;animation-name:wobble}.wpeo-animate.animate-hover:hover.bounceIn,.wpeo-animate.animate-on.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}.wpeo-animate.animate-hover:hover.bounceInDown,.wpeo-animate.animate-on.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}.wpeo-animate.animate-hover:hover.bounceInLeft,.wpeo-animate.animate-on.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}.wpeo-animate.animate-hover:hover.bounceInRight,.wpeo-animate.animate-on.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}.wpeo-animate.animate-hover:hover.bounceInUp,.wpeo-animate.animate-on.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}.wpeo-animate.animate-hover:hover.bounceOut,.wpeo-animate.animate-on.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}.wpeo-animate.animate-hover:hover.bounceOutDown,.wpeo-animate.animate-on.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}.wpeo-animate.animate-hover:hover.bounceOutLeft,.wpeo-animate.animate-on.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}.wpeo-animate.animate-hover:hover.bounceOutRight,.wpeo-animate.animate-on.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}.wpeo-animate.animate-hover:hover.bounceOutUp,.wpeo-animate.animate-on.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}.wpeo-animate.animate-hover:hover.fadeIn,.wpeo-animate.animate-on.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}.wpeo-animate.animate-hover:hover.fadeInDown,.wpeo-animate.animate-on.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.wpeo-animate.animate-hover:hover.fadeInDownBig,.wpeo-animate.animate-on.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}.wpeo-animate.animate-hover:hover.fadeInLeft,.wpeo-animate.animate-on.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}.wpeo-animate.animate-hover:hover.fadeInLeftBig,.wpeo-animate.animate-on.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}.wpeo-animate.animate-hover:hover.fadeInRight,.wpeo-animate.animate-on.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}.wpeo-animate.animate-hover:hover.fadeInRightBig,.wpeo-animate.animate-on.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}.wpeo-animate.animate-hover:hover.fadeInUp,.wpeo-animate.animate-on.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}.wpeo-animate.animate-hover:hover.fadeInUpBig,.wpeo-animate.animate-on.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}.wpeo-animate.animate-hover:hover.fadeOut,.wpeo-animate.animate-on.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}.wpeo-animate.animate-hover:hover.fadeOutDown,.wpeo-animate.animate-on.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}.wpeo-animate.animate-hover:hover.fadeOutDownBig,.wpeo-animate.animate-on.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}.wpeo-animate.animate-hover:hover.fadeOutLeft,.wpeo-animate.animate-on.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}.wpeo-animate.animate-hover:hover.fadeOutLeftBig,.wpeo-animate.animate-on.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}.wpeo-animate.animate-hover:hover.fadeOutRight,.wpeo-animate.animate-on.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}.wpeo-animate.animate-hover:hover.fadeOutRightBig,.wpeo-animate.animate-on.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}.wpeo-animate.animate-hover:hover.fadeOutUp,.wpeo-animate.animate-on.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}.wpeo-animate.animate-hover:hover.fadeOutUpBig,.wpeo-animate.animate-on.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}.wpeo-animate.animate-hover:hover.slideInDown,.wpeo-animate.animate-on.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}.wpeo-animate.animate-hover:hover.slideInLeft,.wpeo-animate.animate-on.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}.wpeo-animate.animate-hover:hover.slideInRight,.wpeo-animate.animate-on.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}.wpeo-animate.animate-hover:hover.slideInUp,.wpeo-animate.animate-on.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}.wpeo-animate.animate-hover:hover.slideOutDown,.wpeo-animate.animate-on.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}.wpeo-animate.animate-hover:hover.slideOutLeft,.wpeo-animate.animate-on.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}.wpeo-animate.animate-hover:hover.slideOutRight,.wpeo-animate.animate-on.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}.wpeo-animate.animate-hover:hover.slideOutUp,.wpeo-animate.animate-on.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.wpeo-animate.animate-hover:hover.bounceInLight,.wpeo-animate.animate-on.bounceInLight{-webkit-animation-name:bounceInLight;animation-name:bounceInLight}.wpeo-animate.animate-hover:hover.rotate,.wpeo-animate.animate-on.rotate{-webkit-animation-name:rotate;animation-name:rotate}.wpeo-animate.animate-hover:hover.downAndUp,.wpeo-animate.animate-on.downAndUp{-webkit-animation-name:downAndUp;animation-name:downAndUp}@-webkit-keyframes bounce{from,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);-webkit-transform:translate3d(0, -30px, 0);transform:translate3d(0, -30px, 0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);-webkit-transform:translate3d(0, -15px, 0);transform:translate3d(0, -15px, 0)}90%{-webkit-transform:translate3d(0, -4px, 0);transform:translate3d(0, -4px, 0)}}@keyframes bounce{from,20%,53%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);-webkit-transform:translate3d(0, -30px, 0);transform:translate3d(0, -30px, 0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);animation-timing-function:cubic-bezier(0.755, 0.05, 0.855, 0.06);-webkit-transform:translate3d(0, -15px, 0);transform:translate3d(0, -15px, 0)}90%{-webkit-transform:translate3d(0, -4px, 0);transform:translate3d(0, -4px, 0)}}@-webkit-keyframes flash{from,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{from,50%,to{opacity:1}25%,75%{opacity:0}}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes jello{from,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-0.78125deg) skewY(-0.78125deg);transform:skewX(-0.78125deg) skewY(-0.78125deg)}77.7%{-webkit-transform:skewX(0.39063deg) skewY(0.39063deg);transform:skewX(0.39063deg) skewY(0.39063deg)}88.8%{-webkit-transform:skewX(-0.19531deg) skewY(-0.19531deg);transform:skewX(-0.19531deg) skewY(-0.19531deg)}}@keyframes jello{from,11.1%,to{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-0.78125deg) skewY(-0.78125deg);transform:skewX(-0.78125deg) skewY(-0.78125deg)}77.7%{-webkit-transform:skewX(0.39063deg) skewY(0.39063deg);transform:skewX(0.39063deg) skewY(0.39063deg)}88.8%{-webkit-transform:skewX(-0.19531deg) skewY(-0.19531deg);transform:skewX(-0.19531deg) skewY(-0.19531deg)}}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.05, 1.05, 1.05);transform:scale3d(1.05, 1.05, 1.05)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes pulse{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}50%{-webkit-transform:scale3d(1.05, 1.05, 1.05);transform:scale3d(1.05, 1.05, 1.05)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}30%{-webkit-transform:scale3d(1.25, 0.75, 1);transform:scale3d(1.25, 0.75, 1)}40%{-webkit-transform:scale3d(0.75, 1.25, 1);transform:scale3d(0.75, 1.25, 1)}50%{-webkit-transform:scale3d(1.15, 0.85, 1);transform:scale3d(1.15, 0.85, 1)}65%{-webkit-transform:scale3d(0.95, 1.05, 1);transform:scale3d(0.95, 1.05, 1)}75%{-webkit-transform:scale3d(1.05, 0.95, 1);transform:scale3d(1.05, 0.95, 1)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}30%{-webkit-transform:scale3d(1.25, 0.75, 1);transform:scale3d(1.25, 0.75, 1)}40%{-webkit-transform:scale3d(0.75, 1.25, 1);transform:scale3d(0.75, 1.25, 1)}50%{-webkit-transform:scale3d(1.15, 0.85, 1);transform:scale3d(1.15, 0.85, 1)}65%{-webkit-transform:scale3d(0.95, 1.05, 1);transform:scale3d(0.95, 1.05, 1)}75%{-webkit-transform:scale3d(1.05, 0.95, 1);transform:scale3d(1.05, 0.95, 1)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes shake{from,to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px, 0, 0);transform:translate3d(-10px, 0, 0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px, 0, 0);transform:translate3d(10px, 0, 0)}}@keyframes shake{from,to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px, 0, 0);transform:translate3d(-10px, 0, 0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px, 0, 0);transform:translate3d(10px, 0, 0)}}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0, 0, 1, 15deg);transform:rotate3d(0, 0, 1, 15deg)}40%{-webkit-transform:rotate3d(0, 0, 1, -10deg);transform:rotate3d(0, 0, 1, -10deg)}60%{-webkit-transform:rotate3d(0, 0, 1, 5deg);transform:rotate3d(0, 0, 1, 5deg)}80%{-webkit-transform:rotate3d(0, 0, 1, -5deg);transform:rotate3d(0, 0, 1, -5deg)}to{-webkit-transform:rotate3d(0, 0, 1, 0deg);transform:rotate3d(0, 0, 1, 0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0, 0, 1, 15deg);transform:rotate3d(0, 0, 1, 15deg)}40%{-webkit-transform:rotate3d(0, 0, 1, -10deg);transform:rotate3d(0, 0, 1, -10deg)}60%{-webkit-transform:rotate3d(0, 0, 1, 5deg);transform:rotate3d(0, 0, 1, 5deg)}80%{-webkit-transform:rotate3d(0, 0, 1, -5deg);transform:rotate3d(0, 0, 1, -5deg)}to{-webkit-transform:rotate3d(0, 0, 1, 0deg);transform:rotate3d(0, 0, 1, 0deg)}}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}10%,20%{-webkit-transform:scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);transform:scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes tada{from{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}10%,20%{-webkit-transform:scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);transform:scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);transform:scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);transform:translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)}30%{-webkit-transform:translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);transform:translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)}45%{-webkit-transform:translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);transform:translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)}60%{-webkit-transform:translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);transform:translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)}75%{-webkit-transform:translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);transform:translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)}to{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);transform:translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)}30%{-webkit-transform:translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);transform:translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)}45%{-webkit-transform:translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);transform:translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)}60%{-webkit-transform:translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);transform:translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)}75%{-webkit-transform:translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);transform:translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}20%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03, 1.03, 1.03);transform:scale3d(1.03, 1.03, 1.03)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{opacity:1;-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}20%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03, 1.03, 1.03);transform:scale3d(1.03, 1.03, 1.03)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{opacity:1;-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -3000px, 0);transform:translate3d(0, -3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 25px, 0);transform:translate3d(0, 25px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -3000px, 0);transform:translate3d(0, -3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 25px, 0);transform:translate3d(0, 25px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes bounceInLeft{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(-3000px, 0, 0);transform:translate3d(-3000px, 0, 0)}60%{opacity:1;-webkit-transform:translate3d(25px, 0, 0);transform:translate3d(25px, 0, 0)}75%{-webkit-transform:translate3d(-10px, 0, 0);transform:translate3d(-10px, 0, 0)}90%{-webkit-transform:translate3d(5px, 0, 0);transform:translate3d(5px, 0, 0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(-3000px, 0, 0);transform:translate3d(-3000px, 0, 0)}60%{opacity:1;-webkit-transform:translate3d(25px, 0, 0);transform:translate3d(25px, 0, 0)}75%{-webkit-transform:translate3d(-10px, 0, 0);transform:translate3d(-10px, 0, 0)}90%{-webkit-transform:translate3d(5px, 0, 0);transform:translate3d(5px, 0, 0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes bounceInRight{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;-webkit-transform:translate3d(3000px, 0, 0);transform:translate3d(3000px, 0, 0)}60%{opacity:1;-webkit-transform:translate3d(-25px, 0, 0);transform:translate3d(-25px, 0, 0)}75%{-webkit-transform:translate3d(10px, 0, 0);transform:translate3d(10px, 0, 0)}90%{-webkit-transform:translate3d(-5px, 0, 0);transform:translate3d(-5px, 0, 0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInRight{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;-webkit-transform:translate3d(3000px, 0, 0);transform:translate3d(3000px, 0, 0)}60%{opacity:1;-webkit-transform:translate3d(-25px, 0, 0);transform:translate3d(-25px, 0, 0)}75%{-webkit-transform:translate3d(10px, 0, 0);transform:translate3d(10px, 0, 0)}90%{-webkit-transform:translate3d(-5px, 0, 0);transform:translate3d(-5px, 0, 0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes bounceInUp{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;-webkit-transform:translate3d(0, 3000px, 0);transform:translate3d(0, 3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, -20px, 0);transform:translate3d(0, -20px, 0)}75%{-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}90%{-webkit-transform:translate3d(0, -5px, 0);transform:translate3d(0, -5px, 0)}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes bounceInUp{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}from{opacity:0;-webkit-transform:translate3d(0, 3000px, 0);transform:translate3d(0, 3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, -20px, 0);transform:translate3d(0, -20px, 0)}75%{-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}90%{-webkit-transform:translate3d(0, -5px, 0);transform:translate3d(0, -5px, 0)}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}to{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}to{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, -20px, 0);transform:translate3d(0, -20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, -20px, 0);transform:translate3d(0, -20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px, 0, 0);transform:translate3d(20px, 0, 0)}to{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px, 0, 0);transform:translate3d(20px, 0, 0)}to{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px, 0, 0);transform:translate3d(-20px, 0, 0)}to{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px, 0, 0);transform:translate3d(-20px, 0, 0)}to{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}to{opacity:1;-webkit-transform:none;transform:none}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}@keyframes fadeOutDown{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}@-webkit-keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}}@keyframes fadeOutDownBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, 2000px, 0);transform:translate3d(0, 2000px, 0)}}@-webkit-keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}@keyframes fadeOutLeft{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}}@keyframes fadeOutLeftBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px, 0, 0);transform:translate3d(-2000px, 0, 0)}}@-webkit-keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}@keyframes fadeOutRight{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}@-webkit-keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}}@keyframes fadeOutRightBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px, 0, 0);transform:translate3d(2000px, 0, 0)}}@-webkit-keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}@keyframes fadeOutUp{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}@-webkit-keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}@keyframes fadeOutUpBig{from{opacity:1}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);visibility:visible}to{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0)}}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0)}}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}to{visibility:hidden;-webkit-transform:translate3d(0, -100%, 0);transform:translate3d(0, -100%, 0)}}@-webkit-keyframes bounceInLight{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}20%{-webkit-transform:scale3d(1.2, 1.2, 1.2);transform:scale3d(1.2, 1.2, 1.2)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes bounceInLight{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}20%{-webkit-transform:scale3d(1.2, 1.2, 1.2);transform:scale3d(1.2, 1.2, 1.2)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes downAndUp{0%{-webkit-transform:translateY(0px);transform:translateY(0px)}50%{-webkit-transform:translateY(4px);transform:translateY(4px)}100%{-webkit-transform:translateY(0px);transform:translateY(0px)}}@keyframes downAndUp{0%{-webkit-transform:translateY(0px);transform:translateY(0px)}50%{-webkit-transform:translateY(4px);transform:translateY(4px)}100%{-webkit-transform:translateY(0px);transform:translateY(0px)}}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}@keyframes rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.wpeo-autocomplete{position:relative}.wpeo-autocomplete.autocomplete-active .autocomplete-search-list{opacity:1;pointer-events:auto;-webkit-transform:translateY(0);transform:translateY(0)}.wpeo-autocomplete .autocomplete-label{background:#ececec}.wpeo-autocomplete .autocomplete-search-list{background:#ececec}.wpeo-autocomplete.autocomplete-light .autocomplete-label{background:#fff}.wpeo-autocomplete.autocomplete-light .autocomplete-search-list{background:#fff}.wpeo-autocomplete .autocomplete-label{display:block;padding:1em;margin:0;position:relative;-webkit-box-shadow:0 2px 2px 0px rgba(0,0,0,0.3);box-shadow:0 2px 2px 0px rgba(0,0,0,0.3);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;border:1px solid transparent}.wpeo-autocomplete .autocomplete-label:hover{cursor:text;border:1px solid #898de5}.wpeo-autocomplete .autocomplete-search-input{background-color:transparent;border:0;width:100%;padding:0 1.6em;font-size:14px;font-weight:400}.wpeo-autocomplete .autocomplete-search-input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}.wpeo-autocomplete .autocomplete-icon-before,.wpeo-autocomplete .autocomplete-icon-after{position:absolute;top:50%}.wpeo-autocomplete .autocomplete-icon-before{left:1em;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.wpeo-autocomplete .autocomplete-label .autocomplete-loading,.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background{display:block;content:'';position:absolute;bottom:0;left:0;-webkit-transition:width 0.6s linear;transition:width 0.6s linear;height:3px}.wpeo-autocomplete .autocomplete-label .autocomplete-loading{width:10%;background:#898de5}.wpeo-autocomplete .autocomplete-label .autocomplete-loading-background{width:100%;background:rgba(137,141,229,0.4)}.wpeo-autocomplete .autocomplete-icon-after{right:0;padding:1em;color:rgba(0,0,0,0.4);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;pointer-events:none;opacity:0;-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);-webkit-transform-origin:50%;transform-origin:50%}.wpeo-autocomplete .autocomplete-icon-after:hover{color:rgba(0,0,0,0.8);cursor:pointer}.wpeo-autocomplete.autocomplete-full .autocomplete-icon-after{opacity:1;pointer-events:all;-webkit-transform:translateY(-50%) translateX(0);transform:translateY(-50%) translateX(0)}.wpeo-autocomplete .autocomplete-search-list{opacity:0;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;-webkit-transform:translateY(-10px);transform:translateY(-10px);margin:0;padding:0;position:absolute;-webkit-box-shadow:0 2px 2px 0px rgba(0,0,0,0.3);box-shadow:0 2px 2px 0px rgba(0,0,0,0.3);border-top:1px solid rgba(0,0,0,0.1);z-index:99;width:300px;pointer-events:none}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result,.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-text{list-style-type:none;padding:0.6em 2.6em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin:0}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result:hover{background:rgba(0,0,0,0.05);cursor:pointer}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-image{margin-right:1em;width:auto}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-image.autocomplete-image-rounded{border-radius:50%}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-container{margin:auto 0}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-title,.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-subtitle{display:block}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-title{font-size:14px}.wpeo-autocomplete .autocomplete-search-list .autocomplete-result-subtitle{font-size:12px;color:rgba(0,0,0,0.5)}.wpeo-autocomplete.autocomplete-small .autocomplete-search-list{width:200px}.wpeo-autocomplete.autocomplete-medium .autocomplete-search-list{width:300px}.wpeo-autocomplete.autocomplete-large .autocomplete-search-list{width:400px}.wpeo-dropdown{position:relative;display:inline-block}.wpeo-dropdown .dropdown-toggle{display:inline-block}.wpeo-dropdown .dropdown-toggle span ~ *[class*="icon"]{margin-left:10px}.wpeo-dropdown .dropdown-content{opacity:0;pointer-events:none;-webkit-transform:translateY(-10px);transform:translateY(-10px);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;position:absolute;background:#fff;z-index:99;border:1px solid rgba(0,0,0,0.1);-webkit-box-shadow:0 0 10px 0px rgba(0,0,0,0.3);box-shadow:0 0 10px 0px rgba(0,0,0,0.3);width:220px;padding:0.6em}.wpeo-dropdown.dropdown-active .dropdown-content{opacity:1;pointer-events:auto;-webkit-transform:translateY(0);transform:translateY(0)}.wpeo-dropdown ul,.wpeo-dropdown li{margin:0;list-style-type:none;padding:0}.wpeo-dropdown .dropdown-item{display:block;color:rgba(0,0,0,0.7);text-decoration:none}.wpeo-dropdown .dropdown-item .dropdown-result-title,.wpeo-dropdown .dropdown-item .dropdown-result-subtitle{display:block}.wpeo-dropdown .dropdown-item .dropdown-result-title{font-size:14px}.wpeo-dropdown .dropdown-item .dropdown-result-subtitle{font-size:12px;color:rgba(0,0,0,0.5)}.wpeo-dropdown.dropdown-small .dropdown-content{width:60px}.wpeo-dropdown.dropdown-medium .dropdown-content{width:220px}.wpeo-dropdown.dropdown-large .dropdown-content{width:360px}.wpeo-dropdown.dropdown-padding-0 .dropdown-content{padding:0}.wpeo-dropdown.dropdown-padding-1 .dropdown-content{padding:0.6em}.wpeo-dropdown.dropdown-padding-2 .dropdown-content{padding:1.2em}.wpeo-dropdown.dropdown-left .dropdown-content{left:0}.wpeo-dropdown.dropdown-right .dropdown-content{right:0}.wpeo-dropdown.dropdown-horizontal.dropdown-left .dropdown-content{left:100%}.wpeo-dropdown.dropdown-horizontal.dropdown-right .dropdown-content{right:100%}.wpeo-dropdown.dropdown-horizontal .dropdown-content{top:0;width:auto !important;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.wpeo-dropdown .dropdown-item.dropdown-item-disable{opacity:0.6;cursor:default !important;pointer-events:none}.wpeo-dropdown .dropdown-content .dropdown-item{padding:0.6em;background:#fff;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-dropdown .dropdown-content .dropdown-item:hover{cursor:pointer;background:rgba(0,0,0,0.1)}.wpeo-dropdown.dropdown-list .dropdown-content{text-align:left}.wpeo-dropdown.dropdown-list .dropdown-item::after{display:block;content:'';clear:both}.wpeo-dropdown.dropdown-list .dropdown-item img{float:left;margin-right:0.4em}.wpeo-dropdown.dropdown-grid .dropdown-item{padding:0}.wpeo-dropdown.dropdown-grid .dropdown-item img{width:100%;height:auto;display:block}.wpeo-form input,.wpeo-form textarea,.wpeo-form select{border:0;font-size:14px;background:transparent;padding:0;margin:0;width:100%;padding:1em;-webkit-box-shadow:none;box-shadow:none}.wpeo-form input:focus,.wpeo-form input:active,.wpeo-form textarea:focus,.wpeo-form textarea:active,.wpeo-form select:focus,.wpeo-form select:active{outline:none;-webkit-box-shadow:none;box-shadow:none}.wpeo-form input[type="submit"]{width:auto}.wpeo-form .group-date .mysql-date{display:none}.wpeo-form .wpeo-dropdown{display:block;width:100%}.wpeo-form .wpeo-dropdown .dropdown-toggle{width:100%;display:block;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;border:0;font-size:14px;padding:1em 2em 1em 1em;margin:0}.wpeo-form .wpeo-dropdown .dropdown-toggle:hover{cursor:pointer}.wpeo-form .wpeo-dropdown .dropdown-toggle>.svg-inline--fa{position:absolute;right:1em;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.wpeo-form .form-element.disable .dropdown-toggle>.svg-inline--fa{display:none}.wpeo-form .wpeo-autocomplete{display:block;width:100%}.wpeo-form .wpeo-autocomplete .autocomplete-label{-webkit-box-shadow:none;box-shadow:none;padding:0.74em 1em}.wpeo-form.form-light .wpeo-autocomplete .autocomplete-label{background:#fff}.wpeo-form.form-light .wpeo-autocomplete .autocomplete-label:hover{background:#ececec}.wpeo-form .form-element input[type="radio"].form-field{display:inline-block;width:auto}.wpeo-form .form-element input[type="radio"].form-field{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:50%;width:16px;height:16px;padding:0;border:0;background:transparent !important;border:1px solid rgba(0,0,0,0.4);-webkit-transition:0.2s all linear;transition:0.2s all linear;outline:none;position:relative;top:2px}.wpeo-form .form-element input[type="radio"].form-field::before{display:none !important;content:'' !important}.wpeo-form .form-element input[type="radio"].form-field:hover{cursor:pointer;border:1px solid #898de5;-webkit-box-shadow:0 0 0 1px #898de5 inset;box-shadow:0 0 0 1px #898de5 inset;background:transparent !important}.wpeo-form .form-element input[type="radio"].form-field:checked{border:1px solid #898de5;-webkit-box-shadow:0 0 0 4px #898de5 inset;box-shadow:0 0 0 4px #898de5 inset}.wpeo-form .form-element input[type="radio"].form-field+label{text-transform:none;font-weight:400;font-size:14px;display:inline-block;margin-right:1em}.wpeo-form .form-element input[type="radio"].form-field+label:hover{cursor:pointer}.wpeo-form .form-element input[type="radio"].form-field+label:active{outline:none}.wpeo-form .form-element input[type="checkbox"].form-field{display:inline-block;width:auto}.wpeo-form .form-element input[type="checkbox"].form-field{width:auto;visibility:hidden;display:none}.wpeo-form .form-element input[type="checkbox"].form-field+label{text-transform:none;font-weight:400;font-size:14px;display:inline-block;margin-right:1em;position:relative}.wpeo-form .form-element input[type="checkbox"].form-field+label:hover{cursor:pointer}.wpeo-form .form-element input[type="checkbox"].form-field+label:active{outline:none}.wpeo-form .form-element input[type="checkbox"].form-field+label::before{display:inline-block;content:'';width:14px;height:14px;background:transparent;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.4);box-shadow:0 0 0 1px rgba(0,0,0,0.4);border:2px solid #fff;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;margin-right:0.6em}.wpeo-form .form-element input[type="checkbox"].form-field:not(:checked)+label:hover::before{-webkit-box-shadow:0 0 0 2px #898de5;box-shadow:0 0 0 2px #898de5}.wpeo-form .form-element input[type="checkbox"].form-field:checked+label::before{-webkit-box-shadow:0 0 0 2px #898de5;box-shadow:0 0 0 2px #898de5;background:#898de5}.wpeo-form .form-element{width:100%}.wpeo-form .form-element .form-label{display:block;font-size:12px;text-transform:uppercase;font-weight:900;margin:0.6em 0;color:rgba(0,0,0,0.8)}.wpeo-form .form-element .form-field-container{display:block;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.wpeo-form .form-element .form-field-container:hover{-webkit-box-shadow:none;box-shadow:none}.wpeo-form .form-element .form-field{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;border-radius:0}.wpeo-form .form-element .form-field:hover{-webkit-box-shadow:none;box-shadow:none}.wpeo-form .form-element .form-sublabel{font-size:12px;font-style:italic;color:rgba(0,0,0,0.6)}.wpeo-form .form-element .form-field-inline{margin-right:0.4em}.wpeo-form .form-element.form-align-vertical .form-field-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.wpeo-form .form-element.form-align-horizontal .form-field-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.wpeo-form .form-element .form-field-container .form-field,.wpeo-form .form-element .form-field-container [class*="form-field-icon"]{background:#ececec}.wpeo-form .form-element .form-field-container:hover .form-field,.wpeo-form .form-element .form-field-container:hover [class*="form-field-icon"]{background:#dfdfdf}.wpeo-form .form-element [class*="form-field-label"]{background:#dfdfdf}.wpeo-form.form-light .form-element .form-field-container .form-field,.wpeo-form.form-light .form-element .form-field-container [class*="form-field-icon"]{background:#fff}.wpeo-form.form-light .form-element .form-field-container:hover .form-field,.wpeo-form.form-light .form-element .form-field-container:hover [class*="form-field-icon"]{background:#ececec}.wpeo-form.form-light .form-element [class*="form-field-label"]{background:#ececec}.wpeo-form .form-element [class*="form-field-icon"]{padding:0.8em 0 0.8em 0.8em;color:rgba(0,0,0,0.4);font-size:16px;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-form .form-element [class*="form-field-icon"] [class*="fa"]{vertical-align:middle}.wpeo-form .form-element .form-field-icon-prev{padding:0.8em 0 0.8em 0.8em}.wpeo-form .form-element .form-field-icon-next{padding:0.8em 0.8em 0.8em 0}.wpeo-form .form-element [class*="form-field-label"]{padding:1.2em 1em;font-size:12px}.wpeo-form .form-element .form-field-label-prev{border-right:1px solid rgba(0,0,0,0.1)}.wpeo-form .form-element .form-field-label-next{border-left:1px solid rgba(0,0,0,0.1)}.wpeo-form .form-element.form-element-required .form-label::after{display:inline-block;content:'*';color:#e05353;padding:0 0.4em}.wpeo-form .form-element.form-element-error .form-field-container{border:1px solid #e05353}.wpeo-form .form-element.form-element-disable .form-field-container{opacity:0.6;pointer-events:none}.wpeo-button{display:inline-block;border:0;-webkit-box-shadow:none;box-shadow:none;background:none;text-decoration:none;padding:6px 14px;line-height:1.4;vertical-align:middle;height:auto;border-radius:0;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;position:relative;border-width:3px;border-style:solid;font-size:16px;background:#898de5;border-color:#898de5;color:#fff}.wpeo-button:focus,.wpeo-button:visited{color:#fff}.wpeo-button:hover{color:#fff;-webkit-box-shadow:inset 0 -2.6em rgba(255,255,255,0.25);box-shadow:inset 0 -2.6em rgba(255,255,255,0.25);cursor:pointer}.wpeo-button:focus,.wpeo-button:active{outline:none}.wpeo-button{background:#898de5;border-color:#898de5;color:#fff}.wpeo-button.button-main{background:#898de5;border-color:#898de5;color:#fff}.wpeo-button.button-light{background:#fff;border-color:#fff;color:#333333}.wpeo-button.button-light:hover{-webkit-box-shadow:inset 0 -2.6em rgba(0,0,0,0.1);box-shadow:inset 0 -2.6em rgba(0,0,0,0.1);color:#333333}.wpeo-button.button-dark{background:#2b2b2b;border-color:#2b2b2b}.wpeo-button.button-grey{background:#ececec;border-color:#ececec;color:#333333}.wpeo-button.button-grey:hover{-webkit-box-shadow:inset 0 -2.6em rgba(0,0,0,0.1);box-shadow:inset 0 -2.6em rgba(0,0,0,0.1);color:#333333}.wpeo-button.button-red{background:#e05353;border-color:#e05353}.wpeo-button.button-yellow{background:#e9ad4f;border-color:#e9ad4f}.wpeo-button.button-blue{background:#0d8aff;border-color:#0d8aff}.wpeo-button.button-green{background:#47e58e;border-color:#47e58e}.wpeo-button.button-transparent{background:transparent;border-color:transparent;color:rgba(51,51,51,0.4)}.wpeo-button.button-transparent:hover{color:#333333;-webkit-box-shadow:inset 0 -2.6em rgba(255,255,255,0);box-shadow:inset 0 -2.6em rgba(255,255,255,0)}.wpeo-button.button-bordered{background:none;border-color:#898de5;color:#898de5}.wpeo-button.button-bordered.button-main{border-color:#898de5;color:#898de5}.wpeo-button.button-bordered.button-main:hover{-webkit-box-shadow:inset 0 -2.6em #898de5;box-shadow:inset 0 -2.6em #898de5;color:#fff}.wpeo-button.button-bordered.button-light{border-color:#fff;color:#fff}.wpeo-button.button-bordered.button-light:hover{-webkit-box-shadow:inset 0 -2.6em #fff;box-shadow:inset 0 -2.6em #fff;color:#333333}.wpeo-button.button-bordered.button-dark{border-color:#2b2b2b;color:#2b2b2b}.wpeo-button.button-bordered.button-dark:hover{-webkit-box-shadow:inset 0 -2.6em #2b2b2b;box-shadow:inset 0 -2.6em #2b2b2b}.wpeo-button.button-bordered.button-grey{border-color:#ececec;color:#a0a0a0}.wpeo-button.button-bordered.button-grey:hover{-webkit-box-shadow:inset 0 -2.6em #ececec;box-shadow:inset 0 -2.6em #ececec;color:#333333}.wpeo-button.button-bordered.button-red{border-color:#e05353;color:#e05353}.wpeo-button.button-bordered.button-red:hover{-webkit-box-shadow:inset 0 -2.6em #e05353;box-shadow:inset 0 -2.6em #e05353}.wpeo-button.button-bordered.button-yellow{border-color:#e9ad4f;color:#e9ad4f}.wpeo-button.button-bordered.button-yellow:hover{-webkit-box-shadow:inset 0 -2.6em #e9ad4f;box-shadow:inset 0 -2.6em #e9ad4f}.wpeo-button.button-bordered.button-blue{border-color:#0d8aff;color:#0d8aff}.wpeo-button.button-bordered.button-blue:hover{-webkit-box-shadow:inset 0 -2.6em #0d8aff;box-shadow:inset 0 -2.6em #0d8aff}.wpeo-button.button-bordered.button-green{border-color:#47e58e;color:#47e58e}.wpeo-button.button-bordered.button-green:hover{-webkit-box-shadow:inset 0 -2.6em #47e58e;box-shadow:inset 0 -2.6em #47e58e}.wpeo-button.button-bordered:hover{-webkit-box-shadow:inset 0 -2.6em #898de5;box-shadow:inset 0 -2.6em #898de5;color:#fff}.wpeo-button .button-icon,.wpeo-button span{position:relative}.wpeo-button .button-icon ~ span{margin-left:10px}.wpeo-button span ~ .button-icon{margin-left:10px}.wpeo-button.button-strong span{font-weight:800}.wpeo-button.button-uppercase span{text-transform:uppercase;font-size:14px}.wpeo-button[class*="button-square-"]{text-align:center;overflow:hidden;padding:0}.wpeo-button.button-square-30{width:30px;height:30px;line-height:24px}.wpeo-button.button-square-30 .button-icon{font-size:12px}.wpeo-button.button-square-40{width:40px;height:40px;line-height:34px}.wpeo-button.button-square-50{width:50px;height:50px;line-height:44px}.wpeo-button.button-square-60{width:60px;height:60px;line-height:54px}.wpeo-button.button-float-left{float:left}.wpeo-button.button-float-right{float:right}.wpeo-button.button-margin{margin:1em 0}.wpeo-button.button-radius-1{border-radius:2px}.wpeo-button.button-radius-2{border-radius:4px}.wpeo-button.button-radius-3{border-radius:6px}.wpeo-button.button-rounded{border-radius:50%}.wpeo-button.button-disable{background:#ececec !important;border-color:#ececec !important;color:rgba(0,0,0,0.4) !important;pointer-events:none}.wpeo-button.button-disable:hover{-webkit-box-shadow:none !important;box-shadow:none !important}.wpeo-button.button-disable.button-event{pointer-events:all}.wpeo-button.button-size-small{font-size:14px}.wpeo-button.button-size-small.button-uppercase span{font-size:12px}.wpeo-button.button-size-large{font-size:18px}.wpeo-button.button-size-large.button-uppercase span{font-size:16px}.wpeo-button.button-progress{position:relative}.wpeo-button.button-progress::before{display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;font-variant:normal;font-weight:normal;line-height:1;vertical-align:-.125em;font-family:'Font Awesome 5 Free', 'Font Awesome 5 Pro';font-weight:900;content:'';opacity:0;-webkit-transform:translate(-50%, -90%);transform:translate(-50%, -90%);font-size:16px;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;position:absolute;left:50%;top:50%;z-index:99;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-button.button-progress .button-icon,.wpeo-button.button-progress span{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;display:inline-block}.wpeo-button.button-progress.button-success,.wpeo-button.button-progress.button-load,.wpeo-button.button-progress.button-error{pointer-events:none}.wpeo-button.button-progress.button-success::before,.wpeo-button.button-progress.button-load::before,.wpeo-button.button-progress.button-error::before{opacity:1;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.wpeo-button.button-progress.button-success .button-icon,.wpeo-button.button-progress.button-success span,.wpeo-button.button-progress.button-load .button-icon,.wpeo-button.button-progress.button-load span,.wpeo-button.button-progress.button-error .button-icon,.wpeo-button.button-progress.button-error span{opacity:0;-webkit-transform:translate(0, 40%);transform:translate(0, 40%)}.wpeo-button.button-progress.button-success{background:#47e58e;border-color:#47e58e;color:#fff}.wpeo-button.button-progress.button-success:before{content:"\f00c";-webkit-animation-name:progressSuccess;animation-name:progressSuccess}.wpeo-button.button-progress.button-error{background:#e05353;border-color:#e05353;color:#fff}.wpeo-button.button-progress.button-error:before{content:"\f00d";-webkit-animation-name:progressError;animation-name:progressError}.wpeo-button.button-progress.button-load{background:#ececec}.wpeo-button.button-progress.button-load:before{opacity:1;border:3px solid #fff;border-top:3px solid #898de5;border-radius:50%;width:20px;height:20px;-webkit-animation:spin 1s ease-out infinite;animation:spin 1s ease-out infinite}@-webkit-keyframes progressSuccess{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{-webkit-transform:translate(-50%, -50%) scale3d(1, 1, 1);transform:translate(-50%, -50%) scale3d(1, 1, 1)}20%{-webkit-transform:translate(-50%, -50%) scale3d(1.4, 1.4, 1.4);transform:translate(-50%, -50%) scale3d(1.4, 1.4, 1.4)}40%{-webkit-transform:translate(-50%, -50%) scale3d(0.9, 0.9, 0.9);transform:translate(-50%, -50%) scale3d(0.9, 0.9, 0.9)}60%{-webkit-transform:translate(-50%, -50%) scale3d(1.2, 1.2, 1.2);transform:translate(-50%, -50%) scale3d(1.2, 1.2, 1.2)}80%{-webkit-transform:translate(-50%, -50%) scale3d(0.97, 0.97, 0.97);transform:translate(-50%, -50%) scale3d(0.97, 0.97, 0.97)}to{-webkit-transform:translate(-50%, -50%) scale3d(1, 1, 1);transform:translate(-50%, -50%) scale3d(1, 1, 1)}}@keyframes progressSuccess{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{-webkit-transform:translate(-50%, -50%) scale3d(1, 1, 1);transform:translate(-50%, -50%) scale3d(1, 1, 1)}20%{-webkit-transform:translate(-50%, -50%) scale3d(1.4, 1.4, 1.4);transform:translate(-50%, -50%) scale3d(1.4, 1.4, 1.4)}40%{-webkit-transform:translate(-50%, -50%) scale3d(0.9, 0.9, 0.9);transform:translate(-50%, -50%) scale3d(0.9, 0.9, 0.9)}60%{-webkit-transform:translate(-50%, -50%) scale3d(1.2, 1.2, 1.2);transform:translate(-50%, -50%) scale3d(1.2, 1.2, 1.2)}80%{-webkit-transform:translate(-50%, -50%) scale3d(0.97, 0.97, 0.97);transform:translate(-50%, -50%) scale3d(0.97, 0.97, 0.97)}to{-webkit-transform:translate(-50%, -50%) scale3d(1, 1, 1);transform:translate(-50%, -50%) scale3d(1, 1, 1)}}@-webkit-keyframes progressError{from{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}15%{-webkit-transform:translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);transform:translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)}30%{-webkit-transform:translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);transform:translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)}45%{-webkit-transform:translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);transform:translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)}60%{-webkit-transform:translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);transform:translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)}75%{-webkit-transform:translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);transform:translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)}to{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}}@keyframes progressError{from{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}15%{-webkit-transform:translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);transform:translate(-50%, -50%) translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg)}30%{-webkit-transform:translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);transform:translate(-50%, -50%) translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg)}45%{-webkit-transform:translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);transform:translate(-50%, -50%) translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg)}60%{-webkit-transform:translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);transform:translate(-50%, -50%) translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg)}75%{-webkit-transform:translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);transform:translate(-50%, -50%) translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg)}to{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}}@-webkit-keyframes spin{0%{-webkit-transform:translate(-50%, -50%) rotate(0deg);transform:translate(-50%, -50%) rotate(0deg)}100%{-webkit-transform:translate(-50%, -50%) rotate(360deg);transform:translate(-50%, -50%) rotate(360deg)}}@keyframes spin{0%{-webkit-transform:translate(-50%, -50%) rotate(0deg);transform:translate(-50%, -50%) rotate(0deg)}100%{-webkit-transform:translate(-50%, -50%) rotate(360deg);transform:translate(-50%, -50%) rotate(360deg)}}.wpeo-loader{-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;pointer-events:none;opacity:0.5;position:relative}.wpeo-loader .loader-spin{position:absolute;border:3px solid #a7a7a7;border-top:3px solid #1d2285;border-radius:50%;width:20px;height:20px;z-index:99;left:50%;top:50%;margin:0 !important;padding:0 !important;-webkit-animation:loader-spin 1s ease-out infinite;animation:loader-spin 1s ease-out infinite}@-webkit-keyframes loader-spin{0%{-webkit-transform:translate(-50%, -50%) rotate(0deg);transform:translate(-50%, -50%) rotate(0deg)}100%{-webkit-transform:translate(-50%, -50%) rotate(360deg);transform:translate(-50%, -50%) rotate(360deg)}}@keyframes loader-spin{0%{-webkit-transform:translate(-50%, -50%) rotate(0deg);transform:translate(-50%, -50%) rotate(0deg)}100%{-webkit-transform:translate(-50%, -50%) rotate(360deg);transform:translate(-50%, -50%) rotate(360deg)}}.wpeo-notice{position:relative;font-size:1em;padding:1em;overflow:hidden;border-radius:3px;border:solid #eee 1px;margin:1em 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wpeo-notice::before{display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;font-variant:normal;font-weight:normal;line-height:1;vertical-align:-.125em;font-family:'Font Awesome 5 Free', 'Font Awesome 5 Pro';font-weight:900;font-weight:900;font-size:24px}.wpeo-notice .notice-content{width:100%;padding:0 1em;color:rgba(0,0,0,0.6)}.wpeo-notice .notice-title{font-size:20px;font-weight:600;color:rgba(0,0,0,0.9)}.wpeo-notice .notice-subtitle{font-size:14px}.wpeo-notice .notice-close{color:rgba(0,0,0,0.3);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-notice .notice-close:hover{color:#898de5;cursor:pointer}.wpeo-notice ul{padding:0 0 0 1.4em;margin:0.4em 0}.wpeo-notice.notice-info{border-left:solid #0d8aff 6px;color:#0d8aff;background:rgba(13,138,255,0.05)}.wpeo-notice.notice-info::before{content:"\f05a"}.wpeo-notice.notice-info .notice-title,.wpeo-notice.notice-info .notice-subtitle,.wpeo-notice.notice-info a{color:#0d8aff}.wpeo-notice.notice-error{border-left:solid #e05353 6px;color:#e05353;background:rgba(224,83,83,0.05)}.wpeo-notice.notice-error::before{content:"\f057"}.wpeo-notice.notice-error .notice-title,.wpeo-notice.notice-error .notice-subtitle,.wpeo-notice.notice-error a{color:#e05353}.wpeo-notice.notice-warning{border-left:solid #e9ad4f 6px;color:#e9ad4f;background:rgba(233,173,79,0.05)}.wpeo-notice.notice-warning::before{content:"\f071"}.wpeo-notice.notice-warning .notice-title,.wpeo-notice.notice-warning .notice-subtitle,.wpeo-notice.notice-warning a{color:#e9ad4f}.wpeo-notice.notice-success{border-left:solid #47e58e 6px;color:#47e58e;background:rgba(71,229,142,0.05)}.wpeo-notice.notice-success::before{content:"\f058"}.wpeo-notice.notice-success .notice-title,.wpeo-notice.notice-success .notice-subtitle,.wpeo-notice.notice-success a{color:#47e58e}.wpeo-notification{position:fixed;background:rgba(255,255,255,0.6);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;z-index:900;padding:1em;bottom:3em;right:1em;max-width:600px;-webkit-box-shadow:0 0 14px 1px rgba(0,0,0,0.2);box-shadow:0 0 14px 1px rgba(0,0,0,0.2);display:-webkit-box;display:-ms-flexbox;display:flex;opacity:0;pointer-events:none}.wpeo-notification:hover{background:white;-webkit-box-shadow:0 0 14px 1px rgba(0,0,0,0.4);box-shadow:0 0 14px 1px rgba(0,0,0,0.4);cursor:pointer}.wpeo-notification.notification-active{-webkit-animation:notification 0.8s ease-out;animation:notification 0.8s ease-out;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;opacity:1;pointer-events:all}.wpeo-notification>*{margin:auto 0.2em}.wpeo-notification .notification-thumbnail{width:40px;height:40px;background:rgba(0,0,0,0.1);border-radius:50%;display:inline-block;overflow:hidden;margin-right:0.4em}.wpeo-notification .notification-thumbnail img{width:100%;height:auto}.wpeo-notification .notification-icon{margin-right:0.4em}.wpeo-notification .notification-title{font-size:14px;color:rgba(0,0,0,0.7)}.wpeo-notification .notification-title a{color:#898de5;text-decoration:none}.wpeo-notification .notification-title a:hover{text-decoration:underline}.wpeo-notification .notification-close{padding-left:0.4em;color:rgba(0,0,0,0.2);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;margin-left:auto}.wpeo-notification .notification-close:hover{color:#898de5}.wpeo-notification .notification-icon{color:rgba(0,0,0,0.3)}.wpeo-notification.notification-green{border-left:4px solid #47e58e}.wpeo-notification.notification-green .notification-icon{color:#47e58e}.wpeo-notification.notification-orange{border-left:4px solid #e9ad4f}.wpeo-notification.notification-orange .notification-icon{color:#e9ad4f}.wpeo-notification.notification-red{border-left:4px solid #e05353}.wpeo-notification.notification-red .notification-icon{color:#e05353}.wpeo-notification.notification-blue{border-left:4px solid #0d8aff}.wpeo-notification.notification-blue .notification-icon{color:#0d8aff}@-webkit-keyframes notification{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -40px, 0);transform:translate3d(0, -40px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}@keyframes notification{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -40px, 0);transform:translate3d(0, -40px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 10px, 0);transform:translate3d(0, 10px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}.wpeo-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99998;background:rgba(39,42,53,0.9);opacity:0;pointer-events:none;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal.modal-active{opacity:1;pointer-events:auto}.wpeo-modal.modal-active .modal-container{-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%)}.wpeo-modal.modal-force-display .modal-close{display:none}.wpeo-modal .modal-container{position:absolute;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;width:100%;max-width:860px;height:100%;max-height:560px;background:#fff;padding:2em;margin:auto;top:50%;left:50%;-webkit-transform:translate(-50%, -60%);transform:translate(-50%, -60%)}@media (max-width: 480px){.wpeo-modal .modal-container{padding:1em}}.wpeo-modal .modal-container .modal-header{height:10%;display:-webkit-box;display:-ms-flexbox;display:flex}.wpeo-modal .modal-container .modal-content{height:78%}.wpeo-modal .modal-container .modal-footer{height:12%}.wpeo-modal .modal-container .modal-header .modal-title,.wpeo-modal .modal-container .modal-header .modal-close{margin:auto 0}.wpeo-modal .modal-container .modal-header .modal-title{text-transform:uppercase;font-size:18px;white-space:normal}@media (max-width: 770px){.wpeo-modal .modal-container .modal-header .modal-title{font-size:16px}}@media (max-width: 480px){.wpeo-modal .modal-container .modal-header .modal-title{font-size:14px}}.wpeo-modal .modal-container .modal-header .modal-close{margin-left:auto;color:rgba(0,0,0,0.3);padding:4px;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-modal .modal-container .modal-header .modal-close:hover{cursor:pointer;color:#898de5}.wpeo-modal .modal-container .modal-content{overflow-y:auto;font-size:14px}@media (max-width: 480px){.wpeo-modal .modal-container .modal-content{font-size:12px}}.wpeo-modal .modal-container .modal-footer{text-align:right;padding-top:1em}.wpeo-modal .modal-container .modal-footer.left{text-align:left}.wpeo-modal .modal-container .modal-footer.center{text-align:center}.wpeo-pagination{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;margin:0;padding:0}.wpeo-pagination .pagination-element{margin:0;list-style-type:none;padding:0 0.2em}.wpeo-pagination .pagination-element a{padding:0.2em 0.8em;display:inline-block;background:#fff;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;border-radius:4px;text-decoration:none;color:rgba(0,0,0,0.8);font-size:12px}.wpeo-pagination .pagination-element a:hover{background:rgba(0,0,0,0.1)}.wpeo-pagination .pagination-element .pagination-icon{font-size:12px}.wpeo-pagination .pagination-element.pagination-current a{background:#898de5;color:#fff}.wpeo-pagination .pagination-element.pagination-current a:hover{background:#898de5}.wpeo-pagination .pagination-element.pagination-prev,.wpeo-pagination .pagination-element.pagination-next{font-weight:700}.wpeo-pagination .pagination-element.pagination-prev a,.wpeo-pagination .pagination-element.pagination-next a{background:rgba(0,0,0,0.05)}.wpeo-pagination .pagination-element.pagination-prev a:hover,.wpeo-pagination .pagination-element.pagination-next a:hover{background:rgba(0,0,0,0.15)}.wpeo-pagination .pagination-element.pagination-prev .pagination-icon{margin-right:0.4em}.wpeo-pagination .pagination-element.pagination-next .pagination-icon{margin-left:0.4em}.wpeo-popover{display:block;position:absolute;bottom:0;left:0;opacity:0;pointer-events:none;z-index:99999;white-space:nowrap;background:#2b2b2b;color:#fff;border-radius:6px;font-size:0.8rem;padding:0 1em;height:2.2em;line-height:2.2em}.wpeo-popover::before{display:block;content:'';width:0;height:0;border-style:solid;position:absolute}.wpeo-popover:focus{outline:none}.wpeo-popover.popover-dark{background:#2b2b2b}.wpeo-popover.popover-dark.tooltip-top::before{border-color:#2b2b2b transparent transparent transparent}.wpeo-popover.popover-dark.tooltip-right::before{border-color:transparent #2b2b2b transparent transparent}.wpeo-popover.popover-dark.tooltip-bottom::before{border-color:transparent transparent #2b2b2b transparent}.wpeo-popover.popover-dark.tooltip-left::before{border-color:transparent transparent transparent #2b2b2b}.wpeo-popover.popover-primary{background:#898de5}.wpeo-popover.popover-primary.tooltip-top::before{border-color:#898de5 transparent transparent transparent}.wpeo-popover.popover-primary.tooltip-right::before{border-color:transparent #898de5 transparent transparent}.wpeo-popover.popover-primary.tooltip-bottom::before{border-color:transparent transparent #898de5 transparent}.wpeo-popover.popover-primary.tooltip-left::before{border-color:transparent transparent transparent #898de5}.wpeo-popover.popover-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-popover.popover-light.tooltip-top::before{border-color:#ececec transparent transparent transparent}.wpeo-popover.popover-light.tooltip-right::before{border-color:transparent #ececec transparent transparent}.wpeo-popover.popover-light.tooltip-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-popover.popover-light.tooltip-left::before{border-color:transparent transparent transparent #ececec}.wpeo-popover.popover-red{background:#e05353}.wpeo-popover.popover-red.tooltip-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-popover.popover-red.tooltip-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-popover.popover-red.tooltip-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-popover.popover-red.tooltip-left::before{border-color:transparent transparent transparent #e05353}.wpeo-popover.popover-top::before{border-width:6px 6px 0 6px;border-color:#2b2b2b transparent transparent transparent;bottom:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.wpeo-popover.popover-right::before{border-width:6px 6px 6px 0;border-color:transparent #2b2b2b transparent transparent;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-6px}.wpeo-popover.popover-bottom::before{border-width:0 6px 6px 6px;border-color:transparent transparent #2b2b2b transparent;top:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.wpeo-popover.popover-left::before{border-width:6px 0 6px 6px;border-color:transparent transparent transparent #2b2b2b;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-6px}.wpeo-tab .tab-list{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.wpeo-tab .tab-list .tab-element{list-style-type:none;padding:1.6em 2.4em;margin:0;text-transform:uppercase;font-size:12px !important;position:relative;background:rgba(0,0,0,0.1);color:rgba(0,0,0,0.6);-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-tab .tab-list .tab-element::before{display:block;content:'';position:absolute;top:0;left:0;width:0px;height:2px;background:#898de5;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out}.wpeo-tab .tab-list .tab-element:hover{cursor:pointer}.wpeo-tab .tab-list .tab-element:hover:not(.tab-active){background:rgba(0,0,0,0.2)}.wpeo-tab .tab-list .tab-element>a{color:rgba(0,0,0,0.6)}.wpeo-tab .tab-list .tab-element.tab-active{background:#fff;color:#898de5}.wpeo-tab .tab-list .tab-element.tab-active>a{color:#898de5}.wpeo-tab .tab-list .tab-element.tab-active::before{width:100%}.wpeo-tab .tab-list .tab-element.tab-disabled{color:rgba(0,0,0,0.2);pointer-events:none}.wpeo-tab .tab-list .tab-element.tab-disabled>a{color:rgba(0,0,0,0.4)}.wpeo-tab .tab-list .tab-element .tab-icon{display:block;text-align:center;font-size:20px;margin-bottom:0.4em}.wpeo-tab .tab-container{position:relative}.wpeo-tab .tab-container .tab-content{display:block;width:100%;padding:2em;position:absolute;top:0;left:0;width:100%;opacity:0;pointer-events:none;background:#fff;-webkit-transition:all 0.2s ease-out;transition:all 0.2s ease-out;z-index:10}.wpeo-tab .tab-container .tab-content.tab-active{opacity:1;pointer-events:all;position:static}.wpeo-tab .tab-list .tab-element.wpeo-dropdown{padding:0}.wpeo-tab .tab-list .tab-element.wpeo-dropdown .dropdown-toggle{padding:1.6em 2.4em}.wpeo-tab.tab-vertical{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.wpeo-tab.tab-vertical .tab-list{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:180px}.wpeo-tab.tab-vertical .tab-list .tab-element::before{width:2px;height:0}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active{color:#898de5}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active a{color:#898de5}.wpeo-tab.tab-vertical .tab-list .tab-element.tab-active::before{height:100%}.wpeo-tab.tab-vertical .tab-list .tab-element .tab-icon{display:inline-block;margin:0 0.4em 0 0;font-size:14px;text-align:left}.wpeo-tab.tab-vertical .tab-container{width:100%}.wpeo-tab.tab-fade-vertical .tab-container .tab-content{-webkit-transform:translateY(-40px);transform:translateY(-40px);-webkit-animation:0.3s linear 0s disappear_tab;animation:0.3s linear 0s disappear_tab}.wpeo-tab.tab-fade-vertical .tab-container .tab-content.tab-active{-webkit-transform:translateY(0);transform:translateY(0);-webkit-animation:0.2s ease-out 0s appear_tab;animation:0.2s ease-out 0s appear_tab}@-webkit-keyframes disappear_tab{from{opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}to{opacity:0;-webkit-transform:translateY(40px);transform:translateY(40px)}}@keyframes disappear_tab{from{opacity:1;-webkit-transform:translateY(0px);transform:translateY(0px)}to{opacity:0;-webkit-transform:translateY(40px);transform:translateY(40px)}}@-webkit-keyframes appear_tab{from{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes appear_tab{from{opacity:0;-webkit-transform:translateY(-40px);transform:translateY(-40px)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.wpeo-tab.tab-fade-horizontal .tab-container .tab-content{-webkit-transform:translateX(-40px);transform:translateX(-40px);-webkit-animation:0.4s linear 0s disappear_tab_2;animation:0.4s linear 0s disappear_tab_2}.wpeo-tab.tab-fade-horizontal .tab-container .tab-content.tab-active{-webkit-transform:translateX(0);transform:translateX(0);-webkit-animation:0.2s ease-out 0s appear_tab_2;animation:0.2s ease-out 0s appear_tab_2}@-webkit-keyframes disappear_tab_2{from{opacity:1;-webkit-transform:translateX(0px);transform:translateX(0px)}to{opacity:0;-webkit-transform:translateX(40px);transform:translateX(40px)}}@keyframes disappear_tab_2{from{opacity:1;-webkit-transform:translateX(0px);transform:translateX(0px)}to{opacity:0;-webkit-transform:translateX(40px);transform:translateX(40px)}}@-webkit-keyframes appear_tab_2{from{opacity:0;-webkit-transform:translateX(-40px);transform:translateX(-40px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes appear_tab_2{from{opacity:0;-webkit-transform:translateX(-40px);transform:translateX(-40px)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}.wpeo-table{width:100%;border:1px solid rgba(0,0,0,0.1);font-size:14px;border-collapse:collapse}.wpeo-table td,.wpeo-table th,.wpeo-table tr{text-align:left;vertical-align:middle}.wpeo-table th{font-weight:700}.wpeo-table th,.wpeo-table td{padding:0.8em 0.6em}@media (max-width: 770px){.wpeo-table th,.wpeo-table td{padding:0.4em}}.wpeo-table>thead,.wpeo-table>tfoot{background:#898de5;color:#fff}.wpeo-table>tbody tr:nth-child(odd){background:#fff}.wpeo-table>tbody tr:nth-child(even){background:rgba(0,0,0,0.05)}@media (max-width: 480px){.wpeo-table>thead{display:none}.wpeo-table>tbody tr{border-bottom:1px solid rgba(0,0,0,0.1)}.wpeo-table>tbody tr:nth-child(even){background:#fff}.wpeo-table>tbody tr:last-child{border-bottom:0}.wpeo-table>tbody td,.wpeo-table>tbody th{display:block;width:100%;font-size:14px;padding:0.4em 0.6em}.wpeo-table>tbody td:before,.wpeo-table>tbody th:before{content:attr(data-title);display:inline-block;color:#898de5;width:100%;max-width:160px}}.wpeo-table.table-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-size:14px}.wpeo-table.table-flex .table-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.wpeo-table.table-flex .table-row:not(.table-header):nth-of-type(odd){background:rgba(0,0,0,0.05)}.wpeo-table.table-flex .table-row.table-header{background:#898de5}.wpeo-table.table-flex .table-row.table-header .table-cell{font-weight:700;color:#fff}.wpeo-table.table-flex .table-cell{margin:auto 0;width:100%;padding:0.8em 0.6em}@media (max-width: 770px){.wpeo-table.table-flex .table-cell{padding:0.4em}}.wpeo-table.table-flex.table-1 .table-cell{width:100%}.wpeo-table.table-flex.table-2 .table-cell{width:50%}.wpeo-table.table-flex.table-3 .table-cell{width:33.33333%}.wpeo-table.table-flex.table-4 .table-cell{width:25%}.wpeo-table.table-flex.table-5 .table-cell{width:20%}.wpeo-table.table-flex.table-6 .table-cell{width:16.66667%}.wpeo-table.table-flex.table-7 .table-cell{width:14.28571%}.wpeo-table.table-flex.table-8 .table-cell{width:12.5%}.wpeo-table.table-flex.table-9 .table-cell{width:11.11111%}.wpeo-table.table-flex.table-10 .table-cell{width:10%}.wpeo-table.table-flex .table-cell.table-25{max-width:25px;min-width:25px}.wpeo-table.table-flex .table-cell.table-50{max-width:50px;min-width:50px}.wpeo-table.table-flex .table-cell.table-75{max-width:75px;min-width:75px}.wpeo-table.table-flex .table-cell.table-100{max-width:100px;min-width:100px}.wpeo-table.table-flex .table-cell.table-125{max-width:125px;min-width:125px}.wpeo-table.table-flex .table-cell.table-150{max-width:150px;min-width:150px}.wpeo-table.table-flex .table-cell.table-175{max-width:175px;min-width:175px}.wpeo-table.table-flex .table-cell.table-200{max-width:200px;min-width:200px}.wpeo-table.table-flex .table-cell.table-225{max-width:225px;min-width:225px}.wpeo-table.table-flex .table-cell.table-250{max-width:250px;min-width:250px}.wpeo-table.table-flex .table-cell.table-275{max-width:275px;min-width:275px}.wpeo-table.table-flex .table-cell.table-300{max-width:300px;min-width:300px}.wpeo-table.table-flex .table-cell.table-325{max-width:325px;min-width:325px}.wpeo-table.table-flex .table-cell.table-350{max-width:350px;min-width:350px}.wpeo-table.table-flex .table-cell.table-375{max-width:375px;min-width:375px}.wpeo-table.table-flex .table-cell.table-400{max-width:400px;min-width:400px}.wpeo-table.table-flex .table-cell.table-425{max-width:425px;min-width:425px}.wpeo-table.table-flex .table-cell.table-450{max-width:450px;min-width:450px}.wpeo-table.table-flex .table-cell.table-475{max-width:475px;min-width:475px}.wpeo-table.table-flex .table-cell.table-500{max-width:500px;min-width:500px}.wpeo-table.table-flex .table-cell.table-full{width:100%}.wpeo-table.table-flex .table-cell.table-end{text-align:right;margin-left:auto}.wpeo-table.table-flex .table-cell.table-padding-0{padding:0}@media (max-width: 480px){.wpeo-table.table-flex .table-row{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.wpeo-table.table-flex .table-cell{width:100%}}.wpeo-tooltip{display:block;position:absolute;bottom:0;left:0;opacity:0;pointer-events:none;z-index:99999;white-space:nowrap;background:#2b2b2b;color:#fff;border-radius:6px;font-size:0.8rem;padding:0 1em;height:2.2em;line-height:2.2em}.wpeo-tooltip::before{display:block;content:'';width:0;height:0;border-style:solid;position:absolute}.wpeo-tooltip:focus{outline:none}.wpeo-tooltip.tooltip-dark{background:#2b2b2b}.wpeo-tooltip.tooltip-dark.tooltip-top::before{border-color:#2b2b2b transparent transparent transparent}.wpeo-tooltip.tooltip-dark.tooltip-right::before{border-color:transparent #2b2b2b transparent transparent}.wpeo-tooltip.tooltip-dark.tooltip-bottom::before{border-color:transparent transparent #2b2b2b transparent}.wpeo-tooltip.tooltip-dark.tooltip-left::before{border-color:transparent transparent transparent #2b2b2b}.wpeo-tooltip.tooltip-primary{background:#898de5}.wpeo-tooltip.tooltip-primary.tooltip-top::before{border-color:#898de5 transparent transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-right::before{border-color:transparent #898de5 transparent transparent}.wpeo-tooltip.tooltip-primary.tooltip-bottom::before{border-color:transparent transparent #898de5 transparent}.wpeo-tooltip.tooltip-primary.tooltip-left::before{border-color:transparent transparent transparent #898de5}.wpeo-tooltip.tooltip-light{background:#ececec;color:rgba(0,0,0,0.6)}.wpeo-tooltip.tooltip-light.tooltip-top::before{border-color:#ececec transparent transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-right::before{border-color:transparent #ececec transparent transparent}.wpeo-tooltip.tooltip-light.tooltip-bottom::before{border-color:transparent transparent #ececec transparent}.wpeo-tooltip.tooltip-light.tooltip-left::before{border-color:transparent transparent transparent #ececec}.wpeo-tooltip.tooltip-red{background:#e05353}.wpeo-tooltip.tooltip-red.tooltip-top::before{border-color:#e05353 transparent transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-right::before{border-color:transparent #e05353 transparent transparent}.wpeo-tooltip.tooltip-red.tooltip-bottom::before{border-color:transparent transparent #e05353 transparent}.wpeo-tooltip.tooltip-red.tooltip-left::before{border-color:transparent transparent transparent #e05353}.wpeo-tooltip.tooltip-top::before{border-width:6px 6px 0 6px;border-color:#2b2b2b transparent transparent transparent;bottom:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.wpeo-tooltip.tooltip-right::before{border-width:6px 6px 6px 0;border-color:transparent #2b2b2b transparent transparent;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:-6px}.wpeo-tooltip.tooltip-bottom::before{border-width:0 6px 6px 6px;border-color:transparent transparent #2b2b2b transparent;top:-6px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.wpeo-tooltip.tooltip-left::before{border-width:6px 0 6px 6px;border-color:transparent transparent transparent #2b2b2b;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:-6px}.wpeo-util-hidden{display:none !important}.wpeo-screen-options{text-align:right;width:100%}.wpeo-screen-options .content{width:99%;text-align:left;margin-left:20px}.wpeo-screen-options .content .wpeo-form{padding:20px;margin:0;background-color:#3495f0;border:1px solid #ccd0d4}.wpeo-screen-options .content .wpeo-form li{width:20%}.wpeo-modal .xdsoft_datetimepicker{z-index:99999 !important} diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.eot b/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..da7bd5eb705f90c573750154b352f8338e5f04cf GIT binary patch literal 125320 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 bw!R*vTm2Ss!!>70f7K1odh<8d+wcAdBx%bL literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.svg b/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.svg new file mode 100644 index 0000000..caa8cc4 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.svg @@ -0,0 +1,3296 @@ + + + + +Created by FontForge 20190112 at Tue Feb 12 10:24:59 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.ttf b/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5f72e9127ffaae2a500cd9d950067f46c21b277c GIT binary patch literal 125016 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 x za@AN@*I3stEzh>S^&s!b(ZtTgXwI-DXfe55a5mWu1)t?PJtM~ok#?4C^9nIJqa&BF zJZq#|*<2;aCN)$$x#=UQwrlJQv|g)0>zssLz~%I8+D+_Cj^y%GOPieeHSYD=gx0OJ z#-pCYr<`=elY$2!+jt-C`Ap`2(q4FWtPYRa(Ui8JUMkf~&j;ThAgN#B!r{Nebkx$- zSV$gtCmg>}oE?6rBGsBT|IhPwlA+svblYt|>c0K3ZsmH`oL#|p&a}p<3a`_&%!VN&hqpaB`ufS@8ib$qdbLL525_mGDl49(0NwN!u zgviZoGzlw6Jh>Z&jxzJJPks`7Spr`j248Il@dSDYjF>`xlmv{1uJRP5FBnlL)c~4M zzB9xl4ZWW07)u+ys@BoQ5o>|EN>x`Catbf79-lRwWKWlWt2(9g=0wR>FHl#g*CZl3 z+9r*|g+h7Vdu#t6XhH;QyG-@E@+h8;#=!K)L6<(10(TDDl4fhwqbG%!EQl2PdBhtK z#R0KPA$-3ire&v`==i`a-OfsFP(fMQ2(3iXMWQ+w;-pS-otaFwu#z{(C0MH|1|qfO z`XK&175oK}E(we`)B`9(SOsDQ_A%wh9+@+$4`}y)>2u3mTh??*8`V>0dE#L{!GxO7x4;i5U*M2_ z;)y5R1Ne|r;@^1qjz`&V{FL02e-&dYGTB3~VXD6XU9Jd}XNp7P zNd0qIcaw>7BI)YkKmSG4Y*%wYjc%ji!iXVGD*uqEh$1gsB=Wq(2^@c#Y$){B(18ne z+tx4CZ2QZPJ*J07!=@P?9SvFd4!x+yBCaJCu$+t0Xp!ewu3*(&S(0Q?#5WJ|SCtIu za1|H_l~E2oO}<5*1Lux`|6Kvx_(A4*qLOwpiS<*cfYE{Xp$AeP0=3~+MJeCkCpun) z@;FLlkhUVOnrwldV3~m$Th>RwBQfDP#Xne6V<5yd3v(7mzXuHq2mQwZ8u81GS{k&2 zJeXp63D{br57M+rtz+B{0!JZGvPbJ`Pyr7zlk!}n+@k-0>!JnJ^hG(}Yt(7cdQcph zwFb4RE7Wp^mX0=7S{(>#s+c^wf_BmlwHhUf1+O#^^aq@u-r0|9l1s0n1!F8%25I-B z`G7NUPW&ppnQ9-u1ONlp$r09rF$$Fhr?1(>5d4tnB@(b^^^zo6s?JMJEF(vvq9q6t z3nf-COrB^wuUefhC_%PzF+Xbnt0B6o=Zug+aUR%&&k3xIKT#BMlfqf5oa!@0U4#`X zVwQQ4=$^=OI&5lDjk951uy~6%b=|_$wz00Nt1_!_qM=bLL5*Cjs7I@rp#<&{Y_5ma)Or(M-c@f95W;f9FdKN3D6!G_L{5%ZHXpy-h-kfIx$1zcta(k$qOJ`8}L<# zB`T;<6$Q3h^L(dHlv4G9UbODn=Wt@j?AaFBn#Mzn#=ei?93m+w3V7J#aTAS z@kFFoZC(t)o{*PesyNH8m@ zl>!cn)kC>u%di9!riLXoDg$dDeF7Q_4g%In(HVftkZlqcdvIp}GDGl^FZ&ZcWq_Hh zFXoS={;7NNBtZ+AA)&*KIhv$P!ql31oFa#nn3@qnx)F84NyAZ1YvJwba?ga%U%Wcv zA4#3x-98k-qUI%8^6ZeHXi_xO)~UQ zEd4@K*b^m1JBI2hyu_-~Iz{6Incv2VfZd+X=JqSHEpgnZELrl&H$tgnB~24&zRI#^ z%UH3jSCTYcF?boUE>w=Urp<0NTNx&m zb*&t7ou9Mf*36@RF6ZBDYb!Nd)+KyDXKTwLfpD^1gT;{ZXC6hlod1=}+x*9BrKXOZO%PlmGc2OOur5j4r7C5Y>3&0hClT!W+ayJPSu7Dt$Wf z`zBb>d9wt&T(BdatSP2JOjFU+tS{Y3>5-t%S$2SIVh|k$6-g3ZzmM9)=xh(yLNjKu z9!Q1y0J;u=1X^s25=xlC9AXHnkOgxIRR`G|*PbV$XoNk-;-thJ34GU8+Z>%IcA|Gv zG2d;vb2N>QjM_le!GCy(-(Wjor>H1WcutfYYfaUFw5nz}>PO`muj-y!HgmSBYl8zl zC-osrz!=@67;8*dQF&hEy$eI($cXDeeU@mSScN=@$lWq<_%Y^KpaJWVNrfpSYlGqf zWiD85IHQ7-=7|t#RFXAYa-hjdXDkOV-FS4kXhA&y7zFC>zJeSIYRBUtL|c#gZ60wyB%qq&_d3 z_6=hsolTsodZH+}z79bm3JNvW&2W+jt7he)qRJUF|Gjv0a`7UbtC+4PBvSnlV{X0P z*>mQ~nj}uqFLIIEv#!t4o%#xm3q@vLN+mU=o=C)HxdvQXQ5{uw-4G`$z^tKdbF=*Q zF?f<3CJhY;z&r>aOVi0$@D0U9gi~k~DqqBXb;ZPR+&xQ^|4GJ)~ zM$;tFZN>oZgF#b=lu&6M^(GHq4+yG=8*c}Um$ zmZzLjZra^gZSRav*LlImW)`rOs4|EVqMdC9g}-mquZUps)I{Qxo| zK{xb`>m8C)qu3 z{QWl49dik{R8c%T+mSv!3D-u*h>MP;7m~S{SzCn}4tzqbHp&=*6w}EJFcZvi%o>bE z%fy{SdM6ZLa4?9UCVvyQV*B!&t-(Mo>T=Tv=lFt9d4XASFheuUe0h^|F z)?s}`V0wY$&tr~ZmNQHOBwim7T#Hl!rcwYO@oHWTuukhdUqElGem+2u!H%GkQ{4bo z2i7B$`hml^Ot@utRmVs=C6Sh?Vda_Z#f%2AeBkx2Na zd4v>->GZ+)aNj(8B#;=_-uV2DH$G4NnLoz2j&|;RZAD#cVG#GzI&P%>rt<1-(B!SaF@QsqqyRi`Mgre}9|AO1 zfeu#p{3fxd*6cWEWpnSK$G`v;7JbN;@JTTw2r{d z@;`@&`o%CpBmtXkMHrnD%tfZK#?~~;(lq;|){p(@(ZK;*Os&#z=0Mq^3YaZV2&~&E zYgRZS+3c#}IV)LPik!|1;V`NbOjGEetp%l9sqf4NxzHeyd({M4Z9>HczG-0wH?RpU zo|9#zV`QX5mE>Ifh@7Q9@)9%jo<`?U7U)xrGEguBGzQQMrXE_>fZqqlUW@ffG~k9t z*|ZFpy{6{p0e-5MI^31XbUitYRNn8(xCM7s@5`xDL{JfiOp@V_~*&RC*DBL;+z^-Iz9BA_pfn zOymd9`5P_Yn&|DBIKkEgRpKX4njCn1LC?gzo&~nOkdE7;;S3${T|M(AdKS#rEC?Cl zzV5l>-9@;5C=Yo9`1CG}Pz_7-a2OJx2naGZup!{53Y5?mWC0`vzD6t;;E)lF7NP739l0px1nIO?QB%BO1SOt`TsRY(d!?8h+6iRT0c=K*`9h>b6Nm(AA}s~EwR#0U*$VZF z;#g6;W<`c9y5^b{D^_HFh@VX6vjg}Lck$mIxpu>bYY((1+c#`ze+0ic-BF7@g2x`U zo~VviV5*R$OgOL|>sUY-klFMHSC2rg$R4O!QX$f;r%B6C3B>?sn8F{14Na0X#Qh>7 zNfV_Pj$R=%e*tae-EgS8W`4CZE%Kt_r3Z97Lvk6PpW@H-f}bxOwG6)BoApW&^BaN|>4t<9m0{<3aaf}0de4Kfbd4|E>il$Vl23<%a*aN;J!a=_Vw!}g2 zYes5F$#cOG0l`6up&BS4D=AXvpv%Bsfgf0e&7W3M#FNTmWrQFOpk9WO59cj~2L0KROkFN_ViYZE9La?yaMi72fG;PXH%!-<2Nynff@3I{+XIxpPJNs1_u zT2s;*QSKOD4y$3=rM@~@T3C<`oyIQ%gJOx^wUv{>COM)@;h&H>YCPncg)TK5QSxcf zApjNxFClUS8m1=Al}Sz#)vgeDzAv)k^%^fJH?csxG=k-&z;~swYQ0x9+YQ@b9b53j z;V{Bfc$0)}uaZhRPbi!|-^{opk{8yAYFjpW5h}qyE4CgYj?yjbK-oCR1kRLw4k#G` zE+?s)Wbh%u<2gIJK8Dr7v4X|&g8NOhYv!YN#tJL2{jFukjUWTC8P=3YAuLfbV5SLT zLg5g)CR>SUGL3+jtSG2#8d^41l&QL`&dUQm01SvALHD-vKzF2sBAF^Hh{SLUiODGU zb-revOnAUgbcIrS=Ydu40am?>i85`>F!kud-wCc1$Oy<|*lv*gY2r{#m*yfq2)0_FpWGt3+!0x%%_10u=K`QEEqDbM9Z=5OP5|4FDI2Y!{M@))@i^&!Z}5Y zIz9z1vaBpSJO{H`Q2`l>=tArS->_^+S4TB9-x-M(Ov!X=Z5@i*N0ta)*Zj(gGtOCF zn(FWcPcsW;RdQz@gR6x#B~S?$7NFl_;n1%nAhtm(t-r!u)o3J65x8y#JtWJKN4Rm<6~A-nObPB5KDjLZAc zLfW&tyDTrQsq0?%(uJ5A3vsa_x64j?+LrE<04(|Xi(XLC6}Rxmt6Hoe&!PEy(kts1I| zUWi3%*#S&H42>fN=>ZAbq$AQvLbYnd1sAT?2MRvE;NK{L zOZ%==Xvxzi4Pd2;8OBhml_5>uoVTd{@B`<)czkbN9Ufdwp1k$eLGqnkTJs%lEV+JU z;W5L*lTThC)MD9J!i#DH892%yQsMLxdtAOIrHjo_f{D|PuSBz*=@BwmsWciDasn}$ zo36g?_oALoi3Sug*KG^Qa`?l=fnsqWLajD9?+&js8h6qFT67G<%(gQP|d6UuWs9CmEG?1bc$`DYq4MhEyrE}XOz6>@y3UOT2X z=!JJcNpbt~`M$y&Cl)Kkb$4kZDe7Rd56|U!B`a#Sr3T4BsaUHO$#T}{ zyVp&=o~QS_@nSpIKmlLIE%%7LD6I1dx`4>M=M z#tovPZo1ik`#`;HrI?j9ZON8upRLQRI`_&xxd@)Q;v*9SAw%WVkq7JItU~&lB5LAL zhBHNljaT^zO*W)%15OQ%wL?jMv7uUWpDlz{lMUM$Oi#-`+fBxyJGeNJd}vV?=|g07 zvw}rDm#vZUQ>2sbHM*1y8>AENHanG5$f@5{r$$th{b; zhbd+$tdbqfH1kR3^UPPEk-)N);P$ImngFGm)yR>vqtjxQ2AiPJToR;OT!5!>v(zujYZuQBU;V%l{Dk zraV2UQ;L4la9-h0xE(S^ATVFz@T?=(hMzrZa^GZA2r12oa3%I?wlLzU1QGD{_4E; zkztRps*&(|;?ZHqpa2JZ3X0Y9fz1#D%8-Tsy^XerQ0xoVBD}enZ~*8T67icA$%ls9 z^y?J~!Bse^NX@!L-c{8<>iQppZ*}96pFg~0<1@{VZCvubrAwD?2~J2>)bG~CyJh+A z!-+Xt=hiN`pfufpL>g;8)n3Zx0uOxNFo*KR7oV?i^z($2vk%! z3CsC{%o!=iOiX?8vv%hkz7mZ&@-bFAZHiVjXR$IT>Vnbbc?m98O2;QGr=qEHvKS&V z3jjRdAC11^OckB14-Ylz$rmPlUg!s6$hZ5B5Nni_Hu>|#wXUG08>N_{7+xDd590dK ziX}S}nGslv7x>w*v{>~MdM@D*1CCQcQk;+^m1E^_#CI1dy6VuN{1Cz31y$&EfIC_-xWplgOBWU@#LtTdK^? zmJP}^>M&tE>?q&*agH5n65fevp`;oK**b#NWtm3#V5$3xnt}ojo0n*!*xjXQ2z8Ma zcn;W<;faE*iiQ}nL#D=Y7+O!$NG#pv5^~+(9cPT3S>R)}#zaDeXIX>;UyZ@dZ2@_7 zc_GWG8p7a>j3U>n_*MnL$54JrmUm^@?yQAWgxyHkvk{*+)Nh(B2`BoeI?uTY!vUN6 zu)j;k8fk|-o&;LFk~xLB5i6x!fb|O9w?h9sB*0L8=(rG9;KyDq0+NMp+eBamRXLiG zJg!ODxI~AnUWJL*{2+enAifRRbm3EE66N#3FLY(Zy5R~4pW1~!o`6i1a6k!0=g z@aD9ws^Rw0-$|04NZ7LItLpWFV-25@g5NLPK1WsU^ycBPEsVC4qAuI1Q-&=ECm#v~ z=ruPyf5Q#WpL+OCUz8s(%(!X9tbwpH&T->Pc)*St@U9w0)IKVY+`u{PP@iIJR*!xl zWGU65p?=_dQZkcHT@-CyG)x=&L$IHwZ-{lcsNQo37R+qA_w~cTEgEnGSyMf~Uok^c zDxFD6h_IRDxJe=06^VIzRQF<$uCVYwvw&b7jzgkxgqdKbRx{^9ftMVHQ}%=HRiI4RD=i>efcOHYG0NrvEDcm@BJiX#put*|rFQYGH1mNQ7a9W^(RmoCJg5LsFCslA4qCLf5(`HetA?Wk6mH zvh086x&=e4a-61Sx$`L;0sUgMkKBPTon!BlD3ZMIt7&e~jbfH`**Ysh=P&lVj@FO*{duBZHAIo8k zYJf>3-zhE2AmV%cZ;iXUdy}Hzh5GV$Zbe-z`~uIAt=Y_DAah`n!2U;&6vfcT*hO&NE6t{!&3L&v$+NDTf67OeTar1pZP`$1EH8z56|OL) zvZT*q&5idCC2Bc8mvJs2Q>V;ddRmB2a`uYJp=HG(pgyM3cEUnD9&8FY*R$k1XipWd zZ4xO1hw}z_5}rvP8z>#7SjkiA+G;15OPY{xiMkGSCLWWmu*_NK77FKJuZ%TK=K;*HB= zS!_t7v}hc91KRSgz#rKL{<@IHpa3_akQ0QqM0Yj>N+$xpu%`r;&OkXZXrLFl9(F83(~ASIysq-Fr^|l(Y2wjZaz8?)`CfZ#Gpgfy(I;KcDM-8}K z@I3_R0B+TRoThdVQ8PnfN9JTF9JXKywrg5$U~8%qh7w195J?%n`2*`&+f|(Sb2cQZ ztjYRhuI`jLXp_g{xgZS~kW4%oyc2Wn*QU-o8POT>Fp&}wii~>`z$R4-po67g_VxgQoOBo zo+G=~nX1e?dD#`$0b@POa+ERAm2)$%G~n#WD`yDe%l%T8k8`@()vn41#E85?*X<9f z29d8dV?v&D)Jjs~I6R7jJP zi(*CWV(xImnRDcf7LpDWb?*`)u_8<^MBx$690wN4`v_CaYFRrSj@cm^Z5@nb$s+nAi@34&g6rcuN-2Hz_PHX;vf=LUbMGUc}r#fw@=V zr$_`o3iuPDI|1Gpkg(Ior{SOt1entl^)cfb%|Qsy=js_9F`7^h`(&Y+JR>v00r)=W ziqQG$Wtmv$SZr_R`4e?AZ}pOD|EX0Y9nFu4i$8qs5?)#RweQ_e%yUoQw)uu@j$Oo4 zSdLo>Acl`3 zxDnAuByIs4O~5;03{>E6C2$nfeDW$_bQ=vn2l_xZ*rT_{P0p+x@2udRC-yk;o#OSe zw%B8NpZFGHHf`6*gh(-h3yvU$l9|fQ*{mgubYPE;@b6`*Q;^vkj?xBZ_TIJ4TZnBy zqV}=7?yAN^z%KyL=OiO)#=@$CHCd2JDt?!7i^Ka6Na*_;==Bsp zH#2uJk1)HLA2L5@e#^Yg{0%I^Al+n$EP(8A^8>jmR025IFit_ruSWXBez!kA`>)(T zLiz`41O2r={PX(zB>WEa_fdqf?$?|Tj4K~tJybjv@;)>K(WRTXsjC?=DUsR;_H+bd z6G?WAn@u(g&@o!V0L~boj`e{m_8d~hE#g9Cc#T>`geq1K*a$Qd*K5{LEiKRl?2Hg8 zS~<9=@8M|Oi3_yepbRQ~uSk%K8;XD_F?=68AX|69ygTy23c?>b_I*^sEFbD9G)be- zG4%0zy?&yF_$UOw$k6cs{Uh8F%ME@+xmy+_>PwY*xy?5rdwj&z@=CP8>IQ&D*$E{= zvKoVT#~M}{~vP zM6k1l4QGOe=wKe05U(P@TA)Z0e1ajwO#*u4LcS(jGD7pY6fg6o2v8pfaRZX17^WhN zLKgTDQi@O#6kJ9;n(xR;0vT5VHzJoEZfWp)1&tWMXZ0{`WVesF7)X-C{6R$ID8DMkZ>9}UqLyY1SC-iTqV@+Q7O|< z4)}!X*l`XzlmgO)MhMPwm@L8IvHOqKMS>MnhzNDqj=5^11d9ZW9vD3-uonWL?m8&~9V1ts(@w%BW`x@ws3h^wz8QkoWlae@Ub z8f?yuOia3wniFm>7PrObs%k{5l%a|>$uZy8RD|J+A=0|Zz0;0bQM!jIoQ@_Fo}0Mc z*U2kl6nZA#;*$xMhcmPela8{c>%g)mG>2w_1+fE?z_zyuVkakNxrC#)VNV4o37TXJ z`c`bA&(ndPh+s*xRIlJL02Fa&{f z7Vc~%=bLCpClBeahIP_ob_iFcb5 z6aD@32L>!FU(l0n^Wi@|!iQ;$Ns{RT7g)=j&wPxz2i}oyQLPwC7hND##H~_>2sa6W zaX`RGe9&Pjz)=acOoToOFGpjT`pueHQ&gJ(;nR3MO4jtE-^3oppmeaAH`0ft)4JGf zWw*+Wkzp3E4|sniSaGdNf}#=lR&d&^fC;tQ`lPPfhGK7{(LgR@{z*1WJelWy{yxz^ zp2xdEY~ZDEmS9twK)mRxFi#{q91oi|-uDvXS+z9IIRGxPZ3WnXh6q%LyEnLxi(pd^ zRnEoMZDPoYAt+c4?&?A@8!2+EO`GzJVpxii6I3(7YT*RC^C-!ES5i2g7vn4!HDon` z*Y)YJ`o(en6l|A8z;~JFQyDhJap%%=h#iu-=xGplnW8#cEEdm=BvW`75}Pd=Urj^} z7q6I#hkV=^XMe5fvc|KDrC5$sm!3UZp#B9`wJ0fhQE~K87zonjgb=ag3gT0N|l}i`Qw>bl%9$}k$rahExD=W%! zI2~kZ!Q_G^lIDj>UKH^^88;(pGBiPfwMV)u$4Uiw1WdeY1{cQD!>`+JRpSlTURo zj1RUh^6!gB=NEHe$~tdzP9&aSi~Mk^)XAwL+KX-aY`MoK3JRz)HiBwxolYSh&LH5= z#XEK4jzl>t*d#m?R^)@PIQgd<-oJusXfPm*KacN?B}>2<@xfXXIH!k8ioOs+3>Vke zl`Olez-J?wcor{j(IrQY3tBjY2v>?>z5svn6NogK100Qx1dTMIXe0Us9U}-zZ*>r^ zg8^*DMotZW%U}?E=ol!O3*se8u(etN?*k3?3<^%yh1<3+zAQC)R5~Tjyh=|=G=B2n z${ixE59oD-S2m!a4q6oA)5D`V+v& zDu`7dWadNPro3U6C7}JYm>_*$6}1mR%42+B8(MIoQje+R0tTy;g8;oFQFUd+Bhj4) zEv|u=Z&U$3P?sV21vO#;Fd{%5qtr~JwicHF8GtKPfT}giK#sjLPgt=5n;FFe4d5#&v9fR+-w`R zV`5uFx<4Y?fKCNY>4C>Y3r%*1TWk0R#bJBY%30W%KDwJ7-pUx5#|0Kl3$gDDYEwiSFqT$lUdsix$B+45_ECu(#N zV`e2E?7)=>jedn=qglrqmmr`ezt2YwEO+Y17V47U1YU!;Wk?j?sWfp8@d5Oy0D!pw zM}U|IkX?cH5TU;B2%O<4hL<70gn%}WVt6Y2M1Er~TWF$PK!|Abu*IdxV(VLz=mYRF z;@??xzx6{N@@-mEoqe^*yG>8f%302$to5>^#klWsG000_U=VcS@_(@aZz&m$2sbi%Nuz;Rp1BROd}ZhAxfd)hSLcLJ`0>Vd024QE6r`1S zUTPHDayW7}mKT5g7ro$RGc4nPFMJhz!2pM2f^aknhth!WniHuZ9-LaqLA<(07M@-& z|E658m%H}V0D;|%U}CcNjG5J?zP{3LE6te~Nc|%a!LIRf1FuTqLI1ym4EY=oF$c9* zAT2>oAR@SGOR&KxNZIrp&o5VKB(T^#k|&BET_26Dzlm%;?}1!2lKay3L@{hP2im$P zFA>GnI}4e3{Z_a)Bd?&sAft)k*hrTh>jY*eJbe~nY`UGA(<8yhs zS%;(OBqntl5ke){y$k^w8bD$WZBGLm;L0tfmFl~#JmhO|N4Jo(05tPa)*~Oaw87r) z;lasFSKnwy``g%0Tpw$1AFD%SB^_f6$2&U47mnfmI1QTH=*_2c{n5eR-oe5US^gIS zaV!Q06u-B=MK7w_=;Rwfu zl)*^S;S5$M{lbzIpm!afEU3rO-2TV;d$akE3b4uc`Z3j+oz-J1S7Da@Y3rZ74#73m6ml+{c2uI#8Jbavdk8W z4KuzjpnM6x9Q-ns68xaPgI$3>a_B+pq$Mi!pn3SEdkScpwgYPR?AaDRgAL7T{+2YK zzFtTRpF;XuX(7{<5i;jz_{?|m2L3&go6axKkLDi9&pf9s&lk1)6N?*-#q}Gbsc0@K zD^AkM#!|6#LLqVrcv9#RjcnFtKCg9<-T(PIxo_su=l<8srBQ&Y(|N+-=jq%l_`W5# zJio)w_vXupU*=UqO+b^3AU%N>TEz?%F}$idX2K)0RsFzc=H-0;=cvNZYrnxejq8ht zp~efcW#MfBAvm)*$uex6w~oo@f1J-R$>m7j%(hcbafmsyZ#9{oGiPTm*O|-h)U^A8 z#Knk0%;$HaG%D5dzLw8xFl*^L2iGC=|Gl8^59kQ=wWHr~3!Ktznc|^ufGT1*oUgkJVtl6ki`hD*QK^L&6;@)*AM^U`P4SR z|A0a+V@||cr8;5{4jLc@J7^YchjtVQTe@h|B6X++%3_e$(vW5g(7-?%FCbC2!%k0C zQ;oLvTzjRS>KHQ2ke=D|I_#2d1ahQmIs`<5%zZ-uHdq_c_hH zQ!@y+cFtwTJl3*XE9G7@jqJ?Kj@NW|WE#`6Q={pr<>jdf1$GPq9xK+5Z=2ZNO4p}m zr|Ox~_;@JGb3q)N|+dkM7!BPsYPjZrROdz&ScjVfU?0vf7DJ>zPO%NG5aDxo&2D^WiPt zl(GxUoufBh>5oN6s=~)!_u^m5hX-&_p~A`TK{X=VImmeH9C{x=mg~WNjV=o6FgUTS zKpqg~+lO{Oer~b*V72_{xpU_Z-mMn!{U z;8x?N4lTvZ!^AYA0B87_>+#wp=86pYTG+GL4gVKx6-SC+@bf`n&`_5;on4XR7tfrz zcs#PJ(^)xo?XgRRzIx`KPPOy(uk&!v^Utq+ohy1p3>bjL=(9I)`6R~YtfZy1hH|IY zz|YCxPOiUd4TRL8UVYWlu2V%2E2Db0YN#X5PA&UjRusB~-=R(#Kl-CaT{oW~VQd&J z)4Km-AA3^QvW9_P=r8DUNH6<-(%cHOnFQ)LNg8f&NB;J3ZN@Ug(~W~=f3weD9(nqj zh+DYkDM$cWbnJc)vA1W*z(wLb zonYQSuYOH>giyhlVHCIJ$EP#4`uLnJen}z#dqBeRli*x^YO?x0hDUpTfk(ze#v}jG z2l4ekf?vZ2+l&$~vss}%xa{*QISPntB0`8$-S@|mKhzqjG#|^PGdx)G(B?q`EXE|O zXVy1IPz9~1--7nW9VS&!Y+twxtin!`e_tSXI`E+!%p0qCEk45hMCP854DOJWfy`TE zOkf@Wh_efASt{g2`5wYQ(KdqjA?HChEQKUI$P0N%$-dTZ5z7TQ0kW6=x0~RF@?${0 z-S}V{L!M$%JOtC}Sd^qc#c*&q|C@ z&!6U0$-e*yx$Z_nwPLB=bZ39+L>{I(Fe2MjQ7cIeZM2=lkLRNSP(i~{X%Uty1IX*H zViDM;Xup?Gt4*ly`+=_UV1|uOc0Q&(oVYigJ%0=)v7fxl^WMXmC zyFRILK6D)@%?64bbO%49%_V{mWMh%hUoGsYg}2PF{Rs*f8uI0Cs`*#hsu66)bDhdR zgdzkoni;a9>XU90svXtW;Ska+QSd6wELgfXuCyGp36Yd%l2;^m5w{IJgnWjRvg4t8 zM5p+Qay3!j=3hLqH>wk};iV`+$F(qGLB(j2WM+M@*Tj-ggP@W2jMPVyaU2z(b0-WI zZaDE!D4yiRY9^&{;ObPd1+4$=6oNIbNg!amn3^_OPJIkPBb69+sZ;}AH|$!=hFZ)y z9W&zf64;SKi2i4|Jk{yxYGwN4Dv^zIza*?GOnRd7)J{3 z{De*-S=CG~ziVkszsL<6Fg?NcgW9i9NS%pmW{Uw2g)4TXkgLSJJ{Oj75N^JA9Pyf< z1Kz=h>{uP(KT$vcjmkM>L)fm?%K`AU%s`dwze=mOmeAUZR@a_Zo@0c9N=JdI{K-Zx z7L3P@U@@OA{{MOiW=X{0+FAQlIgF%=marUeQYE+;8q1}2LNJSOX^*Rq`dljLWESqjoD59d{Na2n@2}6J8i(@|59MRbDO0)3re<5{*>>1Vl;c%nYFu`SJ=x$3TSNdo z{Qe_oOI-K?%gcitiDO61in53Z^$cI&Xkgb~5du+JO@zd%tV3Pc`YVhmuDrH>j2oJd z&wS#chd%MptCfR}Qgbx##GS>l{B-{NA?roSne*@>sc_vf-VtY&M7q3QQU7CKc=MaT z@MiU1KK#%pY%=5puS&UtC(p(f^V8pZr_^M>lWjcpgswkfETn@K$Elz$n@%g&rwy-t ziY>hP3oql;#PC{{$kyJ-{It;PVizr{9+?&zq$Xd%0Wm0elWJBVe1z0{9;&zVSaVQ{4vUaj6=@Uq=HH2Y`CI>85zp!OenAn=An_IIlRH=?D;W2nZnSAbcMhpJExLPit_ zUh-eDa3S7=XztYV1#VNb=;}tP*G~pUqAQv7nWB-cr zz|p}x_75u{LiATg06pU3;h6A2%HBtxzIgHJi*Kopjom}%if|$m9@cLSv;O%buY1k0 zYZgw=-*-gabMf7`-umuOem%UnXOru0YD5ZNDyF~oO4x4gx_b|uxVv+9)8TuD_{Z<~ z`s^vVP@AYjq6V5l36U2@yHI=?b@-G2#xnA5>)y0@(a8o$DX>if9QRe4pU?j*n4KHZM7qQ z>20fxk0P!=VVKv$J2FT8fDso8w?u+B`N5ehYiQ;A)i4`oQ_Rm08^;Y>ubz}|GS@fo z5hhG08cjx&BZOGM`kQ87)2x(7@1N}?8cy=;=&L4iRs!R9jb4`wHll04yYs@XT^Fv? zj}8il%W#6U^3g(Zu9;Pl+R3wHwNq!-{%~SxVqz&?NQFtKwF_!=#gjQQX2 z2HE<=K9wwlGj6g_NG5AZ`Npnap(*z!{qHV+R&7zw6E)0BY{*@WSS;s~Q)*Jm-0u#= zrRC(2E|VM)KC_fzHsyBkGZHv|qDQfQ@>H_6m_A7FhG=T>pxbc52h&Scgwf4HT90+- zJ0!si6p)1@h-UR0TN(%NJh%hR(pElRj^9V^fqW(;A7u-Nh(r@!!leKz7>n2zx=^8T zEc9FbgN>!pg@Xqd^37(x(2N6y>SAO39GHcLsmT4?_Yofx0YORXfWe8@9Vs3tcRq*! zDHd}qMe2k!rbLL87FuRzn^dFsXEmvkdNy0lW~+bqGPCjfv%6+zcfCoEMKaA;*)mDc zndB)`O=!?Xw=){%an^05R%KrH$oxQi@8VzH030~&Z2jbpi=g&WujsIS@ zJ`QpdjMcgN#VX?EiReT<>txlXZ2ZmVAA9Wlo8#HFfAFep#L^Ps8k*#V3Qt1uv8qSk z3V2BW3ykDl=ERjQfBk{z0UC-OKB8WM0oQ}Otgaif)5 z3an_aH_Bo4j<6bYZ#;Yd_?IH@Y$`SQ_NGjS0zYIxxhwyv=x*BT2H(t`>O!ta?MM!0 zg03lVYvngM@6uI1>f){ZKno~BBwohGFcDA%LPkw2x&S{LreQDP0+b@CrVl`c;NAFQhX5e7 z5|0LGt%m9g3u{lR>)xWis6#q&EW2Nhx5p93OX%eokFpD>AtX1=DntMNBkGwq$vh+X+LsBoKErID1-YBztl^gk+Ct6| zw1sJqQz$NI(~ryve%nNU151btgU1gwZW-*{yi)tU%y^@a19Wb5yL-B7skY_l%IZD2 zK=Es-LlfK1zIN<;4^DMz%^jSWbZv?CSgZTSt3E!{)PH&ObnVghxcyM%ZRb`6;9|cn z|BiY=eR|}3;00g;C3u4!ziz-HlB#oyNbXJ0=$i%|?Fw5lTW32GV^~|It8s}!@E%}m8*OT~}@ZM{% zOnyb95F{c)AY6}-1*4o&fgtcBc(erPIC*?liVcNQ-5 ztZNxZPd2GI1n#10BM4htB*(z^kh|50w@JlQ$3fB#^%JOEi1Q%NWEA3rhQiK)=Voh# zl4T)^=tjcs%!&$DN!Z8jtX6g{DZoL8>%gB1N`%I;fdmIDjS4yO*g$`054M~F7OB_@{ zNtoZ@1Z*xOyUP;z1^yvPMKqrmQ4{$rTO)}BnTz8Dh9J&1GA3Po_#~n$3bVm;eCI%5 z`*bdotcH>aE2$C1wCXviW~ID}xS6D#18=~7qAOqq&hya?`~7wGznEJ+@>nAZOW|MU z0j8tjSB6Pk(@L6>TZ8q=6iXkK&0DXVa9dkXEzIn>VCy$N`RDUbq-w=cTwE8Xo{`>-w_ z9uKq{)nnC*doo9^zQdTzEw=x*xmZiW&Yt)}VJh2yPkyykj%EEAQtstH$Cs6wC@QuF zlzCu^W%^!{s&K8WgeJwTKB@XRDcnQ;Oe8mMpR9FzIutCXjz&_c$mVp+l>k^hE3f94 zjVD1>J!I8_Fc96*e(}jv^4DD`S`UGwGhE7=!NTV_=*QaR8^1|8cVwsz15)y0m; zOd@_vyLHjf2+`b#S{xhOd}NLawbE#IViWVHp|#IeTg*~}R+JKMSSf#R+b^i*%~vlq z7x(Sj(n*w>Q`0j^T}FPU+1c4Jo$s0{qx;CKPB+I3gE%_&DGi#wU+hR5F3_ zLsSk+9KxCPd5;)G9psYnD!HE*V2Df2*+`QFDMe;RyrBZOeeiD8{m=vNRnOmga&66D z@BgYVtH-2+0(Y7}sM<3C6BKXjat=J4W5zLG!3*_#;LJ7K+68>yFeT4MIUO8Jmov_M zIGc#onVvKt&f59isKB~pi^vQ@!x!C@dT0tL=zwi7FR12i%D?$4T5pw}qpYl$Mx zO!~1Y$SI*+OqEw%j0KKbNOz=|F6D!Fts@G4|J@;NSx zrrq1rv@D3y-{<^!>H}qFyE~y#|JQ7=SPW)sc06wT#}?sy{5^dkCQwD$>vvBg67@@y zWwhc)&G^oxL}V3tCe$^oq}1W}4IzN8=kIXM`!b9%5aNiygx?4oKq%C+g|d?kyy5iX z^_$3il?$2J;*pBxTp#x09&AnTbn)n7Z0*mpF*`~d$XF;5`cD@B(s$taSXSY61(sxE zG0*#lRu^fVZD+=JPq-ns(~gY=-s)(Xj8~%)C-qRE9lb5)Q8sCVBPDK?52w>Sn8oA4 zL@4gbHsqRWBRTMf|B7#^`5cr^*GSi7Vj{#41&f6iQ&tb53coPGx3*p;uYPy!D{A@F zxpMCC4ej||+UxW7Cj!ZGB^2I!?`Zh-H?G`TF8yh2e!A}@Gq*+4(bNt7#};cd<;fH( z3w!6!ziFvIKg3hNs{RD5!zLb}beL&|IYyHDVj=(FuZIM3HpwJ&or+xOMW#@~KnH`=*yF=Lgq3^2jxtZ}`W2Ve0z#&FpO9?eE`y z*WHzUr6^QNdx%wO9)Afn^r;UO!y8hb? zIWZ#8kclQvT+<7f_)s+5)Qfu4Ut{fG_{0DA4F5c%|LJx4QYn8OGO^WP<+tkp-Xppd z2wQ-)=v&AOv^L(*f3>O`E4sd73?Dg{V*CED_NaPXa{Qy*;l5GhjxVEX?@On%vp&cy zGcJ`RT+j6jP0uj{8h|(F14@$H_uqs@io0I}4y-8cQR58vv}XKIJD(vhamL|)A=ggj zBR89^97s+n*D{T`L5Bq1IqS<$~b7&FzRlp zgFdsZ!c>3CD^F~mDC6~#Tfn!j)T8uCO*sgSM{@LfsBLi@5QYI%W&Cbv97}CAnPs9^ zzd)+*X9Ga8gkgjoqzTWSOmxql=vV!KGu|70?cAQxf2?FyOMamEzxVZCTowDO*7*@h zI6QkqDYrRnaj?#4@^3$DXlQUkfT;&V7zjHxR1_QD9HWAJ0~3h@gxRIW@yeI#=hOAn zruN!@p4~B+h@b9nzb*pP(@7$DsAuDbxjNt67AG7rU*S>j^ zlL<}VIUP!Cq5ap7@uIk|6wD|lAeoQ8fkx3U!)1bjCYjrQ5BYPCo3LdG>%jL3@D4a7 z68<$zQGyXxk(>hy56@3OPh_v%U*ED2PxYFGO*_Z;mTF#7B{O@~SkR>(Mr{80UB{za z8?}|A7xG%Ej{iSVYW-HJxBsYeE8*zAY`du@8d=9mC;LgyNQFlyCdZ>wYJX&3vEA8D zhR(J#i9%^i<65E5_&oZI&$IUioEn+Mtv1ciq;gt@w-0TUHEYmL3mWXtaLq}jCf*pz zmZxUQGdmYcrNOT0sU5xihmSn8S~!2cu&TXDr6*6W{hyPQXL?5lt+bQr-}2tuHf6Jm z7Z03%^C$P`uRT}T|BILW@t5QK+kAfr#465N<7{!hFk1`6z9nt&+r=LwurNA)6vwNy<1*X1Wa|xdMYEXSEk- z;`k=p6yWyfZd-hOQy_9n=`UUk{oLoS9l5NBUi^zqn;u`}l6>^zAGg;2{`A_npLK3t z`}Wsd=ULVIILl;Qr?9Voi+vTX*m2*|3#7>qCBfd1C(Nyw_GJx}*lbdzhO^irJEPh> zSHGXq^Mgit5H(UpbWm;#@_NcMYFp3Va&~LYSbOip#J8qz9&g=w*GE3`FkHe)KAQ!l z-IQ&eSY2u~mR3(pZ+^-{2Rm0!+|Jk%uMB-%t{iu572PLMp%UI)-{(HQ0=*2xv9NMl zDOF=s)#m*9i8%`Htszs@@M)4i>iJw^?R_-qNT}Nrxu)s7YU|clK@n27n`{5FfB*gy z{RdUz%U}NTJu45s^+xr;4_3{sJN=LpPGcT!+T`t zv*kpeI4;>n*ujl9)g(;NGrHF@r8ltnjl$L8XGTBy#LDqg*eO0ejW)AZ26Tzhc`JrEl=sP4~C1go;-(oL{IBJVs+tVOrpAn7BG(D(y(>WEZ`d&X@Fk@I zyRx>$w`H3X;6))^*-E>{H{esfPe!yMSRFF9HRVF8}#Y9(Xi&6u>~JL z0tSKbf4o07Q}R%zq2-8~EM{V+=Iq$tJl-GeP^Dsf2@pvk zbh!UR8-QRI0C0dNgW-5^)0u8N*H6NDU=D~oDNRk3r}e!%rcZBAO^+6D0XA}Un+h83 zXg&@@mD0pRV~H}2Y65|6j1723UsRvx_zlMF9xNn49f7+Pj&h~N#q^_V5OwA*zhHEk zmMU$|2=E>Uon$?NZN`z$fW{AB))Z}#E6veN$_?ZSy$|=sVy!bvwNgm)@|zDAd$mTF zUbo4+^ra&=?pAiLmNspgxaZm(p>)PMvAMp~ zHY4acw6o#C;*-0SI=)1+?a>?e=f@{qN}%mzs+Nd4qNFb-& zQp}80GUax66o#mkOf@%UL)q$$Te2k;v-4#}xHs?Na+4iUvRDnQqTe9WJxH}o`b{Xuq; zUK_xu4O|XxQ8`>rgbe|Um%!0ZINNgFkHsA3D8_38F&MU6* zpzr%i?^ZtzBPAPg1xAI3qpNt(rl%cXqGcDV3Db@jau&6WB-XJD0mO0yJO#%OM?Ke6 z(z=9ymKL`X$znQFNG9xNf#dB5s0mDM4;5v{qyT+Lm}C8x91sLcmHy5Qic^hL{`xLm-k=$b8e#+ooZcpTqe*?#NG$+{qok4p(ziGr;jv z1U=&!=YkwJgQ6ot+8lJS*fRm2IOkK*D13$zOA$0yK!^--RsaEfrW>2_Qe8R}p_z2q z-hvSeI66&{Q;D&9c_NWY2J=uU+1XgOsGJDLj36CIEf$|%O##ir0AQl*aC0nAJBz~X zc-RJ3!eE4=dCfop6VNJ|9);R9NWd@(LE~`3)LO!fF%a0MwV4@p(D6e^JAnWb5_%S> zk*>lqm@}r9-Ji^lMrkEqNbb)HS`0`AYsscB0-`PXG^L`Jn`rF2Xe?HZjq>~q-g5x=J3Dq=f$Hb}pE)_?&02fvKY zHc;LbzlaH1tt)>S?H<rlcnjnJGV7x zu3(jSu9%^%bK%5vDeh(TP$ncRl&9m7-qx@oE9_b^!drW8V!E76X9B_Redjyh`H%j; z&wcK5O1<@l8{T@ucOJiDtpuBKT-RCuBDNDUx9{HAPB=MTPNg$28R^&MrBePkEr;Zr zDwjttT~Z^L-ul1;|NX%S)zQ1YbNAifUbg0IoYo+nzLi6{s1UmyKE*#Gl9JIz&nVC3S-SMYzC!f_;~q{xA?X zV45<{pp%K;(q`(G|2{S*#*DeF4e;8=q47&3C0h=e!JphQ>b?nMcmS5ki_zib6-(&N zGqIQPb|j9&!7*F(k@wG%xP*Pqif=FFtog5o@BPqoA2DKZ$;k1)19Vyb^KI;i_>z`i zP5>#k|Mg%Dp9N(qG^yi<^NQIr<~UWyt~x0HxmLbX&qt%x)M%w2v7E#x-8=E(O_k2= zZ3CF+yg2@+F-@BTH=1Aj914PHoHKZ0lV4?_r|B|H?aBWbmxFR*xhT z)9hu0qF?zZ^<*C0*MglK)MDlI+`=eQ+3ab(+M-O9<^#fB9NUF}{Hsfz7ez4h9l2U* zN56qJ%V@#;@3UV{m9!|syGrX>UdWwL^%uYV*>9C+3b*ac<>r=WPL|?P|6i%TF-_)^CVU4Lv?3k*NMyn!q;lgD6zjxT)%<5~YG0QJ;C$$o=>c8C1C?G+O`T$*V@ID`B2gqWX_e zYp}{a+yoEz*+U$A0BSZEiYiO`Y7hX0XnV6N$!`T!U7?Zz7qn${k`0#Ui!HP2Hl%gw z4;)kjGEkb@Dfw@8f5WWX-`m)Fr~D|DJIRKL8DZxs??}bEzMZGeyfVl{>VUIe4@Md{jJw- z{)4T%wmi1HXX})=i~jRbG<$c>?pobBRxT*5Uf4FeopGw6QTc*;j(Ic>4~w%a_M>gC zd*8tf;9?^-R$OXse)WOZ9zOD#RWFZ-yK!H9Vbi8wZ&Q*k zNb$6bFj`@LKbHZ>4JQoy;1P9+Z*4F^9K}SXV!PDJp|RkL({tw?AYp2pI++5(_J4+A<~W zB1;+_4uFGd(Hn->Vp07C5^fNFq*Eku1aRdfv}96}!gUEv1EOT>qmLN!-DRz0CtdWh z>`Eh-t5xt-jA;J3(&%OmJ&+B02}-KOJG5d|Iv|B3QS`wAkr;t#gmxcONLuP&aw>Hw zUbUd^pxIDKmD-6Q<;rXSLS_?|d1v9FIW%`&!?26p!;|g(Geu!L#7ch^oGoR~cwu_9 zzymizwQ?;SNSi8N@1#d_A}|)sMG|x&rV4?iY64|K(=fT?LUybb^P;r;C4e6*bq`N8 z_jORMiKhbXTkaZ9BK5rX`B==MFu{-4f54}P=C)zIjDAa$rn#5!!J`_5*F-Dp0m^+^ z$o{^oLR;S{Jc;`;rsZXHQ--lcE*uJ+hvuF<10$Szcwzl#WinFp%oje3$Vk zNp?9Qo}am8gM$uZs!xw@oSHVKih!>XG5qRf$bG!eC{xp1CflahQjks*xWe+k!lOJp z91BMCHK}DF_QK3)&UlSd3sTPZqy8B=qH>snq!AA2K?&*dx>oW+X*%+1lvui+ZpV#4 zgnT?q6Foy27(xSPjKERP%^C1ag5j9w65_RmIYRXUBpm6b3sxh&QfIy7`N&KnG1mTD zcG7Wz^j<{{oX|yf4~1}fW+cO-sd9x3qGmBztw16?Fv!bOxuOjjUw=l+26Vs!G`eOu zQH(&jO_QXw>qLqySBYr3ijxnC$F-fXvX;`&f1tP1!@eR5v>*COe6%CZNf;@N7@TIS*sa)Snx~= z(x$sh%4<-PAZp2Ep$IwErJ(t--!|f+KLufl-4$XJ?Y(0lL$}&E7U(v>R|=X>T7lDY z9@aTLq*C)F+NEiNmEJjhCJYA&h52aUrY-wSGw*|C#E_Qp_4_yrqE;dbeK|Y)u%4nA zz_o}K&7UQrmog;RPM8P6`;D{>Ai#9+wzjUhM%Ed%WXzMB zp3f~&+`*B+$jM(%)DQ`uIUi#2ux!ZT4H-7R8sh*1Pr*aF2)?x7TT~`~%%7AeUl}GA z4%VKYq>^y56i$c7jNlB@pB9gV11kHB5|!afSvld%0}KycT}`DCGNvyJ0Dt?MOP4Nf z8Bboi`s!1sA`|go0`sqK91Vq>;KU_6c&;lbf^h;N1g%hu7!xkXjVZeP7Z|K($+UOD zrS}R~5;vJpLF_trcAb3{_}t9EALc$4wa^Un{l*U~^#`IJDsP$40X+~0sBXB!{*=c1 z%NR7+bAI+n^4elC*s=)iXVm-qn`m|xAN0a@BI7uF?t=56G={AfDpmv9E_lwK%^-Zy9%9>K)8}GS;k*?mhL^e+PC%W{#-VrmR3idMCU@*gZ1e4 zR%+A1daV+4M%AOmyOwLo`CUcI8?>u;B$H+6V^Ri>LwGHe} zV(1uowsSI)m{708{S&@f?9OwBTjcP;St7!{t#@Rug?Gp@F=<#&^f|DVvPLh}!N&Ea zS;4YY40h)TL|9E-pP$N+Zd*f^t^L`F%qT1pgu?0G1B{oQO)+YybB*gUCz3#%Z1jy5 z`YT5B*m$}L9o3LElj-nqMQU0@ntCQTl^qV zB=HHL!vzV3(;+*R+4qArgFjf2CiGYM$_c4DKt5E)8CD#In(q%->$3vJKhsywpW0^X z7j`$!o^71kX6V=L?)=KUesoKF*OV4Gx@GCCdgj#f$vrnaMmS`g+Ios-ruUair**Bq z(%y1P4?rCmYT`cc$DS5fBE|PgH>i=3_3UYKy$qn=B&}6ZqNF%1uHdC)y0nq^ee-?q z`{sj>J@**@*S>VBdFnm0v_p>cGUhI`xVyaTt^t&i30diVmq*S$E-Sv!Jk>mY?M*k` z5u_LL8_T;^xF94JcEA_Hwhl~SuFclNG#kmSvuFZZ&eLZc#e};3{G$ZMdKVwl;=V!(Qj$k6T z(s=a%LE>u*&;sd0uA`4${!ndJoJa)abu3keJY-*8g(b1d8Fwt6Z)5TFh#jWrB#AIH z-Z@ya+uCwP%zC?RuKld!ztlO5bXpI*SzPnDn!;E_!uB`O<)i&2#d@0S24Zh}S@?RN zd`3RcbrbuUrH17fiB-pmop$4UU@Hhbg)Ai*J&7)?HWNx)2D(45bjyU3+%K&m*+b%& z0EJ%MD%5$&Uy$sdceP4M1;=9($VX+mm3FD!m^nDvi&ianS1kGVuo2pPdn7qMQ7)$= zUgUe_e7m$~d%sp2i)q=}=YJyUCX%m5|89A@?QNNB(ca!#m}qA=&6KeL^a8s4eeDVLZeqf&ug=|xsIH`BGF&ENDZ%M` z6=F`gS!we_94OHfN6$^p4K5awBWm!ULheBaD=?s06>&9npgU%!&Rgm}mC)3KucK-Y zMb6$cfxqDz;&5)>oD5s>FH*mJFLEDG(U#`*+#^ww+Jhf^Kh*2+djf`IEiESF4;o4L z%M;^uAo^^eNyMS6SHBkbgfDnqKu!8&Yu!nIH>or2Q;&cTad61PR`oh=m`)+B3a(~s z)S(!lOo!A8jxZNSeWlAcj=Tl*j~Vgh*(^Co=~cwM#zFDO{{i?s7(ME@con=Yr$Wq< zG2g;15%+{#CDsUhdJecQ2}=X{SV8uv1Ji))g=WSNEKuRoEwmX#7*&7rG&-&NjKMkN zeMVK9em;KzRG(N|qG~4oUc$Qe5*@v@KzAoX5gd`xAOhuVV6Y6T$XB)^s~WLlCYllh z)uVf*`pQ=n+*zhxDt+IkgoKaiyiR8d57LmU=Nz*-KAqxJ!E*}1d!2Wh4adud7h(~$ z_69y5gR905mkDiInG zkr>TajC_G&O)X$$qyIyK0|_bEV?&+g?y!=3Daww=ow>Q%Oj4@6sf#8twdB#oyEm8D zyyU)Vc8^4j3Bt&Lviz!= z+W*k%);n7ZCv)!T;K!AH$9(OE+vls-y5R#4ug*_L_H=t*?Zj|w_`bIVyQJ>l>sYak zSXF3_ZQ-5)IlaPvqCFja9kFACgK(fE@r7(iMlR<77l|;E5#i78&#%tUug-q}i##6C zKNKs(8rikq$Tk|;H>p4}l}ciOY1(?iq}H7#AQqB@mKig5+_t)U+p2Q-==>_ze^d+X z)V2S~$A=$QtJ%iY#9N$S8UuvG(*{F9L&BC~3bHW98lPT;ses=jy=gwl`0q*I!=yj% zEe5YJ#v=^lnZN={@VZR5!wfu!!Z4NDKe-?`yb0OdXD|HS^%so5$^!L#r|XqYjv$H) z7_>4!wo40T(_<$KI40l?_i^&+Ccs*{^LFk5PGtVHZSFP-zsKN!*q#e?xqWzb)VZyfwZlf)Vw%H5>-g!F)I(tZkab z85K1RegJ@I>h{>Vw!={H&d zMlz9I($tr-_8%4l2}-+DT3)~Re(gc+=v9|qtGzZc+ES&urmBT3nvB#G8Kh?dg@Rtx z5?UdU3Zx&V)1r1R5Y=MK8mbCGl&ncICsfPP6EFPG}6|ZZLO+6@2Cw5OpNh~BUnIWcLKBlCcO@l zl0|%n5SDypG!j=Wi9bW(UTLOz6yiB($J!qRc&XegzZqr+gH@!I+4+ zafijXZR6TzTEil>d1iu)-9_F?%|dt;X2#O(JMT@o$#kCM7<|YKYwxf**9Sa^p||KC^mGCc>9Ouz$C>SO6IdcACo4PmL@lb)HGA)!0`;dGBI~8 zrn2E2xy&SdC75s|2@93uh`q~-Mwd@=bTOT&A%+HbYI_euWvi?_&c`M>N~ag$EkjSe z98g$$rk1p`cFfkdx`p>z{AFXJP-Qjl8)le_tM;fDJDsKAHD=d1JmI{JoWwqiz`zqt z>qD@S?jCt7I+!0Li;N#Lq+wZ5^?kbyX<2$vadq)b5wY9rw5PU6z~ci$&SMt9Hu1`)f54C61MeARb~v8h9GWbRJ+9`Uc3`y0cBmJq2Y;x4t4 zgv_dCI?bt|-Uer|BOx!5Y6mTwo&slEL@rT40)|XB$`sH(W=ls3T-?nqW${kX<((L` z-r+maxxrp=!?kMmpxoV9x?lrD`VjGwsm}8SPAVR007UYMKQJ9H#+{-k%y80)9!vso z$5Y98hk_a-Y#SHS03@O2n2W^7o;%awP=f61ksn$Zbxq2~LojyGWwD`5*cy4qaHt3J zCk28tOnk^aX{fruYT3oL6TJ8zwC(D>Fck+r+6V8?v>;`g5*KskFsi=&%y>yphA2Ln zAUt?kln(T<)3~9UnJ(_XWhPguy~P`?Wp1wTRufCNAi-Fk49|Vx{mIz=&G+4L--%Oa z|LnT{p_cl`LgC0Qwb9z!GKstQ2JMBWuIjzwV0>b0HJHxTX0FPp@^_=L!*7YlE0L+W znTXvU)E3`vhhP7b%3Sa~_1Q&Z|P1ZTt6cE2~}GQzztJ&@TTA{*vMQyr{U~ z>(UKgnp(B|Mn}oPtb%?>%>%p0Tk(zh1sf9P$WJ$TD;I&x|}P>a+vy7GcHFc1bJ@_hy%wyT#qB z7N}_e>1oQ5lH-~-RZQmtxlB68sUSz44(NqULY>TH16nE>CEAXECK#Awe)WRdXbq)> zkXCDIp(OL0nnyOCmnaHa=Yj* z#orD>SXS8ZaQ37emO*XjEm;lAcUMCWWJ~H}aUKJ?O5@hn_})1PmW?hGU?c{y zktQY%npua^vQs5iLUez+R``X7shX7P-zINos5W4-BSupIj4e zIQ^f>28!|oh8nsxWmCQAPvQYxfy4>E0U;=KI3?2e;D~L{VL;+k$CqC8o(>i}Nk)AduwZN1$je#!V zV(DQ-)b`n$QNeLi+O!4kIc-imvC?$f>LWBE?7P4gNrE`;F=2h-U$IAhN}vhRL-6ju zfB8QVcYleRe(6lMfNs-Bl2{mjNwRDv#i_mu2)CG^%jUrJ!9i{_xvAQMk;>I$hNSL6 zZcLM#P?m5v3vp&yJG}R+`%RjPZ~K*HE3V&m9bDMBt7Wb}5!BtcIWQZK94AW}*V5Pi zxE*$!u(LN7+f6%+82Q>rvtA=&K)i7;pS8AbrrLh(=F%@;7i93Acz-?+cPTAT1oBTG z3x@UJ`JeBKOzl2-_-*oL!M&Zy$qrM79jtY0@mN(#4Tw%hMqG~hezH1o>I|e7U`{yq zNg0mfF$(16Keyz`aGC#C3XtVBiA-!DPguc{zaOc$_NI50au1hswdS70n~VAVd(tl! z^LzK;Ethh8_9VtqIfp;5E9TW679L2I&g62rD1RQyMZ0I@w=WNGjl>C3A7G)KIj_)X-L>O{1LE-rB&>x>@f?)2bNSk zKU`jZu%JU2g_(O<{WQ^O&@IBU4=e_3edjpxZkpwE=DGJNF!eMy6S05p=PZV?3Hwzu z3fP_fW-V%HCvn*ex}8gAjQU)B662#=^q_jsfxZVf^Zyc9YJOKMWTH-!pQ6D5MijvJ zv51G>rbbBQ1jE)xKVl{G;1O0iRDJTNKS^UnqJs#f=L9)cY{uNYH8_^?pqE7?!B-G#r zGy5%bBU0QziEzl6G7oA&+oP?Vn=g#E2TCCW+rB!LO6~VEKp%em+G`)bR<(p5a+=QG zanBA?DX?k63H1-x?`6F|_ftjx%39Yx&N&%!FbV|u!{u9fl!)8Iw4PhS{s)aMXS;X4Fhy{z3! zfBA8;^tZyVd}QP)Y{|N@rUjOtjF*`h(x;dV>UYTg;8igZ;5wD%+6ZRGy+z20S1-w4 zal5>-?J*}{?FX&)OWPZY7PZ$^{CtlM;EG9}DMI{!;neTX6fAsi7cPQ6ivf0wXrd6B znMe&5W<&kCaB%P3=)KLQV}E8+qc&yHZ$;&@6?-tcJbyeD>30%^DxnuCBKQxWQRrRS zt>v*@|9woP%Eyp1e<&EFzg6&2hvad_xyRD;OniDS{FG&k@ue}tG18P5Of6816P>KY z&vYjjn;<^RQ_Z4jj+a{XRB9&FSeezGd3&dq*UU(-L>R~B33ye8HWj_ms9XLizRv$n zGdLD3!fP)EbN*MJ$nrG?4_pR(>VFw|llF*mi9_bV_OBgz4Lax}19)G|BH{#rW>V-S z6Op{4YOijJvxM~)jDw3Hg3>r4!nN_8r{NNw$`u4T;~7a1nW^OJ5k{kV#vqrKTMIsB zAX}GpyxzvMWvXJ=x9ETEa5H@94+BOd<5o@7P90*zD1Il}Zh=tKiMzoMauUKgr-(u3 zsumSXV`#|yRWu%m7|F$O3}K>h2Q}8Tt~W?ZslaAS3Y|WPhpp#gqniD#cs>l+W20{r z3WN!7d5Y_rf6soBTRWoC_=UFVvphkyXo1Gp83ERfnuVz7UxvJ-n*{@lTnIfHqMW#y zB$Kb@$8xE(7eee~J`qVIU8rxU;D@Y8-3Z(mO+H~a5|vmDGRv3~UE$9StLcyz83Uuw zM8XLdZoFZZxmo0%e8K0m=z?X(YXPf`qHzy;V%Lj;rZg&Kl;}`-sqqs(p)!AOzQMXj z|A^jS2z1RGZ*X5lw6*r?`FXWvHZY5S8+BW&rP9-LK3C?e>f_w&dG7QK87D5Pe_wm1 z<WP@kVPBk8`rsIPO)JPb~X|Ky+)o z{8?>+y6+iu_CKb=>U|2bR+4lOQMf6QxJ+tHi*oM@YAla3)uqxDEtH7lOs{2hyq511 z@Sf-zr9|s%ZobQ>2XlkE4~){-l=w5#C0#5`W(wj4bKRcrN@Q5g|01&XyvaAfnMUNe zGt^!hNc_(`><_Eyo0+6zQEQp!m>dyMG=Pbio1nR^qc&8@)3z0J;-HjXPDDr+3-iU%nv)0AxAh| zh-c*MFyTnZ+2R-ZKvca<{KGyS-$9|UjdCzN_&`S=3)lx!FfoqEOu^gqPct~a;L+^j zpmiLtKH$`K3MSL(O%W>!{R$+N(jVl;gP{uQN(jb=T%_*53B47bg&EVDxdIs>>c#8h z`8;r{Dxxq!9(Wwj2%m~@(?zWmH3^!^;YR`LOVzXYZB0$>n{1R5+;u|bvcjp58y%Ov zQiWzvd0tf#JymI}rkQ_G6_vwmO{r|bQ1N`ZW6{_NCywt)@Fmg;JZePv3bae8@}Ltm z#d@;WXkvr{A;(E(@!wpK?I3tG&YBk^Z(zFNwYQluFHTSKxLG&ZrWFIY5^`1`Zs(IE z%g~{vpo$D3{#JruIe{p!3evbow-7H)YUxlgRVCvO;SFaAW~HvG5Zi(hgMzU|Lyi{? zCksZp9@LXnQn>un=yOkLR5ESaZ&d7&t8beiQ(ONf(yw8Avd96jZU5ofj|;>!5WNH_@4!U4eg_73mb`a zETrQrATz9@NH)h)1}*K22|Je{Q5j31iEWWl)I!k=D%tT!R5Ycrw^kzV(gRVEEfB4& z1o8vAMx`17X9750Qk-@SSpqW?)@hUjs6a|~o5$uA%mbvMT5aaJD=Aaz z;raQeIovxXW&d<9u5jPd~(!9GucMV{8%H?*ggAG39kVlSk?UFpI zO@Eh;o3_)+d2L#h#WqKhDQI57=m-7fX1Wx+;ti@UQlC${mq&cug2!qre|f~;4v$nV zN$u$i#MoK*JbOh^(ZkRz8$&{1yO(03w&=nPH(j)=yLgd9{WOo`Gkrq}yBTk_JrLCm5zxRq zc+X4#4~vpoA`j7GBn}2h1gsF#Jqt&I8G!2psttNEP~*`MjYM<{5A*&^G>YFfws~u0 z?a$JcN?M&xSN79tJm|$qodl9q)110>l2Uc8(bU7pON`}$Xu5On8hZVz$!Np{g(v`j zd@CCV&4W~|$0+Q~{_5I7Z?RL!sI!?$W$ndLx?@1-Ax%qkoYRsvGSLM)e`FN@HWbw9 zE()xZv``IC2UAiHw(hSyucRIi9$9jj^=4(>?$OlYVUuSQ$4J7bYW}dBiTrudJ=E-LYfGQ#;P`t4_Ig zZs+(fJb3q}f@i8v71L22zp!Z}C)dKf|J07~j&Cl#d+XMBFD>oc!oQoC8fMgux9zB% zZHKa(GstC+B6qpu|6`5y@$~}t>`xIT3N}PezG*GgFh{^I?3>)N>%|b_G)Tx)4lusO zb%FDn9&D%&lRm;X7?NV~ebft2t$pImzJN((OhE5ctR(YJ*s5gn|j9Bto!wiTmnw$Z`Vbo+D1SI!@YzEPY_cwRUVLqR{9q;bzgF6Yfh znUtLv#nm&*rRCGx2mQi#@q=OO+_0AY$U@Pt|m9Xu>v_VIAU+ksnewO*;LpsjNz&st-pd~WB@W#+tMZRNdo zaVDR(s|R*xXBy$guKiYfdd!(asx4bqvmNtuFB4Jl!{a}#^dh5E@dK5_WYdcMb+lS` z2HlABm{l50jmeY=;dTP|$=*vC#@xars(E9#j&+pd{7y3$&?e%s1*B)e?J^Y5tt;_IL0 zMn=hB{`$yQM!q%j*KB?n7!JeSifH6H{7EZg&S)9A4TnZ)14%H+kqpL$as`}C zwEq}4{azpcT>NM}VQ|$JP5SD{kI=sw_SXhqjV>l8*sDL}aEML8_p}}r+G4vT8@|3Z z-`AC(5g3+@;g6QBRCAb165LCMu{4wwjF&VDFs4KuxUXWXAq-;y2|^ZCHcZZ+>_aRP zGXDdmmoDAzt#B;4DMi~r1Fp4~9@Bcy#Jz-NgZS;^ z!aC&OLh76MGKS$AjTk|Im)t-M#p_yVWzVJGtwQ$>hY5 z{LbBbwswkZ|LxM&Esrew$NoHVx@Zrj$zXseO1FD1MFiif~N6|E699iwKQ) z>X`a3;*dZn&PDo z5~Qq-NP5zI%1mS5iUh#O>tK_R*hzJH(Sej_c7=b=(lj7LXF@Y4v@QweK$o1Z>C-ro z@9_V^-9$X4HDPo)$E2Y7!*b99qIwKkqa$U73p0wU36^w_??Kwm|3US!wFL*S(~_ph zZDNP{h5EcaXK_oO@Q44*aP9eSyCX|@kV?e`|JnTTB_ESzz6~B)V*gPl6%U zB4LrrnCNBmxm<5jr`1dp-fBiKZTu1!Bj=hSsHI7XP-XLW@TE6dDUzy;r884gne;_m>vEVzdJ@P|o5_DU9R{Kx?eUvu~brt<#qmk3y%`HSV*NeW)% zU;L`|6*m6pRQ0fY_`CiEvVA{^>c8g2#*e>2VXgUVus`xoR+fA3$aaKHF#gOuhWKsL-kFl1PV}zwLKK2=Vlj|{7}?Z*F_h~cSW5@quDHXuTH0aEa-F>&%EhPXO?c< zoCB^ZW^40N8yjh(55Esvd?%>(W9)}~t+hZnDEd{&4vIpGwea zNsm8%Lnyp(qPu%h&inlG;bjY;BM^;-Zz}0}=_WfwMMokM;*EKvg+r}P)!UARLo2s! z1%nQK25nvv@)4>IOvWW`y;r*nul}h1v{Fy&AAR*gH-rZ<-M#6(?i)4zR(IEpn|9q- zHA6w8ba8q2t8(W8=p>|q1#}hcX!!|Ed!ihLr5P?|f~jyqKbN~__tuLggM4aw<*MnE zk0)={wKv+U_wDRVakC|NmHf6DUc}>dv>mSaXfc$cV_ueXY!_eXq>ws_Lrh>P>X3wY0YGmegu3tpy1o zgxI&%0v4OV0tVwnh|R`$1MK4mX44q#BQJO`X8;cm+cJK}GxHe0V~oLu>i4^m)sn!> z9KUy7S9MlqWMpJ!#P{9r-v9mI|80|ER0Q+*H*|08McoE5x`rgI~UJUzke`yvj zLm>*N7LZ;ko;3azqjuTSf9K$yw-O3$9aBjCRnSp4o}B0=i44n$ph8yoVv)WUGuIZG03mXrtH+&TslON}+akhQj;6Gu5il9pf;o8z9HZ{h zAQr?l(oeJ)aLr4DLQtEUtkG>V*Bop9nYLdy8m0pyiKfi};(#qM_FYm&2i|7FUNzIA z6k+82S_R#{ArJktiUX3d(!N`-u4NKcr2^tY9fex7(?z4*W-j8sc6P znS^cIm(d?y<9xlE@zO;*@>00%w~YKxOuLKV#9Y*u@;6a(ctU+%eMS8pzHO8Zz|d|A zDTV|eSQDBCLcNHF55^gPWgsJH&<*+e3_NTz^aL_5>;otzx8g5?0`dgIOz0+Tis&8v z#Q_l~k9PSUG9*Duh|F02v}b5bs9jzkFV(eq1zpKz10nr4PSIHb<}H7MCWJNLIFNU<5ko z$_<~E2orw?(15>U2xPOoHrh8z4B>e4?C@~Ik3Ad+bDSZ0S=5yy%Byf7PSrrpvrv_! z$e8af$LE}IV1NqDl|X##Cixn9n?)jOc}4U+;J}1rpd{rA0fY-cj|NMobM$@aA-jOj zNY0xyl`NTZ+}(4(SD>Dmj*Zj=@h_upcd6InXxCEuhU-yfA~4xh;$^JfcVW8rMz6%Y%+qspVFMhAm* z22CB_f@;QOjPR5<%On&9(v?)IOaes(G-%X~HbdCulM!;7Mp#az(qV$#6OK4~DUvoC z*#aCRepEJt_@?N$1!D;DQ_q0@UX~09w3c|90}ujoG8bji+Y20HdI;cS(l{!&f^=>u#c@iDo3$18R54(q1d zxU%7z4b%v_CA5H1J0d<;bSI%wKRRKwqoz01m`$o*--~+Ga+*#j@mn`SD3sodJt&QD zL3|@_9ik1Tvrc@Jw8!6M;bT$&O2+}dFO5OdbOaQbfs;v4KN;uRfwmIP%Qd9JhpS0e z+Dr#ja6;s?3T8S5DIu2dCNV;qXwPXV4x|w&z=hK-)_=`*mvTAuLJCh=2DP5B=`HK5 zp6CQ)nQ40Y7}ItcNW->ExpEtE2FOk^axg3uTm(up_~eqwiwfoB=s6=+*K(90+L*PJ zi|{oWJRdpvdQ2KllF*?aL7Y4qxwur!Cw*8I&oh-xcrnUFokY8wQ}bvbaH^@dB2{~tJ za_PJblUgkzdPsySO--#>&9IsdO&>C-T{kU*-jaN;BsnEK|6&@zh89gM;Ym2|#-mjq z(8bgzw8=fWSUfYgl||DvyH$wgw9L9QsgWo%Rm%TfT*_Q>-(X(=8k1fVD8Nx6{lv)k z$aAMh{?o|cj(mspg*>$tfox3F1)b$srfIuH!$q-#+@}w2r08W6ipn!gbMZaJ9A2;% zwlyTmJ@a^X$9`|F-IW7IxoV5-G!Y)Jox`$V`Q+{r9mn_+{m`y5N(}QM9F1(m&~}Jj zW8Wy*EygUW-Iq7Onu&dsr|=*+q)qmF*O8MVsJtCypeHT$zyj%Dz@Znu=$M_7TSY## ze#b9|zl*#LEEJLUuu{xVmLtZNra-FDBSzNtK_Rp2#yP5fdY8B-V%h$jvf*!P1cF zzz`Vd2qZZ^<1Lrq`u~^v?mK{&litg?*Y_k290J8tMrBX&GW0TI#%0B{q9=Xo;UvS+ z$|9_T;vk7^(!_CDVJ#zv1UFMeVpK%lFbjB}2-F>ooLKcmyQW@9PC9uXFxHWP5((AND&t;L&AnfJ5 zvjlJz?v_!*l4OhZ)OnVDWWhlPAcjr1a^7gby5;jEWn%Xr6TnD-MdTs{s-DQzeSPN< zeT+u7hI*ksUfH=5;~k$rbT;8|P08mYbjetZrR-Ju7V}RfS8a-7WYxn^VmqD8*+cVj zn((qOrp~NaCK2kvzD!o?AiZ!Dh_PTQe)s$r)E{t;N97Dh(^CYgaKShuqPBsvAr4NI zH8j+_LnoQKbhVsrv>Wwew-PX=($8-dCpJc#7K)_t+LaewqH1F|OwSz8b!B?Um1ba*B;S{INLfzSwdw;2KVKHJ~a3#GGr z#=W{%9sA}B?b;+6PTS7kfTyrGRhN-kPi@%Gnd@I%T7b<#X;ZQlY74EYl~;{bdDZwH z?DK_~(I(G#Q2hUA>U62RCfgwXWaPz0uB4dFA(jTdD5%BmR*+#KlQT*qj^Lt4dP3km z32xu@=Cijva`s=Ll--Nnik8q?EQ#>7sNvWr0Bs;~v0}#2Q=Xk%U!VM+a`UpKlZ%Td zmo9t33)DSl-+cD$o8M@>FQJeuF|-H8fW{IaFYr~Y7f|+!A@I;HP^KNrW1$SSw0jf| zwR6kTi91d#z2Mz1kTLT8^Iui>)2~G`n&J^NRmiRIwE!)+1X778-wcdY$dXS#+m~I) z`7HJYSG9fhYO@+lgsuiB#x3GeNZ|>&2Hh&8yXl6PM?{6q5y`}|zoF-}b-zG6$;?!S z!Yy1zBe%5J&FF22A%i0~Csi5UDa~3BNXFp)*(2vMlAKQOio4zrQ{;$4#@BySpChin z8C}1Rk9?j?*5A-W?_WlK1ZLGx3s{lMs0hD}Z}&m5$s0KG94h56fj;?y|a4FR(y*iV~lm zxb8#+GP?*7qa{|{{TXHRexXzX$?-(+1lC9>b5Ry~4hX-SM7~rRNi-n+gDUOIc!FT85$#z-1nW?0M`#LY+9CU3FJ)%aAQWJ=Oyybu${F*-G zf3Uq4?a5b`b3@c8FYY=O)n&rizMhyVQ}PE*tLP+=>J*Pa(;9I9bIH7!tafgz*>1)$JWa?3 z$VsOVGeV+x=kF^^ajFg#MMcP5ONI~ULBG>6{0UZT40Y0O(N;Rsr!82ags5aYnC{!T zDFm(UMjA9EfoCns*=FTXeLp1tB0NEGX6J-eRL+@@-o^d<8&=eO6^Ft^0b17+@r(zp z)G9kEEt|+9GGyB7EXz19N$Zz>2PN%^jKX-1?~VO)3=c*n@NX$y$P&X!s70)kq)P_{ zH!MZ0F|62z>88R_Cs0=)UqUzS0O9SJmPc+L!=hBh{s*&?V(z!S_@@D+5p!|rm*}1G zO@(I@E%`A$T}K<4*uyldvgX*3!z3`HFJn5%YLpyB?wa(WlWS4}@j1R24m++kH~c6a zO*S@LVrP0rY4h{~*bBj<1Wfo?m=?@`vy&*~N_0i%!{TS< zv((e61X*Fe-@_XI67?F%P^YeeWfm)x)5SjHrE4W&^gjVC3~g^TH~!N7%Jl~&nV z7gaZ<2TICy(^S;e#5*;-JUWM{Uh_gMG_`yQt3l^W=xL(3M-f}H+aRIJ zg$UFsGQMPSW8>N^M=B@CFQNHZcTnbH)Z+>A=8R>DqWK_bB;cFSyn)&k#)HZ_b;qEJ zzR<(bR5UM&qlrQnI>lwc*JVGmj3NY|BOeQ_(J>`r4;C`p#K6j_#ktHVPLhPysAN}Q zZs)&s{&yKWl5=ZO&m;PAyV6Ypse&0vHr_EHAu+3QuzFZBW-$gX+(27N3@KkQkL8fi zfK|o-$l(Z}OLHLxSH1ki>|Ia()@;B1g3UwsKo2{-xIahTp~MBUX2%CN{@UVi$Cn33 ze|>h6PA1($)8jBoH6YQ9LB;3r0T6NQ>L6hi$fB+;3JmT3+^|n68z3a(qRyKBi zPR0|Gg$X=k${KS;)qkBbHeS@489#dPGQT_9z^@~14|WaqUG7tEsE1lIfTv1yt6LW5 zyhTNG^T&N=9dDMFM$!dNYFLoL!>QpU3=6+S(oBRz`NC15hBWr8=@)z->Dl((3BsWk zirlT6>%DR{f!Zb@M55`9S6Zc_$SFdMEoPYlG?csfEpI7N5!GnaD@FR)+wkCG&?Z}r zxhmpHh7DaHRq`nneg+56z+v3xiv5I7@BP32tj}`$Klktd%oidBb;hskyzk%p@keZY zvL}fZJ_i4A1|_lUqWX^)i*mZGW-Kih3&jFUpE#MgmC+hcCX*$M>JyeJXg>WOTUl3R zAhOi-2R&Xy-41mIL+6u03J;p~Q5??=kV+YqTrn0h)<}CXQn1Bq9&D}8UozW614YfR z?O#-*x?L><<#F|L#EE7LnPeTc5>W`kD=M)eB5y!gKj`IKD|0n;!!SPjypMjfyYhU^ph!40Xv?$@_)4 zn}RXO4RZWy7roV)XdxxOE2!5c1~n3(OTayXiwU@{x$ z|K}a!wdUt3p|#Pq!e{!eZi6nG_jyqkuKc z=K|r{qtg+Iw212!xy|C&$VjZKzV>PmsmqRnWZ3o-@l?i6Y~EQ86KZpx9(T_)rQ}ur z`QNuzV4Z7~S{Z7bwQuLWrtwxx_U*VU+WoB1_o&4UtkS1e(Mr;;y)Kf4n+F-2D;WBo zgMS9Dl0S<+imo4Exk#k%t=MLuz5Y!xAMga{dguI1{8FjM##*vG9zUwge<6|}v&#xo z-lMK$fu6qwTv65Q$Rla`UK}c99E?jO4Mk1Rh5E%JOx8Y?$~TR?6i-|DmMyt9{2`Dh z_O4_9_|twCGsE7!FHsUtRT0pMXd7sb{@7nR!s5Tp*O4q7(!Jni+hXw?ffk?p%!8?vl}=3%$ZBp&==xLCua6! zTi-pbtEmaYi2msMVfkI>XtZC{^*!qxeE7rh59`-FbD+6j>|b(8fBpzmNDuTED5^4* z>qWMB#KM-nh+Ovsy^N&Z(Z`vlprb?OOn?v17ez)#80L~!>S50q(y&+C9TE7Du_u|9 z!5k&rBCf=?h2=}isi{IyeIt{s%vMUJUauI`)+ahEu~K2@tH&nV-LXP|j*W$+juV?c zR#4CX^T`~GiQj7_GRJt$v8+Q;{4u*nm)zf;T%TzlJElH5*0=4{A@ByEE^&^v)Y3yQ zNG9c)qjX8`@zccjaml+;o8k6skNy*$JM2T@hU(K>kG)%M{Z(W0h8s2;YU?~O#QE#4 zJ3rEarL=S1$obLpBZGk&;ZH7#yPqKE_C&;1-5$9QTol&;+YUXDxB`#>-79)&5{KFF z%X^##=KX{iXlUj#bbNdFFI6pK;3Y*D4G)Pun7*7Xexl@^7>Qy2$F^R~7{|*I=${*4 z9M(>gPN!&`P@o}s5kUii+5rqH4JjqeH$R-sKAaspktWyG@T)A zx3x?TnqQp4j?Cnd$?elM@GSi^-HatRnVw`AYxHLsbl9JdL_h97# z8-Bjg*lIK$p&~Fbw)0Kpe>@f6h{ZPILbHyp+mrB6KgN4k(ItV; zmy@7&xDX3j!y_BT>5t;Y9t3)c_CU0wcz6)*&T^4I8(N8{ZN&w9;NN@q6_wg;k3M=^ zt#ZXDR%s02%#Tg9&PBJ;9aa9_haLN8Z@cYh zZD;4>*OIGeY zm6da#J^h|3-f^U}C@F3ltSpBE6M@EE7_Yr-_tcrYf_=xQwqMY^>-O7szJD~$+oq4c z=iOVQ{o204xjXK-tT!$tf#ba|y!+jB4mf}QkLWZ19==t;y56U@M0~pu(cq?CWs6&p zgxkMQZ~ zDlFCrj>V1noMD&p73vj6nQwU8lGFQD{JbS%SgYGLjs%d7o~+eMiT6w&>bUOc;pz7z z8m1M7mNgwJ``|%a9jx3|QL9&WRrjhj?tXeKs|eIAo2bvCkE)ppAaik_4Ja18f>N(E z`q2Zblq|x?sHRDS< zxBTi~G8FCBoG)6|7t8fjB^iDxpS&~4Z~jYR^3KoKngu)3Ei zkuJ5UaUC)Fzol)d1`&@a`-?XcRcUkrXtT>yYDCg40gbc+xV6Juxfd*|20fk{J5QZ^ z{PA;GUT(IYdV)LL-P(Gh(RiY9?#!8Uk2lWo=ggUrXdaFXz+Dfs{vDvp$Te787_~h# zq!vTbZy>(ig|L=cve_CHib|e7x@J<=Jk0Y)Vm~31w%Z4B13ioYWCE7RrM9h4Owa9E ztWVF+57gh2EO2O&c4;Sr1UK2p{2P<6!SevNGEWr9yxX*beMjQ8;+~KSHBMCN?it_P z>E2-^=lxtf^gE?OGNB`4O)&BJbD#V8y)X1iV3(C{5AifI+#=#XMnXwP>31{#36W|fuf#Fd*lwiTnSc0#%l+9vgErs zvT9Fb`%kwUW80@sZ;$Q#*DS5Tf9&_fk3Zzuf6o?Ho{jf!*zrr>OKTK_OZY6*FlNx? z0h6QJ5_vv&7AcArz=+lC%e}k)#L@Q_&Q%G{`YaVu`=r-9G@!_aDEbGmxLfuh=!H1) z(1_{9*mi5WbfT5XDE~t?w^{n>XKx2I&siQs9S6`IXMGtEYv+kEzb^|$y|(jDfA)@d zoO%BEp*;a$<151Zn=9k_hY!-cDeWAf72ZL0;DF;8qYjLz49TigO!IO@cZC%ww)1e~ zOaHW4`}=HcCYgw(mj?6dm@~V2(UG}kt=9Z+$zrLPxviF}xmL-#8k$L1p*2{oIK?~{ zPUutgk$Df_d=Uk6)GhdM;0ZtnumzXMjAJ61tK>?g&1Tn*KzPZSh+zeG=(0N{eQVl= z30q!XfmtRLC&0n`;SMf6<$OY#YEmw_SM_9ZRrmL+sPpRi@y2JnJ`i?>$*IqrzH~+N zKmw-rB-}*7vRqu(Psdo0ASP$?#n7{?3Q3l$V-PbcHwAT<5)F^<66TYsou|^dxCtT8 zQ#;*NYxX%Y-8)Ue@|5$b61q>cwv z3a!CAO3@$(`l`p!qra7Dd^N|=82So-OnmdZoG-l5=xjwpB2Vd^tBu@s@x^z^|DBOj zKjPlcJ@0ut_p5L2P@*U2T6(|#CNV$`Y;hT1R?>rxF6TqsjKu|=f=13U!L|4WsBH*s zq7S7(@`SxUmDBgGAGd?vm{T~^xZ)L8UvY)AcVqT>M=!g3c5~}B+tZ_aN@h^*l**m$ zt~$4Q%@udYi<6bjiRWE;;?+C3J(u4)cG-RRT{d>><$F|pYTxMczH+Wy&Q(+K@*1Dd zz+X9!zjFUbGtz#Pn!3<#+W}3D?ODwN1zDDoh-F6ppsvw1Duc@xHDx0%#aqF&w|W6z z2Ky#@&C3QuM{JqeAH-^LKTpxS=wii#=wW~k7!MP{v|n;rM%@}Ypr#JzK*pO|_Q&&_cj(PbbW#N$KnOoD%d={DB`xYK!qRq=lpqdv&J zuDSbpde8~O8k0buBd^Bs*+6m%e&?53m#0aqBxd3SKO}OFw%RM>y`>s@dzw~^S3|u_ zcM`o)tRAN~S8lVMAL}~KC?)!kt3;*4d@NB^EDV28KTvSYR?un3vS9J_3~*zIJXvTn{eZR|vh)`-6|593fK(%q4mSZ{T=7 zD$kM#q0<%l4yo7I&;Q{3-{J>8PL_BKUzxl%`oGHzIYHsj(h`);2UsC35x6~<0U!V( z6>aRYsfp~2$Y%wXwnl#f2#cS8C&cJt{cNXqaBq0uq^y zXkT}p3RE5<&UtGn~nVt-JqrpFTwE)^)d zQ4iSd5i3ps1l5iNdGdXqokOWd%3D8?LkV%;@m7{uo2rN)ElbL0_dabY`k}f}`qm8F z%`B*Fe8sQ+e8TaoAKv}TCiVD*9Tfd&el?y|Ro_YceAUnH{#{`cpXHf&+?I~n7vg`j z-);><3Mm92=8$qT)|??4*1zzOGH7N1!{_M@Vxt-H@+$lov6}oH0tV`RM*NjTrgVXe zuV+bp#nR|Z>0B68HBquM0Ve=ExSKE$Ulk zGKh8uSwyuFPm8bHj(kYq0MKUE7a3`E(iZB@J;Jb1Px~OimpZIC4!dxsFqr-b@ z>j@+VmgVMmutYKNZlf})QOgp4DO{~oE~~BpE{9!{NF*BVdMithzA+Mw%5knkRVqzc zaq7a~#_&LLwEqOWnDpLw3R24LlYA+vFu<)c z_MXJ=_!uj6N9v*Ab6 z%qQWSQcP*{?508-PST-6%}x6GMAxt{+jj4(Z>~*FuC2UdqjmAt7>hx{P3m4LS*)9N zn95_D7q>Rv@rE-GZ$5YP#-CYo7?PDjkoBjwp=h+){$AB?w_f5gtJ>|jy1IMM3p$-b zx>2=~n6OHDlwJ^EvYEeb#lxyp&O3gKA`mxI$34VUMRtEYTuS z_nOrINIL>k8afT|JGr^=*OteFK$-{8tAMTYmmAPODtJX6Hne4fI^92V$@!6)*5Fjb zrDsRgSt-QJRU@=k0zF^#gY}9kPS(wGb3E3b3}&2H9xe=~Co7Bjy~~%m`?pU*$m~s- zl~%2quY_yuTzflL$jw(Wl}5V7WauJaH=E3)$DLoawh|ZZar$32&cuE_Kb>Fju1S8N zx(&P;;hSGjUtsMv(e2m*TN&}}WeFpPM6`SeYlu-ZV&Un{n34mq`1Hd9yJg9ylRgyJ z6oId$mj9Or`u(iR)Vs5ztH&-?_t%{D7>ftKgF7DYPHEZE>E+4#U@WX=oGwzHX(TcI ztlIeEgT>Fh@Ri1LYS8Mf0fb+>zJ6-wM9rMCV9{G?z3XI3x;-CX?M!SKOImqiPh)N( zG3E+IH=S7bvb$r0tMVN%;FwgLOQO1o_y*o-8@R21V*1rDaduw1aLh`N-}A!L&YAe~ z!GkUBzgl~qw{9Fe`^VPCnYUg%edXqK8WN(6v!M+Xy_gZx?uljFg)ghV}2dvs>~ zz)d&3{-(w!o_qA-J1$oBw|8%T)6F*@8cfwMmbgpCltviym+G^`w8waD$$(D@lX|itV zc&21#moR*+8Du-BYs=gRyGtdev(c7J*~ngxIG1BP>4cV@cFOUzGgF_Ywbs9$u3!IA zp3ls35HpjWZOkM*2UWlHTuz}~kV(<8^c0PxlhTJPGaGH-NV9c$fspv^*^HU4md(s5 z7(?kjjZolgdn*)c5du{pMNe%z9yI z(m54o!mK8RKr8~>VrYmyhmQw5D-XEkN!bD4akz7+UV{SVA5t8m{kcUu80+V3`}&xD zrIoP{ST@?kA6l|y^Lwn=b+&Z_3gCOtb6AMkzcy*b{wyB*#RBRI3Hw_DZ` z%Q|kQtbND^nbxmdZCRt1^==yhW9vFL4=l^-S=I-5*?VaUiz7w+EIAQ-q(Po9fH=Rm8 zqp#i=Ru8M~+4^$rpGM1;UGlP-u1Bl4T&MhxQ?w%Yr|S(hCNCS^nB9MAb1IQ5I^mr# z9?#Bh*Ove1QU`I=ZZ`}2R%`v2%_+Yf)N#RO&U}Wx0Z;Im|1;MBz*1FU22oY=U2kT!9!! zU0a~X8dN_@1(-VoVDO~U%t@j3#d4lq1ooxE2?`vs73YHZii!r3l~swwG^!;C2NTNhj=oYs#$x!pf&=w3|O^kkiuH7o-&HP zmCFdzbDF>Z`W1?7Z2#mQ=T({CIR48oy!A)*SH2}TKl9niyHbJCtx^kvww_U`OkHxI zTSysOs#hMZXh+QS%;JGC*H646ch_sWM{e%su6+5*jd8b=EJh_+(#!Gu$U*R+8}T}7 zti|H%-3SJHAN@`~2%i5b<^iJ`e3OVl9PFCv_+hj>gKc)(jQs(#RGhyEy~D$c0AC60 zBBzxkpD-H4jgMFiG@eDz2tF23BzHu5;-_w6J5LiXf}}<-C94A8F51RBL@_AjiDy5{ zlkh1dIU_0CWuk32LliH)3nK*Kf2ol6LV@okdhvub2`;GNt zYf_%XxM%e7PyJq_UpJ2|Pqwr3)>JDyUzs}yoN?s(Br2G3Cz)`lwMWPYXbYWk$JUPx zoLtTs3}_H?kwadgh7{XHPv6_zt2wa^j*qC(rV~q>T0R{_53d41Az{F;X~OkCfBuK8 z`wxi+!L*b<6>U}z2^VBJ2U<{{IS{Mfwvb51K0{<;fAdyX^VOT-GhDy(`>pK7bBQ~C zoe^)oqhb2?&zrD+p7BeD$_+me73Z*N^m~Ow{w(ceT=Tqo3~}jOTb9%;IA-ucP4 zA!zeo{))z+-t9FlTi@MkMvr<=@45RH!N0zE?#rLM?Ka=>-e4Iw>DJwvcI$1={-@HG zeuvU;y0Gm}P}J-=xgw8ue#J~5}z1A!R7aEJ^u%5c)bXVLlU(HNRDCvHmUvyS0MO2<{H z$(D6aup`2Bwv%CzRS;iBaA0|L1l^jU`dNS*8YjTqPrf}J)Rxlm)H{;dDxq|+++qP> zF-lU6g%#J;M{R?-$wCLUJ4^r7fYMzIIQu+Eld@XJ4|uICDkR$wK7ffX>RQx&(TN+z z+asN|I#tJJGne@SFj}|lxnIb{5rc6HgBFFo6c*C;f;9}XFdY3vf^9J&_@m*W6%er0 z?43tkFIUUy8n4V{9aIrh*_O{+#(5{+7itkRbcnw{LGDC2Rj&elfAh$@Mm{j|5r9%S zBm|Li8v64ze7D2izxm&`Ic;wz_DG}SZX&Z+R>FT13j6;VFdvjkbv9yv*_28WqYc3_;9+4U} zK*wpy*S+oAl5RTnGQI?}19#C#WS@0k+@sy?$y0jz9xt%BY!k^ww2}=kEi_D&?KHY& zu!TvOMQP7)V+OT6T2P^Vop^{iPHEgF1*T5LPS#4tnrCx)dz+Ll^Gw;8|H%G-pIG8? zun%HbZ$pn(dr1-w3qWxRaKe4Y4wP`5W%NykrFeM7(H`ty({kiyBg9G2La{@FVFyo9 zwVTh}+<MA@?|HUu%YYxqT`EC}T*QeFL zU`rSAxXx1Dc5dW1u&6>Qu_?Y~-q6Vh!>Ti_+cS3L_^(L`t+48}-bB+w(M%znQH42HaV%MHCWw_Jh zbD42`@q{~81x`Lt-=Y_ho6ftr)WftehH+|4=G9mSwvRC}iyt#<*$0;_YxUw}qT;xl z`GS|FqKMETaGgZTvPH`Q=Uz`EDuvciB3r?pKT>_wbz!%hPg4^?I)E-%Fo5ICB+JGl zTe5;uz0qpaQqP+!msH?=?~>;gY&!SowwD>ZHa9*y-i}>rgJWL`QcVz)aKrYkw$)%= z(pH)n94PT!Wn3At<_(J3AFhNFa4PZi2ceW=Fgzc`!sNvaTe| zpY1=vxBtn?3=`+f?mxXMO6^Q2qg2kmVA$$yUa92m{Jh+%i}i*5g-ladJ{$%&j^1dH zsc}R4*R^%OGP6xi?CHI4^-Ay9QrabSm2evqPUdz%&zPGoS$<}Aqv$MMeO%@ly=g|y zXb&(fr^q$DhII%%5e>0JX;D_wK^JiSH)-t3Lx2W!ex?5#aKlf1+A+xQbFHHt2gG>n`3KRC37;LK0Ip+ZZR~6Z)l5@sCgh0h7)WvRwFE;R-@oS$7BpTLi~ z7;@p|#}8osn4VQIFs`OQNbXdvGp`tRqe;B zfF8Vl-`4!h_4_6}$Mf*Wqg=;dM|ORd{K5mw2%trqe5c*Zs5TMH(7y*H0*o9G6iahl zdWrAi*!U|^mND{H;Mn|oUJMSN0mo!t$^1sZl5ljQ!)|Il^+Xi`|Edis11G{xd49~U zC48OG&QDfiF{Dq}oD4kMuFB?@WJ=lAY_oZ0c3|}UzT@_KL3$#cAMIqEf!{UzeXAEh zxao|BsfkpGgt>0I1xt<2(y?Wg4!GbKu8E?gMiX4#Egq|+0=-(*gH$9f}3e~^Uiq2?~OXyCBJ7a%}`wJ zQFKj(A`9$lcXDI4Z6p1oQ+~;Hc&1;ijZ#T4vW4#b)7cI2-*n4E-I@!M_kex{jEZ7> z!hSF;dtq@9S*>s|%gkoI89w%+46wL)?}{426%X#Y)BEf0s8R>^*EcTo`n+H~;YH4J39MlRVh@a_!c=dlr(Z4wZ2-7p?Q3RXm3Q{8*mwbsh> zOKXck`edPR*jGM&s*b)1G=?U{x3q}i;>D8XJ_4th4cH_s6Up+K$$Z{1D(#)ezCEUH>iet|NDs&e>k!ZrgQ)dcoyGnKaB6&==g%-uS7QkseGSn6ByF`niEKl zgAdRa6UdV|Zmc#$08!FYG_MB%8*p4W-OKQsBbgkO`UUe8u!$E+k(!uGkW?B<{7av zrtyu58N0Gix6OvguRxbWoC_ot1xf=}W4Plc%ghc?d;obHo>6uZGPR`KL%CM%K)iv0 znyD5F$NUgMpWN56_6=D@)Kk=aZlx%xNyif#o^lh&YN2)FngNR{T^vAN9XL$Zn~MHo zP)!G^Q*e)HPwLV7qtuN<1Bv^$<_oHrAJq(pXwS}4H=_oFQ_Ouj5mldh zLw`*?aFbLo8z{Eqys-@Y$XtBeFFZV(q$!INgG}YPFpA1FP;#?3Uw-+`mXpQR$1W79 zZ@LQ~Jj;2V83A)*Y*v8q%B|$}G?XwKKYmUcohVR}|<#_(4N?uK$NEbO5q+ zHC5DK8LzJ=5;xGD80exhxmee=t0sD5oyk{~TTqPuEWNl=w8~7wYf=6#iD=`q)%PfUr z*|3SSQ?Gl*z6T$E&mOzbDG2Fo{>7tHP7i*Wo-H~gQZ9z`t7S8Ew4@cN4mSF$>hf3t zP68K2ksF+?T1Pc?v)hoetA?A0%O6vZX~x&ybujV*i=8lj@BMCb`Y%3dWhU%zTA3m; z21;!jL5>6;fd;Z&G=@G+jYe^-V82{5u507h#9~D}VfEL4{l`?hr|CRnSfP^v_8Spi z>iHjHgI zzCU~dDe&M{Ht@0Vv-vda!=~Y0Y-EctWB6ku1l?-eQeOpJxjdL#9@x=KpZ#5a^0n-2 zBl01{?K#Tw+tLMZ4j@S2yl1}$FlN{b)H=8Vpdx4nGi^2c-Gi_i@s+K)76H7qI{eip zt91<_IO64Esmw*RHHHQXRjC0TU<}%4+L{OJIWol($+33t{G*{dbYjE%CzZ_9H}=X7 zG%{3|>U((<{boQlJNisO#3{e|FR~*@y!?WTcZ}hl++LodwHUuC^&`bYePj0sN7co= z16Gzdg~ixZYCF0e-VvcX9&ghK*RZ#3qiOJKZ^!hewjBYAqVS*bSf5oAR0Jq-90*b3 ze0sPMYf{xCUk3p*{jE1(`~%HEP=rZ>2*Z?t$b+WcU=ZP`QSFwGaEE9|GY%ViTM}i) zY0O1HO>#P|3iQrWDXk!{$O(l~;35F7Hj@d&zb&uYeYtB`w#^lhn+ah^aQyiAkVOSr55t=KeJV zN1ukbS|}Rkn1KwgG6v1%MDo#_mrwRTb@S^}@%fuKPQ0sWIo`qox`S@7KCkKR za&Zz+<@8L_Xk8W0Wn3yH$oC^Fvgf9XW~{CmdTpgKPd;b9GF{O1nTrgqID65F>t2$! z)^C;^!uhX)z5X)l_(zDzPK~?(uSD#^J4W6=^4lYy82OWtua0~jMjVS#Qn(n6a1Ga+|>Ep8V=o9Hk>M{_%7-H>%^ zHRmCKKTWloM6lJR4zkgSgx#LdvW1@ga?>n$El_^T#;VsBvJg!&natZ*;k9Pl3u7i? z25}l_^@6E3hjlUu{Z(DW*2>gSjECVA28K{=Zq!ctWxgA-RmtQA--+s;seFFIVbH`U zHdD!boo{DW;o+Z|vO&$F2#;6+O5_@r!UUD$W?NYGwomRcxBpcmuykst|-D1!$LnB%q zou>*bHJ8gl)1GNHED}YPQcTa%Uo!QY7+nz3O#tC$tx8IQ-CRETP3BS9%cyxNZ_ALqJ%ZRA@c=SfqL+Uuah9(jL}ia6I0^C1qQ z6|D|H0OB8FbYzo_0~y&H43Ip*Q}_&A$W0zZmn|}r(G&BLqQ)??W7!cGS}c{=ObqKT z2rbw%_LIHj@GLnC`FWwBu}%8D_7^D$k;LI#^pgC%7|&o1R!y{vxa0v(p{X{sl{}7i zjUEH8&RLvwolh3#c}29&@y=Mo4PDY(^PrRY2;Jb#)yxmZ@xrCywV5$%oi+kY1^UNY zULsaXXjaAt@KQeVzzz)rb*+MYD7cuF&7y6LoC(q|%xp?|tpv(EF2Z4}DIn9-??cG<&j6vuscP+O)JW}>_{ zn*u&GU6E(A0yB21Rnl7<`@-HN{ts^vcQC)yMDyMCSkOq&J{bp+!^F~8Cn(tg!zA&B z2e1n6zWabY+RwJ8<;f6Z?zyovTyGy@w-F4qQvh&TGZc_fvch%_5 z*S5Dg4s}^0C$Pg~SY+vt;lWjyBi8@;$Y(Ink$n$)Hm$^1Lv;0J zN475aY!ahbaruz|QUXy}8Q>YA5P=cX7iA}*R5Lc#B+V4)+*t8q3d+}u56T`g`vag(NTEDhLQUJD$Bjqf_DW7*UX zbitv9s_ha)R|>UrGVv2dT8@DQKvAL(D01SJtm7Mcu$szSW-c%3 zb(FqsqAm?pJM5p9qAVD7Kjcv@DYD2KE=?+d5F~x4Sxz}f#)?^LYEgK^7e#at_M<2< z^HPaVG9avS7)lLzcLV8N>~4av4l^jS1YB|#aDL87=Llvgh(iXz2t*b#joe%sZC0wu zu)ajSd@>?tKoIOH-U!-=R)$>qk3PeyKox#ErCfk;3%xKpKPaiD;f187W27;OCKI=0 zsUsvh6rt7sNEIFX;+{hjFpO1QY#(2UtQq7W&`Z7rER_uUm8nu8fwWevoJto80UtQ7 zGjRlnp+polLogWOP=p+p8|)T zk$EDhWEZRpFBJ164y7xOWaJ?R3!*)Un}}1857Z~qgHHaU>cTdmG(B?sur=EX$zp|J zHQl)^5$;D3;AG4SD>Qbw1Zqh}y~M4AtyWmgqVRzTbEOg!efKQye-H0}pqOgz;g)1FmyK(u#*)dg^p(TCpyFa6=);W)J9}zgw7KS#8hvt6r&GE4 zj91mmg?ct?Th$}kDg`@)zZsfR2XzFOhp(zRZbnb{3VWhMGY;_^7zg(<4ovukBlrtQ zgESXe_`-L-^W?_HNj0qykb}iUG6r^ z1)oxP?Fw~`-r#OE-|#y1TI<9NNWb%f;%K{+&8VrK2Iml}ECsx=d#BWFx4RjK64SB@ z{v#9l__&?D?Oki5iP6)bfMG6^=Ni$tI1vlnupFD9%Y|KvH&gCtsXa5}(e8V3vNJZ8 zT1b38>AZqfJ&bL~o9}uTrx6< zD=!)}JB$R-ir-&;I+&6c)) z>8l@K0-&yVsF5!9POMDrJy^^;WXbqG+AY*fOfVMihIReq$UiESDVAAohd(UcviJ@G zIEj+lbEG6_JUCqBmwFz}T1Aajo|C8zQ6&Zf$;o9%tWl9Jy3li>q|K0(>$9*+heVL5 zd=&a{7@IG|kl{G;mY5P5NQ{}Ko<%}LJc;Nd;1A48k3mL|yvDY6`wVi}RWeA@eQ*h~ z-|#sOBrihEpBWv>6y^Pu%X?z&2A^;UV zD{-78F{F-_1V&BM?TWs>zgeH1Emp3&L~?wzJDJ?m=~fFmNUU8bkM}O$XFO(Ui8{S- zD8Q+<$`~Gl3Sb@Ile?^bZlKR7&uc>3j1>!c^?52_5%`73Bg?l`h_Y@@WwA{b1wMYp zrKKuO>pj~-vWI3AZC3i2NFbBrrHs@E*%5~UNLhk&9iVS)Gx?e4_B-2nFPPG3-O_~_bM)dnb9)c z9`i)8)bB>YDBw-YR4Keh4T?!SVK`S0WRaJD!es+E$ zO)5YsQ4;H&jJ5V0hLL4s<^AP3 z*mrQ9B(+TnRoco$pFutrdgyaOYhFe^&&eF6KZO`_axY9@*>71!cB?n3<|0`O_M2m> zEz1$j=vC3|mUm%Y;F!_R!r~mWWnMmQ^b_TKhi@X>UfzTAB4W4lw)2!#UD$K!RSNPB zJk(evlU2XKfYX!cSOe>;4CPU+XJ>Z5z~vtmBm$?6cpHD1fGCf1?e};l3z@SD?HNS{ zylvXNyjssV9p;3nLExD?HUSiUEu5s5GA+lr1CBzV3}gO#qiwu%;)$f2NtDP2rS&Y8+VIFpyO5v6pMK-BlFU=|IXYPY z%19Xy#i1~YrJ#M$!ddZd_;yz!q@gnFbW1dzOSzJTBhC}rNz;Pz%I8Nxl@lft8AlkP z17E^sN^mSDY4Xb7Vm5G?bu#~EAsZl7F7W~%n71MSZGD@b)a=eDvz#JqSv1;=qgfl2=LEnLkvkgnVT_F!d>bEP_tptE{kIiq9(5<(^B3u2z07`uBI{n!2FUoyvrn8s(+W8e^Z^eO%gV=;^v0m~kUGt>d~K(XB}?0lTtV)>JoKYwHU z#V4LPqaJG)cYaTvQHP7|YaV*&zWa8*^WcN`a(rm;yWF^EDxLq$dx&1O$VgH16a7~o zLV_s1bC=vcGWO(4<)3=|!WNoAr*}U2f4aaIg2f;Q(N|C0x2W^)1p>hW{4k(py zTb6d#QFij9d=!p<9-lGts4l#LU<0^~GlJs#`3s%mf2fb^{GO?RgeFuWO#5iNXtGTU z%cJU_(I=<&4$-O%N)gREA^S3cR3+$E%9_!fWI?r7i$9pz+?s9{d0E(QIHl2S)h&&V zzK%$v;HuUi>G~h(X}|q2axt&Sv2IyFf)6uc8Q_;E&v|}3iGWA8#bEcGbgbZ1>tQCL zO_PqX^@Ltb-m!V@rgsuS!|G%{{%iE5s<@rS&JQ@aTZnuwpayjZ_e6Po6IHucP?a$< zGOUGIqI0Qq$c|j<4a4qJ2WlX?VXva~WkXW}{6L|mGt;KI&`_954@D4$f^(UYw8_z7qKo8(Fw+k;dQ|HdFH~= zd~j``>*2xTo{_NAR?Z4RKu%oy@@ubs`JL0pt~)k8eQYM28f^rrpEtpC#f}~3kd~c1 z`@w9spEE@(NKJidnl}~Xnhaqo?q$kE(ya^zOsO-QPrpzDsZHGyy^eedMhVY0nx9Xq z|Bl{8IMi@7!7cFwcjI=5b}X?X)-ec(EpPdgx1gF8JAHWj`s=q< z=lJUCxZf#f$_XvOQ*XI-aYj!ay7T%6uSdFb_4sPG)bYnhqqXuzCB$|!1CB4tQM;BuG^dsahY`?ZAc`{Ok(>_y>I?I_R+FJlREXB4Ut%iRrW5N zlE-fvU5Uk3MjzGRqw9|w&%Wj4K5iI~|Jbd1R8{&G|)W3cHlj?P>139>m`{8@v4VUcUk+-uZSdoh_fFK>{L>&qA zK!+TuBWFO779wXF{b|HmB6~wGhYdZl9A4zHNS}v(6n{w6GIUZfqYF`wP24H5sI$WZ z54hCwR-D;QTsMp`&+cxM47u_yy>$gN!5>Q|#%i7M1 zrF@vkj#V(3MkZ4%HeIh(3v0ietNLLYZf6Pvfpy)0qaQoGklOh{yDf-M4(}Ku?tO1+(JjTDfqcq<)1K zi>|B8?R0_yqycs&V-@WGhq*TokmRb)eCtL;Mnq=ho*5Cj@0n3s)|OS7t?KHk-Zyo( zTHV@rBy|f(-ID0m#%hVx0)#CX1I8BMby&P$8)FZ~V;KX3ZNL~9k7wp#@YsXj^Y-xA zp2spS=652qwXpb)_x^cZU0IQlkvDGK^(^1{PQ%DV3ehA0IAp}zY=WR1v2_BUIeQ(9 zrlrhsv$g8grU7XgJja;pI0-JbAxv0ZY#`#>7;CLwK<1)+3;*QAxVJj=LqGDEYO1Gp zR*qL==2;vBXAc}`-~A*1=FYQkeak)9JoLy_t2eJdynXi3N6+Gni(J-jx1Rpd7vKBj zQ+J(tTmNNOo_=)YmYr9VVB*qR^mW!E2QN6@nB4PjCMZbu$<4?ppoys%o^Gt^hz=tR zC>YSOpkOFRG?&~9?2tk48aW${gO#5je4DUFN+2qY_!8cn#zcM|f~9 znT43iY;5AcM_%v;E)P^%+C18mhHY+iTd~MvH^z6A^RY^|f5tL<-z7oY|Q)eY}>osVjEt$9V^a4njGFhGHTU&`}Cu~liNUZ zfB5E(6P=AO#k@!~QG3C2Ijq`U;ssvNJGqq+LEhnTfnfC6X9+C#($g^dahef4Ft7%f zI_92p`%mrOwR^X@UiqQuqaPgUyU*AUU)@-rtvOeg_fGqBd$)S(H)XJlt9(bN1Fu&$ z9_*+zPCxp_f|(ukEA^`%&eZF<&fuEZZ4W-L{T<|p3M2Ui^?bpQy%ak9Y;`UT*64>n z{NeF^UpPpAbZ+kC?CfOElyPcdlS1RY#6(2rl4UCxvyp~)2=>ZRKx`O!&BvWeKaTs< zw8k7o-{>A#%c}qE6tixs(_F~+f`V~HE;qRDpOy8<>DBAYN1OW>8q>+8#3kmUKPoTQ z)oq!EpP8@5%d6n;+e^0{TY7t`bo!B%+2(3xCT$2sv&gEGIW28bLr-4?h53T^kQ$@b zvc)s>ax2KGkg1716KrH4b~QO5zk3yTSGS z=PLT#TJ%TyK@{Rb#VA*H7u3P(=H}UXZK1!oo=#`h=5lk=wxXMj*Gp+zX8!Znsu$GO z!jez)4Y~vP&y<{bkYUG25+Jnw`HLf#kqVkda_-J9&HTyVjCh z@eTaoUS@T^)J!x4(kpF}A0LHpU(h&134mPIVW}mhn%HF2^NT5b`qrCRgQB@Kc<`m11EMf zk+Ar{1Obg{5mK;;a7wfo$@am_@kNSn58z9C`{ zfg@<~Cy+?rFcTl0`_Q>_-|xv@YnvaDFAUM3wBK+rk{QE`XX4uQzMl+jAP9$ z;o@9r{HJn#K6xjm@`bw-$?J>he;97% zsnM8EK^Egsl|{)N(Kdh~(0xKWDI|7m$@p@t4Qk^A| z7wJsw&tw$GOyf%gK!}~g*<&&iI0ppD8#_o4N^5F)tjqx??gfYeA?!O`Hn9>TH6S1f z_!w9RU+Q8e`;}MEki}~|XM-jnG*TY4WA$V?*O(eTN>%=qrvjC~I#X`Y}ER;MlSSAjyL~~iO z(i7~OA(CEDA6?9M$w;nN>DNcqYTPU@lyhXehM+oMT6kxE)o&!S4l8~cA2QiV0kbyz z)%*qWR2QAZ)>elF%8rZaH{9F4svTgS-Ie`-R$0R_K6QXdd2HcZ1)fB_z#+uBf1Le zH^`gGgJm3i@U|OY{pWTuk&DLgl|`IrD((`V=O>&mpStYA$o4gs?iOodP&t<%NQQLrb0O}FeC}MOttQnasQ6<9PW~Tg{(gyjg@;)?_W?2fJ!` zN^DH5dXO?Q(qU4@2rcFe5LgI$63N7e;SXQtFMezcOye>vW(7No%m?$I^qe!OCOyk2 zr7NBGAHa>BN>86%RV(ucx|xW!pQ+);qxzlGH=Woi-W)0 zg0jH{kxJ3;jNJ6DqY3N8X#$onDUR=_=qEp=wkZ4Yk8J-jg}>rM!KG`H=84mj!ZtHM z_-?0;bGOa3H*9;Q@!iH_>=_J*&!80vLzs``B)qrK;JS;TQlZgXtFuF_jSh9%?W<;H z@`J&h?M~+^cQ9~gRb_sD?xkPs_rLh5_4U@=+`KLapZa2-vYy`;9@_kVGLWB|x{g)* zPRYt-Ou}fiiH{(lQ3aUk(ibpc9D#}_V&lK6{|?Bq*ckb)N6`%D_hzAN_SyL|LfWQjs?k{^3>F5hiG>_94X+T@CRUZ z3;#%3a!>5V{8`~oi&atFc;dZ645m1`fhAMc7O~}HV_;gWNk|Ifs5j}dOAf5z_mm|ps3>_iX<|279Vip ziWIDs@hogBFn^Pa38KnM!tSY=_^#%3Z!49|#nz{r%h7ltZWepq^g4{Usjc30bC)j} zVGE;5E?3FT!!_xp-y(V8K-bx-}AV zuqqj^w07gJ*h`y1ZU${E&#r7`6LI)0NHe5kJGY!Tpbqx!Jo%_+h!KHlYB${G8pVK} z7J(-lFHnq@Osd`W%rRSm#;&(EtF)}k73fgF(a`ibFRB}M$#y09d zQ@=~R9b12wK9$UE?S;r9Qhc4v@d6i?%qbj)aN_YXuTah)kcQ-#*Ix9Yb#&3?RtJ|t55@6lb#!rDwb8eO_^bIEb?!=<@Iyt&a2N*F>j`#a>? z7%iv;;vx_tw!gSA;>w0`weHL=pX^7{%l#3_TFdq2!Tz?MV9XX_R9-y_K71Rj+Y?9_ zr$D^DM!iG5AN~clLg3dMDp*}(>hQul%z*OJYs0L@4?>i9e1+_oF)UvQrx~YQMmq*| zHcjRW2cm#6ZOkw{XI#)4a|#NU;c6g9;WwF1cx+^*N@4O7-hg5*{e&hasgcxa@*}sV zpkSiTNaPo{6M=_6zAz9-X-L2;!y2G*VQ=6wD&|soxmJukNwZ~!H z7M@-mpkGNSoD`}fsN<)ysN2YtHD`!li>G95f{YwS=|4nR64V8t4vaaBE_#{?0w`pB ze*6c>6hT4)GKU{7bgtsB<(MC=B;nWPazcLjuE<{m5jenWI1+FO5;?dl`GyX!jLHBC z#~aRd0x$toO$srTTLGaHUMRjX+)h}nsEcE1AbZeSu*L`-AuzcZ;Bt`}r8EnyjbP0I zqC?#l0!feq1!*Fv5)FZwzy=WaGUurXztAUgXCzJtZMY}T8~UNSV_GhfN7DGPCI`Z{ z3$RDp+9by$6IZ<{cFfwGY|Ao^GZEt^QC5PgKQmW}JAR!<2W9(XwvgSqd<)yS|h+0q<+j`G_cQI zmMqUB)8GzWKlZlBj-VQpOPTpb7p0ucJH#(x|M(>ND}Dq1urI2zx<$K1dzbbFJ*%VP zt(>90hKhRfb6i{KD+ zD9a%TI6;nv3xm7@`yZ|>kA2XWN)HzlSsE^_S%V;eNmf9K$ zvQxH-XMdg@*Wn)eTxW-MrN5WLw%Cx6)?s)2wWSyIHF9o%(f-+o8b92)#ibu)gZf+C z71(irgs2!q(bM%hHc3>_aEp;G$BY-|N_ENn{q!x`B&O^B(8wygeEPYtpl0Yuewq-X<6WS5wN9qF; z8desfqcYLol6($s9fnES{&2OB>oLc=Cq%}rmdqvCX#{P`ULXD=fjGc*sTY4JOH6apnBz}BD*dDp3*$st zyMdIj@36;nmTlWkrY(ai>k0Nqx#i>^`{jeODHBM8v_KM6lEIPf2pffL-hkK<9b!%_ zg!qQwmw=d` z-;+q1aqcZ5gp;LbMQorI<0LsXRmtrYErZZE{$Y#)=1M%ij>FFEZx8^Kg3&n<*V@1; z{ImoFbDQxU6wYk$=8Pya%lOUuTC`U3^HsO*NHtaxHcu5xLWoB4OPGQalJbE5q}74W z(v?(%fN8pmjvyM81_5^ub#Er718sENOtiv9My!^zl~;^JGa04>8319PX7Eys5n^6I z9YQx{5SD5sQbfMl4k81wd2wxB{2m_Gy2H6OAulMYcff zm6m53$<%5CTJt+3j(>NRjHChfP)JUdr~Lz-6EbMqKYz#g}DZ6y=J3U z@(I(A(JE6T#+W5um-R#jtdt`!&-;g%!+FAD!%rs{jjs%W)yn9Rh$lvRltw8AC9YJS zY6=7qCz?pRbh~Mja4%0FqVO)8b~FwEi~(jr3~0oRYAq6H*cY;S;L@^s$m26SfQV5| z41RH@DU=-azXNYoB8=zy1TFDfc((3BY7xkMk3EeY3jJifyRk)%7w0wk1lq;1>2k8m z$tl?td^R?TK-Z(cu-Q2sNC#n^{+p&iYU(07vFwzSG3FMQA*1El5-qaeAg-2|8x0M z9922>_+><1M(hF84$)E1_M5G`#O(o^05;B5WQ?|9K27RP-_rs;UDfPDr&TM)9MkE~ z4pk=7DQ1hN7iljJR~B~VbE^wS+GU`voAb-{)mxVsGPZEt3O-?M3vYs@0tS%r14-qM zI?s;>7Ds-}AbdN*6UL|CWs-R$ek0bz8{>~0+<7n(;e`{W()hiuAKdxbyAB^Yd*r=` zS62_Os`v7_oP7R8m%bF1k~@6Ykt1ijT)TRh`X#8}e;{9zU}#cc+vmtZy9Jy5X)x7y z!w2-bsUP`XyK5Jd{1{~v0MfRw;Q>l-W8dQ)23Mb_5z5lZUmxS&vxm8)S;&?}cIbN9vh=u>_sW*$-<{T zbu(nx(R?97(iQS#F%%PV^J&SX2oFUvekzlRVt9%8`G3pZUiYzPeQ;{!lb`s^sXeFm zY+wD#>yB>>a$BGHM*Tjv+;h zv<}|2(WMKLIvTw(KpG4@i?5;U%e{iI^kIO>CV*FtfLg;^lMZ3lBGig_%YSbq>`pSj z2@c|}c+i1FaB|V?D&Kc{*^)`z*D?YK&jx4(5G>J$2 zp7P@cxwMojVTgRU;*_v4|#Z&nzoJB0PtONjB%mZmw2>hW$uuK=CZ;STZ%^V-B`Y>sRkLa@GGWUIm2%5s;t}|+`M72%r8Hh=HH{s>=)L?&B5&}m0eBS z$hFcM`5o9o9m!1F&Bwa=NVJqCw7DIrxZHvJ^z53ePfsW6g+>}nVAUm=dkub0hpgH2 zc^t?#nZnbl%}fwesbfYVuEpMDW=u24Af?5Vxm4OYT1%-|u+_kTDBv~YJO2y6l?wB4 zZDH?!9KRI{w~V79(PV;HW<|#igl4s_mR(Y_0*iK8>={Ln&@7SDqc<{z%b68FVlteB zP=O(dtzR5@81;SOz+v#|sKgkJFf>8$08=()Vk8xZA+QPWa-*26Cb9gW^cSj$gq=qA(=WnkAQNXt>Qc1V(<7x^|S0EP4Z42B^%MzU`&2$>T^?HgHGj1^&{#j z^%LrSuwTI?Yk_nU%^C9^-9uogsI;^u9Tgh!Mm=;n!tk&ngxWs4b@=I6+r+b&M|p<3 zc*JxKeEFKk6<7;796^#VRJ82oc;1t83yqi>dJyLBO|ef4GQ+g!<4N)^I*;37&FB&- zJRG&fxJ{R~E=BQShDGPZ3&CrYEVsYia7$>L_z9@egjeOt{2PtKWQB_)uM&PvP z_N?AlSlJ$c=K%o>wL#K)38D^R3t7z+nG+#}^N5tl?1Xtn$bBRMwdz*vVIb8L5AYW> z!aO0gB7*XQ$xByHi`<7YmMS+EO7+XSWPEet1uvS-CkK1?lH9rO#}hW;sc0#bW*MM1 zFpQb;?fZc5L1L%ude5sDv?jU)QhhSz#;a}9X}PMDE4B*J;!TbIH7?1pMf#@V$h`Q# zWAN=??$+7|h+8C=1q`zhaxL=|mR8K5e0h*;kyBFH0lM@8w35L_&M!Yzv+ba)ty!pM++hXP4xgYyhu$IQq*I4R%b@ixo^=bW-n z#^QXnf`cWxB(wPFfl@MANTdc;YMnE)X&RKsN+2X~G%i5jo3M(*g)DMynWv*4vSm-T zr%k7vBB+@R_U6IW!;iN-OHZXSiDJ7zu&o4@_mv^BcSsjPdx>f+8V$i1a5*^j*iYIC z33g0ij1|>i+D&v(Xg+l^^S~_G!{d(DwubRE$|X_wrpjWKC32eQ$&-kJ=wjRAW{ANk z-0%fw7$q6>$5cGc-jg6Xi6eUuj8pe9M6dy4_e0x5t3ZcoK+%QsOR#Yw`;LA15#-Du z{8`0(WQPg>1p>p|7X;l$WRWx@HVpT)KDTB1hm{+ zwXk`yqT$IP-hN!AwT!>15Iw`hKVSCKsH~_=_n@`Lt(2d>;>g{1zwO0+_oRQ{@#FWM z_%Q?wnjz(jw#0vk9)9hvx7~HuQFX;%G~3&sIez~5aaQp$FUD6{r{9Z=-JF{0jPY-< zRJ6s9G#st@)*4HU@Lb4(J@QnFaIfC*SHE!jq5DssKfiJMrdQt-G#3tkTFwT$zMwsN z`pSpR-qzN%dBd(fH{G;n=Ac{J2=%p3tAB>et}GFr5tbx`z;Iy>S5v${;;-@G6Aah> z1ruyZ=-nl&JuAHi35VJ`D@U->U-*biacjHT}6c9IjfzTk8D-UBbZfZm<@&d1e9;g$8t6ukl}bT@b|*!6Sx%*G*gRCf{I zBW6=18y{n;s7$!?eQ;4oLz5HGgpt1z0P^I|NOnSEZn(tcgI4d;ne4}~OW7aGWih4g6fT88l#j@iOgpI~>z+bSU*h z#E728wH-zXVM&pFFp%E`OB@o6J^}`T8erpQA7^}v%tuy>um@uZwrYe95o1NS(pCl*kH(BbFG8pd ziRSo}|D^Q_LHNSkh{7dEH_n22+0X%ag|aPLm?CJd%b~IJ3KOHXzHEp{gS_f{Q_I6W@@KjZlq$nVzEuh{PprznCa+N zEVdp*L0byI*A!aUbZONL;y7P?s<8bXi$a`o3C1zRH{2XE?&X3*(P{MW#Vsg(F zU^Z4QMq@Iv>;YJ^#yk|gwE>*3rrW~9t$xdOe|!F8p7*i&p5E0+$3ad(cGQy)n`u}q zBP4u5mLRGxqE$`pq*CNS$g9)6|I#~uUS76u@8E1Ml&{$viF6n55-WHIvm}F2(;vFc zG|PRYkflJ+WvMSs1;(L6{b{9$&tf1!3}Nv3IDp;FNKA(q{C_Pv zEavt%4-q?`tepd^_;uUf{@m-$sP=|%PyV*{I6Uwvc8S(_=02YRga|k*q%rVEY{wxX zqIN1*F6aK`|BzSJ*|oU~`odkGylHdSF7>){Zu<-2`Gs70`wL$uwi%WLXywhyY0k}+V{ub)-kn#49u&GFnDg8lcZbiAic;?PZdiST)+T^^nvWOjDV;Fj-=!3a`#vT|P(YrPgS-yjsB~4n4xO z7;-FxU~@!aVT7?AFM?4<&)}qFkP5dvR!o)dDiw{bR-_B+@QnvZl>%CVk-ZJ z#G{*TZMU`8h_6y9!ztkq0^JHZmmRq-Vhl9(`CLsrwC#G@)3 z25SR*CY>Y=d?~?)PR1P+!gfo&tU6P;vlz=8#&ze<5AM6~reBR^u3T8}8~Vah|9I*0 z7v&nc?ax$aW~#nw_gj~bw)Uy_&Q$-#?nLwbM53M>4082MtyWxYR~P%8){yIGs%o`5 zv;F04vvFi9^__1ruD`|Hyq%baA7^X7Tm3in-;unwnf^7crybF5&|V70i>2JR0#x1c zNWi}wV3J!ME-w-+9=bCDL1H#T1xJ&X$cBM6guWI%8hw|YQ%9lCn-xZie24*F^iQ)b zpZ7$$79{uptFe3vWN+BEKpM4S5NA0>%=IwF%DNGL8KZj-U!5Ob>~kNBWLf~n*p)}9 zu%5q2lr)Chr7)KsI72bPQjToW0bm5mrbEbu2KnBKAL4+xW)!ppV>(1eVR8h%%ZO)H zr6hTeb!fyN>_qI0CK*#?Huz=$K2&R)OfS}C?uqkVIZ+KaFcCo`$4NE$-eP27+yna2dpp5N$5X{D>CB%5KRv z8`Nw!pmYQ-pTF`rw3ghJ$}`(XNNdAUj}{9h=ArD&vOk$Ft!J`AN_E45$BsoOkAgKS zN~&c+V-nZH_V0@mo2{Pjx)!Ba{(?c}MC2hmIj8_mne+xAuQta%T!$3N6|@PD2)i{I z@BUJJa*%1-yUuRhw094__h|)hH-dVk(dz}1R+t+C$ujckbx4JD4*%mfAAX~a`xcZmcpK_@c9 zjmY-bpa{av9Rt*vO5pOA%^!DC+;USzN)U?x)Xm4#yO<}^WbP|R*Gl4T+>)gd%P4ngsy_A2e9 zqMjZ-GGFRzMy$Woz~ziN0w=pg_zq!z)X1Li&Ou9*O@13SnPPCYVfU*Nf*Xza1nQCn zlq6UN+|vNju2u46n?(maL{7@iqV9;8*0n$5CLbQA|wY6 z(BQZeOWUwZkq4ASM6j9SipP7NX~bhLu2%fJR--u^DQ6r^IBX~4l;-K!A#fi@6PQy# zmXZr43C0} z(c?be{xBoKE*r6wf;B2`IKEFBzgPy#NF!)e`$R~k!EjMgSORwF6_HV*kdVLlv* zb_uacFAXH%te7?oHx5_>d6Wr{30~ld42Ts1mP~z_sR~0l?N6?2%r?YcQU@FAAK)Ae zw5Uf8J_c5_!lTnM`xswJ3{^fkU^3ubFl7paLW@I`H<7V#U>|&#eQ+wm%HG5XimjM6 z3&^YN9_T^H(`+UHM|~mOfH)Z-(+~ieXuGWby+P9iPK5or#fmGe^!!ki7)Q4&V}vxU3pN-;Ylfk!S{G@K7+^lD zR+nh!@TrT5XLRqy$jt}t?>kr~Gq5$1Y`jnYZ+-d5+gi9y^ zno}3*V$dUYJYXrU7S>(S zasEB+Uz~d1)IZ=|xJ~_>`ieG%1ae6GCTJB;uj(^8tiU;1P1yBh%M^2UNLVSo!S2Im zM@PX7Y%bG9f;tow8oYah0PRS2qfkfk0DxIQ4_EQ?04ZQ&Xiv*^)Z(q(HKbRR&n zC2mF`NV)R4w!DU6ehn8OnF}JLPz0dVKtY0m@yqpJtMvbWoyDMXf z;Uk)wyyq?BgX#$}AO?o;Dv*8LFBq;%-LKLRyER|I8B7(X+Dmc~dR06>Am1wGP^aX*iO zXd#OzxHe4n(ltVzxJ+<6ogm_{Ogj8%h=XE*^`KR04|;jXWAI%R5a=(MdjUz0 z*Hyrygk_2ikPej=X(P>05Z~s`I<2Qhb5GJI$RR{piabTNmW8yG0C~7`C_}18%fbi= z>@#nIyI(Usk(B66?lA0`a?R>m*dK^`ruFAv5+nLucWe5efVGKzhSC0uM%iXU;ICz6 zf-c^MlwE1Rg3Q7M6*et^a>A)8;9{Z@Lcj}?R*x*%agfJsBd*2vC#jLu)+;J&0-)1_ zcAAZi%?ZCUQLElBIUDJiw$L$V1D3V)&aKeD!CG8qk+caJRmmI~EE3`xAR-|b6JdkZ zF4CkHS~QOdLyY9P-y|U}5e%HTE=Oq6wK*1U%9jld!2=%z3l$iK@M$3$P^26a1T}lOM=4Z} zNKpMQkwThM8NMLPIp?S?)JkZIvR11|i;F|KPPekDh=FT}x>5nxNvSBUCaWLtI@WqQ z)H)O*H4}>RYz4Cq@*}6^GtNkUF&e&$E#ueiX{qi1U;c$nN4T=U&$QoA-O;drt!}44 zdO5nI-Gl54DMJbzr-B;+eCE~IjgaNPL_ZknnU~X054?%Za(zR+oX7q13V^By^?dve z)^d)A)2$Vjp1*fCwzCB#7%ph6)%mPHCVCmT#gx z_wD*xq%FNo#5dcJO5B-yF|7Jm?uuN#w|wTjkot?WO*-*qT$6|wfcYo#ROaxqh;*=m z@@OPKLl8EiNSToo^M}X{L<a+Y6pTc_wYES*vp;8FOz;+O}F zZb(5dz%pq#Fo0>yCaj->9k$$TT zd3_z7fL)ZRcDZNx-`f6tuDT1Or7aLVs-e|2jllI-PxI=HBJfWg zU8inU=hP3Ycd8Gn&!gX?y{`50es2^2vmt_!SRO&Q41FP>7_s=9Lx>&%Rz>6$Rz~qF zud*&KP#Ry&vrZ3K{oy8Kmt>JdIkr5ww1yr#g8F)v%rc0}I&P+Wd#=;nH35$-{fs=6H)29pu zu^=$*NFo~fhjMdgfkfG5dvS65TcB*C8G=;skBYV=Q-R^f@<8k}5V3GmVJVlIj1ij* zUYT!zGjDKC*{)-r@g=l`sII(>AId&xd%aGqC zTAOrq6i4bGxiXw|;2+hQjU@DBN0O`ElB+iHz(_YoIsxHx&?NsWhHEYfH5e3ZI zBet@dMF8LEeR$x>647Q0BkU;Lr8uca{(C?~%)Dj=B(;FO^g=2_A`j@Y(P{-o&chNO zgyE8ZAhJJ456~VlEatQ@&%mQnItn52iV>9sQ45lb#{CmF>--%1UmjZ`)2 zB-7-tWT|7_<=PF-^Axg_V#al&$89&|Za7)j%{p$i>Yk|ZFADlRx7X_RtgDGKgWXj| z4IxaT-fKn>FN*UG7=$>g%S3*@M<9n}iZxqIuB6bFOsw8Wtg`Zphd@kmHFW`}6#C(G zwp7Y)zf)fC^9xIhMgPoJ)QLwo*BXtdd(CRC(X*@n6txdV?HB*Tr7P8ov!(5SIh3jW zT=kw>Jo-u`x@xc1yZF?F3s2<$5rlpO;-w|7y@~Dqa`7VLaf8Ck7t|szvbwR3$orKr zG6|WHV}y1T9#)4Cbwo9hY?Bg+BU+C)WRn`O)~KnkeB~=6FSicp!%VrbU~BP4!kz&E z0^@gaPwnWJ_BZj2A~XQ#i(2gL74}_7Vs$-%o4Xe+ujSocvuf%){G`AB^{=b`$Rs`uQyUAz1hlt*!t=TjaO*OT(FxsfQT8!Zn3tEnH7;?xx7g>5hu z)m{zXv4Q7ig*FHoQ!pH|jEh;(v;tyjTmWwsxYNncx_BQe}1Y{l9j<6MY1KDUfno zyYiYRPeqbfTo%hl{zsz51A(nn&UGstWXrs9(Qvh;FP}HueY=htnWk&JgpkH{ta_E` zg0s08$>f=Oy18K1mv;m^950sE>q!R?9YR~SztS1xtc2mFFr9oJDvLy?=@$~Q`N+k{ ze63GrGpE`&pGxQFjaQlTwIGsBB@H6#!JTN2t5@RZslbnTE!g!JPdx>K_CGTlXYssW zjh6gF>RsyB)u+_|sa>nxq}{H)RC}%VW)03)Q7$dB7eO0hNQnuVGZL5!aBe98c_2-T zTI;bzqRR>9j9t$P)nPfu-ojh?wrH#DOBnhMT{hRyr8)9JMPqyhnzm*#ESXU<7AX-G zcj%Ak7gS~B2f&-Ke2Z}$wGJXjI%YsGqTISm40g`r#r8fzZ)7ghE5LM6N^9JKhX)J7rGdyQ zDJ`_Idt3MzfTAKtA*Zaa1;BAbvPZIai%noOKqTo|BgVS8EPPSk1I$z6OkiHnG4dI& z{7MUhiZ(5J$``erhNRoXF&J2|t?rIl_z?EfV8mps>0KYoKji><4N#F8 z5TOXfgbO=5B4SUtS}}wugBGLraWeP*E4ZqdH!3AJ`HH$W4i?MnD%k#@XV*C^h2^}fCR%jf*<^OA-2O%A>nr@ZIBBLh;Q%pbqF zcVh*k|46|YCLBY69b&ubIGL&h=AmM%ph|&aUktlI)@sL0vIz%%7y`xpm(wkAfa-W&%-;i-au^7nCi%VN}D@0up_Sj6uyH#jpXz>l` zVfd=$btU_$5vIfuK}7%u?Uov{$BER!{)6p7jM8krB3(Rt9*Ks_WWlJ;K!S{Qi?KJ==Zb zks!_S4GsO7FeS}g$IZtCW$?cU?hpQ-Vi)JBr0rqjmdAe>&;llk|(Te#G?Wgb7~{&h9qy~<^wjCX1o(otX{#?jT7&cf7Y=F>Ze*$j5dNGdzsV9~~LX+>7ojmy?U z(*R3kua!wldY(*vxSl0Q6fbdRu4=-&p*A z1rp!aG3(;uHKHzF?g-g{=lcD0K2OSRH>#Ja?0~g0msRPTYLTm49@@;_s#cT9RYJHO zXGL8-c^;7pq^${7l&8n+ENye=qzgnZ0+06{^;z{8h^xpH(W#*Al%7F{2->Rk!RdBMdZzr(pB6mkzpxMJ>UYT~P2zR5b_;u+R+6W+}@joli{p~Hm#viD%DR_5K=n3-R~(3Dz5=m9ZLT<{#|DrdUP92vp%V6SJ% zT#>!&wuq4+*M*jRiDtX`QZ9u60PZhgL~e!^XCIcdSYw0HV85Da8$Wp%VoLwf7`ypq zIRc02hLwm|WIUqPpXJmXGa{D5h=u{Y_dCg3GPa6b3)`kxM%K`F1lZJetzZqbHODSn z2muxlv`5X(6z`vZuiz$cBk)45R^@ z+XBEI3v5>p`6~%~p`1eD!%PxxtE34S0ojNAD3Z)fcQ&@JT^bF54Xl8-NccEUbIoKS zldzNbB-uM6iEMby^73U!egnCtFqm0)TW$vL+C9mRVSA;8VnO8#rGg$eFNjcUI=M7h zE1WfM(%x&UgX4>edB0GigbUma{*rvw$keOkTigR@pvYiTZ`B@~`g>-iHOZAbNA{~# z^8N|0_u+AL#lY%{p?$!Fg1cLG?Jnu zgswIk_uqRvz3u;WjdAK1_j~O-X9hU5i0(PKIlZ}k+_>>`5$gf>AvbL$`@(}|eD*}- zTYTYXA~zg4ay)9B`qp~zqtokNX~*llTQUjjZM9m~%+^K`MfC9629Rg7T*P#Qo;otk zT8&?0^*2AdOT7yDMV(c|cmEj3)rEyd zfwxOay;N+25zn>!Y&_jeciS=h_;1dX3T_%@ub4WvoGujRa_T^%ULVxvE3Nv!onE-?viVkR zb){Mz45aF4*j%J4l2tPz|&oJiJSatR=;*Jyj@p`x`--627sqX_y~Pdzi%i?eHzD(a#x?n|4R^Be8y=7+tK^k?25$lCOQ&{EkA=)EE7x z2I+Y+wmHBoB)Q6UlSyuGk(^;$^gO559&ySoWwX z)yA6;Mxs6YLT`zW&TL%@1)REi<^tV4GuYXyqT^{~FTC1sjSRw$7Eq!DKd79((&u(z`y_c?4C;jHBPbZU~PT7B& zO8sfd3y=G+Po-X;`bWM2$tXmmQh<6gJSoo;%32|Jb_!eeiSP3qtG#e|v)}=o3b00F zJRB|{lCyveELMA2iYyc|;7F)d4D6vV=3A^V@5mGineDgA>l@1DbR2HKr+X=A&!eCM ztWvENkM55(@`+Nmc|6+i0cWS|ekoccttj{yymMAoz4uZH>b^|jLMD;OI9Ol4ylT}{ z+*~X6vPc=zohx9FPTH^T-0b*Xy4bj@gD*7}*GtJFX;kGo$7AH{jFF7^-n$YCv8ADj z0%jMV4oaS-{@OH;Aa(shcFbZRAnf6wMs^sG<^ZQqt%s2?6qD74 zwni`3UP3yuWSdxj&GMJ$`papRpALd)H@iGHznoL)nNFpmJH<*p9m}q*6=(9*RMN{K z0<5iN9k%f8zpS>pB~|JsYWbIEcaji1R>^15OI|LW#owXodzjx1)z4+J?jnH2oe_P$ zFYtwxrT#UlSTC|tXVf+Qr4_W4X}{F%mXa00EF|GVeMbGb`uNnjsRzki_o=Bbs3Lpb ztQsQDT&}KFcPN5T$s@tYph;wah@dS3Pxvz2lAtK`bbc@&gg-+J*!=Q}Z63xz8pIEM zZ9vw=g#aC#Y;kf4F$W%2iSduz0vALuTnJ6}rc5d3k}mT}eD5`#`-C?Op$5DWyMz2< zx{!lb8%SQy3gPc~Dljtet?(C51?Oet0~S~th8RL@4q;)k*^0q}n09>vQ8a7W;(;oWQGHyUTTXXVMlzcucQXzWM~^`$hk@J7 z8F7+82!k8J`WEqarWcEn*bjs{b~ar0Mv^=wIl&b`)KDW5uHLD99 zv%;RDrDt~SFXaxFh-`B#c@(tV->ejCIr3~$Tbrbe?%bq;Bm-n z*dcRYp-@$wCxu$nbo`25+`nrkrKfNMz^#Ojz(6%;?J%){Sg_uk3ZOs!0qiN3O5u}s zFy&&$;QOQYvZfa19>Bf~QKy@X-6a9!O_cj|zuR4?n%#xUtMWb7&E=-kl_PC3xG%R( zCA6s9OFA*ztF;M2a6x9IqJJ9euDEuk+R@!8&T&`oR4cZ-(j~EBBNK(}G!B~pSfCi3 zdSD(Pd&A+4T^3AWy)F?89J7m}nPJ(7*WQUmxdTa$_-dlv(EJvDgKlt(zc`mDEY7NW ztXQ*}`8G*B(fE)A_%Ehi#9ww^pm$gJPokh$sGVa+Srwe?+3b3G<%)o zboV1hzS~GDXQp$`o=s<9vI=s3;!S>HZlREv`)l$$V82a9F(JQ70fzGA#m)8Y^lW+o zfOGo#SZ5}#CF(&w^sRrH1?Xpx?(UoV`Kgah{jsc`vP{TmX89bO^N628hT{w~&}AWk z7(gf8ybOERYmvr4d?zKu4e<-V=lC@&LRJ=;BupvL!5lHc+U&H@Z>+6K;3xOuKFmOn z+&!x$22DslOs)>U&}y5U7*TrYNdzT@1Ch`9mc&wv^+19}1#F8*0XPbtP?^nOT!(6h zKtZB}%L(!V&k`HiPk-s{GjlD5LflROek1@B%p_hBLK^5Bx zrHyHxZijIKhZ}}620nhOyq`^|&l{~4J|OX$kr5)5vHWQ|Fp-K5V^CSd7^i7+_0lDY zqoq#5Z~LHDuUonD&3}%qG8(PnGzS?ZejI9QWe<=zAq$@ciKTF)L>EJ=j$m7ua>8;E zQ5WBS&*i(JUS~)$?f~M5DUE&71-*i^idYGiLv$5iAI>^P1CV_@9eB%mXM0Txf(q=LTD;eXRy~Ca5uCbC@&Jg>fyQQ*7fFoqdxA#7 z_ren^+!FlNrkVYSGq~A^Ptd?@jC0eg{~O&+#~U9b^F@X@&=MK&rrY={FcA!nu|^WI zF06PFcJ@$>XqoEmCpM$zZDw@y#3S!}Wcwc~(=(O1!Q4OZy*GbWGF6?;-@Es!M;^JV z)VA$*snPAiYw*pfs`gTKJNXYDoO%p@#*`T2ai%jj*mm%v4@c}XV~Cp!U9uY(qN(tg zofp)$#*k%Tk0lJj`3+@?F@VMUj&z3*#9ZMD20v2_>IMu_9$#UGjKmut;5qj0{K{$z zugQ(QY{p3BT1)kq8kLKr55lOr3dwsK1hL^S6D5@{qzjm87ZN*b!=YyHblSkUjN4FP$~)Xs(a6)T=)>GZYTpgH|fu~OXEC}U&TZA z)6Ap*{re!g_q|v}FfuUaB()eKKk^l-4&wZRz1Cz&))@CS-QSGxLAXF-Zea9mk`Yss z2BbOPWel>~ifL?(0yuw1)2_9P&1CY{qhGkuwDXB3^kJovH=C=&dts`x!A)0P-%Yv8 z^Rum>@4NOFoJOa#SZp@2hGD#nLZ*4ePB+me(LkEfnChr>F7wpOp9FMUE}eaGGN%7k z5SjmSrtTME<8z~q6V1o-nSx)>{At8U&b3}uny%Jeq~oGjZ9Q(8X0N@{whr9JI%OAg znS#UtBy0I>B?*=<87*XM`AjVdSUwr`7#gBSO*OQbx(%&xfSqEhYch>s-N0?dbBf3- z-aWP>6eq%6*lF5;Jw}|+x=p>=VZtE^YOQd#s$Y@y6-NwCqQ#n#%&}aTJ?qtpQn#`m zTwhAC;%By{PA%AO~PH6J?f3=YRA{XDdF3}&yL4m_98uwAOxfq zRJ*kZbw0bOW5j$IS&3vP)(?3qA;E`kiXQW9oGNL{ljGRby!P{xV;GNgeR7gp|OpaZy`S#@4o3e~1GYG5(HC^R*e5_zVxpH!>u?Br`a;&ow{odr*m|9nh zljF$LQT4>+*qmBb-<}-DrmoYDO^%(Z1?`KI+G#fF}9>{&a(o@@RnpGvZe|;RoOAVcP8iEqHfWn{}>!?m1?rrUomQEr395Ouyif z9zJv7;@$V(x84XJh089L|H95)dqE%dzq{3?$Vp$XjXS9SY)4$h_&GymWUSoI9xGjZ zo+@4p$It^DJ@9O2H>ms_Vf7n)ekQzPJTMv@-_OrEcIUe}CjRoO7oTZ7a_08nV&nY% z7awdqaQ_1`A{uw!asPddi)S8eFisi|-hcnOd+&abt7Q;B$gM6i;THKh8{XzY#@PR^ z?aE^%DayE2Gt)iidvBK&ML|GCC8T8m5dn#EN>Bs@35qDy-PPSSQ{B~DRXsDk9D>}U zh~j~YCq|<&-tmYUgGW4Lj1figzT*{Rj7L21S3NUtAHMZZUv{Uedb;cQ>id4*uWG8Q zw<_@yo8mFKlUZAula4+*LCe@ei=P-Ne6fn4#CWudw0`eCt%&>iR2`5GWG7V=i|Hu83IH+cv4BEOTo z3#XI5o4g16rQVB^Oy5V|Pd-3CNIpb9Og@4Y*dHYyBOfQ9z?o^EB%dOm#$M*nVD9@K z@>%jZ@_F(FtkC`<`4agu`3m_e`5IO(d>y|8egmgEeG}uIZ;^Y+x5;y7+CJ$iuG&p9nIRg_h&GOM6W(M&7PaNRs_MmRi9dsu)LGFUP zKM*Tl9*#9AkD!mF2h&5a((zDw7(JXmnm&d;mL5SLM;}k0K##=kr=zehCZISpmF}j; z&|~Rw4>^=Ri5^d%Oi!Rsp(o-b{FCWZ=_&3VVD#zqRC*dcot{C@q-S9#_t`j4<{bJ= z`Yd`beKtLho=-2J&!HF6i|BLd#aO|934I>Uo4FJ#*)PLeW?n=ur;LU)qA}$(p()L% zpkq3rlIFCaik5T_)znZ+D>|h!I>-9=z4QutCB2GXO;R4RE;%E~M+ zjkaD&2dkn2QS_IkF=@S=&7-*JWHy(_wMH6m4TjinDqeZaFY9@+U&5RGM*Gj}4 zRIr+NV=clkl)Pgmb;YElcefiHi4TO2;JxX*^Z(0)^KsQ_5RN3>n6;u%kt=d~l~}YR{`u6+t9) zB>7;=rCyA(BcUqOjzyY|O2Olx6eYU8EZ4TAoXlfgl}vhLrEo6puC>b$|!5sT$Ua>08Ln_*o;ZZ ztsh0fR2Viwm^0K|M@+{9q+($rrz`Fbmh*WJ;UWhYGgd=Tp2Qi}dT6a}+Nk5p+z5#$Q` z&vn-+6WVNtd|u*a%VT4thbE4ra18-09h@zQWEE~innRJN+~ww;r)kc78lR7Q+o6jKi&|xuGqeZY3QP&i#1R&V8RU}BA zX02}~7ckS`XR8AU%-8@>!F8urP|u#tc+Q1^?Qa2BG!cfgY@!DUf(>@|R7$h8M03}{ zF+Nycb}g6Op=37%=(#Ixq^50dP2CoG9QsIcsq3y&*a!sUV3s#c@tI5&lIU)Cbp$ih^-42) zP<|LEbYrv`3xqNqq`2-gQ|CE{qE38P#jZ@BIb7oN7MmHMf3CtY%+rS-aQ4$iSoa$h z3c1#`A4-*`T%*sMFbFro3W}-#Sk8X5<$VW9fDs6=->8X+m|R73xXfX5wHXK{wHK8r zU3Q%pbJFNXm9>&5!eo9NK;l6Rn1-^~u}XcQ+61aN0$dBrWS}B|h2J2R#(fU4;Ci?h zs|cRi1;ENttXX1@T|TqEa#l+n^WvJJEq%^3kVWVi`l%&k+Fv>HAlbPY&CydFu%`Qs zo;5i)s?^w3kO*||KGSgx@|`+`CdN@AcB0vY7w}lPiT9w5G4LcdPA?a+ARR7s6t$dg zQCL>Phl0&hfLWq(>{dZ{E#PX1z$T@1VN!J z_s6`LfC+TQ3V1}vrZ--35pTk4(2T(ZvFGjD=c64&--~nF2|e2MJ7Nc{_-51Ve*Oz|X|^!YBzJo%VGD)DDY$7j-aZqD+eUz(8}N z3`!x2q2YQeV9kzb`39a(i#fcp1KH`bX7 zcYos;TGL{>zVen!-RaD-JTe=bJS%A2EeIvZqgTTg`Fz(R03StH!J9&sOghYQG?vvv z_{+^iE0Ohj;qC-y49tRvxZZ6kBfxQ3WQVM>3L;O$oa?rMyX;IWK6d=FnQrnNI9b)< zUo8UGD)%Nz zqwF4VEO#ob*Oq*GDV!ciGFUXoQ9Bc*X_Z;o+f%`EA_gAh>^SG`F)FZ?I6_?xSRwO@ zGX!D1{aO(nxb40o3V5~O%j0rCImFwqmGQ&24fY(tZft3N zi@RT-Z6zZR$sH+!)xnwqSaKDD=C5yF0e~Zq{uq2~!4n2KbQ?}U!x0XZ1Qslx*;s*y zqZt_R6m0|lwE;Z?L;-?8$(#ioFjF#tYQf4wX5p7`t(z%bghI+*&V-CI5LbX<%1XEg zuMlo%)zW<0HJK`BAnJn!lQGDJ`;D8A6zDt;W!;*Ic^lk9^%roD3E7D^VJU`=5R{%^ zKvuL14j;ca6ItbN^;7hdvzARmC z5b|0TaSJScSK>x3rVgP0m}?GFz^NI6GZ%FL;DaP~&BR`qg$Yy=xI!bxx&}4_z6B2N z%%HJ#4xUi*4vWDR`tT-8DDE{R-azyRM63WzF;H{n@B{;a#B*dqnLczZ@UOifjHO?9`c zoTw-O2mk;8Nh$;2{%cRwfh643|6TpRLsV2*=3fBAzZ=;9zzw&z#}gA45&h>$|I_&Y zgBqw*PKloBpJ)9~%l$)N5b=oK$j0E$Kd%!20DcDmz$`J}vD3^99RGQst^Z;m|KsNe z0AgnCZu-yb{r8xA08lq+=GdP~a}xt&01#{AzZm9!u%TQ6Wt#sp|9PkXG~qu;L0Lf# z%x#?906=X2Y60g10N_DrMw0>0Q!CVFOT5Ad|+r0 zIa>o8695o5;=f#!fA8n(=j=@U$Ij6S0K`iQ0Kn1#04M=bSTG%KSw{N$`o@3&9H~lyof(3KiOO{gHY9WJTpd@`3yM~UipEFz z#)XPjT4Fn4P)V9y!V@vA9@94eRuf(F=<(zvAPhhF}S+`uQAf{6mm(4M5oyEF^;9QVPcerBQ?~Xw`YXejThsV zSa*Qzlge%nRPD~E=Aba^(8?>&Zj42Pys}ta@(ATkuzAd-JkIVgE-OjNL33KXkVPVL zGl{K@K34d!?i1e$iqP%XDc&LIK|pxlM_*DNXDbT#GX1$jmz3JMrMI|m?S-=<`}spg z84t4GYNd-b)mx;bm+rsV^-(vc}Xo_(@A zw7cTFfY;ksey@O)TWI_N?^isZNLKY=&%ekt4E|boQkzjn>LJCg$f*aoS#@(FsPPuvM&v}=P2XD7hh3FOXz zEZX}A6TEf+aWohg6BNV%@EGbdi&3AC&7P-0uae`s(Xos76yvs}TgSeJvuom>t{Z~!L~I+n zalLK7v3YTA@)DKlbg`8v_cQnNMiXB%&735jp<^+__nM0Ej&KhlP;=n)uQUDYZU4p# zV7IKSPN*a@F?aF|BrL4>kM2$HiH;?g%5z%{Ej4E~l}ar|*UFA|Eh+kS5i0>fa{~<9 zpdfxiA}selNRlXsK7E`z_*1O7;ixG$*khh!#%D~NHT;d$88dtzQ&`?-@>9ydLB9sGnCSuSioKB`09@1RlW-nRs}V^;8?C zR7^ISFz3wB7o?FZvUw-de18h{Uc=5NR>Pc-Csm5KQYyjeM3}}G$&fzQfT@4sWyXV+ z9lmj~?}AqR4hHWc#eYhNBcaW8P_$$dCJ?&*=oAryX-{U zny|V}pQ4(QR~=j%yFNA(#elx0_Sc@}>y}3Z=i3s~wL^p$xc<9Sr9kkWAD9nL8#1{K zpmUXK4V!fgIl%C8f}}Bo0R*V*>Ws2>;;aX9Wem} zWr?e7$$F~koo7@sL_!SrG0~I>cEWr$TGbx4p5ayob_5vulicPxq>5k#xM#&?Ueyt^ zDMUuJ@Gq-%pWSK@0knHH_Dp9S{&z*kMM;;ZT&;_9P`ObC@j{w4jV#ziP41GlNO3&z zhZ65xy>c=h&q>F+LWpny$}6Tisk$=aBO*H1F@c~+l!!FqFl6|vq2xO6g?6HK4sTbw z_JKZ{igBxm3U_$;D4izyK!OIe(8!FTNC1K<^)#q0Vu~~rjX$UV;+D8z0;M4}k+^~I z+XM?Jr?}!gJM*XrWbD~ps5-wKl;fX-=T&o6(k9dQg}x4XOxAqIw?m0=Vr)6u$6Wc3 zdkDIYXNRdyFDm@93d4+aQ%qB{>g5a910AJohpws>$zsH&aHiISj6K?nbV?EhY8jI{ ze`=WE%g=Vzzo;iM2RdUOr7nDXE<$X(b`K3Um+a58kEsYB*j# zm%V9a*MpW;g>s0+OJ*g~!I_{aA`#v{UnmReha~jWw_pLptkQnePzu7|@gAU*;7C{`qo$}J z7hD}5+f#)%lZNR9tUbU(=>{FUCRGkXEXE=VVW#2H4$Ye8q5SS1;$he3;DYG(=~Ww` zMBeZUSY|u!kIyeQe0)AV&vQLn0FT{Z(2FF^iqyb2fUicH;zy19yH?p#b!n4}i$+WBMuXMG`qF*@wIXh~aFnHz zCwgh+m*KX`g}X{!vStir6q5NJ7T?BL&(~~vDSh5SH69m!%L%b=%3~;Bhd>sEfaf2q zbmYH{QiFYb!HWfGEp^IWrZdSFmFDYZ*OQ8fp>!;gMr)m9rLdw*q~@&JJ=cbH3bA?4 zR}pG)~ zh<~*EfBAZH{F-2`+(pgS9vDALX-R3B|A+uacM|AD$ZHVPHHQ)moZ&kiZ3M?fO=HOP zAATTRWz=3g->VT}2Y}nhFA^E27;F-jc(c zonE6{LUX!mu{)ik5iOg`Z&|9C8IH=rs<4OAvh(r~lE~OJ_KG!nAK5pk?M%9}=UvPH zp`1^Fix>mdAJ_6n_zU?KK$Rnm*MCN{w_}TW*E~>}PoqA{fybn26+K!_MIZ7XO( zrTi{3vxIj%WIm^IkCIHPM5#V7DP2PNkywv4V@6>{k-7GkLDu5ZV)gFCfFX_5)U1|f zZF(%}*wChBG!ywXlIhG>=t_GMLMhtyQA6!gNx$*P||I_@j%1=i$JH% z!UUY>ucjU5Jm32E^G<%8uU%I98d=oszDAx3F=)W9vdFTa1nv{9{-QnB)3W@gpxFU} zFDB`|?bV5zOoKaN?oaUB9j-4~u{V%_fkdo`RawR@ z-{bi8P0yv>7((a7#&=dUyyZr&b6#92JVCdCp~rhkbsxHXxZ5?^Bjl`<*y?~-EmFXy zK7VKv2M_6%E+nqqtUwhyLcj4WObCCTKsdk}s(tV8gou2o{4$)HMMlKjEn(ru@=3#R zr$aS0)5vT*CK}mYTHiyb;*Cug|c3ih^WQk(5KUbbW#fi)h|ZQGUOju^rK=9(a^gLe!N zMGfl;fE(U_vk*K|Fo!u()xO`cKURml(z7h+MK&_&dXC?R*I6;?w0&4M|Na}Qq(`n+!`73W1`xi;vVi!1tSz3rZk{b_y z5e(-Zl}5$@n#8pqwn7d>dbBdfB-0tIn@)n6fO@T7KZ2e@Ok}v=*e$kTk5t(`=bg-- z=i!G=>zhzG@e^tjx4N04RB(0ZseJtRLIFMXFo6jv9R|9q)*KO=~9#SXMeV)3a1i>xpf}ow(bOL`y ztf_Hn=m#EQ^L*11Fk~!X5Hh?^ZC?+P$ZGb{5-Q;ExWo4)CU1<$!N2nSr1BVr$vT5P zq|yqbFl;whTkQ{4&mSMpA9FSHZ9+@^I@w*02&Qi;u-O3ab(%6WY^H!+BjR%tP8{Y*nz_<3kPJRPbbkV>|ZzL7`wKfB?`L*X+z-;_&*9kPo1Y#&?~l(I-9KMG zd`Ck&VtfINaKX4q@>kE2#3&Y(nisn%s}NAb8V%9iAet!r!j0imR~S%OwDbXwV4^HT zNc_Ng9Z`ZTix5j=O9_mXmWeh<8mZ+Y%1`RrDq%rFij19tW?UYUTZ`ds+kclnmVQ0W zdF2Uht=c*dUg%!^jAL^uX0CeW2C8ZtZ8<@qTTfe7(l)I@fhB(UH}c*oHJx5wt-kFThhefXGBkSxD3fn(s^(T~tnlRv`EcL!1_^7`KU$RYlf>ZodI7wMtVtSpMvzC0tSGtAe)Y8U%D?_C@uAZzSMOx1-w;LI6aV_sdBIdv=bJ%{ zz&C<35-AzoJ&C@Zss z>k@8^6q(j;+c(=>S9@L&g%*#EU5ZSpFuD9B-O`yBT1u)F1(P6*Bb@LMgq0&mHa3Ml z2^H&rT47vd6g&eeH|Re6LgYG!M*IMM>cm}IjmVrD#& zKCVSfjA2@BUT&HCap8Dag##}|VAQ9CrIrJK{}SK;AvjshUMet?ywG3}iGftrKGKX- z=2(aeD8ufJ0f^9`z#MXI4?^iKJg0bDv5GQPFZ{X5_DW{SD*WN3xQ)8&yZODAV)~D7 zV0mqqS>*%&Oxb1obuB`Mm1pFsR5>YK;J)d5zNKCrn%UD3T-RCC)Y%aA_>KF@vZO_R zVY@9@$jxZsm8Oz;fl2g+j!rM;VVbi78nd$1V`idyz4YMw!B1Y*Bo`Q}tD#g;q z;>fHbEz)j*@pdIPAH*I2Z?He3n$!)yj3bQ7H`nb+i~isRy$>^(ezrY4LT$Im~E=Q@d*6P3OHQm5a4F!ZFIU{8q6{Rb^ywuth&Qv?T^; z%f+6)(J2VFqpLV~m0vWCf}%gZGxp)fUlJy<4za{pP-kd{uRF@n^Y1=IK&!ht)eVqXwK$+|h)Ae^FS z+Ux4wbae*0_O^y|(S)_2x6FckSziwN&Oj2C)y%U}NdxVe%6tlK)ewq08?q&x6yG4c zB-CV~YNN7({+^xaSW$@GVXGWvC9S6bl~3x`YafWV1M)iQmiae;mk85u>NrSc4|*@{ z4>VI71K1eXp^JZsI*ybj-Mt&WOfW&=K%zqZG@9WqT2uXZtCZ9_RP1{};^yaTuA^kplwh0vD32-E%UI%MCB}fPvkM+d>K4 zxpw?1`PS@0%&@k#lJoE-9Fu zGv!wUxVUH(1-5W3OY#N^-fSi>oJS(vYQT&qYkA3N1{?>|@KPRQ8F;m=y0FUhlg^_x z^Nr4fV0U=VRyP_?2gS~2cT>7AA#Jm4mN}YP3_;Jy>)nnOM*rX0ZehOjA6nmEfK~&^ zxpMicbmB-w0%Mk8Ta0qi(4lLO;fjdS88d5S_eJT(_b2QWE%WieC_aRnN ze8r^M8tD{WrBTB*Mu)|Q$5#2Nj4mTBquklD7^X*lg|vW-8W=U`l|Q-i75j9BVK`20 z?EthF(c>**!>k4S@Lr3*6vb?M9Clq5r2wJ`5|>sOvciN{3oq|{4NA9$bgxQz^CPn_ zZc0oLI>~`BB2-fJ!ez~?WS2DAf_T1DmIB+1UpnBbV`zGc{zhDqg)Fh|yhW@R|ySA=(a@=d# zaMrEK< zcV&~j>grmp8P$RbBsov2m$##1bgF9iehx3Vsi$hY^v{CU=kT?mJUc{ zg7AWpoAo7&FE9>M9aFwX+W?-_;4Gw_c~7~}h&JmH8-3{<8Z$1zK&pS0xEQWH4|*K& z*|5ta=ygMDW&5enD-0aAg>w_&2H<`KirsKMJT92ou6HQ3UF$m-x@INe-G%p1&~Lxl zo<{I^j%z;YyUvtT)@Z1OGQ9tGA_PHD2dCzsgA|fo%F1)C;#P=e)skRgA{A)Rl!1xf zrxm;gf)o3T;6@^CPFHBDJ$Lvg#YmVdgXD*kLFV+B0Z(N>`9jAGh)H_Nu!Ho{`69x^ zbFn`(9rmH|JbVv%*s2``~Q!J3nJ6)M={GYk~!-3)^f- zTEo=gcU`?R!l4W210YEdH?)!$yq(Tl-2^+eZ~m>#&M#&QpzLg9nMk0<2MWJ=h{X^yqTWf(XgG3)`WPrNZ3Ak!t1CV#Ts7^p3Oj6<&oa)K|7=C|EM2AV(Ny0nw8Y0_ z2Qt*kw-I=fJ?KoS9It0;t7j@_YRmXdZ^oHp1sRF4uH%0uA_09Z*2%!y6+|_DF6J2M zW?f)VjUG{40a*qmFObTO}E+0z0{cT&gx%MJ4Af zskC(5wQj}rIIW^yLnZT<+?zd@>r6gDVFQ2p1B2oLhNwg@lp}^KZ4^!Fy0eE-|KTRb z(dy~QMd^x_xA~`M^{8g&5QIF@^Eug>OxwuF183`0l2N+9>7T$MFCo{5Kju))%$+@3HX%pQDssr zT~Ve_y@;5AKoaOI@Ljg`05^YLik>0ZcW#4pcmy$=Y1ogMia-*!<K+&JGiBI$JP3G(EH)+BeD{$K~@9ncY7820-NyIYPJw8qf=w0D|H@_CD(| zVF-!*va~t_BG80i_dJpjG?%XgRY4r9g%udt*PfqNZL7m1oGz7`h7gI+W{ihTK3;cU zQ$`W1wY@TtXn1&}xjM22bqWc1eKE%LM+xQ+WSKCgES6lQZQi0Jaf=02(7hWue;T${qC&EQ z^ZH(WuHid=G{ccM=0rk>z6aGj?($!*wBq9+1Dw@{;!$TEA?5IJ?cdgDk=v=L3OiOQ zUufvk@Kw6 z6iUvGvPZvS$}7YT{kpC)K&d@-4N4-&B4GKZ?TiO!;&R-1h}HMOg}EbIDgj-55RW-X z>;1?trv(YEBqXiANZ%YNxASq#quF3r+|Z$$!ywpLq3wPZnp4<(QcvpFlPCVry^N}i z(wL1}V=N6X_*{?tH5&5kArz{#Hsf*n!kz6yc)1CfxVGc?NCGyh%Cv^iGNZb9SSeFZ z&Z#BKB>~dbObZuH6ll)ycuDDD!>YBH?jd2cZLaD32Lxe$2IY`cskAYTlIxL?Ugy(l#aF0C>! zkBTvPN=2CU=&lm>^yb(`LmOMbtb}`zM(AYP3r8*o=m>IBV7AQR{8uMToC5ab6$yKX zjY^PFEN!ec4=r<3gmRb&y$U4DJ)NexxvL8R;GB29j9^|!SWr>$3>gn z?lr|ND03k+_S5X8r7|isl`9sf%huYkk7E`n_}$L!S`A$WG0Juvw*54261V%o=~%ik z9{Wv(tmDI?=A)(@KD$NpqMhb`)E-%I6{P7QnXED$swZh$h%B8rJe20WdiA~Op4$E7 z1{IE+UADU*7}xOc_KQb31$jVGoc9{s38fM@DzyC`S(-k7&3<;-b9}#U^jLq(r=rIc zV&r;Q0(rM-&J)XN|H{%_bA6kiAC7#H>asrief_OVu;pNLGdoxQyfgJ|`yKlFJ3;&3 zOsvZj8qEX*0!9LIsf9~Us1mK zz80{5DH)@gOQ7!0(7kl&po7xYJ_(pT9A}Rc5wq{!Y<@XMi^slG-ILT)Q}g-pRgDgc zPO-~HX#E#yMmkmcbFFsoIKllkV?K6zTPn0ta`{+9_DiFNMzn@xCP{}f+Tkp6s&KSI ztBRE|Hn1X2%pI^*y{croBIK(zx_z#Cng@Ewfj)lw0sq(D`xnj#0hC=_M%z9q*RrlS zJoyCHkHXtn<_ve&7mn&2!(_zGTf}7}h}zqQZsDAjbrV0qL{Fpr&%2FU6H{{eJhY~H zQ^){%J2uu>bS(E5yD~jmIS~Kk%SH@shh5pr#gk8OQ}gkVeV32{8bdonjTuz&Qk3A0 z$`&>N>E>1nXY?#2Dsw<|YOnk643HaLTaDR<%uIabv78Ib^@VVY{)yIU#c-ahyB(1e zK@i=`iDgrp+uDRF4(AqM61_ZLnstN4*d&m?!`HNWcejDbq>DY!6V8)vZA^^5(RHEE z-i+m^JD=Ljk@nV#t6_@kWvE6ziM6)A5bj#a8YGV+e@>JG2M6X!@K5AqUELjv$|6oK zgK@}G3tlmr#sd8IdUk^|R;3jmJH?8>nQfPI*9~SxS&f$=|A^nCC-l;(p$1ENfTK=* z%@}wlBdON%-z(HnAfcv1PAvx&lnxhn)D*BQH>fM{%iU6YbiV>xmXUpd`2dN|5Kr@$ zsmnvLXp5sq3zw&c<0J>>_9Mr0jiWS&_Xp@7B)7vThF-I|0*(6wZAH!fbwmP@Nw@aTZ3X+gN4yC9+Nt7*)67$SK zVx0l+2?Jq_pl)fVR7S)jwrb9y_v~;u)8Le$}5f_;WZfoR3nW#t2bLnWGxPHuAcZWKEehsL6zA`cx>W)iR`%nvO@88#nWmDxwia z(PBuS^iFuM^CdHyo4$>==()dmLM&8n=f7R&geMmx8Z3>5W^0>T*jqz<*Z@@Z+Ub7uhdj73Tw`2 zaA?-~-I|UmEcj-~P+XA5wt**l1t6qOQD{J)C{TEu{5-DxiQs9H)=aOW(6ddJByVC; zftes)A~WKGeK2fN7_ZjSl~Otq+!A0)K~v0}G44LFS?-cF26SF6?nj4-KLiJekrT^} z!{bP5eT#o->di|Ih^i_?{guh1^GUMMsBh8L1+uyOF59mMu}oU2bVtBa??YDN4y`k7 zJ_C>M(VJ6=g*f^xE|5Sy<#F#MnMr+n@&okwMoQ_{#3Ehv+b&}BpeJI5U+-*JV~}Jg zF+p8)^Cb6HK2cvqQz-5)B1FT1=fXz_h`fPdL=f{0#+_t9Sn5(%05(T+jlR67TM~lw zlej`8pjY5T1iP4dAtHnUQd|^?4x1?1I2n7f4o?Y17 zYtKV>$uFCMwqlL)KudVui&#ZiMTx(OlE$GHModM~7~d?2dN9?*v*M%-nm8(gqs7dA zn}yNg;UQDWwMP!K)(C5i2Jd(jbo2mjPjav9Ps6S5X_YDLI*tAg`VRuhbsk`KycG!2 z&2SaQ?+~y-PNW?1`&R(Aw$VJpRlNX)a_6DqM>)hkcKzGnNs2^kPs%s2s;xsdL-?zR zE!5#r|J;d4GiAl<^}Gz3mdaMRj_*`j_RI!TwDJ>Ag4wSv?M9QWY;{$Y4yT0#E2$20 zd7ad&{VAyw2#Q*%qus(-->aHJ5Zm;S_&WMg zq1Z@#-7F>Rsq<4l2ioF}R*qUfQANts2)oHBI_wgjNK+QAbgjXhw7K6W{DD}dW~tCNRB4l8CY$-%h$3(je&ZPn@f3!x>8~gIa9se?P8>i^oQdOMTmwNt zi~l}WVE!@~Rf?9fr;X0E==1^5l3?~l)FJ1rbB0<`hWK3faXg8|U(Np5^Mwx(!nb$5 zA;DwG;|DBz>QU*T3n7-D?gq=h5D1pGo?~J&RaAfGP!eRAmPIn@Sd%P@B2yNUd+n_H zp@d?(OtYhI*>0YD)V%l^Vagr{!|307*DKXzk|7qcVp$AXb2xEBy#mm)qlWb1mkwXb z&JTEYnn5ZN88gaj&}e8&=5iJ>^o97k0AHveJp_ZffNDA&T`->h4hmLbDS`9bonR~2UY|;_K;7A>H=S3nGA<`{xI(v8JNHDGA!&&@ z@vcj?j3bn(y{O1v?CmA2OIcJ{HAZ>={^1xP_y59b^7GUpbKTs_45@l8F!AgD(*ML* z!Wx@xFDNTN!jjB$H0O29!q9SuAS3;kJeAY2B>{KhJ8poZo`@L$XWj1%RNqJ2mQ@T1wNa#N&dw1txNwM` zJj4^=S-t;N7M4UhM|1SIUAy&S%hS&10x2@R(iLCVx@tL1N*Ra4+^utmGV8WLule^YER$=PZO|ZG3Z--X!aTH}B{~(bpK~ z^@0~aFhJ221>@Zs*AH2AYWb~~cX=y44Eb-*a*Qjf@!5H%{U_8)gbVrsz{g``8>gJw z^C5FP|0Cwov#Vya^ns9nz%8Vfd_f!IYq^Bgx+8VV?ZD)sPIOyv0qLL<+84rRE8! z=FDCtWry*zNw;ge(l>_y$G6~&c3Ta5d0mE-8k2RS$-v!r(usc_vbPV5hoQdS$nHmW zn5tIpHK(egbzjD|z%-fW&(dQnrPjLf8S7U?i7atNdd$UG!DU+wSjKKpiOPprgi;=5 z_^E4P0aAL8mG{&$8vRQ>9I}e)5%(~4H=N zQM2HZSriw?YN{fDVWvfq)#9E%p+WCwBL>i1%IqjYcGUI0J{dF)H)`Mq3g8`{!j4ts zgKi3FTe{OfU=2+(esz6utKM!ae|)fVjF(3M^@(mmNwu6_t)+)qTd_LBp+mTbXNH=T z;{5zEi25fC{63{-qgDxyv}a;cl66i=3rzH|N13ON^k_0MVl-mLjLf)V#|7;Irat$b zZYKNpOX;coBV#^zg0#37KF*lVZ1~6&hR`*q+=hZx2FISFwIU1D?aiFbEGGVitoy#R zS21-gez#)69Mk+^|F`v)!;-|#ubp41tf60JHKBH*uuAf6!uUzn*D3t55pfaJnnQGL z8XJ28F+I`&){Gbm-L|(r8hcWLVUA0W&b^u8&+0y3y7H%xWGjeLDUvrz3(vT4c?BzK&-)*V0fUB6Rm6vh`-&-~dp9pflhzL$G`IGAqS zr?T03zE9CUpz!YSx>XHbu_59lzQ{hr>g*J%T7qLkqy{%|uOlS+t7@j z;>DXrcpvj^r{|187?n*#hbP-BfE}4q6c}HK4kTiQ3FBJ%VAj8p;+!QdpAHxiwR$6M z(Q*)ZNxd}PBwkBy#rpN2_)x#W)Pwv@XNlWkjYIV=)H(oAt&tqE^U8~G$ETfqdN@C< zCu*}^JuA64Q+;|Id?ULpe0(Fnf&$A#%s_c_uB``}@vcB>GO18O-Bdw<;u7zYjLMgpV$?)jWWNZeMBmDNlN6^~Zy6(jNz zlj{f5wao|;)axRf!ZQ&B*OMoBf|zHTUA=NXISFwbc;h6DRmJ7E z5^D- zvtVe=Nru81Wl79;_%($=u}2F-g>M){_a4VWjJYlDR{Z)NJvK!0faDcNET(Y1lv4Cv zh=LJ!YIV(rJjKnJ{dPBKgn|;=)n}OJ$0{sRP!Ohq7gI})lh?$Foy-y(CR~(MRv$!W zD`5!xnpDClhLJ6v_)7yQM46Py0<@meBZia_Tr-4Nsa()FN3kfRsMkbva5OQQ+xQb# z&-tr4a{b8#pAnFIAk~?`JcqQ4@b3Q2AI#7c?wEP6ut&Eius7BJyY+bmGkrKwY9Nav zUYMt**LhH)JB>%jWxPj;a=*&REL^tIqQpv&-*Fd{!jS6hp7rF+LNW!39W;8g_zX4z z!~)Q6)b!ihPc)$>=f-d?fmBNNR~yOrTW7Qo--*A6f%x;hbe%lq_Q{~b7F;S$n>LAS zm(DE<`~0NkP`gBF1!HwaJIRD8&urP}I>Wp-37177{p0uDuTzT(YdLD@2FSYarP1&E zV9hDdmWn0y$8y*Ng9%uf6>b+=jq$rw{wt=G>&i5blC!oH&dQ1$O!-i7HB)Mhf@b9 zly;mhs4gs?NM2w?MSfn8JG|Om_>k!U{G0lCBe1k2yOKbp7EITAQd*1Rnj1pwzs61r z93;-MQr60gWjkwNB2D{1ky`Tb{OJ1EomKc3O+`*B8h?!vPNMjtJV0J+976B%HXh#2 znD#LO=z3IvE&c95)BAgx-jF6P;w0>$m9E7j+ujI|Qv#4`X$!D>%#Z_R`)>xDj!8p8 zOXH|YB%xiU9~3_Z1lXwnZB>NdhWhFJ#a3l0wsFXSIa2L#D~BmtEU-=k87|3(FJ{3S zQV@eHC&ZiB<-hDJS3v#_IKuRREF$o4CTwRwEG6a(B;^{?Be-#1SG%cEJo1X|QDg?X zp93&T8g}bB#05_85RYqtZVz)uNrnHiB`~Vg>`_l)IoqT=L^S?ApSf8Ttlq$33RAGx z=}B(5(<5F6P?m(~V$R4Q$v!}tYdT{aj@C-&!HxVc;iegKj=7YRWDy$U&6y2sXMzNF z1KC&9;NK9ggs}D16w%9+S#5Wn4iBAeO1^0=68)ktth`LSL8f~g>i-j@QXcMUpBVp973XYy@`3JSmZ%Xx|_#BY83bf7=%0f zcSSRlXsHcU9;Vo01J#;(4GD#ne>JYpLK82pS2}L*pg$B8px=REAjBi^Os8YyRNI9FareLv!n2IRM&* z;BE_fA0W%RhL7uyu44{&s6WOiEaJo5%BDMpJ9g`}_h7^_iM`emk#hT<7yQf?oYw+j z^Qc;a8+P_qP_q%LyE&ZW?}p`3vR9x)xr?Pk{_3!@fm#c5Lyn3UCPg)kX#-{4m})Dj zCYmEsx4A^;K{{cP)-JH5^lOMMnF;p~gM>J7dc<_@tTI}&d|zbQG!=r@F?gu(QemVW zDwC{8AIZoZLC_;?<5P~)6*7m9#1c|{$T>UDds^5!JXQig4yq=`8De3G+~ND=s(0@4 zma%QBk?mjkNuTV2rBs02?_kNLcx1Z5ga)JdaoeHmA{bG#@TU!bsSLIsFaY86IEDK~ zzi(D7UWf+X;Uj#iwla&qcmM<@TrTZ5*}2ReXqRzd-3gU}R|@W8NVtDv1$m_@p-h?= z>st<4<@cm6wHI~fR4A(%bpO0p);~pf>AK==FbnbIvS;@`6@G4e;jYHen%aWctJPF? zoIkzu2;`q?an&qF?@XG(?j&7hq4WiEex_#7S%K1|7`j{ccDv;Bf0@lzP$^j|-#Lv0 zLshIC?(&z@?wElo3ZO>ksGHP0&)OdxhvIwq#-kC`s!FoTytQtsdekddRmu*-MwBQf z1=i&%ri}o%Lz_m&r5RHc zdpo)=j*65_z0SAj7yOk{Hc^|B$fRLjX)v)L|D&=n07eD#-b@tVqTRfL4u|+ua&&P7 zRXT4=J&r_L&eUOjP#-8AnI)RWcvNGQ)|=#P7^xdKaloZP%~m3uEa(l@*Sc0056oUxZ_%#lIUea~o31!T@0Ol5!eIu+ z7A~>`O}Djw_~N0gmWPQC3puVQZrTtWl5$N7<|u>Q6{DUPfB0{u`=kU$MlV^MjPit< zOwj3gj8no9FFJbJ=AhwJN>D)^{kfQ@@2mN@mC3$>{Cf;f^pn=oqOB_4O%005LRgpO zI#%?yY_F$pnBB?nng8QsI*1*Ot#%yU{MF69Qqq`C&!0zu2=ceJXN38ND?8uJ+&hqp zv~Dbu8E$Xu2e18MY4G`mNCf;XiA^xRTZFI<$A4SFA5O`7w;K8b{$kud84 zq!*Vw{OlICcoe5Ow0fK!vveC-O5K`GoT#aqQJk8?ff{vMiE#)az^hp{W&N(^Va?iBds!FMjh|mo`Z#b3&b1&WcXw5#lG8 zyt6xMJ8pW()zoGYT8l0gi_9<^CrCxSW;JyT&b!o+BXF@%^g=Skrfy;2euw!VF<%lJ2?C`iJY~VyW`i6O)GWVnT?Y0Er z1g${2LcRb-eC6FDZ)GtzD1yy`5TIwE3D9_nItjfLUh8jF_HYW5!_e0`i+DHF?r*{% zHGf0IHBPy6#4MXS6>i7*E}&uYM$S7&hKcpmBXaOg+8;lBwm~}ZJD&JhTl5wT3U;Z^ z8*X+lNbceeibZO96{zBp-5R2k{zCjLXXX~iJbm_J2IU|1JKke+yTFbp+{2DZk<~IcwH_#DH!LMiL7=B>cf;dIHn#(ci;y2)sj7PZ z)R9$0c!yAzAITo3jv=QHdqbW;O4S=x zgW?SP*6uH`Sb0buuUC{rvkw}{POVJ3@pI(2nK@v7rA&~!8yR3XICBj#Dp*0IW;$!d zmgB1t+g!urGEQ~rd1SM)EehF=7EaT#&5bK*p35gJ79)$N*YU&O&~d5z70RB)FW$Ka z9*!6Mg60aO=@Pi&(6F!4gI|(4rQZkAeVf^f0lWK05IcrVw~+JFU7(hAetACb7V*k+ zD(`J4BT&HcJvqm4Ob#2~OJ=l7c>dD(ZS=Y#W#?E6)EG`o_= z=U!`8<<~gY*PZtD;_u>j6m}Ip_guC1m$!X}V6J_pu0+n+zba;HVo z;u*@!z?97WwrTPxZA-`*>EY0x=kc=VVa?vm*TTcAqGd;h3_HJUlAtoC^gkflYfvLyuwi6@R=U7mAx2JV7-r;hPga-gg-_gE zVgdz=)zoT3FlcqVZaO%jIn`IQs}(vzr=p@%ZUi~N11 zbGyZP@*GRLtDlw|YV@OMRkY>Uv#w4)k3@GKUA3Awj6mAj1Jq-k-2@gtz%CCG}_ES?m7*O+d20GMc8HtsxP9zEb@T9G|QnsXZ9gW@}B=REcV+c|ei@ zq}Nqb$r`F5!}+SI8t9CA$!Gi9wb~y+5m8P1Z-WDa!GR@!@sey=u5LQEiA81^woa_e zYqdYD)ecsxXm0z?n{W1zx&8kfM`xFpAFfuXs?~=z?PF=;O`3MFR(lxkhC;Pkq}6Jg zHri(gxDNVPnCE=|fXSaiu0Z76#h32XiZ9*T=g-p>+N=C{C)3%Bmi9lB7KpEZO^@iT zrEPznuWUgFGz+e`+nTlgy;gcL{U7TF1n}b9gzLs@%sP}4L8=FhjqT~0h4IWSQSMMp z!Qu!ek2I&z4WsaOc!0AVe0H;29JVK_6RkmUa?vnXrZ$!l<8}k;R*trJpP0C8vbr)o zU28Qu*#f8ojhs@IK;7EtX4(})F^LNo%^dk2SrVjWt(!6ET zbop1husCf+#L@EkC2nJ#{`@+yKe+rZufD74w-r$n6=ql(UzKCzK@l&xN-pnZnx3*} zuyQz3XfX9w^x~<@>zhk8&(Wuil9355EY2zUy|*h~WzIH2-Sw{YylkaAANH3HtwhsE z&aciLzV*_5#`cf)ZoSYSF2d~P`?HKfjglyQHHN;~8jlA@#`BPg)A+X0(sK0B#v`W| z=ig8%J$&lasRQ?*#o;gCT_oORZ0eU)Br-9p|bw&{}GdnHT**+Ik&*2=kTNR zs3@LaC(QTh3pvt64ERR+<)O3bw+H-4Ok#9)Zf?`uI&2@mQ(4;)?I zyr#f+W38O1Na!kM183fl;X8Ek_zrZn^vp9-jnGFKZAwy;vim>vsrL|^k)%i@pCqDi z$@}?kflvW2i9x%VMLV%0e}AajVN{=q50uhkUpgoJ{7KWupM2_iLCBojKKD($4!YYD z!Y>QImfE(yCj3X?{}f&k{x9Jt2%{ESK$oMF=pOVI^bYhSdKP^GeI9)+UBMXg%`Es| z8qU}pa%}~^eMm%ubSLFB;xXz*-C>WrRQrQw8cP{QehCjjCZvzBH2$NN#=|e6RWeu| z?G8j)z?W`x!ybIWuXDzuwbO9jr6o;JX#UHir{I!4FWvhXTyGL64BU9_dB5D?PB?RK>g!; z8+Aq-AMt|uLXxygM%xPw2YlHT=yD=-z(|?nH-)2(ilh!{?K~I^_&kY+gVga16&_bJ z-PQ=W!YUFwh^_MN#KLsfq7>SI%E%oztzjBD)gMKd^7w)g0vbiGawnjl)@X=#0j}*u zCF9Eg}vL;I+_a0izlO)G#d4S{LQPCx;q@aNBAXm~gn;1%Jv=L=|D3lSCMXqhAf$YkF z-up7qMTttv_F*{`Wy+vfm-#Bmi(;49lByd_{z?%0Gi%e+$7qe0ib3WMihvSDIhMsM zM8qOr<{MGhZ<2IN=359k3zBi=k=ZLJRZxmmQS~*7MKLIXF3i+PcDK ztbaDYUe#Cn+kd3#64q_W@Ed=XsYq(W$W_e7PFmc^f{CyU!w^vjIv$+&YeR8A%1p zBa&9z7d3#B$XLaUNoK9?IRI3!h!q_p7#&B`91l7cQ=}1zK(AAg{aDGXRhb8x%LcHT z7Lf^Q<8l?bbtA7pIY^SLO_{VZ(5G$5sTC2CP_}?R2E$XCnW>a#K8@Ur1M|gY6--2_ z*r81osdb5jb_X>Ki=||TdS-NR`v0TzUaq_lb%{6oB{cuDRSf-Aavq7dzXTya?i-%{+dgPXz ziZnf8?yRTUS>F-^_FogO60YGp+U-PnMRDp4;QI=pbW^&~NeZN*OEjDo_rvjR4f#%{ zJ{zBn*6QPNc{_VPKKH^y554fv14wa|Y@?o29A&Yco5}s(8v6IJJ`=&HhGocrYS8L1cWOwb`hCT9w*^wz|7ED_xw8PvCqQ*?XV^M zzm&ZPyrx%GFZ}NPl>PKx-rmdU=k4z~b7syt(`U}qB$H{$WYQecH{{kS4$?pphK&y;}o`+euU?dfgrwbp;_wf<{( zQG0-^3s8Y!xIpWrV;zL+L(b`hHt7f7dgjbq&%CxgF>z06f*D?9eE*_R|LmcMUw+wD zgX8`C4v~A#yycc#-tv*J7>m0WOmm@T<>J5*AG*ZveC@plj@;Egxp45F#Q*U-yxj(= z$<#t>2j)OSqYOX`$2`RM!Vtkr=C#gS(`ZHe7ZJMudqwjql}IgyGg_2&X7h7DUr~LW zQ;MebDC5lL<{rNF&67J%wr_sx%Kf`8d&PrS9(~~Df9D3rL%Stg)p(*&->NK^)2@wzw*IXTz17nWBV&*&=h$Y&!tL@0W;52Nq(azj|)Tt&a-}u@f87X&$qpr z>YuFNJ&m;glXupy^|hM4{(IX`@7QtrTJi8Gcd$qWLW_rU`EDaktjf`o6P05p*8gZ~ zX=-Z8%>_nesuI;~L|F&ko+042{_r6dLaT^^sg*_Yq zBZ(F$gx59cXnNj;w~r_<$szC>*N!TgT-`5mtk9V==$MJ8Jg7*nbd zG|aY{H`{dsKIhF^=xXbgbh;8hbCDdq0yf>={$)i}JXMt7i&+X7I0l(F3(2Nd+Yn9N zzL>iQ{h-s_J8}_+YtP5?OGFJahPK9oSe$*MOMcRgpFDNy$+Y|X>FT8I8Jbgtr=Kr7 zn(5h7)wG%>XVdO$PCfbLsn@va^?!}aEl)Q*qmuRfT**L+*NJkha(=M?MbDBqr}o1c zAl0hCYAwV9%?{6XXPe2O7jjI3oIjim_52J>DI+ylV-xM6^$xRqm@%MdTdq9a?0VMa zY|XRd>te0#{hU{p*=;5(RAgyM(P!V}__A753%(==uDf|sY6eTfDt(1iG{_qbGGX3u z^8U%sT5oC)GWzC1)FxnHngn{~zvs<`EvEJw=&2?#jbNKUn$t`f7t`V^)i;YIYnxW; zA}$~cka!Vf%so5{gkGpsQGZEx(kQ@WqkgSgBD{o0r_TjOvjzC9#?zmY)EQD6j^HuO z6Q2Bm=^&V^gxMpQ{mw8#zXkVWIQmB_f^DsfiX`hq=fd&9$De=v@#hzv>3tZoEC#`- zZ6M9THqRGCUo3h=U>cd-ClUrr-NiNl0DaZ91a9#P=SYX;&KC;KqcNC0GyE>O6AA zhvypNuhfrMo@h-fk6N$4dTn{!SAK`QNIsVOUh41BCr}_VYxBGT21p9wI}ZN0+EIri zTfnveRC%4B;Rsm=dj;rJqo6==Mi6888t9KG?x1G?fIfd$VRaldZKGm=>n~D6g?t9FqfMS}}jKb_fmRM%wD;Wkr+(2FdSvUooZpiPikpBg`HRjcx z5}p$bvH}x?XNDoJY5FpbqxJCv5CYk><=QE;x#iekZr5o=yy2O*oFUijnr)YM7pF$U z>C*1fA@Vb8w?Ee2S6q?aeB+t7tQ6Pp_l3~8{;}(wQ1I8j!TaZL0TTc3sY+@p)kRib z60r)$61+@J%OVL492UBQqoUhJ0#k@0?MN>vHU!OXOj1O?+tk-THovmNe>nZ}wO!@v z@}QLU77q<}`p;Z;-977jJyVTqlkwgYe^8vyPHp+v_F3D?*f~<(vA5oH(&ZfoZPyi= zwen@suKzAd}fEIMgxVj-3!tLG| z5kRW!B55QrVVVqEoX3`HqJ&=?td&_^%Lj+8Ah0%tj)?%6JdacTW$77VREw?9(wHEb z^I6SQl~xqk?(^{1?0%bDV`uJ}f8=loKv=a?}n^ePF5L+RXS z$jrR7MtbSJx zq|W1aA5n>IYlFR)U;efLlmgEX-kX zAd7;w9@qH`06~Lj#`_FFO^64a(Gi*qVmE$=yKzzEzDv~dGWv{pIfG?^3v3h#V6&+* zm2A@%*Y+-#=F+;OD2q*I&UI%C*+#G79myA5?X|3aWWIe(&jGPR)6uB8y13R7LGqa2>)b%h!o#}F6CT&Z{CWTQ! z)w1^M)m&+E(ibHVK3NSNrXc)S2trWOn@D0LAWs?*H8FR-CgacW7}8Xu7GixS$*mFL z)_2`SI`4kq?c{}9j;^os_5PE5o;-;a6v((ywXmoYYb}c-?iOFcZiZZ7aYSAaPF%Ip z%7N``xV9=4Lv11~Mrz+kdrlS96AcS?<3_xiQj$+jEjl!lkqh_wHmjy<5W zap(*39Rj^%{6I^_FB&cAt1RXt6q{F9pI=?Q8pjP@`TWtN&!4!o{-Xdk$O=4pz8x=P zH%ib5FQ(V!d=ANwM}G@uFZD+V)nk}b?IW3Vjl~J+!wPBfIBv!VoB8O-CuJt|YQ=2D z%Y!i!J~<G; z2$6dml%_R}{Y!@Hsh=!@w!1?n!r!E|d|pde6xUVwwOMd&|3ZEaB=}-#H?N)qNR&n4 zMp`kL+C1`s6I2X)3E5n8fO+^s>7wyFHJ78L=D3t`i^6A6|6UznyjzTa#l)_w+wOj*{?pFnk!xJ)DC%X~&7;#VrE&Em{mUT;UW8J$2Hx5H2JIPg~5wfVv0zxntQfA-2a zPw;#_kwzT0{KTa*@JFmhZfrdL->!I9{OEtoP5sBCU;lFY>qp4eS6|zF^QPk0*Z*VF z@4}YexfjU)B%e#2NZkZF3a*8xb8vp78s`k>BkM2y?hVk@7_bnpl~eOUzo=m$6&C&% zTQqo_c;d+&UG$s$o%FHlRP|$0PO6XJ4PA8rf$DN3NiG$0AmVk~Xoz{S!Pi*-0er#h zZOPYj;-6icEfliX{+TG2e;wXs{=Nr!D+1(?7RAkqC^k11h`(MIrBzW}m6Fe~?E6pp z1bGU_`0GgPfr)KnqUlqFX(L=_Z=6=uAEiE_@>1535jwwsfS zW|URQP?b)6K@$d8A);<>uI6w@YHnsY6Bnm8O%=iFC6WTRb*X9##0gX@(5;LW*p)?fWoqNday=<8+TGyTh|raa=~-Q}E3$X(vcJRur`xMP)ZJD8w^FoL;6U;J z-P8O28qd`p$4B_7QEC@5-qGNK-;REZ{ArCYB2@Sh1)W zky_2kx@oW=U`D9^m6&Tqt%dD#(<^ds<@i_Nmg!DTHcdlx%pmBmO;(ghjb$aAT$+67 zH4AE_&)zYshg9Et-2_bJ_Y|~y^+HF68vCwCVru}}PHH<{2($|9$K`JI>BTWXcn z!>6;fPzC#cs?hvgp||%iF-wNMC*5k0sajfPp+EFvDKP3&)06fL*=y~|x7u4}Ijty> zmn%$A!uc6N8v@>-DJhlZTAa09&|?8&-#OY(%HFV1D{O6OxW+UgQ;+EB;>=ueZu?@P zFxoLYv#pnX@1aN6a;Hw^*66E9IDK^ee;=Jb(K|G1hH5mt`R%tZq|=LM_8ouCNA_l~ zxjMJ^m(KF`mx1HA;P`sV!n#@9A&dps;sIda0v&z+`kxSvmhQNtbo8zLZue7X-u}g- zuAN}%sx;Nf-W0%)L`_FTK1UAvHrewYspU2`xo!V&F6-GYX)t=A*!`E-cIP2EM zrxpb3=E8TrufP9O*QCyg`uD%Hu<+C(JdzK7_`_`dUyiST^Lh2A^>2RJRG%l!55qic z*8#}af8e#EDyc~>>5ECvZ%vU}QpgiYA(kl?32O8PH82*Nt*}U1@SFTWAZACk;>eZ) z$sQGJqpTRjQf14@n@?`3Nb7H(n)=4#nrt00cY0Rdz5D4awabVgCsYw@p zVo^HsLdIKvhnLBC&KKQyD$O9Kv z&8$BK>+I`x_sQ$;0K2!*SZg-lHuJ#vd;Q-VjZ0%bGRRNt;%FlY;YnA)#zso7xG7_8 zV6+=CRtJqq@#xcs2O(gf%d)%VTwEzPntryHwz4~7s;N=k_IB@W64PXjp=A^@6Xd!4 z%<`6)-&SXmG>i~}LXDM|n)=o$Y zB5|Pwvi+qVVHs0SYv_*Q!)urg!`U->-B89_OY;QqLg(T%8IXM<4|4z;;D;dFiRoCr zugK=-E_M~KMxrE2m~*PG&Cg?gbK}Vy0^+Es~FAp6rvtE~{_fp)B z4^kr00_8O~YOJeH3}{koN)V}i`EX*c5F7JYazys?kt0)e+up|I!+JXtfeGx&HpU_{ z`2!LWRHo~tk`jAF#{55G{v#bRNy#C}tt@MXt1X=9v@%0qAtLAiR}CncD$a_#x6K~k z8qC)7H*18dq9RC?9?rV5s*19EV8SbAFl=N6>&mR3`waOsT)zZub{G1zn=S6C#zbQo zO-zoiWwud0EnXG|{Z%F%(;WSSyRSG(d zvzrd)dzD%zR*8S7xOC|H44rT0bNezfv9~phz-&*EDYAATIQ~A-ENx#aEG$gjbImqA zjMO8Ws!J`|+Ir=IR@xXXKC^?6%a@9zRKHQem9F9k#lWyKFKzRysHuNUjrmpr zA6h*O)xn6MC=PfD`3;t$VG;z(6^M#3PdHBbuOvLbIV0snnPq1tR*BM zV_HoHPpt)Qwq5O1EndqUO+n6FfedX7*+s&L|4ulmqY)=9=7CtyxW^ouKPM<=+A`6N zN~tRnS5ssKDG`~HD|@oy<}yqXabO+ff)EfDou?uZ4LdevGLxj-GwL$W&xcXY_Y{XR zPJPfCkB!D8S+9?NfDT5nUpXKW=Im1 z1u(9QflD z6@3heZFf-$U?9VoqLfFvp@%!@6h%%NsBFgiajKZs{lJ^37N@+x*RlduMy5_WPgD!8 zSy!6jK)OPP)Tln(oh6Z0)e61St?~jK_;>v)_qADc`8wKQI%Aq zK!u_KKLkS|RJK*35<#~;8w3o|nZyK<7>=rmGEMLGvvphY8aaP&8okAmY3YP08qPzak-1Xz?Tejxp!H;WGmeC(+TE<-N z;+7@ZLd_-_>1^Utkmd$UpFM-K$4<+G}#w95~(zY(tPSbe( zVTO#@6>MO{>EO-7%Ey$yq*1v{c6G?^ov-bjAjfxg)<0(ULVdnwdg)M6O4UXsrxZ4m zJ)K?A$;F$Az5cPzF1M*mfp2*IJ#H{rE`*MV+%+QTuup*uPw||BD*)TwfEfebnBg$n zg*UX$77o~5cvo8^q!PUFM#e&96}<3{U2ZhDSQw9lI0VF9=e`mg;x@l(Xkrxlg<03^ zZqejbkjmRvWqnK6@Ma5c9Ep0Q;|j%D*XnICBwS&~s$^{Gnci&C4t^dyd zKJ}?j5%Rk0uYcY3-+JnzwLI93YMSc!K(HTO-nw&RKZZYB48lk>Rb3b3AmB$@*6~QC zbE&guN$TwD9(dsIAAFD;zVlmm-Sy3->v!$E;f9^N5*_h1Xy3mKR`nb*ar-@1OQNlM zVKS_YtlO3f?Ro%)&zem`@OGg^kW^ig}lt4EPS~z=?@yepPo!FbZ=eV*_;SN(~wKFC(Wgap4+{( z^PXqczivq+o^!o`=SROlQ}ArH)Ny#K52T(-y*2gT)GwueH}$6=-x0+oKwJuBUSxZm z7?*IlCBCslK{s2`h=+nF*+4u3xWkn@?}!28MdFi*dh&Qt62|?}I0Ycdq?DU%TxNsQ zObZm5mma19XE(i6}&|<1rk6jt8c$tKm-7QUVGqDTyr!;FY&9t-YpYrm)Vry1e z@mVliEa$~gQu?Dw!!-n%iK@|&GzopSMn`wyOYa&Of@vIZ=2t4aPRhkbRdw>t2+sbz`D(7emCD#HZ!gfgFf z>95Zf=W@61$z;0Ab4LrV&HtR-!8cE>)Sm&R82FQy)^f)BE}e_wm$(}gQ{$7tma#uC z@mMr2P$%^gwf~XYs6ZdsB}`_Wd}z#;i$SH@>FwQ1vb9G~NyQNW0*QV12Gt4{X zIlofgd-LAg>ab4jQvI^!$LJSMbzG~C2Z;v5abd}LoX$VoLWbQ9_BWv)ZUZZMEp;$;dFp8DB=pELsk>A6^QilvhR|sI72{W}*+H0x znW+48p1^0f2WCQysmWcCs7M%=kSgQw)kwg=v3Q>N@GcS94JMApgBGqHtq>M-vgHUp z^EM&BK{PU=6pa4uIQ~tJz$I>_HlbcFBtou9azuC~B`2v&t943hgr*5uqGT8Oy_>A7 zjE95UKC#z7ytr!an%<->A3P*pd3CNxqBK1%ZX?I#RWb>nWliZxe?j(8P^ngh4k=B~ z(d~rnBnQE+$dDT;H4F4ZhJ6j8=ru-k;U3^jmY95B4f*( zODgWsZ(WEkgjSG@&G1CW=ZWM@_-tZECC>K6vo(p@Wj?1)7+SbE&Z}`iFFZJetab zef@aqO`tVoG?K@aP7~?M$1jm(FiDC+X1FA3fs>^+N8OkUZ6+g*c@Ycr#9; zL`~9+5Om_oe&TTDZg(^xNJ0uFAd_unj7N7CX+iN#4J2o&mdR8~V5>-W_7jErCb)DV zt;L=Mm=UZ)=9KN&HY{5K`^j2$fGiK^w(Qc!4lTGKGre;}){ zH_{$F+BMRKDM?Dcb8xz~cP@|74o=~(wfRE&L~KMNRxOtFO0i-Hp-kLrJFI7rV9d@~ zo~eONDrl5=f+fn53_VU)oTd}ox&%fmnJ9D)PBr$l3kq`sp>^|}lfEn|>z{TUm5EHc zwBBgpVtms?rs)z7C9!FD1@oK60OdZaEB|B?eao9LPU3zLrp0AX91Ez7p$n%(L-0?C zu<(`@xiF^%FR5#)Uv!*Njg5CZapiAZIo`={y!+irtoMe$SqFQZ^%yW5~ zttt-vAO&HS^*dN`j9CKSkeH9$qT8a4F<89_i*>a?RDp3`vm~Cq%$d$HTa3)YV^S2I zfd#AvQbNyPf=~Q)(9!H{1#=mw$SK{_$%?3pqO2)T@SAXmWI!DFk|Bs1Lb|L-3$Y%$ zl1ep8HDgh6CBf1qQxpU-l0ok>S#|(8ikYrN1wc1WYy!k9F@r;oq>5?KdnnZm4xn|M8 zhBGh>XigGHv_jkvh-9i(9_ACzE|$T_XN;JNY7n**in3rkjwGu+UlIgK51Ago#S>T6 z@@BpwAzcr(4A=EM#Zm@_cGpzCQOm^V$C)v&?KsDoO|T*rfRX(nTjXxGxkcM0^kkQ!RuQhHKnv##}axM)z7qf4bf_ z85C=*$q9Hk8)6p=mGn{Kfn=M;ga=**3|GX+!B!ZAd4f3tC{g1v`*g2+F-*+uue^1d z$-;EO2#pCzo3k;+$T9?yevTl^aH&XCBYFUuhe)o(D(dp30PqV}ojrSY^Q3?F$}5i@ zv!-0l1MyF8sO!3_O`TP=t2^jLkdBC=L~|8Onli^R{NDkA^?Ygutf)Z;d1osNAfn!VM^tX8d*G__8i$ltkK z@%uaS3SiwUxA}e75nOv~Hj_0XNoiEO6NR)XFTTqOb@^u7Wd5va1_%3VsBSX3$%x#M zzGmU@eH|;~yI_drq+ID>nPzRv^3rlzl}Nf3JAxo@`0fxxJE;+`i;R!|;-=(rvDoQX zvB-3s1YpCAY8!Pe68LgYZ3NP@YLh0fKtOsyo5wL@ku?m)?Q}6V7!1ejvNM^5*7|yD zVWIWOsi-bWAbkALQ?RAqgtK|Hq9f6M< zUOGvhJGOju*G;Nq=+dz*$KaP7|JBlQkyck*n~#aY!3|E_1bZ^xw-XM7RBA&vZ6u&K zV%91VWKv9W9>%#AH1&?Jz2hBUd+^CmJPEJ$&mLK9%dlK-7NPP!vN~*-9)>P*~)3wxD@7$Q{zLJy8-JSCYP{TM9@oi;+7e zP_ZEI;gibKf~EroIAYkU02);h0;iNIsk?GQac2lNQBzEZwN`NRRPTsbGOwW%giaH& zXevxHm}yzEttvj~W=&TWmJS@1PEtu#XdbjiZnrBfJsHTaV zRl#&X3z;vk>k%tDxzx+_s_P43pq?$&{}daWkw?)7E?IvrRUh9NLi~%u2e`%>*FEC$ z7ZfoIll+1t#}21C;^f}TAIZ&fL2Oq5inxG9D%~Nu0wf75M&^W@ZDBC2r5L84^9>?^ zbzYU3+1z{)X1z_3*WZWZU*u{K(xE8422FF9%zzBA4CQN@gXJ$>)uW~y=Is;3V{yW)kdy+E(ad zRT5tGB1Th_{DMhK1)@zlQ>{RWI;B>jRh!#C-LuQg+~N3dFeH7`ZI(YfRV;>9Y<;ho zZ54KH9abt64o%O$@E+gv{8!L&eR;MOZ|>Hzt+H}7GiRD5Ym22{rj(8CG6~*LoGQY` z;rdy3BDTEN*5+WUm0p;`;&j5fbLakvK26>Nn6Sgyx!V@$@UmaGy-zx#;#Ln97 z@u-yz7KG*~k(h8rHFz}#%~2cma2Isx3Mo>uZEofiBli)Hk_R7Fm@HA!drtT}c!pqb zZrbD<%>9h5(0c`DKdUM970^d)*(1VFy_1Nn^db{hKWOHD%x74^a(NvBsr8RZeJnO zX?Te4~V3mMM7o@m9 z=(8!xJ$ZA4`|dH!4F0>gQvj|ltUtxaKR|T0o7FjKz9>r0+)xNiqo z*IKf}kP4mcc?BcMr5Yem8An~Ir0B}(7Bx~V=E#bmjz~`wRPx0y5>)^dDyoFMo?sBZ zMPNFR$^o}3NfR!IT~7eVQ(jhY&#je%p4^{>hT6J!uD&~bKxMcyRO!O1-0 z>$*o??HZrbKpH7bZ$+hw;K`uiK@5TIY*n+iTCy^_tEytQBxQ3l7{dZf+y98*03ihi z8j+LGJD9)QWQyym-EL*h$1HD(5vtZw?AU&!Y70%I*Ei^|$rQ z*O$JY9@)~-%3t{h3)#yH2z1WNdG5no@`9k(zPq?r0|=q7{;swO@RukqA)BcE3L2L z4mb|S+B6@5YwTg&!=%n3t0qBf+*2tGHq&Jh)$O>_2UqB*{e5J{w&XlbYJdFmb*Cj^ zbs)3S@oK4^0T2ZbP-D?g?Vx%(oH&{j0gK9lw*S4Qoq>Q@3QHJdy$SN%-j($~ffFN2 z#?5%yQpAX31hx+#LoKRJKqhLz69uM}EP1s4zT1UB2OR|f6wAqi)^xO#e(r~gAY$UXhld4-qse`h5g(Pbt z>l1$10<6^naLEVU;1RA+bcS@7X$;$rT5KLRfOYwc;UHU)@g2cY_`X^ZCa%JfED)l6 zUr95-3g$_RU@H_0FVy(RChU@)6>78w@2aqB%$L(8v;2^mH`l-Ai+LfeXDgI83W|xu z$fD3{NWxa34o#o||HE`yjf8zdTH7Q}D8H0bU542v#I_wXw?qtEU`!J+u=qWS{We&o zyqGR&xu#qYWwq$R$_m&X(92p`T`HS#X<8~s4y|Szcx<%P72Q%NEiu!S|IC&dJVM#M zM=_bKu&S^^N?3qJ*TG8vY+CuFyx<818qlnG@BQ>adiaX757CFbdXp5Yl$3Mn35q#I zl3b!fE+^)xM{`0Tgb&cWkJ7x9r&kL$b(X11WKEY%pAe5URgvV0z_xAnRHHd@z@sE_4TC_|QNdepQFV1wYfEnLF;2WPqaas z<4Sr_bHmGZ!KFGRDOGeWNjkP-+w9{w+R)z?NRs7>yL<^V>FxB#2ROSBh&b2nDmv4R zv6Jj8uR3w^F?^HV4wF^veu8g*CfW8? zsY`31rc>Q9o9U$y9V2M4GFN~g(lFB!kYH<$y9HSicv(TAHVqe?q+??4**v+}nQ+Lr z(>7d(^JZq-%SYkr91&E5V~Jw0wFiPqA!+>VJJWELYR`g2k{G;XMESXjucQ@65x1DR zw=?*LogqUNtKFB3Fy+^jdh8reD=<^3jO)s!j)Hthr7E1$`atTs)Lp69rG6syA*@%1 zC4Mm4iq-mw+%AwB)}l%Rlr|`gd0h+EOHvQVhHR@A)&@rigHbkfy9QW;C%yiJ(||>;)~2DTb?@Y=ZG` zJE0CuCT)WXXkDgYMG7!+H#G@^C7KCK99tMK!O9KFz%(l5^nUE!AnCMP(=ZMIUXsZv zIDi_sR!x*O*y0amHFlt9 zajk_PBN=gVljl@&`5DE2ocM6LhX<^z5IsRH24*Og!~EWx=Q4%LYvXz)x~aO8OfB79 zsC0_cM)$Yg={tKj-FN$aM~Xp|=-d(#jWzYZ{vX>uCPHib` zVWu*7MMR3|kjbWZ4=F zK|SMeV1Ja5F~mH64m#U#(5y9OtcQmK1cNGu;1BsQMsNJJiA0!G+rofq_>#Eg(~lFn ztJa*1VM@(m5{87i31|ahSY}+5xxdg#Y<*0?D-zC|IgEzQ#HbkiKSuuzOjeVETGeGa zOl!oSq;w`9W`#@?W@NNsCPG2XMIJdCr3D)JHlS_yyX(IX_b^P7O6z7&=7T7EsB9;imD_8wx{>rxSf)H z&yOTo-tzHXr2nRQ4V3?0Fc$rOQ({p@Wc1%ON2elHsc9&tLb9cNmC8<##nB~SluS3s z3BpajuJ{tMJ=2Sb{(j6KC;A)T2*$hq<~QqTq5pzGi1ExbpjHi0(N#gA%#dP+<#aHZ zj3`+*s$%IjQDfX()m2|1GJ$&{3z<^wmgeN{uBZsL4k$p&iB-ZxuxKRpKqv^}C2@!~ z9LfAKqugkKW4$xXMA+c@K_c5Zg2VMAi8U6`=ab8yST zcrI;`=gzMMpX=vpQxmOye_Lx!?1_C_a;zY*?PLsdBQIhlbvbgRZ}{{8GmLm`QTTx7 z*6tQ*w-bRK*lSl?=;G?IxG3}(FEt7uXeJJsC4d=TLko3ei2w{~3x3Pw`&@|&Y>S@L zK?me?LvAn%why(4iIsyqK@H3rl|_l_IYZOoquSH$iNYe0Rn62aWAC(dZGfN1;+lMaVhJW~eYL&#F#gHe^Fd z;nkys%{U06nwMeJ7p6p0G88E0L+dH&+&`WB6Tsb{O_{th*&uZY&m(B+= zzp3ym*J{xCj=VD~xTYi+o{)X(Wtt&sr+%S>G_`y1;|m(x#@+4d>Gp2?Rq0e*r`#QL zRi#Y0=KE6$pp*>H1?XbTy&ohsVxrNw^7n{!c}y(5YtTMTH5Af+B98v_+XRwcQtyGmpg7 zj4b8-?`P1AWd@Q|%7NV3D_3lZ9tD#df-6Z+TCs~*hcQ(%*attr{H#O>E9&KEe(oa*M%;>4DeD2qVa}YqX}1-X zacowMoS0pa_{)-e)Z}$EQ=EN*vlLd76!F0@89eAEWD5L>qlTPh<@1nEWV}Z;LpZQb zGG57N;K*9W$P^swGkSGN$1_)F%U-L$z#4@K=$$iyw*G>u81n3_WSH_?-Tj0vsB(Jy zwydmCYO*5-{!)6i(a4xCOj6cs*t7eu(P{$|xd`;)Bs3qy=Up`~q5)~cE&Z~bQ808^ zGc8F#0&w@DeAoXkuH}^513MQ>e!S#c`u{Qi?AeFz`N{Ji>(Bq+rpa?>m3!`a=={gT ze?7UuJM`P+2jr8Sucwwu)h#|y6$x`Rc}5sBD+8(#5WGY~vR|GYRN%d^`~C%0*|#u% z^NBqm1K+(zDGv56<)__j@6BHxRHP|bYyA(!!;kG+y(t%o_2pCjJKy>7>h|tjPMiG1 z1IE%t*b46*)>uf9A>v1nZJ-r6i2$~PagL`vY|0x*@jU(TG6-n8pK40%Dw>(i)mtM% z_77%TR|Y|_myZCw_o-{HdFmR{#Q2comZrF|qLCo8Fs16lgVlRsy>IiOq90y^E1r+R zH~@M|OO=t4_&ftu3(<-^PR)+W8ym_TbwO*);>Rtv(M5TeEWE&B4>RB1 zkr)%_K>(|g?d9~jsbDmi*N0t0+ug0-+gQ5n&*jBJVTLK5Ml$J=GO924FAuC?+sl=a z%R|y6UDAnUM5fYQp4jpC6G&A)!Bq88P0IsldP0pdXKjm_1!`Pjsdi8?-7c&ouI~JXvT~gJ4dtttlf}H2;fFkuhQmnk!N(fU{UG%!`ZzHGhjdd{q^?Q5JoVG?93qP% zmgiOx*h##g6DPu^tSU#G5j#X5#|T4YK){2B0t=iQPstqknG|0d;%!~wR2lg60OVp( zp=9Oefcp%RLa8ex?rr>9rudNfO8l_NZeaS41j&lbvMlJj3K-D_yHn591ihiUruHtl z2?iLaL@_dDCgr^eSup(QV*v-L=5r{@@}wbnj_9N91jy32gVERaj!9c@&t}hj@t!-0a8t=9XDA*E7n9_ zqX4#ETgRt1-?ZJwmaFkF&o_lk`Vct)V|UMhSU2SoMNh6-gL};ey3% z)c~xPS1C0p)%23?0NyI=Cg_^4Q7>of0QP7jlM4vVs-!xZ%?i{Y`4ZUY#F@mABe3LU z!DJwMkmJduyf7+eJ;&dqWM|HTp-Nn41iEQYVqK|RLnCoq#(|zP7FMJ3AC{5j zFkK-eos)>0Ew&j^6Ov!YgM(lxa9gtA5DGvP;wYj|WD(DrP(>GXRrS+gznQiG*o6@= z)?&v1TgWulUoShct4Yk2t1|49If5i&aF*aISzi{2>=~|zVUb{Oc`;JnDwJp{Kp|$x z)Tg1Y1!dU*t4Ic8i3qw#$_AMGh(TrBv2`^z3_mA@RZaBE#iSOis{(Fdekd!C5I7@+ zoGN;zGMUz8PXyS!RBZST-1!{XWnt`S2GPB&K%xLHx1P@i$0_D;61Y+&U!27Xh60(( z*l^aa=~6OVfNcSHfq0W-Fh*4YnVR9o5>@>y5ssS7F=I^k)C`q`rOrUsr>6v|Wab?w zij+#Jp3CW85sY9x?>3Bpx`4WgElI^PV%U}vC zjt^HAm^g5!RZI=+NhPPtGX0>g5y=Z3T?AV}gY&dCFtYTmW`a!Aa9xHnnD^56Hw&J@(6%P>QJzHRF5b~&Lt^M3|AT%qF}&%F?49pIapVu z$hbxXro%1q6kR4Rw>wanlCywc@*tZwrPfj>!S2G689bJWr{*F9;{__o*2Y45=|V0Z z8y7_$4BURR^-@2>WBtB0YX|8#u;%Plui*R8Zj~qceRIw-10xP$>8hXi6-Tvvvg3jq z!8fzbW_JB7ev*ZM4qaJMo0+(!Dw4Cw@&nThH2YnAz8n^uixw!h7JS+_&!zaT;IrJ! zo=frlz-LP2xu-7z#!jaSfKT?PQWzh%EF}SftzN)K?nkvzPi}=+O>|Be@OUqbv<9nb z#0`Nkz@TcL$RC4g`sGq=VahM1mLSN&Ax-U9_2*vh{#x$jT1B=agJHmx5MO0fni*nW zP6RWs0_R9`n9-hIW$F5A6Z)^No0Pj7GlCHc%|Doi!7>P~%wAqOMVH>j{1ZnG6%oJQYo&XYL-Y@i~+ zkVNES1RQM9ut<9-y5|9abT}H8S=c%e;$@fAvqqF z_IjGC#jYiaf?t;9nOmmqaE{g*q7hPkBBL=YhQ2F_)hniL%dEIg&Nb;b(yjszPg6uE z?Yik-Umx@q+ogz{j7p{T@7MSFzM@NlC<8jqP+tiwA*W;y)xo~iHPHq!C{Uldk``(K z=7U`nH>V*Fu%C>2K?58533LeqOpN=^)lWQe^>(9ZQeS=DVUto+e$!Ey3oKqrz{#qO0So$<^0T^NBUHBf5H@&HS?N>kjY0tI2)2Htx zHC9o-==3T!L75YPHK=^#5|Y=mWCcP7i?6~kx;$1cw!eQ z{R&n{#}M~;7&R`c^@D4ZYqo9M_UyKk@FvGhC9{3<7azQ9As5T!qxsMl!7gk_{`9&5 z%b(q5Z2Q{MTefU@%hJ-G&G2_4sD?Rm!>!vYCtG@YQ)Fqmx*!Hi{14VRKMwaI`B^}T z=o{LL(M5v__mN=O4ffb^GDLIiIVlRfXtm6Ga7m*L_F>jT+aL*w1>1+b`0VTwv+^ycfrY;K)R`eLb#DWioN!2BoYzOmOCw3(Lp1j)uAKf*tIepTB-brDxl9 zYNY#Hwp|j_EJH7f0F6(=)7gsGI^wY!@(3-#VT7aUFx4D^CDa_W!NNkTGUf~6SCchg z%B(=gSAUXC6tbD^?~l51zOwpuB|n!9mGZuw>A9Lw+p(9mW+&7xYxUDbGT)XzbqR?A zhsS?b>RI&}cVEeyZZPL>?Q&5abu9HsR;ULPeNa=Om0{+l>fDV{xzPq2<=q#T;`3i&?%TOs-h6t~hdy-l^o^I@zDl0kwQ|+e;nn8q zbt|jaj^KVld;T5rmz@7Jld7j?QooVZ= zKjtjAWES+gV4Py4Wt-FIV!Oc-BN2|Cu*9$09I&7|kO7>5O6+XJtM!_gSdoNQgF(!L z!Dw$;;Ia!x!^eB$wl0FkD8!xNGz%KZSdyFsNKq^(i#}c)Z|!o_F={5Y*>P)V0%Vb- z4I*nIRUJ#0e^&}*GYg8qaNN(BD$i7ThpB0%N)GCS;5MpQl~qL+sG=sizlkHYTCiY|rZ8NZf;lwQ@P|1FxZ%*2TaTvh*))t(Fs)v04f`bh=VPrD9sVfs3w8| z20fr@UsPpPW=vr}Y=f$`ZtiX zujl>PN)<6z3*>#xl>k=OmPw=2!&KfDg1`}h^)C)Bw{eO_I^y*l5%m5|#`ILc|>hh6~N^99hjDW9|K^%$?kHs~cT zv+z&7P`=XGd(D9ZtAptrx!v%rm8<^xudmv(xFTM5fjj26c+7jWQIU$Y*kFz>3;u|; z*yzQppSa@bUHht&n$a8{*!J*Uix1yLo_qM{j@zgGsYBWAJ9lkq=hy$o*)5wNUmn{5 zXF2y!n989?5v$#!qQHMFuax|b`43VF`BHLr_3R5DID0ai#josYcKw^=>{*^feKvdc z?CQJVb2Ynql6(MWZp6_3IUMJWAR{+p?8yi(9k6qW7o5X%BNQg%tUb2DLI~Fukn!?) zGV0+LQ3U4#lz(a@%* zHKQmsLo;kjFZSL`0sYCjt~7;dah6raK+E+X0?1To$EoXiOWmM38~Xv;7k zUY&piFv*<+0c#_rr%ggR1o@W7`WCQ)%sQ~F0~2kA%Q5~O=7u$ywWp{&MLTkBO6VYI zKM&(0}--LfBj*0;vW#b3@iYP{+_y+#@t~v65`QtP| zl>aZ?lzfkwdiW=bAtY87`Hb`bG~pz|1~3q2By33RHL&So;b zX;G0qTae*I3mb31#gZdM0BS|i!%*3*q7^P$!3s(fVKg%ng%hRVt72ae`eO3==+;C0 z1bEI!a;5@059r3s^XHFC#>>%dz{#EYTj4pLw@eUNN4r@g*wc!dBx0P%<7w z<-yXpm?XPTD3-_*ts$ceo9k2izi<7suN2$Y|2QokWW|ow!(P`KTr37EWRW4^3;># z+I?&Qpq3Mt@{|=cE}&nAV{p%-*7-ahfj=kUfWWBR<0XPDffE<8kf)0Ad{WLs2)l%N zl&2UE62Nu(qX1z~RWf9ANkhRX>WgisZO2}Kq z558>B(ZPb4?cDfw^ARfEV(z$MVaI)CS=Xe(ndO~#XRa1hO9`}GSy2_c_%x+Y7j0Q# zMj_Gy!xOL0+_Q7bnS!M0a=3cM?9r$ETSWSZvUcD0_AD4Gzi4W_=txzRRY~J@!V?|( zEazXVBEx5q#uunbSu^n=j|L+gb^+6NKz8_fOC~$coI3mX)mLp@Y2J14;Hcjujb6I{ z;8`ado0mUz^{FSft+Wo_bFf~$chD|Qowzt}1gjch9f*i$79?ds&>DTI+0XieT3Fo} zMGZNOZjai%JW2S1(0x12v(%vR%?KbAoGCLKQ(>kMSNwNY;`LvPE0vfWjw=rq2vH{T z&Auj+&HcF;&CW_LTa#&yF!xYpJ0U@%qU)5IgYwjDP(5^E+sgN=ADbXveySd(H*KbL zhKgA+FDGW~y8dlN7@uJT;C&N)@*)V?phcTe|p_v~9wcaJoqnbBymkz`wz zH%ZvCY*}9Lg0T%|M>d9-%^@t8kOj<^uw)^GKMy-jAbAKkB!nkG!tW#w`9qQ$E`h8h z7e@d0o$8T=!@W2EeST@WySlony1MF|Z~xwxmKSZ|!(ud?PuytmLS3$ZrK7Cg(a7AsvbCCL{XElRsruC^P)&8!wMvS<6F zuPF-90TFr4fxU}YMivXQYvxuqNB2nfP2@hd(q_F#8xvzu#=7LH_rCi*+g~GtE4RNm zcGb^a`6^Q0{;TXU^7D^vfA2BW|A^c8H`2#9;2uY?cUNm01n;MYIiv273^Q`zNmAJU z6+*Vpr{uFPao6_l-Tu8N*S_|r@A{SV%6Y{qkWUo8ZcdoZ&CTsE{pp&-n)?FT1iNBN zxl-1PSHZ(UgNTos~0ybq)956N7|7Ohs6Wu|i2sMmrb}^-%R$mE= zQ(0quaiL!XFCd#q%DW~9o@4JjNN07PEQf*b&QuxK4NKGYa%0Lfg%C%TP@! zqs%H-DAy{tDE|PWJs>TzAbBZ&g?s|$%a_R4$zNd=jpUT9kqs=0NnJRL0SI6$y^zBP zgfrMHLrLh^$>8TBCOLX)G53hXRi!ywW1Y-VwqO-mpe<6s{bw8;f#~ z#3qMgke7M5JXjp`F$*#r5nlB1gI0HBt_*tMOD@C`2oDP&dYSB>k=6`2kC{NsTQJPB zIKj=+QR8KH0ob91(mNZloEIavf+U<=hMsIXg5PN`4VUtdhZ1p7$b?I4l#m(Vz9Rn^ z{9s9r(9I7wimk|jumD#Gcaw}9GOvQgxY*8x2bEt}Cp)WU4aagHwF`#$uvb=c7lU>g{*M5&|pKOazBmp=UjJuAnfxTiohGQX~qN*Vz z8QK0@Rr76+gOAFBL^m8;TT~6*Mgxn%CdH6Y%`2!hFnGZE140Y9Z~Xy$+!@uu-r0TEOydE%eN%JWtGNo=9tNojdFPO zP}S=+tP)dzShIsz2Se0|1)+5v2`5d;3{DLOU#xOlj}1zzXnESc8R>;7)^2F*hB|azS{n zSTOOLIov|ZOc1HnVu(%l9+H}Jy{7Upmm8jEaCeNWH4Fp6ZHF7i!=jVId1BZ?Scapk zZ>q*N0Yi9-PVWkJ!&}(&b>aD&1wEwRnmbLWupiit|HZ&Im+)J#t*OHU#vpb@pMOI6 z7xFp9QT{;rOXa(uUpz7jvcW`MVxW$5k=U1|U6|t*BSbHBMe!4qgd=gdBP|5a3+0}E zKiY86U1)X0POh4#!x+Q@nl;jH&5=?E%NLx$ES4rNHWRtDiRpwq#f@cl`I0nIQ67z2 z4f6i!-qI+jJdF9skjsG(5-d+z?ur=vaLhR`eZ|$s8!!ek>tAB`5l2^6rIbW5Zwg#CLAhdzuO4JJH{e&OoOh1qEfogln~6l!pL zRZUe*s=1CT9E+sWvr{QdO3kpDBv6&Gl<;5Gh^87Q+|#HZB2+ydP#Ylr&i6KabWZy-G{9RE!Y zJ{1NkmZfolrkkwmg5jN4XvFe!@<|%i!g7~xzh3KBDwB*{&O!F-Aj&L*Gc`;?Kkz|o zafY`Q@4`JeYCt6kl%5Peg>6vbcudnlrt>fwPe5*Y7@rXPT)?>E) z7@H`UJ1V)KO;)z=1mSHg9z1Kha8FIRfK)QJ*kZRuI6~%GyM?W5sPzoofVtk;gNuft z;l&0~r`0Rd9Q&X6bfvCwtb0JdGjjf)&VQNwHeBQJ9P>mnPk?D69T`O1kYwWP64|7t zl6PjVWnZzo>@-@9da+YUU`jd9Z5F52$H%yDm`3gDOD`w2i5q9r03 zy0_?GwszZ8arfesZG#*hTa$bkPmsTc?;a?7(Jtqsl0dk5(pu|3-KsC)nL(C_QAu!T z1Zme_emZR)6YD*Wo7C&mby|JcjMGXPZr1$9k-*lrPA45lTkgYPJH`* zQJb#UL20Bnf~By>uH#6o+w0<43xgx2B~1jDZClNZE;VOXUN%vMy(V}42p?l#Ie_;6 z(|x-AWzob8N3z2}zT<4kSek6FzOXjR3kY{=1bfjEn9idDskgu3>@AO-{U5|2_c2uh z^75K)nZ88B5yw@~{jfp@9hao@(`#$f|A0>~T0YV1omf8lyyua7&%WX8**CmSeUC{J z1QL2B3Q*mwF|1eN&lAK4K@b(2Fp!0wf`n4Z^5`h=w0+C+@jH$$KkuE-!!h#x^WPv3 zk$20CCR)VOJEk%ti1)~obiPR{7LY`dT=;ZAb3EA|{%)9%CrbT5rHdd4} zlGC>g(h)o?!Z9L2%^*#d2C~JcE6cC5fvm~Gs;<0A7xg33Mqnop9uEOe1eo-ERLGXf z`fisd*ky#?1O|8!s3c9mt-|JWmv-Z3?%-p2TNfl6hR9OUTgc1d<#EAnSRD4?-Ea-g zrUm=0k-jwg!8M9U{Ycr6V?PrjWv5whc_~>XaKs^EUdf6FEE&rXJ|#oe8YZy>L`NX# z5%@Gqi&*%Ft_*At*H}D4Zdj_xE#W8QwIPV5Py1j}jF5zR;!;`9E<2wpG(p;1{3bXj z4I_Q)44lL?;hiiWY8219S0e)uB&N={PfDqagn2PD=gJfea6yW$r3)DxrL@5eGqh68 zsZW`WrL>&mjBh9FW2!dzp94~z$Pr>n+OpshhrTcYV3fj8ha zzfdAU&`M?pBAn5v5DkYKzDcq3R~K64V11vDSVBl0pNJ5viprtpBK(*}{sIPiS_Okb z<59wxX?PKHHC}dY>YF}gmL|wqP~%{dG=Ki1RFEl;fbg8$qyMXJAhZP7x1P#<@L|!_ z0$<0iA7zL+b*H#OT1EVCWND>YIzLRFZO?(@|W#6 zRk>zR@1Vn;8ZXAGD|o3I7vhTWx@u|T)RN=c;5^FSIYWSG0r5Z9HVa|NFzRr!U}vR% zGzk}86&n1$M=97#MEF+5nC^m_1t}CVl+R$#5xb!wxU@!fSwjXUX0R$!H#R+o`13&t z>{ONz5WAd8x-7$1iSGC?>(M$@qtt-`D5P1Z3C<}fI8b4-t?i~uN(d0;a{4c_O!TjaCVY` z^&6Ri$AhtNnkJe1V6(2pmS-a_h^lE8I39+-LEb!osHpce;UV=4xTPp#I@D`AcR@0M{6*StxIG4`W2GXraO zkh8gAFG?(p8n_5~=-}U!;^`l? z=_|_CkLk$&|9q|&nf;&t&!6*;GAR6KPapf;&VK=Xg^wu(Wlq_zTrc}SUVzBysLe2Y z0E%J>In(njg4FQ~=_07G80|@HI39FiZI)yHV^V2|btvm3ZRaH}U0E{T#Uk^e%rgl& zD)Vs-I#To`f-P9h!_BqD%jdhy(8=QJz8)E8qFPAGljOxUO6CimrH4iM&9fWeA#VTQ z7Mt_*E+q+AgLJM0pOTeeBv(JU02 zySuAfFn^h0fKfxITP*8V;!@?G7Ki)$MQRzvz_7f9r9)E_FSEQw%bZ!A>7~*YPUky_EM6;Eu_<3p*yK_2hneM{igrl-zMd3 zJe|Utg7g1={{Nw`B0mSee!p_H5wHBd zKl59Bg$kcmYGrC0eDC(VHT8`kvTp}-g+2rt`d-po2dVVw-I~hjv#*!1aEqL23k8+! zI`I2~(e$h)z%bbl>cVvHs|YQjuX(*5Qyqyow$INQS71N3h8@2A*kPjmJ9rXo`(HrA zly{M~8tIyTSOxTsOSm7Yc zp060nlya%;cZ@UaRqnTu&LD3l@4yVh${%otyLm}YhDFH;@PT8mF9Ue4+Chkc9@bS~ zUbbfnMe;4rs?1kPrEa&F)YhijD|)H0{f*0}TAhhP(!g-J1^R6EvI2STA5MoLnB#8K z^e%&aF7sX2&n^?)I8=XqdTp+C*=6J-69XaagC=DuK|XD;T$Ueso@M2AQ1tv~$!Ea7 zH!$x;0ugjY)D4DFkn>Ok8TriSJKjk)|E#fbrrT)gH)piPOyzEO$;_f~C%)39ehtKt6>6I%_p0C$Sj4 z4ke-A5L0w=c;rl8Ioed7yvxasa{$;EU`d23L;vukf=#KaS^>-m;h6@Jpu0>}nZb0X zF=3WW?G2Cm{-gfHao<1gha~i<(Dj<<9KQXqq%SFm=h)vo{O#m2$~5K}Nc8C;ow)!+1}$JWu+)Y}iXc;RR2Zd9fC| zQ1sQkRLs8q?i*j-#p=b*XS(WL-YbaSdt=X_WXTW%{X5^$+p5_9u29>$-ciMq+utVf z$8BR>*Vheur;hy#bQ*NCt5lU~?7k1tslAZS=Sbj`=I}+xSjBQM&m1p%nC;B&3v>K} zthi9Zb>BT#Rcg1r=}ouQDp!4Scc&V-bLCgQW8Tr{9(~vFp-$7Ca_w^C=0*CP30;T3 z1^Fx&NclG&b;VEJcH2)0cl+a$uU_?|t#_WPY(>euL28rs;_Q9XooiZC4Ts!w@qYQj zGr4+4oTjov86INv`t`5>?am*0{Oe!;dI%4xuf7NSodb&t>_M2f9XYQ>GC~}{CM#Uq zCr`}GOii=ec&*r|u$dWh?)S=BS}ByXxb#4hWy!C`1sX?xUrw{q=z5Rv&V8kfclttn zDj)8_U^t>n#mgV$i)oJY^!}`wjr}4##c}+4c$psoqyNEE$eO$T-A3taxbQW$hxoYg zl)qE+n181Y->9^E63?jH>t{o)bs>z`>WeNpeOI#g*v!`R#_qcP_U-QM~Tl%R|ilroDyO1$U~|UFr>LER#uPju0$h1Y%}+n3AcqQcd1C zb^CO^Grs%a!QJECzcouG!!-Gha7ayM>w)XoDH^ zc~z9sie;(eFyAy8ktH7hJ8v0$Sl;QVhZ4h#zfh}{%y-QmYzM*kCA04`8ye3t&Sx_s z4jd5VK;^ay*?o0~bgo&2#m`Lm1ROOEE-B-En1^-}fWysjh0erFRLyZXc*G-Y;m^aE z`YmNud5)r_pj%~rSt4WR6`F{w1ycsr3@*$cn2YcMyv^AwBwzFp*GgTCh|5d;Wss;l zTp}`PxkGILAOE-5ST}Xgp=_S9k5l$BhJQ;*LCbix6crYt=;QDg#~*)qVdiF@fm>Q^ z4Z+EdMU*BX*jl7a+a9+rY6<~QF=G^gu zqnW};t+$%5vSbM#SC3bf}hB$`rL>2{TKpK7+LpiBh$@J8}+ z$+mmBa;!xaK+8QV(LG=quSU0&CQO$-3esok2I z#dCz@@&En^JWbs}u71XA`v24Vow|#`(s9beAd6y~Q!30Lt_74EZdmZB#w{l@sTPGL zn}9LbN|;rO12AOCuEy5yZ8avgPMzAC*!~;8;Q#2~@&BVWpn2BcyDp3?-c3G6s4(DM zLZW$=&6yyYZ}~`vpxUNm2)ONf=Bv(FDWyd9(}^O}SGRv~MSo$Tf5q0;;^NkC$b(*$ z`FVBO|?j3zRz-!=#(# z4BkUf5kZY16K&GU9~o8?H<67SNz3}({;->aE6J`T%us=k`F&Iv_1gA7|NdLwdiuGO z2X`ez_g|7dG`2FCK6=2#vWWeqBsoC#?{{5w+_i+|`G#rhGzyEs3TPmG`_aZ%|9PYK z*SzYh;EUybRnV;wx`Lu8i^0qN1Dx!n9I2Z@|w;(ArB*+uF`d_H^c&a?1lta92^_4 zeqaGi`e`DtXlkrE2dWM+D7xgKLDi*%rIU@%bz-g&4<;v@J9WhhjSPd#>@owhzt}RONNN=ZKrxFruUMLPt!@!gxjCr^NO}jqB}*-P`za?hw5$f}wmZA|{Ihfxogyrp zaX;PnJn#*ii8brlyO-O6g)H~krFAE=lSn1UEKjJ&L!+rA(hXv0YIHa>4LHy@A{csx z<7nzPLUYGf_#*f>zX8|F9bK&)AAkhCfGT$#IdT_1ww04Vgr%Rp`|jS3WfB!l>L!*K$mSr3G|I~+2E)9)wmYa1a^Ko9k#r~A!okK>FS+)r ztK2>7^LHOUde8jE<}0>l$9I*qq}(o*+glxSZsWSE?lFqfm5r&puRi|r?QqwXw@w^= z;DMtPw_dr6)MxgN_xF~=ayhKpMp^RPgS~Pd?3IT`*pJv#mx-20M7Jg8DH3V-u_dAp zBY#+@OG)N|$tOwKumLU3tFMv{+A9*Txv#>|L0LrhC3?+>QzwoQ7t2WG+r*V`&15z% z1tf9|SNv`eoFXglSeaZ2f{g|&Y=85_%TJzs`H4>?vC+^A1%1pQG)^3NTh)`qs2U_r zR68UQ9Kvwt{009;vN9x7E3mXN21~ztg24VKMtshHMbD9+2PuA;a+mTd<>!@;DSxQ^ zopK(O9nUNDBpQH(*O$DRy@jR4QP!|KB5;ruvm@Py(Y6|2PW{o9i~$lZ>%lTI2e4ze0d0=6Jhyc4hj&Y36aSDRNl8lmQ#VPIyYe7MMvj*TcC+B?i50mbm!_5B4`YbNcM?puPy zsu}19Bf-j!+k5v^F*P-!!3f;54@rbe&F&km$Zr-(k?9EGJHc2K1x6`uy2MrSj!%?G zP;}JL03UMlJ8UcwuHk83LS-tI+U|I}LatZSKtlkrkYoi}?!u{RX#9^zHH@kR6uY5= z_|UZ5$#6MdcK2g~h{Pdd&H4GZhM5`y+B}1usxy9|n$wNGqgR^HwD%nkj&H& z>|y&|q*eBGl5oq#A{VNvhOTNp*O1rw2aai!9IPsdV#BCbFg+3rafhFz8V8jHcCGJX z^28!w7U~3PN>rjb1j8hj1}-vx4b_oR86#4J6EN|<4z4#9HWQS%SWJPx5Ah0K3&)F7 zRD@ulYdX^jm-zGlcK$EH4t!k6lnJnvmA1<~+LvG&9%5->lrHXK`8~Kx-5`e+`BsZg}QZWaAb9U&-VKoL7EBfC0is&EL0@qdT-b;k&pAnslDhNPS30Us zu6GkUOS52XvF=Z(>hPbwl@Y%EI5i4UqW<>we+N5r4`;?#l~J7ZkI5Iv`#}G<{{bMtWyyVq)Tz@Dp`zXs-?HVLPpG*X84dH{Z#G6}i2Yv|dl|gHJVs>&P4V{f)Uw z$(`)@p67RNO&gQth3#!SusMAG{;(b_R*QpSvFc2kE|^rzFw}Yin?1%23r4%Hf|K_j zx!LD`46;9%@7RkgqvP{VcZLA zA@bJ|F!Xy=r#py=HLCldB%uT%>3Cd_u zFm3MHoYtAH?lsh46m4+f($_&CiGvK`idf%Jx3HQjOg5^j;Nih(UsG9GsM-N4^v*^2 z`5tKAO&D#Gw@P~^R##s7*pfCRhWP4vjbaCh!v`bCz^6F~2g6P(k#qCjo6ZQjC|@F* zPxKET?&H%(K@#aY*xZ$I>VSv!Ld`Jj&?i?>qG>`mO|#LeH+|RBCoIwI>$RH;flsw&^Z3Xa6jI^-DS*+;#K75<%AoS7Yn`eYd`;b+qj?%Vjegn`|%WsIo#Vf$B)uTLJBIKDoZoLK=G?pS_o-)Hzn8U_h*6K5J<(@@)4W%$pSi{+>1 zB0;-C5;SywOUTpvO2ML)7KJGZbeCEug zhtPW9VJYXo4P*a>|6A-t1?dR1p(J&Z)C4=P0$+y-k_T*%obqXdApH}J7krn&16Pn! zgF}~}SLT|-lZ~L=GOF%M!6;YNjISgtt;We(g%qdjT6t_zZ%rq2?n^Hz3}>e+y>w6i zXs~bV1ZmE7XS7PQR!u9}YAbAQg@tgj;#C?>6DC8)NR4^Rb0*!NQ-qKZ~Zd)GR$>NiD9nqSCmNf(T&Ut(b7!z;tdoImfoC(IRFl4pEua` zF+(j7OH0ktMZVmO|8)Og;1jRjnIGSM*%joWn!Bch@&MZ*m^3;w)E}SiPuGVNS=Dnp zEC5qZ%)~xf|H>+Uu6va?_0>!;s%WcKQfS?9`&Id~B-M$yE@1(kdU-SLUqo95Q` z-+c3HZf<8*p z1}|$Db@V#jAl=a-fyEAH*iyvsMi7S@MeOSu0{Cb6iZmAFGn(tp`l{plCDlLWGcaSl zlIAai;KR}(OU%~#u*{fho3p-L5=VFS24|*jblC3`_U0nynKJM@1_&Di8(|Ya`Ni)*oC*APv{dSAFC`W1l&e z5_RUqulZoNIzKriq~^?*NzthX6U`;=HwqD{I&-Da<)xLaUw_be zOF6$DRu4JnUC!SJyS-aza&DiOIT4{WlqF^TB0Ou*VIn8Ao+tfmkd68kxnwNZ;SKEW z=w~SjdQ0T>Ya|S6N5JYWMd|7CH2{S&U}{c zB~QRP{}I+R*VI_{gd(ln8j)3vUCGCUo+{!o$yU=OC$Lz^iG~+*NMA6(I#YSUX$LG5 zw1bxi%Y7JvXdI9HX36ZdP|M3HvGEvNQZY~5T^{6Nn$b zzv7ZcQwvzqvZyuEtf5=sqJsOa-<=fUkz&rjh{<-9Rq8*EyEB=RN7F zCLuAwmWra{dY@Nz#YTbB+Kla2eFwB~-lVR9eJPO1OJmqs&c1)S9U2JVtU7{FYJvHP zz3H0l_t2_2eXl;Rfpd(PTU&9&JUqmvBr>8686Iq z&hcqIofW41bz2oCQUAb}fVI64M9cUEh&8Z-r!u$H9#ldJGwWD2UQwH_QLe6L=be)~`qIRmb0F4CJYh~v0 z{hflXZjx?!yh0CY&RlPQ77ompgm=B7bLdPby!yo}HyJ_OD$15D~s-PMCL+LCEviR;xI$_+pn3hNs8QwwsQ5_OUg?u$(ydZ3GT-9MAC`-D5BC z!dm2yH}$UV`?iNIdAnfQ^K8!s@x6;_ocuAhqgNct&hjQ=id_uI(n`rY+&Ff(AHnCh+;nSw47hImS;#yfU)8p8%csM4po;f#~+LB*OqKBGZshee)Z~U-jtO>zc=}J%Obs z=gxg?_W6eozioFv>CX=p#F!i5<6^Eb_zyNUBE0QY4k*u3u28O0u2XJM&M0>(&&8~3 zx7S579T-}Oa0p{Kf5wW6(IXo@c9yllu*cy9dx=1N!4bwF>vYGsV57B~eAm6O<>)Jt z|M7x_uYLZu+hR9*Emv=5{2oegz3t+E#Nq4?!fxJq|6gN=wB4`>i`&1b+T<$Td?0cj z5cFDD(`dX)1)tkF=o_}vvMtL#5Cp%hX)Q_*==$xRcfd4Tw*4+_jroLWwr%^6u3tvC zZ}Y%FA@^(ATRiU*TIM-z!;iINjzcxp3<8Xg2=EJEM1E75g==;X+!0sv&@Rj)!!XLg zNLR68WY}Gnt=nj(WHIQmLC(0EEsX$vWkW;@))PsV$fZL&T*kd+=vK?fPla_PP9Pey z-r^*+Wyi4JYWY=grIUUW6aW&!xrlWN+k8Z*uI#I!#PlhR6H06oF-OTOZ9}iM;{^6a zr9y=fS|H(dMAu@-Or+_IJl0;VXQr-=h2EC~s&>jz@MX{N7!L}=rjD^s)3juB9yJ+- z`Ku#-m`_=pQd)>Hs=57G5QVjnQP?x|T?XRSZ^rPIhKlTU)L=Ty&^-R0_rw{>%am6s zZ&2Q@yifTxVv!11s5r>La#)NtF0$@_c(epuHZlCMkNz@D3%Kyvk9~l;S;~eY{c#Ua zIB4c%d?#}{ve&R1G?OuvKJQ+%eDV4W#5!-Ka?W@1hIIT55+MMV=E!Jqu_ZhGB|T^? zI@6NhVYtA>G9C~E9O#k2(7>WCBt#qb^TT2k2Q8tW*RX;etdtohre}4#*|z;+)sOus zPKA}ieMnPFq;cd$L8a(B<4s$ioz_{eM~5qv?_TA`aMiFE2evyg=lbO)2=^!mR5kEp zJMfxi&zqZY?ZKjLtgaY*Z8xVYE2MYmwm02=`N!A>|C*7~(VA;uHxlE$redgL*minhnotk6Yjj^G=6=AkoZL+j8qoFDTW*ILhMKa2+s67>gp` z41!wGcW1hexw35PdpCr7$w5Xgy;MDTi7Gbs>gMu_Wp`&>zgP=G%a6cQ69V+x82;Sb z{vOj!CtrlMaypues_9>}%${DhPBQ1-C=r`N8>cp7ff_kjCQ0CC1q|1~B=k+#G|<&D z=*6Vsf~Mk#&rBRJmx#kmTL_;!`q zL)_3M%y-T4zb*&pCq*xPvt!&D` zg&Jm_JDF_S2FGeSzXIJ0{cs?BN6_oJ*I6YsHCvLc-C0ULHCC~h<0nz-21GOuwc(PO zs-c3l&E>sH#*>^9LOC*W@Y>8b!>5*^c1{rlLHv-u{{PlZKssg9};_duOs8x@3%DlQ&1D zQndXu_)LzlrF{i&jFGr(+kw#*e&W^ONwvd3u(&d}wMibou=TA`>8+cDUTzp^(3o<) z+gHHx3!D;|Jcuew5HTowv=Po zV-QL}8X3n2#}DSBBn2LI3CP(f!5w4@TPAsuI9sR*nMaSF+07$;u?vvNAGo_aartn( zt}Qt%{)$S8fbj?I=mM0@a)rVJ|EsXwJ`U{4M}=+ ziyY`q^aq!P%vsPHo#As`4N*?OV>VULe4$26I6n60aiV!)oFEDY_%nhzu$I(*qzmYk zH|*V9oV#J~bo*Eujq+@NF0akJvRio=W`u{a>YVwuHIMOYwD0Fhe?!vmN^;yD$nHFj z4fcx6GIsKgrQ|=ebB4sba@$0V0!vt+;)lqiiLJs+Y)P~ubcii=t<1SyGJz$oUFVWrvCh{FV%YAng=RrhHQr9-`~AJO zGTBKb-nRFy3K^f?{+>hVCx6Qzm;C*qL0D_F0>403i?ekwmZ1j=pPtuQNH8fSh0v&N|tTSARP0M*rkKldT z(lbJxYGZOPYjz|Z$Q&j2T@vus^5XJpFL6#32CBIF@so95AkD>?4%5!^;pXX9d7zSA zAT}J^0TE@DPfw?*t5#auj~mg(ij_<7yskw|&a>%5BPv z5b-x>F9DZep#_d%4dGQsm>w+&N-!8M<;1tWJn4y;*TW=_2qXO1@&=JGIjy|E14BWu zBc|VlL|Dw4tv<|cnEJh}H|)Vpe!d%0*N!MHIV6*O&nh+)TcIanm{Z(~Jk$0n9Nb4% zx#w9?HE36-YPD9Jrt!I?Jm^%5Y8hr-sa_#Y<|WOluf@wU?;8cu3~1na zBpjoWSJX@)G;F?h{gSSeO1cZo4o$OKel@C$Z++mhxE+5ei#jT`3b7Mg#pI@}n1v4L zwTK(qp#q7G$L_!Xt)(c(KmQB5N!|ss)su{1`<0{0bCj22TpdGX8C;T_y#ASuQyO9j z;Fv}p83{9hS2`~}9-*cnFc9L3_xf14k;x1$h(}}-u8yuKY=p(sm~zkXUbPY_JIP$N zP`E74xGlnOg0yc)Y5x>R`%T+4h+~-R5edwITPC;yS^{d(a!l2=T@B2**B9enQgssh zq#4>)XhkfDOC7^AG9$hdu7EDVPy9c<+_`5#}@dH7mlSq?F+>x?9@ zTtZY;kT9C?BF;l&D=s`bZzULI6RzO~I$>qq6@h=|$}7)s*9TKyVhetj+yyqc57%{0 zSwW5~Q6Y=+O34a}r6?B^qLp*|f ztuo!KGkVQbccMN0vU1a;+V4BP^%9K3y=UTDOsE?qUQ_`u>DK<*{0kQ`3SOSu+FQM8 zHt^!@&yj;{X;=Bu;oK=FJk-79MYky0g+9DQ>A)FZt=ufRFw>-hk-p9-ZGgh7pI3gw zd3K>UYRVb$F6PuiOY$=W_dwjKy!o+-?H*a47bAHi<7sg(*zmh{i9)-8MQ4jI7@u*w zNQ3SdUA@ye64V&=J#H8R%pvL-A0Suig$X1`R0&g^`6@q5$(f*mZC8yTH8|JFJE;2P z+Yd-9u-MLw`yL9$X8-t8+?x{L=3X(twu=ol3B3{+aNOla;^?OcRf`h^@nWi8-vYZv z*Nb2YlRy9SFKS`nI6r>Kwr3yHOh-%FbeFi>SbwvxX>R8-g(AvdFH;b zRt%RGv2c6ABMU8L!CMe?qSZ~vo8+D!Gq`uCX%Q(xU96Ef?J zT*3ChJNf6SjJDZa0v;#+rC)&!DF}A>Tc@|&5d`a( z$jCY&V}xwU=X?Qy>fmK71V2w~33W_`Ke2`ATw5}rhzS2)1p1j+x(p>wGL501?}iZq zmT1y3W#A9I@kS8-2~}q_iV$B^n^9>(D7{ey4~LA?TYe1|z}unfB`RxSqD(yn;v%81 zB921}6wjU(aE}m6C^1}=Qrd#al)ww_HQGH;!NWz28F-q)3dt6Jt{vR@eDE-GbE5zG zN8|_OGs-O1@bx8gVqOif)8agWZ+JR5J12$}f+S@-&^AL!jWYtR%-10p9HlQlx$i|+ zSpK!g98JVvpV)1#b!*jGRn0O-8xK|M__UVmL%3_&zEzc`8BrG)ncb`wimEoDlCVP5 z;aK0a-gKsaV({rRud$8AGwa9SKE~Z>X(_U`pj%(0tW_>fo7_G%XQ|C=jL-`#Uw8~* zMRwg>q3Z5cmDN@ni-zwmR%Q!~&0VU};{2t@uYb_tYiDE+%QvV(enD9SOZS*^Qh6R& zB`6o(s=QbEb>)-Fe^tJrd{ahYWD~9!p^4`G;5jf7!g7unp@tG#YmlRW=I}YNOZNiI zsJy0mFch&uC3I+Z!L85t&zn>tq+xk3 zgT)USqL2yj4o#jEgwAjD-CE6k#75Mc<`{Ue)#bM7x~3^wQ`9eX#fvqq5H*|NunLgs z^(EhNeb4jW3>uz}wW3Vdf>zP+;zBo>X~AJ#&txy_l*^qm@w~|_n*jj>uG+%5u;McO zHm#ai);jzq!n~O@opNE&7*iXzmDb_cY1P=W_RR{F9@BWS!gQ5)2fB#=-u4QKM$Jdl z)CR+a9ZI7(fj3>6ujl}MIm&1Aq)wL=b8=9VTY2={76;pSLkVKI%77aW3@&-DC3XY zi7R{=^xB6NF1s&67_AZ5X4sR~ZE2#LVc{TIfA3|*7Zxvn(bbcb?0rZ4{_VB+9VYqk zcH_z`U;FT{87scOV$_wKb5$9_@t&njf?fHr@bXey%{h<-fxZ*J~l4qF-uB$%vbFkwrLDp7sA=y6!ZG=nukU}z z?C130e&~L|tA;Rq>~P78K{q4}=4TOZloO6>II(7pD>m{zTBMf^MVYijmz;g}Q%`+( zVdbg!zkhJwedOHsIdbmAiN^L*r13kybD?JdIlCzM>K@`1W!;R4E`~voIp>3&PUp*w z4}Z8pjy?SFLiwK3N3XyB+lRKlee=yE-u@>tzWwCZR^FGT90xf(0q0=I3gEJ`0KWdm zmCu5JmhwI83NXd7xCI#uhdHNFlE#SPOLKHznO@KMh%?Kj7!gUAB)ZXvTw~Y==^HoY zYj4z}+3QOL@{8Uh+RoGOx}!b1$XNN>+4bXhV@`}Hi*363MX%QwHX#Fh0rt&&9^Hy5?os#8qLHoTwQk!BQXv4Iuj`^ zj+#ZYir{rxM@3+94B%LLha;k0)hrlCEgiNx@sEV;-3wEYb5aPyjrAZZkc@3^67r8H zem4YvB!2JI)FY3anO=M3^yzcw&OPwJ1Ge3k=MZI;f}zP08pCd5E;y|v=(8OO#aVTWSwhcE^ zEP$kN+}Nxebt!oFJ0bnKEg7wal! zJ<=SNc8@;w4RxzHk^Mlo?<~$50EVLB|=lh~-NF{aKX7%<8A05*gh+Z(>FkTwzn__1QhH zZclhF?51+k&X{J$5mR5hBX))`DV^Kz^pJZMvF~QS`K4YZ1_yZq1pK-$fwB@${fy7~`BEpVk{*NwC0d^01Kmt|F_ebmhMQEr^jc~+?sa=9OYUGrd2$(qfq z>Nhl)c3P#PBfh&2-+wQB{{_65VJqlm0X*RYgyz=L(%Ifm_ujVja}!nrJT{a|l%G}JqkIUC(@(LUl6QyW%?m$5@`(0EOiOJ$7^?QPvJ>P90;(>w7U zVzaC4qR)-iUZ)f#wX$WYV@a48=I)^63R&;5G?{L8*v{79ug-;xhUs6X>1h}c+_6IP z!oap2$F^T{&pq!if9^qUO9~6!aBYsTP9zlh8p{fOgPxqQtO@7pd@BRQEh4IOs_9r6 z9Ld!+x6~M&h|Z zgmSxbzw#hr-pQKQbP4QRE<4|{L6&p`YT;ob`kE}NmEKlAFS;GUxg;?DwUIxRjL1A? zp-WG8x=C*dqXQl$3`XdWSaYA^*m_^HY1k&ruDJAwT}+&r&W$tM=aW+6SE6E8$^uv% zD;MG<^XOINI@W;2YTAg}^;+}zoMV{o^NQoGlJAk3F7*v8m34KZ-#0_%JDm-~1RtLl z;>V^^V^a9Hy?u4u96u!tk%e9g7t*tYsV6~J)~Bp#LzIj$I~Xsu=H?>T^Lo?mi3xkj z{F3Fq1hjglZy956fBOzs>SxKFaP7z7y2T)Zu7uD|l|)t3$% zxO~U)BU}3qEt0mIx`o>6#NjI%56!i}KrB>O+J~<#y?XpY&BjN-u1k=wF_Ic{D7zPA z!jKO6a4EkR@+SOJWwICBqI0Y~eqz;db{`yfU;MgC+YQ=P@bB*{p15w4u3ho+$CoqL zt3;|5E_aWw%4=R=%M8BbiZ@{-`Kt6yF()0&tS|VL`My zi_KQ9{>d!P7BWnm4TcK?Q0&N%n5Dhk^^sKw!zCCp za2)(XnDsc25Z9v17iCX^bo!82M{*3xsFKW!<~)Nv#7WE~``~g5qly<{r)zmMP5O?V zp#(*mmL=FSZhqzRH{G@4P) z2x)|bBtQZo6O3eX5E!rxiw(xRYcH5xjBSiD<{2$(SZo7}v7g`DeGlWXi{D$@yLcTI z9Ip2FJJokIgRnpE&o_5&-wxGPr%s(Zzi__4?-$yb^O9qmYvtMvXK;;=Q@M1o*RPjYOt~yo7qaV)@DB-UHXTgLdi72f z1raP$W17+n0qYmUY?Xvz+u)jBE+ynEI)^!oIAC{BXHN%nOu}U!<|bi8ZsY~Tw1Y?s zrEr<+5!wYyuOkIAXTp?5RKx`kB8$wxcpSV_*qJm0crZT8cEdPH2h^-Y3b z6V0ez29qokLQYad#KJlJHUyFw$5QH0vbeZN!Lw{Q#n3I`q&E*WB6OvR$#CkB*9AnU?UWn2N@K(G41K2bfqZ)w z=NM_e0-Uba6$EK18GCmJj)cV{SW1GMKzt~+Z-7gndDQD?`+Cr-?!Q==FB~X5TKL7n zAA?1lg6&*~kv^lBi1IO$s>B0KcnL0O))=mS_P&>2GFN!Ym-*nnf;l6KXLm*}NQJVV z9T|xjHbB;jyu?^3L}5l@BZ*aA^%#$zle8lR)P@?lG0MvA5AL`|$(G3&M|LM$BI_dGgIveN817N)U%b0>+|Vo$47cQP9qyKmiwZCO=|y0X%#VSc zFq=L$qGY(g<>D7E!ht;&+U2W^-1snsVgCXq9%1MYHPyPimm}8$8~%=km6|+ zwxCJ9WE*fFlqm;;9eBB9i7+I2JJXJwOyc?ZYUSX7mQZtJaz(2f#{#?rnxw7f+8iEt z6(V~x@FQf^AtWqXh&2VjSP9DL)PphqH*;O^&LN(#0?({ai#p8LO)O!esIrW7qHn)s zk$IU>TP*K=MNSQDZmkj59lqL2(Ww}+JU!< zreMFAZwFsO8mf74lUmpR97P6kxNl@jI8Q)uHpt}D!osY{PAor#TbU@EUYo1VRiz1l>;-M6|2j`077(f;Qi{~ zuikM7(e|FY{Ttu7nA7+i`4D)vNumCIcn}mKU>pur89w=;a<^OB`xSUBS3i5*OLmSv ze)BVTlMi*vd!NBi$cb|IrZ>FdHK~9s*y%&I{PI*YdDUv z_Ygk5bN)+D;6L)={ddTZ7|z~jzx1W~`LpW(C0q^^W{Lq~>*e$A{9H5!?ktrN1e1qV za|n9OEzqytbr;btMY1jGqGF$D)E})?1m~B%_?yY(TbB%*Uq4izZQ?BZ-d4W7EZfU| z;Zi&()}<&WaWZZPCJU)^#mvVRlj7JRy&r`PEl$P@65wZd)SCAJPTg|q|Nj5B-x0GJ!N zDAbbdE5-jkTVU}2?i#HLlax{?(qS~?do-=ik^iY{#vE~za_TW!ZZ{!hA44Eji~F@I z6a4e!oajt7Fp$sq$@Y+jwYw* zeZbh!I$d}!2a^FRi7=PTZZ5dV7I{~8dy~GkMr6Jd2;~?=8|i&C*1^Gb7}tbVO04%pf=4_Nv=%d)13qPTzid zW##m0x;)p4?GI>%R1}yePyj(%_kG0oCq)gpg2?j!zM|YF2`X0xG0$HBTF<&D8m3$iRf5qXb<%F`ckhh;rW@H`Hc#@AqbhF8-$=dz< z-u15EdRIgZ{mv6d@3`YA>7Co$T!?yAuWC{gK6=-M;VQF_zxa;V-$BSnH_vVQm0q-v zbIkuY@EzU*F~dsXpi=(1qws)Q@12zsDE6*Zy07Sih-PFR-B-%a%MHK(bM61bHq^%% z;?`3;NU@~Xwgvzl@(Degz?_od1*oXP0j|3n1hcA01?;*A5ucKObp3-VFs6~Gh z)>pgT)xEz-8B5vW=N|dvDd+e+f5dmd3jFtHKTF=E_}7*S#|k&VO!At-TM9pdjI7GV z$AsWIE}raShJit>!!j7s6lTZHSiY+h#{*lB<<4^FzDjh=6bTx0(Fx;9vP##g*@-s~2aDx$$K=9pP%;0N zRaa+!Bq)qAE4bps93{Wi%ou0yyM7eSztz#5TdtmiSu1WIdvk1PHn^isYKtD0C_rBZh;=+nX?NVAx9748j zzb2S2gCbUs8I1ZA?sB#wz^OK+Xau@r+=}VKdMY5MAn(()iYFaI_qp7UfB#RIw?0xh zfpvIXm7-Jd82he}Q)J&nhZ0Nk`ie}OAUG*6xMwNK)&l~yICG)TU{#oSTh#xIeJ5_z2VdTk@1BoGpk8Ss|CeQF&$LMzw+wkARyXN$BZIl z3iFI7O0vZRtz@{UYCH zk{d*XBZ#v*(^(1wlVa(N-bbxTlS8%BbyHjrns(vJE4vT8>qqXr@Sb-*c;hQxdHv{) z&BymHJn_T@VQSjJZnyKnAAZq`pMLlK_q})JRo9(=VsPi78y+uQoQuA#^iCE~J0ra0 zU~+aW4Y?{Y6Vu724Kl^T{EkGaBwT|@CCWpA*;KLgcV>;a(R$*1d9Bk715WP{S*gCz z>6EvT#s0y=cgeY^-l?^^HQ!iYd7U_PhWA^aCtv&6o!S}ED zSJRXqv7R_a&b&oDe#1jM*Gbvm?9{AM(hfPV9mf+}IV$)7HXAO(adz=sG8ylm z4UGOY!{ULV9PVG32OqlP+~MuRhs9>?b;c7Po3g|A>5t#g+FWc{*Hw?sr%Ok7`{dI& zSn?*naBl9vfvjj}2WqYJPrR)pio=y!^M=QRW;2`{-e}(a^2^#;D%4O_G5p7d?0)I+ zcfNP98lU{+C-dW8K1hFfY3c0Z;w9r$7P^J$b69=Uor8!kN9(3DTRF`H%-8F~yc>k7 zDS~S%WX@6ao!*t>BKeP2xfpwM?bWECmH4$`IK26IQyy{qAelf2>kD|H{E)dsJKSd1>aWUeXs0h|@>N(0BQDQ$3L* zLc#$enNyX|Tq1FXc{Qp)lHhV8Jo#crVJF=Hz4gzIA0JOTh9|V}&H*#aVYRdC*tT1H zuJ`t~Ro7u3lHjdxeJJyaf?WI1s<4aJ@>`F^;1FEi&gB`)(m#IPnj}`j-z1aScsd$S z(^$g5%i?qw+4{yZe%=*5t+7^vvdt@u!@Gx$y+0-|dzn7p%WhfuewX<_u;UOAmukFP zJ6s~i>pMFamg(xs+NSRZnLXbn5J+G<% zj#uYuZg*U@t6Pi7Ql{;&Q8H(NN3RV;abx5AwfH0T#iFb(EhX(k^WN&*>iiP;e>z#- z*m!p=YU7V2F=zvRT6UlPt+O1J&rHd`(yR)8c`UfoU&+?e?6}N z#r-_*Jg)<{Sc`=qhG~P7y*Uh-4}Jr@gy5XQd?aA^>Iu9ircNy`M=QuKiK`u^f--_1 zE6Dfjkg+Bn+A>Xg_ONNZz>&!^7{Au-rb(_j2|K*$F5AB8dIB%WEe8$b8a=K_sz>*L zLvrQq$n~jdXYVn;XD+$xpX@o*44HLPM?H+Oi=KOVS?5f!0CuFRV6l^Mop$z84v=pH z7kj#$2q9SDwmz@tl0(BH1Aj%JEUrcpO-qQziF$~M#pH0wWdZtPG1&cl8-X8bS`58N zkL!Bu$N2F5y6!9Kvd;AMyk#BUw5*fYS=OoJmUU*yGEa#V`pK|wHO+%(E$i6zmUZWf zNvtb}mU)Mvi+rE>kmnYj>$?%$A&38|-n&%5v#XeyN7KBz7}+eQL*%cHhtKN?U+B7c zv!+i_+}eICc%*M$u%{1w;-QDW-^I*FV z{uAvLa6`}V9y=uMsM{s$rx3AY67hM>d~|a$F^ps}|8ruQPIOD_Z5zI`{QcUwRash_ ztSwdYKebyT_g=>!s}DHtE#<$uS4UxGE z^%fEH)hr?{+KT#(Rcan9mKNHy!;h`|R&ToZsg+u7rTTXze@*&!xw>~RSy&QnR;~w& z3yTYLOC7SZ!U_HSqSOL zNm_a(u9ob;PxOWM++x44LvRsSF*l>?GCoK?tW*hZEZkFgwD8WtCkvl06s9?!0#3%0 znZZV$^d00<%;}`SW0#6IL2l6|9r5 zB1O3=2;6e{P)q=)4YH93b7_tO&SBrVUc?mh#OnByDQbaEC%tJZf8O*=Q*z1Kjjm<6 z)`yd7U`uAKF^+`+y7 z%nf3c2?FB=y4x-49+!I83S|F95u*mc{etU3aHdyuvg^pAADB+h3LWBa-5=!o zQc}|x?=|s}q{t#d_3nJ6aZcxrvb2P0TDIrdv*6T`qssBi@XY?_ZFg z0#D;kWIk6iiCKhP)(Emm6(C>aYx;DTV0jLgTTGFKc?uutvKozXW}4s<-Nh&5pA(Zh zNu}jqI8CTuPs6YeR;UKELexxrLr^CSgefU#REl`L(w zlGvO$CkIAY#4LR%WssUkz(RW-gYYzL)K;3)dfgV))oRFi98)c-tiC@Qr7fpu!Hi#x zq6$rfRdibED0;N1iL&MF?#{skrQ45Qtc#{s!hI4J28AmNS1SZZ+J%vcP=tKlxGXodn;ES z`1e$XLF}2ua>X!;CgaCne)nxZ^oM%c2@R7|O|uNoj&)K?9qSwC4nBId!FP7-hfZAg z=;+pC*%AM1TsXygvD7PC$`fGSlShx8xr2cHvvi>=b=4;m7GAC&v<3G1fjp<%Q;NL% zer^^+yJ7ZL1}AcPHy#XOLhP(+qivE5Rjm-5*B03TgA*ZKTFrlGp;gWmxlm*$L+W0z z4JuD895)Svq*pq z6n;-BO+G5Ua+}xuq(q4l3xx^bVNKvF9Tr+C%&CU_*^99w-a&N@Oubo6tA-^I-lmzM z)pCm~_MicnDB z8o@PecxQiIYqkcxjtQoGA2LI6fC1hH;;&d}4eM?qdBv~Ib$`<$zUR+h7?Hv9mAyct zSHP{2+6KFK{`ND6a5cwD>x3m5F&Ze%x4iko4=d{Nra`pIPmWx#*e3isO4|1YFd5RM zGhcKJr`_)9rF71cw@QY%EuwD2zAQr>mQpYy%VceT*>MdsitwIWHN1INrS0! zqqzJ4u`R+EN1Qr8rE|aL(AHw5SGd$~kp-`i7Mj>&`|(|IW+}h-bx+7Fz4+V7rYNcO z-0x_bW|K>Q2gnt0>2D;nJR1DbFFyVB7oYyoPd)Y2r=EJlCtmZKPrQb_Q@B@c`|)%x zE!Q-s;_zxEotq^7&Q-2BeU8%eXP(=j%3%YoR!--pvA=zlBhQ>Chqn$gA8~Dkjn^f|n6=r&Ju3FQwRIe36xljy<4>rUhlb4Wep1)FF|8pHKVF_TK}QkUob&%F7~&%F7!4y+Wt zjqt!~uefqW%XJPVhYWV^95djF<9^Q@w)g3dUZ$p}?|r^llVx2m%UZERUSHNb#oFFC zd#eXlzFk~7uzEmUBy#4>c#KEkLpx$+we8aWuAAQeuDO2Mu|_Kg>{i_@7GZBM#bzCV zCibqu!*z;9IKIkN;+p**!(8x_g$m61S3x}U>cZ;_Z!i2D>M3D~S%0>0o|i&_ued{} zGnh-iJDEZkW8poxhWH0%$&=Zi0sQGmr2(eOG!wKPDO?7aGF2_B(jmtptnp5+Wt!}Z z1I=!w$?Ua6|7r+39OlU{_zvzNhF#!_KgyI%{uUe&65=F_lLsRa(%M!S>FZ9-c9~(t z;EFhbUbKmHuJs&A?4lkxmL+4$V6I(r^gdazx7+jmUC#~8&H46*VV7)C?kDq`X6Smm z{rUEGii)tMX)O$E;d0{piT_U2g(JGJlS-OYBjmnynv243`C_r@xEeLdPgcDr&Q_8@ z*SS(_(DfjxjBndEf1sU(3lNP(V3lRju`QX{;9&_nk(TYiTUa0?_(Iq(M?v#2aa{_# zDUlQ%o}yiX-B8yhhnvAQC2W`!sV2i@i4i+u6Ql@3z8StVUYDRhm=xlMvtH|l1+@B7uF8=Gce z8F4i=z^rvjySq_S*PGGqZmGekh?dK=#GR@cRGHlHR@8eMN6ce^++}}s3s1hI8Q8o)_ zu<{EIr}SJ!oFW5(S_~RY29pNcCCJ_YpFzXoM5=8u$>WMnUY)8AhyWJk3Y=lVrW4ir zxJlrY;(X@ts8CTQRrp|;*8_Q~b}~ll2@LUFI_>9$+qoVYeyG|e#VXI=9t|PB!csWg zDMQhjRMjZuQaRvtI zF{V*Xf&)t|NnJ{H6aeN(N2qblv@|4(R7EzD2!%CASqEF;)zA+_qzR%*C^*a-g7NX( z5Y-O9!iKR7yOR=OV0a>Y1_SePBZWtS4;%Od*>-7uvZvG;V&A~|t1sLv;5OwUze0EE zLfbs$xwQY?rADRN)5_(303J9gcYB9rG1VeUYFzU}jTL!nN~Sk8sWTm1RYbrc#V^w^ zEyJYl39isb$n&e47`8h6Jpy8NoOeK9^tmbky#jfN}`}6u8|AG3?U3!T`Csg`nTqa zyjK;|FmwTKsi_Wh5TdN%#Y2FeDs^GDMl5_PU{bddI87b#$ePe4O7bu&Y!fb=s|yJO zjY~!Y&5pTg1;TJ~AAZ~y&=+BdJkTq|O)c)E(19AZO8T~~M=gWTk(k)b*QnqnXpxY* zE}bSJCYKmQSO?weGWayK9B*FpUhP0u&#IMRxz&T9yyvn)!GPHI3*;}zFBe`{_#ILu zchWoQ2k6&XkzI}XEJT;2$sif-&lKyk2mtOzRYh7OBHqV{Ui?u|l}@$@6I#Ff+=Md2 zyds+&&NL&K1SezsoowXD(fx2?I+zS6gN=L*djDqzDUC0gwPrsGT{?K~+n4;n(Kent zbf=4qZBzFm8aK_6L-{Eo5y zqzqi%)Gc!Hl+h4fY}`hKQ04V5SP`&=9VK`JKckHuvVqrfI2tQ25Q6a023+AuGF=}a zyZ>~6u4j~NBuHH~7_P_QNy0CjT@0fY+K0PUyF(3H63Na6VyWc>ahdU@1LxwnRyOpx zi#|Wz#Jd=bOzU!|G*a zV$fy?yR=kkqVki4x=36{2_=M(5DVsf%L^Qh`u;f87@@Q8XeMEHv9aWs;9r`^SE^Ij z_Dnkt16Sv|luIs~)tefzT`V;nun<8&1Pp6pG6R0++od9tIGY$b$pfCkT*d9eCDL6L+<5yA7A#NJnMDxdmW_d8%3uQXE zW5E22wvNIK=tcYjRn+omBw^;&Bvq(lx_^fF9C<30Swe%1>P5npuvf=6M1a)uFr7kw zf#>ePT!*h5buA)^Zb+&# z*f|=F+@h=cTV+3$HIxGPjm21$iGFVCIW-k%Q>mk=$buuFiC$h4P_IIgg1?m}2af#jbGes5P2IN3_vFH3GJ$DpKOuF^!<9}z2Cj$?ba zp*uG1Hp3wGu^3ZBT5uu{1#JcG%9ISkDC@YW8mm;R;FuXL?)xqb5QaC zt|#=mNuaAyA>Kv`7w~_u8WcK2;FWU&la*4(iUXrYkPNyJ>Le*^Mi9X5p!=4M_n?5? zaD{ncCez^p>)?txo~gswvXO4lv*{-KSx8NwG0Q}c4oAVg0bJdSfuWVPGLzm`L<*LR}ZGp&Tx1I{0OUD%S8Gf~|$_+c-6hc}| z;O&o>UFaHfBU9?gyDW6W7U+JN(l0>_%IgiyhGAbSMwY+{hp5U3xI4H~hv3qN+tdxg zvzC^0q?2oJLr?r_;RS{JkyQ(P77UgYSxY+e9`b9lj`S#IO=G1FxZ%&`IQW_N_2xRaU3BtKb?CYKt@TJv__A-NW zb2>$jfxBAWXtm(9T%0TfX&QRk#CxhTfBMjyr(3Oru^};pX^@aSb&z^e(}!@|f$PYM zEA37bEA1TcU}2gygau=ko4U)|X+ksR*Qs8b>om%yC9IXj2??~haePka2selJIncg;e=)aLFDwiV*f8D|1Lhg_-y~|w9CJ(WD|ycs^aGOx#NI0w@dcFoaboY_xZQI z?elLVZ+g%5*RMa``|;18I{)r}{ln2~s^|ZC;(3Wp)075=BZ=!0-Tnz<_EbLMd9g*3 zgxY`h**CuNvu`9vuYb=MKREx2(e-y7e`)-|FYW%~CtkY&`#k*EvhnUT@M4FTVA}oV zJa_x?x8YGg*IoPdFRY%s{Xpq#>5E^y!zdPwsHBM!HH8C1(Xqt`QAyEd+_ldIff1#e zmPY^Tjd;Lzb9ip>gjxg+O}?A`F%n@?{I!`)y1!hw40=Ho^XT5$j$9y7J~Nj60m z`xFamxg6sKfxC8!ImHP+MKmis%`h)8lIRSpr?{vwdkUM!u*J7+%hELD5C99#EUzAU zb`Zx}Gt_FLXoMA`q*uVJsciuFFY(XuV$n$~q$tynR%sAon!N?M`xT#Ndhkn8R3+Tfn-jx7n({KgYL{Ci>p z?1kLABfDo%+ivST?D*7jJusmbD%18NvlnSbrC4KbSF6Qv1UOD#Z^UeV-f5OveuIg6 zT=Hl`+K*U51j~`lnQlqT_jZEJB;GZ=WK;9)A`l`Az)Q2;(DSXU8XhsT-Ihu1lF~f= z`)5B3lPcypt=0zhbVrz1$6Mvx=T=3Yu*sWKsbeTx&>;tQl5GrVYn6ijI+%T>r!p(O-I! zS~l+RsgfmdJ67y98YQ@ljNWF)9{9xb!;qe-+3Hh`Hg{IKhH<+Qx_E>I_>8P;uT28F<_i^*-cq@DdL zK5!kBV%HE|g-j}b%>nYW;_s@q(aq}}R7NvhS5Y35~# zE0P%Sx-^E<9qiDJ;Q;ZzS<)nk2*tYHuHvXu!FwMiI@FIU`N?%-nZkyO6w#x+NxDg@ zkp6Kx73%*?YfQ*-x`E)jL`E2_VmEd2qDBF4Cvji)zX>zjOLdroAW%Tx)}e@~Zt?7(>P}R;d$E&th zE6szwD)@kQDKUzXJ3M+c4zgxyJ9<%Swn{-t9+-}yGhy#NLQI_)Hqo2?q*xEm9X3?8RgqsD>uef^uTj*F_aI}&9G9rI&O5Yw1@~8%theY`z~@7&~gC5 zS7KTuYzp+o4I!OsXP(epI?O1ip$BK{1Z5lH^-lF*nG^krxsqwy{jEScg`JqUba930Z0~kFiy% z3rChGt3~i@t8jL39g5Y2bmxUt^?XjFn2Y11lTURL$vj_36xjyHwwBdCQjJo}A`njE zXyEAnL-&|e)2*iY6S{-Nj*d@MavA##V^K~a`D|&4`dayvQop8 zLlhKk&NW>MB+Y`zOS-xYV3Y(9KYF$gw#V@W1dL#V94a1xA%ZL^5XD2#AW(X!r8D1z z0eu&e>^Q?88RJhnMfmXS@%K9IcIV1mI`*xHwknmaLzPOqQ>k>? zmH*c19BsFWox5XydDEerx2_JutG8}GbW;=^X}6Ee9t->H;rA-NthCSt-?pHtsT7=U zBxjgdY|Aun(l|(W2%R~(-$;Fqsd4{7h+1vwrT(?29(drrFItJurjMLH{m7Xg1qTDV z!Amh(g8#PX{o?)az5o8J$hCjm?(Tj0^uwo5KfJHo@&_UtM!^Bn&xx=s@Nv8N=NdJqv!5_ z_q*@E>jd2E)yBQAO6t>I=SV{C(PF~uhl8Nzp{Pl}SU!1*$PMWIU8?cxu4;|iZQm&e zgni@Cgj2sHq-{91Z;-Ytw$Xoh_SwIJf%T3;3?pE>a4n7k#0tO!*U6^X)%XnBIeSa> zOoD1F65m#+FI?do_ZPs7uEw~@>>I>cnW$gZyCqGm>SJ%Br zck!M7`n)aVpXZxMcecp`AFOYlgKfMIc=L7lgYeZSyhwhiUe_Z}cj1k@F8dt6_tMKZ zQ1x`5C!Zm|2BWP5SKwgbaN%mD)H7+$O6nAuFj7~Iz_UpgNmo&gPx@(w+)v%v8|g3` zB#2X<{h97d$*&Rt?{xZK3W}fAO;i7DG58crDVpF9>McD)oZDkf$EDCBcv-Bc3#MV1 z^`oY)o6T>OYSnU75u&oN7zB#}`J`z+$cy^#8AbkL(|j>68o$R4UDDg`t>1T%etTFN8DE1%E-LgX}RPF*XEqonJ`@nk5497R;QhA6kC=q zwbn|vUTI2h*P?p&u@bj@z5b53wpwp}M?J8eu6wyz~o6O>7%?A9*r&A7R<8=Gr*vEVApNU7uwOV#k)0;EF_}# zW5UuLTt8#Th=nZEx&Ju4PV$;%ob$s0;)O^3EixV9+DM$l z2+ST#vBcKZHj-fsUY+8h=#PgHc*b!@Gzj_CIR4+3Kbs_OcH2KJ48yN2y+_-gs2gdTaM%7JQBi9R?$1uee)? z>I!%v>lq7+7x{eVp#9KGT8fbTH6r8Z3fSXds>*S}vFd;~bWCWEH1(kl|K9*Htj5?o zCg65H-FQgX$+vZV@2hVT27R-#$$v+mB5y2sU?n=w=NTa5u2eJz=@iVdqCBMM!fG}A zhyNQN$=vqN_Rh}E_7`s7+1@5^tcH7ESMRTe)xEEO{q*UtKXLl>6YQY}9>_6#c@D!- zs4-NUENI;hp71k-UioOVfwbc!-0NEim;L?FrQ?|SIQd*&a0^-V9>J9hH_ zxM6f=@7G6XuRYZwlk;c4`Hqt(5C8b>yX21=pLp5s-hg~;Z#e$$-j_4-`MvbeeUE-) zO#XE5IQh)pza!hfbb%ye#TT#y=Y1VKa|$O4*B9fax_rseg5v5EX%$V`|aPqNNZ7k~P3r^Wu?N-LOsqpk#p2wevq7ZT8usq7`5k)Vw zA}r+b@TJhTn>9Y9WdQEVG+CUptJlN?E)(V?+%O_~mw9WuLC zEK>0I;<#mf1yk#G$gAoLrF+X} z#QDt+KRkTok=uX446a+KBBqaPQ0Yg@t-bx+|Tlr@P0r7z#g*qA47xunUY`0Doyl1})K)2S z>N2TPWneiOF3E}-j1;vFjLWbMM0vyKeGIM<2|nzP)K}#oopfb?-0w!IM12$5O{Ox% zd1JPSob^#hQ*E5Wab!cLSwjP>Jndq9y~Y#Nhgw%!dfiJF)sgl>NZ2=AkZGsi9Zv_T z!U5r4vkqcRCsPcYWtPSrMFs?W!q>Y*B65+abdTs_yWosOmdaJy6`7ioRb)RICn;=# zMekWdOpqBl&2xwAaKok9AccEpmmtqJ^ci$&7eWbW=2XU5Ei%C`BV;s#j)XpyQ$&$w zxTcKdGT?qFv^fUzQ$&_$h(}GPSwoLA*gH5}DS}Ypbk;D-tUygT5rDUb)h9`wEm0*Q zik3Ns-V-oGD%*_%4=fg39B|9thV!LT31i6WTh&&=9=K)ObmxJJiPTn!DoA=At?Eh!X7b-H=l)PfmTeOkzT)_Fd=tNk?S}|x%A|!sYmrJs)Q9aRwrEqLCY?=-SKZNCr z*uLc%2{TSDS5_!DSJqpa1zt2RvP%*g3Gx~deYv+(=d9@d9fZlS8yi>4NxdkDp{2I% zx-fUctSLgmbxq;lrkpUPK2JI48Bc`m9*16WsSeY=rSdAei)-hOh3ld)<8z$Zk!4rt znAib_Yo39tYg5#zG+IFkHTfV~_lm+a*jI%t`owds?R&;s+qc3ola;Ol>S>%OMI+$E z$ZB|mvLoYCvQqV6Na+*|LWIlgCN32V%}_WuN-SY`fk}L~m?m$7QEAvFw`_|r-L_0$ zkE}p94IzrA#HDy5c+j%V7$pp;AzST5tr}R8Q!ppG!tG(chjQ0&Op_-_r$rQhEHR7C zqQEuSq~tmETI3;MjzI@-%~H$p`I;$@NeF%68;Nd+`W!YA z9?@_)-%3+vhGtNM9t{1h)U%naH!T%=J<^3KoiR6!RNSn+0Bq z>&Z?8{i$iR>dr0uK7(-uAra9MkC%M1Tw#WR1+y*^d7E%2nGBPH`9ED&Yl*+KCZH7r zdKp4)4z?UiSn8}+bvgH$v}>((<0SNuBTS7r)ItB=5szy|&$2y#eTW5TWuNodmbhT8 z!41!(i||Ak5CcYC!8YJlHGB#EZ`(-pYpHc$Jt)Dwgage;L?mEf88tX{xG=|Hd=X4k zr3RNl5MU}3Ar#bhD4F@#w}Ksf9PD60gPFbEQMqCyQB-hIK>M;lE> z2q42~7hzGuwuq6g9;}8?tn@ho43oUwF?iwG`i#0Qj*^<#P^j7j7nSBXa-OgYttwp?P2(u1@Oaw1ZpfgQT z608a9s$U2gn?%OzEhf zb>Pbz(NH1CE&*VxNDW`lI5)?N7!d1$lN{;?$IB+0SUINX);kE&R@@hueTY$dK`kv! zFzKR-(BK3*eK?Ta**@b$;5c0*2!LKBu{yC-^aP4_ujA4PHXA<2 zLnP3DavfVb%>`|gtk7^URXfK0Cb(k+Ln6#ib~3dTfjGyggJp4jq#}-RNk%a?_R~Hz zV~C`RsE!rko<~!>G)SGeAv$;wX0l`>q#4Sk=arv`?SNi|{y;=HoCcx*JN+T{8=fUx z#SBhG?Gtl=ll<(veYGA0--aVIq#vIyJq_0c{1Ak0=Fr6rBrP2+q1tVhH%}F-K!+(& z<;gfFI)#fFVRB30Hb@kSeTp@=fB3tYM8E$5%6^Z-^!jBO?f-^Xb+{pjX28s32%?kq zh|r%m70?UWv~-surzV1n8$1WRAoNRH*KGpEL8GyB5cq>KX|Jh`5kSYXu79h-K?QLf zIwbkHwdI?1b&fA)Fs=EAc5|d0F{?;FMPOQX!15?5rh7~SJ7>`c!S^K=^IV;iSl2mcH&7v9?)qK0 z4xBvmYUrq!z8#F^<`#K1obDgi7!@yPk^MrL%ZX0EWqL4ydT6`PbrC5>95bY(D)IsV zaKet+3Pd2QApv*2EEI+e*Y_%fY}^k0d2IVzS{JW2m*Cuj5x+NlQH`+cwzaE|R_}Wl zN&Qu&DIDTeu#IDv&`d?pn3Egm(s9F3MFI&p!rTBaQ}a;hqz?W%T#-;+GTV%*QJWH6 zh5|R6r}emV4*fd2##I-&60AQm#zFAw`K=7gDTtVgXKX z4TtSKn*kX!7b%ob;sWUX)?vuAO+=_^zMFe^>c8Ck4cO{_jc7VT@DM-Rq_inCvrm&| ztNa-hq_fI+Z&bVz!uaQy))(MBRln@%@;r`-6(w#ovVpMpVx^dD zMcReN4BSt~2vxxLPx>8^WO1rK zM_AGjSNxT55sfE95l;o?K*7?$uG4sZlkQO1YX_{~P~tk;{&(S&$JvbKXOazOhmPUo zhIwHCI;9EO)DRwR37jV}afLN0I)j@M?jU0h-t%-^s*f~H`I0z&G8I~Ail3HiIqX=| z^vrTBL%}*>5F-Lp*BnFpi)#B&six~yeQj;;Z#glIK-0nFXBaK1T)B{H4Vp9VDx*Sk zdfyzei2!LVdBM^srqHGw_Dd;dxUrn60*7Bj3!pKoDL6D{`uG0WgwO&bKi5tT-Lmup zZh8>>cdXXdr4GB((Wa!dv8j(YCr{E{PtUG|f@ko7opy{_k7B^TxL z3YL2d z>~*FZwuP-{Xm?;=er%l9V=vyaig8@D;(9$kQ-gm-Xc*y9+3(96guzqAWGq~UTCwoe zOyeDf`C06WYmFP^GPpvV z=AZGf_dMp|ToZXPnT}_~3rGZ{GPCIv)92uUK5E+n;=}o3rBd8`KR!N^me$wG>3zF~ zWg9!=R_lZPcD>Q+>-E1f^y7y9qJO==C3#V?viA=sg2qqRA8gphYr&(d_Z$7k-u>vK z?+)2)9f1~9U3oJIj0YE_wpNwvuooOTF!5U+@+qkUfU zELVR_CSas6>rV>b{N^{ONw~>HS$MHoq10|U`a&7YVQb|hjjMk5iZ(ZNa2jMOHY8Z~ z8Uoc*7#vR96@8;Rj^gb_Qg{}A{BM8z+vF!To@ zpRV?o!u~26neC4=n^;=Us7@T$Ag{ySkpk>5=NdBT50NJdyxHqxh*n8=Jts3nZ0;0G@zo=~fx<_K2TdjU86MBO zUx|?bOqwMvB{$teUh<1Cv5Z%8%O~8_>2)_geNJ<)J!lrS|KT*?g!F1eteXdO;9Exg zF&@+PZ#>N7W7}8ppdIs<@sMu{kJOA+YiCUhA`2nxtD?DaAUj|srq7zLwM+>(ZN-(r z+%S|5k3D7>Ut^)=%(c^!V=iltY0HfjQF5&Mig>plE%P4~%Z*GcdM+4@#F~o9+Ia7)>7!Kz!S4HhKqZsUB#qbViXk68j zCTf;J@1{E#62q{BI||1l>=A3((kWaQ2$jKqXfQB&V@!@iSU1j)H(`ic6^V@3r+GEm zv?Jp|lVEA{XpM|JD4wipgz;_|t&$D6;3#N=7rqOl0t@XX>1eXi#RI}q2+!eQ-2}gu z!a;{qOu{EaMbiTD9Y%_)xY&?lrzkil2KVU}*%&Kv-0657oEi)flUS-niKz-cr>kJh zru}Xn1NK#R01mj(>1TBUSAUQu8%X8^`&y6TBpPsksyKB6chOhr@;;ankAQifj#o)u z<=p8{At-H-oc3gZn`Y>%cvR)slU-EKBIrk{nQYZUH4xLt%q_R|a( zA{wlhPKLPG9b^q}Fcjt-=l+no&>FfuYPOO|E-0Cf(QEAV|1ZljO)DX{^Mgw-xCy=B zTVA-ji8Rp-k3Rpl^PN^Qvk zFCc;j7s2(iz|=|-7KwrB0L&pXkGPKIDya`}gJ4ESPfX}amkf7`(LM)*?xH{EBIN^S z?U?i-($Hxs#-bdGkT$LYGE0>Yfg_R-lmbKRh@O|m>N;{1Yv`AtxERU{Slp4|TF^f6 zPF~YHb|mg#)f%ymbzsGqK#M|?ZaZley`7}dZNq=VN_v#yOprOsvddd)G#Gv`SfE) zw+2Lar^G`tGPo3`Fc0gh;+nUx&YE2?d`~x;SGck~&%{~Fq$ezGxo+#9(xp{plKj+T z=P0ufbuUf7W)eFp`??t~7}85?QCMqkoH%&?0hb!(LBFy0`<@>apKLn zNQ}~kFf8!JV1P>l zucXk0ZSu2(O{Ip;rB|22!s}}lgT|&@X!NZtljt1rG!Vz+d*HcxBa7?=) zbzefrqlt=1ZdYv13~wXUpum^_^$(ek9wil)N(tyXU4%Y>_`otC8mG8!)YV8!@XxO!5H?PIb%_)!#S6nrg_LNRvjT_SQ6MTW}{u!?_6?j zK5ks09m0W%FcQJ1n%-Lyyh>wo*6_pF$Ovh!b?<=|%=ZJ^qOWNVwhvW(X3n2IJdddm z_h)^dd1i^g?QT1iI!*~X-P*_MJVT4%cS)=h>RBYKlIc*Zk}eFT&wTaEtv~zff!5xY zKlZ1s-+DYFFWCDqA@AG!&|MD_y7yvo$8Tbey7KI^&wh^XkS{59w?W}d;l9Gdg{KN{ zD7?S$$-*;*FBQI7_>;o_RJyxo$o=FA@;l`JC4Wi&ftF|ov4To96U(Hg`_E(^14AH) z)L#gQ$wk>zQS@Xe2f5BeE&`#R$HUp*3~?EqH5A6Xbc+nB>SN>zo_#Fw<6WX8mtZQ- zH|}1#%k;UUq{Ht$%5$F$(|sAbf8@wH9ezBWeRcLB3e8D~lHuri&C_s~VBrKB45X?C zrvWntXn9i=J-As?YlkCL`j{J3IBdmhh_3x=ziV}?v7<%Lw!=1&bRFWmbD&J_TkE-aNRng)koU%k0r zBKTQ5~LEs0jvS8i^k@%1t4Y|b@;q9z4cC|$JXi-F`K@()dlfq+TVE6%qB!oE$Z zjW+qgO_dseDYD-Qe3a)2qRD2_hc}rQEY*bpldqHyE9pPf9HlmPxrUuzyZ8*8f%Lg< zvf2IzeudgPOSKaxxUqZKLL*j165qN7arT)VDub};HwNBplbs{zir^MmqjudP z?I{R&!ys@>X=>fNrj_cP?Ht~lWY=Hv`p8d~GGv>oT9Stm7U?F)$5)5p(JpbV(qx*( zYE^E;3E0aZ^p;ju{3s$Mi49h%g9U6sZ|^*yP)7$=&m!G)5 zcA?rjL7u7p^_LKj`43=Io;r| z<=#EQ=ii3d`{RaYWO36rjPmbJe*BQ`>VKz`-`DlM20SfZwRm!PV(ZilH~9?tI@qi$ z!D6|jiHm-5+8ym^#U#LUPj``X<>FJMjuqqq7^mi4W{3b#{8xMs z>qEo?MN>rUrmlG-aC&I9VOnCTuL*0u3irs=p_;x~q{1xTf49b+ZUj#0%cvelmCyqR zAc;JOYj;S^Ic73ywzgn2=syIvt$p^SZp-uu6Ri18RWqrxB^^!PTEJev$f=n#B34yJ zL(b8DY?c+dsc@IdjEo`LL10rimf6??qmxbJAy!|&N8M~X9QVdBlg8bw7iSQhOf!bi z-5{(*L>|v6JE7i*Q_;H-rIio!2{D}%lcn+U2TjT z$9dk_*`3+X*P2GN{~2doYbk| zShkZoanabQjTUX{CTSZuDUkj#+Mp?#CJme)c2hTP4HO0v)IfmzNK+IIPy;>neP=19 zMHAd{#ar#plDjkWe$4Ye&#yJ!(LC>y3yo8k8;#2!hDL1ru`k-lm}i};4HhvChIM(zJ2u@&|kj>cjy?#^vhj62NifE zlIfq3hDh}>=@O|sl+%(((N}3!)#cW5Q719DRU+uOZ#;O{)^f&lI;AdilU}x6Y>HCg z8sd^bA_2D`kC{wv0MBoR$CPI4`=Trgi0NJuZOw=)qjHIarAmo9>>+e&nO*cljacDY zB#grbIhG$(4wF&^T6hSq#+*`E(1Lo6xaJ`vuhmwbRUcD+B>O*bkLK2uLFZc5_s5+^QY>e-gP;odY?CzJQyxO8SylciDYk{5O!j^o`u zXRLLfXu87l#ozAiEO*{H*_lpvo?h#ZhTTe~KN@wvaG+dvidj-{{HEV&S;px1H*n|4Dyz!ws8Rx;?GcW;4A1vAq9ZCx58eN&$KtqPW+g z&&^@hIRriKv~q{?l=3O%S@7pSt9(IuN%@NMvc&ac`GeG6(_zMqLXK6K5`T(5XVQg9 zXO%_yS=;WMhv)<^5ga-ua_>@#Uu3yb+iqUlD)Z5>iT9J7x?W0OONMwvTqCzA=7D>0 z^mDEiBH9z_73H2MzIugRx$mW;!2^S}^!BcD)6fFW!LdjU+G57sP&1uPblRrc zh|(URBURmI6S|~3-au9N-=you)&KTf*UOAS!od+SEo*ak!*^Z3Nm(<|4GPW>8{Kx; zfau*f*cv4@aEo+v!L*jHZ!y}|w2?;pbh_YV9b;l>l)U)FUtDR#U%I#ASUZFpOQPc0eNv9{QVX176Yjtqf z9K#euJ+Qe`DlIi;d~M&WH^SZ*uN_O?ku=Y|BE&16@rLKU;l=X( z@F~xG%KHyEgK6vQ8p8(2Gjiv3Uu*S!DiAII|L?Kgy(WN=Org(WDtEaUfxitC$P8zD zoQn8N!jT}XTIMojf~G2YAt;rCy=QUziM2Iw)othZyI#R|Od>e1q?uzLu^ORUDKt-; zjf7+)&lpzBa)h)(NF&G#?HQfjR)Eq4K0UOMA`EV<$53aG4zoD*WNo=3UN?H*gEEN!8=^`IQb!CC&1_Wa`m4W zJN-x9m%elA)T!5)&rZTb{^i;~!aLmiG1!a#rDCa%lMjL~bOzgF*GWDl?SGg=G3&AJ za-RPkvy{$I5^5TwO7lXOrI;vyCxsZ)5BRDOt$K;5JedrJ6Q6|rUaub& zCWFmMk@)NFYL(jMYTdUA^Lcqata&0Xf(tO87i=)$dvDdUPK8uDZW=yP*zX9#s)m8T z6&L-&CfKF=AsF8cGAss#XsnWKzfL!Y2w#|P4bPHtz3k&1KReu-LX^@^DxFS6R1vcv zuI|Bo{2lT)%4Ow4%Ey#%DX)_<*t`w00C(mVau<0Qc`w`#UH(1cBjpiiCMnxFLyLYny>zlwg786ipl+GEEkk#?F865-Ev#i#%n|a7e*e zqBx!~ZIIF>rXyrhAnWDH0VZGD`J1ej&6iy+;qTkXD<|LKYt9hpfRKh?8f;Q zKwg6F{OT!zS)rRRf=(BST;7l?JCbHL?^)zSUPO!FCUwMGx!NY}YPsrmG>a5z5u*m@Ch1>DdqY7^N)T!OLI zNu0rWUx(F3ZB_-FqWbFxj#Ow6`#5Wd5Uhl7eyEwmHVn9`K^@gZcoO%R89?k}5$0M{ zM~J?~R4UYVF-uFO8fia+)S}EzsF17bC^3Au^dhVi;*%Wqv3OD zoOqN&kZo#3%HjNFYoe0T;Qc0CPBS85J%9z|O$hG&VW%^yvCgRaXxJs4VzKX6PqZc( z{GM@DGwKT4GUBx5SRyj0;hAq(ooQrLYi$~t)v6iMcCBhe(~iZ!BAA+~IhKi7Aj>uc zF_>x~-VHgqEVo|AiUrK+BCyR+nL*%=S|(hZ6qZ8g*+6PnuTT}Z|Qw=~`$b*r56 zX4qP@J;dxueR53gS_mvK2s{BwRg)oqD#6q<;uMhdjB*4kz*RWh?#m>x>;my^H+FOO zH`Vv5S=i)h*@Bye%M)-gJZFk%Z$yw#FviH!Ko~-(5cFtpLNrU&7%j7ITl70GYheeX zZF{|a+1T&{kL$f+;(jV|2cwcZ_+iB~Z9;^p`R=16t~X-bM8%=uZ}=liQ~h&Rd)-mp zdM}h~>u^jBre0wqP zVwDrRUoEN7(8`mBx$-vF$4F)nE=68&@p*t=GZua_c^#~*QQ^o86PjI*FgRMCkhPec zn?#N?ju*YDM7m0ur;*GaV6iBIZKX;O@`U1O&bDU@vV%|%)8>*q!LxDM;d9@8etnRk z`n=(~xR3_77ak^-G$6W$yHxY2Ch$pX4dK_AZosHC4BLjsZmPPDXq5muzOCzFQgF$4 zv@FvDDN3y~-3xfqhX?3-=EAb6Zb3iwsmbAyxF;)ZH)$nQ-@1Ex`=`GjXw)=Q1DD?r z9c02M<%Oe8(I_|um|EH(#2m}?4PsjuR&yX^^n=e|y5%NINS0*i6t1Q9x;lM1pls?@{PGQkZC+&PsZXi<$+tG99K-Eq?hp+AEY>4b%DlP8j2Lv^}C zUAUgk{0MJe;>8tJbM0U<_R7s~AR0+EDSTt%GReQ!htUu241xwNi0H0q)02ObISZy( ziU3<5gIAL(N^!|s9b62jvxB4#L31%_jfsAcaGj1x;WmDrT;ZSiy+^)(kNcYkZg=nb z-f!G}o{_zOp&$PwX@BP8fTWkMJoDspU;QzRlHWaix4HK=dGf;_D0H{PbHUzQ-@ap2 zoA3hpI>gB-YN{}B^j5-Fl67Gk>oA+kFd}2*`CE5Qc0V(BZ+-ZS5AXeZwZC2+%m)8? z_`&cZDpg$!A3S{L!w=tCX&FYV(&%&)?dpFiHT9$9my}CjcOO%p08dROzY$_DDPU(P zQ^a$Kn`GN=jWmo@5;-my^z9rsy^?y`B{>jWMwJN7N7#Y*DY^JAMLkUxBdS`cOI!_T zp{^?oSts$f(sS z+$)wWU(zU2qC2i(coh=6?J)M4xz(JlIl3t-C)-D6v*6$fxOMG9nR^!NLZ|a>?lA5q z2{}jH*t!uqFsETuA~i4qIG_Z@^|Yj+RouX+rq*b#n@78TK{L$aP$j11N5sk0*3_g} z7GR^qRs@ce)(?v9*6vnZ!4=-pyc|L2V3rFLY2+D>aCpsI`Tno`FYY?z*V|Q2{Ilr#d9Z80yL=x?R6A-Q}JWg?_KE<(I;2=5^IA?)tv#LO!xjZQgp8P}9~VZuU8tl{_*W3>fIB}j=FK^Z-AdYzU0tpN!5HX8ttAp`AtV7}UyjL>Zcn_;CAZxrhy1jpiH@7_Dlb-ZY@xsmmTNo2fk zH`V$&ph%B<7BOJ@t1`~f6&u6-wf(W*^BJR zv~4qV!l0DYgEw?d46;Wn{aQT&@3~RV(y&k!#5aUl zDx_hM3N?Vc8n5CgrJ-8neuxTZ%JG$&^Y*UVZFLb0gJuhJ1{~#qr;?wdmF%iZ*r9fs zwAo&ws=`Rks>L>h|)&(H{9`8ZVER)(9z0 z_I^OVb!6`xc~&R7g>?fANqKI6>iBDtxYxqEYE{DURiiN1E#IvbH~pW$|Csk#aU>zo z&L8ak^=DO;7m?jvRqd$i|6d)++m&-tsak55Ns}$R@0hHVgqC@X(_N0#l{mmGK^Gp& z)Rz*|lgY{*Hkrm!=ObRM$Z3iwpoT(dy?mC!$Smt-*Dk~nXN>w3iPW#2t;$_s^pL0h zT05aU+A1Kp5lc1D7EuQrA*O>VbNN`+!E|c2W+j|sCA)@2gr1AVg(jFhfly1873{Tw zL+_P?=dkM8aUG09qkwHN4;(L*A?1QrEvkmaVMKyG$AU>w3axNlF?a?M7B{sAv>@aN z7yze~BhwLLI~;bT}PNw6-?M2lSM*`WU%9=kEHh9;FuXIf?s8lOPrEKCtl~g;66hRQ~?mOnj#a;K-=YimY zxj(>UC-E}D#K2525R5cB4P@HHc%utMe54{iB9TL9!vht>$Z$hV+!0YYZ}-}-s;hf? zP7?=;uIj3;`sy`C$@fGlJ=sT2&RR(Bja3JkpNfqYzEn%5P(5v(W4k`fAW0;zsqkvB>pb8 zXN>E=iT@R0`Ucv>-3DS3rVa2NZ}$iNw?az*0000000000000150FVIQ0iprw0w4nB z15N|N1P}yB1b_te1sDZD1z-iz1`-BJ2ABrG2J{Dr2fPQ~2n+~F2$l%c2=WPb3r-8P z3?dAE49X1r4P*`e4l)j?4%iPW52g?z5Ks_)5ULR<5wa2h5=0V`63`Pc6i5`v6<`&z z78VwK7U~yH7jPJC7_J!l8M+!m8yFj`95x(W9Hbob9cmrw9uyvc9_Sw~AFLrhA^s!+ zBa=L zNLWb9Nk&QZN`6YXO8!hJOq5LkO?pmTPKZwWPhL=pQ2tSFQchB+QuI?qR9aM|RW?R|r>bSFBg~SSncVS;ATFS{httT9O za`jb`*B3cRY7;cldbjd1iV3dK`Ledfa?Ke4c#reQJHM zekgvZe(ryEf2M#QfP{dmfY5pQo!Fi3o*tf1o}Qk#pJbpQpjx2Zp}?XfqGqDVqco$4qq?LHq++DJr4psCrc9=! zruwIdsG6x9sfMZ$s;H|%t8T0otrD%aun4qjwG6dfwkWr3xGK7ey2`r_yF$B+yaK#< zyzIS{y~w^OzEr-7zR6 z2!sp_4q!e503M40UI2KUwUWVV6Hyd~|2va5w1LnRQlT0+BGN?6gvN=Xvug_x#Eqqh z8y9IhO@?H0hnbs(K0+71h8tI|UHSkn#HZ=Tlbh3Oq@^e%!(_gD&YAO{f9?hFNWFu? z{I`vl!U`396n2ouS78@VR6#h0iW&;9;Hmm4yozmSS9l%Ioln9AJaAp%4V2wi!X@P0 zSa=f^_lt0uYp#U1kk374b(LG=m2W4Ru|j~i!VZe~EbO9#Z^AhQsv*3B*XmMu6~4L> zUdMaqjc@^;^Fw$8&)kQ?B^2Ec!kY-(iEx=~z6)=mm@DBB8VN3tB0?Vn7!a!Hp~lY+ z=f*a&k10ZAypH*aL!DftQGZ~l+N)7Vj}7fl!%WAVyXz%Fi|+##>T>>+|Ej);|G#3LD?GIMZr-C_Z+UI6xlDI2c!oWm#OHZ@ zy9sw|o%4Un>&R9FR{h#XjaxPMJiqNzbwTnxOtVOj1F}|Xzr8GWZ!Nf}-{wL(w&oV< zHx`ch{LIFiwL8I%{RlC)&8&&Up0w*m#KZUO0L1ywR?J0-S@Si*kZTN^!to%aX?U`e zQLHmViB4vM6!r9&vd|EZK}PG*Ffv>{JH&>iGX63RzRtvFcfqG;;JC>}0c$ zY?zsuLAF)4x@^lM$yMbJGc(iwNj@`U_%lO3Gcz;)0~B-`q+}n){~y@yZ8DO zpX&ZT|JhULPhH}VKI$*0n3#IhrvU{N(vU_prU^}HMtihR2Xvaw&{;Z1m(k^P1>K0w z(~apSbW^(7sn5}sbQRs4Zb7%CThXoQHgsFM9o?SpKzF1&(VZ!xyU<(yQpz^cs3Cy^dZ_Z=g5Qo9NB-7J4ha zjowc0pm)-{=-u=ldM~|?-cKK(57LL|!}L}3)$|eiD1D5+hQ5}*j=rA0fxeNxiN2Y> zg}#-(jlP|}gT9l#i@uw_hrXA-kG`LNfPRpEh<=zpPM@Gp(x>Rt^cngr{RsUi{TTf? z{RI6a{S^H){S5sq{T%%~{Q~_W{Sy5$eU5&GewBWWew}`Uev^KSew%)WewTiaexLq; z{*eBN{+RxR{*?ZV{+#}T{*wNR{+j-V{+9lZ{+|AU{*nHP{+a%T{+0fX{+<4V{*(TT z{+s@X{+Irb{+~Y29stZe?(={H4tdBU9`l5!JmWpy=L0^?XZS3ixCd{4d?-<$8l_vQQX{rLg>Kz?mOST-b5?xF3of|iiZ$1Kfel-B z-0+fDyyljV_=Wr;elfpm%dg|t^Bee${3d=gzlGn*Z{xS~ zJNTXaE`B$^hu_QZ=zwSDDGrgc`xs4g129h#jS$|k!|k*dbqXrgdIDb`6^ z4RTi&*Y^`^ukFPy30vK`CYJrRs;Z`gcK2468ePYFy=R?B7Li^`GcWXNq$&(# zMwG$4P|3pdL|Tnv<>Dq;NEf)Kj0-c{+;&r~RF&$L4Ml}XRXV@|oAod?Dvskq4(y_> z<#?_evw1#nMizx0B8pSBXnDC9tfY!{U}S~=Q7tlwIi%e#POg(&RGFMERVnp0>cAHG zZM4!Rt&u((=vr0?-ilo7V3RRSn5N3jHn&}ZZMS;a)VhiiWs*WpP7IAw#7>lMY(G_5 zHmj9PqgvHC`nujb(epV^O;d{^IMliNmfGm(4S`|(1Z6y>zL?lNX;?bN&-r*f%8 z<%Dr#tD7oK3f-jrCH5XBI+fVb@X*dxnj(!x#&V_T?H+Ppgepfbt(tt{#Q2Y@Z?Ahr@kAzhdx(NbA4!@U$(xk-dc zC+MZhCLSyP2~o=R2=~nlzGa<3YJvi<%*)y4w%fAO>s(tm@&{QI%DQpfv=&W~+Py?q zl}sGcAq!m(Q(^N2s2$F=!NEuw7E)Ao69@hU+fHq+jI*kWn_@Ass;rAPZdBohz?yIf zJo#c-)x%XToE3E)BH4*nRZyaQnsVAki7sPR38&3W*A69B>dJ3-=)r_NyQy5)c-YC* z+9JRf50iMW%R?oNjgq2?4-z8*tXTV6o2)SGgNtYtSTPqy1xapnDZ@D+FxTq=R%yiPZl@LA!&(b%qzRBtC-mU@ ztFNxtfhfh11~2I5=qTJ&&~g;};)$G+qdA^cc)?D$RU!%{tG-M#IRplk1mydrPS;Z$ z27X;hizW0L8&7Ma(Zyf4P>=cMhr5K(y+TmS%3perJikWJF2yns6hyBZ`X)2kF5RU?lzTQtknq;1|)zg zq#3jtxE#4$mQq<9&ligNAQDhoj9Je2xq0CIXL*@wJM{y$H?6?&vZ3pN{GZwZj zO9`MZLeZo?W+*%_$#qYxEZD!)@gd4Hgbw)n>EqsxI|#+nm^O?Hon_LDw)ZGLh#LS^ zgRp%47$?V`l0YL!;JAZ{O+>M4mJqRN*YsNhF9u1C=*7^hn9s&IX`CzMT-iKKBV;^E zLDR@!o9ZkCt1SS<8R%L$QA9ccS%e)^89e9jkRBPNI)PUD8@O_o8Zmd*Y~R`6iPaW6 zLD~xJWh{jOvnZ1SpQb=g$H%%qKXcqHaZ(brX2u=Px|yfPbrsFk!O7C`8wx#~Vw;W- zePP5xR!}TFBu7AFic?GNr=qoWgw7se>dzHOmQZ<09Q@T>?fwv3SLC1=@Ov75hT|mXLPk->WoYc99 zjY>SppRRKaldz8FC|wEbu$cHPV(osapl)m~)1Yo$ju}9QkTR6Z)p7F`MLtT2CyHljHz}s-{+&r9w4(FB4kjMRGmv+)I>0=wJqJGGQ3W*LXR3o~V18_=R$h{pIc}O7V5Kc2_ARcalOd1d^Lbf6B zf$XQl#@eQ;L>?@KfQ${6%0J%;LvL9v_jhW!voEW>Ozgq2&x$&^g`tFb3|iEpT%X(A zqKy!Bxr84Oer?_yOubjwb$aun-LL$U@Qjh&7!iNEJ#7^{j!4{8G)^PdT&<<)TL|P} z*~mlhFM)4i0#8m(4z>^LlilLFFW(_U==p zrR*PK0Vjk!}=04q!*9X=@pk4^Q?67v__&NFP_4R z^OqO{EKn3ze#KupiM=>RXGt%+X!r=_-kLs#9N?5$N6v5-iK6&@#y2 z$k$9)OZz9}e#5p+k-$iv&IGCs)r5V)Ov2{xACG{*F~|52)ULNXU z=U_)79s>B_srnZBbpV`!qCi2?bQN%RrHeVhges4PgT`QNm}^tTswhUKP(_lXl0b%; zs38wQrTjNl&&cJ_=DJ=XE0Yb%EM~!{q?h?b!_LdNXnQNQ?)%TE@rLe=s20IOWKaeq z$}I3fR`n|hjX%m&-UNv6OA(Vqp4eLH)OnErtG1(2i{gb`Vj;*vI!ipcLZKt0!7p3M zjbhpAD(%6gpPT!y7TcoWRF=blfllodp1EoxoCh*-Zl#V;7BzcS6{1*8$ zvXidXC453H2O@=67(+p}R6OcTyhZBICZYmO30QOCDFhz^^T3-4ZO2g8IlLu4cY0}F z4Dpop8yNUQSO>Uv9hH@0s5b7SL<3eF5&DO4n@B#0tB~!~;MLB{pho>yBWg6T9k=@r iGn2p_N!hmzY(x`-Nt<3%+kRtlX@#l202hR@mH+@pr8-6c literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.woff2 b/core/external/eo-framework/core/assets/css/webfonts/fa-brands-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b5a956765bdfbb7390c7d2be871fc9fd0217276a GIT binary patch literal 72112 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 z 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

    C^FiE4MMmij)9VGP<{R zzA?q}hpfhmX69F&+P-}IQGLlz#r{vwqiw9;HEAoOYda*GB)785g-F7pmAcK&2@;w5 zX89fB0UOv6zY_`xwLZ%Fg7*8$Wywj+XP`n$qQH6bv$-vuq)MFvXb1|KgXHsm0Ocso z#i?`Uv@io=La<$T>Au^A7Cfl(xyhkWu+rS&KN6U+qa$=lNZk^_acwA*U=r^5kih{m zgyyGxn+OHDnVc>S93$m~jJ@fsNGOlFsiS(_I5LJd=2%L~j;S>E$()*#%ml{oucfbF z$Ka%u-W3cVqhFd;pXME%(t<0|@ydW$tbw$|I-y>U-X$^wYhaWYZqNfXO6Wt`I7O%g zqcuKHR92+2*~3g#`QytTU*W-+tn_ZEcudvc_*ge;rcr_)J?os%U>ABQ!Tcl905V?yK ziyP(rVz&ligXoep9tXdcK2!_~N|DajruL@2GcQ;`hlf9%Ynjy74k3WGyT^dNl^Awyf3CTh^CC1H)Qal6t0WWReTux0ICLjn?plvtAQ^fz9N-1Hc+VaKe}e z7yT^`S8Q_OU`s-2ntP!t7&9$uCt;eL@cF`4cNF`U2}2;YtpRrUYGkRJ>2xP1<$5A> z<{&rv<2T2zj~S<}U&{m#o1=6K39}Fy!owPc;a1Ln_X)Mmqb+3WzmmuZLu%(*!|H{B zGWF8jXW+Ne_1l)tTc4M0j=(xCU0Hz6PJ@_4m>X9_xUt2V7zF`1z6V$SI{{J9b)n1a z);AIyx?}9b9&VcRE=H9TZwW0QY74}iWDOefSp>X zVwqV@g!HmPDR9Uq0#xHpeqW9wA%1uiD&p#DV*IoI&?vdCVkrPQq@ha&8LIl;Ku*&? zIGdt}ONx3VsjA?t?dU%EZiOBHaRp(`5MbF^0^T!1nh_aCkeFVIS|ChWvS%ZZG>QI# zz7sI5*CJV2&YOu$PT4(C0hxe#g|znS7%2rQfeY9Nx{c_kdCivwLMm@V^s8z&G3()I z!+`u>`~P)IBUe|Cd+XzvoOYeo6rpHAbkRNHCR^$OIKG*)HzkCfTBo3&u)Qbt)@W*d z`c#kA*nw50Ej7%sWp?(2I1?6Qq>mINMpmKqp2QpD_;M34$l}F@iG@mJ$gzt6dcN12 zCRiL2;x+H_|nnd!_elf^47qWFKs|vL<10ZL=gPNK0$71yjQx= z>M1reK^0bPmT_#THFAbxHs|E|(p3Z##>CnYWZboFdJ^FpR?--MZ$Su&qC^W> z8NlJ)YJ~(vKT^RHG?VAI%cR9wOveMLp=DN{==mey#Y55fMs zETL1cqA_SRUmhFut?piIvDo8pe0q=`CFIJ_+1Rd-FO8cmmh|uwpDv{v+&RppE{;vg zLhq0L4I?!dJ7f}dOX{~q9;qliP4#_M3XhT=jxztjZ~Bor3D9(eLUZK8@afB3#V9S0 zY0k``4c3PoiDm-J|?=yB?5a`Xqiy-``J=L zkhcvS&G7gu{L9OxGhp5gxp3k6DE#MCSJb$Fq8=AMNT&t8e-bnU_Zc0(KoJw;Zr_QE zTh5IJ75OPh=k7elfS7{Uxgtmmr4ga6C$3_d6Wx%Rl{xI$ISkX^-3>AC!^9lYa&nnX;CJ3p@R6oJ7a3tV}AOmnra1{JBF^(HMvK#bJIwgoOiLsIaL3sy!yWK;aB^6#C!D5F-V9rEr6rTK*l@5!X93|D9_Pi3Z;IR*rq9M) zR$H-kNiD1&mDl|6;V?YnVjyOs?VrgYEO(VP3zOgygGpVkPsY4V4K3+!4$b9{pOl*i zUn&DnbD*3S0A-DZvgaaz6_;o zPzTf6($gb9dk1J7Jr?nmhgAOdNsW83Z?IdCB-kT=9X2|U%l*LX6L0anaZIszvFG*c z3edCcV0RDL|NHhf*vNU$-UPDyctocPh>YT8sIo_3QbAXHASf)}$i|S@8zs`@hPY-1 z-QvR73|hJFrd(c*^}NpF=yS<{=sSynp7YIG@ zYwF5L(Ml|)Z&^}pp!TL--iGs%rBstUy?ikA1f$gqelb&l6t=4Y=?U6&U@L8c|1Z4) z%V3)gmdgMBzH>w5Gv`@~tMI(YH3|E}f+Em0iRIfS(RVTcEi``$;{}!y!d~p*+DMyuuJO1ET%wIN;AqskGGS7y$6&j}P6t;Zlf? zU%fhY!-gxf;}i>k`Y|8Xzdum^ITp!JuS55L179Nm8t-K&DCkInoRQvrs6YsxEz|8B z_TAXK^YOD~Zn{)`XK&0ukU;(&wC)AD>!iHdn`exe-E5klABfe^M@ItS3xZgA!*2;1kMKGo) zwRp$sKVouidFSs3P^kv(JAeaS?&DGnw=j)`i(_yUcHceVBViVY_b=)gNE@B1A9701l zdJB*GPcw^8bUqAt)u#Xt#aMC9Y^iR2cba7F4v-2E-TO)jyTnaACxBxOF@vZ=}WNRn}2=x%a@?}R^kK#;#V zkfEKtw#1>5(?egbwTN|4U&9Xz8d4QEYlBdPgb=}o>ds#Va8pA81fcs;*=ELKHc|v( zF_xWAA+h^ym~Sz@2ZjA3{BR*7x>Zw1pU|>yW#M=X)hV`H)kQ2MC>Enw+!Vv1pZ2c0 zQmm(O%vc`6gvdCT@dYR=8x3{WAA8)DKWDQnVR7WiJ@1o~idRDLL?U~s{#>E7#@p~A z$KTz-ohEvG91fCobzN)KG)rZMadHJ-65fLqTb0|TttdjlQAGd&7-*k=AOu_lU}0h< zX5pmn>6k@J1{WO|^Zqe9|NM+i;YLUL+3ZK?jz#G$S?D_G?h(*QUfM0C^$SYRdMAT9 zUrY&AH_9+ei9#4Ezy20CrL?xL??sT3q2AdxWhY;>TDuxt&j4AZEGHrwdR{^Q{Cpm$ z5p>SfM2aQe5kkVrr%<0$V4a$AVETtP8n;@=^S`wEMy}ps?KpN~UgcBYhW;OTbhhbm zE?+&8O6y6>_M`D+t+yMxLsynS8sl=Id7!iGZH_D_&q0Wz(_EEme6{ZJUq1 z^*KAYw&M2W+R9Thi&=X$(&@jd;t!!vIvZPhMQaYS%7lMZtab)~qW-bs87;R(Q~71$ z3d+rEd4I$xuAwIRJ%ICCgD<0)1JMf?W(@f}yBgG*2bbL~$wp=fa(#^x_%Gur2f959 z&z8nFTwwYil8A;CBs`apOM2bkssaA3 zHyUieB!vLr7{z|+B3*Rnni{%lFt#Bzio!14$pvYL78hmsyw`qp(*@-M3!;iT?UIvO zYG>9jM}a1yYTIc`)VhHsMkua336UvrJ|XjrT{cNzr-Ht+&m-D0X@TVfAI!jbgr3d# z^3f1}F_Ph`Ia^$|z^Ll;C6D3gb@q7GD&2w#Y#~@%l?(!-gAkJY=UVwqRWl&C-^(+pAR=6f}>i!s>~ z^YI71=>I8CJ|}350$AN2QKL_P9<})34doau@a|N`$dr^Y9B)J?aB!X559swW4;`&~ zB_1+WgTl|?*Dfs>q8l0I4pgn;fPh)le1W}4a|J%g@B z40NWADnac>ZIm>{F$=bfX~Z;Bo#|>`4QMFW9uR$cTM=FmUmXRUl&{a~!@K(1(a#!mtkVc`aVk?Oi^x85l;OyV zW`3ROxPk-C)I98qOo1dZfL4)prqZk0*0=$Dvj;mD(y=wcX7`WY~yBX zyTM6eOj4MNo#lJ#BzZmN@p}R^NuwjebVikrG4C25jiTk>)vn`vhV=cRjUH zP-Q6U#9s5h(XFhlXMeQ>l=b_bUvs>cy<`8u62L!}*dPBhEp8N)chZcteO6K|QO>TIoFR5)JmnbYM~1HBskx#n-{vdkp%RZTxzz!E8$K9>lr z=#UN0uL%aVX4;*vRB_UXf^v2UkT|Ut*H5xYKD#iq5!jX{w=5yOlk0mvxk{6Axip2a zuq7QAd6u}spvBK=C!T-b`-@BI-BzhuKQGSyyrF23ZsdzXNb?vClQaClu5 zGc-w3e&*8|TpWm>_i~J#du+O+{%2$@U5%ukWNcNY)a|Z<7Fv(lQm>apki(4Gg?3UJ z)>cN$S6oh)y03E^gPdX!hDh<955+_K!;ZA)Pf=6l(oEoWSb3B{yW)^OtwoPVjbn$h zl?|(q+~`QF*T6Fa*-~>}vXbskpfW5|EUn*lyb*- zY1^&IQ4ME6nD94X6!<-mU@qc7iixTRGAwj!Ajjyb2Wl+dTCu@!a}Er2J9+E_J=QEP zALw=S>>vZtegCEgBQ0Z=AWIWqvk*ue5cWL`7@hbwkl@cRZrMjL&|}wP<3O*@(?SNszALH0Yhr2ZW4I4ez~j?Unk@s3Fk_#+Ylc$e zKk^b3TzvBn8F;?Nw4K2b8*A*&sA36)8RAhL>XA%i4kdaYQJ#r-@(L0p@*5EA*puei zQTRx`No-1B93p)+Wo9p^BbxAesbu^gY@tq?q%vng8!Fm}nx=>rz&U0^rl2e-K_u;D zoSBE8aRzLBv`MX5!*qK7DU~W<;|_kU$c&a5pI@JY&$htHLVbK|L3_*38%j#Eq$;4C zU{nbxZ)KT8$|zu`t{^o=k!*?<(wMrtSR|kk@b-)1j9Mv$2~!$5n+Z3a0#4BQ{IE&Y@ZV*0t8>s0IBk zEiQL_K;n@6LKJ*R-Hl*D$S8j3;RqxO?Y}XSaAINO!T~@CMo>SY`)*H=6wRy*I9?zW zi6v5*T%lB{HCmnCU^JO6R-4`7bh$lVpC14r7(uam4}6FL`hauO*c%-c3jU7 z!YEGCEHBDR{4aFVcKt9;^RjOHabEZHem?+0FoI$@K~glsa=ai)vZ89bVOqB1dVUZ_ zagt_vQC4-+cKu*D8c(LP`C_?RZ??NV!h|v|9M|&$sk8~BI7zd-D66_@ZPyRuG%xG6 zALn&H@AseA{k-2_J)qX@Lnz63zu*5K1e3+a&cVsW&5I`x422`nSUizTr8C)FzM!zE zxTLhKyrQzIx~8_SzM-*cZfh9_7>jyvxMoVPSPwd%BpVKt{=u}Ue;|t&g*{O?*~8#Mo z`HhaWRGAI!_7X9|@(nbcX%r%y;* zlsD?D$k)Kb^UxQCJ>*7d(;E^Gfqg#Gh92hH=b{fYlg#|XoaM_pu$c_v;r@9-@Kz_sI=b5 zal;YKRnaVnBBxySU=<0qwICSfO#U!4l}o+gKYcu^aEzp>;N<;19ugHwB!@MLm*t_1 zIVx4usP&1V`o6+sM}-nDk-b0{Xa!FAL_@hOPlWw$WNK>%uHy8%#zb!dc2FN(4$i5t zFS*&w*hR@$k^9SElykw>XvPw#S5j{GZI;9Cn)k5c030*HnO*H zSE?8q%wPM%%#^o|N82`7I05UtwGoImbdCRaP@`IzcGqtA==j;{{3~R+SyQ%!)5LTTxW_ zX)gO2uLqsAh@yrl>>%wwRf(Sg9exP6RgND&x|K)WL+CgGaS{$$*ok_~?kh-7D1_Wl zTCk6j2`gdKC7<^!8o}<6baz`m-_;}^$zwg(`_5;}wFi$%bLM`x16{<|$(Ca1`{E1C zwnhOIFk0 z+bOe}N70PhJ_6>$thggt!Kr73^4-dbLSvSU?R$yBGaF)zcqcK!Ui(P}7lpkK;5;GC zN8r1mX;;HN&z+DQi(b7`DGAIcUlp~=7pj$gXfb_jozRc^nQGIB;va|!&1fzd8;10F z*N4f=d!#q2L3tv-s1P`o!|Ko$c~b*A;gko)qF1ZD)Bvr~T@)X-6eYoN%Yr%pdkml9P>GQQ3!W9# zag4-{nj}xrGIGKa6!5H_e7$3!Hc-gx3Q>Wv^c?J_z0BfcT&nrLJlQLLg22JBFchJVTT%qBxyZnWrGd%kqln`PxRprM#YiMqX_ANBFjk7 za?PaK0$BlGMxK8>|KbwS(F}P(9Z3uaI&v>lZxAzm(hZ7DvMw9qY{A=~sl8OxnKUq30mvGvy)uD%%67b&*I4)&(3Qh&h+GQz`ksjL_gE0&5Hs`z)% zuCCdtc;I<3+H`!tafoAg5pTrSUb3KnyL`C(`85qUT`BW)bK1;79rbZ7$GdAF`-jpr zW^CH?@~&e+cIi50sMY$aSBbr~9uxJUb5b#R`K|LAI{!GBLKjArZlIdidsH_hW4!D( zbiWP%|KG7($w`>bRrCV3Ns zQt(x4!DmI3jdTW#%?haP;*ES-gA|wWc6D`YIMkZ^<#sT`8a5ykx0_KhQ@HE4$NPg* zW<;0MPTiAz%2+hA+AXm82y%u8obmkCQHV?kXQKqAzPUufsBqn5jDX{o+x0P!<~U1q zA>`T($#@f|)(Dc{v0SR+i%!(WVb<=2->t)F>;60gHi1h^eMbGM)--Z~g}*d))V7Kg z3O*IyaQqmm*e{IU&Zo-1{;)+9B_!o6(LJ1==8B5P9&XY1fde(%kzMpDOLHmn=V!=` z>MWqSsa)-*wGQt^YzZm`Bgi{87v3N=zR?Q)OL^f{#BiCvq>+B}sv{li7k5?97s#_O zN%L>tL_~2vzZAor&R6B|`{{SwUJLQ^7bs@0_Ygc5M_2##wB!G%(ole_yXl(2uvs5Ts1+Hj`Va-) z!i{AqsnnTnS-!X#B-Z|~v>pMC=&+kvF&gIhpwsV>em=;m(0Gf?NwkWBV}3*((y>T(%C7f@G-oMJg4tB*{XjwfL*wOAv%vXda$oQ*6KR~lZdBqSzqk#D|EAbYK zN4BY)UltFQiY=1NIKsRdrh@<Mun4))`=)SBhG@jw~!$V5Z{ literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.eot b/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.eot new file mode 100644 index 0000000000000000000000000000000000000000..55085ca95d15d01e89951123f3284301ac0fdd9a GIT binary patch literal 34388 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 z

    CU}7GeBEGyHxV>1? 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

    G(@`k}FBS4SZ~LhZ{YD7${+!&2t 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 literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.svg b/core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.svg new file mode 100644 index 0000000..4ef85aa --- /dev/null +++ b/core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.svg @@ -0,0 +1,4516 @@ + + + + +Created by FontForge 20190112 at Tue Feb 12 10:24:59 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.ttf b/core/external/eo-framework/core/assets/css/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7ece3282a4f7824b249d9e568819d98bd2fa3da6 GIT binary patch literal 186228 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

    yCeYkMVLrHl=%La>qe!wC0sAZt2vp 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�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%0A<30Gcn=B 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 OxW^VIsrBUBm9B?sDHTZcfB0p;#* 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
    +
    .bounce
    +
    + +

    Par déclencheur

    + +

    Ajouter la classe "animate-on" lors d'un évènement javascript pour déclencer l'animation.

    + +
    + +

    Cliquer pour activer l'animation

    + +
    +
    .bounce
    +
    + +

    Liste de toutes les animations

    + +

    Attention Seekers

    + +
    +
    .bounce
    +
    .flash
    +
    .headShake
    +
    .jello
    +
    .pulse
    +
    .rubberBand
    +
    .shake
    +
    .swing
    +
    .tada
    +
    .wobble
    +
    + +

    Bouncing entrances

    +

    Cliquer pour activer l'animation

    + +
    +
    .bounceIn
    +
    .bounceInDown
    +
    .bounceInLeft
    +
    .bounceInRight
    +
    .bounceInUp
    +
    + +

    Bouncing exits

    +

    Cliquer pour activer l'animation

    + +
    +
    .bounceOut
    +
    .bounceOutDown
    +
    .bounceOutLeft
    +
    .bounceOutRight
    +
    .bounceOutUp
    +
    + +

    Fading entrances

    +

    Cliquer pour activer l'animation

    + +
    +
    .fadeIn
    +
    .fadeInDown
    +
    .fadeInDownBig
    +
    .fadeInLeft
    +
    .fadeInLeftBig
    +
    .fadeInRight
    +
    .fadeInRightBig
    +
    .fadeInUp
    +
    .fadeInUpBig
    +
    + +

    Fading exits

    +

    Cliquer pour activer l'animation

    + +
    +
    .fadeOut
    +
    .fadeOutDown
    +
    .fadeOutDownBig
    +
    .fadeOutLeft
    +
    .fadeOutLeftBig
    +
    .fadeOutRight
    +
    .fadeOutRightBig
    +
    .fadeOutUp
    +
    .fadeOutUpBig
    +
    + +

    Sliding entrances

    +

    Cliquer pour activer l'animation

    + +
    +
    .slideInDown
    +
    .slideInLeft
    +
    .slideInRight
    +
    .slideInUp
    +
    + +

    Sliding exits

    +

    Cliquer pour activer l'animation

    + +
    +
    .slideOutDown
    +
    .slideOutLeft
    +
    .slideOutRight
    +
    .slideOutUp
    +
    + +

    Custom

    + +
    +
    .bounceInLight
    +
    .rotate
    +
    .downAndUp
    +
    + + diff --git a/core/external/eo-framework/core/assets/examples/inc/autocomplete/autocomplete.html b/core/external/eo-framework/core/assets/examples/inc/autocomplete/autocomplete.html new file mode 100644 index 0000000..53824ac --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/autocomplete/autocomplete.html @@ -0,0 +1,219 @@ +

    Autocomplete

    + +

    Standard

    + +

    autocomplete-icon-before L'icone loupe. Peut être remplacée par n'importe qu'elle Font Awesome

    +

    autocomplete-icon-after La croix pour supprimer le texte. Peut être remplacée par n'importe qu'elle Font Awesome

    + +
    + + +
    + +
      +
    • +
      + Résultat 1 +
      +
    • +
    +
    + + +

    Couleur

    + +
      +
    • Gris (par défaut) : "autocomplete-grey"
    • +
    • Blanc : "autocomplete-light"
    • +
    + +
    + +
    +
    +
    + +
      +
    • +
      + Résultat 1 +
      +
    • +
    +
    +
    + +
    +
    + +
      +
    • +
      + Résultat 1 +
      +
    • +
    +
    +
    +
    + +

    Loader

    + +
    + +
    + +
      +
    • +
      + Résultat 1 +
      +
    • +
    +
    + +

    Suppression

    + +
    + +
    + +
      +
    • +
      + Résultat 1 +
      +
    • +
    +
    + +

    Pas de résultat / résultat textuel

    + +

    La classe "autocomplete-result" devient "autocomplete-result-text"

    + +
    + +
    + +
      +
    • +
      + Pas de résultats + Essayez en changeant les mots clés +
      +
    • +
    +
    + +

    Autocomplete avancé

    + +
    + +
    + +
      +
    • + +
      + Titre + Sous-titre +
      +
    • +
    +
    + +

    Taille

    + +
      +
    • autocomplete-small Contenu taille 200px
    • +
    • autocomplete-medium Contenu taille 300px (par défaut)
    • +
    • autocomplete-large Contenu taille 400px
    • +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/button/button.html b/core/external/eo-framework/core/assets/examples/inc/button/button.html new file mode 100644 index 0000000..ed60a22 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/button/button.html @@ -0,0 +1,148 @@ +

    Boutons

    + +

    Le module permet de nombreuses personnalisations en ajoutant des classes à celle de base : "wpeo-button"

    + +

    Simple

    + +

    Si aucune couleur n'est précisée, la classe "button-main" est appliquée.

    + +
    + +
    .button-main
    +
    .button-red
    +
    .button-yellow
    +
    .button-blue
    +
    .button-green
    +
    .button-light
    +
    .button-grey
    +
    .button-dark
    +
    .button-transparent
    + +

    Bordered

    + +
    + +
    .button-main
    +
    .button-red
    +
    .button-yellow
    +
    .button-blue
    +
    .button-green
    +
    .button-light
    +
    .button-grey
    +
    .button-dark
    + +

    Avec button-icone

    + +
    + +
    Bouton
    +
    Bouton
    + +

    Carré

    + +
    + +
    +
    +
    +
    + +

    Arrondis

    + +
    + +
    .button-radius-1
    +
    .button-radius-2
    +
    .button-radius-3
    +
    + +

    Désactiver

    + +

    La classe utilise la propriété "pointer-events: none;" pour désactiver totalement les actions sur le bouton.

    + +
    + +
    .button-disabled
    + +

    Il existe certains cas où vous souhaitez que votre bouton ai seulement l'apparence d'être désactivé car vous avez besoin d'accrocher des évènements dessus.
    +Utilisez dans ce cas la classe "button-event" pour réactiver la propriété CSS pointer event.

    +

    Exemple : Votre bouton semble désactivé et vous pouvez afficher un message d'erreur lorsque l'on clique dessus.

    + +
    + +
    .button-disabled.button-event
    + +

    Taille

    + +

    Note : Il n'y a pas besoin d'utiliser de classe pour la taille standard

    + +
    + +
    .button-size-small
    +
    taille standard
    +
    .button-size-large
    + +

    Progress

    + +

    Cette classe permet l'animation d'un bouton en cas de chargement, réussite et échec d'une action. Il suffit de rajouter la classe en fonction du code javascript.

    + +
    + +

    Cliquer sur les boutons pour activer les animations :

    + +
    .button-load
    +
    .button-success
    +
    .button-error
    + +

    Autres classes

    + +
      +
    • button-margin Espace en haut et en bas du bouton
    • +
    • button-strong label du bouton en gras
    • +
    • button-uppercase label du bouton en capital
    • +
    • button-float-left Le bouton se positionne à gauche du contenu
    • +
    • button-float-right Le bouton se positionne à droite du contenu
    • +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/container/container.html b/core/external/eo-framework/core/assets/examples/inc/container/container.html new file mode 100644 index 0000000..d02ed1a --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/container/container.html @@ -0,0 +1,11 @@ +

    Contenaire principal

    + +

    Nous avons besoin d'une classe pour débloquer tous les assets de WPEO Assets

    + +

    Utilisez la classe "wpeo-wrap" sur un élément englobant la totalité de votre html.

    + +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/dropdown/dropdown.html b/core/external/eo-framework/core/assets/examples/inc/dropdown/dropdown.html new file mode 100644 index 0000000..7985fff --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/dropdown/dropdown.html @@ -0,0 +1,184 @@ + + +

    Dropdown standard / liste

    + +
    + +
    + + +
    + +

    Dropdown grille

    + +

    On peut ajouter le module Grid au module Dropdown. Les deux modules associés permettent un affichage grille en dropdown assez poussé.

    + +
    + + + +

    Icones pour le Toggle

    + +

    Le module bouton est compatible avec le module Dropdown. Certaines icones changent si le dropdown est activé ou non.

    + +
    + +
    +
    +
    + + +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    +
    + + +
    +
    + +
    +
    +
    + + +
    +
    +
    + +

    Icones liste

    + +
    + + + +

    Alignement

    + +
    + +
    +
    + +
    +
    + +
    +
    + +

    Taille

    + +
      +
    • dropdown-small Contenu de petite taille
    • +
    • dropdown-medium Contenu de taille moyenne (par défaut)
    • +
    • dropdown-large Contenu de grande taille
    • +
    + +

    Padding

    + +
      +
    • dropdown-padding-0 Pas de padding pour le contenu
    • +
    • dropdown-padding-1 Padding de 0.6em pour le contenu
    • +
    • dropdown-padding-2 Padding de 1.2em pour le contenu
    • +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/form/form.html b/core/external/eo-framework/core/assets/examples/inc/form/form.html new file mode 100644 index 0000000..9e3d340 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/form/form.html @@ -0,0 +1,597 @@ +

    Form

    + +

    Utilisez la classe "wpeo-form" sur l'élément englobant le formulaire.

    +

    Le formulaire ci-dessous utilise le module Grid pour la mise en page

    + +
    +
    +
    + Votre nom + +
    +
    +
    +
    + Votre Prénom + +
    +
    +
    +
    + Votre Email + +
    +
    +
    +
    + Hobbies + +
    +
    +
    +
    + Origine + +
    +
    +
    +
    + Un message + + Ne donnez pas d'informations trop personnelles +
    +
    +
    +
    + Envoyer le formulaire +
    +
    +
    + +
    + +

    Détails des champs

    + +

    Tous les champs sont à placer dans la balise "wpeo-form"

    + +
    + +

    Texte

    + +
    +
    +
    + Champs texte + +
    +
    +
    +
    +
    +
    + +

    Textarea

    + +
    +
    +
    + Champs textarea + +
    +
    +
    +
    +
    +
    + +

    Select simple

    + +
    +
    +
    + Champs Select + +
    +
    +
    +
    +
    +
    + +

    Radio

    + +
    +
    +
    + Champs Radio + +
    +
    +
    +
    +
    +
    + +

    Checkbox

    + +
    +
    +
    + Champs Checkbox + +
    +
    +
    +
    +
    +
    + +

    Champs date

    + +
    +
    +
    + Champs Date + +
    +
    +
    +
    +
    +
    + +

    Champs Dropdown

    + +

    Ce champs utilise le module Dropdown

    + +
    +
    +
    + Champs Dropdown + +
    +
    +
    +
    +
    +
    + +

    Champs Autocomplete

    + +

    Ce champs utilise le module Autocomplete

    + +
    +
    +
    + Champs Autocomplete +
    + +
    +
    +
    +
    +
    +
    +
    + +

    Icones

    + +

    Icone simple

    + +
    +
    + Label + +
    +
    + +
    + +

    Icone/texte avant et après le champs

    + +
    +
    + Label + +
    +
    + +
    + +
    +
    + Label + +
    +
    + +
    + +
    +
    + Label + +
    +
    + +
    + +

    Champs requis

    + +
    +
    + Label + +
    +
    + +
    + +

    Champs Disable

    + +
    +
    + Label + +
    +
    + +
    + +

    Erreur sur un champs

    + +
    +
    + Label + +
    +
    + +
    + +

    Label secondaire

    + +
    +
    + Label + + Phrase supplémentaire +
    +
    + +
    + +

    Couleurs

    + +

    Les classes s'utilise au même niveau que la classe "wpeo-form"

    + +
      +
    • form-light Change la couleur des champs en blanc
    • +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/grid/grid.html b/core/external/eo-framework/core/assets/examples/inc/grid/grid.html new file mode 100644 index 0000000..c4c7c59 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/grid/grid.html @@ -0,0 +1,70 @@ +

    Grid

    + +

    Le module de grille est géré avec la propriété CSS Flexbox. Elle permet de créer des mises en pages simples et avancées.

    + +

    Simple

    +

    La classe de base se nomme "wpeo-grid". Les classes "grid-1", "grid-2", "grid-3", "grid-4", "grid-5", "grid-6" définissent le nombre d'élément par ligne.

    + +
    + +
    +
    Element 1
    +
    Element 2
    +
    Element 3
    +
    Element 4
    +
    + +
    +
    Element 1
    +
    Element 2
    +
    + +

    Avancé

    + +

    Le module permet de créer des affichages plus complexe en ajouant des tailles aux blocs enfants.
    Par exemple, ajouter la classe "grid-2" +permettra au bloc de faire 2 fois sa taille. "grid-3" lui permettra de faire 3 fois sa taille, etc...

    +

    Nous pouvons dire que chaque bloc a, par défaut, la classe "grid-1"

    + +
    + +
    +
    Element 1 (.grid-1)
    +
    Element 2 (.grid-3)
    +
    Element 3 (.grid-1)
    +
    Element 4 (.grid-1)
    +
    Element 5 (.grid-1)
    +
    Element 6 (.grid-1)
    +
    + + +

    Note : sur une grille de 3 blocs. Un bloc ne peut pas faire plus de 3 fois sa taille, car il dépasserait les 100%. les classes "grid-4" +et plus ne fonctionnent pas sur le bloc dans ce cas-là.

    + +

    Padding

    + +
      +
    • grid-padding-0 Pas de padding pour le contenu
    • +
    • grid-padding-1 Padding de 0.2em pour le contenu
    • +
    • grid-padding-1 Padding de 0.5em pour le contenu
    • +
    • grid-padding-3 Padding de 1em pour le contenu
    • +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/heading/heading.html b/core/external/eo-framework/core/assets/examples/inc/heading/heading.html new file mode 100644 index 0000000..64f50d8 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/heading/heading.html @@ -0,0 +1,12 @@ +

    Heading

    + +

    Les éléments de à sont disponibles :

    + +
    +

    H1 titre

    +

    H2 titre

    +

    H3 titre

    +

    H4 titre

    +
    H5 titre
    +
    H6 titre
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/loader/loader.html b/core/external/eo-framework/core/assets/examples/inc/loader/loader.html new file mode 100644 index 0000000..af0765d --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/loader/loader.html @@ -0,0 +1,15 @@ +

    Loader

    + +

    Ce module est géré par le javascript

    + +

    Voici le html généré :

    +
    + +

    Cliquer sur l'élement pour activer le loader

    +
    +
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/modal/modal.html b/core/external/eo-framework/core/assets/examples/inc/modal/modal.html new file mode 100644 index 0000000..86bfd6d --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/modal/modal.html @@ -0,0 +1,98 @@ + + +

    Le module utilise la classe : "wpeo-modal"

    + +
    + +

    Ajouter la classe "modal-active" permet de faire apparaître la modal

    +
    + +
    + Cliquer pour ouvrir la modal + +
    + +
    +
    + +

    Bouton déclenchant l'ouverture d'une modal

    + +
    + +

    Bouton déclenchant l'ouverture d'une modal avec une requête AJAX

    + +
    + +

    Les attributs du bouton

    +
      +
    • data-action: permet de lancer une action en AJAX
    • +
    • data-title: permet de définir le titre de la modal
    • +
    • data-parent: permet de définir le contenaire parent, cet attribut est obligatoire pour utiliser data-target
    • +
    • data-target: permet de cibler la modal définie dans la vue, cet attribute doit être utiliser avec data-parent
    • +
    + +

    Envoyer des données en AJAX

    +

    Tous les data-* dans le bouton sont envoyés dans la requête AJAX déclenché par le bouton

    diff --git a/core/external/eo-framework/core/assets/examples/inc/notice/notice.html b/core/external/eo-framework/core/assets/examples/inc/notice/notice.html new file mode 100644 index 0000000..cd2831f --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/notice/notice.html @@ -0,0 +1,48 @@ +

    Notice

    + +
    +
    +
    Titre de la notice
    +
    Le contenu de la notice, lorem ipsum dolor sit amet
    +
    +
    +
    + +
    +
    +
    Titre de la notice
    +
    Le contenu de la notice, lorem ipsum dolor sit amet
    +
    +
    +
    + +
    +
    +
    Titre de la notice
    +
    +
      +
    • Coucou ouioui
    • +
    • Coucou
    • +
    • Coucou
    • +
    • Coucou
    • +
    +
    +
    +
    +
    + +
    +
    +
    Titre de la notice
    +
    Le contenu de la notice, lorem ipsum dolor sit amet
    +
    +
    +
    + +
    +
    +
    Titre de la notice
    +
    Le contenu de la notice, lorem ipsum dolor sit amet
    +
    +
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/notification.html b/core/external/eo-framework/core/assets/examples/inc/notification.html new file mode 100644 index 0000000..9d08b24 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/notification.html @@ -0,0 +1 @@ +Coucou les copains ! diff --git a/core/external/eo-framework/core/assets/examples/inc/notification/notification.html b/core/external/eo-framework/core/assets/examples/inc/notification/notification.html new file mode 100644 index 0000000..2033b60 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/notification/notification.html @@ -0,0 +1,103 @@ +

    Notification

    + +

    Le module utilise la classe : "wpeo-notification"

    +

    La notification est invisible. Lorsqu'on lui ajoute la classe "notification-active", elle apparaît en bas à droite de l'écran.

    + +

    Notification simple

    + +
    + +
    +
    Texte de la notification
    +
    +
    + +

    Notification avec texte avancé

    + +
    + +
    +
    Utilisateur ajouté dans la section. Voir
    +
    +
    + +

    Image

    + +
    + +
    + +
    Texte de la notification
    +
    +
    + +

    Icone

    + +
    + +
    + +
    Texte de la notification
    +
    +
    + +

    Couleurs

    + +
    + +
    +
    +
    + +
    Classe .notification-green
    +
    +
    +
    +
    +
    + +
    Classe .notification-blue
    +
    +
    +
    +
    +
    + +
    Classe .notification-orange
    +
    +
    +
    +
    +
    + +
    Classe .notification-red
    +
    +
    +
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/pagination/pagination.html b/core/external/eo-framework/core/assets/examples/inc/pagination/pagination.html new file mode 100644 index 0000000..55f0cf8 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/pagination/pagination.html @@ -0,0 +1,44 @@ +

    Pagination

    + +

    Le module utilise la classe : "wpeo-pagination"

    + +
    + + diff --git a/core/external/eo-framework/core/assets/examples/inc/tab/tab.html b/core/external/eo-framework/core/assets/examples/inc/tab/tab.html new file mode 100644 index 0000000..19b846b --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/tab/tab.html @@ -0,0 +1,215 @@ +

    Tab

    + +

    Le module utilise la classe : "wpeo-tab"

    + +
    + +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    + +

    Format vertical

    + +
    + +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    + +

    Icones

    + +
    + +
    +
    +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    +
    +
    +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    +
    +
    + +

    Tab désactivée

    + +
    + +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    • Onglet 3
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    + + +

    Effets

    + +
    + +
    +
    +

    Fade Vertical

    +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    +
    +
    +

    Fade Horizontal

    +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    +
    +
    + +

    Dropdown

    + +

    Il est possible d'ajouter le module Dropdown du framework dans les onglets du module Tab

    + +
    + +
    +
      +
    • Onglet 1
    • +
    • Onglet 2
    • +
    • + + +
    • +
    +
    +
    +

    Je suis le contenu du premier onglet

    +
    +
    +

    Je suis le contenu du deuxième onglet

    +
    +
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/table/table.html b/core/external/eo-framework/core/assets/examples/inc/table/table.html new file mode 100644 index 0000000..2da694c --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/table/table.html @@ -0,0 +1,205 @@ +

    Tableau

    + +

    Utiliser la classe : "wpeo-table" sur la balise

    + +

    Standard

    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    #NomPrénomGenre
    1SnowJonHome
    2TargaryenDaenerysND
    3StarkAryaFemme
    #NomPrénomGenre
    + +

    Flexibles

    + +

    Les tableaux flexibles utilisent la propriété CSS Flexbox. Ils sont donc beaucoup plus permissif (multiligne, responsif, changement d'apparence, etc..)

    +

    Attention, bien que la classe principale du module soit la même, le HTML est différent

    + +
    + +
    +
    +
    #
    +
    Nom
    +
    Prénom
    +
    Genre
    +
    +
    +
    1
    +
    Snow
    +
    Jon
    +
    Home
    +
    +
    +
    2
    +
    Targaryen
    +
    Daenerys
    +
    ND
    +
    +
    + +

    Taille générales des cellules

    +

    Appliquer cette classe "table-{NOMBRE_CELLULE}" en fonction du nombre de cellule(s) de votre tableau.
    +Exemple : vous avez 4 cellules, utiliser la classe table-4. Vous pouvez aller jusqu'à 10 cellules.

    +

    Cette classe permet d'éviter les erreurs d'affichage en responsive

    + +
    + +

    Changer la taille d'une cellule

    +

    Rajouter certaines classes aux cellules en elles-même changent leur taille. Voici les classes disponibles :

    +
      +
    • "table-25" max-width: 25px;
    • +
    • "table-50" max-width: 50px;
    • +
    • "table-75" max-width: 75px;
    • +
    • "table-100" max-width: 100px;
    • +
    • "table-125" max-width: 125px;
    • +
    • "table-150" max-width: 150px;
    • +
    • "table-175" max-width: 175px;
    • +
    • "table-200" max-width: 200px;
    • +
    + +

    Alignement d'une cellule

    +

    Utiliser la classe "table-end" justifie la cellule sur la droite

    + +

    Autre(s) classe(s)

    +
      +
    • "table-padding-0" enlève la padding
    • +
    + +

    Exemple regroupant les cas de figure

    + +
    + +
    +
    +
    #
    +
    Nom
    +
    Prénom
    +
    Genre
    +
    +
    +
    +
    1
    +
    Snow
    +
    Jon
    +
    Home
    +
    +
    +
    +
    2
    +
    Targaryen
    +
    Daenerys
    +
    ND
    +
    +
    +
    diff --git a/core/external/eo-framework/core/assets/examples/inc/tooltip/tooltip.html b/core/external/eo-framework/core/assets/examples/inc/tooltip/tooltip.html new file mode 100644 index 0000000..c70f376 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/tooltip/tooltip.html @@ -0,0 +1,38 @@ +

    Tooltip

    + +

    Le module utilise la classe : "wpeo-tooltip-event"

    + +

    "wpeo-tooltip-event" se place sur n'importe quel élément. Le javascript génèrera ainsi la tooltip au survol de l'élément

    + +

    Options de configuration

    + +

    aria-label Texte de la tooltip

    + +

    data-direction Position de la tooltip

    +
      +
    • top (par défaut)
    • +
    • right
    • +
    • bottom
    • +
    • left
    • +
    + +

    data-color Couleur de fond de la tooltip

    +
      +
    • dark (Par défaut)
    • +
    • primary
    • +
    • light
    • +
    • red
    • +
    + +
    + + +Top +Right +Bottom +Left diff --git a/core/external/eo-framework/core/assets/examples/inc/util/util.html b/core/external/eo-framework/core/assets/examples/inc/util/util.html new file mode 100644 index 0000000..8d01017 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/inc/util/util.html @@ -0,0 +1,9 @@ +

    Util

    + +

    Le module contient toute sorte de classes utilitaires

    + +

    Masquer un élément

    + +
    diff --git a/core/external/eo-framework/core/assets/examples/index.html b/core/external/eo-framework/core/assets/examples/index.html new file mode 100644 index 0000000..666708b --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/index.html @@ -0,0 +1,82 @@ + + + + + Doc Framework CSS Eoxia + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + diff --git a/core/external/eo-framework/core/assets/examples/index.php b/core/external/eo-framework/core/assets/examples/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/index.php @@ -0,0 +1,2 @@ + Cliquer pour ouvrir la modal #1 +``` + +* La classe wpeo-modal-event est obligatoire. Comme on a pu le voir plus haut, l'évènement qui déclenche l'ouverture de la popup écoutes cette classe. +* L'attribut data-title permet de définir le titre de la popup. +* L'attribut data-action permet de définir l'action AJAX WordPress. + +### Définir le contenu de la popup + +Le contenu de la popup est renvoyé par l'action AJAX. diff --git a/core/external/eo-framework/core/assets/js/action.lib.js b/core/external/eo-framework/core/assets/js/action.lib.js new file mode 100644 index 0000000..16c054c --- /dev/null +++ b/core/external/eo-framework/core/assets/js/action.lib.js @@ -0,0 +1,265 @@ +/** + * @namespace EO_Framework_Actions + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + * + * @since 0.1.0 + * @version 1.0.0 + * @license GPLv3 + * + * @description Gestion des actions XHR principaux + * + * * action-input: Déclenches une requête XHR avec les balises inputs contenu dans le contenaire parent. + * * action-attribute: Déclenches une requête XHR avec les attributs de l'élément déclencheur. + * * action-delete: Déclenches une requête XHR avec les attributs de l'élément déclencheur si l'utilisateur confirme la popin "confirm" du navigateur. + */ + +if ( ! window.eoxiaJS.action ) { + /** + * @summary L'objet principal "Action" ajouté à l'objet eoxiaJS afin de permêttre au fichier init.js de booter la méthode "init" de cet objet. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @type {Object} + */ + window.eoxiaJS.action = {}; + + /** + * @summary Méthode obligatoire pour le boot de l'objet "Action". Cette méthode est appelée automatiquement par init.js. + * + * Cette méthode appelle la méthode "event" de l'objet "Action". + * + * @since 0.1.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Actions + * + * @returns {void} + */ + window.eoxiaJS.action.init = function() { + window.eoxiaJS.action.event(); + }; + + /** + * @summary Méthode "event" définie les 3 events principaux des actions de EO Framework: "action-input", "action-attribute" et "action-delete". + * + * Ses trois évènements sont déclenchés au clic gauche de la souris. + * + * La classe "no-action" permet d'annuler l'évènement. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Actions + * + * @returns {void} + */ + window.eoxiaJS.action.event = function() { + jQuery( document ).on( 'click', '.action-input:not(.no-action)', window.eoxiaJS.action.execInput ); + jQuery( document ).on( 'click', '.action-attribute:not(.no-action)', window.eoxiaJS.action.execAttribute ); + jQuery( document ).on( 'click', '.action-delete:not(.no-action)', window.eoxiaJS.action.execDelete ); + jQuery( '#wpeo-task-metabox h2 span .action-attribute' ).click( window.eoxiaJS.action.execAttribute ); + jQuery( '#wpeo-task-metabox h2 span .action-input' ).click( window.eoxiaJS.action.execInput ); + jQuery( '#wpeo-task-metabox h2 span .action-delete' ).click( window.eoxiaJS.action.execDelete ); + }; + + /** + * @summary Permet de lancer une requête avec les valeurs des inputs trouvés dans le contenaire défini par l'attribut "data-parent". + * + * @since 0.1.0 + * @version 1.0.0 + * @memberof EO_Framework_Actions + * + * @example + * + *
    + * + * + * + *
    + * + * @param {MouseEvent} event Toutes les propriétés de la souris lors du clic. + * + * @returns {void} + */ + window.eoxiaJS.action.execInput = function( event ) { + var element = jQuery( this ), loaderElement = element, parentElement = element, listInput = undefined, data = {}, i = 0, doAction = true, key = undefined, inputAlreadyIn = []; + event.preventDefault(); + + if ( element.attr( 'data-parent' ) ) { + parentElement = element.closest( '.' + element.attr( 'data-parent' ) ); + } + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } else { + doAction = window.eoxiaJS.action.checkBeforeCB(element); + } + + if ( doAction ) { + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + window.eoxiaJS.loader.display( loaderElement ); + + listInput = window.eoxiaJS.arrayForm.getInput( parentElement ); + for ( i = 0; i < listInput.length; i++ ) { + if ( listInput[i].name && -1 === inputAlreadyIn.indexOf( listInput[i].name ) ) { + inputAlreadyIn.push( listInput[i].name ); + data[listInput[i].name] = window.eoxiaJS.arrayForm.getInputValue( listInput[i] ); + } + } + + element.get_data( function( attrData ) { + for ( key in attrData ) { + data[key] = attrData[key]; + } + + if ( element[0].request ) { + element[0].request.abort(); + } + + + element[0].request = window.eoxiaJS.request.send( element, data ); + } ); + } + }; + + /** + * @summary Permet de lancer une requête avec les valeurs des attributs commençant par data-* sur la balise ou le classe action-attribute est placée. + * + * L'attribut data-action et obligatoire pour lancer une requête XHR, c'est sur celle-ci que l'action AJAX WordPress sera attaché avec le hook wp_ajax_*. + * + * @since 0.1.0 + * @version 1.0.0 + * @memberof EO_Framework_Actions + * + * @example + * + * Créer un post + * + * @param {MouseEvent} event Toutes les propriétés de la souris lors du clic. + * + * @returns {void} + */ + window.eoxiaJS.action.execAttribute = function( event ) { + var element = jQuery( this ); + var loaderElement = element; + var doAction = true; + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } else { + doAction = window.eoxiaJS.action.checkBeforeCB(element); + } + + if ( element.hasClass( '.grey' ) ) { + doAction = false; + } + + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + if ( doAction ) { + if ( jQuery( this ).attr( 'data-confirm' ) ) { + if ( window.confirm( jQuery( this ).attr( 'data-confirm' ) ) ) { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( loaderElement ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } else { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( loaderElement ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } + + event.stopPropagation(); + }; + + /** + * Make a request with data on HTML element clicked with a custom delete message. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param {MouseEvent} event Properties of element triggered by the MouseEvent. + * + * @returns {void} + */ + window.eoxiaJS.action.execDelete = function( event ) { + var element = jQuery( this ); + var loaderElement = element; + var doAction = true; + + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-namespace' ) && element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } + + if ( element.hasClass( '.grey' ) ) { + doAction = false; + } + + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + if ( doAction ) { + if ( window.confirm( element.attr( 'data-message-delete' ) ) ) { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( element ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } + }; + + /** + * Si une méthode de callback existe avant l'action, cette méthode l'appel. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param {Object} element L'élément déclencheur. + * + * @returns {bool} True si l'action peut être envoyé, sinon False. + */ + window.eoxiaJS.action.checkBeforeCB = function( element ) { + var beforeMethod = element.attr( 'wpeo-before-cb' ); + + if ( ! beforeMethod ) { + return true; + } + + beforeMethod = beforeMethod.split( '/' ); + + if ( ! beforeMethod[0] || ! beforeMethod[1] || ! beforeMethod[2] ) { + return true; + } + + return window.eoxiaJS[beforeMethod[0]][beforeMethod[1]][beforeMethod[2]]( element ); + } +} diff --git a/core/external/eo-framework/core/assets/js/array-form.lib.js b/core/external/eo-framework/core/assets/js/array-form.lib.js new file mode 100644 index 0000000..1de3802 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/array-form.lib.js @@ -0,0 +1,78 @@ +/** + * @namespace EO_Framework_Array_Form + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Action for make request AJAX. + * + * @since 1.0.0-easy + * @version 1.0.0-easy + */ + +if ( ! window.eoxiaJS.arrayForm ) { + /** + * Declare the object arrayForm. + * + * @memberof EO_Framework_Array_Form + * + * @since 1.0.0-easy + * @version 1.0.0-easy + * @type {Object} + */ + window.eoxiaJS.arrayForm = {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.event = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @param {void} parent [description] + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.getInput = function( parent ) { + return parent.find( 'input, textarea, select' ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @param {void} input [description] + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.getInputValue = function( input ) { + switch ( input.getAttribute( 'type' ) ) { + case 'checkbox': + return input.checked; + break; + case 'radio': + return jQuery( 'input[name="' + jQuery( input ).attr( 'name' ) + '"]:checked' ).val(); + break; + default: + return input.value; + break; + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/attribute.lib.js b/core/external/eo-framework/core/assets/js/attribute.lib.js new file mode 100644 index 0000000..d40f398 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/attribute.lib.js @@ -0,0 +1,43 @@ +/** + * @namespace EO_Framework_Attribute + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ +if ( ! jQuery.fn.get_data ) { + + /** + * [description] + * + * @memberof EO_Framework_Attribute + * + * @param {Function} cb [description] + * @returns {void} [description] + */ + jQuery.fn.get_data = function( cb ) { + this.each( function() { + var data = {}; + var i = 0; + var localName = undefined; + + for ( i = 0; i < jQuery( this )[0].attributes.length; i++ ) { + localName = jQuery( this )[0].attributes[i].localName; + if ( 'data' === localName.substr( 0, 4 ) || 'action' === localName ) { + localName = localName.substr( 5 ); + + if ( 'nonce' === localName ) { + localName = '_wpnonce'; + } + + localName = localName.replace( '-', '_' ); + data[localName] = jQuery( this )[0].attributes[i].value; + } + } + + cb( data ); + } ); + }; +} diff --git a/core/external/eo-framework/core/assets/js/auto-complete.lib.js b/core/external/eo-framework/core/assets/js/auto-complete.lib.js new file mode 100644 index 0000000..c46cdfc --- /dev/null +++ b/core/external/eo-framework/core/assets/js/auto-complete.lib.js @@ -0,0 +1,293 @@ +/** + * @namespace EO_Framework_Auto_Complete + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/** + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + /** + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + if ( ! window.eoxiaJS.autoComplete ) { + + /** + * [autoComplete description] + * + * @memberof EO_Framework_Auto_Complete + * + * @type {Object} + */ + window.eoxiaJS.autoComplete = {}; + + /** + * [description] + * + * @memberof EO_Framework_Auto_Complete + * + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.init = function() { + window.eoxiaJS.autoComplete.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Auto_Complete + * + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.event = function() { + jQuery( document ).on( 'keyup', '.wpeo-autocomplete input', window.eoxiaJS.autoComplete.keyUp ); + jQuery( document ).on( 'click', '.wpeo-autocomplete .autocomplete-icon-after', window.eoxiaJS.autoComplete.deleteContent ); + jQuery( document ).on( 'click', 'body .wpeo-autocomplete input', window.eoxiaJS.autoComplete.preventClic ); + jQuery( document ).on( 'click', 'body', window.eoxiaJS.autoComplete.close ); + }; + + /** + * Make request when keyUp. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {KeyboardEvent} event Status of keyboard when keyUp event. + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.keyUp = function(event) { + var element = jQuery( this ); + var parent = element.closest( '.wpeo-autocomplete' ); + var label = element.closest( '.autocomplete-label' ); + + // If is not a letter or a number, stop func. + if ( ! (event.which <= 90 && event.which >= 48 ) && event.which != 8 && event.which <= 96 && event.which >= 105 ) { + return; + } + + parent.find( 'input.eo-search-value' ).val( '' ); + + // If empty searched value, stop func. + if ( element.val().length === 0 ) { + parent.removeClass( 'autocomplete-full' ); + return; + } else { + + // Add this class for display the empty button. + if ( ! parent.hasClass( 'autocomplete-full' ) ) { + parent.addClass( 'autocomplete-full' ); + } + } + + // If already request in queue, abort it. + if ( parent[0].xhr ) { + parent[0].xhr.abort(); + } + + var data = { + action: parent.attr( 'data-action' ), + _wpnonce: parent.attr( 'data-nonce' ), + term: element.val(), + slug: parent.find( 'input[name="slug"]' ).val(), + args: parent.find( 'textarea' ).val() + }; + + window.eoxiaJS.autoComplete.initProgressBar( parent, label ); + window.eoxiaJS.autoComplete.handleProgressBar( parent, label ); + + parent.get_data( function( attribute_data ) { + for (var key in attribute_data) { + if ( ! data[key] ) { + data[key] = attribute_data[key]; + } + } + + parent[0].xhr = window.eoxiaJS.request.send( jQuery( this ), data, function( triggeredElement, response ) { + window.eoxiaJS.autoComplete.clear( parent, label ); + + parent.addClass( 'autocomplete-active' ); + parent.find( '.autocomplete-search-list' ).addClass( 'autocomplete-active' ); + + if ( response.data && response.data.view && ! response.data.output ) { + parent.find( '.autocomplete-search-list' ).html( response.data.view ); + } else if (response.data && response.data.view && response.data.output ) { + jQuery( response.data.output ).replaceWith( response.data.view ); + } + } ); + } ); + }; + + /** + * Delete the content and result list. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.deleteContent = function( event ) { + var element = jQuery( this ); + var parent = element.closest( '.wpeo-autocomplete' ); + var label = element.closest( '.autocomplete-label' ); + + parent.find( 'input' ).val( '' ); + parent.find( 'input[type=hidden]' ).change(); + parent.find( 'input' ).trigger( 'keyUp' ); + + parent.removeClass( 'autocomplete-active' ); + parent.removeClass( 'autocomplete-full' ); + parent.find( '.autocomplete-search-list' ).removeClass( 'autocomplete-active' ); + + if ( parent[0].xhr ) { + parent[0].xhr.abort(); + window.eoxiaJS.autoComplete.clear(parent, label); + } + }; + + /** + * Permet de ne pas fermer la liste des résultats si on clic sur le champ de recherche. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {MouseEvent} event [description] + * @return {void} [description] + */ + window.eoxiaJS.autoComplete.preventClic = function( event ) { + event.stopPropagation(); + } + + /** + * Close result list + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.close = function( event ) { + jQuery( '.wpeo-autocomplete.autocomplete-active' ).each ( function() { + jQuery( this ).removeClass( 'autocomplete-active' ); + jQuery( this ).find( '.autocomplete-search-list' ).removeClass( 'autocomplete-active' ); + } ); + }; + + /** + * Handle progress bar. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.initProgressBar = function( parent, label ) { + // Init two elements for loading bar. + if ( label.find( '.autocomplete-loading').length == 0 ) { + var el = jQuery( '' ); + label[0].autoCompleteLoading = el; + label.append( label[0].autoCompleteLoading ); + + var elBackground = jQuery( '' ); + label[0].autoCompletedLoadingBackground = elBackground; + label.append( label[0].autoCompletedLoadingBackground ); + } + }; + + /** + * Handle with of the progress bar. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Auto_Complete + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.handleProgressBar = function( parent, label ) { + parent.find( '.autocomplete-loading' ).css({ + width: '0%' + }); + + setTimeout(function() { + parent.find( '.autocomplete-loading' ).css({ + width: '5%' + }); + }, 10 ); + + label[0].currentTime = 5; + + if ( ! label[0].interval ) { + label[0].interval = setInterval( function() { + label[0].currentTime += 3; + + if ( label[0].currentTime >= 90 ) { + label[0].currentTime = 90; + } + + label.find( '.autocomplete-loading' ).css({ + width: label[0].currentTime + '%', + }); + }, 1000 ); + } + }; + + /** + * Clear data of the autocomplete. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Auto_Complete + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.clear = function( parent, label ) { + if ( label[0] ) { + clearInterval(label[0].interval); + label[0].interval = undefined; + } + + if ( parent[0] ) { + parent[0].xhr = undefined; + } + + parent.find( '.autocomplete-search-list' ).html( '' ); + parent.find( '.autocomplete-loading' ).css({ + width: '100%', + }); + + setTimeout( function() { + jQuery( label[0].autoCompleteLoading ).remove(); + jQuery( label[0].autoCompletedLoadingBackground ).remove(); + }, 600 ); + }; + } diff --git a/core/external/eo-framework/core/assets/js/date.lib.js b/core/external/eo-framework/core/assets/js/date.lib.js new file mode 100644 index 0000000..bc2e6ff --- /dev/null +++ b/core/external/eo-framework/core/assets/js/date.lib.js @@ -0,0 +1,63 @@ +/** + * @namespace EO_Framework_Date + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Handle date + * + * @since 1.0.0 + * @version 1.0.0 + */ + +if ( ! window.eoxiaJS.date ) { + + /** + * [date description] + * + * @memberof EO_Framework_Date + * + * @type {Object} + */ + window.eoxiaJS.date = {}; + + /** + * [description] + * + * @memberof EO_Framework_Date + * + * @returns {void} [description] + */ + window.eoxiaJS.date.init = function() { + jQuery( document ).on ('click', '.group-date .date', function( e ) { + var format = 'd/m/Y'; + var timepicker = false; + + if ( jQuery( this ).closest( '.group-date' ).data( 'time' ) ) { + format += ' H:i:s'; + timepicker = true; + } + + jQuery( this ).datetimepicker( { + lang: 'fr', + format: format, + mask: true, + timepicker: timepicker, + closeOnDateSelect: true, + onChangeDateTime : function(ct, $i) { + if ( $i.closest( '.group-date' ).data( 'time' ) ) { + $i.closest( '.group-date' ).find( '.mysql-date' ).val( ct.dateFormat('Y-m-d H:i:s') ); + } else { + $i.closest( '.group-date' ).find( '.mysql-date' ).val( ct.dateFormat('Y-m-d') ); + } + + if ( $i.closest( '.group-date' ).attr( 'data-namespace' ) && $i.closest( '.group-date' ).attr( 'data-module' ) && $i.closest( '.group-date' ).attr( 'data-after-method' ) ) { + window.eoxiaJS[$i.closest( '.group-date' ).attr( 'data-namespace' )][$i.closest( '.group-date' ).attr( 'data-module' )][$i.closest( '.group-date' ).attr( 'data-after-method' )]( $i ); + } + } + } ).datetimepicker( 'show' ); + }); + }; +} diff --git a/core/external/eo-framework/core/assets/js/dest/jquery.datetimepicker.full.js b/core/external/eo-framework/core/assets/js/dest/jquery.datetimepicker.full.js new file mode 100644 index 0000000..b0d3de1 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/dest/jquery.datetimepicker.full.js @@ -0,0 +1,1849 @@ +/** + * @preserve jQuery DateTimePicker plugin v2.4.1 + * @homepage http://xdsoft.net/jqplugins/datetimepicker/ + * (c) 2014, Chupurnov Valeriy. + */ +/*global document,window,jQuery,setTimeout,clearTimeout*/ +(function ($) { + 'use strict'; + var default_options = { + i18n: { + ar: { // Arabic + months: [ + "كانون الثاني", "شباط", "آذار", "نيسان", "مايو", "حزيران", "تموز", "آب", "أيلول", "تشرين الأول", "تشرين الثاني", "كانون الأول" + ], + dayOfWeek: [ + "ن", "ث", "ع", "خ", "ج", "س", "ح" + ] + }, + ro: { // Romanian + months: [ + "ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie" + ], + dayOfWeek: [ + "l", "ma", "mi", "j", "v", "s", "d" + ] + }, + id: { // Indonesian + months: [ + "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" + ], + dayOfWeek: [ + "Sen", "Sel", "Rab", "Kam", "Jum", "Sab", "Min" + ] + }, + bg: { // Bulgarian + months: [ + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" + ], + dayOfWeek: [ + "Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" + ] + }, + fa: { // Persian/Farsi + months: [ + 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند' + ], + dayOfWeek: [ + 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه' + ] + }, + ru: { // Russian + months: [ + 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь' + ], + dayOfWeek: [ + "Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" + ] + }, + uk: { // Ukrainian + months: [ + 'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень' + ], + dayOfWeek: [ + "Ндл", "Пнд", "Втр", "Срд", "Чтв", "Птн", "Сбт" + ] + }, + en: { // English + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + el: { // Ελληνικά + months: [ + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" + ], + dayOfWeek: [ + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ" + ] + }, + de: { // German + months: [ + 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' + ], + dayOfWeek: [ + "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" + ] + }, + nl: { // Dutch + months: [ + "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december" + ], + dayOfWeek: [ + "zo", "ma", "di", "wo", "do", "vr", "za" + ] + }, + tr: { // Turkish + months: [ + "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" + ], + dayOfWeek: [ + "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts" + ] + }, + fr: { //French + months: [ + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" + ], + dayOfWeek: [ + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam" + ] + }, + es: { // Spanish + months: [ + "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb" + ] + }, + th: { // Thai + months: [ + 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม' + ], + dayOfWeek: [ + 'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.' + ] + }, + pl: { // Polish + months: [ + "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień" + ], + dayOfWeek: [ + "nd", "pn", "wt", "śr", "cz", "pt", "sb" + ] + }, + pt: { // Portuguese + months: [ + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + dayOfWeek: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab" + ] + }, + ch: { // Simplified Chinese + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + se: { // Swedish + months: [ + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" + ] + }, + kr: { // Korean + months: [ + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" + ], + dayOfWeek: [ + "일", "월", "화", "수", "목", "금", "토" + ] + }, + it: { // Italian + months: [ + "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab" + ] + }, + da: { // Dansk + months: [ + "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" + ] + }, + no: { // Norwegian + months: [ + "Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember" + ], + dayOfWeek: [ + "Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør" + ] + }, + ja: { // Japanese + months: [ + "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" + ], + dayOfWeek: [ + "日", "月", "火", "水", "木", "金", "土" + ] + }, + vi: { // Vietnamese + 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" + ], + dayOfWeek: [ + "CN", "T2", "T3", "T4", "T5", "T6", "T7" + ] + }, + sl: { // Slovenščina + months: [ + "Januar", "Februar", "Marec", "April", "Maj", "Junij", "Julij", "Avgust", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Ned", "Pon", "Tor", "Sre", "Čet", "Pet", "Sob" + ] + }, + cs: { // Čeština + months: [ + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" + ], + dayOfWeek: [ + "Ne", "Po", "Út", "St", "Čt", "Pá", "So" + ] + }, + hu: { // Hungarian + months: [ + "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December" + ], + dayOfWeek: [ + "Va", "Hé", "Ke", "Sze", "Cs", "Pé", "Szo" + ] + }, + az: { //Azerbaijanian (Azeri) + months: [ + "Yanvar", "Fevral", "Mart", "Aprel", "May", "Iyun", "Iyul", "Avqust", "Sentyabr", "Oktyabr", "Noyabr", "Dekabr" + ], + dayOfWeek: [ + "B", "Be", "Ça", "Ç", "Ca", "C", "Ş" + ] + }, + bs: { //Bosanski + months: [ + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" + ] + }, + ca: { //Català + months: [ + "Gener", "Febrer", "Març", "Abril", "Maig", "Juny", "Juliol", "Agost", "Setembre", "Octubre", "Novembre", "Desembre" + ], + dayOfWeek: [ + "Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds" + ] + }, + 'en-GB': { //English (British) + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + et: { //"Eesti" + months: [ + "Jaanuar", "Veebruar", "Märts", "Aprill", "Mai", "Juuni", "Juuli", "August", "September", "Oktoober", "November", "Detsember" + ], + dayOfWeek: [ + "P", "E", "T", "K", "N", "R", "L" + ] + }, + eu: { //Euskara + months: [ + "Urtarrila", "Otsaila", "Martxoa", "Apirila", "Maiatza", "Ekaina", "Uztaila", "Abuztua", "Iraila", "Urria", "Azaroa", "Abendua" + ], + dayOfWeek: [ + "Ig.", "Al.", "Ar.", "Az.", "Og.", "Or.", "La." + ] + }, + fi: { //Finnish (Suomi) + months: [ + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" + ], + dayOfWeek: [ + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La" + ] + }, + gl: { //Galego + months: [ + "Xan", "Feb", "Maz", "Abr", "Mai", "Xun", "Xul", "Ago", "Set", "Out", "Nov", "Dec" + ], + dayOfWeek: [ + "Dom", "Lun", "Mar", "Mer", "Xov", "Ven", "Sab" + ] + }, + hr: { //Hrvatski + months: [ + "Siječanj", "Veljača", "Ožujak", "Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", "Rujan", "Listopad", "Studeni", "Prosinac" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub" + ] + }, + ko: { //Korean (한국어) + months: [ + "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월" + ], + dayOfWeek: [ + "일", "월", "화", "수", "목", "금", "토" + ] + }, + lt: { //Lithuanian (lietuvių) + months: [ + "Sausio", "Vasario", "Kovo", "Balandžio", "Gegužės", "Birželio", "Liepos", "Rugpjūčio", "Rugsėjo", "Spalio", "Lapkričio", "Gruodžio" + ], + dayOfWeek: [ + "Sek", "Pir", "Ant", "Tre", "Ket", "Pen", "Šeš" + ] + }, + lv: { //Latvian (Latviešu) + months: [ + "Janvāris", "Februāris", "Marts", "Aprīlis ", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris" + ], + dayOfWeek: [ + "Sv", "Pr", "Ot", "Tr", "Ct", "Pk", "St" + ] + }, + mk: { //Macedonian (Македонски) + months: [ + "јануари", "февруари", "март", "април", "мај", "јуни", "јули", "август", "септември", "октомври", "ноември", "декември" + ], + dayOfWeek: [ + "нед", "пон", "вто", "сре", "чет", "пет", "саб" + ] + }, + mn: { //Mongolian (Монгол) + months: [ + "1-р сар", "2-р сар", "3-р сар", "4-р сар", "5-р сар", "6-р сар", "7-р сар", "8-р сар", "9-р сар", "10-р сар", "11-р сар", "12-р сар" + ], + dayOfWeek: [ + "Дав", "Мяг", "Лха", "Пүр", "Бсн", "Бям", "Ням" + ] + }, + 'pt-BR': { //Português(Brasil) + months: [ + "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + dayOfWeek: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" + ] + }, + sk: { //Slovenčina + months: [ + "Január", "Február", "Marec", "Apríl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December" + ], + dayOfWeek: [ + "Ne", "Po", "Ut", "St", "Št", "Pi", "So" + ] + }, + sq: { //Albanian (Shqip) + months: [ + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + dayOfWeek: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + ] + }, + 'sr-YU': { //Serbian (Srpski) + months: [ + "Januar", "Februar", "Mart", "April", "Maj", "Jun", "Jul", "Avgust", "Septembar", "Oktobar", "Novembar", "Decembar" + ], + dayOfWeek: [ + "Ned", "Pon", "Uto", "Sre", "čet", "Pet", "Sub" + ] + }, + sr: { //Serbian Cyrillic (Српски) + months: [ + "јануар", "фебруар", "март", "април", "мај", "јун", "јул", "август", "септембар", "октобар", "новембар", "децембар" + ], + dayOfWeek: [ + "нед", "пон", "уто", "сре", "чет", "пет", "суб" + ] + }, + sv: { //Svenska + months: [ + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + dayOfWeek: [ + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör" + ] + }, + 'zh-TW': { //Traditional Chinese (繁體中文) + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + zh: { //Simplified Chinese (简体中文) + months: [ + "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" + ], + dayOfWeek: [ + "日", "一", "二", "三", "四", "五", "六" + ] + }, + he: { //Hebrew (עברית) + months: [ + 'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר' + ], + dayOfWeek: [ + 'א\'', 'ב\'', 'ג\'', 'ד\'', 'ה\'', 'ו\'', 'שבת' + ] + } + }, + value: '', + lang: 'en', + + format: 'Y/m/d H:i', + formatTime: 'H:i', + formatDate: 'Y/m/d', + + startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05', + step: 60, + monthChangeSpinner: true, + + closeOnDateSelect: false, + closeOnWithoutClick: true, + closeOnInputClick: true, + + timepicker: true, + datepicker: true, + weeks: false, + + defaultTime: false, // use formatTime format (ex. '10:00' for formatTime: 'H:i') + defaultDate: false, // use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05') + + minDate: false, + maxDate: false, + minTime: false, + maxTime: false, + + allowTimes: [], + opened: false, + initTime: true, + inline: false, + theme: '', + + onSelectDate: function () {}, + onSelectTime: function () {}, + onChangeMonth: function () {}, + onChangeYear: function () {}, + onChangeDateTime: function () {}, + onShow: function () {}, + onClose: function () {}, + onGenerate: function () {}, + + withoutCopyright: true, + inverseButton: false, + hours12: false, + next: 'xdsoft_next', + prev : 'xdsoft_prev', + dayOfWeekStart: 0, + parentID: 'body', + timeHeightInTimePicker: 25, + timepickerScrollbar: true, + todayButton: true, + defaultSelect: true, + + scrollMonth: true, + scrollTime: true, + scrollInput: true, + + lazyInit: false, + mask: false, + validateOnBlur: true, + allowBlank: true, + yearStart: 1950, + yearEnd: 2050, + style: '', + id: '', + fixed: false, + roundTime: 'round', // ceil, floor + className: '', + weekends: [], + disabledDates : [], + yearOffset: 0, + beforeShowDay: null, + + enterLikeTab: true + }; + // fix for ie8 + if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function (obj, start) { + var i, j; + for (i = (start || 0), j = this.length; i < j; i += 1) { + if (this[i] === obj) { return i; } + } + return -1; + }; + } + Date.prototype.countDaysInMonth = function () { + return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate(); + }; + $.fn.xdsoftScroller = function (percent) { + return this.each(function () { + var timeboxparent = $(this), + pointerEventToXY = function (e) { + var out = {x: 0, y: 0}, + touch; + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { + touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; + out.x = touch.clientX; + out.y = touch.clientY; + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') { + out.x = e.clientX; + out.y = e.clientY; + } + return out; + }, + move = 0, + timebox, + parentHeight, + height, + scrollbar, + scroller, + maximumOffset = 100, + start = false, + startY = 0, + startTop = 0, + h1 = 0, + touchStart = false, + startTopScroll = 0, + calcOffset = function () {}; + if (percent === 'hide') { + timeboxparent.find('.xdsoft_scrollbar').hide(); + return; + } + if (!$(this).hasClass('xdsoft_scroller_box')) { + timebox = timeboxparent.children().eq(0); + parentHeight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + scrollbar = $('
    '); + scroller = $('
    '); + scrollbar.append(scroller); + + timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar); + calcOffset = function calcOffset(event) { + var offset = pointerEventToXY(event).y - startY + startTopScroll; + if (offset < 0) { + offset = 0; + } + if (offset + scroller[0].offsetHeight > h1) { + offset = h1 - scroller[0].offsetHeight; + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]); + }; + + scroller + .on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) { + if (!parentHeight) { + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); + } + + startY = pointerEventToXY(event).y; + startTopScroll = parseInt(scroller.css('margin-top'), 10); + h1 = scrollbar[0].offsetHeight; + + if (event.type === 'mousedown') { + if (document) { + $(document.body).addClass('xdsoft_noselect'); + } + $([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() { + $([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee) + .off('mousemove.xdsoft_scroller', calcOffset) + .removeClass('xdsoft_noselect'); + }); + $(document.body).on('mousemove.xdsoft_scroller', calcOffset); + } else { + touchStart = true; + event.stopPropagation(); + event.preventDefault(); + } + }) + .on('touchmove', function (event) { + if (touchStart) { + event.preventDefault(); + calcOffset(event); + } + }) + .on('touchend touchcancel', function (event) { + touchStart = false; + startTopScroll = 0; + }); + + timeboxparent + .on('scroll_element.xdsoft_scroller', function (event, percentage) { + if (!parentHeight) { + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]); + } + percentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage; + + scroller.css('margin-top', maximumOffset * percentage); + + setTimeout(function () { + timebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10)); + }, 10); + }) + .on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) { + var percent, sh; + parentHeight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + percent = parentHeight / height; + sh = percent * scrollbar[0].offsetHeight; + if (percent > 1) { + scroller.hide(); + } else { + scroller.show(); + scroller.css('height', parseInt(sh > 10 ? sh : 10, 10)); + maximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight; + if (noTriggerScroll !== true) { + timeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]); + } + } + }); + + timeboxparent.on('mousewheel', function (event) { + var top = Math.abs(parseInt(timebox.css('marginTop'), 10)); + + top = top - (event.deltaY * 20); + if (top < 0) { + top = 0; + } + + timeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]); + event.stopPropagation(); + return false; + }); + + timeboxparent.on('touchstart', function (event) { + start = pointerEventToXY(event); + startTop = Math.abs(parseInt(timebox.css('marginTop'), 10)); + }); + + timeboxparent.on('touchmove', function (event) { + if (start) { + event.preventDefault(); + var coord = pointerEventToXY(event); + timeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]); + } + }); + + timeboxparent.on('touchend touchcancel', function (event) { + start = false; + startTop = 0; + }); + } + timeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]); + }); + }; + + $.fn.datetimepicker = function (opt) { + var KEY0 = 48, + KEY9 = 57, + _KEY0 = 96, + _KEY9 = 105, + CTRLKEY = 17, + DEL = 46, + ENTER = 13, + ESC = 27, + BACKSPACE = 8, + ARROWLEFT = 37, + ARROWUP = 38, + ARROWRIGHT = 39, + ARROWDOWN = 40, + TAB = 9, + F5 = 116, + AKEY = 65, + CKEY = 67, + VKEY = 86, + ZKEY = 90, + YKEY = 89, + ctrlDown = false, + options = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options), + + lazyInitTimer = 0, + createDateTimePicker, + destroyDateTimePicker, + _xdsoft_datetime, + + lazyInit = function (input) { + input + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) { + if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible') || input.data('xdsoft_datetimepicker')) { + return; + } + clearTimeout(lazyInitTimer); + lazyInitTimer = setTimeout(function () { + + if (!input.data('xdsoft_datetimepicker')) { + createDateTimePicker(input); + } + input + .off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback) + .trigger('open.xdsoft'); + }, 100); + }); + }; + + createDateTimePicker = function (input) { + var datetimepicker = $('
    '), + xdsoft_copyright = $(''), + datepicker = $('
    '), + mounth_picker = $('
    ' + + '
    ' + + '
    ' + + '
    '), + calendar = $('
    '), + timepicker = $('
    '), + timeboxparent = timepicker.find('.xdsoft_time_box').eq(0), + timebox = $('
    '), + /*scrollbar = $('
    '), + scroller = $('
    '),*/ + monthselect = $('
    '), + yearselect = $('
    '), + triggerAfterOpen = false, + XDSoft_datetime, + //scroll_element, + xchangeTimer, + timerclick, + current_time_index, + setPos, + timer = 0, + timer1 = 0; + + mounth_picker + .find('.xdsoft_month span') + .after(monthselect); + mounth_picker + .find('.xdsoft_year span') + .after(yearselect); + + mounth_picker + .find('.xdsoft_month,.xdsoft_year') + .on('mousedown.xdsoft', function (event) { + var select = $(this).find('.xdsoft_select').eq(0), + val = 0, + top = 0, + visible = select.is(':visible'), + items, + i; + + mounth_picker + .find('.xdsoft_select') + .hide(); + if (_xdsoft_datetime.currentTime) { + val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear'](); + } + + select[visible ? 'hide' : 'show'](); + for (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) { + if (items.eq(i).data('value') === val) { + break; + } else { + top += items[0].offsetHeight; + } + } + + select.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight))); + event.stopPropagation(); + return false; + }); + + mounth_picker + .find('.xdsoft_select') + .xdsoftScroller() + .on('mousedown.xdsoft', function (event) { + event.stopPropagation(); + event.preventDefault(); + }) + .on('mousedown.xdsoft', '.xdsoft_option', function (event) { + var year = _xdsoft_datetime.currentTime.getFullYear(); + if (_xdsoft_datetime && _xdsoft_datetime.currentTime) { + _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value')); + } + + $(this).parent().parent().hide(); + + datetimepicker.trigger('xchange.xdsoft'); + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + if (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + }); + + datetimepicker.setOptions = function (_options) { + options = $.extend(true, {}, options, _options); + + if (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) { + options.allowTimes = $.extend(true, [], _options.allowTimes); + } + + if (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) { + options.weekends = $.extend(true, [], _options.weekends); + } + + if (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) { + options.disabledDates = $.extend(true, [], _options.disabledDates); + } + + if ((options.open || options.opened) && (!options.inline)) { + input.trigger('open.xdsoft'); + } + + if (options.inline) { + triggerAfterOpen = true; + datetimepicker.addClass('xdsoft_inline'); + input.after(datetimepicker).hide(); + } + + if (options.inverseButton) { + options.next = 'xdsoft_prev'; + options.prev = 'xdsoft_next'; + } + + if (options.datepicker) { + datepicker.addClass('active'); + } else { + datepicker.removeClass('active'); + } + + if (options.timepicker) { + timepicker.addClass('active'); + } else { + timepicker.removeClass('active'); + } + + if (options.value) { + if (input && input.val) { + input.val(options.value); + } + _xdsoft_datetime.setCurrentTime(options.value); + } + + if (isNaN(options.dayOfWeekStart)) { + options.dayOfWeekStart = 0; + } else { + options.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7; + } + + if (!options.timepickerScrollbar) { + timeboxparent.xdsoftScroller('hide'); + } + + if (options.minDate && /^-(.*)$/.test(options.minDate)) { + options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate); + } + + if (options.maxDate && /^\+(.*)$/.test(options.maxDate)) { + options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate); + } + + mounth_picker + .find('.xdsoft_today_button') + .css('visibility', !options.todayButton ? 'hidden' : 'visible'); + + if (options.mask) { + var e, + getCaretPos = function (input) { + try { + if (document.selection && document.selection.createRange) { + var range = document.selection.createRange(); + return range.getBookmark().charCodeAt(2) - 2; + } + if (input.setSelectionRange) { + return input.selectionStart; + } + } catch (e) { + return 0; + } + }, + setCaretPos = function (node, pos) { + node = (typeof node === "string" || node instanceof String) ? document.getElementById(node) : node; + if (!node) { + return false; + } + if (node.createTextRange) { + var textRange = node.createTextRange(); + textRange.collapse(true); + textRange.moveEnd('character', pos); + textRange.moveStart('character', pos); + textRange.select(); + return true; + } + if (node.setSelectionRange) { + node.setSelectionRange(pos, pos); + return true; + } + return false; + }, + isValidValue = function (mask, value) { + var reg = mask + .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g, '\\$1') + .replace(/_/g, '{digit+}') + .replace(/([0-9]{1})/g, '{digit$1}') + .replace(/\{digit([0-9]{1})\}/g, '[0-$1_]{1}') + .replace(/\{digit[\+]\}/g, '[0-9_]{1}'); + return (new RegExp(reg)).test(value); + }; + input.off('keydown.xdsoft'); + + if (options.mask === true) { + options.mask = options.format + .replace(/Y/g, '9999') + .replace(/F/g, '9999') + .replace(/m/g, '19') + .replace(/d/g, '39') + .replace(/H/g, '29') + .replace(/i/g, '59') + .replace(/s/g, '59'); + } + + if ($.type(options.mask) === 'string') { + if (!isValidValue(options.mask, input.val())) { + input.val(options.mask.replace(/[0-9]/g, '_')); + } + + input.on('keydown.xdsoft', function (event) { + var val = this.value, + key = event.which, + pos, + digit; + + if (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) { + pos = getCaretPos(this); + digit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_'; + + if ((key === BACKSPACE || key === DEL) && pos) { + pos -= 1; + digit = '_'; + } + + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { + pos += (key === BACKSPACE || key === DEL) ? -1 : 1; + } + + val = val.substr(0, pos) + digit + val.substr(pos + 1); + if ($.trim(val) === '') { + val = options.mask.replace(/[0-9]/g, '_'); + } else { + if (pos === options.mask.length) { + event.preventDefault(); + return false; + } + } + + pos += (key === BACKSPACE || key === DEL) ? 0 : 1; + while (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) { + pos += (key === BACKSPACE || key === DEL) ? -1 : 1; + } + + if (isValidValue(options.mask, val)) { + this.value = val; + setCaretPos(this, pos); + } else if ($.trim(val) === '') { + this.value = options.mask.replace(/[0-9]/g, '_'); + } else { + input.trigger('error_input.xdsoft'); + } + } else { + if (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) { + return true; + } + } + + event.preventDefault(); + return false; + }); + } + } + if (options.validateOnBlur) { + input + .off('blur.xdsoft') + .on('blur.xdsoft', function () { + if (options.allowBlank && !$.trim($(this).val()).length) { + $(this).val(null); + datetimepicker.data('xdsoft_datetime').empty(); + } else if (!Date.parseDate($(this).val(), options.format)) { + $(this).val((_xdsoft_datetime.now()).dateFormat(options.format)); + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); + } else { + datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val()); + } + datetimepicker.trigger('changedatetime.xdsoft'); + }); + } + options.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1; + + datetimepicker + .trigger('xchange.xdsoft') + .trigger('afterOpen.xdsoft'); + }; + + datetimepicker + .data('options', options) + .on('mousedown.xdsoft', function (event) { + event.stopPropagation(); + event.preventDefault(); + yearselect.hide(); + monthselect.hide(); + return false; + }); + + //scroll_element = timepicker.find('.xdsoft_time_box'); + timeboxparent.append(timebox); + timeboxparent.xdsoftScroller(); + + datetimepicker.on('afterOpen.xdsoft', function () { + timeboxparent.xdsoftScroller(); + }); + + datetimepicker + .append(datepicker) + .append(timepicker); + + if (options.withoutCopyright !== true) { + datetimepicker + .append(xdsoft_copyright); + } + + datepicker + .append(mounth_picker) + .append(calendar); + + $(options.parentID) + .append(datetimepicker); + + XDSoft_datetime = function () { + var _this = this; + _this.now = function (norecursion) { + var d = new Date(), + date, + time; + + if (!norecursion && options.defaultDate) { + date = _this.strToDate(options.defaultDate); + d.setFullYear(date.getFullYear()); + d.setMonth(date.getMonth()); + d.setDate(date.getDate()); + } + + if (options.yearOffset) { + d.setFullYear(d.getFullYear() + options.yearOffset); + } + + if (!norecursion && options.defaultTime) { + time = _this.strtotime(options.defaultTime); + d.setHours(time.getHours()); + d.setMinutes(time.getMinutes()); + } + + return d; + }; + + _this.isValidDate = function (d) { + if (Object.prototype.toString.call(d) !== "[object Date]") { + return false; + } + return !isNaN(d.getTime()); + }; + + _this.setCurrentTime = function (dTime) { + _this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now(); + datetimepicker.trigger('xchange.xdsoft'); + }; + + _this.empty = function () { + _this.currentTime = null; + }; + + _this.getCurrentTime = function (dTime) { + return _this.currentTime; + }; + + _this.nextMonth = function () { + var month = _this.currentTime.getMonth() + 1, + year; + if (month === 12) { + _this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1); + month = 0; + } + + year = _this.currentTime.getFullYear(); + + _this.currentTime.setDate( + Math.min( + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), + _this.currentTime.getDate() + ) + ); + _this.currentTime.setMonth(month); + + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + if (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) { + options.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + + datetimepicker.trigger('xchange.xdsoft'); + return month; + }; + + _this.prevMonth = function () { + var month = _this.currentTime.getMonth() - 1; + if (month === -1) { + _this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1); + month = 11; + } + _this.currentTime.setDate( + Math.min( + new Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(), + _this.currentTime.getDate() + ) + ); + _this.currentTime.setMonth(month); + if (options.onChangeMonth && $.isFunction(options.onChangeMonth)) { + options.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + datetimepicker.trigger('xchange.xdsoft'); + return month; + }; + + _this.getWeekOfYear = function (datetime) { + var onejan = new Date(datetime.getFullYear(), 0, 1); + return Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7); + }; + + _this.strToDateTime = function (sDateTime) { + var tmpDate = [], timeOffset, currentTime; + + if (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) { + return sDateTime; + } + + tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime); + if (tmpDate) { + tmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate); + } + if (tmpDate && tmpDate[2]) { + timeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000; + currentTime = new Date((_xdsoft_datetime.now()).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset); + } else { + currentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now(); + } + + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(); + } + + return currentTime; + }; + + _this.strToDate = function (sDate) { + if (sDate && sDate instanceof Date && _this.isValidDate(sDate)) { + return sDate; + } + + var currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true); + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(true); + } + return currentTime; + }; + + _this.strtotime = function (sTime) { + if (sTime && sTime instanceof Date && _this.isValidDate(sTime)) { + return sTime; + } + var currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true); + if (!_this.isValidDate(currentTime)) { + currentTime = _this.now(true); + } + return currentTime; + }; + + _this.str = function () { + return _this.currentTime.dateFormat(options.format); + }; + _this.currentTime = this.now(); + }; + + _xdsoft_datetime = new XDSoft_datetime(); + + mounth_picker + .find('.xdsoft_today_button') + .on('mousedown.xdsoft', function () { + datetimepicker.data('changed', true); + _xdsoft_datetime.setCurrentTime(0); + datetimepicker.trigger('afterOpen.xdsoft'); + }).on('dblclick.xdsoft', function () { + input.val(_xdsoft_datetime.str()); + datetimepicker.trigger('close.xdsoft'); + }); + mounth_picker + .find('.xdsoft_prev,.xdsoft_next') + .on('mousedown.xdsoft', function () { + var $this = $(this), + timer = 0, + stop = false; + + (function arguments_callee1(v) { + var month = _xdsoft_datetime.currentTime.getMonth(); + if ($this.hasClass(options.next)) { + _xdsoft_datetime.nextMonth(); + } else if ($this.hasClass(options.prev)) { + _xdsoft_datetime.prevMonth(); + } + if (options.monthChangeSpinner) { + if (!stop) { + timer = setTimeout(arguments_callee1, v || 100); + } + } + }(500)); + + $([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() { + clearTimeout(timer); + stop = true; + $([document.body, window]).off('mouseup.xdsoft', arguments_callee2); + }); + }); + + timepicker + .find('.xdsoft_prev,.xdsoft_next') + .on('mousedown.xdsoft', function () { + var $this = $(this), + timer = 0, + stop = false, + period = 110; + (function arguments_callee4(v) { + var pheight = timeboxparent[0].clientHeight, + height = timebox[0].offsetHeight, + top = Math.abs(parseInt(timebox.css('marginTop'), 10)); + if ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) { + timebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px'); + } else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) { + timebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px'); + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]); + period = (period > 10) ? 10 : period - 10; + if (!stop) { + timer = setTimeout(arguments_callee4, v || period); + } + }(500)); + $([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() { + clearTimeout(timer); + stop = true; + $([document.body, window]) + .off('mouseup.xdsoft', arguments_callee5); + }); + }); + + xchangeTimer = 0; + // base handler - generating a calendar and timepicker + datetimepicker + .on('xchange.xdsoft', function (event) { + clearTimeout(xchangeTimer); + xchangeTimer = setTimeout(function () { + var table = '', + start = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0), + i = 0, + j, + today = _xdsoft_datetime.now(), + maxDate = false, + minDate = false, + d, + y, + m, + w, + classes = [], + customDateSettings, + newRow = true, + time = '', + h = '', + line_time; + + while (start.getDay() !== options.dayOfWeekStart) { + start.setDate(start.getDate() - 1); + } + + table += ''; + + if (options.weeks) { + table += ''; + } + + for (j = 0; j < 7; j += 1) { + table += ''; + } + + table += ''; + table += ''; + + if (options.maxDate !== false) { + maxDate = _xdsoft_datetime.strToDate(options.maxDate); + maxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999); + } + + if (options.minDate !== false) { + minDate = _xdsoft_datetime.strToDate(options.minDate); + minDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()); + } + + while (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) { + classes = []; + i += 1; + + d = start.getDate(); + y = start.getFullYear(); + m = start.getMonth(); + w = _xdsoft_datetime.getWeekOfYear(start); + + classes.push('xdsoft_date'); + + if (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) { + customDateSettings = options.beforeShowDay.call(datetimepicker, start); + } else { + customDateSettings = null; + } + + if ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) { + classes.push('xdsoft_disabled'); + } else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) { + classes.push('xdsoft_disabled'); + } + + if (customDateSettings && customDateSettings[1] !== "") { + classes.push(customDateSettings[1]); + } + + if (_xdsoft_datetime.currentTime.getMonth() !== m) { + classes.push('xdsoft_other_month'); + } + + if ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { + classes.push('xdsoft_current'); + } + + if (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) { + classes.push('xdsoft_today'); + } + + if (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) === -1) { + classes.push('xdsoft_weekend'); + } + + if (options.beforeShowDay && $.isFunction(options.beforeShowDay)) { + classes.push(options.beforeShowDay(start)); + } + + if (newRow) { + table += ''; + newRow = false; + if (options.weeks) { + table += ''; + } + } + + table += ''; + + if (start.getDay() === options.dayOfWeekStartPrev) { + table += ''; + newRow = true; + } + + start.setDate(d + 1); + } + table += '
    ' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '
    ' + w + '' + + '
    ' + d + '
    ' + + '
    '; + + calendar.html(table); + + mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]); + mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear()); + + // generate timebox + time = ''; + h = ''; + m = ''; + line_time = function line_time(h, m) { + var now = _xdsoft_datetime.now(); + now.setHours(h); + h = parseInt(now.getHours(), 10); + now.setMinutes(m); + m = parseInt(now.getMinutes(), 10); + + classes = []; + if ((options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) { + classes.push('xdsoft_disabled'); + } + if ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && parseInt(_xdsoft_datetime.currentTime.getHours(), 10) === parseInt(h, 10) && (options.step > 59 || Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step === parseInt(m, 10))) { + if (options.defaultSelect || datetimepicker.data('changed')) { + classes.push('xdsoft_current'); + } else if (options.initTime) { + classes.push('xdsoft_init_time'); + } + } + if (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) { + classes.push('xdsoft_today'); + } + time += '
    ' + now.dateFormat(options.formatTime) + '
    '; + }; + + if (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) { + for (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) { + for (j = 0; j < 60; j += options.step) { + h = (i < 10 ? '0' : '') + i; + m = (j < 10 ? '0' : '') + j; + line_time(h, m); + } + } + } else { + for (i = 0; i < options.allowTimes.length; i += 1) { + h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours(); + m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes(); + line_time(h, m); + } + } + + timebox.html(time); + + opt = ''; + i = 0; + + for (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) { + opt += '
    ' + i + '
    '; + } + yearselect.children().eq(0) + .html(opt); + + for (i = 0, opt = ''; i <= 11; i += 1) { + opt += '
    ' + options.i18n[options.lang].months[i] + '
    '; + } + monthselect.children().eq(0).html(opt); + $(datetimepicker) + .trigger('generate.xdsoft'); + }, 10); + event.stopPropagation(); + }) + .on('afterOpen.xdsoft', function () { + if (options.timepicker) { + var classType, pheight, height, top; + if (timebox.find('.xdsoft_current').length) { + classType = '.xdsoft_current'; + } else if (timebox.find('.xdsoft_init_time').length) { + classType = '.xdsoft_init_time'; + } + if (classType) { + pheight = timeboxparent[0].clientHeight; + height = timebox[0].offsetHeight; + top = timebox.find(classType).index() * options.timeHeightInTimePicker + 1; + if ((height - pheight) < top) { + top = height - pheight; + } + timeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]); + } else { + timeboxparent.trigger('scroll_element.xdsoft_scroller', [0]); + } + } + }); + + timerclick = 0; + calendar + .on('click.xdsoft', 'td', function (xdevent) { + xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap + timerclick += 1; + var $this = $(this), + currentTime = _xdsoft_datetime.currentTime; + + if (currentTime === undefined || currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + currentTime = _xdsoft_datetime.currentTime; + } + + if ($this.hasClass('xdsoft_disabled')) { + return false; + } + + currentTime.setDate(1); + currentTime.setFullYear($this.data('year')); + currentTime.setMonth($this.data('month')); + currentTime.setDate($this.data('date')); + + datetimepicker.trigger('select.xdsoft', [currentTime]); + + input.val(_xdsoft_datetime.str()); + if ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === 0 && !options.timepicker))) && !options.inline) { + datetimepicker.trigger('close.xdsoft'); + } + + if (options.onSelectDate && $.isFunction(options.onSelectDate)) { + options.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); + } + + datetimepicker.data('changed', true); + datetimepicker.trigger('xchange.xdsoft'); + datetimepicker.trigger('changedatetime.xdsoft'); + setTimeout(function () { + timerclick = 0; + }, 200); + }); + + timebox + .on('click.xdsoft', 'div', function (xdevent) { + xdevent.stopPropagation(); + var $this = $(this), + currentTime = _xdsoft_datetime.currentTime; + + if (currentTime === undefined || currentTime === null) { + _xdsoft_datetime.currentTime = _xdsoft_datetime.now(); + currentTime = _xdsoft_datetime.currentTime; + } + + if ($this.hasClass('xdsoft_disabled')) { + return false; + } + currentTime.setHours($this.data('hour')); + currentTime.setMinutes($this.data('minute')); + datetimepicker.trigger('select.xdsoft', [currentTime]); + + datetimepicker.data('input').val(_xdsoft_datetime.str()); + if (!options.inline) { + datetimepicker.trigger('close.xdsoft'); + } + + if (options.onSelectTime && $.isFunction(options.onSelectTime)) { + options.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent); + } + datetimepicker.data('changed', true); + datetimepicker.trigger('xchange.xdsoft'); + datetimepicker.trigger('changedatetime.xdsoft'); + }); + + + datepicker + .on('mousewheel.xdsoft', function (event) { + if (!options.scrollMonth) { + return true; + } + if (event.deltaY < 0) { + _xdsoft_datetime.nextMonth(); + } else { + _xdsoft_datetime.prevMonth(); + } + return false; + }); + + input + .on('mousewheel.xdsoft', function (event) { + if (!options.scrollInput) { + return true; + } + if (!options.datepicker && options.timepicker) { + current_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0; + if (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) { + current_time_index += event.deltaY; + } + if (timebox.children().eq(current_time_index).length) { + timebox.children().eq(current_time_index).trigger('mousedown'); + } + return false; + } + if (options.datepicker && !options.timepicker) { + datepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]); + if (input.val) { + input.val(_xdsoft_datetime.str()); + } + datetimepicker.trigger('changedatetime.xdsoft'); + return false; + } + }); + + datetimepicker + .on('changedatetime.xdsoft', function (event) { + if (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) { + var $input = datetimepicker.data('input'); + options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event); + delete options.value; + $input.trigger('change'); + } + }) + .on('generate.xdsoft', function () { + if (options.onGenerate && $.isFunction(options.onGenerate)) { + options.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input')); + } + if (triggerAfterOpen) { + datetimepicker.trigger('afterOpen.xdsoft'); + triggerAfterOpen = false; + } + }) + .on('click.xdsoft', function (xdevent) { + xdevent.stopPropagation(); + }); + + current_time_index = 0; + + setPos = function () { + var offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = "absolute"; + if (options.fixed) { + top -= $(window).scrollTop(); + left -= $(window).scrollLeft(); + position = "fixed"; + } else { + if (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) { + top = offset.top - datetimepicker[0].offsetHeight + 1; + } + if (top < 0) { + top = 0; + } + if (left + datetimepicker[0].offsetWidth > $(window).width()) { + left = $(window).width() - datetimepicker[0].offsetWidth; + } + } + datetimepicker.css({ + left: left, + top: top, + position: position + }); + }; + datetimepicker + .on('open.xdsoft', function (event) { + var onShow = true; + if (options.onShow && $.isFunction(options.onShow)) { + onShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); + } + if (onShow !== false) { + datetimepicker.show(); + setPos(); + $(window) + .off('resize.xdsoft', setPos) + .on('resize.xdsoft', setPos); + + if (options.closeOnWithoutClick) { + $([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() { + datetimepicker.trigger('close.xdsoft'); + $([document.body, window]).off('mousedown.xdsoft', arguments_callee6); + }); + } + } + }) + .on('close.xdsoft', function (event) { + var onClose = true; + mounth_picker + .find('.xdsoft_month,.xdsoft_year') + .find('.xdsoft_select') + .hide(); + if (options.onClose && $.isFunction(options.onClose)) { + onClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event); + } + if (onClose !== false && !options.opened && !options.inline) { + datetimepicker.hide(); + } + event.stopPropagation(); + }) + .on('toggle.xdsoft', function (event) { + if (datetimepicker.is(':visible')) { + datetimepicker.trigger('close.xdsoft'); + } else { + datetimepicker.trigger('open.xdsoft'); + } + }) + .data('input', input); + + timer = 0; + timer1 = 0; + + datetimepicker.data('xdsoft_datetime', _xdsoft_datetime); + datetimepicker.setOptions(options); + + function getCurrentValue() { + + var ct = false, time; + + if (options.startDate) { + ct = _xdsoft_datetime.strToDate(options.startDate); + } else { + ct = options.value || ((input && input.val && input.val()) ? input.val() : ''); + if (ct) { + ct = _xdsoft_datetime.strToDateTime(ct); + } else if (options.defaultDate) { + ct = _xdsoft_datetime.strToDate(options.defaultDate); + if (options.defaultTime) { + time = _xdsoft_datetime.strtotime(options.defaultTime); + ct.setHours(time.getHours()); + ct.setMinutes(time.getMinutes()); + } + } + } + + if (ct && _xdsoft_datetime.isValidDate(ct)) { + datetimepicker.data('changed', true); + } else { + ct = ''; + } + + return ct || 0; + } + + _xdsoft_datetime.setCurrentTime(getCurrentValue()); + + input + .data('xdsoft_datetimepicker', datetimepicker) + .on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) { + if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) { + return; + } + clearTimeout(timer); + timer = setTimeout(function () { + if (input.is(':disabled') || input.is(':hidden') || !input.is(':visible')) { + return; + } + + triggerAfterOpen = true; + _xdsoft_datetime.setCurrentTime(getCurrentValue()); + + datetimepicker.trigger('open.xdsoft'); + }, 100); + }) + .on('keydown.xdsoft', function (event) { + var val = this.value, elementSelector, + key = event.which; + if ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) { + elementSelector = $("input:visible,textarea:visible"); + datetimepicker.trigger('close.xdsoft'); + elementSelector.eq(elementSelector.index(this) + 1).focus(); + return false; + } + if ([TAB].indexOf(key) !== -1) { + datetimepicker.trigger('close.xdsoft'); + return true; + } + }); + }; + destroyDateTimePicker = function (input) { + var datetimepicker = input.data('xdsoft_datetimepicker'); + if (datetimepicker) { + datetimepicker.data('xdsoft_datetime', null); + datetimepicker.remove(); + input + .data('xdsoft_datetimepicker', null) + .off('.xdsoft'); + $(window).off('resize.xdsoft'); + $([window, document.body]).off('mousedown.xdsoft'); + if (input.unmousewheel) { + input.unmousewheel(); + } + } + }; + $(document) + .off('keydown.xdsoftctrl keyup.xdsoftctrl') + .on('keydown.xdsoftctrl', function (e) { + if (e.keyCode === CTRLKEY) { + ctrlDown = true; + } + }) + .on('keyup.xdsoftctrl', function (e) { + if (e.keyCode === CTRLKEY) { + ctrlDown = false; + } + }); + return this.each(function () { + var datetimepicker = $(this).data('xdsoft_datetimepicker'); + if (datetimepicker) { + if ($.type(opt) === 'string') { + switch (opt) { + case 'show': + $(this).select().focus(); + datetimepicker.trigger('open.xdsoft'); + break; + case 'hide': + datetimepicker.trigger('close.xdsoft'); + break; + case 'toggle': + datetimepicker.trigger('toggle.xdsoft'); + break; + case 'destroy': + destroyDateTimePicker($(this)); + break; + case 'reset': + this.value = this.defaultValue; + if (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) { + datetimepicker.data('changed', false); + } + datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value); + break; + } + } else { + datetimepicker + .setOptions(opt); + } + return 0; + } + if ($.type(opt) !== 'string') { + if (!options.lazyInit || options.open || options.inline) { + createDateTimePicker($(this)); + } else { + lazyInit($(this)); + } + } + }); + }; + $.fn.datetimepicker.defaults = default_options; +}(jQuery)); +(function () { + +/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh) + * Licensed under the MIT License (LICENSE.txt). + * + * Version: 3.1.12 + * + * Requires: jQuery 1.2.2+ + */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}); + +// Parse and Format Library +//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/ +/* + * Copyright (C) 2004 Baron Schwartz + * + * This program 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, version 2.1. + * + * This program 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. + */ +Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function() {return ";var special=false;var ch="";for(var i=0;i 0) {";var regex="";var special=false;var ch="";for(var i=0;i 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b + * @copyright 2015-2018 Eoxia + */ + +/* + + */ + +if ( ! window.eoxiaJS ) { + + /** + * [eoxiaJS description] + * + * @memberof EO_Framework_Init + * + * @type {Object} + */ + window.eoxiaJS = {}; + + /** + * [scriptsLoaded description] + * + * @memberof EO_Framework_Init + * + * @type {Boolean} + */ + window.eoxiaJS.scriptsLoaded = false; +} + +if ( ! window.eoxiaJS.scriptsLoaded ) { + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.init = function() { + window.eoxiaJS.load_list_script(); + window.eoxiaJS.init_array_form(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.load_list_script = function() { + if ( ! window.eoxiaJS.scriptsLoaded ) { + var key = undefined, slug = undefined; + for ( key in window.eoxiaJS ) { + + if ( window.eoxiaJS[key].init ) { + window.eoxiaJS[key].init(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug].init ) { + window.eoxiaJS[key][slug].init(); + } + + } + } + + window.eoxiaJS.scriptsLoaded = true; + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.init_array_form = function() { + window.eoxiaJS.arrayForm.init(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.refresh = function() { + var key = undefined; + var slug = undefined; + for ( key in window.eoxiaJS ) { + if ( window.eoxiaJS[key].refresh ) { + window.eoxiaJS[key].refresh(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug].refresh ) { + window.eoxiaJS[key][slug].refresh(); + } + } + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @param {void} cbName [description] + * @param {void} cbArgs [description] + * @returns {void} [description] + */ + window.eoxiaJS.cb = function( cbName, cbArgs ) { + var key = undefined; + var slug = undefined; + for ( key in window.eoxiaJS ) { + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug][cbName] ) { + window.eoxiaJS[key][slug][cbName](cbArgs); + } + } + } + }; + + jQuery( document ).ready( window.eoxiaJS.init ); +} + +/** + * @namespace EO_Framework_Actions + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + * + * @since 0.1.0 + * @version 1.0.0 + * @license GPLv3 + * + * @description Gestion des actions XHR principaux + * + * * action-input: Déclenches une requête XHR avec les balises inputs contenu dans le contenaire parent. + * * action-attribute: Déclenches une requête XHR avec les attributs de l'élément déclencheur. + * * action-delete: Déclenches une requête XHR avec les attributs de l'élément déclencheur si l'utilisateur confirme la popin "confirm" du navigateur. + */ + +if ( ! window.eoxiaJS.action ) { + /** + * @summary L'objet principal "Action" ajouté à l'objet eoxiaJS afin de permêttre au fichier init.js de booter la méthode "init" de cet objet. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @type {Object} + */ + window.eoxiaJS.action = {}; + + /** + * @summary Méthode obligatoire pour le boot de l'objet "Action". Cette méthode est appelée automatiquement par init.js. + * + * Cette méthode appelle la méthode "event" de l'objet "Action". + * + * @since 0.1.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Actions + * + * @returns {void} + */ + window.eoxiaJS.action.init = function() { + window.eoxiaJS.action.event(); + }; + + /** + * @summary Méthode "event" définie les 3 events principaux des actions de EO Framework: "action-input", "action-attribute" et "action-delete". + * + * Ses trois évènements sont déclenchés au clic gauche de la souris. + * + * La classe "no-action" permet d'annuler l'évènement. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Actions + * + * @returns {void} + */ + window.eoxiaJS.action.event = function() { + jQuery( document ).on( 'click', '.action-input:not(.no-action)', window.eoxiaJS.action.execInput ); + jQuery( document ).on( 'click', '.action-attribute:not(.no-action)', window.eoxiaJS.action.execAttribute ); + jQuery( document ).on( 'click', '.action-delete:not(.no-action)', window.eoxiaJS.action.execDelete ); + jQuery( '#wpeo-task-metabox h2 span .action-attribute' ).click( window.eoxiaJS.action.execAttribute ); + jQuery( '#wpeo-task-metabox h2 span .action-input' ).click( window.eoxiaJS.action.execInput ); + jQuery( '#wpeo-task-metabox h2 span .action-delete' ).click( window.eoxiaJS.action.execDelete ); + }; + + /** + * @summary Permet de lancer une requête avec les valeurs des inputs trouvés dans le contenaire défini par l'attribut "data-parent". + * + * @since 0.1.0 + * @version 1.0.0 + * @memberof EO_Framework_Actions + * + * @example + * + *
    + * + * + * + *
    + * + * @param {MouseEvent} event Toutes les propriétés de la souris lors du clic. + * + * @returns {void} + */ + window.eoxiaJS.action.execInput = function( event ) { + var element = jQuery( this ), loaderElement = element, parentElement = element, listInput = undefined, data = {}, i = 0, doAction = true, key = undefined, inputAlreadyIn = []; + event.preventDefault(); + + if ( element.attr( 'data-parent' ) ) { + parentElement = element.closest( '.' + element.attr( 'data-parent' ) ); + } + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } else { + doAction = window.eoxiaJS.action.checkBeforeCB(element); + } + + if ( doAction ) { + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + window.eoxiaJS.loader.display( loaderElement ); + + listInput = window.eoxiaJS.arrayForm.getInput( parentElement ); + for ( i = 0; i < listInput.length; i++ ) { + if ( listInput[i].name && -1 === inputAlreadyIn.indexOf( listInput[i].name ) ) { + inputAlreadyIn.push( listInput[i].name ); + data[listInput[i].name] = window.eoxiaJS.arrayForm.getInputValue( listInput[i] ); + } + } + + element.get_data( function( attrData ) { + for ( key in attrData ) { + data[key] = attrData[key]; + } + + if ( element[0].request ) { + element[0].request.abort(); + } + + + element[0].request = window.eoxiaJS.request.send( element, data ); + } ); + } + }; + + /** + * @summary Permet de lancer une requête avec les valeurs des attributs commençant par data-* sur la balise ou le classe action-attribute est placée. + * + * L'attribut data-action et obligatoire pour lancer une requête XHR, c'est sur celle-ci que l'action AJAX WordPress sera attaché avec le hook wp_ajax_*. + * + * @since 0.1.0 + * @version 1.0.0 + * @memberof EO_Framework_Actions + * + * @example + * + * Créer un post + * + * @param {MouseEvent} event Toutes les propriétés de la souris lors du clic. + * + * @returns {void} + */ + window.eoxiaJS.action.execAttribute = function( event ) { + var element = jQuery( this ); + var loaderElement = element; + var doAction = true; + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } else { + doAction = window.eoxiaJS.action.checkBeforeCB(element); + } + + if ( element.hasClass( '.grey' ) ) { + doAction = false; + } + + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + if ( doAction ) { + if ( jQuery( this ).attr( 'data-confirm' ) ) { + if ( window.confirm( jQuery( this ).attr( 'data-confirm' ) ) ) { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( loaderElement ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } else { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( loaderElement ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } + + event.stopPropagation(); + }; + + /** + * Make a request with data on HTML element clicked with a custom delete message. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param {MouseEvent} event Properties of element triggered by the MouseEvent. + * + * @returns {void} + */ + window.eoxiaJS.action.execDelete = function( event ) { + var element = jQuery( this ); + var loaderElement = element; + var doAction = true; + + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-namespace' ) && element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-namespace' )][element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } + + if ( element.hasClass( '.grey' ) ) { + doAction = false; + } + + if ( element.attr( 'data-loader' ) ) { + loaderElement = element.closest( '.' + element.attr( 'data-loader' ) ); + } + + if ( doAction ) { + if ( window.confirm( element.attr( 'data-message-delete' ) ) ) { + element.get_data( function( data ) { + window.eoxiaJS.loader.display( element ); + window.eoxiaJS.request.send( element, data ); + } ); + } + } + }; + + /** + * Si une méthode de callback existe avant l'action, cette méthode l'appel. + * + * @memberof EO_Framework_Actions + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param {Object} element L'élément déclencheur. + * + * @returns {bool} True si l'action peut être envoyé, sinon False. + */ + window.eoxiaJS.action.checkBeforeCB = function( element ) { + var beforeMethod = element.attr( 'wpeo-before-cb' ); + + if ( ! beforeMethod ) { + return true; + } + + beforeMethod = beforeMethod.split( '/' ); + + if ( ! beforeMethod[0] || ! beforeMethod[1] || ! beforeMethod[2] ) { + return true; + } + + return window.eoxiaJS[beforeMethod[0]][beforeMethod[1]][beforeMethod[2]]( element ); + } +} + +/** + * @namespace EO_Framework_Array_Form + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Action for make request AJAX. + * + * @since 1.0.0-easy + * @version 1.0.0-easy + */ + +if ( ! window.eoxiaJS.arrayForm ) { + /** + * Declare the object arrayForm. + * + * @memberof EO_Framework_Array_Form + * + * @since 1.0.0-easy + * @version 1.0.0-easy + * @type {Object} + */ + window.eoxiaJS.arrayForm = {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.event = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @param {void} parent [description] + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.getInput = function( parent ) { + return parent.find( 'input, textarea, select' ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Array_Form + * + * @param {void} input [description] + * @returns {void} [description] + */ + window.eoxiaJS.arrayForm.getInputValue = function( input ) { + switch ( input.getAttribute( 'type' ) ) { + case 'checkbox': + return input.checked; + break; + case 'radio': + return jQuery( 'input[name="' + jQuery( input ).attr( 'name' ) + '"]:checked' ).val(); + break; + default: + return input.value; + break; + } + }; +} + +/** + * @namespace EO_Framework_Attribute + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ +if ( ! jQuery.fn.get_data ) { + + /** + * [description] + * + * @memberof EO_Framework_Attribute + * + * @param {Function} cb [description] + * @returns {void} [description] + */ + jQuery.fn.get_data = function( cb ) { + this.each( function() { + var data = {}; + var i = 0; + var localName = undefined; + + for ( i = 0; i < jQuery( this )[0].attributes.length; i++ ) { + localName = jQuery( this )[0].attributes[i].localName; + if ( 'data' === localName.substr( 0, 4 ) || 'action' === localName ) { + localName = localName.substr( 5 ); + + if ( 'nonce' === localName ) { + localName = '_wpnonce'; + } + + localName = localName.replace( '-', '_' ); + data[localName] = jQuery( this )[0].attributes[i].value; + } + } + + cb( data ); + } ); + }; +} + +/** + * @namespace EO_Framework_Auto_Complete + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/** + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + /** + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + if ( ! window.eoxiaJS.autoComplete ) { + + /** + * [autoComplete description] + * + * @memberof EO_Framework_Auto_Complete + * + * @type {Object} + */ + window.eoxiaJS.autoComplete = {}; + + /** + * [description] + * + * @memberof EO_Framework_Auto_Complete + * + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.init = function() { + window.eoxiaJS.autoComplete.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Auto_Complete + * + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.event = function() { + jQuery( document ).on( 'keyup', '.wpeo-autocomplete input', window.eoxiaJS.autoComplete.keyUp ); + jQuery( document ).on( 'click', '.wpeo-autocomplete .autocomplete-icon-after', window.eoxiaJS.autoComplete.deleteContent ); + jQuery( document ).on( 'click', 'body .wpeo-autocomplete input', window.eoxiaJS.autoComplete.preventClic ); + jQuery( document ).on( 'click', 'body', window.eoxiaJS.autoComplete.close ); + }; + + /** + * Make request when keyUp. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {KeyboardEvent} event Status of keyboard when keyUp event. + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.keyUp = function(event) { + var element = jQuery( this ); + var parent = element.closest( '.wpeo-autocomplete' ); + var label = element.closest( '.autocomplete-label' ); + + // If is not a letter or a number, stop func. + if ( ! (event.which <= 90 && event.which >= 48 ) && event.which != 8 && event.which <= 96 && event.which >= 105 ) { + return; + } + + parent.find( 'input.eo-search-value' ).val( '' ); + + // If empty searched value, stop func. + if ( element.val().length === 0 ) { + parent.removeClass( 'autocomplete-full' ); + return; + } else { + + // Add this class for display the empty button. + if ( ! parent.hasClass( 'autocomplete-full' ) ) { + parent.addClass( 'autocomplete-full' ); + } + } + + // If already request in queue, abort it. + if ( parent[0].xhr ) { + parent[0].xhr.abort(); + } + + var data = { + action: parent.attr( 'data-action' ), + _wpnonce: parent.attr( 'data-nonce' ), + term: element.val(), + slug: parent.find( 'input[name="slug"]' ).val(), + args: parent.find( 'textarea' ).val() + }; + + window.eoxiaJS.autoComplete.initProgressBar( parent, label ); + window.eoxiaJS.autoComplete.handleProgressBar( parent, label ); + + parent.get_data( function( attribute_data ) { + for (var key in attribute_data) { + if ( ! data[key] ) { + data[key] = attribute_data[key]; + } + } + + parent[0].xhr = window.eoxiaJS.request.send( jQuery( this ), data, function( triggeredElement, response ) { + window.eoxiaJS.autoComplete.clear( parent, label ); + + parent.addClass( 'autocomplete-active' ); + parent.find( '.autocomplete-search-list' ).addClass( 'autocomplete-active' ); + + if ( response.data && response.data.view && ! response.data.output ) { + parent.find( '.autocomplete-search-list' ).html( response.data.view ); + } else if (response.data && response.data.view && response.data.output ) { + jQuery( response.data.output ).replaceWith( response.data.view ); + } + } ); + } ); + }; + + /** + * Delete the content and result list. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.deleteContent = function( event ) { + var element = jQuery( this ); + var parent = element.closest( '.wpeo-autocomplete' ); + var label = element.closest( '.autocomplete-label' ); + + parent.find( 'input' ).val( '' ); + parent.find( 'input[type=hidden]' ).change(); + parent.find( 'input' ).trigger( 'keyUp' ); + + parent.removeClass( 'autocomplete-active' ); + parent.removeClass( 'autocomplete-full' ); + parent.find( '.autocomplete-search-list' ).removeClass( 'autocomplete-active' ); + + if ( parent[0].xhr ) { + parent[0].xhr.abort(); + window.eoxiaJS.autoComplete.clear(parent, label); + } + }; + + /** + * Permet de ne pas fermer la liste des résultats si on clic sur le champ de recherche. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {MouseEvent} event [description] + * @return {void} [description] + */ + window.eoxiaJS.autoComplete.preventClic = function( event ) { + event.stopPropagation(); + } + + /** + * Close result list + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.autoComplete.close = function( event ) { + jQuery( '.wpeo-autocomplete.autocomplete-active' ).each ( function() { + jQuery( this ).removeClass( 'autocomplete-active' ); + jQuery( this ).find( '.autocomplete-search-list' ).removeClass( 'autocomplete-active' ); + } ); + }; + + /** + * Handle progress bar. + * + * @memberof EO_Framework_Auto_Complete + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.initProgressBar = function( parent, label ) { + // Init two elements for loading bar. + if ( label.find( '.autocomplete-loading').length == 0 ) { + var el = jQuery( '' ); + label[0].autoCompleteLoading = el; + label.append( label[0].autoCompleteLoading ); + + var elBackground = jQuery( '' ); + label[0].autoCompletedLoadingBackground = elBackground; + label.append( label[0].autoCompletedLoadingBackground ); + } + }; + + /** + * Handle with of the progress bar. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Auto_Complete + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.handleProgressBar = function( parent, label ) { + parent.find( '.autocomplete-loading' ).css({ + width: '0%' + }); + + setTimeout(function() { + parent.find( '.autocomplete-loading' ).css({ + width: '5%' + }); + }, 10 ); + + label[0].currentTime = 5; + + if ( ! label[0].interval ) { + label[0].interval = setInterval( function() { + label[0].currentTime += 3; + + if ( label[0].currentTime >= 90 ) { + label[0].currentTime = 90; + } + + label.find( '.autocomplete-loading' ).css({ + width: label[0].currentTime + '%', + }); + }, 1000 ); + } + }; + + /** + * Clear data of the autocomplete. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @memberof EO_Framework_Auto_Complete + * + * @param {} parent + * @param {} label + * + * @returns {void} + */ + window.eoxiaJS.autoComplete.clear = function( parent, label ) { + if ( label[0] ) { + clearInterval(label[0].interval); + label[0].interval = undefined; + } + + if ( parent[0] ) { + parent[0].xhr = undefined; + } + + parent.find( '.autocomplete-search-list' ).html( '' ); + parent.find( '.autocomplete-loading' ).css({ + width: '100%', + }); + + setTimeout( function() { + jQuery( label[0].autoCompleteLoading ).remove(); + jQuery( label[0].autoCompletedLoadingBackground ).remove(); + }, 600 ); + }; + } + +/** + * @namespace EO_Framework_Date + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Handle date + * + * @since 1.0.0 + * @version 1.0.0 + */ + +if ( ! window.eoxiaJS.date ) { + + /** + * [date description] + * + * @memberof EO_Framework_Date + * + * @type {Object} + */ + window.eoxiaJS.date = {}; + + /** + * [description] + * + * @memberof EO_Framework_Date + * + * @returns {void} [description] + */ + window.eoxiaJS.date.init = function() { + jQuery( document ).on ('click', '.group-date .date', function( e ) { + var format = 'd/m/Y'; + var timepicker = false; + + if ( jQuery( this ).closest( '.group-date' ).data( 'time' ) ) { + format += ' H:i:s'; + timepicker = true; + } + + jQuery( this ).datetimepicker( { + lang: 'fr', + format: format, + mask: true, + timepicker: timepicker, + closeOnDateSelect: true, + onChangeDateTime : function(ct, $i) { + if ( $i.closest( '.group-date' ).data( 'time' ) ) { + $i.closest( '.group-date' ).find( '.mysql-date' ).val( ct.dateFormat('Y-m-d H:i:s') ); + } else { + $i.closest( '.group-date' ).find( '.mysql-date' ).val( ct.dateFormat('Y-m-d') ); + } + + if ( $i.closest( '.group-date' ).attr( 'data-namespace' ) && $i.closest( '.group-date' ).attr( 'data-module' ) && $i.closest( '.group-date' ).attr( 'data-after-method' ) ) { + window.eoxiaJS[$i.closest( '.group-date' ).attr( 'data-namespace' )][$i.closest( '.group-date' ).attr( 'data-module' )][$i.closest( '.group-date' ).attr( 'data-after-method' )]( $i ); + } + } + } ).datetimepicker( 'show' ); + }); + }; +} + +/** + * @namespace EO_Framework_Dropdown + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + if ( ! window.eoxiaJS.dropdown ) { + + /** + * [dropdown description] + * + * @memberof EO_Framework_Dropdown + * + * @type {Object} + */ + window.eoxiaJS.dropdown = {}; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.init = function() { + window.eoxiaJS.dropdown.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.event = function() { + jQuery( document ).on( 'keyup', window.eoxiaJS.dropdown.keyup ); + jQuery( document ).on( 'click', '.wpeo-dropdown:not(.dropdown-active) .dropdown-toggle:not(.disabled)', window.eoxiaJS.dropdown.open ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active .dropdown-content', function(e) { e.stopPropagation() } ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active:not(.dropdown-force-display) .dropdown-content .dropdown-item', window.eoxiaJS.dropdown.close ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active', function ( e ) { window.eoxiaJS.dropdown.close( e ); e.stopPropagation(); } ); + jQuery( document ).on( 'click', 'body', window.eoxiaJS.dropdown.close ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.keyup = function( event ) { + if ( 27 === event.keyCode ) { + window.eoxiaJS.dropdown.close(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.open = function( event ) { + var triggeredElement = jQuery( this ); + var angleElement = triggeredElement.find('[data-fa-i2svg]'); + var callbackData = {}; + var key = undefined; + + window.eoxiaJS.dropdown.close( event, jQuery( this ) ); + + if ( triggeredElement.attr( 'data-action' ) ) { + window.eoxiaJS.loader.display( triggeredElement ); + + triggeredElement.get_data( function( data ) { + for ( key in callbackData ) { + if ( ! data[key] ) { + data[key] = callbackData[key]; + } + } + + window.eoxiaJS.request.send( triggeredElement, data, function( element, response ) { + triggeredElement.closest( '.wpeo-dropdown' ).find( '.dropdown-content' ).html( response.data.view ); + + triggeredElement.closest( '.wpeo-dropdown' ).addClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } ); + } ); + } else { + triggeredElement.closest( '.wpeo-dropdown' ).addClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } + + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.close = function( event ) { + var _element = jQuery( this ); + jQuery( '.wpeo-dropdown.dropdown-active:not(.no-close)' ).each( function() { + var toggle = jQuery( this ); + var triggerObj = { + close: true + }; + + _element.trigger( 'dropdown-before-close', [ toggle, _element, triggerObj ] ); + + if ( triggerObj.close ) { + toggle.removeClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + var angleElement = jQuery( this ).find('.dropdown-toggle').find('[data-fa-i2svg]'); + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } else { + return; + } + }); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} button [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.toggleAngleClass = function( button ) { + if ( button.hasClass('fa-caret-down') || button.hasClass('fa-caret-up') ) { + button.toggleClass('fa-caret-down').toggleClass('fa-caret-up'); + } + else if ( button.hasClass('fa-caret-circle-down') || button.hasClass('fa-caret-circle-up') ) { + button.toggleClass('fa-caret-circle-down').toggleClass('fa-caret-circle-up'); + } + else if ( button.hasClass('fa-angle-down') || button.hasClass('fa-angle-up') ) { + button.toggleClass('fa-angle-down').toggleClass('fa-angle-up'); + } + else if ( button.hasClass('fa-chevron-circle-down') || button.hasClass('fa-chevron-circle-up') ) { + button.toggleClass('fa-chevron-circle-down').toggleClass('fa-chevron-circle-up'); + } + } + } + +/** + * @namespace EO_Framework_Form + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ + +if ( ! window.eoxiaJS.form ) { + + /** + * [form description] + * + * @memberof EO_Framework_Form + * + * @type {Object} + */ + window.eoxiaJS.form = {}; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.form.init = function() { + window.eoxiaJS.form.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.form.event = function() { + jQuery( document ).on( 'click', '.submit-form', window.eoxiaJS.form.submitForm ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.form.submitForm = function( event ) { + var element = jQuery( this ); + var doAction = true; + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } + + if ( doAction ) { + element.closest( 'form' ).ajaxSubmit( { + success: function( response ) { + if ( response && response.data.module && response.data.callback ) { + window.eoxiaJS[response.data.module][response.data.callback]( element, response ); + } + + if ( response && response.success ) { + if ( response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.module][response.data.callback_success]( element, response ); + } + } else { + if ( response.data.module && response.data.callback_error ) { + window.eoxiaJS[response.data.module][response.data.callback_error]( element, response ); + } + } + } + } ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @param {void} formElement [description] + * @returns {void} [description] + */ + window.eoxiaJS.form.reset = function( formElement ) { + var fields = formElement.find( 'input, textarea, select' ); + + fields.each(function () { + switch( jQuery( this )[0].tagName ) { + case 'INPUT': + case 'TEXTAREA': + jQuery( this ).val( jQuery( this )[0].defaultValue ); + break; + case 'SELECT': + // 08/03/2018: En dur pour TheEPI il faut absolument le changer + jQuery( this ).val( 'OK' ); + break; + default: + jQuery( this ).val( jQuery( this )[0].defaultValue ); + break; + } + } ); + }; +} + +/** + * @namespace EO_Framework_Global + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.global ) { + + /** + * [global description] + * + * @memberof EO_Framework_Global + * + * @type {Object} + */ + window.eoxiaJS.global = {}; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @returns {void} [description] + */ + window.eoxiaJS.global.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @param {void} urlToFile [description] + * @param {void} filename [description] + * @returns {void} [description] + */ + window.eoxiaJS.global.downloadFile = function( urlToFile, filename ) { + var alink = document.createElement( 'a' ); + alink.setAttribute( 'href', urlToFile ); + alink.setAttribute( 'download', filename ); + if ( document.createEvent ) { + var event = document.createEvent( 'MouseEvents' ); + event.initEvent( 'click', true, true ); + alink.dispatchEvent( event ); + } else { + alink.click(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @param {void} input [description] + * @returns {void} [description] + */ + window.eoxiaJS.global.removeDiacritics = function( input ) { + var output = ''; + var normalized = input.normalize( 'NFD' ); + var i = 0; + var j = 0; + + while ( i < input.length ) { + output += normalized[j]; + + j += ( input[i] == normalized[j] ) ? 1 : 2; + i++; + } + + return output; + }; + + } + +/** + * @namespace EO_Framework_Loader + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion du loader. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.loader ) { + + /** + * [loader description] + * + * @memberof EO_Framework_Loader + * + * @type {Object} + */ + window.eoxiaJS.loader = {}; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @returns {void} [description] + */ + window.eoxiaJS.loader.init = function() { + window.eoxiaJS.loader.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @returns {void} [description] + */ + window.eoxiaJS.loader.event = function() { + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.loader.display = function( element ) { + // Loader spécial pour les "button-progress". + if ( element.hasClass( 'button-progress' ) ) { + element.addClass( 'button-load' ) + } else { + element.addClass( 'wpeo-loader' ); + var el = jQuery( '' ); + element[0].loaderElement = el; + element.append( element[0].loaderElement ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.loader.remove = function( element ) { + if ( 0 < element.length && ! element.hasClass( 'button-progress' ) ) { + element.removeClass( 'wpeo-loader' ); + + jQuery( element[0].loaderElement ).remove(); + } + }; +} + +/** + * @namespace EO_Framework_Modal + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion de la modal. + * + * La modal peut être ouverte par deux moyens: + * -Avec une requête AJAX. + * -En plaçant la vue directement dans le DOM. + * + * Dans tous les cas, il faut placer un élément HTML avec la classe ".wpeo-modal-event". + * + * Cette élement doit contenir différent attributs. + * + * Les attributs pour ouvrir la popup avec une requête AJAX: + * - data-action: Le nom de l'action WordPress. + * - data-title : Le titre de la popup. + * - data-class : Pour ajouter une classe dans le contenaire principale de la popup. + * + * Les attributs pour ouvrir la popup avec une vue implémentée directement dans le DOM: + * - data-parent: La classe de l'élement parent contenant la vue de la popup + * - data-target: La classe de la popup elle même. + * + * La modal généré en AJAX est ajouté dans la balise temporairement. Une fois celle-ci fermée + * elle se détruit du DOM. + * + * La modal implémentée dans le DOM (donc non généré en AJAX) reste dans le DOM une fois fermée. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.modal ) { + + /** + * [modal description] + * + * @memberof EO_Framework_Modal + * + * @type {Object} + */ + window.eoxiaJS.modal = {}; + + /** + * La vue de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.popupTemplate = wpeo_framework.modalView; + + /** + * Les boutons par défault de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal-buttons.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.defaultButtons = wpeo_framework.modalDefaultButtons; + + /** + * Le titre par défault de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal-title.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.defaultTitle = wpeo_framework.modalDefaultTitle; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @returns {void} [description] + */ + window.eoxiaJS.modal.init = function() { + window.eoxiaJS.modal.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @returns {void} [description] + */ + window.eoxiaJS.modal.event = function() { + jQuery( document ).on( 'keyup', window.eoxiaJS.modal.keyup ); + jQuery( document ).on( 'click', '.wpeo-modal-event', window.eoxiaJS.modal.open ); + jQuery( document ).on( 'click', '.wpeo-modal .modal-container', window.eoxiaJS.modal.stopPropagation ); + jQuery( document ).on( 'click', '.wpeo-modal .modal-close', window.eoxiaJS.modal.close ); + // jQuery( document ).on( 'click', 'body', window.eoxiaJS.modal.close ); //09/07/2019 + jQuery( document ).on( 'mousedown', '.modal-active:not(.modal-container)', window.eoxiaJS.modal.close ); + jQuery( '#wpeo-task-metabox h2 span .wpeo-modal-event' ).click( window.eoxiaJS.modal.open ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.keyup = function( event ) { + if ( 27 === event.keyCode ) { + jQuery( '.wpeo-modal.modal-active:not(.no-close) .modal-close:first' ).click(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.open = function( event ) { + var triggeredElement = jQuery( this ); + var callbackData = {}; + var key = undefined; + + window.eoxiaJS.action.checkBeforeCB( triggeredElement ); + + // Si data-action existe, ce script ouvre la popup en lançant une requête AJAX. + if ( triggeredElement.attr( 'data-action' ) ) { + window.eoxiaJS.loader.display( triggeredElement ); + + triggeredElement.get_data( function( data ) { + for ( key in callbackData ) { + if ( ! data[key] ) { + data[key] = callbackData[key]; + } + } + + window.eoxiaJS.request.send( triggeredElement, data, function( element, response ) { + window.eoxiaJS.loader.remove( triggeredElement ); + + if ( response.data.view ) { + var el = jQuery( document.createElement( 'div' ) ); + el[0].className = 'wpeo-modal modal-active'; + el[0].innerHTML = window.eoxiaJS.modal.popupTemplate; + el[0].typeModal = 'ajax'; + triggeredElement[0].modalElement = el; + + if ( triggeredElement.attr( 'data-class' ) ) { + el[0].className += ' ' + triggeredElement.attr( 'data-class' ); + } + + jQuery( 'body' ).append( triggeredElement[0].modalElement ); + + el[0].innerHTML = el[0].innerHTML.replace( '{{content}}', response.data.view ); + + if ( typeof response.data.buttons_view !== 'undefined' ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{buttons}}', response.data.buttons_view ); + } else { + el[0].innerHTML = el[0].innerHTML.replace( '{{buttons}}', window.eoxiaJS.modal.defaultButtons ); + } + + if ( triggeredElement.attr( 'data-title' ) ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', triggeredElement.attr( 'data-title' ) ); + } else if ( response.data.modal_title ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', response.data.modal_title ); + } else if ( ! triggeredElement.attr( 'data-title' ) ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', window.eoxiaJS.modal.defaultTitle ); + } + + if ( window.eoxiaJS.refresh ) { + window.eoxiaJS.refresh(); + } + + triggeredElement[0].modalElement.trigger( 'modal-opened', triggeredElement ); + } + } ); + }); + } else { + // Stop le script si un de ses deux attributs n'est pas déclaré. + if ( ! triggeredElement.attr( 'data-parent' ) || ! triggeredElement.attr( 'data-target' ) ) { + event.stopPropagation(); + return; + } + + + var target = triggeredElement.closest( '.' + triggeredElement.attr( 'data-parent' ) ).find( '.' + triggeredElement.attr( 'data-target' ) ); + + jQuery( target ).find( 'h2.modal-title' ).text( '{{title}}' ); + + if ( triggeredElement.attr( 'data-title' ) ) { + target[0].querySelector( '.modal-title' ).innerHTML = target[0].querySelector( '.modal-title' ).innerHTML.replace( '{{title}}', triggeredElement.attr( 'data-title' ) ); + } + + if ( triggeredElement.attr( 'data-class' ) ) { + target[0].className += ' ' + triggeredElement.attr( 'data-class' ); + } + + target.addClass( 'modal-active' ); + target[0].typeModal = 'default'; + triggeredElement[0].modalElement = target; + + target.trigger( 'modal-opened', triggeredElement ); + + } + + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.stopPropagation = function( event ) { + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.close = function( event ) { + if( ! jQuery( event.target ).hasClass( "wpeo-modal" ) && event.type == "mousedown" ){ // Si le click se situe dans la modal + return; + } + jQuery( '.wpeo-modal.modal-active:last:not(.modal-force-display)' ).each( function() { + var popup = jQuery( this ); + popup.removeClass( 'modal-active' ); + if ( popup[0].typeModal && 'default' !== popup[0].typeModal ) { + setTimeout( function() { + popup.remove(); + }, 200 ); + } + popup.trigger( 'modal-closed', popup ); + } ); + }; +} + +/** + * @namespace EO_Framework_Popover + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.popover ) { + + /** + * [popover description] + * + * @memberof EO_Framework_Popover + * + * @type {Object} + */ + window.eoxiaJS.popover = {}; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @returns {void} [description] + */ + window.eoxiaJS.popover.init = function() { + window.eoxiaJS.popover.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @returns {void} [description] + */ + window.eoxiaJS.popover.event = function() { + jQuery( document ).on( 'click', '.wpeo-popover-event.popover-click', window.eoxiaJS.popover.click ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.click = function( event ) { + window.eoxiaJS.popover.toggle( jQuery( this ) ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.toggle = function( element ) { + var direction = ( element.data( 'direction' ) ) ? element.data( 'direction' ) : 'top'; + var el = jQuery( '' + element.attr( 'aria-label' ) + '' ); + var pos = element.position(); + var offset = element.offset(); + + if ( element[0].popoverElement ) { + jQuery( element[0].popoverElement ).remove(); + delete element[0].popoverElement; + } else { + element[0].popoverElement = el; + jQuery( 'body' ).append( element[0].popoverElement ); + + if ( element.data( 'color' ) ) { + el.addClass( 'popover-' + element.data( 'color' ) ); + } + + var top = 0; + var left = 0; + + switch( element.data( 'direction' ) ) { + case 'left': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( element.outerHeight() / 2 ) ) + 'px'; + left = ( offset.left - el.outerWidth() - 10 ) + 3 + 'px'; + break; + case 'right': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( element.outerHeight() / 2 ) ) + 'px'; + left = offset.left + element.outerWidth() + 8 + 'px'; + break; + case 'bottom': + top = ( offset.top + element.height() + 10 ) + 10 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + case 'top': + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + default: + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + } + + el.css( { + 'top': top, + 'left': left, + 'opacity': 1 + } ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.remove = function( element ) { + if ( element[0].popoverElement ) { + jQuery( element[0].popoverElement ).remove(); + delete element[0].popoverElement; + } + }; +} + +/** + * @namespace EO_Framework_Regex + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ + +var regex = { + /** + * [description] + * + * @memberof EO_Framework_Regex + * + * @param {void} email [description] + * @returns {void} [description] + */ + validateEmail: function(email) { + var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return re.test(email); + }, + + /** + * [description] + * + * @memberof EO_Framework_Regex + * + * @param {void} endEmail [description] + * @returns {void} [description] + */ + validateEndEmail: function( endEmail ) { + var re = /^[a-zA-Z0-9]+\.[a-zA-Z0-9]+(\.[a-z-A-Z0-9]+)?$/; + return re.test( endEmail ); + } +}; + +/** + * @namespace EO_Framework_Render + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ +if ( ! window.eoxiaJS.render ) { + /** + * [render description] + * + * @memberof EO_Framework_Render + * + * @type {Object} + */ + window.eoxiaJS.render = {}; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.init = function() { + window.eoxiaJS.render.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.event = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.callRenderChanged = function() { + var key = undefined; + var slug = undefined; + + for ( key in window.eoxiaJS ) { + if ( window.eoxiaJS[key].renderChanged ) { + window.eoxiaJS[key].renderChanged(); + } + + for ( slug in window.eoxiaJS[key] ) { + if ( window.eoxiaJS[key][slug].renderChanged ) { + window.eoxiaJS[key][slug].renderChanged(); + } + } + } + }; +} + +/** + * @namespace EO_Framework_Request + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion des requêtes XHR. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.request ) { + + /** + * [request description] + * + * @memberof EO_Framework_Request + * + * @type {Object} + */ + window.eoxiaJS.request = {}; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @returns {void} [description] + */ + window.eoxiaJS.request.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} data [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.send = function( element, data, cb ) { + return jQuery.post( window.ajaxurl, data, function( response ) { + // Normal loader. + if ( element instanceof jQuery ) { + window.eoxiaJS.loader.remove( element.closest( '.wpeo-loader' ) ); + } + + // Handle button progress. + if ( element instanceof jQuery && element.hasClass( 'button-progress' ) ) { + element.removeClass( 'button-load' ).addClass( 'button-success' ); + setTimeout( function() { + element.removeClass( 'button-success' ); + + window.eoxiaJS.request.callCB( element, response, cb ) + }, 1000 ); + } else { + window.eoxiaJS.request.callCB( element, response, cb ) + } + }, 'json').fail( function() { + window.eoxiaJS.request.fail( element ); + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} url [description] + * @param {void} data [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.get = function( element, url, data, cb ) { + jQuery.get( url, data, function( response ) { + window.eoxiaJS.request.callCB( element, response, cb ); + }, 'json' ).fail( function() { + window.eoxiaJS.request.fail( element ); + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} response [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.callCB = function( element, response, cb ) { + if ( cb ) { + cb( element, response ); + } else { + if ( response && response.success ) { + if ( response.data && response.data.namespace && response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.namespace][response.data.module][response.data.callback_success]( element, response ); + } else if ( response.data && response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.module][response.data.callback_success]( element, response ); + } + } else { + if ( response.data && response.data.namespace && response.data.module && response.data.callback_error ) { + window.eoxiaJS[response.data.namespace][response.data.module][response.data.callback_error]( element, response ); + } + } + } + } + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.fail = function( element ) { + if ( element && element instanceof jQuery ) { + window.eoxiaJS.loader.remove( element.closest( '.wpeo-loader' ) ); + + if ( element.hasClass( 'button-progress' ) ) { + element.removeClass( 'button-load' ).addClass( 'button-error' ); + setTimeout( function() { + element.removeClass( 'button-error' ); + }, 1000 ); + } + } + } +} + +/** + * @namespace EO_Framework_Tab + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion des onglets. + * + * @since 1.0.0 + * @version 1.0.0 + */ + +if ( ! window.eoxiaJS.tab ) { + + /** + * [tab description] + * + * @memberof EO_Framework_Tab + * + * @type {Object} + */ + window.eoxiaJS.tab = {}; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.init = function() { + window.eoxiaJS.tab.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.event = function() { + jQuery( document ).on( 'click', '.wpeo-tab li.tab-element:not(.wpeo-dropdown)', window.eoxiaJS.tab.load ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tab.load = function( event ) { + var tabTriggered = jQuery( this ); + var data = {}; + var key; + + event.preventDefault(); + event.stopPropagation(); + + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-element.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.addClass( 'tab-active' ); + + if ( ! tabTriggered.attr( 'data-action' ) ) { + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content[id="' + tabTriggered.attr( 'data-target' ) + '"]' ).addClass( 'tab-active' ); + } else { + data = { + action: tabTriggered.attr( 'data-action' ), + _wpnonce: tabTriggered.attr( 'data-nonce' ), + target: tabTriggered.attr( 'data-target' ), + title: tabTriggered.attr( 'data-title' ), + element_id: tabTriggered.attr( 'data-id' ) + }; + + tabTriggered.get_data( function( attrData ) { + for ( key in attrData ) { + if ( ! data[key] ) { + data[key] = attrData[key]; + } + } + + window.eoxiaJS.loader.display( tabTriggered ); + window.eoxiaJS.loader.display( tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ) ); + + jQuery.post( window.ajaxurl, data, function( response ) { + window.eoxiaJS.loader.remove( tabTriggered ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ).addClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ).html( response.data.view ); + window.eoxiaJS.loader.remove( tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ) ); + + window.eoxiaJS.tab.callTabChanged(); + } ); + } ); + } + + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.callTabChanged = function() { + var key = undefined, slug = undefined; + for ( key in window.eoxiaJS ) { + + if ( window.eoxiaJS && window.eoxiaJS[key] && window.eoxiaJS[key].tabChanged ) { + window.eoxiaJS[key].tabChanged(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS && window.eoxiaJS[key] && window.eoxiaJS[key][slug].tabChanged ) { + window.eoxiaJS[key][slug].tabChanged(); + } + } + } + }; +} + +/** + * @namespace EO_Framework_Tooltip + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.tooltip ) { + + /** + * [tooltip description] + * + * @memberof EO_Framework_Tooltip + * + * @type {Object} + */ + window.eoxiaJS.tooltip = {}; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.init = function() { + window.eoxiaJS.tooltip.event(); + }; + + window.eoxiaJS.tooltip.tabChanged = function() { + jQuery( '.wpeo-tooltip' ).remove(); + } + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.event = function() { + jQuery( document ).on( 'mouseenter', '.wpeo-tooltip-event:not([data-tooltip-persist="true"])', window.eoxiaJS.tooltip.onEnter ); + jQuery( document ).on( 'mouseleave', '.wpeo-tooltip-event:not([data-tooltip-persist="true"])', window.eoxiaJS.tooltip.onOut ); + }; + + window.eoxiaJS.tooltip.onEnter = function( event ) { + window.eoxiaJS.tooltip.display( jQuery( this ) ); + }; + + window.eoxiaJS.tooltip.onOut = function( event ) { + window.eoxiaJS.tooltip.remove( jQuery( this ) ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.display = function( element ) { + var direction = ( jQuery( element ).data( 'direction' ) ) ? jQuery( element ).data( 'direction' ) : 'top'; + var el = jQuery( '' + jQuery( element ).attr( 'aria-label' ) + '' ); + var pos = jQuery( element ).position(); + var offset = jQuery( element ).offset(); + jQuery( element )[0].tooltipElement = el; + jQuery( 'body' ).append( jQuery( element )[0].tooltipElement ); + + if ( jQuery( element ).data( 'color' ) ) { + el.addClass( 'tooltip-' + jQuery( element ).data( 'color' ) ); + } + + var top = 0; + var left = 0; + + switch( jQuery( element ).data( 'direction' ) ) { + case 'left': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( jQuery( element ).outerHeight() / 2 ) ) + 'px'; + left = ( offset.left - el.outerWidth() - 10 ) + 3 + 'px'; + break; + case 'right': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( jQuery( element ).outerHeight() / 2 ) ) + 'px'; + left = offset.left + jQuery( element ).outerWidth() + 8 + 'px'; + break; + case 'bottom': + top = ( offset.top + jQuery( element ).height() + 10 ) + 10 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + case 'top': + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + default: + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + } + + el.css( { + 'top': top, + 'left': left, + 'opacity': 1 + } ); + + jQuery( element ).on("remove", function() { + jQuery( jQuery( element )[0].tooltipElement ).remove(); + + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.remove = function( element ) { + if ( jQuery( element )[0] && jQuery( element )[0].tooltipElement ) { + jQuery( jQuery( element )[0].tooltipElement ).remove(); + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/dropdown.lib.js b/core/external/eo-framework/core/assets/js/dropdown.lib.js new file mode 100644 index 0000000..64c2964 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/dropdown.lib.js @@ -0,0 +1,169 @@ +/** + * @namespace EO_Framework_Dropdown + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion du dropdown. + * + * @since 1.0.0 + * @version 1.0.0 + */ + if ( ! window.eoxiaJS.dropdown ) { + + /** + * [dropdown description] + * + * @memberof EO_Framework_Dropdown + * + * @type {Object} + */ + window.eoxiaJS.dropdown = {}; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.init = function() { + window.eoxiaJS.dropdown.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.event = function() { + jQuery( document ).on( 'keyup', window.eoxiaJS.dropdown.keyup ); + jQuery( document ).on( 'click', '.wpeo-dropdown:not(.dropdown-active) .dropdown-toggle:not(.disabled)', window.eoxiaJS.dropdown.open ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active .dropdown-content', function(e) { e.stopPropagation() } ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active:not(.dropdown-force-display) .dropdown-content .dropdown-item', window.eoxiaJS.dropdown.close ); + jQuery( document ).on( 'click', '.wpeo-dropdown.dropdown-active', function ( e ) { window.eoxiaJS.dropdown.close( e ); e.stopPropagation(); } ); + jQuery( document ).on( 'click', 'body', window.eoxiaJS.dropdown.close ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.keyup = function( event ) { + if ( 27 === event.keyCode ) { + window.eoxiaJS.dropdown.close(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.open = function( event ) { + var triggeredElement = jQuery( this ); + var angleElement = triggeredElement.find('[data-fa-i2svg]'); + var callbackData = {}; + var key = undefined; + + window.eoxiaJS.dropdown.close( event, jQuery( this ) ); + + if ( triggeredElement.attr( 'data-action' ) ) { + window.eoxiaJS.loader.display( triggeredElement ); + + triggeredElement.get_data( function( data ) { + for ( key in callbackData ) { + if ( ! data[key] ) { + data[key] = callbackData[key]; + } + } + + window.eoxiaJS.request.send( triggeredElement, data, function( element, response ) { + triggeredElement.closest( '.wpeo-dropdown' ).find( '.dropdown-content' ).html( response.data.view ); + + triggeredElement.closest( '.wpeo-dropdown' ).addClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } ); + } ); + } else { + triggeredElement.closest( '.wpeo-dropdown' ).addClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } + + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.close = function( event ) { + var _element = jQuery( this ); + jQuery( '.wpeo-dropdown.dropdown-active:not(.no-close)' ).each( function() { + var toggle = jQuery( this ); + var triggerObj = { + close: true + }; + + _element.trigger( 'dropdown-before-close', [ toggle, _element, triggerObj ] ); + + if ( triggerObj.close ) { + toggle.removeClass( 'dropdown-active' ); + + /* Toggle Button Icon */ + var angleElement = jQuery( this ).find('.dropdown-toggle').find('[data-fa-i2svg]'); + if ( angleElement ) { + window.eoxiaJS.dropdown.toggleAngleClass( angleElement ); + } + } else { + return; + } + }); + }; + + /** + * [description] + * + * @memberof EO_Framework_Dropdown + * + * @param {void} button [description] + * @returns {void} [description] + */ + window.eoxiaJS.dropdown.toggleAngleClass = function( button ) { + if ( button.hasClass('fa-caret-down') || button.hasClass('fa-caret-up') ) { + button.toggleClass('fa-caret-down').toggleClass('fa-caret-up'); + } + else if ( button.hasClass('fa-caret-circle-down') || button.hasClass('fa-caret-circle-up') ) { + button.toggleClass('fa-caret-circle-down').toggleClass('fa-caret-circle-up'); + } + else if ( button.hasClass('fa-angle-down') || button.hasClass('fa-angle-up') ) { + button.toggleClass('fa-angle-down').toggleClass('fa-angle-up'); + } + else if ( button.hasClass('fa-chevron-circle-down') || button.hasClass('fa-chevron-circle-up') ) { + button.toggleClass('fa-chevron-circle-down').toggleClass('fa-chevron-circle-up'); + } + } + } diff --git a/core/external/eo-framework/core/assets/js/form.lib.js b/core/external/eo-framework/core/assets/js/form.lib.js new file mode 100644 index 0000000..e60d0b4 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/form.lib.js @@ -0,0 +1,112 @@ +/** + * @namespace EO_Framework_Form + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ + +if ( ! window.eoxiaJS.form ) { + + /** + * [form description] + * + * @memberof EO_Framework_Form + * + * @type {Object} + */ + window.eoxiaJS.form = {}; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.form.init = function() { + window.eoxiaJS.form.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @returns {void} [description] + */ + window.eoxiaJS.form.event = function() { + jQuery( document ).on( 'click', '.submit-form', window.eoxiaJS.form.submitForm ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.form.submitForm = function( event ) { + var element = jQuery( this ); + var doAction = true; + + event.preventDefault(); + + /** Méthode appelée avant l'action */ + if ( element.attr( 'data-module' ) && element.attr( 'data-before-method' ) ) { + doAction = false; + doAction = window.eoxiaJS[element.attr( 'data-module' )][element.attr( 'data-before-method' )]( element ); + } + + if ( doAction ) { + element.closest( 'form' ).ajaxSubmit( { + success: function( response ) { + if ( response && response.data.module && response.data.callback ) { + window.eoxiaJS[response.data.module][response.data.callback]( element, response ); + } + + if ( response && response.success ) { + if ( response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.module][response.data.callback_success]( element, response ); + } + } else { + if ( response.data.module && response.data.callback_error ) { + window.eoxiaJS[response.data.module][response.data.callback_error]( element, response ); + } + } + } + } ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Form + * + * @param {void} formElement [description] + * @returns {void} [description] + */ + window.eoxiaJS.form.reset = function( formElement ) { + var fields = formElement.find( 'input, textarea, select' ); + + fields.each(function () { + switch( jQuery( this )[0].tagName ) { + case 'INPUT': + case 'TEXTAREA': + jQuery( this ).val( jQuery( this )[0].defaultValue ); + break; + case 'SELECT': + // 08/03/2018: En dur pour TheEPI il faut absolument le changer + jQuery( this ).val( 'OK' ); + break; + default: + jQuery( this ).val( jQuery( this )[0].defaultValue ); + break; + } + } ); + }; +} diff --git a/core/external/eo-framework/core/assets/js/global.lib.js b/core/external/eo-framework/core/assets/js/global.lib.js new file mode 100644 index 0000000..da7644c --- /dev/null +++ b/core/external/eo-framework/core/assets/js/global.lib.js @@ -0,0 +1,77 @@ +/** + * @namespace EO_Framework_Global + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.global ) { + + /** + * [global description] + * + * @memberof EO_Framework_Global + * + * @type {Object} + */ + window.eoxiaJS.global = {}; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @returns {void} [description] + */ + window.eoxiaJS.global.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @param {void} urlToFile [description] + * @param {void} filename [description] + * @returns {void} [description] + */ + window.eoxiaJS.global.downloadFile = function( urlToFile, filename ) { + var alink = document.createElement( 'a' ); + alink.setAttribute( 'href', urlToFile ); + alink.setAttribute( 'download', filename ); + if ( document.createEvent ) { + var event = document.createEvent( 'MouseEvents' ); + event.initEvent( 'click', true, true ); + alink.dispatchEvent( event ); + } else { + alink.click(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Global + * + * @param {void} input [description] + * @returns {void} [description] + */ + window.eoxiaJS.global.removeDiacritics = function( input ) { + var output = ''; + var normalized = input.normalize( 'NFD' ); + var i = 0; + var j = 0; + + while ( i < input.length ) { + output += normalized[j]; + + j += ( input[i] == normalized[j] ) ? 1 : 2; + i++; + } + + return output; + }; + + } diff --git a/core/external/eo-framework/core/assets/js/index.php b/core/external/eo-framework/core/assets/js/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/index.php @@ -0,0 +1,2 @@ + + * @copyright 2015-2018 Eoxia + */ + +/* + + */ + +if ( ! window.eoxiaJS ) { + + /** + * [eoxiaJS description] + * + * @memberof EO_Framework_Init + * + * @type {Object} + */ + window.eoxiaJS = {}; + + /** + * [scriptsLoaded description] + * + * @memberof EO_Framework_Init + * + * @type {Boolean} + */ + window.eoxiaJS.scriptsLoaded = false; +} + +if ( ! window.eoxiaJS.scriptsLoaded ) { + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.init = function() { + window.eoxiaJS.load_list_script(); + window.eoxiaJS.init_array_form(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.load_list_script = function() { + if ( ! window.eoxiaJS.scriptsLoaded ) { + var key = undefined, slug = undefined; + for ( key in window.eoxiaJS ) { + + if ( window.eoxiaJS[key].init ) { + window.eoxiaJS[key].init(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug].init ) { + window.eoxiaJS[key][slug].init(); + } + + } + } + + window.eoxiaJS.scriptsLoaded = true; + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.init_array_form = function() { + window.eoxiaJS.arrayForm.init(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @returns {void} [description] + */ + window.eoxiaJS.refresh = function() { + var key = undefined; + var slug = undefined; + for ( key in window.eoxiaJS ) { + if ( window.eoxiaJS[key].refresh ) { + window.eoxiaJS[key].refresh(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug].refresh ) { + window.eoxiaJS[key][slug].refresh(); + } + } + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Init + * + * @param {void} cbName [description] + * @param {void} cbArgs [description] + * @returns {void} [description] + */ + window.eoxiaJS.cb = function( cbName, cbArgs ) { + var key = undefined; + var slug = undefined; + for ( key in window.eoxiaJS ) { + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS[key] && window.eoxiaJS[key][slug] && window.eoxiaJS[key][slug][cbName] ) { + window.eoxiaJS[key][slug][cbName](cbArgs); + } + } + } + }; + + jQuery( document ).ready( window.eoxiaJS.init ); +} diff --git a/core/external/eo-framework/core/assets/js/loader.lib.js b/core/external/eo-framework/core/assets/js/loader.lib.js new file mode 100644 index 0000000..f860c58 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/loader.lib.js @@ -0,0 +1,81 @@ +/** + * @namespace EO_Framework_Loader + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion du loader. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.loader ) { + + /** + * [loader description] + * + * @memberof EO_Framework_Loader + * + * @type {Object} + */ + window.eoxiaJS.loader = {}; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @returns {void} [description] + */ + window.eoxiaJS.loader.init = function() { + window.eoxiaJS.loader.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @returns {void} [description] + */ + window.eoxiaJS.loader.event = function() { + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.loader.display = function( element ) { + // Loader spécial pour les "button-progress". + if ( element.hasClass( 'button-progress' ) ) { + element.addClass( 'button-load' ) + } else { + element.addClass( 'wpeo-loader' ); + var el = jQuery( '' ); + element[0].loaderElement = el; + element.append( element[0].loaderElement ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Loader + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.loader.remove = function( element ) { + if ( 0 < element.length && ! element.hasClass( 'button-progress' ) ) { + element.removeClass( 'wpeo-loader' ); + + jQuery( element[0].loaderElement ).remove(); + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/modal.lib.js b/core/external/eo-framework/core/assets/js/modal.lib.js new file mode 100644 index 0000000..18ee329 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/modal.lib.js @@ -0,0 +1,260 @@ +/** + * @namespace EO_Framework_Modal + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion de la modal. + * + * La modal peut être ouverte par deux moyens: + * -Avec une requête AJAX. + * -En plaçant la vue directement dans le DOM. + * + * Dans tous les cas, il faut placer un élément HTML avec la classe ".wpeo-modal-event". + * + * Cette élement doit contenir différent attributs. + * + * Les attributs pour ouvrir la popup avec une requête AJAX: + * - data-action: Le nom de l'action WordPress. + * - data-title : Le titre de la popup. + * - data-class : Pour ajouter une classe dans le contenaire principale de la popup. + * + * Les attributs pour ouvrir la popup avec une vue implémentée directement dans le DOM: + * - data-parent: La classe de l'élement parent contenant la vue de la popup + * - data-target: La classe de la popup elle même. + * + * La modal généré en AJAX est ajouté dans la balise temporairement. Une fois celle-ci fermée + * elle se détruit du DOM. + * + * La modal implémentée dans le DOM (donc non généré en AJAX) reste dans le DOM une fois fermée. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.modal ) { + + /** + * [modal description] + * + * @memberof EO_Framework_Modal + * + * @type {Object} + */ + window.eoxiaJS.modal = {}; + + /** + * La vue de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.popupTemplate = wpeo_framework.modalView; + + /** + * Les boutons par défault de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal-buttons.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.defaultButtons = wpeo_framework.modalDefaultButtons; + + /** + * Le titre par défault de la modal (Utilisé pour la requête AJAX, les variables dans la vue *{{}}* ne doit pas être modifiées.). + * Voir le fichier /core/view/modal-title.view.php + * + * @memberof EO_Framework_Modal + * + * @since 1.0.0 + * @version 1.0.0 + * + * @type string + */ + window.eoxiaJS.modal.defaultTitle = wpeo_framework.modalDefaultTitle; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @returns {void} [description] + */ + window.eoxiaJS.modal.init = function() { + window.eoxiaJS.modal.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @returns {void} [description] + */ + window.eoxiaJS.modal.event = function() { + jQuery( document ).on( 'keyup', window.eoxiaJS.modal.keyup ); + jQuery( document ).on( 'click', '.wpeo-modal-event', window.eoxiaJS.modal.open ); + jQuery( document ).on( 'click', '.wpeo-modal .modal-container', window.eoxiaJS.modal.stopPropagation ); + jQuery( document ).on( 'click', '.wpeo-modal .modal-close', window.eoxiaJS.modal.close ); + // jQuery( document ).on( 'click', 'body', window.eoxiaJS.modal.close ); //09/07/2019 + jQuery( document ).on( 'mousedown', '.modal-active:not(.modal-container)', window.eoxiaJS.modal.close ); + jQuery( '#wpeo-task-metabox h2 span .wpeo-modal-event' ).click( window.eoxiaJS.modal.open ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.keyup = function( event ) { + if ( 27 === event.keyCode ) { + jQuery( '.wpeo-modal.modal-active:not(.no-close) .modal-close:first' ).click(); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.open = function( event ) { + var triggeredElement = jQuery( this ); + var callbackData = {}; + var key = undefined; + + window.eoxiaJS.action.checkBeforeCB( triggeredElement ); + + // Si data-action existe, ce script ouvre la popup en lançant une requête AJAX. + if ( triggeredElement.attr( 'data-action' ) ) { + window.eoxiaJS.loader.display( triggeredElement ); + + triggeredElement.get_data( function( data ) { + for ( key in callbackData ) { + if ( ! data[key] ) { + data[key] = callbackData[key]; + } + } + + window.eoxiaJS.request.send( triggeredElement, data, function( element, response ) { + window.eoxiaJS.loader.remove( triggeredElement ); + + if ( response.data.view ) { + var el = jQuery( document.createElement( 'div' ) ); + el[0].className = 'wpeo-modal modal-active'; + el[0].innerHTML = window.eoxiaJS.modal.popupTemplate; + el[0].typeModal = 'ajax'; + triggeredElement[0].modalElement = el; + + if ( triggeredElement.attr( 'data-class' ) ) { + el[0].className += ' ' + triggeredElement.attr( 'data-class' ); + } + + jQuery( 'body' ).append( triggeredElement[0].modalElement ); + + el[0].innerHTML = el[0].innerHTML.replace( '{{content}}', response.data.view ); + + if ( typeof response.data.buttons_view !== 'undefined' ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{buttons}}', response.data.buttons_view ); + } else { + el[0].innerHTML = el[0].innerHTML.replace( '{{buttons}}', window.eoxiaJS.modal.defaultButtons ); + } + + if ( triggeredElement.attr( 'data-title' ) ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', triggeredElement.attr( 'data-title' ) ); + } else if ( response.data.modal_title ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', response.data.modal_title ); + } else if ( ! triggeredElement.attr( 'data-title' ) ) { + el[0].innerHTML = el[0].innerHTML.replace( '{{title}}', window.eoxiaJS.modal.defaultTitle ); + } + + if ( window.eoxiaJS.refresh ) { + window.eoxiaJS.refresh(); + } + + triggeredElement[0].modalElement.trigger( 'modal-opened', triggeredElement ); + } + } ); + }); + } else { + // Stop le script si un de ses deux attributs n'est pas déclaré. + if ( ! triggeredElement.attr( 'data-parent' ) || ! triggeredElement.attr( 'data-target' ) ) { + event.stopPropagation(); + return; + } + + + var target = triggeredElement.closest( '.' + triggeredElement.attr( 'data-parent' ) ).find( '.' + triggeredElement.attr( 'data-target' ) ); + + jQuery( target ).find( 'h2.modal-title' ).text( '{{title}}' ); + + if ( triggeredElement.attr( 'data-title' ) ) { + target[0].querySelector( '.modal-title' ).innerHTML = target[0].querySelector( '.modal-title' ).innerHTML.replace( '{{title}}', triggeredElement.attr( 'data-title' ) ); + } + + if ( triggeredElement.attr( 'data-class' ) ) { + target[0].className += ' ' + triggeredElement.attr( 'data-class' ); + } + + target.addClass( 'modal-active' ); + target[0].typeModal = 'default'; + triggeredElement[0].modalElement = target; + + target.trigger( 'modal-opened', triggeredElement ); + + } + + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.stopPropagation = function( event ) { + event.stopPropagation(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Modal + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.modal.close = function( event ) { + if( ! jQuery( event.target ).hasClass( "wpeo-modal" ) && event.type == "mousedown" ){ // Si le click se situe dans la modal + return; + } + jQuery( '.wpeo-modal.modal-active:last:not(.modal-force-display)' ).each( function() { + var popup = jQuery( this ); + popup.removeClass( 'modal-active' ); + if ( popup[0].typeModal && 'default' !== popup[0].typeModal ) { + setTimeout( function() { + popup.remove(); + }, 200 ); + } + popup.trigger( 'modal-closed', popup ); + } ); + }; +} diff --git a/core/external/eo-framework/core/assets/js/popover.lib.js b/core/external/eo-framework/core/assets/js/popover.lib.js new file mode 100644 index 0000000..6d655ec --- /dev/null +++ b/core/external/eo-framework/core/assets/js/popover.lib.js @@ -0,0 +1,129 @@ +/** + * @namespace EO_Framework_Popover + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.popover ) { + + /** + * [popover description] + * + * @memberof EO_Framework_Popover + * + * @type {Object} + */ + window.eoxiaJS.popover = {}; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @returns {void} [description] + */ + window.eoxiaJS.popover.init = function() { + window.eoxiaJS.popover.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @returns {void} [description] + */ + window.eoxiaJS.popover.event = function() { + jQuery( document ).on( 'click', '.wpeo-popover-event.popover-click', window.eoxiaJS.popover.click ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.click = function( event ) { + window.eoxiaJS.popover.toggle( jQuery( this ) ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.toggle = function( element ) { + var direction = ( element.data( 'direction' ) ) ? element.data( 'direction' ) : 'top'; + var el = jQuery( '' + element.attr( 'aria-label' ) + '' ); + var pos = element.position(); + var offset = element.offset(); + + if ( element[0].popoverElement ) { + jQuery( element[0].popoverElement ).remove(); + delete element[0].popoverElement; + } else { + element[0].popoverElement = el; + jQuery( 'body' ).append( element[0].popoverElement ); + + if ( element.data( 'color' ) ) { + el.addClass( 'popover-' + element.data( 'color' ) ); + } + + var top = 0; + var left = 0; + + switch( element.data( 'direction' ) ) { + case 'left': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( element.outerHeight() / 2 ) ) + 'px'; + left = ( offset.left - el.outerWidth() - 10 ) + 3 + 'px'; + break; + case 'right': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( element.outerHeight() / 2 ) ) + 'px'; + left = offset.left + element.outerWidth() + 8 + 'px'; + break; + case 'bottom': + top = ( offset.top + element.height() + 10 ) + 10 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + case 'top': + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + default: + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( element.outerWidth() / 2 ) ) + 'px'; + break; + } + + el.css( { + 'top': top, + 'left': left, + 'opacity': 1 + } ); + } + }; + + /** + * [description] + * + * @memberof EO_Framework_Popover + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.popover.remove = function( element ) { + if ( element[0].popoverElement ) { + jQuery( element[0].popoverElement ).remove(); + delete element[0].popoverElement; + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/regex.lib.js b/core/external/eo-framework/core/assets/js/regex.lib.js new file mode 100644 index 0000000..3f348bc --- /dev/null +++ b/core/external/eo-framework/core/assets/js/regex.lib.js @@ -0,0 +1,38 @@ +/** + * @namespace EO_Framework_Regex + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ + +var regex = { + /** + * [description] + * + * @memberof EO_Framework_Regex + * + * @param {void} email [description] + * @returns {void} [description] + */ + validateEmail: function(email) { + var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + return re.test(email); + }, + + /** + * [description] + * + * @memberof EO_Framework_Regex + * + * @param {void} endEmail [description] + * @returns {void} [description] + */ + validateEndEmail: function( endEmail ) { + var re = /^[a-zA-Z0-9]+\.[a-zA-Z0-9]+(\.[a-z-A-Z0-9]+)?$/; + return re.test( endEmail ); + } +}; diff --git a/core/external/eo-framework/core/assets/js/render.lib.js b/core/external/eo-framework/core/assets/js/render.lib.js new file mode 100644 index 0000000..0a339b6 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/render.lib.js @@ -0,0 +1,63 @@ +/** + * @namespace EO_Framework_Render + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ +/* + + */ +if ( ! window.eoxiaJS.render ) { + /** + * [render description] + * + * @memberof EO_Framework_Render + * + * @type {Object} + */ + window.eoxiaJS.render = {}; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.init = function() { + window.eoxiaJS.render.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.event = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Render + * + * @returns {void} [description] + */ + window.eoxiaJS.render.callRenderChanged = function() { + var key = undefined; + var slug = undefined; + + for ( key in window.eoxiaJS ) { + if ( window.eoxiaJS[key].renderChanged ) { + window.eoxiaJS[key].renderChanged(); + } + + for ( slug in window.eoxiaJS[key] ) { + if ( window.eoxiaJS[key][slug].renderChanged ) { + window.eoxiaJS[key][slug].renderChanged(); + } + } + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/request.lib.js b/core/external/eo-framework/core/assets/js/request.lib.js new file mode 100644 index 0000000..820563e --- /dev/null +++ b/core/external/eo-framework/core/assets/js/request.lib.js @@ -0,0 +1,134 @@ +/** + * @namespace EO_Framework_Request + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion des requêtes XHR. + * + * @since 1.0.0 + * @version 1.0.0 + */ +if ( ! window.eoxiaJS.request ) { + + /** + * [request description] + * + * @memberof EO_Framework_Request + * + * @type {Object} + */ + window.eoxiaJS.request = {}; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @returns {void} [description] + */ + window.eoxiaJS.request.init = function() {}; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} data [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.send = function( element, data, cb ) { + return jQuery.post( window.ajaxurl, data, function( response ) { + // Normal loader. + if ( element instanceof jQuery ) { + window.eoxiaJS.loader.remove( element.closest( '.wpeo-loader' ) ); + } + + // Handle button progress. + if ( element instanceof jQuery && element.hasClass( 'button-progress' ) ) { + element.removeClass( 'button-load' ).addClass( 'button-success' ); + setTimeout( function() { + element.removeClass( 'button-success' ); + + window.eoxiaJS.request.callCB( element, response, cb ) + }, 1000 ); + } else { + window.eoxiaJS.request.callCB( element, response, cb ) + } + }, 'json').fail( function() { + window.eoxiaJS.request.fail( element ); + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} url [description] + * @param {void} data [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.get = function( element, url, data, cb ) { + jQuery.get( url, data, function( response ) { + window.eoxiaJS.request.callCB( element, response, cb ); + }, 'json' ).fail( function() { + window.eoxiaJS.request.fail( element ); + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @param {void} response [description] + * @param {Function} cb [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.callCB = function( element, response, cb ) { + if ( cb ) { + cb( element, response ); + } else { + if ( response && response.success ) { + if ( response.data && response.data.namespace && response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.namespace][response.data.module][response.data.callback_success]( element, response ); + } else if ( response.data && response.data.module && response.data.callback_success ) { + window.eoxiaJS[response.data.module][response.data.callback_success]( element, response ); + } + } else { + if ( response.data && response.data.namespace && response.data.module && response.data.callback_error ) { + window.eoxiaJS[response.data.namespace][response.data.module][response.data.callback_error]( element, response ); + } + } + } + } + + /** + * [description] + * + * @memberof EO_Framework_Request + * + * @param {void} element [description] + * @returns {void} [description] + */ + window.eoxiaJS.request.fail = function( element ) { + if ( element && element instanceof jQuery ) { + window.eoxiaJS.loader.remove( element.closest( '.wpeo-loader' ) ); + + if ( element.hasClass( 'button-progress' ) ) { + element.removeClass( 'button-load' ).addClass( 'button-error' ); + setTimeout( function() { + element.removeClass( 'button-error' ); + }, 1000 ); + } + } + } +} diff --git a/core/external/eo-framework/core/assets/js/tab.lib.js b/core/external/eo-framework/core/assets/js/tab.lib.js new file mode 100644 index 0000000..cc05303 --- /dev/null +++ b/core/external/eo-framework/core/assets/js/tab.lib.js @@ -0,0 +1,126 @@ +/** + * @namespace EO_Framework_Tab + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + * Gestion des onglets. + * + * @since 1.0.0 + * @version 1.0.0 + */ + +if ( ! window.eoxiaJS.tab ) { + + /** + * [tab description] + * + * @memberof EO_Framework_Tab + * + * @type {Object} + */ + window.eoxiaJS.tab = {}; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.init = function() { + window.eoxiaJS.tab.event(); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.event = function() { + jQuery( document ).on( 'click', '.wpeo-tab li.tab-element:not(.wpeo-dropdown)', window.eoxiaJS.tab.load ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tab.load = function( event ) { + var tabTriggered = jQuery( this ); + var data = {}; + var key; + + event.preventDefault(); + event.stopPropagation(); + + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-element.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.addClass( 'tab-active' ); + + if ( ! tabTriggered.attr( 'data-action' ) ) { + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content[id="' + tabTriggered.attr( 'data-target' ) + '"]' ).addClass( 'tab-active' ); + } else { + data = { + action: tabTriggered.attr( 'data-action' ), + _wpnonce: tabTriggered.attr( 'data-nonce' ), + target: tabTriggered.attr( 'data-target' ), + title: tabTriggered.attr( 'data-title' ), + element_id: tabTriggered.attr( 'data-id' ) + }; + + tabTriggered.get_data( function( attrData ) { + for ( key in attrData ) { + if ( ! data[key] ) { + data[key] = attrData[key]; + } + } + + window.eoxiaJS.loader.display( tabTriggered ); + window.eoxiaJS.loader.display( tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ) ); + + jQuery.post( window.ajaxurl, data, function( response ) { + window.eoxiaJS.loader.remove( tabTriggered ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content.tab-active' ).removeClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ).addClass( 'tab-active' ); + tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ).html( response.data.view ); + window.eoxiaJS.loader.remove( tabTriggered.closest( '.wpeo-tab' ).find( '.tab-content' ) ); + + window.eoxiaJS.tab.callTabChanged(); + } ); + } ); + } + + }; + + /** + * [description] + * + * @memberof EO_Framework_Tab + * + * @returns {void} [description] + */ + window.eoxiaJS.tab.callTabChanged = function() { + var key = undefined, slug = undefined; + for ( key in window.eoxiaJS ) { + + if ( window.eoxiaJS && window.eoxiaJS[key] && window.eoxiaJS[key].tabChanged ) { + window.eoxiaJS[key].tabChanged(); + } + + for ( slug in window.eoxiaJS[key] ) { + + if ( window.eoxiaJS && window.eoxiaJS[key] && window.eoxiaJS[key][slug].tabChanged ) { + window.eoxiaJS[key][slug].tabChanged(); + } + } + } + }; +} diff --git a/core/external/eo-framework/core/assets/js/tooltip.lib.js b/core/external/eo-framework/core/assets/js/tooltip.lib.js new file mode 100644 index 0000000..be5af2e --- /dev/null +++ b/core/external/eo-framework/core/assets/js/tooltip.lib.js @@ -0,0 +1,128 @@ +/** + * @namespace EO_Framework_Tooltip + * + * @author Eoxia + * @copyright 2015-2018 Eoxia + */ + +/* + + */ +if ( ! window.eoxiaJS.tooltip ) { + + /** + * [tooltip description] + * + * @memberof EO_Framework_Tooltip + * + * @type {Object} + */ + window.eoxiaJS.tooltip = {}; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.init = function() { + window.eoxiaJS.tooltip.event(); + }; + + window.eoxiaJS.tooltip.tabChanged = function() { + jQuery( '.wpeo-tooltip' ).remove(); + } + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.event = function() { + jQuery( document ).on( 'mouseenter', '.wpeo-tooltip-event:not([data-tooltip-persist="true"])', window.eoxiaJS.tooltip.onEnter ); + jQuery( document ).on( 'mouseleave', '.wpeo-tooltip-event:not([data-tooltip-persist="true"])', window.eoxiaJS.tooltip.onOut ); + }; + + window.eoxiaJS.tooltip.onEnter = function( event ) { + window.eoxiaJS.tooltip.display( jQuery( this ) ); + }; + + window.eoxiaJS.tooltip.onOut = function( event ) { + window.eoxiaJS.tooltip.remove( jQuery( this ) ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.display = function( element ) { + var direction = ( jQuery( element ).data( 'direction' ) ) ? jQuery( element ).data( 'direction' ) : 'top'; + var el = jQuery( '' + jQuery( element ).attr( 'aria-label' ) + '' ); + var pos = jQuery( element ).position(); + var offset = jQuery( element ).offset(); + jQuery( element )[0].tooltipElement = el; + jQuery( 'body' ).append( jQuery( element )[0].tooltipElement ); + + if ( jQuery( element ).data( 'color' ) ) { + el.addClass( 'tooltip-' + jQuery( element ).data( 'color' ) ); + } + + var top = 0; + var left = 0; + + switch( jQuery( element ).data( 'direction' ) ) { + case 'left': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( jQuery( element ).outerHeight() / 2 ) ) + 'px'; + left = ( offset.left - el.outerWidth() - 10 ) + 3 + 'px'; + break; + case 'right': + top = ( offset.top - ( el.outerHeight() / 2 ) + ( jQuery( element ).outerHeight() / 2 ) ) + 'px'; + left = offset.left + jQuery( element ).outerWidth() + 8 + 'px'; + break; + case 'bottom': + top = ( offset.top + jQuery( element ).height() + 10 ) + 10 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + case 'top': + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + default: + top = offset.top - el.outerHeight() - 4 + 'px'; + left = ( offset.left - ( el.outerWidth() / 2 ) + ( jQuery( element ).outerWidth() / 2 ) ) + 'px'; + break; + } + + el.css( { + 'top': top, + 'left': left, + 'opacity': 1 + } ); + + jQuery( element ).on("remove", function() { + jQuery( jQuery( element )[0].tooltipElement ).remove(); + + } ); + }; + + /** + * [description] + * + * @memberof EO_Framework_Tooltip + * + * @param {void} event [description] + * @returns {void} [description] + */ + window.eoxiaJS.tooltip.remove = function( element ) { + if ( jQuery( element )[0] && jQuery( element )[0].tooltipElement ) { + jQuery( jQuery( element )[0].tooltipElement ).remove(); + } + }; +} diff --git a/core/external/eo-framework/core/assets/languages/eoxia-fr_FR.mo b/core/external/eo-framework/core/assets/languages/eoxia-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..0a655596eaf7b9db1237a315bb9b162f81038e67 GIT binary patch literal 2975 zcmb`Jy>A>v7{-SX2wVao;WI#BBH4-q-t+k!l;n(~*ybDpc5<>E!bfo$@6P!q?9FUu zW}P@v{s1WGphJWLB-2u)q_9AuL5KoTAyHG&AV3s6@9g?~i7X@{RyqG}c4lXu_hX;S z&j)vZ$Z$P}&$IaKyN9u3;NKu!H+L~s1wRGp{`cTx;9uZF;Qo6VdjdQR?go#8Pl2bv zd2kWD5Bvl?1bzk{1iu0w27dr)-(Nt|uos&=3BCZ*{xjesU<(`pMalQU$1(mA+y{OO zJ`er~J_`O0(*6}3PCNwe2S-3!e-b=w(!bQD7`K9Y{fe_y__)ht!>uG!_Cv>4qK|g6lszNS-5DQAd z*ia^Xx9v?kHdeMfCQYPm=U$~;AC=DYOgNrvo*3tpv}|~M$nmMue7HX38hm&HqY*xQ z95}|6C7n%$2MckDM@2FIUn_6DwJ((!Mrt=tE_e_$f5|71QVOMd+ zjELV2f4DciClofxvQ)*wE2G(r2rqb^0TPdDf&E5# zmP+9yU%|eZc6d3+D^HO>2$iP_TXLtf6(6T6{X` zDb3FHGD;1e=LwV*A@Ec>Y!G*mGRLcwPRHgI(rG%SI?Q9|HOwO@KJ3^61sWUOQL7k+ zOe(EBTfpC*x{h$9&e?erg!R)(H_C9Wypk(R2V>(9qteccG%fPhU+B146Dp;U!_qjn zR%*Ycg|)0)Q>am><Bi}HL-LK4S^0tw_3BlUEL~s%j9T+ zbrcmDV;`MMqBn|)HF(opQ=-zk zupG@=8B!d*g05@udaYiIY7^0TosXYr9IwAv8?V){Fj_=jsoFcQn<&=J3+JO{E3`x1 zjBW7BywIyTR7T5E^vZMj%U;G^t*+$qj3gn|*z`{Kmo|9ERu;}JG`HoBS8J77qdh7e zEw5+L>E$&)mZfOB$`l*Y{bJ5A|btI!BZPe7UNl<|XKe?iO<<01<)Y2CES_bd3 z=k;o>TE|Q=jArn{k+U>-wK^95Ra$9oMH-IJ`f=^yHxi9W$ zldnmEwk~IOcF;xXkvWEjlUiB6d6TC{2R(G!Qy-ueN68ED?k7jdqm;uTF`TAwWcXPR zx9D*QfMwzxGFoqL$WiVDbgT-S$m@K~z;}xY$L6H%!NdQPr519z!x?w!t7N_|sC9k0 z8EH<%maqMr$1Wn9EN_hllM$RMxQcejfXBnP+3ilxB+6w*hu?}j z#fjMGGQ}@s%WiJKCUSvl1XqC%!`%8$GT1?kG9j?R;@p)bFAN4m3G7#KVaE=Duiw!U z^go0$6Kr{NBZYSOBYI+>dAEA)2%olg^9zsJJH+!$=IFuA4R1pg1{\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.2\n" +"X-Poedit-Basepath: ../../..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_attr_e\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: core/assets/node_modules\n" + +#: core/util/class-config-util.php:55 +msgid "Unable to load file" +msgstr "Unable to load file" + +#: core/util/class-config-util.php:64 +msgid "This plugin need to have a slug" +msgstr "This plugin need to have a slug" + +#: core/util/class-external-util.php:52 +msgid "Aucun module a charger" +msgstr "Aucun module a charger" + +#: core/util/class-init-util.php:69 core/util/class-init-util.php:79 +msgid "Impossible de charger les fichiers .utils" +msgstr "Impossible de charger les fichiers .utils" + +#: core/util/class-init-util.php:73 +msgid "$path_to_core_folder_util n'est pas un dossier" +msgstr "$path_to_core_folder_util n'est pas un dossier" + +#: core/util/class-json-util.php:43 +msgid "Enabled to load JSON file" +msgstr "Enabled to load JSON file" + +#: core/util/class-json-util.php:55 +msgid "Error in JSON file" +msgstr "Error in JSON file" + +#: core/util/class-module-util.php:51 +#, php-format +msgid "Main config %s not init" +msgstr "Main config %s not init" + +#: modules/wpeo-custom-menu/action/class-custom-menu-action.php:61 +msgid "Go to WP Admin" +msgstr "Retour sur WP Admin" + +#: modules/wpeo-custom-menu/action/class-custom-menu-action.php:68 +msgid "Minimize menu" +msgstr "Réduire le menu" + +#: modules/wpeo-custom-menu/view/nav.view.php:72 +msgid "You don't have right for view this page" +msgstr "" + +#: modules/wpeo-custom-menu/view/screen-options.view.php:16 +msgid "Screen options" +msgstr "" + +#: modules/wpeo-custom-menu/view/screen-options.view.php:39 +msgid "Save Changes" +msgstr "" + +#: modules/wpeo-model/class/data.class.php:219 +#, php-format +msgid "%1$s => %2$s: %3$s ( %4$s ) is not a %5$s" +msgstr "%1$s => %2$s: %3$s ( %4$s ) n'est pas %5$s" + +#: modules/wpeo-odt/class/odt.class.php:136 +#, php-format +msgid "Le modèle utilisé est: %1$score/assets/document_template/%2$s.odt" +msgstr "" + +#: modules/wpeo-odt/class/odt.class.php:177 +#, php-format +msgid "Le modèle utilisé est: %1$s" +msgstr "" + +#: modules/wpeo-update-manager/action/class-update-manager-action.php:97 +msgid "Update Manager" +msgstr "Mise à jour des données" + +#: modules/wpeo-update-manager/view/main.view.php:26 +#, php-format +msgid "List of updates for version %s" +msgstr "Liste des mises à jour pour la version %s" + +#: modules/wpeo-update-manager/view/main.view.php:29 +msgid "" +"Be careful, before using this data update manager, please back up your datas" +msgstr "" +"Attention, avant d'utiliser ce module de mise à jour de donnée, sauvegardez " +"vos données" + +#: modules/wpeo-update-manager/view/main.view.php:30 +msgid "" +"You may loose data if you quit this page until the update is in progress" +msgstr "" +"Si vous quittez la mise à jour lors de sa progression, vous risques de " +"perdre vos données" + +#: modules/wpeo-update-manager/view/main.view.php:42 +msgid "No update requires for your installation" +msgstr "Pas de mise à jour requise dans votre installation" + +#: modules/wpeo-update-manager/view/main.view.php:84 +msgid "Update manager" +msgstr "Module de mise à jour" + +#: modules/wpeo-update-manager/view/main.view.php:85 +msgid "No updates available for current version" +msgstr "Pas de mise à jour disponible pour la version actuelle" + +#: modules/wpeo-update-manager/view/main.view.php:86 +msgid "Back to main application" +msgstr "Revenir à l'application" + +#: modules/wpeo-update-manager/view/say-to-update.view.php:21 +msgid "Update required" +msgstr "Une mise à jour est requise" + +#: modules/wpeo-update-manager/view/say-to-update.view.php:25 +msgid "Warning! Stop the update process can destroy your data." +msgstr "Attention! Arrêtez la mise à jour peut détruire vos données." + +#: modules/wpeo-update-manager/view/say-to-update.view.php:30 +msgid "Start update" +msgstr "Lancer la mise à jour" + +#: modules/wpeo-update-manager/view/say-to-update.view.php:32 +msgid "Back" +msgstr "Retour" + +#: modules/wpeo-upload/shortcode/class-wpeo-upload-shortcode.php:53 +msgid "Upload media" +msgstr "Téléversez un média" + +#: modules/wpeo-upload/view/box/gallery/button-add.view.php:25 +msgid "Add new media" +msgstr "Ajouter un nouveau média" + +#: modules/wpeo-upload/view/box/gallery/list.view.php:31 +#: modules/wpeo-upload/view/box/gallery/list.view.php:54 +msgid "Preview not available" +msgstr "Prévisualisation non disponible" + +#: modules/wpeo-upload/view/box/gallery/main.view.php:64 +msgid "Close" +msgstr "Fermer" + +#: modules/wpeo-upload/view/list/button.view.php:32 +msgid "Add an attached file" +msgstr "Associer un média" + +#: modules/wpeo-upload/view/list/list.view.php:35 +msgid "No file attached" +msgstr "Pas de média" + +#: node_modules/yargs-parser/index.js:301 +#, javascript-format +msgid "Not enough arguments following: %s" +msgstr "" + +#: node_modules/yargs-parser/index.js:449 +#, javascript-format +msgid "Invalid JSON config file: %s" +msgstr "" + +#: node_modules/yargs/lib/usage.js:169 +msgid "Commands:" +msgstr "" + +#: node_modules/yargs/lib/usage.js:177 node_modules/yargs/lib/usage.js:407 +msgid "default:" +msgstr "" + +#: node_modules/yargs/lib/usage.js:179 +msgid "aliases:" +msgstr "" + +#: node_modules/yargs/lib/usage.js:241 +msgid "boolean" +msgstr "" + +#: node_modules/yargs/lib/usage.js:242 +msgid "count" +msgstr "" + +#: node_modules/yargs/lib/usage.js:243 node_modules/yargs/lib/usage.js:244 +msgid "string" +msgstr "" + +#: node_modules/yargs/lib/usage.js:245 +msgid "array" +msgstr "" + +#: node_modules/yargs/lib/usage.js:246 +msgid "number" +msgstr "" + +#: node_modules/yargs/lib/usage.js:250 +#, fuzzy +#| msgid "Update required" +msgid "required" +msgstr "Une mise à jour est requise" + +#: node_modules/yargs/lib/usage.js:251 +msgid "choices:" +msgstr "" + +#: node_modules/yargs/lib/usage.js:270 +msgid "Examples:" +msgstr "" + +#: node_modules/yargs/lib/usage.js:385 +msgid "generated-value" +msgstr "" + +#: node_modules/yargs/lib/validation.js:26 +#: node_modules/yargs/lib/validation.js:49 +#, javascript-format +msgid "Not enough non-option arguments: got %s, need at least %s" +msgstr "" + +#: node_modules/yargs/lib/validation.js:37 +#, javascript-format +msgid "Too many non-option arguments: got %s, maximum of %s" +msgstr "" + +#: node_modules/yargs/lib/validation.js:185 +msgid "Invalid values:" +msgstr "" + +#: node_modules/yargs/lib/validation.js:188 +#, javascript-format +msgid "Argument: %s, Given: %s, Choices: %s" +msgstr "" + +#: node_modules/yargs/lib/validation.js:218 +#, javascript-format +msgid "Argument check failed: %s" +msgstr "" + +#: node_modules/yargs/lib/validation.js:283 +msgid "Implications failed:" +msgstr "" + +#: node_modules/yargs/lib/validation.js:313 +#, javascript-format +msgid "Arguments %s and %s are mutually exclusive" +msgstr "" + +#: node_modules/yargs/lib/validation.js:332 +#, javascript-format +msgid "Did you mean %s?" +msgstr "" + +#~ msgid "No module to load" +#~ msgstr "No module to load" diff --git a/core/external/eo-framework/core/core.config.json b/core/external/eo-framework/core/core.config.json new file mode 100644 index 0000000..11ee7e3 --- /dev/null +++ b/core/external/eo-framework/core/core.config.json @@ -0,0 +1,11 @@ +{ + "name": "Core", + "slug": "core", + "since": "0.1.0", + "version": "1.0.0", + "description": "Core", + "path": "core/", + "dependencies": { + "action": {} + } +} diff --git a/core/external/eo-framework/core/util/README.md b/core/external/eo-framework/core/util/README.md new file mode 100644 index 0000000..97e7584 --- /dev/null +++ b/core/external/eo-framework/core/util/README.md @@ -0,0 +1,81 @@ +# wpeo-util + +L'équipe [Eoxia](https://eoxia.com) utilises WPEO_Util pour tous les plugins suivants: [DigiRisk](https://), [WPShop](https://) et [Task Manager](https://). + +WPEO_Util gère le "boot" de tous ses plugins ainsi que leurs modules et externals. + +## Fonctionnalités + +* Singleton +* Inclusion de module et external +* Gestion des vues +* Gestion JSON/CSV +* Autres + +## Pourquoi ? + + + +# Pour commencer + +Nous utilisons la notion de **module** pour séparer les différentes fonctionnalités de nos plugins. +Nous avons également comme principe de séparer nos fonctions de nos fichiers selon leurs thèmes: +* Les actions se trouverons dans le dossier 'action' +* Les classes se trouverons dans le dossier 'class' +* Les vues se trouverons dans le dossier 'view' +* Ainsi de suite... + +## Modules + +Les modules représentent une fonctionnalité dans un plugin. + +Les modules sont des bouts de code qui permette d'effecuter une fonctionnalité précise dans vos plugins. + +## Singleton + +Singleton_Util + +## Modules + +Les modules représentent une fonctionnalité dans un plugin. + +## *.config.json + +Les configurations des modules/externals se trouvent dans le fichier .json. Un module ne peut pas boot sans ce fichier. + +Les bases de ce fichier JSON sont: + +```json +{ + "slug": "mon-module", + "path": "modules/mon-module" +} +``` + +**slug** et **path** sont des paramètres obligatoires. Sans ceci WPEO_Util ne bootera pas votre module. + +## Externals + +Les externals sont comme ce projet, il sont développé comme des modules, seulement ils sont là pour ajouter des fonctionnalités externes à vos plugins. + +## Gestion des vues + +View_Util + +## Gestion JSON/CSV + +JSON_Util, CSV_Util + +# Docs WPEO Util 1.x.x + +## Créer un plugin WordPress avec WPEO_Util + +## Créer un module pour un plugin WordPress + +## Application exemple + +# TODO + +* Explication +* Exemple +* Documentation diff --git a/core/external/eo-framework/core/util/class-array-util.php b/core/external/eo-framework/core/util/class-array-util.php new file mode 100644 index 0000000..c81e07c --- /dev/null +++ b/core/external/eo-framework/core/util/class-array-util.php @@ -0,0 +1,138 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Array_Util' ) ) { + + /** + * Gestion des tableaux + */ + class Array_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + */ + protected function construct() {} + + /** + * Compte le nombre de valeur dans un tableau avec récursivité en vérifiant que $match_element soit dans la valeur + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param array $array Les données pour la moulinette. + * @param boolean $start Initialise count avec le tableau du premier niveau. + * @param array $match_element Doit être un tableau contenant des integers. + * @return int Le nombre d'entrée + */ + public function count_recursive( $array, $start = true, $match_element = array() ) { + $count = 0; + + if ( $start ) { + $count = count( $array ); + } + + if ( ! empty( $array ) ) { + foreach ( $array as $id => $_array ) { + if ( is_array( $_array ) ) { + if ( is_string( $id ) && ! empty( $match_element ) && in_array( $id, $match_element, true ) ) { + $count += count( $_array ); + } + + $count += $this->count_recursive( $_array, false, $match_element ); + } + } + } + + return $count; + } + + /** + * Forces à convertir les valeurs d'un tableau en integer. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $array Le tableau à convertir en int. + * @return array Le tableau converti en int. + */ + public function to_int( $array ) { + if ( ! empty( $array ) ) { + foreach ( $array as &$element ) { + $element = (int) $element; + } + } + return $array; + } + + /** + * Déplaces l'index du tableau vers l'index $to_key. + * + * @since 0.5.0 + * @version 1.0.0 + * + * @param Array $array Les valeurs contenu dans le tableau. Le tableau ne doit pas être 2D. + * @param mixed $value Tous types de valeurs. + * @param integer $to_key La clé qui vas être déplacer. Defaut 0 + * @return Array Le tableau. + */ + public function switch_key( $array, $value, $to_key = 0 ) { + if ( empty( $array[ $to_key ] ) ) { + return $array; + } + + $index_founded = array_search( $value, $array, true ); + + if ( false === $index_founded ) { + return $array; + } + + $tmp_val = $array[ $to_key ]; + $array[ $to_key ] = $array[ $index_founded ]; + $array[ $index_founded ] = $tmp_val; + + return $array; + } + + /** + * Récursive wp_parse_args de WordPress. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param mixed $a Les données a mergées. + * @param mixed $default Les données par défaut. + * @return array Les données mergées. + */ + public function recursive_wp_parse_args( &$a, $default ) { + $a = (array) $a; + $default = (array) $default; + + $result = $default; + foreach ( $a as $k => $v ) { + if ( is_array( $v ) && isset( $result[ $k ] ) ) { + $result[ $k ] = $this->recursive_wp_parse_args( $v, $result[ $k ] ); + } else { + $result[ $k ] = $v; + } + } + + return $result; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-config-util.php b/core/external/eo-framework/core/util/class-config-util.php new file mode 100644 index 0000000..0d5294f --- /dev/null +++ b/core/external/eo-framework/core/util/class-config-util.php @@ -0,0 +1,99 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Config_Util' ) ) { + + /** + * Gestion de l'objet Config_Util::$init. + */ + class Config_Util extends \eoxia\Singleton_Util { + + /** + * Un tableau contenant toutes les configurations des fichies config.json + * + * @var array + */ + public static $init = array(); + + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @return void nothing + */ + protected function construct() {} + + /** + * Initialise les fichiers de configuration + * + * @since 0.1.0 + * @version 1.0.1 + * + * @param string $path_to_config_file Le chemin vers le fichier config.json. + * @param string $plugin_slug Le SLUG du plugin définis dans le fichier principale de config.json. + * + * @return \WP_Error|boolean { + * WP_Error Si le fichier est inexistant ou si le plugin ne contient pas de slug. + * boolean True si aucune erreur s'est produite. + *}. + */ + public function init_config( $path_to_config_file, $plugin_slug = '' ) { + if ( empty( $path_to_config_file ) ) { + return new \WP_Error( 'broke', __( 'Unable to load file', 'eoxia' ) ); + } + + if ( ! file_exists( $path_to_config_file ) ) { + return new \WP_Error( 'broke', __( sprintf( 'File %s is not found', $path_to_config_file ) ) ); + } + + $tmp_config = JSON_Util::g()->open_and_decode( $path_to_config_file ); + if ( empty( $tmp_config->slug ) ) { + return new \WP_Error( 'broke', __( 'This plugin need to have a slug', 'eoxia' ) ); + } + + $type = isset( $tmp_config->modules ) ? 'main' : 'module'; + + if ( 'main' === $type ) { + if ( $tmp_config->slug !== $plugin_slug && '' !== $plugin_slug ) { + return new \WP_Error( 'broke', __( sprintf( 'Slug of plugin is not equal main config json file name %s => %s. Set correct slug in the file: %s', $plugin_slug, $tmp_config->slug, $path_to_config_file ), 'eoxia' ) ); + } + } + + if ( ! empty( $plugin_slug ) ) { + if ( ! isset( self::$init[ $plugin_slug ] ) ) { + self::$init[ $plugin_slug ] = $tmp_config; + } else { + $abspath = str_replace( '\\', '/', ABSPATH ); + + $slug = $tmp_config->slug; + $tmp_path = str_replace( '\\', '/', self::$init[ $plugin_slug ]->path ); + $tmp_config->module_path = $tmp_config->path; + + $tmp_config->url = str_replace( $abspath, site_url('/'), $tmp_path . $tmp_config->path ); + $tmp_config->url = str_replace( '\\', '/', $tmp_config->url ); + $tmp_config->path = $tmp_path . $tmp_config->path; + if ( isset( $tmp_config->external ) && ! empty( $tmp_config->external ) ) { + self::$init['external']->$slug = $tmp_config; + } else { + self::$init[ $plugin_slug ]->$slug = $tmp_config; + } + } + } else { + self::$init[ $tmp_config->slug ] = $tmp_config; + } + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-csv-util.php b/core/external/eo-framework/core/util/class-csv-util.php new file mode 100644 index 0000000..d12307e --- /dev/null +++ b/core/external/eo-framework/core/util/class-csv-util.php @@ -0,0 +1,69 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\CSV_Util' ) ) { + + /** + * Méthodes utilitaires pour les fichiers CSV. + */ + class CSV_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Lit un fichier CSV et forme un tableau 2D selon $list_index + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $csv_path Le chemin vers le fichier .csv. + * @param array $list_index Les index personnalisés. + * @return array Le tableau 2D avec les données du csv + * + * @todo: Est-ce utile ? Utilisé par quel plugin ? + */ + public function read_and_set_index( $csv_path, $list_index = array() ) { + if ( empty( $csv_path ) ) { + return false; + } + + $data = array(); + $csv_content = file( $csv_path ); + if ( ! empty( $csv_content ) ) { + foreach ( $csv_content as $key => $line ) { + if ( 0 !== $key ) { + $data[ $key ] = str_getcsv( $line ); + foreach ( $data[ $key ] as $i => $entry ) { + if ( ! empty( $list_index[ $i ] ) ) { + $data[ $key ][ $list_index[ $i ] ] = $entry; + } + } + } + } + } + + return $data; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-date-util.php b/core/external/eo-framework/core/util/class-date-util.php new file mode 100644 index 0000000..10305c7 --- /dev/null +++ b/core/external/eo-framework/core/util/class-date-util.php @@ -0,0 +1,153 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Date_Util' ) ) { + + /** + * Méthodes utilitaires pour les dates. + */ + class Date_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Remplis les champs de type 'wpeo_date'. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param string $current_time Le date envoyé par l'objet. + * @return array { + * Les propriétés + * + * @type array data_input { + * Les propriétés de date_input + * + * @type string date La date au format MySQL + * @type array fr_FR { + * Les propriétés de fr_FR + * + * @type string date La date au format d/m/Y + * @type string date_time La date au format d/m/Y H:i:s + * } + * @type array en_US { + * Les propriétés de en_US + * + * @type string date La date au format m-d-y + * @type string date_time La date au format m-d-y H:i:s + * } + * @type string date_human_readable La date au format lisible. + * } + * } + */ + public function fill_date( $current_time ) { + $data = array(); + + if ( isset ( $current_time['date_input'] ) && $current_time['date_input']['date'] ) { + $current_time = $current_time['date_input']['date']; + } + + $locale = get_locale(); + $date = new \DateTime( $current_time ); + + $data['mysql'] = $current_time; + $data['iso8601'] = mysql_to_rfc3339( $current_time ); + + if ( class_exists( '\IntlDateFormatter' ) ) { + $formatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE ); + $data['date'] = $formatter->format( $date ); + + $formatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::SHORT, \IntlDateFormatter::SHORT ); + $data['date_time'] = $formatter->format( $date ); + + $formatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::NONE, \IntlDateFormatter::SHORT ); + $data['time'] = $formatter->format( $date ); + + $formatter = new \IntlDateFormatter( $locale, \IntlDateFormatter::FULL, \IntlDateFormatter::SHORT ); + $data['date_human_readable'] = \ucwords( $formatter->format( $date ) ); + } else { + $data['date'] = $date->format( 'n/j/Y' ); + $data['date_time'] = $date->format( 'n/j/Y, g:i A' ); + $data['time'] = $date->format( 'g:i A' ); + $data['date_human_readable'] = $date->format( 'l, F j, Y \A\t g:i A' ); + } + + return apply_filters( 'eo_model_fill_date', $data ); + } + + /** + * Renvoie la date au format du WordPress de l'utilisateur. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $date La date à formater. + * @return string La date formatée au format SQL + * + * @todo: Est-ce utile ? + */ + public function mysqldate2wordpress( $date, $with_time = true ) { + $format = get_option( 'date_format' ); + if ( $with_time ) { + $format .= ' ' . get_option( 'time_format' ); + } + + return mysql2date( $format, $date ); + } + + /** + * Convertis les minutes en un format spécial sur 7h = 1 jour. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param integer $min Le nombre de minute. + * @param boolean $display_full_min Si oui, affiches $min entre paranthèse. + * + * @return string La date formatée. + */ + function convert_to_custom_hours( $min, $display_full_min = true ) { + $minut_for_one_day = \eoxia\Config_Util::$init['eo-framework']->hour_equal_one_day * 60; + $day = intval( $min / $minut_for_one_day ); + $sub_min = $min - ( $day * $minut_for_one_day ); + $hour = intval( $sub_min / 60 ); + $clone_min = intval( $sub_min - ( $hour * 60 ) ); + $display = ''; + + // if ( ! empty( $day ) ) { + $display .= $day . 'j '; + // } + // if ( ! empty( $hour ) ) { + $display .= $hour . 'h '; + // } + $display .= $clone_min . 'min'; + if ( $display_full_min ) { + $display .= ' (' . $min . 'min)'; + } + + return $display; + } + + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-external-util.php b/core/external/eo-framework/core/util/class-external-util.php new file mode 100644 index 0000000..c382fd1 --- /dev/null +++ b/core/external/eo-framework/core/util/class-external-util.php @@ -0,0 +1,135 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\External_Util' ) ) { + + /** + * Gestion des externals + */ + class External_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Parcours le fichier digirisk.config.json pour récupérer les chemins vers tous les modules. + * Initialise ensuite un par un, tous ses modules. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin vers le module externe. + * @param string $plugin_slug Le slug principale du plugin dans le fichier principale config.json. + * + * @return WP_Error|bool { + * WP_Error Si le module n'existe pas dans le tableau externals du fichier principale de config.json. + * bool Si aucune erreur s'est produite. + *} + */ + public function exec( $path, $plugin_slug ) { + if ( empty( \eoxia\Config_Util::$init[ $plugin_slug ]->externals ) ) { + return new \WP_Error( 'broke', __( 'Aucun module a charger', $plugin_slug ) ); + } + + if ( ! empty( \eoxia\Config_Util::$init[ $plugin_slug ]->externals ) ) { + foreach ( \eoxia\Config_Util::$init[ $plugin_slug ]->externals as $external_json_path ) { + self::inc_config( $plugin_slug, $path . $external_json_path ); + self::inc( $plugin_slug, $path . $external_json_path ); + } + } + + return true; + } + + /** + * Appelle la méthode init_config de \eoxia\Config_Util pour initialiser les configs du module + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $plugin_slug Le slug du module externe à initialiser. + * @param string $module_json_path Le chemin vers le dossier du module externe. + * + * @return void + */ + public function inc_config( $plugin_slug, $module_json_path ) { + \eoxia\Config_Util::g()->init_config( $module_json_path, $plugin_slug ); + } + + /** + * Inclus les dépendences du module (qui sont défini dans le config.json du module en question) + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $plugin_slug Le slug du module externe à initialiser. + * @param string $module_json_path Le chemin vers le dossier du module externe. + * + * @return void + */ + public function inc( $plugin_slug, $module_json_path ) { + $module_name = basename( $module_json_path, '.config.json' ); + $module_path = dirname( $module_json_path ); + + if ( ! empty( \eoxia\Config_Util::$init['external'] ) ) { + foreach ( \eoxia\Config_Util::$init['external'] as $external_name => $config ) { + if ( ! empty( $config->dependencies ) ) { + foreach ( $config->dependencies as $folder_name => $folder_conf ) { + $path_to_module_and_dependence_folder = $config->path . '/' . $folder_name . '/'; + + if ( ! empty( $folder_conf->priority ) ) { + $this->inc_priority_file( $path_to_module_and_dependence_folder, $folder_name, $folder_conf->priority ); + } + + \eoxia\Include_util::g()->in_folder( $path_to_module_and_dependence_folder ); + } + } + } + } + } + + /** + * Inclus les fichiers prioritaires qui se trouvent dans la clé "priority" dans le .config.json du module + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path_to_module_and_dependence_folder Le chemin vers le module. + * @param string $dependence_folder le chemin vers le dossier à inclure. + * @param array $list_priority_file La liste des chemins des fichiers à inclure en priorité. + * @return void + */ + public function inc_priority_file( $path_to_module_and_dependence_folder, $dependence_folder, $list_priority_file ) { + if ( ! empty( $list_priority_file ) ) { + foreach ( $list_priority_file as $file_name ) { + $path_file = realpath( $path_to_module_and_dependence_folder . $file_name . '.' . $dependence_folder . '.php' ); + + if ( file_exists( $path_file ) ) { + require_once( $path_file ); + } + } + } + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-file-util.php b/core/external/eo-framework/core/util/class-file-util.php new file mode 100644 index 0000000..efd7629 --- /dev/null +++ b/core/external/eo-framework/core/util/class-file-util.php @@ -0,0 +1,75 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\File_Util' ) ) { + + /** + * Gestion des fichiers + */ + class File_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Upload le fichier $file et créer les méta données de ce fichier. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param mixed $file Les données du fichier. + * @param int $element_id L'ID de l'élément pour l'attachement du fichier. + * @return int L'id de l'attachement + */ + public static function move_file_and_attach( $file, $element_id ) { + if ( ! is_string( $file ) || ! is_int( $element_id ) || ! is_file( $file ) ) { + return false; + } + + $wp_upload_dir = wp_upload_dir(); + + // Transfère le thumbnail. + $upload_result = wp_upload_bits( basename( $file ), null, file_get_contents( $file ) ); + + $filetype = wp_check_filetype( basename( $upload_result['file'] ), null ); + /** Set the default values for the current attachement */ + $attachment_default_args = array( + 'guid' => $wp_upload_dir['url'] . '/' . basename( $upload_result['file'] ), + 'post_mime_type' => $filetype['type'], + 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $upload_result['file'] ) ), + 'post_content' => '', + 'post_status' => 'inherit', + ); + + /** Save new picture into database */ + $attach_id = wp_insert_attachment( $attachment_default_args, $upload_result['file'], $element_id ); + + /** Create the different size for the given picture and get metadatas for this picture */ + $attach_data = wp_generate_attachment_metadata( $attach_id, $upload_result['file'] ); + /** Finaly save pictures metadata */ + wp_update_attachment_metadata( $attach_id, $attach_data ); + + return $attach_id; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-include-util.php b/core/external/eo-framework/core/util/class-include-util.php new file mode 100644 index 0000000..ddb558c --- /dev/null +++ b/core/external/eo-framework/core/util/class-include-util.php @@ -0,0 +1,57 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Include_Util' ) ) { + /** + * Gestion des inclusions. + */ + class Include_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Récupères les fichiers dans le dossier $folder_path + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $folder_path Le chemin du dossier. + * @return void + */ + public function in_folder( $folder_path ) { + $list_file_name = scandir( $folder_path ); + + if ( ! empty( $list_file_name ) ) { + foreach ( $list_file_name as $file_name ) { + if ( '.' !== $file_name && '..' !== $file_name && 'index.php' !== $file_name && '.git' !== $file_name && 'README.md' !== $file_name ) { + + $file_path = realpath( $folder_path . $file_name ); + $file_success = require_once( $file_path ); + } + } + } + + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-init-util.php b/core/external/eo-framework/core/util/class-init-util.php new file mode 100644 index 0000000..f7803f3 --- /dev/null +++ b/core/external/eo-framework/core/util/class-init-util.php @@ -0,0 +1,154 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Init_Util' ) ) { + + /** + * Cette classe initialise tous les fichiers config.json + */ + class Init_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Appelles les méthodes read_core_util_file_and_include et init_main_config ainsi que init_module + * + * @param string $path Le chemin absolue vers le plugin. + * @param string $plugin_slug Le slug du plugin (Défini dans votre config.json principale). + * + * @return void + */ + public function exec( $path, $plugin_slug ) { + self::read_core_util_file_and_include( $path, $plugin_slug ); + self::init_main_config( $path, $plugin_slug ); + self::init_external( $path, $plugin_slug ); + Config_Util::$init['main'] = new \stdClass(); + Config_Util::$init['main']->full_plugin_path = $path; + self::init_module( $path, $plugin_slug ); + } + + /** + * Listes la liste des fichiers ".utils" dans le dossier ./core/external/wpeo_util/ + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin du plugin. + * @param string $plugin_slug Le slug principale du plugin défini dans le fichier config.json principale. + * + * @return WP_Error|bool { + * WP_Error Si le module n'existe pas dans le tableau externals du fichier principale de config.json. + * WP_Error Si le fichier n'existe pas + * bool Si aucune erreur s'est produite. + *} + */ + private function read_core_util_file_and_include( $path, $plugin_slug ) { + $path_to_core_folder_util = $path . 'core/util/'; + if ( ! file_exists( $path_to_core_folder_util ) ) { + return new \WP_Error( 'broke', __( 'Impossible de charger les fichiers .utils', $plugin_slug ) ); + } + + if ( ! is_dir( $path_to_core_folder_util ) ) { + return new \WP_Error( 'broke', __( '$path_to_core_folder_util n\'est pas un dossier', $plugin_slug ) ); + } + + $list_file_name = scandir( $path_to_core_folder_util ); + + if ( ! $list_file_name || ! is_array( $list_file_name ) ) { + return new \WP_Error( 'broke', __( 'Impossible de charger les fichiers .utils', $plugin_slug ) ); + } + + if ( ! empty( $list_file_name ) ) { + foreach ( $list_file_name as $file_name ) { + if ( '.' !== $file_name && '..' !== $file_name && 'index.php' !== $file_name && '.git' !== $file_name && 'README.md' !== $file_name ) { + $file_path = realpath( $path_to_core_folder_util . $file_name ); + require_once( $file_path ); + } + } + } + } + + /** + * Appelle la méthode init_config avec le fichier digirisk.config.json + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin du plugin. + * @param string $plugin_slug Le slug principale du plugin défini dans le fichier config.json principale. + * + * @return void + */ + private function init_main_config( $path, $plugin_slug ) { + $main_config_path = $plugin_slug . '.config.json'; + $init_status = \eoxia\Config_Util::g()->init_config( $path . $main_config_path ); + + if ( \is_wp_error( $init_status ) ) { + exit( $init_status->errors['broke'][0] ); + } + + if ( isset( Config_Util::$init[ $plugin_slug ] ) ) { + Config_Util::$init[ $plugin_slug ]->path = $path; + } + } + + /** + * Appel la méthode 'exec' de l'objet 'External_Util' afin d'initialiser les externals. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin du plugin. + * @param string $plugin_slug Le slug principale du plugin défini dans le fichier config.json principale. + * + * @return void + */ + private function init_external( $path, $plugin_slug ) { + if ( empty( Config_Util::$init['external'] ) ) { + Config_Util::$init['external'] = new \stdClass(); + } + + \eoxia\External_Util::g()->exec( $path, $plugin_slug ); + } + + /** + * Appelle la méthode exec_module de \eoxia\Module_Util pour initialiser tous les modules + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin du plugin. + * @param string $plugin_slug Le slug principale du plugin défini dans le fichier config.json principale. + * + * @return void + */ + private function init_module( $path, $plugin_slug ) { + $init_module_status = \eoxia\Module_Util::g()->exec_module( $path, $plugin_slug ); + + if ( \is_wp_error( $init_module_status ) ) { + exit( $init_module_status->errors['broke'][0] ); + } + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-json-util.php b/core/external/eo-framework/core/util/class-json-util.php new file mode 100644 index 0000000..4af07cc --- /dev/null +++ b/core/external/eo-framework/core/util/class-json-util.php @@ -0,0 +1,89 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\JSON_Util' ) ) { + /** + * Méthodes utiles pour les fichiers JSON. + */ + class JSON_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @return void nothing + */ + protected function construct() {} + + /** + * Ouvres et décode le fichier JSON $path_to_json + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path_to_json Le chemin vers le fichier JSON. + * @param string $output Peut être STDCLASS ou ARRAY_A ou ARRAY_N. Défault STDCLASS. + * + * @return array Les données du fichier JSON + */ + public function open_and_decode( $path_to_json, $output = 'STDCLASS' ) { + if ( ! file_exists( $path_to_json ) ) { + return new \WP_Error( 'broke', __( 'Enabled to load JSON file', 'eoxia' ) ); + } + + $config_content = file_get_contents( $path_to_json ); + + if ( 'STDCLASS' === $output ) { + $data = json_decode( $config_content ); + } elseif ( 'ARRAY_A' === $output ) { + $data = json_decode( $config_content, true ); + } + + if ( null === $data && json_last_error() !== JSON_ERROR_NONE ) { + return new \WP_Error( 'broke', __( 'Error in JSON file', 'eoxia' ) ); + } + + return $data; + } + + /** + * Décodes la chaine de caractère $json_to_decode + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $json_to_decode La chaine de caractère JSON. + * @return array Les données décodées + */ + public function decode( $json_to_decode ) { + if ( ! is_string( $json_to_decode ) ) { + return $json_to_decode; + } + + $json_decoded = json_decode( $json_to_decode, true ); + + if ( ! $json_decoded ) { + $json_to_decode = str_replace( '\\', '', $json_to_decode ); + $json_decoded = json_decode( $json_to_decode, true ); + + if ( ! $json_decoded ) { + return $json_to_decode; + } + } + + return $json_decoded; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-log-util.php b/core/external/eo-framework/core/util/class-log-util.php new file mode 100644 index 0000000..04d37d1 --- /dev/null +++ b/core/external/eo-framework/core/util/class-log-util.php @@ -0,0 +1,94 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\LOG_Util' ) ) { + define( 'EO_NOTICE', 'EO_NOTICE' ); + define( 'EO_RESPONSE_ERROR', 'EO_RESPONSE_ERROR' ); + define( 'EO_RESPONSE_SUCCESS', 'EO_RESPONSE_SUCCESS' ); + + /** + * Méthodes utiles pour les logs. + */ + class LOG_Util extends \eoxia\Singleton_Util { + + /** + * Le constructeur est obligatoire pour utiliser la classe \eoxia\Singleton_Util + */ + protected function construct() {} + + /** + * Méthode pour logguer. + * + * @since 1.3.0 + * @version 1.3.0 + * + * @param string $text Votre texte de log. + * @param string $file_name Le nom de votre fichier sans l'extension. + * @param string $level Le niveau d'erreur. Par défaut EO_NOTICE. { + * EO_NOTICE = Pour une informations + * EO_RESPONSE_ERROR = Si la réponse de la requête est une erreur. + * EO_RESPONSE_SUCCESS = Si la réponse de la requête est correcte. + * }. + */ + public static function log( $text, $file_name, $level = EO_NOTICE ) { + $bt = debug_backtrace(); + + if ( empty( $file_name ) ) { + self::log_wp_content( $text, $file_name, $level, $bt ); + } else { + if ( false === ini_get( 'error_log' ) || '' == ini_get( 'error_log' ) ) { + self::log_wp_content( $text, $file_name, $level, $bt ); + } else { + $path = dirname( ini_get( 'error_log' ) ); + + if ( ! is_dir( $path ) ) { + self::log_wp_content( $text, $file_name, $level, $bt ); + } else { + error_log( current_time( '[d-M-Y H:i:s e]' ) . " PHP {$level}: {$text} in " . str_replace( '\\', '/', $bt[0]['file'] ) . " line {$bt[0]['line']}\n", 3, $path . '/' . $file_name . '.log' ); + } + } + } + } + + /** + * Méthode pour loggué dans un fichier dans le dossier 'wp-content/uploads' de WordPress. + * + * @since 1.3.0 + * @version 1.3.0 + * + * @param string $text Votre texte de log. + * @param string $file_name Le nom de votre fichier sans l'extension. + * @param string $level Le niveau d'erreur. Par défaut EO_NOTICE. { + * EO_NOTICE = Pour une informations + * EO_RESPONSE_ERROR = Si la réponse de la requête est une erreur. + * EO_RESPONSE_SUCCESS = Si la réponse de la requête est correcte. + * }. + * @param array $bt Le contexte de débogage. + */ + public static function log_wp_content( $text, $file_name, $level = EO_NOTICE, $bt = array() ) { + if ( empty( $bt ) ) { + $bt = debug_backtrace(); + } + + $wp_upload_dir = wp_upload_dir(); + $file = fopen( $wp_upload_dir['path'] . '/' . $file_name . '.log', 'a' ); + fwrite( $file, current_time( '[d-M-Y H:i:s e]' ) . " PHP {$level}: {$text} in " . str_replace( '\\', '/', $bt[0]['file'] ) . " line {$bt[0]['line']}\n" ); + fclose( $file ); + } + } + +} // End if(). diff --git a/core/external/eo-framework/core/util/class-module-util.php b/core/external/eo-framework/core/util/class-module-util.php new file mode 100644 index 0000000..b843532 --- /dev/null +++ b/core/external/eo-framework/core/util/class-module-util.php @@ -0,0 +1,181 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Module_Util' ) ) { + /** + * Gestion des modules + */ + class Module_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Parcours le fichier digirisk.config.json pour récupérer les chemins vers tous les modules. + * Initialise ensuite un par un, tous ses modules. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path Le chemin vers le module externe. + * @param string $plugin_slug Le slug principale du plugin dans le fichier principale config.json. + * + * @return \WP_Error|boolean { + * WP_Error Si le fichier est inexistant ou si le plugin n'a pas de submodule. + * boolean True si aucune erreur s'est produite. + *}. + */ + public function exec_module( $path, $plugin_slug ) { + if ( empty( \eoxia\Config_Util::$init[ $plugin_slug ] ) ) { + return new \WP_Error( 'broke', sprintf( __( 'Main config %s not init', $plugin_slug ), $plugin_slug ) ); + } + + if ( ! empty( \eoxia\Config_Util::$init[ $plugin_slug ]->modules ) ) { + foreach ( \eoxia\Config_Util::$init[ $plugin_slug ]->modules as $module_json_path ) { + self::inc_config_module( $plugin_slug, $path . $module_json_path ); + self::inc_module( $plugin_slug, $path . $module_json_path ); + } + } + } + + /** + * Appelle la méthode init_config de \eoxia\Config_Util pour initialiser les configs du module + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $plugin_slug Le slug du module externe à initialiser. + * @param string $module_json_path Le chemin vers le dossier du module externe. + * + * @return void + */ + public function inc_config_module( $plugin_slug, $module_json_path ) { + $init_status = \eoxia\Config_Util::g()->init_config( $module_json_path, $plugin_slug ); + + if ( \is_wp_error( $init_status ) ) { + exit( $init_status->errors['broke'][0] ); + } + + } + + /** + * Inclus les dépendences du module (qui sont défini dans le config.json du module en question) + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $plugin_slug Le slug du module externe à initialiser. + * @param string $module_json_path Le chemin vers le dossier du module externe. + * + * @return void + */ + public function inc_module( $plugin_slug, $module_json_path ) { + $module_name = basename( $module_json_path, '.config.json' ); + $module_path = dirname( $module_json_path ); + + if ( 'eo-framework' !== $plugin_slug ) { + if ( ! isset( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name ) ) { + exit( __( sprintf( '%s not exists. You need to check: 1. The folder name and file name.config.json is equal at the slug name in config.', $module_name ) ) ); + } + } + + if ( ! isset( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->state ) || ( isset( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->state ) && \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->state ) ) { + if ( ! empty( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->dependencies ) ) { + $can_inc = true; + + // Vérification de la dépendence d'inclusion. + if ( ! empty( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->dependencies_func ) ) { + if ( ! empty( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->dependencies_func ) ) { + foreach ( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->dependencies_func as $element ) { + if ( ! call_user_func( $element ) ) { + $can_inc = false; + break; + } + } + } + } + + if ( $can_inc ) { + foreach ( \eoxia\Config_Util::$init[ $plugin_slug ]->$module_name->dependencies as $dependence_folder => $list_option ) { + $path_to_module_and_dependence_folder = $module_path . '/' . $dependence_folder . '/'; + + if ( ! empty( $list_option->priority ) ) { + $this->inc_priority_file( $path_to_module_and_dependence_folder, $dependence_folder, $list_option->priority ); + } + + \eoxia\Include_util::g()->in_folder( $path_to_module_and_dependence_folder ); + } + } + } + } + } + + /** + * Inclus les fichiers prioritaires qui se trouvent dans la clé "priority" dans le .config.json du module + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $path_to_module_and_dependence_folder Le chemin vers le module. + * @param string $dependence_folder le chemin vers le dossier à inclure. + * @param array $list_priority_file La liste des chemins des fichiers à inclure en priorité. + * @return void nothing + */ + public function inc_priority_file( $path_to_module_and_dependence_folder, $dependence_folder, $list_priority_file ) { + if ( ! empty( $list_priority_file ) ) { + foreach ( $list_priority_file as $file_name ) { + $path_file = realpath( $path_to_module_and_dependence_folder . $file_name ); + + require_once( $path_file ); + } + } + } + + /** + * Désactives ou actives un module + * + * @since 1.2.0 + * @version 1.2.0 + * + * @param string $namespace Le SLUG principale de lu plugin. + * @param string $slug Le SLUG du module en question. + * @param bool $state true ou false. + */ + public function set_state( $namespace, $slug, $state ) { + $path_to_json = \eoxia\Config_Util::$init[ $namespace ]->$slug->path . '/' . $slug . '.config.json'; + + $json_content = \eoxia\JSON_Util::g()->open_and_decode( $path_to_json ); + $json_content->state = $state; + $json_content = json_encode( $json_content, JSON_PRETTY_PRINT ); + $json_content = preg_replace_callback( '/\\\\u([0-9a-f]{4})/i', function ( $matches ) { + $sym = mb_convert_encoding( pack( 'H*', $matches[1] ), 'UTF-8', 'UTF-16' ); + return $sym; + }, $json_content ); + + $file = fopen( $path_to_json, 'w+' ); + fwrite( $file, str_replace( '\/', '/', $json_content ) ); + fclose( $file ); + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-post-util.php b/core/external/eo-framework/core/util/class-post-util.php new file mode 100644 index 0000000..22a1f15 --- /dev/null +++ b/core/external/eo-framework/core/util/class-post-util.php @@ -0,0 +1,78 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Post_Util' ) ) { + /** + * Gestion des posts + */ + class Post_Util extends \eoxia\Singleton_Util { + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Est ce que le post est un parent des enfants ? + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param int $parent_id (test: 10) L'id du post parent. + * @param int $children_id (test: 11) L'id du post enfant. + * + * @return bool true|false + */ + public static function is_parent( $parent_id, $children_id ) { + $list_parent_id = get_post_ancestors( $children_id ); + if ( ! empty( $list_parent_id ) && in_array( $parent_id, $list_parent_id, true ) ) { + return true; + } + return false; + } + + /** + * Vérifie si le post contient un enfant. + * + * @since 0.5.0 + * @version 1.0.0 + * + * @param integer $parent_id L'ID du post. + * @param array $post_types Les post types à rechercher. + * + * @return boolean + */ + public static function have_child( $parent_id, $post_types ) { + $child = get_children(array( + 'numberposts' => 1, + 'post_parent' => $parent_id, + 'post_type' => $post_types, + 'output' => 'ARRAY_A', + ) ); + + if ( ! empty( $child ) ) { + return true; + } + + return false; + } + } +} diff --git a/core/external/eo-framework/core/util/class-singleton-util.php b/core/external/eo-framework/core/util/class-singleton-util.php new file mode 100644 index 0000000..ac924b8 --- /dev/null +++ b/core/external/eo-framework/core/util/class-singleton-util.php @@ -0,0 +1,70 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Singleton_Util' ) ) { + /** + * Le singleton + */ + abstract class Singleton_Util { + /** + * L'instance courant du singleton + * + * @var \eoxia\Singleton_Util + */ + protected static $instance; + + /** + * Appelle le constructeur parent + * + * @since 0.1.0 + * @version 1.0.0 + */ + protected final function __construct() { + $this->construct(); + } + + /** + * Le constructeur pour les enfants + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + abstract protected function construct(); + + /** + * Récupères l'instance courante + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return \eoxia\Singleton_Util L'instance courante + */ + final public static function g() { + if ( ! isset( self::$instance ) || get_called_class() !== get_class( self::$instance ) ) { + $class_name = get_called_class(); + $new_instance = new $class_name(); + // extending classes can set $instance to any value, so check to make sure it's still unset before giving it the default value. + if ( ! isset( self::$instance ) || get_called_class() !== get_class( self::$instance ) ) { + self::$instance = $new_instance; + } + } + return self::$instance; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-view-util.php b/core/external/eo-framework/core/util/class-view-util.php new file mode 100644 index 0000000..dd32428 --- /dev/null +++ b/core/external/eo-framework/core/util/class-view-util.php @@ -0,0 +1,63 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\View_Util' ) ) { + /** + * Gestion des vues pour les templates. + */ + class View_Util extends Singleton_Util { + + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Appelle la vue avec les paramètres extrait de $args. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $namespace Le slug du plugin (Défini dans votre config.json principale). + * @param string $module_name Le nom du module. + * @param string $view_path_without_ext Le chemin vers le fichier à partir du dossier "view" du module. + * @param array $args Les données à transmettre à la vue. Défaut array(). + * @param bool $filter Utilisation d'un filtre ou pas. Permet d'ajouter des paramètres au template. + * + * @return void + */ + public static function exec( $namespace, $module_name, $view_path_without_ext, $args = array(), $filter = true ) { + $path_to_view = Config_Util::$init[ $namespace ]->$module_name->path . '/view/' . $view_path_without_ext . '.view.php'; + + if ( $filter ) { + $args = apply_filters( $module_name . '_' . $view_path_without_ext, $args, $module_name, $view_path_without_ext ); + } + extract( $args ); + + if ( file_exists( $path_to_view ) ) { + require( $path_to_view ); + } else { + + } + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/class-zip-util.php b/core/external/eo-framework/core/util/class-zip-util.php new file mode 100644 index 0000000..2116a20 --- /dev/null +++ b/core/external/eo-framework/core/util/class-zip-util.php @@ -0,0 +1,76 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\Util + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\ZIP_Util' ) ) { + /** + * Gestion des fichiers ZIP + */ + class ZIP_Util extends \eoxia\Singleton_Util { + + /** + * Le constructeur obligatoirement pour utiliser la classe \eoxia\Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() {} + + /** + * Dézippes l'archive $zip_path dans $destination_path + * Retournes tous les noms des fichiers contenus dans l'archive + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param string $zip_path Le chemin vers l'archive. + * @param string $destination_path Le chemin d'extraction des fichiers. + * @return array { + * Les propriétés du tableau retourné. + * + * @type boolean state True ou False. + * @type array $list_file Contenant plusieurs index avec le nom des fichiers dézippés. + * } + */ + public function unzip( $zip_path, $destination_path ) { + $zip = new \ZipArchive; + $data = array( 'state' => true, 'list_file' => array() ); + + if ( $zip->open( $zip_path ) === true ) { + if ( ! $zip->extractTo( $destination_path ) ) { + $data['state'] = false; + } + + // Récupérations de tous les fichiers. + for ( $i = 0; $i < $zip->numFiles; $i++ ) { + $filename = $zip->getNameIndex( 0 ); + + if ( isset( $filename ) ) { + $data['list_file'][] = $filename; + } + } + + $zip->close(); + } else { + $data['state'] = false; + } + + return $data; + } + } +} // End if(). diff --git a/core/external/eo-framework/core/util/index.php b/core/external/eo-framework/core/util/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/core/util/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\View + */ + +namespace digi; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +Annuler +Valider diff --git a/core/external/eo-framework/core/view/modal-title.view.php b/core/external/eo-framework/core/view/modal-title.view.php new file mode 100644 index 0000000..6a51566 --- /dev/null +++ b/core/external/eo-framework/core/view/modal-title.view.php @@ -0,0 +1,18 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\View + */ + +namespace digi; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +Défaut modal titre diff --git a/core/external/eo-framework/core/view/modal.view.php b/core/external/eo-framework/core/view/modal.view.php new file mode 100644 index 0000000..b499559 --- /dev/null +++ b/core/external/eo-framework/core/view/modal.view.php @@ -0,0 +1,34 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\Core\View + */ + +namespace digi; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + + diff --git a/core/external/eo-framework/eo-framework.config.json b/core/external/eo-framework/eo-framework.config.json new file mode 100644 index 0000000..d7d1333 --- /dev/null +++ b/core/external/eo-framework/eo-framework.config.json @@ -0,0 +1,23 @@ +{ + "name": "EO Framework", + "slug": "eo-framework", + "version": "1.0.0", + "description": "L'application EO Framework", + "externals": [], + "modules": [ + "core/core.config.json", + + "modules/wpeo-custom-menu/wpeo_custom_menu.config.json", + "modules/wpeo-update-manager/wpeo_update_manager.config.json", + "modules/wpeo-model/wpeo_model.config.json", + "modules/wpeo-upload/wpeo_upload.config.json", + "modules/wpeo-search/wpeo_search.config.json", + "modules/wpeo-odt/wpeo_odt.config.json" + ], + "debug": false, + "hour_equal_one_day": 24, + "not__in_display_comment": [ + "ping", + "" + ] +} diff --git a/core/external/eo-framework/eo-framework.php b/core/external/eo-framework/eo-framework.php new file mode 100644 index 0000000..78f0458 --- /dev/null +++ b/core/external/eo-framework/eo-framework.php @@ -0,0 +1,23 @@ +exec( PLUGIN_EO_FRAMEWORK_PATH, basename( __FILE__, '.php' ) ); +} diff --git a/core/external/eo-framework/gulpfile.js b/core/external/eo-framework/gulpfile.js new file mode 100644 index 0000000..f8b2ca7 --- /dev/null +++ b/core/external/eo-framework/gulpfile.js @@ -0,0 +1,77 @@ +'use strict'; + +var gulp = require('gulp'); +var watch = require('gulp-watch'); +var concat = require('gulp-concat'); +var sass = require('gulp-sass'); +var rename = require('gulp-rename'); +var autoprefixer = require('gulp-autoprefixer'); +var lec = require('gulp-line-ending-corrector'); + +var paths = { + scss: ['core/assets/css/scss/**/*.scss', 'core/assets/css/'], + js: ['core/assets/js/init.js', 'core/assets/js/*.lib.js'], + scss_wpeo_update_manager: ['modules/wpeo-update-manager/assets/css/scss/**/*.scss', 'modules/wpeo-update-manager/assets/css/'], + scss_wpeo_upload: ['modules/wpeo-upload/assets/css/scss/**/*.scss', 'modules/wpeo-upload/assets/css/'], +}; + +// SCSS Core +gulp.task( 'build_scss', function() { + return gulp.src( paths.scss[0] ) + .pipe( sass( { 'outputStyle': 'expanded' } ).on( 'error', sass.logError ) ) + .pipe( autoprefixer({ + browsers: ['last 2 versions'], + cascade: false + }) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss[1] ) ) + .pipe( sass({outputStyle: 'compressed'}).on( 'error', sass.logError ) ) + .pipe( rename( './style.min.css' ) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss[1] ) ); +}); + +// SCSS Wpeo Update Manager +gulp.task( 'build_scss_wpeo_update_manager', function() { + return gulp.src( paths.scss_wpeo_update_manager[0] ) + .pipe( sass( { 'outputStyle': 'expanded' } ).on( 'error', sass.logError ) ) + .pipe( autoprefixer({ + browsers: ['last 2 versions'], + cascade: false + }) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss_wpeo_update_manager[1] ) ) + .pipe( sass({outputStyle: 'compressed'}).on( 'error', sass.logError ) ) + .pipe( rename( './style.min.css' ) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss_wpeo_update_manager[1] ) ); +}); + +// SCSS Wpeo Upload +gulp.task( 'build_scss_wpeo_upload', function() { + return gulp.src( paths.scss_wpeo_upload[0] ) + .pipe( sass( { 'outputStyle': 'expanded' } ).on( 'error', sass.logError ) ) + .pipe( autoprefixer({ + browsers: ['last 2 versions'], + cascade: false + }) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss_wpeo_upload[1] ) ) + .pipe( sass({outputStyle: 'compressed'}).on( 'error', sass.logError ) ) + .pipe( rename( './style.min.css' ) ) + .pipe(lec({verbose:true, eolc: 'CRLF', encoding:'utf8'})) + .pipe( gulp.dest( paths.scss_wpeo_upload[1] ) ); +}); + +gulp.task('build_js', function() { + return gulp.src(paths.js) + .pipe(concat('wpeo-assets.js')) + .pipe(gulp.dest('js/dest/')) +}) + +gulp.task( 'default', function() { + gulp.watch( paths.scss[0], gulp.series('build_scss') ); + gulp.watch( paths.scss_wpeo_update_manager[0], gulp.series('build_scss_wpeo_update_manager') ); + gulp.watch( paths.scss_wpeo_upload[0], gulp.series('build_scss_wpeo_upload') ); + gulp.watch( paths.js, gulp.series('build_js') ); +}); diff --git a/core/external/eo-framework/index.php b/core/external/eo-framework/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2016-2019 Eoxia + * @package EO_Framework\WPEO_Custom_Menu\Action + */ + +namespace eoxia; + + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Custom_Menu_Action' ) ) { + /** + * Actions for wpeo_custom_menu. + */ + class Custom_Menu_Action { + + /** + * Declare Actions. + * + * @since 1.0.0 + */ + public function __construct() { + add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); + add_action( 'wp_ajax_save_menu_state', array( $this, 'save_menu_state' ) ); + + add_action( 'admin_menu', array( $this, 'add_others' ), 99 ); + } + + /** + * Load CSS and JS. + * + * @since 1.0.0 + */ + public function callback_admin_scripts() { + $page = ( ! empty( $_REQUEST['page'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['page'] ) ) : ''; // WPCS: input var ok, CSRF ok. + if ( in_array( $page, \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->inserts_page, true ) ) { + wp_enqueue_style('wpeo_custom_menu_style', \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->url . '/asset/css/wpeo-custom-menu.css', array()); + wp_enqueue_script('wpeo_custom_menu_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->url . '/asset/js/wpeo-custom-menu.js', array('jquery'), \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->version); + } + } + + public function save_menu_state() { + $minimize_menu = get_user_meta( get_current_user_id(), '_eo_menu_minimize', true ); + $minimize_menu = empty( $minimize_menu ) ? false : $minimize_menu; + + $minimize_menu = ! $minimize_menu; + + update_user_meta( get_current_user_id(), '_eo_menu_minimize', $minimize_menu ); + wp_send_json_success(); + } + + public function add_others() { + Custom_Menu_Handler::register_menu( 'others', __( 'Go to WP Admin' ), __( 'Go to WP Admin' ), 'read', 'go-to-wp-admin', '', 'fa fa-tachometer-alt', 'bottom' ); + Custom_Menu_Handler::$menus['others']['items']['go-to-wp-admin']->link = admin_url( 'index.php' ); + + $minimize_menu = get_user_meta( get_current_user_id(), '_eo_menu_minimize', true ); + $minimize_menu = empty( $minimize_menu ) ? false : true; + $icon_minimize = $minimize_menu ? 'fa fa-arrow-right' : 'fa fa-arrow-left'; + + Custom_Menu_Handler::register_menu( 'others', __( 'Minimize menu' ), __( 'Minimize menu' ), 'read', 'minimize-menu', '', $icon_minimize, 'bottom' ); + Custom_Menu_Handler::$menus['others']['items']['minimize-menu']->link = '#'; + Custom_Menu_Handler::$menus['others']['items']['minimize-menu']->class .= ' minimize-menu action-attribute '; + Custom_Menu_Handler::$menus['others']['items']['minimize-menu']->additional_attrs .= 'data-action=save_menu_state'; + } + } + + new Custom_Menu_Action(); +} diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/action/index.php b/core/external/eo-framework/modules/wpeo-custom-menu/action/index.php new file mode 100644 index 0000000..e69de29 diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/asset/css/wpeo-custom-menu.css b/core/external/eo-framework/modules/wpeo-custom-menu/asset/css/wpeo-custom-menu.css new file mode 100644 index 0000000..68075b8 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/asset/css/wpeo-custom-menu.css @@ -0,0 +1,210 @@ +/*.eo-custom-page #adminmenuwrap,*/ +/*.eo-custom-page #wpadminbar,*/ +/*.eo-custom-page #adminmenumain,*/ +/*.eo-custom-page #screen-meta-links,*/ +/*.eo-custom-page #wpfooter {*/ +/* display: none !important;*/ +/*}*/ + +/*.eo-custom-page #wpcontent {*/ +/* margin-left: 0 !important;*/ +/* padding-left: 0;*/ +/*}*/ + +/*.eo-custom-page .content-wrap {*/ +/* -webkit-transition: margin-left 0.2s ease-in;*/ +/* transition: margin-left 0.2s ease-in;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap {*/ +/* background: #1c1d1b;*/ +/* width: 200px;*/ +/* position: fixed;*/ +/* left: 0;*/ +/* top: 0;*/ +/* bottom: 0px;*/ +/* -webkit-transition: width 0.2s ease-in;*/ +/* transition: width 0.2s ease-in;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap #logo {*/ +/* height: 130px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce {*/ +/* width: 50px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu {*/ +/* width: 50px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu a {*/ +/* width: 50px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu a span {*/ +/* display: none;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu a div {*/ +/* padding-left: 16px;*/ +/* text-align: center;*/ +/* margin: auto;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu a i {*/ +/* margin: auto;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce .nav-menu a img {*/ +/* margin: auto;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap.wrap-reduce #logo {*/ +/* height: 40px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap #logo h1 {*/ +/* height: inherit;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap #logo a {*/ +/* height: inherit;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap #logo img {*/ +/* height: inherit;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap #logo {*/ +/* -webkit-transition: width 0.2s ease-in;*/ +/* transition: width 0.2s ease-in;*/ +/* margin: auto;*/ +/* text-align: center;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu {*/ +/* -webkit-transition: width 0.2s ease-in;*/ +/* transition: width 0.2s ease-in;*/ +/* overflow: hidden;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item {*/ +/* -webkit-transition: width 0.2s ease-in;*/ +/* transition: width 0.2s ease-in;*/ +/* display: block;*/ +/* -webkit-transition: background .1s ease,box-shadow .1s ease,color .1s ease;*/ +/* transition: background .1s ease,box-shadow .1s ease,color .1s ease;*/ +/* text-decoration: none;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item:before {*/ +/* position: absolute;*/ +/* content: '';*/ +/* width: 100%;*/ +/* height: 1px;*/ +/* background: rgba(255, 255, 255, 0.08);*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item:hover {*/ +/* background: rgba(255, 255, 255, 0.15);*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item div {*/ +/* padding: 16px;*/ +/* padding-left: 20px;*/ +/* font-size: 1.05em;*/ +/* display: block;*/ +/* color: #eee;*/ +/* text-decoration: none;*/ +/* font-weight: bolder;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item div.disabled {*/ +/* background: rgba(0, 0, 0, 0.5);*/ +/* opacity: 0.4;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item.item-active {*/ +/* background: rgba(255, 255, 255, 0.15);*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item i {*/ +/* margin-right: 10px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu .item img {*/ +/* margin-right: 10px;*/ +/* height: 13px;*/ +/*}*/ + +/*.eo-custom-page .nav-wrap .nav-menu.nav-bottom {*/ +/* color: red;*/ +/* display: block;*/ +/* position: absolute;*/ +/* width: 200px;*/ +/* bottom: 0;*/ +/*}*/ + +/*.eo-custom-page .content-wrap {*/ +/* background: #fafafa;*/ +/* margin-left: 200px;*/ +/*}*/ +/*.eo-custom-page .content-wrap.content-reduce {*/ +/* margin-left: 50px;*/ +/*}*/ + +/*.eo-custom-page .content-wrap .digirisk-wrap {*/ +/* padding-left: 20px;*/ +/*}*/ + +/*.eo-custom-page .content-wrap .digirisk-wrap.wrap {*/ +/* margin-right: 0;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header {*/ +/* background-color: white;*/ +/* border-bottom: solid black 2px;*/ +/* min-height: 60px;*/ +/* !** Bouton Ajouter dans le header *!*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .nav-header {*/ +/* margin: 0;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .nav-right {*/ +/* line-height: 50px;*/ +/* font-size: 1.2em;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .nav-right li img {*/ +/* vertical-align: middle;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .page-title {*/ +/* margin: 0;*/ +/* font-size: 2em;*/ +/* padding-top: 20px;*/ +/* padding-left: 20px;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .wpeo-button {*/ +/* margin-top: 12px;*/ +/* margin-left: 20px;*/ +/*}*/ + +/*.eo-custom-page .content-wrap #top-header .alignright {*/ +/* padding-right: 20px;*/ +/* margin: 0;*/ +/*}*/ + +/*.eo-custom-page .content-wrap .wrap-frais-pro {*/ +/* padding-right: 0;*/ +/* padding-left: 20px;*/ +/*}*/ + +/*html.wp-toolbar {*/ +/* padding-top: 0;*/ +/*}*/ diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/asset/js/wpeo-custom-menu.js b/core/external/eo-framework/modules/wpeo-custom-menu/asset/js/wpeo-custom-menu.js new file mode 100644 index 0000000..6790d6f --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/asset/js/wpeo-custom-menu.js @@ -0,0 +1,55 @@ +var eoMenu = { + $, + + init: function( $ ) { + eoMenu.$ = $; + eoMenu.event(); + }, + + event: function() { + eoMenu.$( document ).on( 'click', '.nav-wrap .minimize-menu', eoMenu.handleMinimizeMenu ); + + + eoMenu.$( document ).on( 'click', '.current-site .wpeo-dropdown .dropdown-toggle', eoMenu.focusHeaderSearch ); + eoMenu.$( document ).on( 'keyup', '.search-item input', eoMenu.searchItems ); + + eoMenu.$( document ).on( 'click', '.wpeo-screen-options .button-main', eoMenu.toggleScreenOptions ); + }, + + handleMinimizeMenu: function (event) { + if (eoMenu.$(this).find('i').hasClass('fa-arrow-left')) { + eoMenu.$('.nav-wrap').addClass('wrap-reduce'); + eoMenu.$('.content-wrap').addClass('content-reduce'); + eoMenu.$(this).find('i').removeClass('fa-arrow-left').addClass('fa-arrow-right'); + } else { + eoMenu.$('.nav-wrap').removeClass('wrap-reduce'); + eoMenu.$('.content-wrap').removeClass('content-reduce'); + eoMenu.$(this).find('i').addClass('fa-arrow-left').removeClass('fa-arrow-right'); + } + + event.preventDefault(); + }, + + + focusHeaderSearch: function (event) { + jQuery( '.current-site .search-item input').focus() + }, + + searchItems: function (event) { + var sites = jQuery( '#top-header .dropdown-sites a' ); + + sites.show(); + + for ( var i = 0; i < sites.length; i++ ) { + if ( jQuery( sites[i] ).text().toLowerCase().indexOf( jQuery( this ).val().toLowerCase() ) == -1 ) { + jQuery( sites[i] ).hide(); + } + } + }, + + toggleScreenOptions: function( event ) { + jQuery( this ).closest( '.wpeo-screen-options' ).find( '.content' ).slideToggle(); + } +}; + +jQuery( document ).ready(eoMenu.init); diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu-handler.php b/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu-handler.php new file mode 100644 index 0000000..aed77e6 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu-handler.php @@ -0,0 +1,130 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2016-2019 Eoxia + * @package EO_Framework\WPEO_Custom_Menu\Class + */ + +namespace eoxia; + +use eoxia\Custom_Menu_Handler as CMH; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Custom_Menu_Handler' ) ) { + + /** + * Class wpeo_custom_menu. + */ + class Custom_Menu_Handler + { + private static $_instance = null; + + /** + * List of Menu. + * + * @since 1.0.0 + */ + public static $menus = array(); + + public static function getInstance() { + if(is_null(self::$_instance)) { + self::$_instance = new Custom_Menu_Handler(); + } + + return self::$_instance; + } + + public static function add_logo( $parent_slug, $logo_src, $logo_url ) { + self::$menus[ $parent_slug ]['logo'] = array( + 'src' => $logo_src, + 'url' => $logo_url, + ); + } + + public static function register_container( $page_title, $menu_title, $capability, $menu_slug ) { + add_menu_page( $page_title, $menu_title, $capability, $menu_slug ); + } + + /** + * Register a menu. + * + * @param string $name Menu Name, ID. + * @param Class_Custom_Menu $menu Menu definition. + * + * @since 1.0.0 + */ + public static function register_menu( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '', $fa_class = '', $position = null ) { + $menu_wp = add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, array( self::getInstance(), 'display' ) ); + + $menu = null; + + $menu = new Custom_Menu_Class($page_title, $menu_title, $capability, $menu_slug, $function, $fa_class, $position); + + self::$menus[$parent_slug]['items'][$menu_slug] = apply_filters('eo_custom_menu_' . $parent_slug . '_' . $menu_slug, $menu); + self::$menus[$parent_slug]['items'][$menu_slug]->wp = $menu_wp; + self::$menus[$parent_slug]['position'] = $position; + + \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->inserts_page[] = $menu_slug; + + return $menu; + } + + public static function register_others_menu( $parent_slug, $other_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '', $fa_class = '', $position = null ) { + $menu = self::register_menu($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function, $fa_class, $position); + $menu->other_slug = $other_slug; + } + + public function display() { + $this->display_nav(); + $this->display_content(); + } + + public function display_nav() { + global $current_screen; + + $menus = array(); + + $menus[ $current_screen->parent_base ] = self::$menus[ $current_screen->parent_base ]; + $menus['others'] = self::$menus['others']; + + foreach ( $menus['others']['items'] as $key => $menu ) { + if ( isset( $menu->other_slug ) && $menu->other_slug !== $current_screen->parent_base ) { + unset( $menus['others']['items'][ $key ] ); + } + } + + $logo_url = $menus[ $current_screen->parent_base ]['logo']['url']; + $logo_src = $menus[ $current_screen->parent_base ]['logo']['src']; + + require_once PLUGIN_EO_FRAMEWORK_PATH . '/modules/wpeo-custom-menu/view/nav.view.php'; + } + + public function display_content() { + global $current_screen; + + $current_user = wp_get_current_user(); + + $parent_menu = $current_screen->parent_base; + $page = $_GET['page']; + + $menu = self::$menus[ $parent_menu ]['items'][ $page ]; + + require_once PLUGIN_EO_FRAMEWORK_PATH . '/modules/wpeo-custom-menu/view/content.view.php'; + } + + public function display_screen_option() { + $current_screen = get_current_screen(); + + if ( ! empty( $current_screen->get_options() ) ) { + require_once PLUGIN_EO_FRAMEWORK_PATH . '/modules/wpeo-custom-menu/view/screen-options.view.php'; + } + } + } +} diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu.php b/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu.php new file mode 100644 index 0000000..f490450 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/class/class-custom-menu.php @@ -0,0 +1,63 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2016-2019 Eoxia + * @package EO_Framework\WPEO_Custom_Menu\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Custom_Menu_Class' ) ) { + + /** + * Class wpeo_custom_menu. + */ + class Custom_Menu_Class { + + public $page_title; + public $menu_title; + public $capability; + public $menu_slug; + public $function; + public $icon_url; + public $class; + public $link; + public $additional_attrs; + public $other_slug; + + /** + * Position of menu. + * + * $type string + * + * @since 1.0.0 + * + * Can Be top or bottom. Default is top. + */ + public $position = 'top'; + + /** + * Init. + * + * @since 1.0.0 + */ + public function __construct( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) { + $this->page_title = $page_title; + $this->menu_title = $menu_title; + $this->capability = $capability; + $this->menu_slug = $menu_slug; + $this->function = $function; + $this->link = admin_url( 'admin.php?page=' . $menu_slug ); + $this->icon_url = $icon_url; + $this->position = $position; + } + } +} diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/filter/class-custom-menu-filter.php b/core/external/eo-framework/modules/wpeo-custom-menu/filter/class-custom-menu-filter.php new file mode 100644 index 0000000..73519e8 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/filter/class-custom-menu-filter.php @@ -0,0 +1,84 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2016-2019 Eoxia + * @package EO_Framework\WPEO_Custom_Menu\Action + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Custom_Menu_Filter' ) ) { + /** + * Filters for wpeo_custom_menu. + */ + class Custom_Menu_Filter { + + /** + * Declare Filters. + * + * @since 1.0.0 + */ + public function __construct() { + add_filter( 'admin_body_class', array( $this, 'custom_body_class' ) ); + + add_filter( 'eoxia_main_header_ul_after', array( $this, 'add_header_multisite' ) ); + } + + public function custom_body_class( $classes ) { + $page = ( ! empty( $_REQUEST['page'] ) ) ? sanitize_text_field( wp_unslash( $_REQUEST['page'] ) ) : ''; // WPCS: input var ok, CSRF ok. + if ( in_array( $page, \eoxia\Config_Util::$init['eo-framework']->wpeo_custom_menu->inserts_page, true ) ) { + $classes .= " eo-custom-page "; + } + + return $classes; + } + + public function add_header_multisite( $content ) { + if ( is_multisite() ) { + $current_site = get_blog_details(get_current_blog_id()); + + $sites = get_sites(); + + usort($sites, function ($a, $b) { + $al = strtolower($a->blogname); + $bl = strtolower($b->blogname); + + if ($al == $bl) { + return 0; + } + return ($al > $bl) ? +1 : -1; + }); + + if (!empty($sites)) { + foreach ($sites as $key => $site) { + if (!is_super_admin(get_current_user_id()) && + ($site->blog_id == $current_site->blog_id + || empty(get_user_meta(get_current_user_id(), 'wp_' . $site->blog_id . '_user_level', true)))) { + unset($sites[$key]); + } else { + $sites[$key]->site_info = get_blog_details($sites[$key]->blog_id); + } + } + } + + $page = ! empty( $_GET['page'] ) ? sanitize_text_field( $_GET['page'] ) : ''; + + ob_start(); + require(PLUGIN_EO_FRAMEWORK_PATH . 'modules/wpeo-custom-menu/view/header-multisite.view.php'); + $content .= ob_get_clean(); + } + + return $content; + } + } + + new Custom_Menu_Filter(); +} diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/filter/index.php b/core/external/eo-framework/modules/wpeo-custom-menu/filter/index.php new file mode 100644 index 0000000..e69de29 diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/view/content.view.php b/core/external/eo-framework/modules/wpeo-custom-menu/view/content.view.php new file mode 100644 index 0000000..b8acad1 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/view/content.view.php @@ -0,0 +1,43 @@ + + * @copyright (c) 2006-2018 Evarisk . + * + * @license AGPLv3 + * + * @package DigiRisk\Templates + * + * @since 6.0.0 + */ + +namespace eoxia; + +use eoxia\Custom_Menu_Handler as CMH; + +defined( 'ABSPATH' ) || exit; + +$minimize_menu = get_user_meta( get_current_user_id(), '_eo_menu_minimize', true ); +$minimize_menu = empty( $minimize_menu ) ? false : $minimize_menu; +?> + +
    + + +
    + display_screen_option(); + + if ( is_array( $menu->function[0] ) ) { + call_user_func(array($menu->function[0], $menu->function[1])); + } else { + call_user_func($menu->function); + } + ?> +
    +
    diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/view/header-multisite.view.php b/core/external/eo-framework/modules/wpeo-custom-menu/view/header-multisite.view.php new file mode 100644 index 0000000..f0f386d --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/view/header-multisite.view.php @@ -0,0 +1,46 @@ + + * @since 0.3.0 + * @copyright 2015-2019 Evarisk + * @package DigiRiskDashboard + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; +if ( count( $sites ) === 0 ) : + ?> +
  • + blogname; ?> +
  • + +
  • + +
  • + + * @since 1.0.0 + * @copyright 2015-2019 Eoxia + * @package Eoxia + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; ?> + +
    + + + + + + + + + + +
    diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/view/index.php b/core/external/eo-framework/modules/wpeo-custom-menu/view/index.php new file mode 100644 index 0000000..e69de29 diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/view/nav.view.php b/core/external/eo-framework/modules/wpeo-custom-menu/view/nav.view.php new file mode 100644 index 0000000..17f7829 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/view/nav.view.php @@ -0,0 +1,103 @@ + + * @since 1.0.0 + * @copyright 2015-2019 Eoxia + * @package EOFramework + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +$minimize_menu = get_user_meta( get_current_user_id(), '_eo_menu_minimize', true ); +$minimize_menu = empty( $minimize_menu ) ? false : true; +?> + + diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/view/screen-options.view.php b/core/external/eo-framework/modules/wpeo-custom-menu/view/screen-options.view.php new file mode 100644 index 0000000..f2a6c88 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/view/screen-options.view.php @@ -0,0 +1,44 @@ + + * @since 1.0.0 + * @copyright 2015-2019 Eoxia + * @package EOFramework + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; ?> + +
    +
    + +
    diff --git a/core/external/eo-framework/modules/wpeo-custom-menu/wpeo_custom_menu.config.json b/core/external/eo-framework/modules/wpeo-custom-menu/wpeo_custom_menu.config.json new file mode 100644 index 0000000..86790d4 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-custom-menu/wpeo_custom_menu.config.json @@ -0,0 +1,15 @@ +{ + "name": "WPEO Custom Menu", + "slug": "wpeo_custom_menu", + "since": "1.0.0", + "version": "1.1.0", + "description": "Custom Menu", + "state": true, + "path": "modules/wpeo-custom-menu", + "dependencies": { + "class": {}, + "filter": {}, + "action": {} + }, + "inserts_page": [] +} diff --git a/core/external/eo-framework/modules/wpeo-model/class/attachment.class.php b/core/external/eo-framework/modules/wpeo-model/class/attachment.class.php new file mode 100644 index 0000000..dd603bf --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/attachment.class.php @@ -0,0 +1,67 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Attachment_Class' ) ) { + + /** + * Gestion des attachments (POST, PUT, GET, DELETE) + */ + class Attachment_Class extends Post_Class { + + /** + * Le nom du modèle + * + * @var string + */ + protected $model_name = '\eoxia\Attachment_Model'; + + /** + * Le type du post + * + * @var string + */ + protected $type = 'attachment'; + + /** + * Le type du post + * + * @var string + */ + protected $base = 'eo-attachment'; + + /** + * La clé principale pour post_meta + * + * @var string + */ + protected $meta_key = 'eo_attachment'; + + /** + * Nom de la taxonomy + * + * @var string + */ + protected $attached_taxonomy_type = 'attachment_category'; + + /** + * Le nom pour le resgister post type + * + * @var string + */ + protected $post_type_name = 'Attachments'; + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/comment.class.php b/core/external/eo-framework/modules/wpeo-model/class/comment.class.php new file mode 100644 index 0000000..07625de --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/comment.class.php @@ -0,0 +1,256 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Comment_Class' ) ) { + /** + * Gestion des commentaires (POST, PUT, GET, DELETE) + */ + class Comment_Class extends Object_Class { + /** + * Le nom du modèle à utiliser. + * + * @var string + */ + protected $model_name = '\eoxia\Comment_Model'; + + /** + * La clé principale pour enregistrer les meta données. + * + * @var string + */ + protected $meta_key = '_comment'; + + /** + * Le type du commentaire + * + * @var string + */ + protected $type = 'ping'; + + /** + * Slug de base pour la route dans l'api rest + * + * @var string + */ + protected $base = 'comment'; + + /** + * Uniquement utile pour DigiRisk... + * + * @var string + */ + protected $identifier_helper = 'comment'; + + /** + * La liste des droits a avoir pour accèder aux différentes méthodes + * + * @var array + */ + protected $capabilities = array( + 'get' => 'read', + 'put' => 'moderate_comments', + 'post' => 'moderate_comments', + 'delete' => 'moderate_comments', + ); + + /** + * Initialise pre_get_comments + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return void + */ + protected function construct() { + parent::construct(); + + if ( ! in_array( $this->get_type(), \eoxia\Config_Util::$init['eo-framework']->not__in_display_comment ) ) { + add_action( 'pre_get_comments', array( $this, 'callback_pre_get_comments' ) ); + } + } + + /** + * N'affiches pas les commentaires dans la liste des commentaires. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param WP_Comment_Query $query Query args. + * + * @return void + */ + public function callback_pre_get_comments( $query ) { + global $pagenow; + + if ( $query->query_vars['type'] !== $this->get_type() && 'edit-comments.php' === $pagenow ) { + $query->query_vars['type__not_in'] = array_merge( (array) $query->query_vars['type__not_in'], array( $this->get_type() ) ); + } + } + + /** + * Récupères les données selon le modèle définis. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $args Les paramètres de get_comments @https://codex.wordpress.org/Function_Reference/get_comments. + * @param boolean $single Si on veut récupérer un tableau, ou qu'une seule entrée. + * + * @return Comment_Model + */ + public function get( $args = array(), $single = false ) { + $array_comments = array(); + + $default_args = array( + 'type' => $this->get_type(), + ); + + // Si le paramètre "id" est passé on le transforme en "ID" qui est le paramètre attendu par get_comments. + // Dans un souci d'homogénéité du code, le paramètre "id" remplace "ID". + $args['id'] = ! empty( $args['comment_ID'] ) ? $args['comment_ID'] : ( isset( $args['id'] ) ? $args['id'] : null ); + if ( ! empty( $args['id'] ) ) { + if ( isset( $args['comment_ID'] ) ) { + unset( $args['comment_ID'] ); + } + if ( ! isset( $args['comment__in'] ) ) { + $args['comment__in'] = array(); + } + $args['comment__in'] = array_merge( (array) $args['id'], $args['comment__in'] ); + } elseif ( isset( $args['id'] ) ) { + $args['schema'] = true; + } + unset( $args['id'] ); + + $args_cb = array( + 'args' => $args, + 'default_args' => $default_args, + ); + $final_args = apply_filters( 'eo_model_comment_before_get', wp_parse_args( $args, $default_args ), $args_cb ); + // Il ne faut pas lancer plusieurs fois pour ping. + if ( 'ping' !== $this->get_type() ) { + $final_args = apply_filters( 'eo_model_' . $this->get_type() . '_before_get', $final_args, $args_cb ); + } + + // Si l'argument "schema" est présent c'est lui qui prend le dessus et ne va pas récupérer d'élément dans la base de données. + if ( isset( $args['schema'] ) ) { + $array_comments[] = $final_args; + } else { // On lance la requête pour récupèrer les "comments" demandés. + $array_comments = get_comments( $final_args ); + } + + // Traitement de la liste des résultats pour le retour. + $array_comments = $this->prepare_items_for_response( $array_comments, 'comment', $this->meta_key, 'comment_ID' ); + + // Si on a demandé qu'une seule entrée et qu'il n'y a bien qu'une seule entrée correspondant à la demande alors on ne retourne que cette entrée. + if ( true === $single && 1 === count( $array_comments ) ) { + $array_comments = $array_comments[0]; + } + + return $array_comments; + } + + /** + * Insère ou met à jour les données dans la base de données. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param Array $data Les données a insérer ou à mettre à jour. + */ + public function update( $data ) { + $model_name = $this->model_name; + $data = (array) $data; + $req_method = ( ! empty( $data['id'] ) ) ? 'put' : 'post'; + $args_cb = array( + 'model_name' => $model_name, + 'req_method' => $req_method, + 'meta_key' => $this->meta_key, + ); + + // Vérifie l'existence du type. + if ( empty( $data['type'] ) ) { + $data['type'] = $this->get_type(); + } + + if ( empty( $data['id'] ) ) { + + if ( ! empty( $data['author_id'] ) ) { + $user = get_userdata( $data['author_id'] ); + } else { + $user = wp_get_current_user(); + } + + if ( $user->exists() ) { + if ( empty( $data['author_id'] ) ) { + $data['author_id'] = $user->ID; + } + + if ( empty( $data['author_nicename'] ) ) { + $data['author_nicename'] = $user->display_name; + } + + if ( empty( $data['author_email'] ) ) { + $data['author_email'] = $user->user_email; + } + + if ( empty( $data['author_url'] ) ) { + $data['author_url'] = $user->user_url; + } + } + } + + $data = apply_filters( 'eo_model_comment_before_' . $req_method, $data, $args_cb ); + // Il ne faut pas lancer plusieurs fois pour ping. + if ( 'ping' !== $this->get_type() ) { + $data = apply_filters( 'eo_model_' . $this->get_type() . '_before_' . $req_method, $data, $args_cb ); + } + $args_cb['data'] = $data; + + $object = new $model_name( $data, $req_method ); + + if ( empty( $object->data['id'] ) ) { + add_filter( 'duplicate_comment_id', '__return_false' ); + add_filter( 'pre_comment_approved', function( $approved, $comment_data ) { + return $comment_data['comment_approved']; + }, 10, 2 ); + $inserted_comment = wp_insert_comment( $object->convert_to_wordpress() ); + if ( is_wp_error( $inserted_comment ) ) { + return $inserted_comment; + } + + $object->data['id'] = $inserted_comment; + } else { + wp_update_comment( $object->convert_to_wordpress() ); + } + + $object = apply_filters( 'eo_model_comment_after_' . $req_method, $object, $args_cb ); + + $object = $this->get( array( + 'id' => $object->data['id'], + 'status' => array( '1', 'trash' ), + ), true ); + + // Il ne faut pas lancer plusieurs fois pour ping. + if ( 'ping' !== $this->get_type() ) { + $object = apply_filters( 'eo_model_' . $this->get_type() . '_after_' . $req_method, $object, $args_cb ); + } + + return $object; + } + + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/data.class.php b/core/external/eo-framework/modules/wpeo-model/class/data.class.php new file mode 100644 index 0000000..3b0dea0 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/data.class.php @@ -0,0 +1,296 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Data_Class' ) ) { + /** + * Gestion de la construction des données selon les modèles. + */ + class Data_Class extends Helper_Class { + + /** + * La liste des types de base dans PHP acceptés par EO_Framework pour les champs. + * + * @var array + */ + public static $built_in_types = array( 'string', 'integer', 'float', 'boolean', 'array' ); + + /** + * La liste des types de personnalisés acceptés par EO_Framework pour les champs. + * + * @var array + */ + public static $custom_types = array( 'wpeo_date' ); + + /** + * La liste complétes des types de champs acceptés pour les champs dans EO_Framework. + * + * @var array + */ + public static $accepted_types = array(); + + /** + * Variable contenant l'ensemble des erreurs rencontrées lors de la création d'un objet. + * + * @var WP_Error + */ + private $wp_errors; + + /** + * Variable contenant la méthode actuellement utilisée. Permet de construire l'objet demandé selon la méthode HTTP utilisée. + * + * @var string + */ + private $req_method; + + /** + * Appelle la méthode pour dispatcher les données. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Array $data Les données non traité. Peut être null, permet de récupérer le schéma. + * @param string $req_method La méthode HTTP actuellement utilisée. + */ + public function __construct( $data = null, $req_method ) { + $this->wp_errors = new \WP_Error(); + $this->req_method = ( null !== $req_method ) ? strtoupper( $req_method ) : null; + + // On construit les types autorisés à partir des listes séparées. Permet de ne pas mettre de type en dur dans le code. + self::$accepted_types = wp_parse_args( self::$custom_types, self::$built_in_types ); + + // Filtre du schéma. + $this->schema = apply_filters( 'eo_model_handle_schema', $this->schema, $this->req_method ); + + if ( null !== $data && null !== $this->req_method ) { + $this->data = $this->handle_data( $data ); + } + + if ( ! empty( $this->wp_errors->errors ) ) { + echo wp_json_encode( $this->wp_errors ); + exit; + } + } + + /** + * Dispatches les données selon le modèle. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param array $data Les données envoyées par l'utilisateur pour construire un objet selon un schéma. + * @param array $schema Optionnal. La définition des données. Ce paramètre est utilisé uniquement dans le cas d'un schéma récursif. + * + * @return object Les données traitées, typées et converties en l'objet demandé. + */ + private function handle_data( $data, $schema = null ) { + $object = null; + $schema = ( null === $schema ) ? $this->schema : $schema; + + foreach ( $schema as $field_name => $field_def ) { + // Définie les données par défaut pour l'élément courant par rapport à "default". + $value = null; + if ( isset( $field_def['default'] ) && in_array( $this->req_method, array( 'GET', 'POST' ), true ) ) { + $value = $field_def['default']; + } + + // On vérifie si la valeur du champs actuelle est fournie dans les données envoyées pour construction. + if ( isset( $field_def['field'] ) && isset( $data[ $field_def['field'] ] ) ) { // On vérifie si la clé correspondant au champs de la BDD existe. $data['post_date']. + $value = $data[ $field_def['field'] ]; + } elseif ( isset( $data[ $field_name ] ) && isset( $field_def ) && ! isset( $field_def['child'] ) ) { // On vérifie si la clé correspondant au schéma défini existe. $data['date']. + $value = $data[ $field_name ]; + } + + $value = apply_filters( 'eo_model_handle_value', $value, $this, $field_def, $this->req_method ); + + // Dans le cas ou la méthode actuelle implique un enregistrement dans la base de données. + // On vérifie que le schéma n'indique pas une valeur obligatoire. Si le champs est vide on retourne une erreur. + if ( 'GET' !== $this->req_method && isset( $field_def['required'] ) && $field_def['required'] && null === $value ) { + $this->wp_errors->add( 'eo_model_is_required', get_class( $this ) . ' => ' . $field_name . ' is required' ); + } + + // Force le typage de $value en requête mode "GET". + if ( 'GET' === $this->req_method ) { + $value = $this->handle_value_type( $value, $field_def ); + } + + // Vérifie le typage de $value. + $this->check_value_type( $value, $field_name, $field_def ); + + // On assigne la valeur "construite" au champs dans l'objet en cours de construction. + if ( null !== $value ) { + $object[ $field_name ] = $value; + } + + // Dans le cas ou la méthode actuelle implique un enregistrement dans la base de données. + // Si la valeur "construite" est "null" (aucun cas précédent n'a rempli ce champs) et que le champs est requis alors on le supprime pour ne pas supprimer de la BDD. + if ( 'GET' !== $this->req_method ) { + if ( isset( $object[ $field_name ] ) && null === $value && isset( $field_def['required'] ) && $field_def['required'] ) { + unset( $object[ $field_name ] ); + } + } + + // Si le champs traité contient l'entrée "child" il s'agit d'un tableau mutli-dimensionnel alors on lance une récursivité. + if ( isset( $field_def['child'] ) ) { + // On vérifie si des données correspondantes au champs en traitement ont été envoyées. + $values = ! empty( $data[ $field_name ] ) ? $data[ $field_name ] : array(); + + // Récursivité sur les enfants de la définition courante. + $object[ $field_name ] = $this->handle_data( $values, $field_def['child'] ); + } + } + + return $object; + } + + /** + * Vérification du type de la valeur d'un champs. Si le type n'est pas correct on rempli la variable $this->wp_errors qui sera retournée en fin de traitement. + * + * @param mixed $value La valeur du champs à vérifier. + * @param string $field_name Le nom du champs à vérifier. Utilisé pour le message d'erreur. + * @param array $field_def La définition complète du champs à vérifier. + * + * @return void + */ + public function check_value_type( $value, $field_name, $field_def ) { + // Vérifie le type de $value. + if ( null !== $value ) { + if ( empty( $field_def['type'] ) ) { + $this->wp_errors->add( 'eo_model_invalid_type', get_class( $this ) . ' => ' . $field_name . ': ' . $value . '(' . gettype( $value ) . ') no setted in schema. Type accepted: ' . join( ',', self::$accepted_types ) ); + } else { + $field_type = true; + switch ( $field_def['type'] ) { + case 'string': + if ( ! is_string( $value ) ) { + $field_type = false; + } + break; + case 'integer': + if ( ! is_int( $value ) ) { + $field_type = false; + } + break; + case 'boolean': + if ( ! is_bool( $value ) ) { + $field_type = false; + } + break; + case 'array': + if ( ! is_array( $value ) ) { + $rendered_value = is_object( $value ) ? 'Object item' : $value; + + $this->wp_errors->add( 'eo_model_invalid_type', get_class( $this ) . ' => ' . $field_name . ': ' . $rendered_value . '(' . gettype( $value ) . ') is not a ' . $field_def['type'] ); + } elseif ( isset( $field_def['array_type'] ) ) { + if ( ! empty( $value ) ) { + foreach ( $value as $key => $sub_value ) { + $field_def['type'] = $field_def['array_type']; + $this->check_value_type( $sub_value, $field_name, $field_def ); + + if ( isset( $field_def['key_type'] ) ) { + $field_def['type'] = $field_def['key_type']; + $this->check_value_type( $key, $field_name, $field_def ); + } + } + } + } + break; + default: + if ( ! in_array( $field_def['type'], self::$accepted_types, true ) ) { + $this->wp_errors->add( 'eo_model_invalid_type', get_class( $this ) . ' => ' . $field_name . ': ' . $value . '(' . gettype( $value ) . ') incorrect type: "' . $field_def['type'] . '". Type accepted: ' . join( ',', self::$accepted_types ) ); + } + break; + } + + if ( ! $field_type ) { + // Translators: 1.Current className 2.Field name 3.Given value 4.Field Real type 5.Field expected type. + $this->wp_errors->add( 'eo_model_invalid_type', sprintf( __( '%1$s => %2$s: %3$s ( %4$s ) is not a %5$s', 'eo-framework' ), get_class( $this ), $field_name, $value, gettype( $value ), $field_def['type'] ) ); + } + } + } + } + + /** + * Forces le typage des données. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param mixed $value La valeur courante. + * @param array $field_def La définition du champ. + * + * @return mixed L'objet avec le typage forcé. + */ + public function handle_value_type( $value, $field_def ) { + // Si le type du champs à vérifier est parmis les types personnalisés (non défini par PHP) alors on retourne simplement la valeur, la fonction risque de corrompre les données. + if ( in_array( $field_def['type'], self::$custom_types, true ) ) { + return $value; + } + + /** + * On type la valeur. + * + * @see self::$accepted_types + */ + settype( $value, $field_def['type'] ); + + // On force le typage des enfants uniquement si array_type est défini. + if ( ! empty( $field_def['array_type'] ) && is_array( $value ) && ! empty( $value ) ) { + foreach ( $value as $key => $val ) { + /** + * On type la valeur. + * + * @see self::$accepted_types + */ + settype( $value[ $key ], $field_def['array_type'] ); + } + } + + return $value; + } + + /** + * Convertis le modèle en un tableau compatible WordPress. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return array Tableau compatible avec les fonctions WordPress. + */ + public function convert_to_wordpress() { + $data = array(); + + foreach ( $this->schema as $field_name => $field_def ) { + + if ( ! empty( $field_def['field'] ) ) { + if ( isset( $this->data[ $field_name ] ) ) { + $value = ( ( isset( $this->data[ $field_name ] ) && null !== $this->data[ $field_name ] ) ) ? $this->data[ $field_name ] : null; + + if ( null !== $value ) { + if ( ! in_array( $field_def['type'], self::$custom_types, true ) || ! isset( $value['raw'] ) ) { + $data[ $field_def['field'] ] = $value; + } elseif ( isset( $value['raw'] ) ) { + $data[ $field_def['field'] ] = $value['raw']; + } + } + } + } + } + + return $data; + } + } + +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/helper.class.php b/core/external/eo-framework/modules/wpeo-model/class/helper.class.php new file mode 100644 index 0000000..ec4e3ee --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/helper.class.php @@ -0,0 +1,137 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { exit; } + +if ( ! class_exists( '\eoxia\Helper_Class' ) ) { + + /** + * Classe helper pour les modèles. + */ + class Helper_Class implements \ArrayAccess { + + /** + * Récupères le modèle. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return Object le modèle. + */ + public function get_model() { + return $this->schema; + } + + /** + * Récupères le nom de la classe selon le model. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string Le nom de la classe avec le namespace si existant. + */ + public function get_class() { + $class_name = get_class( $this ); + $class_name = str_replace( 'Model', 'Class', $class_name ); + $class_name = str_replace( 'model', 'Class', $class_name ); + $class_name = str_replace( '\\', '/', $class_name ); + + return $class_name; + } + + /** + * Permet de faire echo sur un objet et supprimes la définition du modèle avant l'affichage. + * + * @return string void + */ + public function __toString() { + $this->delete_model_for_print( $this ); + echo '
    '; print_r( $this ); echo '
    '; + return ''; + } + + /** + * Supprime le modèle. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param object $current L'objet complet. + */ + private function delete_model_for_print( $current ) { + if ( ! empty( $this->model ) ) { + unset( $this->model ); + } + + foreach ( $current as &$content ) { + if ( is_array( $content ) ) { + foreach ( $content as &$model ) { + if ( ! empty( $model->model ) ) { + unset( $model->model ); + $this->delete_model_for_print( $model ); + } + } + } + } + } + + /** + * Checks if a parameter is set. + * + * @since 1.0.0 + * + * @param string $offset Parameter name. + * @return bool Whether the parameter is set. + */ + public function offsetExists( $offset ) { + return isset( $this->$offset ); + } + + /** + * Retrieves a parameter from the request. + * + * @since 1.0.0 + * + * @param string $offset Parameter name. + * @return mixed|null Value if set, null otherwise. + */ + public function offsetGet( $offset ) { + return isset( $this->$offset ) ? $this->$offset : null; + } + + /** + * Sets a parameter on the request. + * + * @since 1.0.0 + * + * @param string $offset Parameter name. + * @param mixed $value Parameter value. + */ + public function offsetSet( $offset, $value ) { + $this->$offset = $value; + } + + /** + * Removes a parameter from the request. + * + * @since 1.0.0 + * + * @param string $offset Parameter name. + */ + public function offsetUnset( $offset ) { + unset( $this->$offset ); + } + + } + +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/index.php b/core/external/eo-framework/modules/wpeo-model/class/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Object_Class' ) ) { + + /** + * Gestion des posts (POST, PUT, GET, DELETE) + */ + class Object_Class extends Rest_Class { + + /** + * Le nom du modèle pour l'objet actuel. + * + * @var string + */ + protected $model_name = ''; + + /** + * Le type de l'objet actuel. + * + * @var string + */ + protected $type = ''; + + /** + * Le slug de base de l'objet actuel. + * + * @var string + */ + protected $base = ''; + + /** + * La clé principale pour la méta de l'objet. + * + * @var string + */ + protected $meta_key = ''; + + /** + * Utiles pour récupérer la clé unique + * + * @var string + */ + protected $identifier_helper = ''; + + /** + * Utile uniquement pour DigiRisk. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string L'identifiant des commentaires pour DigiRisk. + */ + public function get_identifier_helper() { + return $this->identifier_helper; + } + + /** + * Permet de récupérer le schéma avec les données du modèle par défault. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @return Object + */ + public function get_schema() { + $model_name = $this->model_name; + $model = new $model_name( array(), null ); + return $model->get_model(); + } + + /** + * Permet de changer le modèle en dur. + * + * @param string $model_name Le nom du modèle. + * + * @since 1.0.0 + * @version 1.3.6.0 + */ + public function set_model( $model_name ) { + $this->model_name = $model_name; + } + + /** + * Retourne le post type. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string Le type de l'objet actuel + */ + public function get_type() { + return $this->type; + } + + /** + * Retourne le nom de la méta générale de l'objet actuel. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string Le nom de la méta de l'objet actuel + */ + public function get_meta_key() { + return $this->meta_key; + } + + /** + * Appelle la méthode update puis renvoies l'objet mis à jour ou créé. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param Array $data Les données. + * + * @return Object L'objet avec toutes ses données. + */ + public function create( $data ) { + $data['id'] = ! empty( $data['id'] ) ? (int) $data['id'] : 0; + $object = $this->update( $data ); + + $parent_class = get_parent_class( $object ); + + // Utiles seulement pour les posts et les comments, car les users et categories on déjà toutes leurs données à ce moment là. + if ( in_array( $parent_class, array( 'eoxia\Comment_Model', 'eoxia\Post_Model' ) ) ) { + $args = array( + 'id' => $object->data['id'], + ); + + $args['status'] = $object->data['status']; + + $object = $this->get( $args, true ); + } + + return $object; + } + + /** + * Factorisation de la fonction de construction des objets après un GET. + * + * @param array $object_list La liste des objets récupérés. + * @param string $wp_type Le type de l'élément actuel en cours de traitement. + * @param string $meta_key La clé de la métadonnée principale que l'on a défini pour l'objet. + * @param string $object_id_field la clé primaire permettant d'identifier l'objet. + * + * @return array La liste des objets construits selon le modèle défini. + */ + public function prepare_items_for_response( $object_list, $wp_type, $meta_key, $object_id_field ) { + $model_name = $this->model_name; + + if ( ! empty( $object_list ) ) { + foreach ( $object_list as $key => $object ) { + $object = (array) $object; + $args_cb = array( + 'wp_type' => $wp_type, + 'element_type' => $this->get_type(), + 'model_name' => $model_name, + ); + + // Si $object[ $object_id_field ] existe, on récupère les meta. + if ( ! empty( $object[ $object_id_field ] ) ) { + $list_meta = call_user_func( 'get_' . $wp_type . '_meta', $object[ $object_id_field ] ); + foreach ( $list_meta as &$meta ) { + $meta = array_shift( $meta ); + $meta = JSON_Util::g()->decode( $meta ); + } + + $object = apply_filters( 'eo_model_' . $wp_type . '_after_get_meta', $object, array_merge( $args_cb, array( 'list_meta' => $list_meta ) ) ); + $object = apply_filters( 'eo_model_' . $this->get_type() . '_after_get_meta', $object, array_merge( $args_cb, array( 'list_meta' => $list_meta ) ) ); + + $object = array_merge( $object, $list_meta ); + + if ( ! empty( $object[ $meta_key ] ) ) { + $data_json = JSON_Util::g()->decode( $object[ $meta_key ] ); + if ( is_array( $data_json ) ) { + $object = array_merge( $object, $data_json ); + } else { + $object[ $meta_key ] = $data_json; + } + unset( $object[ $meta_key ] ); + } + } + + // Construction de l'objet selon les données reçues. + // Soit un objet vide si l'argument schema est défini. Soit l'objet avec ses données. + $object_list[ $key ] = new $model_name( $object, 'get' ); + + // On donne la possibilité de lancer des actions sur l'élément actuel une fois qu'il est complément construit. + $object_list[ $key ] = apply_filters( 'eo_model_' . $wp_type . '_after_get', $object_list[ $key ], $args_cb ); + $object_list[ $key ] = apply_filters( 'eo_model_' . $this->get_type() . '_after_get', $object_list[ $key ], $args_cb ); + } // End foreach(). + } + + return $object_list; + } + + } + +} diff --git a/core/external/eo-framework/modules/wpeo-model/class/post.class.php b/core/external/eo-framework/modules/wpeo-model/class/post.class.php new file mode 100644 index 0000000..fb5a421 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/post.class.php @@ -0,0 +1,341 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Post_Class' ) ) { + + /** + * Gestion des posts (POST, PUT, GET, DELETE) + */ + class Post_Class extends Object_Class { + + /** + * Le nom du modèle + * + * @var string + */ + protected $model_name = '\eoxia\Post_Model'; + + /** + * Le type du post + * + * @var string + */ + protected $type = 'post'; + + /** + * Le type du post + * + * @var string + */ + protected $base = 'post'; + + /** + * La clé principale pour post_meta + * + * @var string + */ + protected $meta_key = '_wpeo_post'; + + /** + * Le nom pour le resgister post type + * + * @var string + */ + protected $post_type_name = 'posts'; + + /** + * Utiles pour récupérer la clé unique + * + * @todo Rien à faire ici + * @var string + */ + protected $identifier_helper = 'post'; + + /** + * La liste des droits a avoir pour accèder aux différentes méthodes + * + * @var array + */ + protected $capabilities = array( + 'get' => 'read', + 'put' => 'edit_posts', + 'post' => 'edit_posts', + 'delete' => 'delete_posts', + ); + + /** + * Appelle l'action "init" de WordPress + * + * @return void + */ + protected function construct() { + parent::construct(); + + add_action( 'init', array( $this, 'init_post_type' ) ); + } + + /** + * Initialise le post type selon $name et $name_singular. + * Initialise la taxonomy si elle existe. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @see register_post_type + * @return boolean + */ + public function init_post_type() { + $args = apply_filters( 'eo_model_' . $this->get_type() . '_register_post_type_args', array( + 'label' => $this->post_type_name, + ) ); + + $return = register_post_type( $this->get_type(), $args ); + + if ( ! empty( $this->attached_taxonomy_type ) ) { + register_taxonomy( $this->attached_taxonomy_type, $this->get_type(), apply_filters( 'eo_model_' . $this->get_type() . '_' . $this->attached_taxonomy_type, array() ) ); + } + + return $return; + } + + /** + * Récupères les données selon le modèle défini. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param array $args Les paramètres à appliquer pour la récupération @see https://codex.wordpress.org/Function_Reference/WP_Query. + * @param boolean $single Si on veut récupérer un tableau, ou qu'une seule entrée. + * + * @return Object + */ + public function get( $args = array(), $single = false ) { + $array_posts = array(); + + // Définition des arguments par défaut pour la récupération des "posts". + $default_args = array( + 'post_status' => 'any', + 'post_type' => $this->get_type(), + 'posts_per_page' => -1, + ); + + // Si le paramètre "id" est passé on le transforme en "post__in" pour eviter les problèmes de statuts. + // Dans un soucis d'homogénéité du code, le paramètre "id" remplace le paramètre "p" qui est de base dans WP_Query. + $args['id'] = ! empty( $args['ID'] ) ? $args['ID'] : ( isset( $args['id'] ) ? $args['id'] : null ); + if ( ! empty( $args['id'] ) ) { + if ( isset( $args['ID'] ) ) { + unset( $args['ID'] ); + } + if ( ! isset( $args['post__in'] ) ) { + $args['post__in'] = array(); + } + $args['post__in'] = array_merge( (array) $args['id'], $args['post__in'] ); + } elseif ( isset( $args['id'] ) ) { + $args['schema'] = true; + } + unset( $args['id'] ); + + $args_cb = array( + 'args' => $args, + 'default_args' => $default_args, + ); + $final_args = apply_filters( 'eo_model_post_before_get', wp_parse_args( $args, $default_args ), $args_cb ); + // Il ne faut pas lancer plusieurs fois pour post. + if ( 'post' !== $this->get_type() ) { + $final_args = apply_filters( 'eo_model_' . $this->get_type() . '_before_get', $final_args, $args_cb ); + } + + // Si l'argument "schema" est présent c'est lui qui prend le dessus et ne va pas récupérer d'élément dans la base de données. + if ( isset( $args['schema'] ) ) { + $array_posts[] = $final_args; + } else { // On lance la requête pour récupèrer les "posts" demandés. + $query_posts = new \WP_Query( $final_args ); + $array_posts = $query_posts->posts; + unset( $query_posts->posts ); + } + + // Traitement de la liste des résultats pour le retour. + $array_posts = $this->prepare_items_for_response( $array_posts, 'post', $this->meta_key, 'ID' ); + + // Si on a demandé qu'une seule entrée et qu'il n'y a bien qu'une seule entrée correspondant à la demande alors on ne retourne que cette entrée. + if ( true === $single && 1 === count( $array_posts ) ) { + $array_posts = $array_posts[0]; + } + + return $array_posts; + } + + /** + * Insère ou met à jour les données dans la base de donnée. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param Array $data Les données a insérer ou à mêttre à jour. + * + * @return Object L'objet construit grâce au modèle. + */ + public function update( $data ) { + $model_name = $this->model_name; + $data = (array) $data; + $req_method = ( ! empty( $data['id'] ) ) ? 'put' : 'post'; + $args_cb = array( + 'model_name' => $model_name, + 'req_method' => $req_method, + 'meta_key' => $this->meta_key, + ); + + if ( empty( $data['type'] ) ) { + $data['type'] = $this->get_type(); + } + + $append = false; + if ( isset( $data['$push'] ) ) { + if ( ! empty( $data['$push'] ) ) { + foreach ( $data['$push'] as $field_name => $field_to_push ) { + if ( ! empty( $field_to_push ) ) { + foreach ( $field_to_push as $sub_field_name => $value ) { + if ( ! isset( $data[ $field_name ][ $sub_field_name ] ) ) { + $data[ $field_name ][ $sub_field_name ] = array(); + } + + $data[ $field_name ][ $sub_field_name ][] = $value; + } + } + } + } + + $append = true; + unset( $data['$push'] ); + } + $args_cb['append_taxonomies'] = $append; + + $data = apply_filters( 'eo_model_post_before_' . $req_method, $data, $args_cb ); + + // Il ne faut pas lancer plusieurs fois pour post. + if ( 'post' !== $this->get_type() ) { + $data = apply_filters( 'eo_model_' . $this->get_type() . '_before_' . $req_method, $data, $args_cb ); + } + $args_cb['data'] = $data; + + $data['id'] = (int) ! empty( $data['id'] ) ? $data['id'] : 0; + + $object = new $model_name( $data, $req_method ); + + if ( empty( $object->data['id'] ) ) { + $post_save_result = wp_insert_post( $object->convert_to_wordpress(), true ); + + $object->data['id'] = $post_save_result; + } else { + $post_save_result = wp_update_post( $object->convert_to_wordpress(), true ); + } + + // Une erreur est survenue à la sauvegarden on retourne l'erreur. + if ( is_wp_error( $post_save_result ) ) { + return $post_save_result; + } + + + $object = apply_filters( 'eo_model_post_after_' . $req_method, $object, $args_cb ); + $object = $this->get( array( + 'id' => $object->data['id'], + 'post_status' => array( 'any', 'trash' ), + ), true ); + + // Il ne faut pas lancer plusieurs fois pour post. + if ( 'post' !== $this->get_type() ) { + $object = apply_filters( 'eo_model_' . $this->get_type() . '_after_' . $req_method, $object, $args_cb ); + } + + return $object; + } + + /** + * Recherche dans les meta value. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param string $search Le terme de la recherche. + * @param array $array La définition de la recherche. + * + * @return array + */ + public function search( $search, $array ) { + global $wpdb; + + if ( empty( $array ) || ! is_array( $array ) ) { + return array(); + } + + $where = ' AND ( '; + + if ( ! empty( $array ) ) { + foreach ( $array as $key => $element ) { + if ( is_array( $element ) ) { + foreach ( $element as $sub_element ) { + $where .= ' AND ( ' === $where ? '' : ' OR '; + $where .= ' (PM.meta_key="' . $sub_element . '" AND PM.meta_value LIKE "%' . $search . '%") '; + } + } else { + $where .= ' AND ( ' === $where ? '' : ' OR '; + $where .= ' P.' . $element . ' LIKE "%' . $search . '%" '; + } + } + } + + $where .= ' ) '; + + $list_group = $wpdb->get_results( "SELECT DISTINCT P.ID FROM {$wpdb->posts} as P JOIN {$wpdb->postmeta} AS PM ON PM.post_id=P.ID WHERE P.post_type='" . $this->get_type() . "'" . $where ); + $list_model = array(); + if ( ! empty( $list_group ) ) { + foreach ( $list_group as $element ) { + $list_model[] = $this->get( array( + 'id' => $element->ID, + ) ); + } + } + + return $list_model; + } + + /** + * Retournes le nom de la catégorie attachée au post. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string Le nom de la catégorie. + */ + public function get_attached_taxonomy() { + return $this->attached_taxonomy_type; + } + + /** + * Retournes le nom du post type. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string Le nom du post type. + */ + public function get_post_type_name() { + return $this->post_type_name; + } + + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/rest.class.php b/core/external/eo-framework/modules/wpeo-model/class/rest.class.php new file mode 100644 index 0000000..c8078ae --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/rest.class.php @@ -0,0 +1,228 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Rest_Class' ) ) { + /** + * Gestion des utilisateurs (POST, PUT, GET, DELETE) + */ + class Rest_Class extends Singleton_Util { + + /** + * [construct description] + */ + protected function construct() { + add_action( 'rest_api_init', array( $this, 'register_routes' ), 20 ); + } + + /** + * Check user capability to access to element + * + * @param string $cap The capability name to check. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string The rest api base for current element + */ + public function check_cap( $cap, $request ) { + $can = apply_filters( 'eo_model_check_cap', true, $request ); + + if ( ! $can ) { + return false; + } + + return true; + } + + /** + * Return the base for rest api. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return string The rest api base for current element + */ + public function get_rest_base() { + return $this->base; + } + + /** + * Défini et ajoute les routes dans l'api rest de WordPress + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function register_routes() { + $element_namespace = new \ReflectionClass( get_called_class() ); + register_rest_route( $element_namespace->getNamespaceName() . '/v' . Config_Util::$init['eo-framework']->wpeo_model->api_version, '/' . $this->base . '/schema', array( + array( + 'method' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_schema' ), + ), + ) ); + + register_rest_route( $element_namespace->getNamespaceName() . '/v' . Config_Util::$init['eo-framework']->wpeo_model->api_version, '/' . $this->base, array( + array( + 'methods' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_from_parent' ), + 'permission_callback' => function( $request ){ + return Rest_Class::g()->check_cap( 'get', $request ); + } + ), + array( + 'methods' => \WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_from_parent' ), + 'permission_callback' => function( $request ){ + return Rest_Class::g()->check_cap( 'post', $request ); + } + ), + ), true ); + + register_rest_route( $element_namespace->getNamespaceName() . '/v' . Config_Util::$init['eo-framework']->wpeo_model->api_version, '/' . $this->base . '/(?P[\d]+)', array( + array( + 'method' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_from_parent' ), + 'permission_callback' => function( $request ){ + return Rest_Class::g()->check_cap( 'get', $request ); + }, + ), + array( + 'methods' => \WP_REST_Server::CREATABLE, + 'callback' => array( $this, 'create_from_parent' ), + 'permission_callback' => function( $request ){ + return Rest_Class::g()->check_cap( 'put', $request ); + } + ), + ), true ); + + register_rest_route( $element_namespace->getNamespaceName() . '/v' . Config_Util::$init['eo-framework']->wpeo_model->api_version, '/' . $this->base . 's/(?P[\d]+)', array( + array( + 'method' => \WP_REST_Server::READABLE, + 'callback' => array( $this, 'get_parent_from_parent' ), + 'permission_callback' => function( $request ){ + return Rest_Class::g()->check_cap('get', $request ); + } + ), + ), true ); + + } + + /** + * Get element(s) from parent object type + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param WP_Http::request $request The current Rest API request. + * + * @return mixed Element list or single element if id was specified. + */ + public function get_from_parent( $request ) { + $args = array(); + $single = false; + $list = null; + + if ( ! empty( $request ) && ( ! empty( $request['id'] ) ) ) { + $args['id'] = $request['id']; + $single = true; + } + + $elements = $this->get( $args, $single ); + if ( ! empty( $elements ) ) { + if ( $single ) { + $list[] = $elements; + } else { + foreach ( $elements as $element ) { + $list[] = $element; + } + } + } + + $new_list = null; + + if ( ! empty( $list ) ) { + foreach ( $list as $element ) { + if ( ! empty( $element->get_model() ) ) { + foreach ( $element->get_model() as $key => $model ) { + if ( isset( $element->data[ $key ] ) && ( isset( $model['show_in_rest'] ) && ! $model['show_in_rest'] ) ) { + unset( $element->data[ $key ] ); + } + } + } + + $new_list[] = $element->data; + } + } + + if ( $single ) { + $list = $list[0]; + } + + return $list; + } + + /** + * Get element(s) from parent object type + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param WP_Http::request $request The current Rest API request. + * + * @return mixed Element list or single element if id was specified. + */ + public function get_parent_from_parent( $request ) { + $args = array(); + $single = false; + + if ( ! empty( $request ) && ( ! empty( $request['id'] ) ) ) { + $args['post_id'] = $request['id']; + $args['status'] = '1'; + $single = true; + } + + return $this->get( $args, $single ); + } + + /** + * Create / Update element from request + * + * @since 1.6.0 + * @version 1.6.0 + * + * @param WP_Http::request $request The current Rest API request. + * + * @return mixed New created element. + */ + public function create_from_parent( $request ) { + $params = $request->get_params(); + + if ( isset( $params['id'] ) ) { + $params['id'] = (int) $params['id']; + + $object = $this->get( array( 'id' => $params['id'] ), true ); + $object->data = wp_parse_args( $params, $object->data ); + + return $this->update( $object->data ); + } else { + return $this->update( $params ); + } + } + + } + +} diff --git a/core/external/eo-framework/modules/wpeo-model/class/save_meta.class.php b/core/external/eo-framework/modules/wpeo-model/class/save_meta.class.php new file mode 100644 index 0000000..1c7355d --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/save_meta.class.php @@ -0,0 +1,115 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Save_Meta_Class' ) ) { + + /** + * Gestion des meta + */ + class Save_Meta_Class extends Singleton_Util { + + /** + * Le constructeur + * + * @since 1.0.0 + * @version 1.0.0 + */ + protected function construct() {} + + /** + * Apelle la méthode selon si la définition du champ est en meta "single" ou "multiple". + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param object $object L'objet courant. + * @param string $function La méthode a appeler. + * @param string $meta_key Le nom de la meta key. + */ + public static function save_meta_data( $object, $function, $meta_key ) { + $schema = $object->get_model(); + + $list_meta_json = array(); + + if ( ! empty( $object->data['id'] ) ) { + foreach ( $schema as $field_name => $field_def ) { + if ( ! empty( $field_def['meta_type'] ) && isset( $object->data[ $field_name ] ) ) { + if ( 'single' === $field_def['meta_type'] ) { + self::g()->save_single_meta_data( $object->data['id'], $object->data[ $field_name ], $function, $field_def['field'] ); + } else { + $list_meta_json[ $field_name ] = $object->data[ $field_name ]; + } + } + } + + self::g()->save_multiple_meta_data( $object->data['id'], $list_meta_json, $function, $meta_key ); + } + } + + /** + * Sauvegarde la valeur dans une meta seul. + * + * @param int $id L'ID de l'élément. + * @param mixed $value La valeur a enregistrer. + * @param string $function La function a appeler. + * @param string $meta_key Le nom de la meta. + * + * @since 1.0.0 + * @version 1.0.0 + */ + private function save_single_meta_data( $id, $value, $function, $meta_key ) { + $data = $value; + + if ( is_array( $data ) ) { + $data = \wp_json_encode( $data ); + $data = addslashes( $data ); + $data = preg_replace_callback( '/\\\\u([0-9a-f]{4})/i', function ( $matches ) { + $sym = mb_convert_encoding( pack( 'H*', $matches[1] ), 'UTF-8', 'UTF-16' ); + return $sym; + }, $data ); + } + + call_user_func( $function, $id, $meta_key, $data ); + } + + /** + * Sauvegarde les valeurs dans une meta. + * + * @param int $id L'ID de l'élément. + * @param mixed $array_value Les valeurs a enregistrer. + * @param string $function La function a appeler. + * @param string $meta_key Le nom de la meta. + * + * @since 1.0.0 + * @version 1.0.0 + */ + private function save_multiple_meta_data( $id, $array_value, $function, $meta_key ) { + $data = wp_json_encode( $array_value ); + + // Pour échapper les caractères car les update_*_meta enlève un slashes après. + $data = addslashes( $data ); + + // Remplaces le paramètre $options de json_encode disponible à partir de php 5.4.0: JSON_UNESCAPED_UNICODE. + $data = preg_replace_callback( '/\\\\u([0-9a-f]{4})/i', function ( $matches ) { + $sym = mb_convert_encoding( pack( 'H*', $matches[1] ), 'UTF-8', 'UTF-16' ); + return $sym; + }, $data ); + + call_user_func( $function, $id, $meta_key, $data ); + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/schema.class.php b/core/external/eo-framework/modules/wpeo-model/class/schema.class.php new file mode 100644 index 0000000..56d4385 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/schema.class.php @@ -0,0 +1,134 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Schema_Class' ) ) { + + /** + * Classe helper pour les modèles. + */ + class Schema_Class extends Singleton_Util { + + + + /** + * Requried for Singleton_Util + * + * @since 0.1.0 + * @version 1.0.0 + */ + protected function construct() {} + + /** + * Vérifie si les données sont bien typées. Cette méthode ne force pas le typage des données. + * Renvoies des erreurs si une des données ne correspond pas au type attendu. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Toutes les données y compris les meta. + * @param array $model Le schéma. + * @param array $current_data Les données actuelles. + * @param array $errors Les erreurs de typages. + * + * @return array Les erreurs de typages. + */ + public static function check_data_from_schema( $data, $model, $current_data = null, $errors = array() ) { + $current_data = ( null === $current_data ) ? $data : $current_data; + + foreach ( $model as $field_name => $field_def ) { + $value = null; + $error = null; + // Si la définition de la donnée ne contient pas "child". + if ( ! isset( $field_def['child'] ) ) { + + // Si on est au premier niveau de $current_object, sinon si on est plus haut que le premier niveau. + if ( isset( $field_def['field'] ) && isset( $current_data[ $field_def['field'] ] ) ) { + $value = $current_data[ $field_def['field'] ]; + } elseif ( isset( $current_data[ $field_name ] ) && isset( $field_def ) && ! isset( $field_def['child'] ) ) { + $value = $current_data[ $field_name ]; + } + + // Verifie si le champ est required. + if ( isset( $field_def['required'] ) && $field_def['required'] && null === $value ) { + $errors[] = $field_name . ' is required'; + } + + // Vérifie le type de $value. + if ( null !== $value ) { + if ( ! self::check_type( $value, $field_name, $field_def['type'], $error ) ) { + $errors[] = $error; + } + } + } else { + // Values car c'est un tableau, nous sommes dans "child". Nous avons donc un tableau dans $data[ $field_name ]. + $values = ! empty( $data[ $field_name ] ) ? $data[ $field_name ] : array(); + + // Récursivité sur les enfants de la définition courante. + $errors = self::check_data_from_schema( $data, $field_def['child'], $values, $errors ); + } + } + + return $errors; + } + + /** + * Vérifie le type de la valeur courante. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param mixed $value N'importe quel type de valeur. + * @param string $field_name Le nom du champ à vérifier. + * @param string $type Le type de la donnée à vérifier. + * @param array $error Une référence pour ajouter les messages d'erreurs. + * + * @return bool False si une erreur, sinon true. + */ + public static function check_type( $value, $field_name, $type, &$error ) { + $checked_type = true; + + switch ( $type ) { + case 'string': + if ( ! is_string( $value ) ) { + $error = $field_name . ': ' . $value . '(' . gettype( $value ) . ') is not a ' . $type; + $checked_type = false; + } + break; + case 'integer': + if ( ! is_int( $value ) ) { + $error = $field_name . ': ' . $value . '(' . gettype( $value ) . ') is not a ' . $type; + $checked_type = false; + } + break; + default: + if ( empty( $type ) ) { + $error = $field_name . ': ' . $value . '(' . gettype( $value ) . ') no setted in schema. Type accepted: ' . join( ',', self::$accepted_types ); + } + + if ( ! in_array( $type, self::$accepted_types, true ) ) { + $error = $field_name . ': ' . $value . '(' . gettype( $value ) . ') incorrect type: "' . $type . '". Type accepted: ' . join( ',', self::$accepted_types ); + } + + $checked_type = false; + + break; + } + + return $checked_type; + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/term.class.php b/core/external/eo-framework/modules/wpeo-model/class/term.class.php new file mode 100644 index 0000000..dc20214 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/term.class.php @@ -0,0 +1,246 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Term_Class' ) ) { + + /** + * Gestion des termes (POST, PUT, GET, DELETE) + */ + class Term_Class extends Object_Class { + + /** + * Le nom du modèle + * + * @var string + */ + protected $model_name = 'term_model'; + + /** + * La clé principale pour post_meta + * + * @var string + */ + protected $meta_key = '_wpeo_term'; + + /** + * Le nom de la taxonomie + * + * @var string + */ + protected $type = 'category'; + + /** + * Slug de base pour la route dans l'api rest + * + * @var string + */ + protected $base = 'category'; + + /** + * Pour l'association de la taxonomy + * + * @var string|array + */ + protected $associate_post_types = array(); + + /** + * Utiles pour récupérer la clé unique + * + * @todo Rien à faire ici + * @var string + */ + protected $identifier_helper = 'term'; + + /** + * La liste des droits a avoir pour accèder aux différentes méthodes + * + * @var array + */ + protected $capabilities = array( + 'get' => 'read', + 'put' => 'manage_categories', + 'post' => 'manage_categories', + 'delete' => 'manage_categories', + ); + + /** + * Le constructeur + * + * @return void + * + * @since 0.1.0 + * @version 1.0.0 + */ + protected function construct() { + parent::construct(); + + add_action( 'init', array( $this, 'callback_init' ) ); + } + + /** + * Initialise la taxonomie + * + * @since 1.0.0 + * @version 1.0.0 + * + * @return void + */ + public function callback_init() { + $args = array( + 'hierarchical' => true, + 'show_ui' => true, + 'show_admin_column' => true, + 'query_var' => true, + ); + + register_taxonomy( $this->get_type(), $this->associate_post_types, $args ); + } + + /** + * Récupères les données selon le modèle définis. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $args Les paramètres de get_terms @https://codex.wordpress.org/Function_Reference/get_terms. + * @param boolean $single Si on veut récupérer un tableau, ou qu'une seule entrée. + * + * @return Object + */ + public function get( $args = array(), $single = false ) { + $array_terms = array(); + + $default_args = array( + 'hide_empty' => false, + 'taxonomy' => $this->get_type(), + ); + + // Si le paramètre "id" est passé on le transforme en "include" qui est la paramètre attendu par WP_Term_Query. + // Dans un soucis d'homogénéité du code, le paramètre "id" remplace le paramètre "include" dans les appels de la fonction. + $args['id'] = ! empty( $args['term_id'] ) ? $args['term_id'] : ( isset( $args['id'] ) ? $args['id'] : null ); + if ( ! empty( $args['id'] ) ) { + if ( isset( $args['term_id'] ) ) { + unset( $args['term_id'] ); + } + if ( ! isset( $args['include'] ) ) { + $args['include'] = array(); + } + $args['include'] = array_merge( $args['include'], (array) $args['id'] ); + } elseif ( isset( $args['id'] ) ) { + $args['schema'] = true; + } + unset( $args['id'] ); + + // @Todo: a voir pourquoi wp_get_post_terms et pas wp_get_object_terms et si pas d'autre moyen que ici. + // elseif ( isset( $args['post_id'] ) ) { + // $array_term = wp_get_post_terms( $args['post_id'], $this->get_type(), $term_final_args ); + // + // if ( empty( $array_term ) ) { + // $array_term[] = array(); + // } + // } + + $args_cb = array( + 'args' => $args, + 'default_args' => $default_args, + ); + $final_args = apply_filters( 'eo_model_term_before_get', wp_parse_args( $args, $default_args ), $args_cb ); + // Il ne faut pas lancer plusieurs fois pour term. + if ( 'term' !== $this->get_type() ) { + $final_args = apply_filters( 'eo_model_' . $this->get_type() . '_before_get', $final_args, $args_cb ); + } + + // Si l'argument "schema" est présent c'est lui qui prend le dessus et ne va pas récupérer d'élément dans la base de données. + if ( isset( $args['schema'] ) ) { + $array_terms[] = $final_args; + } else { // On lance la requête pour récupèrer les "terms" demandés. + $query_terms = new \WP_Term_Query( $final_args ); + $array_terms = $query_terms->terms; + unset( $query_terms->terms ); + } + + // Traitement de la liste des résultats pour le retour. + $array_terms = $this->prepare_items_for_response( $array_terms, 'term', $this->meta_key, 'term_id' ); + + // Si on a demandé qu'une seule entrée et qu'il n'y a bien qu'une seule entrée correspondant à la demande alors on ne retourne que cette entrée. + if ( true === $single && 1 === count( $array_terms ) ) { + $array_terms = $array_terms[0]; + } + + return $array_terms; + } + + /** + * Insère ou met à jour les données dans la base de donnée. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param Array $data Les données a insérer ou à mêttre à jour. + * @return Object L'objet construit grâce au modèle. + */ + public function update( $data ) { + $model_name = $this->model_name; + $data = (array) $data; + $req_method = ( ! empty( $data['id'] ) ) ? 'put' : 'post'; + $args_cb = array( + 'model_name' => $model_name, + 'req_method' => $req_method, + 'meta_key' => $this->meta_key, + ); + + $data = apply_filters( 'eo_model_term_before_' . $req_method, $data, $args_cb ); + // Il ne faut pas lancer plusieurs fois pour category. + if ( 'category' !== $this->get_type() ) { + $data = apply_filters( 'eo_model_' . $this->get_type() . '_before_' . $req_method, $data, $args_cb ); + } + $args_cb['data'] = $data; + + $object = new $model_name( $data, $req_method ); + + if ( empty( $object->data['id'] ) ) { + $term = wp_insert_term( $object->data['name'], $this->get_type(), $object->convert_to_wordpress() ); + } else { + $term = wp_update_term( $object->data['id'], $this->get_type(), $object->convert_to_wordpress() ); + } + + if ( is_wp_error( $term ) ) { + if ( ! empty( $term->error_data['term_exists'] ) && is_int( $term->error_data['term_exists'] ) ) { + return $this->get( array( + 'id' => $term->error_data['term_exists'], + ), true ); + } + + return $term; + } + + // Lors de la création, $object->data['id'] est vide là, du coup le get ne marchait pas. + $object->data['id'] = $term['term_id']; + + $object = apply_filters( 'eo_model_term_after_' . $req_method, $object, $args_cb ); + $object = $this->get( array( 'id' => $object->data['id'] ), true ); + + // Il ne faut pas lancer plusieurs fois pour category. + if ( 'category' !== $this->get_type() ) { + $object = apply_filters( 'eo_model_' . $this->get_type() . '_after_' . $req_method, $object, $args_cb ); + } + + return $object; + } + + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/class/user.class.php b/core/external/eo-framework/modules/wpeo-model/class/user.class.php new file mode 100644 index 0000000..7414255 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/class/user.class.php @@ -0,0 +1,184 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\User_Class' ) ) { + /** + * Gestion des utilisateurs (POST, PUT, GET, DELETE) + */ + class User_Class extends Object_Class { + /** + * Le nom du modèle + * + * @var string + */ + protected $model_name = '\eoxia\User_Model'; + + /** + * La clé principale pour post_meta + * + * @var string + */ + protected $meta_key = '_wpeo_user'; + + /** + * Utiles pour récupérer la clé unique + * + * @todo Rien à faire ici + * @todo Expliquer la documentation + * + * @var string + */ + protected $identifier_helper = 'user'; + + /** + * User element type + * + * @var string + */ + protected $type = 'user'; + + /** + * Utiles pour DigiRisk + * + * @todo Rien à faire ici + * @var string + */ + public $element_prefix = 'U'; + + /** + * La liste des droits a avoir pour accèder aux différentes méthodes + * + * @var array + */ + protected $capabilities = array( + 'get' => 'list_users', + 'put' => 'edit_users', + 'post' => 'edit_users', + 'delete' => 'delete_users', + ); + + /** + * Slug de base pour la route dans l'api rest + * + * @var string + */ + protected $base = 'user'; + + /** + * Récupères les données selon le modèle définis. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $args Les paramètres de WP_User_Query @see https://codex.wordpress.org/Class_Reference/WP_User_Query. + * @param boolean $single Si on veut récupérer un tableau, ou qu'une seule entrée. + * + * @return Comment_Model + */ + public function get( $args = array(), $single = false ) { + $array_users = array(); + + if ( ! empty( $args['id'] ) ) { + if ( ! isset( $args['include'] ) ) { + $args['include'] = array(); + } + $args['include'] = array_merge( (array) $args['id'], $args['include'] ); + unset( $args['id'] ); + } elseif ( isset( $args['id'] ) ) { + $args['schema'] = true; + } + + $args = apply_filters( 'eo_model_user_before_get', $args ); + + if ( isset( $args['schema'] ) ) { + $array_users[] = $args; + } else { + $array_users = get_users( $args ); + } + + // Traitement de la liste des résultats pour le retour. + $array_users = $this->prepare_items_for_response( $array_users, 'user', $this->meta_key, 'ID' ); + + if ( true === $single && 1 === count( $array_users ) ) { + $array_users = $array_users[0]; + } + + return $array_users; + } + + /** + * Insère ou met à jour les données dans la base de donnée. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param Array $data Les données a insérer ou à mêttre à jour. + * @return Object L'objet construit grâce au modèle. + */ + public function update( $data ) { + $model_name = $this->model_name; + $data = (array) $data; + $req_method = ( ! empty( $data['id'] ) ) ? 'put' : 'post'; + $args_cb = array( + 'model_name' => $model_name, + 'req_method' => $req_method, + 'meta_key' => $this->meta_key, + ); + + if ( 'post' === $req_method ) { + while ( username_exists( $data['login'] ) ) { + $data['login'] .= wp_rand( 1000, 9999 ); + } + } + + if ( ! empty( $data['id'] ) ) { + $current_data = $this->get( array( + 'id' => $data['id'], + ), true ); + $data = Array_Util::g()->recursive_wp_parse_args( $data, $current_data->data ); + } + + $data = apply_filters( 'eo_model_user_before_' . $req_method, $data, $args_cb ); + + $args_cb['data'] = $data; + + $object = new $model_name( $data, $req_method ); + + if ( empty( $object->data['id'] ) ) { + $inserted_user = wp_insert_user( $object->convert_to_wordpress() ); + if ( is_wp_error( $inserted_user ) ) { + return $inserted_user; + } + + $object->data['id'] = $inserted_user; + } else { + + $updated_user = wp_update_user( $object->convert_to_wordpress() ); + if ( is_wp_error( $updated_user ) ) { + return $updated_user; + } + + $object->data['id'] = $updated_user; + } + + $object = apply_filters( 'eo_model_user_after_' . $req_method, $object, $args_cb ); + + return $object; + } + + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/filter/class-comment-filter.php b/core/external/eo-framework/modules/wpeo-model/filter/class-comment-filter.php new file mode 100644 index 0000000..740ca48 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/class-comment-filter.php @@ -0,0 +1,73 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Model\Filter + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Gestion des filtres globaux concernant les dates dans EO_Framework. + */ +class Comment_Filter { + + /** + * Initialisation et appel des différents filtres définis dans EO_Framework. + */ + public function __construct() { + add_filter( 'comments_clauses', array( $this, 'exclude_custom_comments_in_dashboard' ), 10, 2 ); + + add_filter( 'eo_model_comment_after_put', array( $this, 'after_save_comment' ), 5, 2 ); + add_filter( 'eo_model_comment_after_post', array( $this, 'after_save_comment' ), 5, 2 ); + } + + /** + * Exclus les custom comments de la métabox "Activité" du tableau de bord de WordPress. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param array $clauses Les paramètres de la requête pour récupérer les Commentaires. + * @param WP_Comment_Query $query La query. + * + * @return array Les paramètres de la requête avec le comment_type en plus. + */ + function exclude_custom_comments_in_dashboard( $clauses, $query ) { + global $pagenow; + if ( ( 'index.php' == $pagenow && is_admin() ) || is_home() ) { + $clauses['where'] .= ' AND comment_type IN("' . implode( \eoxia\Config_Util::$init['eo-framework']->not__in_display_comment, '","' ) . '")'; + } + + return $clauses; + } + + /** + * Execute des actions complémentaire après avoir mis à jour un objet de type "Comment" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Comment_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return Comment_Model L'objet de type Comment "modifié" par le helper. + */ + function after_save_comment( $object, $args ) { + // Mise à jour des metas. + Save_Meta_Class::g()->save_meta_data( $object, 'update_comment_meta', $args['meta_key'] ); + + return $object; + } + +} + +new Comment_Filter(); diff --git a/core/external/eo-framework/modules/wpeo-model/filter/class-handle-value-filter.php b/core/external/eo-framework/modules/wpeo-model/filter/class-handle-value-filter.php new file mode 100644 index 0000000..d19b0f1 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/class-handle-value-filter.php @@ -0,0 +1,77 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Model\Filter + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Gestion des filtres globaux concernant les dates dans EO_Framework. + */ +class Handle_Value_Filter { + + /** + * Initialisation et appel des différents filtres définis dans EO_Framework. + */ + public function __construct() { + add_filter( 'eo_model_handle_value', array( $this, 'callback_eo_model_handle_value' ), 10, 4 ); + } + + /** + * Filtre permettant de construire un champs de type date à la construction d'un objet. + * + * @param mixed $value La valeur actuelle du champs qu'il faut formater selon le type wpeo_date. + * @param mixed $current_object L'objet actuellement en cours de construction et qu'il faut remplir. + * @param array $field_def La définition complète du champs. Type / Valeur par défaut / Champs dans la base de données. + * @param string $req_method Méthode HTTP actuellement appelée. + * + * @return mixed La valeur du champs actuellement traité. Si il s'agit bien d'un champs de type wpeo_date la valeur aura le format défini dans @see fill_date. + */ + public function callback_eo_model_handle_value( $value, $current_object, $field_def, $req_method ) { + // Traitement spécial des champs date. + if ( 'wpeo_date' === $field_def['type'] ) { + // Dans le cas ou on construit un objet vide ou que l'on ne défini pas la date on prend la date courante (du WordPress) au format mysql. + if ( null === $value ) { + $value = current_time( 'mysql' ); + } + + // Construction du champs date pour le retourner dans l'objet en construction. On ne le construit que si la méthode HTTP actuelle "$req_method" est définie dans le model. + if ( isset( $field_def['context'] ) && in_array( $req_method, $field_def['context'], true ) ) { + $value = array( + 'raw' => $value, + 'rendered' => Date_Util::g()->fill_date( $value ), + ); + } + + if ( in_array( $req_method, array( 'PUT', 'POST' ), true ) && isset( $value['raw'] ) ) { + $value = $value['raw']; + } + + } + + // Traitement spécial pour les champs de type "float" on remplace systèmatiquement les "," par des "." obligatoires pour la base de données. + if ( ( null !== $value ) && ! is_array( $value ) && ! is_object( $value ) && 'float' === $field_def['type'] ) { + $value = (float) str_replace( ',', '.', $value ); + } + + // Si la méthode HTTP appelée est la méthode GET alors on enlève les "slash" en trop. + if ( ( null !== $value ) && ( 'GET' === $req_method ) && ( 'string' === $field_def['type'] ) ) { + $value = stripslashes( $value ); + } + + return $value; + } + +} + +new Handle_Value_Filter(); diff --git a/core/external/eo-framework/modules/wpeo-model/filter/class-post-filter.php b/core/external/eo-framework/modules/wpeo-model/filter/class-post-filter.php new file mode 100644 index 0000000..1a7d626 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/class-post-filter.php @@ -0,0 +1,108 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Model\Filter + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Gestion des filtres globaux concernant les champs de type "float" dans EO_Framework. + */ +class Post_Filter { + + /** + * Initialisation et appel des différents filtres définis dans EO_Framework. + */ + public function __construct() { + add_filter( 'eo_model_post_after_get', array( $this, 'after_get_post' ), 5, 2 ); + + add_filter( 'eo_model_post_after_put', array( $this, 'after_save_post' ), 5, 2 ); + add_filter( 'eo_model_post_after_post', array( $this, 'after_save_post' ), 5, 2 ); + } + + /** + * Execute des actions complémentaire après avoir récupéré un objet de type "Post" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Post_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return Post_Model L'objet de type Post "modifié" par le helper. + */ + function after_get_post( $object, $args ) { + if ( ! empty( $object->data['id'] ) ) { + $model = $object->get_model(); + if ( ! empty( $model['taxonomy']['child'] ) ) { + foreach ( $model['taxonomy']['child'] as $key => $value ) { + $object->data['taxonomy'][ $key ] = wp_get_object_terms( $object->data['id'], $key, array( + 'fields' => 'ids', + ) ); + } + } + } + + return $object; + } + + /** + * Execute des actions complémentaire après avoir mis à jour un objet de type "Post" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Post_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return Post_Model L'objet de type Post "modifié" par le helper. + */ + function after_save_post( $object, $args ) { + // Enregistrement des taxonomies pour l'objet venant d'être enregistré. + if ( ! empty( $object->data['taxonomy'] ) ) { + foreach ( $object->data['taxonomy'] as $taxonomy_name => $taxonomy_data ) { + if ( ! empty( $taxonomy_name ) ) { + if ( is_int( $taxonomy_data ) || is_array( $taxonomy_data ) ) { + wp_set_object_terms( $object->data['id'], $taxonomy_data, $taxonomy_name, $args['append_taxonomies'] ); + } + } + } + } + + // Si on envoi date_modified a notre objet, on modifie en "dur" car bloqué par WordPress de base. + if ( ! empty( $args['data'] ) && ! empty( $args['data']['date_modified'] ) ) { + $final_date = $args['data']['date_modified']; + + if ( isset( $final_date['raw'] ) ) { + $final_date = $final_date['raw']; + } + + $date_time = explode( ' ', $final_date ); + + if ( 1 === count( $date_time ) ) { + $final_date = $final_date . ' ' . current_time( 'H:i:s' ); + } + + $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, array( 'post_modified' => $final_date ), array( 'ID' => $object->data['id'] ) ); + $object->data['date_modified'] = $final_date; + } + + // Mise à jour des metas. + Save_Meta_Class::g()->save_meta_data( $object, 'update_post_meta', $args['meta_key'] ); + + return $object; + } + +} + +new Post_Filter(); diff --git a/core/external/eo-framework/modules/wpeo-model/filter/class-term-filter.php b/core/external/eo-framework/modules/wpeo-model/filter/class-term-filter.php new file mode 100644 index 0000000..adda63b --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/class-term-filter.php @@ -0,0 +1,72 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Model\Filter + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Gestion des filtres globaux concernant les dates dans EO_Framework. + */ +class Term_Filter { + + /** + * Initialisation et appel des différents filtres définis dans EO_Framework. + */ + public function __construct() { + add_filter( 'eo_model_term_after_get', array( $this, 'after_get_term' ), 5, 2 ); + + add_filter( 'eo_model_term_after_put', array( $this, 'after_save_term' ), 5, 2 ); + add_filter( 'eo_model_term_after_post', array( $this, 'after_save_term' ), 5, 2 ); + } + + /** + * Execute des actions complémentaire après avoir mis à jour un objet de type "Term" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Term_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return Term_Model L'objet de type Term "modifié" par le helper. + */ + function after_save_term( $object, $args ) { + // Mise à jour des metas. + Save_Meta_Class::g()->save_meta_data( $object, 'update_term_meta', $args['meta_key'] ); + + return $object; + } + + /** + * Execute des actions complémentaire après avoir mis à jour un objet de type "Term" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Term_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return Term_Model L'objet de type Term "modifié" par le helper. + */ + function after_get_term( $object, $args ) { + if ( ! empty( $args['args']['post_id'] ) ) { + $object['post_id'] = $args['args']['post_id']; + } + + return $object; + } + +} + +new Term_Filter(); diff --git a/core/external/eo-framework/modules/wpeo-model/filter/class-user-filter.php b/core/external/eo-framework/modules/wpeo-model/filter/class-user-filter.php new file mode 100644 index 0000000..3c2feb1 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/class-user-filter.php @@ -0,0 +1,129 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Model\Filter + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Gestion des filtres globaux concernant les champs de type "float" dans EO_Framework. + */ +class User_Filter { + + /** + * Initialisation et appel des différents filtres définis dans EO_Framework. + */ + public function __construct() { + add_filter( 'eo_model_user_after_get', array( $this, 'build_user_initial' ), 5, 2 ); + + add_filter( 'eo_model_user_after_put', array( $this, 'after_save_users' ), 5, 2 ); + add_filter( 'eo_model_user_after_post', array( $this, 'after_save_users' ), 5, 2 ); + + add_filter( 'eo_model_user_after_get_meta', array( $this, 'after_get_meta_users' ), 5, 2 ); + } + + /** + * Construit les initiales des utilisateurs + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param User_class $user Les données de l'utilisateur. + * @return User_class Les données de l'utilisateur avec les intiales + */ + function build_user_initial( $user ) { + $initial = ''; + + if ( ! empty( $user['data']['firstname'] ) ) { + $initial .= substr( $user['data']['firstname'], 0, 1 ); + } + if ( ! empty( $user['data']['lastname'] ) ) { + $initial .= substr( $user['data']['lastname'], 0, 1 ); + } + if ( empty( $initial ) ) { + if ( ! empty( $user['data']['login'] ) ) { + $initial .= substr( $user['data']['login'], 0, 1 ); + } + } + + $user->data['initial'] = $initial; + + return $user; + } + + /** + * Construit la couleur de fond de l'avatar. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param Array $user Les données de l'utilisateur. + * + * @return Array Les données de l'utilisateur avec la couleur de fond de l'avatar. + */ + function build_avatar_color( $user ) { + $avatar_color = array( + 'e9ad4f', + '50a1ed', + 'e05353', + 'e454a2', + '47e58e', + '734fe9', + ); + + $user['data']['avatar_color'] = $avatar_color[ array_rand( $avatar_color, 1 ) ]; + + return $user; + } + + /** + * Execute des actions complémentaire après avoir mis à jour un objet de type "User" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param User_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return User_Model L'objet de type User "modifié" par le helper. + */ + function after_save_users( $object, $args ) { + // Mise à jour des metas. + Save_Meta_Class::g()->save_meta_data( $object, 'update_user_meta', $args['meta_key'] ); + + return $object; + } + + /** + * Execute des actions complémentaire après avoir récupéré les métadonnées d'un objet de type "User" + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param User_Model $object L'objet qu'il faut "modifier". + * @param array $args Les paramètres complémentaires permettant de modifier l'objet. + * + * @return User_Model L'objet de type User "modifié" par le helper. + */ + function after_get_meta_users( $object, $args ) { + + if ( ! empty( $object['data'] ) ) { + $object = array_merge( $object, (array) $object['data'] ); + unset( $object['data'] ); + } + + return $object; + } +} + +new User_Filter(); diff --git a/core/external/eo-framework/modules/wpeo-model/filter/index.php b/core/external/eo-framework/modules/wpeo-model/filter/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/filter/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Attachment_Model' ) ) { + + /** + * Définition des données des attachements + */ + class Attachment_Model extends Post_Model { + + /** + * Définition du modèle principal des attachements + * + * @var array Les champs principaux des attachements + */ + protected $schema = array(); + + /** + * Défini le schéma de WP_Post de type attachment. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Data. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['mime_type'] = array( + 'type' => 'string', + 'field' => 'post_mime_type', + 'context' => array( 'GET' ), + ); + + $this->schema['_wp_attached_file'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => '_wp_attached_file', + ); + + $this->schema['taxonomy'] = array( + 'type' => 'array', + 'meta_type' => 'multiple', + 'child' => array( + Attachment_Class::g()->get_attached_taxonomy() => array( + 'meta_type' => 'multiple', + 'array_type' => 'integer', + 'type' => 'array', + ), + ), + ); + + parent::__construct( $data, $req_method ); + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/model/class-comment-model.php b/core/external/eo-framework/modules/wpeo-model/model/class-comment-model.php new file mode 100644 index 0000000..4e8cf5c --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/model/class-comment-model.php @@ -0,0 +1,119 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Comment_Model' ) ) { + /** + * Définition des données des commentaires + */ + class Comment_Model extends Data_Class { + + /** + * Définition du modèle principal des commentaires + * + * @var array Les champs principaux des commentaires + */ + protected $schema = array(); + + /** + * Le constructeur + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Les données de l'objet. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['id'] = array( + 'type' => 'integer', + 'field' => 'comment_ID', + 'default' => 0, + ); + + $this->schema['parent_id'] = array( + 'type' => 'integer', + 'field' => 'comment_parent', + 'default' => 0, + ); + + $this->schema['post_id'] = array( + 'type' => 'integer', + 'field' => 'comment_post_ID', + 'default' => 0, + ); + + $this->schema['date'] = array( + 'type' => 'wpeo_date', + 'context' => array( 'GET' ), + 'field' => 'comment_date', + ); + + $this->schema['author_id'] = array( + 'type' => 'integer', + 'field' => 'user_id', + 'default' => get_current_user_id(), + ); + + $this->schema['author_nicename'] = array( + 'type' => 'string', + 'field' => 'comment_author', + ); + + $this->schema['author_email'] = array( + 'type' => 'string', + 'field' => 'comment_author_email', + ); + + $this->schema['author_url'] = array( + 'type' => 'string', + 'field' => 'comment_author_url', + ); + + $this->schema['author_ip'] = array( + 'type' => 'string', + 'field' => 'comment_author_IP', + ); + + $this->schema['content'] = array( + 'type' => 'string', + 'field' => 'comment_content', + 'required' => true, + 'default' => '', + ); + + $this->schema['status'] = array( + 'type' => 'string', + 'field' => 'comment_approved', + 'default' => '1', + ); + + $this->schema['agent'] = array( + 'type' => 'string', + 'field' => 'comment_agent', + 'default' => isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '', + ); + + $this->schema['type'] = array( + 'type' => 'string', + 'field' => 'comment_type', + 'required' => true, + ); + + parent::__construct( $data, $req_method ); + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/model/class-post-model.php b/core/external/eo-framework/modules/wpeo-model/model/class-post-model.php new file mode 100644 index 0000000..484c82d --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/model/class-post-model.php @@ -0,0 +1,128 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Post_Model' ) ) { + /** + * Définition des données des posts + */ + class Post_Model extends Data_Class { + + /** + * Définition du modèle principal des posts + * + * @var array Les champs principaux des posts + */ + protected $schema = array(); + + public $data; + + /** + * Défini le schéma de WP_Post. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Data. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['id'] = array( + 'type' => 'integer', + 'field' => 'ID', + 'default' => 0, + ); + + $this->schema['parent_id'] = array( + 'type' => 'integer', + 'field' => 'post_parent', + ); + + $this->schema['author_id'] = array( + 'type' => 'integer', + 'field' => 'post_author', + ); + + $this->schema['date'] = array( + 'type' => 'wpeo_date', + 'field' => 'post_date', + 'context' => array( 'GET' ), + ); + + $this->schema['date_modified'] = array( + 'type' => 'wpeo_date', + 'field' => 'post_modified', + 'context' => array( 'GET' ), + ); + + $this->schema['title'] = array( + 'type' => 'string', + 'field' => 'post_title', + 'default' => '', + ); + + $this->schema['slug'] = array( + 'type' => 'string', + 'field' => 'post_name', + ); + + $this->schema['content'] = array( + 'type' => 'string', + 'field' => 'post_content', + ); + + $this->schema['status'] = array( + 'type' => 'string', + 'field' => 'post_status', + 'default' => 'publish', + ); + + $this->schema['link'] = array( + 'type' => 'string', + 'field' => 'guid', + ); + + $this->schema['type'] = array( + 'type' => 'string', + 'field' => 'post_type', + ); + + $this->schema['order'] = array( + 'type' => 'integer', + 'field' => 'menu_order', + ); + + $this->schema['comment_status'] = array( + 'type' => 'string', + 'field' => 'comment_status', + ); + + $this->schema['comment_count'] = array( + 'type' => 'string', + 'field' => 'comment_count', + ); + + $this->schema['thumbnail_id'] = array( + 'type' => 'integer', + 'meta_type' => 'single', + 'field' => '_thumbnail_id', + 'default' => 0, + ); + + parent::__construct( $data, $req_method ); + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/model/class-term-model.php b/core/external/eo-framework/modules/wpeo-model/model/class-term-model.php new file mode 100644 index 0000000..1444250 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/model/class-term-model.php @@ -0,0 +1,86 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Term_Model' ) ) { + + /** + * Définition des données des terms + */ + class Term_Model extends Data_Class { + + /** + * Définition du modèle principal des taxonomies + * + * @var array Les champs principaux d'une taxonomie + */ + protected $schema = array(); + + /** + * Le constructeur + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Les données de l'objet. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['id'] = array( + 'type' => 'integer', + 'field' => 'term_id', + 'default' => 0, + ); + + $this->schema['type'] = array( + 'type' => 'string', + 'field' => 'taxonomy', + ); + + $this->schema['term_taxonomy_id'] = array( + 'type' => 'integer', + 'field' => 'term_taxonomy_id', + ); + + $this->schema['name'] = array( + 'type' => 'string', + 'field' => 'name', + ); + + $this->schema['description'] = array( + 'type' => 'string', + 'field' => 'description', + ); + + $this->schema['slug'] = array( + 'type' => 'string', + 'field' => 'slug', + ); + + $this->schema['parent_id'] = array( + 'type' => 'integer', + 'field' => 'parent', + ); + + $this->schema['post_id'] = array( + 'type' => 'integer', + 'field' => 'post_id', + ); + + parent::__construct( $data, $req_method ); + } + } +} diff --git a/core/external/eo-framework/modules/wpeo-model/model/class-user-model.php b/core/external/eo-framework/modules/wpeo-model/model/class-user-model.php new file mode 100644 index 0000000..cd208e3 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/model/class-user-model.php @@ -0,0 +1,155 @@ + + * @since 0.1.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\User_Model' ) ) { + /** + * Définition des données des utilisateurs + */ + class User_Model extends Data_Class { + + /** + * Définition des différentes couleurs pour l'avatar + * + * @var array + */ + public $avatar_color = array( '50a1ed' ); + + /** + * L'url pour l'avatar + * + * @var string + */ + private static $gravatar_url = 'http://www.gravatar.com/avatar/'; + + /** + * Définition du modèle principal des utilisateurs + * + * @var array Les champs principaux d'un utilisateur + */ + protected $schema = array(); + + /** + * Le constructeur + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Les données de l'objet. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['id'] = array( + 'type' => 'integer', + 'field' => 'ID', + 'default' => 0, + ); + + $this->schema['email'] = array( + 'type' => 'string', + 'field' => 'user_email', + 'required' => true, + 'default' => '', + 'show_in_rest' => false, + + ); + + $this->schema['login'] = array( + 'type' => 'string', + 'field' => 'user_login', + 'required' => true, + 'show_in_rest' => false, + ); + + $this->schema['password'] = array( + 'type' => 'string', + 'field' => 'user_pass', + 'show_in_rest' => false, + ); + + $this->schema['displayname'] = array( + 'type' => 'string', + 'field' => 'display_name', + ); + + $this->schema['date'] = array( + 'type' => 'string', + 'field' => 'user_registered', + ); + + $this->schema['avatar'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'avatar', + 'default' => '', + ); + + $this->schema['avatar_color'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'avatar_color', + 'default' => '50a1ed', + ); + + $this->schema['initial'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'initial', + 'default' => '', + ); + + $this->schema['firstname'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'first_name', + 'default' => '', + 'show_in_rest' => false, + + ); + + $this->schema['lastname'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'last_name', + 'default' => '', + 'show_in_rest' => false, + + ); + + parent::__construct( $data, $req_method ); + } + + /** + * Retourne l'adresse url de l'image gravatar d'un utilisateur / Return the gravatar picture for a given user. + * Utilisation: il faut utiliser cette valeur dans l'attribut src de la balise image, c'est à ce moment qu'il faut définir les différents paramètres que l'on souhaite (Taille:?s=; Image par défaut:?d=[404|blank|...]) + * Use: Use the value into src attribute of img html tag, parameters have to be set at this moment (Size:?s=; Default picture:?d=[404|blank|...]) + * Documentation complète / Complete documentation : https://fr.gravatar.com/site/implement/images/ + * + * @param object $user Les données de l'utilisateur courant / Current user data. + * + * @return string L'adresse url du gravatar de l'utilisateur / The url address of current user gravatar + */ + public static function build_user_avatar_url( $user ) { + if ( empty( $user ) || empty( $user->user_email ) ) { + return self::$gravatar_url . '00000000000000000000000000000000?d=blank'; + } + + return self::$gravatar_url . md5( $user->user_email ); + } + + } + +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-model/model/index.php b/core/external/eo-framework/modules/wpeo-model/model/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-model/model/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\ODT_Class' ) ) { + + /** + * Gestion des ODT (POST, PUT, GET, DELETE) + */ + class ODT_Class extends Attachment_Class { + + /** + * Le nom du modèle + * + * @var string + */ + protected $model_name = '\eoxia\ODT_Model'; + + /** + * Le type du post + * + * @var string + */ + protected $type = 'document-odt'; + + /** + * Le type du post + * + * @var string + */ + protected $base = 'eo-attachment'; + + /** + * La clé principale pour post_meta + * + * @var string + */ + protected $meta_key = 'eo_attachment'; + + /** + * Nom de la taxonomy + * + * @var string + */ + protected $attached_taxonomy_type = 'attachment_category'; + + + /** + * Le nom pour le resgister post type + * + * @var string + */ + protected $post_type_name = 'ODT'; + + /** + * Utiles pour récupérer la clé unique + * + * @todo Rien à faire ici + * @var string + */ + protected $identifier_helper = 'odt'; + + /** + * Le chemin vers le modèle + * + * @var string + */ + protected $model_path = ''; + + /** + * Les types par défaut des modèles. + * + * @since 1.0.0 + * + * @var array + */ + private $default_types = array( 'model', 'default_model' ); + + /** + * Le nom du modèle ODT. + * + * @since 1.0.0 + * + * @var string + */ + protected $odt_name = ''; + + protected $path = ''; + protected $url = ''; + + /** + * Récupères le chemin vers le dossier frais-pro dans wp-content/uploads + * + * @param string $path_type (Optional) Le type de path. + * + * @return string Le chemin vers le document + */ + public function get_dir_path( $path_type = 'basedir' ) { + $upload_dir = wp_upload_dir(); + $response = str_replace( '\\', '/', $upload_dir[ $path_type ] ); + return $response; + } + + /** + * Récupération de la liste des modèles de fichiers disponible pour un type d'élément + * + * @since 6.0.0 + * + * @param array $model_type Le type du document. + * + * @return array + */ + public function get_default_model( $model_type ) { + if ( 'zip' === $model_type ) { + return; + } + + $response = array( + 'status' => true, + 'id' => null, + 'path' => str_replace( '\\', '/', $this->path . 'core/assets/document_template/' . $this->odt_name . '.odt' ), + 'url' => str_replace( '\\', '/', $this->url . 'core/assets/document_template/' . $this->odt_name . '.odt' ), + // translators: Pour exemple: Le modèle utilisé est: C:\wamp\www\wordpress\wp-content\plugins\digirisk-alpha\core\assets\document_template\document_unique.odt. + 'message' => sprintf( __( 'Le modèle utilisé est: %1$score/assets/document_template/%2$s.odt', 'digirisk' ), $this->path, $this->odt_name ), + ); + + // Merge tous les types ensembles. + $types = array_merge( $this->default_types, (array) $model_type ); + + // Préparation de la query pour récupérer le modèle par défaut selon $model_type. + $tax_query = array( + 'relation' => 'AND', + ); + + if ( ! empty( $types ) ) { + foreach ( $types as $type ) { + $tax_query[] = array( + 'taxonomy' => $this->get_attached_taxonomy(), + 'field' => 'slug', + 'terms' => $type, + ); + } + } + + // Lances la Query pour récupérer le document par défaut selon $model_type. + $query = new \WP_Query( array( + 'fields' => 'ids', + 'post_status' => 'inherit', + 'posts_per_page' => 1, + 'tax_query' => $tax_query, + 'post_type' => array( 'attachment', 'document-odt' ), + ) ); + + // Récupères le document + if ( $query->have_posts() ) { + $upload_dir = wp_upload_dir(); + + $model_id = $query->posts[0]; + $attachment_file_path = str_replace( '\\', '/', get_attached_file( $model_id ) ); + $response['id'] = $model_id; + $response['path'] = str_replace( '\\', '/', $attachment_file_path ); + $response['url'] = str_replace( str_replace( '\\', '/', $upload_dir['basedir'] ), str_replace( '\\', '/', $upload_dir['baseurl'] ), $attachment_file_path ); + + // translators: Pour exemple: Le modèle utilisé est: C:\wamp\www\wordpress\wp-content\plugins\digirisk-alpha\core\assets\document_template\document_unique.odt. + $response['message'] = sprintf( __( 'Le modèle utilisé est: %1$s', 'digirisk' ), $attachment_file_path ); + } + + if ( ! is_file( $response['path'] ) ) { + $response['status'] = false; + $response['message'] = 'Le modèle ' . $response['path'] . ' est introuvable.'; + } + + return $response; + } + + /** + * Récupération de la prochaine version pour un type de document pour le jour J + * + * @since 6.0.0 + * + * @param string $type Le type de document actuellement en cours de création. + * @param integer $element_id L'ID de l'élément. + * + * @return integer La version +1 du document actuellement en cours de création. + */ + public function get_revision( $type, $element_id ) { + global $wpdb; + + // Récupération de la date courante. + $today = getdate(); + + // Définition des paramètres de la requête de récupération des documents du type donné pour la date actuelle. + $args = array( + 'count' => true, + 'posts_per_page' => -1, + 'post_parent' => $element_id, + 'post_type' => $type, + 'post_status' => array( 'publish', 'inherit' ), + 'date_query' => array( + array( + 'year' => $today['year'], + 'month' => $today['mon'], + 'day' => $today['mday'], + ), + ), + ); + + $document_revision = new \WP_Query( $args ); + return ( $document_revision->post_count + 1 ); + } + + /** + * Enregistres les données du document. + * + * @since 1.1.0 + * + * @param mixed $parent_id L'ID où est attaché le document. + * @param array $document_meta Les métadonnées du document. + * @param array $args Arguments supplémentaires. + * + * @return void + */ + public function save_document_data( $parent_id, $document_meta, $args = array() ) { + $response = array(); + + // Récupères le modèle a utiliser pour la futur génération de l'ODT. + $model_infos = $this->get_default_model( $this->get_type() ); + + if ( ! $model_infos['status'] ) { + $response['message'] = $model_infos['message']; + $response['path'] = $model_infos['path']; + return $response; + } + + // On met à jour les informations concernant le document dans la + // base de données. + $document_args = array( + 'model_id' => $model_infos['id'], + 'model_path' => $model_infos['path'], + 'parent_id' => $parent_id, + 'parent' => $args['parent'], + 'status' => 'inherit', + 'document_meta' => $document_meta, + ); + + $document = $this->update( $document_args ); + wp_set_object_terms( $document->data['id'], array( $this->get_type(), 'printed' ), $this->attached_taxonomy_type ); + + $response['document'] = $document; + + return $response; + } + + /** + * Création du document dans la base de données puis appel de la fonction de génération du fichier + * + * @since 1.0.0 + * + * @param object $element L'élément pour lequel il faut créer le document + * @param array $document_meta Les données a écrire dans le modèle de document + * + * @return object Le résultat de la création du document + */ + public function create_document( $document_id ) { + $response = array( + 'status' => true, + 'message' => '', + 'filename' => '', + 'path' => '', + ); + + $document = $this->generate_document( $document_id ); + + $file_info = $this->check_file( $document ); + + if ( $file_info['exists'] ) { + $document->data['mime_type'] = $file_info['mime_type']['type']; + } + + $document->data['file_generated'] = true; + + $document = $this->update( $document->data ); + + $response['document'] = $document; + + return $response; + } + + /** + * Vérification de l'existence d'un fichier à partir de la définition d'un document. + * + * 1- On remplace l'url du site "site_url( '/' )" par le chemin "ABSPATH" contenant les fichiers du site: on vérifie si le fichier existe. + * 2- Si le fichier n'existe pas: + * 2.a- On récupère la meta associée automatiquement par WordPress. + * 2.b- Si la méta n'est pas vide, on vérifie que sa valeur concaténée au chemin absolu des uploads "wp_upload_dir()" de WordPress soit bien un fichier + * + * @since 1.0.0 + * + * @param Document_Model $document La définition du document à vérifier. + * + * @return array Tableau avec le status d'existence du fichier (True/False) et le lien de téléchargement du fichier. + */ + public function check_file( $document ) { + // Définition des valeurs par défaut. + $file_check = array( + 'exists' => false, + 'path' => '', + 'mime_type' => '', + 'link' => '', + ); + + if ( ! empty( $document->data['link'] ) ) { + $file_check['path'] = str_replace( site_url( '/' ), ABSPATH, $document->data['link'] ); + $file_check['link'] = $document->data['link']; + } + + $upload_dir = wp_upload_dir(); + + // Vérification principale. cf 1 ci-dessus. + if ( is_file( $file_check['path'] ) ) { + $file_check['exists'] = true; + } + + // La vérification principale n'a pas fonctionnée. cf 2 ci-dessus. + if ( ! $file_check['exists'] && ! empty( $document->data['_wp_attached_file'] ) ) { + $file_check['path'] = $upload_dir['basedir'] . '/' . $document->data['_wp_attached_file']; + $file_check['link'] = $upload_dir['baseurl'] . '/' . $document->data['_wp_attached_file']; + if ( is_file( $file_check['path'] ) ) { + $file_check['exists'] = true; + } + } + + // Si le fichier existe on récupère le mime type. + if ( $file_check['exists'] ) { + $file_check['mime_type'] = wp_check_filetype( $file_check['path'] ); + } + + return $file_check; + } + + /** + * Création d'un fichier odt a partir d'un modèle de document donné et d'un modèle de donnée + * + * @since 6.0.0 + * + * @param string $model_path Le chemin vers le fichier modèle a utiliser pour la génération. + * @param array $document_content Un tableau contenant le contenu du fichier à écrire selon l'élément en cours d'impression. + * @param string $document_name Le nom du document. + * + * array['status'] boolean True si tout s'est bien passé sinon false. + * array['message'] string Le message informatif de la méthode. + * array['path'] string Le chemin absolu vers le fichier. + * array['url'] string L'url vers le fichier. + * + * @return array (Voir au dessus). + */ + public function generate_document( $document_id ) { + $document = $this->get( array( 'id' => $document_id ), true ); + + $response = array( + 'status' => false, + 'message' => '', + 'path' => '', + 'url' => '', + ); + + if ( empty( $document->data['path'] ) ) { + $response['message'] = 'Document path est vide'; + return $response; + } + + @ini_set( 'memory_limit', '256M' ); + + + require_once $this->path . '/core/external/odtPhpLibrary/odf.php'; + + $upload_dir = wp_upload_dir(); + $directory = str_replace( '\\', '/', $upload_dir['basedir'] ); + + $config = array( + 'PATH_TO_TMP' => $directory . '/tmp', + ); + if ( ! is_dir( $config['PATH_TO_TMP'] ) ) { + wp_mkdir_p( $config['PATH_TO_TMP'] ); + } + + if ( ! is_file( $document->data['model_path'] ) ) { + $response['message'] = $document->data['model_path'] . ' est introuvable'; + return $response; + } + + + // On créé l'instance pour la génération du document odt. + $odf_php_lib = new \DigiOdf( $document->data['model_path'], $config ); + + // Vérification de l'existence d'un contenu a écrire dans le document. + if ( ! empty( $document->data['document_meta'] ) ) { + // Lecture du contenu à écrire dans le document. + foreach ( $document->data['document_meta'] as $data_key => $data_value ) { + if ( is_array( $data_value ) && ! empty( $data_value['raw'] ) ) { + $data_value = $data_value['raw']; + } + + $odf_php_lib = $this->set_document_meta( $data_key, $data_value, $odf_php_lib ); + } + } + + // Vérification de l'existence du dossier de destination. + if ( ! is_dir( dirname( $document->data['path'] ) ) ) { + wp_mkdir_p( dirname( $document->data['path'] ) ); + } + + // Enregistrement du document sur le disque. + $odf_php_lib->saveToDisk( $document->data['path'] ); + + if ( is_file( $document->data['path'] ) ) { + $response['status'] = true; + $response['path'] = $document->data['path']; + } + + return $document; + } + + /** + * Ecris dans le document ODT + * + * @since 6.0.0 + * + * @param string $data_key La clé dans le ODT. + * @param string $data_value La valeur de la clé. + * @param object $current_odf Le document courant. + * + * @return object Le document courant + */ + public function set_document_meta( $data_key, $data_value, $current_odf ) { + // Dans le cas où la donnée a écrire est une valeur "simple" (texte). + if ( ! is_array( $data_value ) ) { + $current_odf->setVars( $data_key, stripslashes( $data_value ), true, 'UTF-8' ); + } else if ( is_array( $data_value ) && isset( $data_value[ 'type' ] ) && !empty( $data_value[ 'type' ] ) ) { + switch ( $data_value[ 'type' ] ) { + + case 'picture': + $current_odf->setImage( $data_key, $data_value[ 'value' ], ( !empty( $data_value[ 'option' ] ) && !empty( $data_value[ 'option' ][ 'size' ] ) ? $data_value[ 'option' ][ 'size' ] : 0 ) ); + break; + + case 'segment': + $segment = $current_odf->setdigiSegment( $data_key ); + + if ( $segment && is_array( $data_value[ 'value' ] ) ) { + foreach ( $data_value[ 'value' ] as $segment_detail ) { + foreach ( $segment_detail as $segment_detail_key => $segment_detail_value ) { + if ( is_array( $segment_detail_value ) && array_key_exists( 'type', $segment_detail_value ) && ( 'sub_segment' == $segment_detail_value[ 'type' ] ) ) { + foreach ( $segment_detail_value[ 'value' ] as $sub_segment_data ) { + foreach ( $sub_segment_data as $sub_segment_data_key => $sub_segment_data_value ) { + $segment->$segment_detail_key = $this->set_document_meta( $sub_segment_data_key, $sub_segment_data_value, $segment->$segment_detail_key ); + } + + $segment->$segment_detail_key->merge(); + } + } + else { + $segment = $this->set_document_meta( $segment_detail_key, $segment_detail_value, $segment ); + } + + } + + $segment->merge(); + } + + $current_odf->mergedigiSegment( $segment ); + } + unset( $segment ); + break; + } + } + + return $current_odf; + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-odt/model/class-odt-model.php b/core/external/eo-framework/modules/wpeo-odt/model/class-odt-model.php new file mode 100644 index 0000000..83c7433 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-odt/model/class-odt-model.php @@ -0,0 +1,75 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 + * @package EO_Framework\EO_Model\Model + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\ODT_Model' ) ) { + + /** + * Définition des données des ODT + */ + class ODT_Model extends Attachment_Model { + + /** + * Définition du modèle principal des attachements + * + * @var array Les champs principaux des attachements + */ + protected $schema = array(); + + /** + * Défini le schéma de WP_Post de type attachment. + * + * @since 0.1.0 + * @version 1.0.0 + * + * @param array $data Data. + * @param mixed $req_method Peut être "GET", "POST", "PUT" ou null. + */ + public function __construct( $data = null, $req_method = null ) { + $this->schema['model_path'] = array( + 'type' => 'string', + 'meta_type' => 'single', + 'field' => 'fp_model_path', + ); + + $this->schema['model_id'] = array( + 'since' => '6.0.0', + 'version' => '6.0.0', + 'type' => 'integer', + 'meta_type' => 'single', + 'field' => '_wpdigi_model_id', + ); + + $this->schema['path'] = array( + 'since' => '6.0.0', + 'version' => '6.0.0', + 'type' => 'string', + 'meta_type' => 'single', + 'field' => '_wpdigi_path', + ); + + $this->schema['file_generated'] = array( + 'since' => '7.0.0', + 'field' => '_file_generated', + 'type' => 'boolean', + 'meta_type' => 'single', + 'default' => false, + ); + + parent::__construct( $data, $req_method ); + } + } +} // End if(). diff --git a/core/external/eo-framework/modules/wpeo-odt/wpeo_odt.config.json b/core/external/eo-framework/modules/wpeo-odt/wpeo_odt.config.json new file mode 100644 index 0000000..0ae1494 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-odt/wpeo_odt.config.json @@ -0,0 +1,12 @@ +{ + "name": "WPEO ODT", + "slug": "wpeo_odt", + "since": "1.1.0", + "description": "Gestion des fichiers ODT", + "state": true, + "path": "core/external/wpeo_odt", + "dependencies": { + "class": {}, + "model": {} + } +} diff --git a/core/external/eo-framework/modules/wpeo-search/action/class-search-action.php b/core/external/eo-framework/modules/wpeo-search/action/class-search-action.php new file mode 100644 index 0000000..561e1c6 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/action/class-search-action.php @@ -0,0 +1,107 @@ + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Action + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +/** + * Search Action Class. + */ +class Search_Action { + + /** + * Constructor. + * + * @since 1.1.0 + */ + public function __construct() { + add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); + + add_action( 'pre_get_posts', array( $this, 'callback_pre_get_posts' ) ); + add_action( 'wp_ajax_eo_search', array( $this, 'callback_search' ) ); + + } + + /** + * Charges le CSS et le JS de WPEO_Search + * + * @since 1.1.0 + */ + public function callback_admin_scripts() { + wp_enqueue_script( 'wpeo_search_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_search->url . '/assets/js/wpeo-search.js', array( 'jquery' ), \eoxia\Config_Util::$init['eo-framework']->wpeo_search->version ); + } + + public function callback_pre_get_posts( $q ) { + $title = $q->get( '_meta_or_title' ); + + if ( $title ) { + add_filter( 'get_meta_sql', function( $sql ) use ( $title ) { + global $wpdb; + + static $nr = 0; + + if ( 0 != $nr++ ) { + return $sql; + } + + $sql['where'] = sprintf( + 'AND ( %s OR %s ) ', + $wpdb->prepare( "{$wpdb->posts} . post_title LIKE '%%%s%%'", $title ), + mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) ) + ); + + return $sql; + } ); + } + } + + /** + * Handle search action. + * + * @since 1.1.0 + */ + public function callback_search() { + $term = ! empty( $_POST['term'] ) ? sanitize_text_field( wp_unslash( $_POST['term'] ) ) : ''; + $slug = ! empty( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : ''; + $type = ! empty( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : ''; + $args = ! empty( $_POST['args'] ) ? json_decode( sanitize_text_field( wp_unslash( $_POST['args'] ) ), true ) : ''; + + $results = Search_Class::g()->search( $term, $type, $args ); + $results = apply_filters( 'eo_search_results_' . $slug, $results ); + + if ( ! empty( $args['next_action'] ) ) { + do_action( $args['next_action'], array( 'term' => $term, 'users' => $results, 'args' => $args ) ); + } + + ob_start(); + if ( 'post' === $type && empty( $args['args']['model_name'] ) ) { + \eoxia\View_Util::exec( 'eo-framework', 'wpeo_search', 'list-post-simple', array( + 'term' => $term, + 'results' => $results, + ) ); + } else { + \eoxia\View_Util::exec( 'eo-framework', 'wpeo_search', 'list-' . $type, array( + 'term' => $term, + 'results' => $results, + ) ); + } + + wp_send_json_success( array( + 'view' => ob_get_clean(), + ) ); + } +} + +new Search_Action(); diff --git a/core/external/eo-framework/modules/wpeo-search/assets/js/wpeo-search.js b/core/external/eo-framework/modules/wpeo-search/assets/js/wpeo-search.js new file mode 100644 index 0000000..2dd3705 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/assets/js/wpeo-search.js @@ -0,0 +1,48 @@ +/** + * Initialise l'objet "search" ainsi que la méthode "init" obligatoire pour la bibliothèque EoxiaJS. + */ + +window.eoxiaJS.search = {}; + +/** + * Init func. + * + * + * @since 1.1.0 + */ +window.eoxiaJS.search.init = function() { + window.eoxiaJS.search.event(); +}; + +/** + * Event func. + * + * @since 1.1.0 + */ +window.eoxiaJS.search.event = function() { + jQuery( document ).on( 'click', '.autocomplete-active li.autocomplete-result', window.eoxiaJS.search.select ); + jQuery( document ).on( 'click', '.wpeo-autocomplete .autocomplete-icon-after', window.eoxiaJS.search.deleteContent ); +}; + + +/** + * Lors de la séléction d'un utilisateur, affectes son ID dans un input caché. + * Affectes également le "data-result" de l'élement cliqué à l'input + * ".autocomplete-search-input". + * + * @since 1.1.0 + */ +window.eoxiaJS.search.select = function() { + jQuery( this ).closest( '.form-element' ).find( 'input[type="hidden"]:first' ).val( jQuery( this ).data( 'id' ) ); + jQuery( this ).closest( '.form-element' ).find( '.autocomplete-search-input' ).val( jQuery( this ).data( 'result' ) ); + console.log(jQuery( this ).closest( '.autocomplete-active' )); + jQuery( this ).closest( '.wpeo-autocomplete.autocomplete-active' ).removeClass( 'autocomplete-active' ); + + jQuery( this ).closest( '.wpeo-autocomplete' ).trigger( 'change', { + element: jQuery( this ), + } ); +}; + +window.eoxiaJS.search.deleteContent = function() { + jQuery( this ).closest( '.form-element' ).find( 'input[type="hidden"]:first' ).val( '' ); +} diff --git a/core/external/eo-framework/modules/wpeo-search/class/class-search.php b/core/external/eo-framework/modules/wpeo-search/class/class-search.php new file mode 100644 index 0000000..a5c81bb --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/class/class-search.php @@ -0,0 +1,170 @@ + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Class + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +/** + * Search Class. + */ +class Search_Class extends Singleton_Util { + + /** + * List of registered search. + * + * @since 1.1.0 + * + * @var array + */ + private $registered_search = array(); + + /** + * Constructor. + * + * @since 1.1.0 + */ + protected function construct() {} + + public function register_search( $slug, $atts ) { + $this->registered_search[ $slug ] = $this->construct_atts( $slug, $atts ); + } + + public function get_registered_search( $slug ) { + return $this->registered_search[ $slug ]; + } + + private function construct_atts( $slug, $atts ) { + $default = array( + 'value' => '', + 'hidden_value' => '', + 'class' => '', + ); + + $atts['slug'] = $slug; + $atts['id'] = ''; + + if ( ! empty( $atts['label'] ) ) { + $atts['id'] = sanitize_title( $atts['label'] ); + } + + $atts = wp_parse_args( $atts, $default ); + + return $atts; + } + + /** + * This method get a registered search in the $registed_search array + * by the $slug. + * + * This method call the "main" view of search module. + * + * @since 1.1.0 + * + * @param array $atts [description] + */ + public function display( $slug, $visible_value = '', $hidden_value = '' ) { + $atts = $this->get_registered_search( $slug ); + + \eoxia\View_Util::exec( 'eo-framework', 'wpeo_search', 'main', array( + 'atts' => $atts, + ) ); + } + + /** + * This method switch by type for call another method. + * + * @since 1.1.0 + * + * @param string $term Term of search. + * @param string $type Type of search. + * @param array $args Other parameters. + * + * @return array Array of results. + */ + public function search( $term, $type, $args ) { + switch ( $type ) { + case "user": + $results = $this->search_user( $term, $args ); + break; + case "post": + $results = $this->search_post( $term, $args ); + break; + default: + break; + } + + return $results; + } + + private function search_user( $term, $data ) { + if ( ! empty( $term ) ) { + $args = array( + 'search' => '*' . $term . '*', + ); + + if ( ! empty( $data['args'] ) ) { + $args = array_merge( $args, $data['args'] ); + } + + $results = User_Class::g()->get( $args ); + } else { + $results = User_Class::g()->get( array( + 'exclude' => array( 1 ), + ) ); + } + + return $results; + } + + private function search_post( $term, $data ) { + $results = array(); + + // $get_args = array( 'meta_or_title' => $term ); + + $get_args = array( 's' => $term ); + + if ( ! empty( $data['args']['meta_query'] ) ) { + $get_args['meta_query'] = $this->construct_meta_query( $term, $data['args']['meta_query'] ); + } + + $get_args = array_merge( $get_args, $data['args'] ); + + if ( ! empty( $data['args']['model_name'] ) ) { + foreach ( $data['args']['model_name'] as $model_name ) { + $results = array_merge( $results, $model_name::g()->get( $get_args ) ); + } + } else { + $get_args['posts_per_page'] = -1; + $results = get_posts( $get_args ); + } + + return $results; + } + + private function construct_meta_query( $term, $args_meta_query ) { + if ( ! empty( $args_meta_query ) ) { + foreach ( $args_meta_query as &$meta_data ) { + if ( ! empty( $meta_data ) && is_array( $meta_data ) ) { + $meta_data['value'] = $term; + } + } + } + + return $args_meta_query; + } +} + +global $eo_search; +$eo_search = Search_Class::g(); diff --git a/core/external/eo-framework/modules/wpeo-search/shortcode/class-search-shortcode.php b/core/external/eo-framework/modules/wpeo-search/shortcode/class-search-shortcode.php new file mode 100644 index 0000000..43b1780 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/shortcode/class-search-shortcode.php @@ -0,0 +1,58 @@ + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Shortcode + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +/** + * Search Shortcode Class. + */ +class Search_Shortcode { + + /** + * Constructor. + * + * @since 1.1.0 + */ + public function __construct() { + add_shortcode( 'wpeo_search', array( $this, 'callback_wpeo_search' ) ); + } + + /** + * Handle search shortcode. + * + * @param array $atts Attributes used by the shortcode. + * + * @since 1.1.0 + */ + public function callback_wpeo_search( $atts ) { + $atts = shortcode_atts( array( + 'label' => '', + 'slug' => '', + 'name' => 'id', + 'id' => '', + 'type' => 'post', + 'icon' => '', + 'value' => '', + 'class' => '', + 'placeholder' => '', + 'args' => array(), + ), $atts, 'wpeo_search' ); + + Search_Class::g()->display( $atts ); + } +} + +new Search_Shortcode(); diff --git a/core/external/eo-framework/modules/wpeo-search/view/list-post-simple.view.php b/core/external/eo-framework/modules/wpeo-search/view/list-post-simple.view.php new file mode 100644 index 0000000..4ed84e9 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/view/list-post-simple.view.php @@ -0,0 +1,37 @@ + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Template + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +if ( ! empty( $results ) ) : + foreach ( $results as $post ) : + ?> +
  • +
    + post_title ); ?> +
    +
  • + +
  • +
    + Aucun résultat + Avec le terme de recherche: +
  • + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Template + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +if ( ! empty( $results ) ) : + foreach ( $results as $post ) : + ?> +
  • +
    + data['title'] ); ?> + + data['content'] ) ) : + ?> + data['content'], 0, 30 ) ); ?>... + +
    +
  • + +
  • +
    + Aucun résultat + Avec le terme de recherche: +
  • + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Template + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; + +if ( ! empty( $results ) ) : + foreach ( $results as $user ) : + ?> +
  • + data['id'], 32, '', '', array( 'class' => 'autocomplete-result-image autocomplete-image-rounded' ) ); ?> +
    + data['displayname'] ); ?> + data['email'] ); ?> +
    +
  • + +
  • +
    + Aucun résultat + Avec le terme de recherche: +
  • + + * @copyright (c) 2015-2018 Eoxia . + * + * @license GPLv3 + * + * @package EO_Framework\EO_Search\Template + * + * @since 1.1.0 + */ + +namespace eoxia; + +defined( 'ABSPATH' ) || exit; ?> + +
    + + + + + + +
    +
    + + + +
      +
      +
      +
      diff --git a/core/external/eo-framework/modules/wpeo-search/wpeo_search.config.json b/core/external/eo-framework/modules/wpeo-search/wpeo_search.config.json new file mode 100644 index 0000000..59eab1d --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-search/wpeo_search.config.json @@ -0,0 +1,13 @@ +{ + "name": "WPEO Search", + "slug": "wpeo_search", + "version": "1.1.0", + "since": "1.1.0", + "description": "Able to search post or user", + "path": "modules/wpeo-search", + "dependencies": { + "action": {}, + "class": {}, + "shortcode": {} + } +} diff --git a/core/external/eo-framework/modules/wpeo-update-manager/action/class-update-manager-action.php b/core/external/eo-framework/modules/wpeo-update-manager/action/class-update-manager-action.php new file mode 100644 index 0000000..e8ef768 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-update-manager/action/class-update-manager-action.php @@ -0,0 +1,101 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Update_Manager\Action + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * Classe de gestion des "actions" pour le module de mise à jour des données suite aux différentes version de l'extension + */ +class Update_Manager_Action { + + /** + * Définition du namespace courant pour le module de mise à jour. + * + * @var string + */ + protected $current_plugin_slug = null; + + /** + * Instanciation de la classe de gestions des mises à jour des données suite aux différentes versions de l'extension + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function __construct() { + $element_namespace = new \ReflectionClass( get_called_class() ); + $this->current_plugin_slug = str_replace( '_', '-', $element_namespace->getNamespaceName() ); + + add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); + } + + /** + * Charges le CSS et le JS de WPEO_Update_Manager + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function callback_admin_scripts() { + wp_enqueue_style( 'wpeo_update_manager_style', \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->url . '/assets/css/style.css', array() ); + wp_enqueue_script( 'wpeo_update_manager_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->url . '/assets/js/wpeo-update-manager.js', array( 'jquery', 'jquery-form' ), \eoxia\Config_Util::$init['eo-framework']->wpeo_update_manager->version ); + } + + /** + * On récupère la version actuelle de l'extension principale pour savoir si une mise à jour est nécessaire + * On regarde également si des mises à jour n'ont pas été faite suite à un suivi des mises à jours non régulier + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function automatic_update_redirect() { + $waiting_updates = get_option( Config_Util::$init[ $this->current_plugin_slug ]->key_waiting_updates, array() ); + + if ( ! strpos( $_SERVER['REQUEST_URI'], 'admin-ajax.php' ) ) { + $current_version_to_check = (int) str_replace( '.', '', Config_Util::$init[ $this->current_plugin_slug ]->version ); + $last_version_done = (int) get_option( Config_Util::$init[ $this->current_plugin_slug ]->key_last_update_version, Config_Util::$init[ $this->current_plugin_slug ]->update_manager->first_version ); + if ( 3 === strlen( $current_version_to_check ) ) { + $current_version_to_check *= 10; + } + + if ( $last_version_done !== $current_version_to_check ) { + $update_data_path = Config_Util::$init[ $this->current_plugin_slug ]->update_manager->path . 'data/'; + for ( $i = ( (int) substr( $last_version_done, 0, 4 ) + 1 ); $i <= $current_version_to_check; $i++ ) { + if ( is_file( $update_data_path . 'update-' . $i . '-data.php' ) ) { + require_once $update_data_path . 'update-' . $i . '-data.php'; + $waiting_updates[ $i ] = $datas; + + update_option( Config_Util::$init[ $this->current_plugin_slug ]->key_waiting_updates, $waiting_updates ); + } + } + } + } + } + + /** + * Ajoutes une page invisible qui vas permettre la gestion des mises à jour. + * + * @return void + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function callback_admin_menu() { + + $element_namespace = new \ReflectionClass( get_called_class() ); + $current_plugin_update_manager = '\\' . $element_namespace->getNamespaceName() . '\Update_Manager'; + add_submenu_page( 'eo-update-manager-' . $this->current_plugin_slug, __( 'Update Manager', 'eoxia' ), __( 'Update Manager', 'eoxia' ), 'manage_options', Config_Util::$init[ $this->current_plugin_slug ]->update_page_url, array( $current_plugin_update_manager::g(), 'display' ) ); + + } + +} diff --git a/core/external/eo-framework/modules/wpeo-update-manager/action/index.php b/core/external/eo-framework/modules/wpeo-update-manager/action/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-update-manager/action/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Update_Manager\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\Update_Manager_Class' ) ) { + + /** + * Classe principale pour le module de mise à jour des données suite aux différentes version de l'extension + */ + class Update_Manager_Class extends \eoxia\Singleton_Util { + + /** + * Fonction construct obligatoire pour l'extend de singleton_util + */ + function construct(){} + + /** + * Affichage de la popup indiquant la nécessité d'une mise à jour des données. + * + * @param string $namespace Le namespace du plugin pour récupérer les variables. + * @param string $title Le titre de la popup indiquant la mise à jour. + */ + function display_say_to_update( $namespace, $title ) { + \eoxia\View_Util::exec( 'eo-framework', 'wpeo_update_manager', 'say-to-update', array( + 'namespace' => $namespace, + 'title' => $title, + ) ); + } + + } + +} diff --git a/core/external/eo-framework/modules/wpeo-update-manager/index.php b/core/external/eo-framework/modules/wpeo-update-manager/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-update-manager/index.php @@ -0,0 +1,2 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Update_Manager\View + */ + +namespace task_manager; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +
      + + + +
      + + + $data ) : ?> +

      + +
      +

      +

      +
      + +
      + $def ) : + $total_number = null; + $stats = ''; + if ( isset( $def['count_callback'] ) && ! empty( $def['count_callback'] ) ) { + $total_number = call_user_func( $def['count_callback'] ); + $stats = '0 / ' . $total_number; + if ( 0 === $total_number ) { + $stats = __( 'No update requires for your installation', 'eoxia' ); + } + } + ?> +
      +
      +
      + + +
      +
      +
      + + +
      +
      +
      +
      +
      + + +
      +
       
      +
      +
      +
      +
      +
      +
      +
      + +
      + +
      +
      + + + +
      +
      +
      + +

      + + + +
      +
      diff --git a/core/external/eo-framework/modules/wpeo-update-manager/view/say-to-update.view.php b/core/external/eo-framework/modules/wpeo-update-manager/view/say-to-update.view.php new file mode 100644 index 0000000..0050d76 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-update-manager/view/say-to-update.view.php @@ -0,0 +1,35 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2015-2018 Eoxia + * @package EO_Framework\EO_Update_Manager\View + */ + +namespace task_manager; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + diff --git a/core/external/eo-framework/modules/wpeo-update-manager/wpeo_update_manager.config.json b/core/external/eo-framework/modules/wpeo-update-manager/wpeo_update_manager.config.json new file mode 100644 index 0000000..2edc2e0 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-update-manager/wpeo_update_manager.config.json @@ -0,0 +1,12 @@ +{ + "name": "Update manager", + "slug": "wpeo_update_manager", + "since": "1.0.0", + "version": "1.0.0", + "description": "Le module gérant les mises à jour", + "path": "modules/wpeo-update-manager", + "dependencies": { + "class": {}, + "action": {} + } +} diff --git a/core/external/eo-framework/modules/wpeo-upload/README.md b/core/external/eo-framework/modules/wpeo-upload/README.md new file mode 100644 index 0000000..2061edf --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/README.md @@ -0,0 +1,141 @@ +# wpeo-upload + +Script complet PHP ainsi que CSS/JS pour gérer les medias et la galerie d'un élement "POST (CPT) de WordPress dans vos développement de plugin, WPEO_Upload est inclus dans [EO-Framework](https://github.com/Eoxia/eo-framework). + +# Docs WPEO Upload 1.0.x + +Gestion de l'upload de ressource dans WordPress en utilisant wp.media. + +WPEO Upload est dépendant de: +* [EO-Framework](https://github.com/Eoxia/eo-framework) >= 1.x.x + +## Fonctionnalités + +* Shortcode +* Upload de fichier dans tous les POST (CPT) de WordPress +* Upload de plusieurs fichiers dans les POST (CPT) de WordPress +* Galerie de navigation avec différentes actions: + * Changer l'image en vignette (\_thubmnail_id) + * Uploader une ressource (image, audio, application...) + * Dissocier une ressource (image, audio, application...) +* Gestion des mimes types. + +# Shortcode + +Le shortcode __[wpeo_upload]__ permet d'utiliser WPEO Upload directement dans vos templates. + +Les différents paramètres: +* __id__ (integer) : Le post ID. *defaut: 0* +* __title__ (string) : Le titre de la galerie (popup). *default: "Téléverser un média". +* __mode__ (string) : Mode édition, ou vue. *default: "edit". Peut être "edit" ou "view". +* __field_name__ (string) : Le champ ou vas être enregistrer les ID des ressources. *defaut: thumbnail_id* +* __model_name__ (string) : Obligatoire pour **WPEO_Model**. *defaut: \\eoxia\\Post_Class* +* __custom_class__ (string) : Utiles si vous devez utiliser plusieurs fois le bouton dans un même template pour le même POST. *defaut: empty* +* __size__ (string) : Comme les tailles de WordPress: thumbnail, medium, full. *defaut: thumbnail* +* __single__ (string) : Si vous voulez pouvoir uploader plusieurs ressources pour cet élément ou pas. *défaut: true* +* __mime_type__ (string) : Permet de définir le mime_type des fichiers à upload et de filtrer la vue de wp.media. *defaut: image*. Peut être "application", "image", "audio", ... + +## En savoir plus sur WPEO_Model + +**WPEO_Model** est inclus dans [EO-Framework](https://github.com/Eoxia/eo-framework). Voir la doc [WPEO_Model](https://github.com/Eoxia/eo-framework/edit/master/modules/wpeo-model), ce n'est pas obligatoire pour utiliser WPEO_Upload. + +## Exemple d'utilisation + +### Association d'une seule image dans le champ 'thumbnail_id' pour le *POST* 1. + +__[wpeo_upload id=1]__ + +### Association de plusieurs image dans le champ associated_document['images'] pour le *POST* 1 + +__[wpeo_upload id=1 single="false" field_name="images"]__ + +### Association d'une seule image dans le champ 'thumbnail_id' pour le *POST* 1 en utilisant l'objet *Model_Class* dans le namespace *namespace*. + +_Attention_: le double backslashes n'est pas une erreur. C'est obligatoire pour faire passer le paramètre au shortcode. La méthode PHP s'occupe de remplacer le double blaskslashes par un slashes, dans notre cas: \\namespace\\Model_Class devient /namespace/Model_Class. + +__[wpeo_upload id=1 model_name="\\\namespace\\\Model_Class"]__ + +# Le paramètre boolean "single" + +Single permet de définir si l'élément peut contenir plusieurs ressources ou au contraire, uniquement une seule. + +## SI true + +Le POST ne peut contenir qu'une __seule__ ressource qui sera enregistrée dans __thumbnail_id__. + +## SI false + +Le POST peut contenir __plusieurs__ dans une meta qui sera défini par __field_name__. Attention, le champ par défaut __thumbnail_id__ de WordPress ne permet pas d'enregister un tableau d'ID. +Pour utiliser le paramètre __single__ à __false__, il faut obligatoirement définir le paramètre __field_name__. + +# Peut-on avoir plusieurs ressources dans un seul élement ? +Oui. Il est important de comprendre que si __single__ est à __false__ vous pouvez enregistrer plusieurs ressources sur l'élément. Seulement vous ne pouvez pas définir __plusieurs__ shortcodes pour un élement. + +# La galerie + +La galerie s'ouvre après avoir effectuer un deuxième clic sur le bouton "upload" après avoir envoyé une ressource. + +Si votre mime_type est de type "image", vous aurez un aperçu de vos images dans la galerie. +Sinon, pour tout autre mime_type, l'aperçu ne sera pas disponible. + +# Le bouton "upload" généré par le shortcode + +[image_du_bouton_a_faire] + +Description à faire + +# Utiliser WPEO_Upload sans shortcode + +Toutes les fonctions qui suivent se trouve dans l'objet __wpeo-upload.class.php__ dans le dossier *class* + +Le paramètre **$model_name** est expliqué dans la documentation de [WPEO_Model](https://github.com/Eoxia/wpeo_model/). + +## Associer une ressource au thumbnail pour un element + +WPEO_Upload_Class::g()->set_thumbnail( $data ); + +Le tableau $data doit contenir: + +* integer $id L'ID de l'élement ou la ressource sera associé. (Ne peut pas être vide) +* integer $file_id L'ID de la ressource. +* string $model_name Le modèle à utiliser. + +## Associer une ressource au tableau associated_document['image'] + +WPEO_Upload_Class::g()->associate_file( $data ); + +Le tableau $data doit contenir: + +* integer $id L'ID de l'élement ou la ressource sera associé. (Ne peut être vide) +* integer $file_id L'ID de la ressource. (Ne peut être vide) +* string **$model_name** Le modèle à utiliser. [WPEO_Model](https://github.com/Eoxia/wpeo_model/). +* string **$field_name** Le nom du champ de la meta ou sera enregistré les ressources. Ce champ doit être défini dans la définition de votre modèle. Voir [WPEO_Model](https://github.com/Eoxia/wpeo_model/). + +## Dissocier une ressource au tableau associated_document['image'] + +WPEO_Upload_Class::g()->dissociate_file( $data ); + +Le tableau $data doit contenir: + +* integer $id L'ID de l'élement ou la ressource sera dissocié. (Ne peut être vide) +* integer $file_id L'ID de la ressource. (Ne peut être vide) +* string **$model_name** Le modèle à utiliser. [WPEO_Model](https://github.com/Eoxia/wpeo_model/). +* string **$field_name** Le nom du champ de la meta ou sera enregistré les ressources. Ce champ doit être défini dans la définition de votre modèle. Voir [WPEO_Model](https://github.com/Eoxia/wpeo_model/). + +## Récupéres le template de la galerie pour un élement + +WPEO_Upload_Class::g()->display_gallery( $data ); + +Le tableau $data doit contenir: + +* integer $id L'ID de l'élement ou la ressource sera dissocié. (Ne peut être vide) +* string **$model_name** Le modèle à utiliser. [WPEO_Model](https://github.com/Eoxia/wpeo_model/). +* string **$field_name** Le nom du champ de la meta ou sera enregistré les ressources. Ce champ doit être défini dans la définition de votre modèle. Voir [WPEO_Model](https://github.com/Eoxia/wpeo_model/). +* string $size La taille de la ressource affichée. Peut être thumbnail, medium ou full. Par défaut thumbnail. +* boolean $single Voir le point de cette documentation # Le paramètre boolean "single". Par défaut false. +* string $mime_type Permet de définir le mime_type des fichiers à upload et de filtrer la vue de wp.media. *defaut: empty* + +# TODO + +* WPEO_Upload 2.0.0: Utilise wp.media pour utiliser pleinement toutes les fonctionnalitées de WordPress. Pas de date définie pour cette tâche. +* Faire le point: Le bouton "upload" généré par le shortcode diff --git a/core/external/eo-framework/modules/wpeo-upload/action/index.php b/core/external/eo-framework/modules/wpeo-upload/action/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/action/index.php @@ -0,0 +1,2 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2016-2018 Eoxia + * @package EO_Framework\EO_Upload\Action + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\WPEO_Upload_Action' ) ) { + /** + * Actions for wpeo_upload. + */ + class WPEO_Upload_Action { + + /** + * Add actions + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ + public function __construct() { + add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); + add_action( 'init', array( $this, 'callback_plugins_loaded' ) ); + + add_action( 'wp_ajax_eo_upload_associate_file', array( $this, 'callback_associate_file' ) ); + add_action( 'wp_ajax_eo_upload_dissociate_file', array( $this, 'callback_dissociate_file' ) ); + + add_action( 'wp_ajax_eo_upload_load_gallery', array( $this, 'callback_load_gallery' ) ); + add_action( 'wp_ajax_eo_upload_set_thumbnail', array( $this, 'callback_set_thumbnail' ) ); + } + + /** + * Charges le CSS et le JS de WPEO_Upload + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function callback_admin_scripts() { + wp_enqueue_style( 'wpeo_upload_style', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->url . '/assets/css/style.css', array() ); + wp_enqueue_script( 'wpeo_upload_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->url . '/assets/js/wpeo-upload.js', array( 'jquery' ), \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->version ); + } + + /** + * Initialise le fichier MO + * + * @since 1.0.0 + * @version 1.0.0 + */ + public function callback_plugins_loaded() { + $path = str_replace( str_replace( '\\', '/', WP_PLUGIN_DIR ), '', str_replace( '\\', '/', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path ) ); + load_plugin_textdomain( 'wpeo-upload', false, $path . '/asset/language/' ); + } + + /** + * Associate a file to an element. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @return void + * @todo: nonce + */ + public function callback_associate_file() { + error_reporting(1); + // check_ajax_referer( 'associate_file' ); + + $data = WPEO_Upload_Class::g()->get_post_data( 'associate_file' ); + + $view = ''; + $document_view = ''; + + if ( ! empty( $data['file_id'] ) && ! empty( $data['upload_dir'] ) ) { + $wp_upload_dir = wp_upload_dir(); + $path = str_replace( '\\', '/', $wp_upload_dir['path'] ); + $basedir = str_replace( '\\', '/', $wp_upload_dir['basedir'] ); + $baseurl = str_replace( '\\', '/', $wp_upload_dir['baseurl'] ); + + $file = get_post( $data['file_id'] ); + $file_path = str_replace( $wp_upload_dir['url'], $path, $file->guid ); + $basename = basename( $file->guid ); + $new_path = $basedir . '/' . $data['upload_dir'] . '/' . $basename; + $new_url = $baseurl . '/' . $data['upload_dir'] . '/' . $basename; + + rename( $file_path, $new_path ); + + global $wpdb; + + $wpdb->query( $wpdb->prepare("UPDATE {$wpdb->posts} SET guid=%s WHERE ID=%d", array( $new_url, $data['file_id'] ) ) ); + update_post_meta( $data['file_id'], '_wp_attached_file', $data['upload_dir'] . '/' . $basename ); + set_post_type( $data['file_id'], 'wps-file' ); + } + + // If post ID is not empty. + if ( ! empty( $data['id'] ) ) { + if ( 'true' === $data['single'] ) { + $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); + } else { + $element = WPEO_Upload_Class::g()->associate_file( $data ); + + if ( empty( $element->data['thumbnail_id'] ) ) { + $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); + } + } + if ( ! empty( $element->data['id'] ) ) { + ob_start(); + do_shortcode( '[wpeo_upload id="' . $element->data['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); + $view = ob_get_clean(); + } + } else { + if ( 'application' === $data['mime_type'] ) { + $document_view = '
      '; + } + } + + if ( 'list' === $data['display_type'] ) { + $filelink = get_attached_file( $data['file_id'] ); + $filename_only = basename( $filelink ); + $file = get_post( $data['file_id'] ); + $fileurl_only = $file->guid; + $field_name = $data['field_name']; + $file_id = $data['file_id']; + + ob_start(); + $view = apply_filters( 'wpeo_upload_view_list_item', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $data['display_type'] . '/list-item.view.php' ); + require( $view ); + $view = ob_get_clean(); + } + + $media_view = wp_get_attachment_image( $data['file_id'], $data['size'] ); + + wp_send_json_success( array( + 'view' => $view, + 'document_view' => $document_view, + 'id' => $data['id'], + 'display_type' => $data['display_type'], + 'media' => ! empty( $media_view ) ? $media_view : '', + ) ); + } + + /** + * Delete the index founded in the array + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @return void + */ + public function callback_dissociate_file() { + $data = WPEO_Upload_Class::g()->get_post_data( 'dissociate_file' ); + + $element = WPEO_Upload_Class::g()->dissociate_file( $data ); + + ob_start(); + do_shortcode( '[wpeo_upload id="' . $element->data['date']['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); + wp_send_json_success( array( + 'namespace' => '', + 'module' => 'gallery', + 'callback_success' => 'dissociatedFileSuccess', + 'view' => ob_get_clean(), + 'id' => $data['id'], + 'close_popup' => ! empty( $element->data['data']['associated_document_id'][ $data['field_name'] ] ) ? false : true, + ) ); + } + + /** + * Load all image and return the display gallery view. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @return void + */ + public function callback_load_gallery() { + // check_ajax_referer( 'load_gallery' ); + + $data = WPEO_Upload_Class::g()->get_post_data( 'load_gallery' ); + + ob_start(); + require( \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $data['display_type'] . '/gallery/button-add.view.php' ); + $data['title'] .= ob_get_clean(); + + ob_start(); + WPEO_Upload_Class::g()->display_gallery( $data ); + wp_send_json_success( array( + 'view' => ob_get_clean(), + ) ); + } + + /** + * Update the thumbnail of an element. + * The thumbnail ID is not used. The thumbnail of an element is the first index of the array $field_name. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @return void + */ + public function callback_set_thumbnail() { + $data = WPEO_Upload_Class::g()->get_post_data( 'set_thumbnail' ); + + $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); + + ob_start(); + do_shortcode( '[wpeo_upload id="' . $element->data['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); + wp_send_json_success( array( + 'namespace' => '', + 'module' => 'gallery', + 'callback_success' => 'successfulSetThumbnail', + 'view' => ob_get_clean(), + 'id' => $data['id'], + 'file_id' => $data['file_id'], + ) ); + } + } + + new WPEO_Upload_Action(); +} diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/index.php b/core/external/eo-framework/modules/wpeo-upload/assets/css/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/index.php @@ -0,0 +1,2 @@ + classe principale + # .no-file -> permet de savoir si le module possède une image ou non + +--------------------------------------------------------------*/ + +.media, .wpeo-media { + display: block; + width: 50px; + min-width: 50px; + height: 50px; + position: relative; + background: rgba(0,0,0,0.1); + text-align: center; + @include transition; + + .default-icon-container { + width: 100%; + line-height: 50px; + text-align: center; + + .svg-inline--fa { + color: rgba(0,0,0,0.4); + line-height: 50px; + font-weight: 400; + font-size: 16px; + } + } + .button-add { + position: absolute; + display: inline-block; + pointer-events: none; + @include transition; + } + + &:not(.no-file) .button-add { + opacity: 0; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + color: #fff; + } + &.no-file .button-add { + opacity: 1; + top: 10px; + right: 10px; + color: rgba(0,0,0,0.2); + } + + &:hover { + cursor: pointer; + .button-add { + animation-fill-mode: both; + animation-duration: 1s; + opacity: 1; + } + &:not(.no-file) .button-add { + animation-name: fileAdd; + } + &.no-file .button-add { + animation-name: noFileAdd; + } + } + + img { + width: 100%; + height: auto; + } +} + +/** Mode lecture seulement */ +.media, .wpeo-media { + &[data-mode="view"] { + &.no-file { + pointer-events: none; + + &:hover { + cursor: auto; + } + } + .button-add { + display: none; + } + } +} + +/* Document */ +.media, .wpeo-media { + &:not(.no-file) .document { + background: $color__blue; + .svg-inline--fa { + color: #fff !important; + } + } +} diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/index.php b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/index.php @@ -0,0 +1,2 @@ +>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# Normalize +# fonticons +# Modules + ## Notification + +--------------------------------------------------------------*/ + +@import "mixins/mixins-master"; +@import "variables/variables"; + +/*-------------------------------------------------------------- +# Elements +--------------------------------------------------------------*/ +@import "element/element"; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_colors.scss b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_colors.scss new file mode 100644 index 0000000..5fac466 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_colors.scss @@ -0,0 +1,11 @@ +$color__text-main: #333333; + +$color__primary: #898de5; +$color__primary-text: #fff; + +$color__red: #e05353; +$color__yellow: #e9ad4f; +$color__dark: #2b2b2b; +$color__grey: #ececec; +$color__blue: #0d8aff; +$color__green: #47e58e; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_structure.scss b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_structure.scss new file mode 100644 index 0000000..35d9bac --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_structure.scss @@ -0,0 +1,3 @@ +$media__large: 1200px; +$media__medium: 770px; +$media__small: 480px; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_typography.scss b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_typography.scss new file mode 100644 index 0000000..257e2d7 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_typography.scss @@ -0,0 +1,2 @@ +$font__main: 'Open Sans'; +$font__icon: 'FontAwesome'; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_variables.scss b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_variables.scss new file mode 100644 index 0000000..72ab884 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/scss/variables/_variables.scss @@ -0,0 +1,3 @@ +@import "colors"; +@import "typography"; +@import "structure"; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/style.css b/core/external/eo-framework/modules/wpeo-upload/assets/css/style.css new file mode 100644 index 0000000..045e352 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/style.css @@ -0,0 +1,381 @@ +/*! + EOXIA FRAMEWORK CSS + Created by Eoxia + + version: 1.2.0 +*/ +@-webkit-keyframes noFileAdd { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 20% { + -webkit-transform: scale3d(1.4, 1.4, 1.4); + transform: scale3d(1.4, 1.4, 1.4); } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 60% { + -webkit-transform: scale3d(1.2, 1.2, 1.2); + transform: scale3d(1.2, 1.2, 1.2); } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } +@-o-keyframes noFileAdd { + 0, 20%, 40%, 60%, 80%, to { + -o-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + transform: scale3d(1, 1, 1); } + 20% { + transform: scale3d(1.4, 1.4, 1.4); } + 40% { + transform: scale3d(0.9, 0.9, 0.9); } + 60% { + transform: scale3d(1.2, 1.2, 1.2); } + 80% { + transform: scale3d(0.97, 0.97, 0.97); } + to { + transform: scale3d(1, 1, 1); } } +@keyframes noFileAdd { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -o-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } + 20% { + -webkit-transform: scale3d(1.4, 1.4, 1.4); + transform: scale3d(1.4, 1.4, 1.4); } + 40% { + -webkit-transform: scale3d(0.9, 0.9, 0.9); + transform: scale3d(0.9, 0.9, 0.9); } + 60% { + -webkit-transform: scale3d(1.2, 1.2, 1.2); + transform: scale3d(1.2, 1.2, 1.2); } + 80% { + -webkit-transform: scale3d(0.97, 0.97, 0.97); + transform: scale3d(0.97, 0.97, 0.97); } + to { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); } } + +@-webkit-keyframes fileAdd { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); } + 20% { + -webkit-transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); } + 40% { + -webkit-transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); } + 60% { + -webkit-transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); } + 80% { + -webkit-transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); } + to { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); } } + +@-o-keyframes fileAdd { + 0, 20%, 40%, 60%, 80%, to { + -o-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + transform: translate(-50%, -50%) scale3d(1, 1, 1); } + 20% { + transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); } + 40% { + transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); } + 60% { + transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); } + 80% { + transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); } + to { + transform: translate(-50%, -50%) scale3d(1, 1, 1); } } + +@keyframes fileAdd { + 0, 20%, 40%, 60%, 80%, to { + -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + -o-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } + 0% { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); } + 20% { + -webkit-transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); + transform: translate(-50%, -50%) scale3d(1.4, 1.4, 1.4); } + 40% { + -webkit-transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); + transform: translate(-50%, -50%) scale3d(0.9, 0.9, 0.9); } + 60% { + -webkit-transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); + transform: translate(-50%, -50%) scale3d(1.2, 1.2, 1.2); } + 80% { + -webkit-transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); + transform: translate(-50%, -50%) scale3d(0.97, 0.97, 0.97); } + to { + -webkit-transform: translate(-50%, -50%) scale3d(1, 1, 1); + transform: translate(-50%, -50%) scale3d(1, 1, 1); } } + +.media, .wpeo-media { + display: block; + width: 50px; + min-width: 50px; + height: 50px; + position: relative; + background: rgba(0, 0, 0, 0.1); + text-align: center; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.media .default-icon-container, .wpeo-media .default-icon-container { + width: 100%; + line-height: 50px; + text-align: center; } + +.media .default-icon-container .svg-inline--fa, .wpeo-media .default-icon-container .svg-inline--fa { + color: rgba(0, 0, 0, 0.4); + line-height: 50px; + font-weight: 400; + font-size: 16px; } + +.media .button-add, .wpeo-media .button-add { + position: absolute; + display: inline-block; + pointer-events: none; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.media:not(.no-file) .button-add, .wpeo-media:not(.no-file) .button-add { + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #fff; } + +.media.no-file .button-add, .wpeo-media.no-file .button-add { + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + top: 10px; + right: 10px; + color: rgba(0, 0, 0, 0.2); } + +.media:hover, .wpeo-media:hover { + cursor: pointer; } + +.media:hover .button-add, .wpeo-media:hover .button-add { + -webkit-animation-fill-mode: both; + -o-animation-fill-mode: both; + animation-fill-mode: both; + -webkit-animation-duration: 1s; + -o-animation-duration: 1s; + animation-duration: 1s; + opacity: 1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; } + +.media:hover:not(.no-file) .button-add, .wpeo-media:hover:not(.no-file) .button-add { + -webkit-animation-name: fileAdd; + -o-animation-name: fileAdd; + animation-name: fileAdd; } + +.media:hover.no-file .button-add, .wpeo-media:hover.no-file .button-add { + -webkit-animation-name: noFileAdd; + -o-animation-name: noFileAdd; + animation-name: noFileAdd; } + +.media img, .wpeo-media img { + width: 100%; + height: auto; } + +.media[data-mode="view"].no-file, .wpeo-media[data-mode="view"].no-file { + pointer-events: none; } + +.media[data-mode="view"].no-file:hover, .wpeo-media[data-mode="view"].no-file:hover { + cursor: auto; } + +.media[data-mode="view"] .button-add, .wpeo-media[data-mode="view"] .button-add { + display: none; } + +.media:not(.no-file) .document, .wpeo-media:not(.no-file) .document { + background: #0d8aff; } + +.media:not(.no-file) .document .svg-inline--fa, .wpeo-media:not(.no-file) .document .svg-inline--fa { + color: #fff !important; } + +.wpeo-gallery .modal-container { + max-width: 1000px; + max-height: 700px; } + +.wpeo-gallery .modal-header .upload { + font-size: 12px; + text-transform: none; + font-weight: 400; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 4px 8px; + margin-left: 0.2em; } + +.wpeo-gallery .wpeo-button .button-icon ~ span { + margin-left: 6px; } + +.wpeo-gallery .modal-content { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + -moz-box-orient: vertical; + -moz-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 0; + -webkit-flex: 0 1 auto; + -moz-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + position: relative; } + +.wpeo-gallery .modal-content .image-list { + width: 80%; + height: 90%; + margin: auto; } + +.wpeo-gallery .modal-content .action { + width: 100%; + height: 10%; } + +.wpeo-gallery .modal-content .image-list { + padding-top: 1em; } + +.wpeo-gallery .modal-content .image-list li { + margin: auto; + padding: 0; + overflow: hidden; + height: 100%; + position: relative; } + +.wpeo-gallery .modal-content .image-list img, .wpeo-gallery .modal-content .image-list .document { + margin: auto; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); } + +.wpeo-gallery .modal-content .image-list img { + max-width: 100%; + height: auto; } + +.wpeo-gallery .modal-content .image-list .document { + text-align: center; } + +.wpeo-gallery .modal-content .image-list .document .icon { + font-size: 180px; + color: rgba(0, 0, 0, 0.2); } + +.wpeo-gallery .modal-content .image-list .document p { + font-size: 14px; + color: rgba(0, 0, 0, 0.7); + font-style: italic; } + +.wpeo-gallery .modal-content .image-list .document p span { + font-weight: 700; } + +.wpeo-gallery .modal-content .action { + margin: 0; + text-align: center; + padding-top: 1em; } + +.wpeo-gallery .modal-content .action a { + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wpeo-gallery .modal-content .action li { + display: inline-block; + margin: 0 0.2em; } + +.wpeo-gallery .modal-content .action .icon { + font-size: 18px; } + +.wpeo-gallery .modal-content .action .featured-thumbnail { + color: #ffc509; } + +.wpeo-gallery .modal-content .action .featured-thumbnail:hover { + color: #ff8d09; } + +.wpeo-gallery .modal-content .action .edit-link { + color: #0d8aff; } + +.wpeo-gallery .modal-content .action .edit-link:hover { + color: #0056a6; } + +.wpeo-gallery .modal-content .action .dissociate-thumbnail { + color: #2b2b2b; } + +.wpeo-gallery .modal-content .action .dissociate-thumbnail:hover { + color: black; } + +.wpeo-gallery .modal-content .navigation { + margin: 0; } + +.wpeo-gallery .modal-content .navigation .navigation-prev, .wpeo-gallery .modal-content .navigation .navigation-next { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); } + +.wpeo-gallery .modal-content .navigation .navigation-prev a, .wpeo-gallery .modal-content .navigation .navigation-next a { + text-decoration: none; + background: #ececec; + color: rgba(0, 0, 0, 0.6); + font-size: 12px; + width: 30px; + line-height: 30px; + -webkit-border-radius: 50%; + border-radius: 50%; + text-align: center; + display: inline-block; + margin: 0; + -webkit-transition: all 0.2s ease-out; + -o-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; } + +.wpeo-gallery .modal-content .navigation .navigation-prev a:hover, .wpeo-gallery .modal-content .navigation .navigation-next a:hover { + background: lightgray; } + +.wpeo-gallery .modal-content .navigation .navigation-prev a i, .wpeo-gallery .modal-content .navigation .navigation-next a i { + font-size: 12px; + line-height: 30px; } + +.wpeo-gallery .modal-content .navigation .navigation-prev { + left: 1em; } + +.wpeo-gallery .modal-content .navigation .navigation-next { + right: 1em; } diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/css/style.min.css b/core/external/eo-framework/modules/wpeo-upload/assets/css/style.min.css new file mode 100644 index 0000000..1334b36 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/css/style.min.css @@ -0,0 +1,6 @@ +/*! + EOXIA FRAMEWORK CSS + Created by Eoxia + + version: 1.2.0 +*/@-webkit-keyframes noFileAdd{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(1.4,1.4,1.4);transform:scale3d(1.4,1.4,1.4)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{-webkit-transform:scale3d(1.2,1.2,1.2);transform:scale3d(1.2,1.2,1.2)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-o-keyframes noFileAdd{0,20%,40%,60%,80%,to{-o-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{transform:scale3d(1,1,1)}20%{transform:scale3d(1.4,1.4,1.4)}40%{transform:scale3d(.9,.9,.9)}60%{transform:scale3d(1.2,1.2,1.2)}80%{transform:scale3d(.97,.97,.97)}to{transform:scale3d(1,1,1)}}@keyframes noFileAdd{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);-o-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}20%{-webkit-transform:scale3d(1.4,1.4,1.4);transform:scale3d(1.4,1.4,1.4)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{-webkit-transform:scale3d(1.2,1.2,1.2);transform:scale3d(1.2,1.2,1.2)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes fileAdd{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate(-50%,-50%) scale3d(1,1,1);transform:translate(-50%,-50%) scale3d(1,1,1)}20%{-webkit-transform:translate(-50%,-50%) scale3d(1.4,1.4,1.4);transform:translate(-50%,-50%) scale3d(1.4,1.4,1.4)}40%{-webkit-transform:translate(-50%,-50%) scale3d(.9,.9,.9);transform:translate(-50%,-50%) scale3d(.9,.9,.9)}60%{-webkit-transform:translate(-50%,-50%) scale3d(1.2,1.2,1.2);transform:translate(-50%,-50%) scale3d(1.2,1.2,1.2)}80%{-webkit-transform:translate(-50%,-50%) scale3d(.97,.97,.97);transform:translate(-50%,-50%) scale3d(.97,.97,.97)}to{-webkit-transform:translate(-50%,-50%) scale3d(1,1,1);transform:translate(-50%,-50%) scale3d(1,1,1)}}@-o-keyframes fileAdd{0,20%,40%,60%,80%,to{-o-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{transform:translate(-50%,-50%) scale3d(1,1,1)}20%{transform:translate(-50%,-50%) scale3d(1.4,1.4,1.4)}40%{transform:translate(-50%,-50%) scale3d(.9,.9,.9)}60%{transform:translate(-50%,-50%) scale3d(1.2,1.2,1.2)}80%{transform:translate(-50%,-50%) scale3d(.97,.97,.97)}to{transform:translate(-50%,-50%) scale3d(1,1,1)}}@keyframes fileAdd{0,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);-o-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{-webkit-transform:translate(-50%,-50%) scale3d(1,1,1);transform:translate(-50%,-50%) scale3d(1,1,1)}20%{-webkit-transform:translate(-50%,-50%) scale3d(1.4,1.4,1.4);transform:translate(-50%,-50%) scale3d(1.4,1.4,1.4)}40%{-webkit-transform:translate(-50%,-50%) scale3d(.9,.9,.9);transform:translate(-50%,-50%) scale3d(.9,.9,.9)}60%{-webkit-transform:translate(-50%,-50%) scale3d(1.2,1.2,1.2);transform:translate(-50%,-50%) scale3d(1.2,1.2,1.2)}80%{-webkit-transform:translate(-50%,-50%) scale3d(.97,.97,.97);transform:translate(-50%,-50%) scale3d(.97,.97,.97)}to{-webkit-transform:translate(-50%,-50%) scale3d(1,1,1);transform:translate(-50%,-50%) scale3d(1,1,1)}}.media,.wpeo-media{display:block;width:50px;min-width:50px;height:50px;position:relative;background:rgba(0,0,0,.1);text-align:center;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.media .default-icon-container,.wpeo-media .default-icon-container{width:100%;line-height:50px;text-align:center}.media .default-icon-container .svg-inline--fa,.wpeo-media .default-icon-container .svg-inline--fa{color:rgba(0,0,0,.4);line-height:50px;font-weight:400;font-size:16px}.media .button-add,.wpeo-media .button-add{position:absolute;display:inline-block;pointer-events:none;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.media:not(.no-file) .button-add,.wpeo-media:not(.no-file) .button-add{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff}.media.no-file .button-add,.wpeo-media.no-file .button-add{opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";top:10px;right:10px;color:rgba(0,0,0,.2)}.media:hover,.wpeo-media:hover{cursor:pointer}.media:hover .button-add,.wpeo-media:hover .button-add{-webkit-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:1s;-o-animation-duration:1s;animation-duration:1s;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.media:hover:not(.no-file) .button-add,.wpeo-media:hover:not(.no-file) .button-add{-webkit-animation-name:fileAdd;-o-animation-name:fileAdd;animation-name:fileAdd}.media:hover.no-file .button-add,.wpeo-media:hover.no-file .button-add{-webkit-animation-name:noFileAdd;-o-animation-name:noFileAdd;animation-name:noFileAdd}.media img,.wpeo-media img{width:100%;height:auto}.media[data-mode=view].no-file,.wpeo-media[data-mode=view].no-file{pointer-events:none}.media[data-mode=view].no-file:hover,.wpeo-media[data-mode=view].no-file:hover{cursor:auto}.media[data-mode=view] .button-add,.wpeo-media[data-mode=view] .button-add{display:none}.media:not(.no-file) .document,.wpeo-media:not(.no-file) .document{background:#0d8aff}.media:not(.no-file) .document .svg-inline--fa,.wpeo-media:not(.no-file) .document .svg-inline--fa{color:#fff!important}.wpeo-gallery .modal-container{max-width:1000px;max-height:700px}.wpeo-gallery .modal-header .upload{font-size:12px;text-transform:none;font-weight:400;-webkit-border-radius:4px;border-radius:4px;padding:4px 8px;margin-left:.2em}.wpeo-gallery .wpeo-button .button-icon~span{margin-left:6px}.wpeo-gallery .modal-content{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:0;-webkit-flex:0 1 auto;-moz-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;position:relative}.wpeo-gallery .modal-content .image-list{width:80%;height:90%;margin:auto}.wpeo-gallery .modal-content .action{width:100%;height:10%}.wpeo-gallery .modal-content .image-list{padding-top:1em}.wpeo-gallery .modal-content .image-list li{margin:auto;padding:0;overflow:hidden;height:100%;position:relative}.wpeo-gallery .modal-content .image-list img,.wpeo-gallery .modal-content .image-list .document{margin:auto;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.wpeo-gallery .modal-content .image-list img{max-width:100%;height:auto}.wpeo-gallery .modal-content .image-list .document{text-align:center}.wpeo-gallery .modal-content .image-list .document .icon{font-size:180px;color:rgba(0,0,0,.2)}.wpeo-gallery .modal-content .image-list .document p{font-size:14px;color:rgba(0,0,0,.7);font-style:italic}.wpeo-gallery .modal-content .image-list .document p span{font-weight:700}.wpeo-gallery .modal-content .action{margin:0;text-align:center;padding-top:1em}.wpeo-gallery .modal-content .action a{-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.wpeo-gallery .modal-content .action li{display:inline-block;margin:0 .2em}.wpeo-gallery .modal-content .action .icon{font-size:18px}.wpeo-gallery .modal-content .action .featured-thumbnail{color:#ffc509}.wpeo-gallery .modal-content .action .featured-thumbnail:hover{color:#ff8d09}.wpeo-gallery .modal-content .action .edit-link{color:#0d8aff}.wpeo-gallery .modal-content .action .edit-link:hover{color:#0056a6}.wpeo-gallery .modal-content .action .dissociate-thumbnail{color:#2b2b2b}.wpeo-gallery .modal-content .action .dissociate-thumbnail:hover{color:black}.wpeo-gallery .modal-content .navigation{margin:0}.wpeo-gallery .modal-content .navigation .navigation-prev,.wpeo-gallery .modal-content .navigation .navigation-next{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.wpeo-gallery .modal-content .navigation .navigation-prev a,.wpeo-gallery .modal-content .navigation .navigation-next a{text-decoration:none;background:#ececec;color:rgba(0,0,0,.6);font-size:12px;width:30px;line-height:30px;-webkit-border-radius:50%;border-radius:50%;text-align:center;display:inline-block;margin:0;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}.wpeo-gallery .modal-content .navigation .navigation-prev a:hover,.wpeo-gallery .modal-content .navigation .navigation-next a:hover{background:lightgray}.wpeo-gallery .modal-content .navigation .navigation-prev a i,.wpeo-gallery .modal-content .navigation .navigation-next a i{font-size:12px;line-height:30px}.wpeo-gallery .modal-content .navigation .navigation-prev{left:1em}.wpeo-gallery .modal-content .navigation .navigation-next{right:1em} \ No newline at end of file diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/index.php b/core/external/eo-framework/modules/wpeo-upload/assets/index.php new file mode 100644 index 0000000..6220032 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/index.php @@ -0,0 +1,2 @@ + + */ + +window.eoxiaJS.upload = {}; + +/** + * Keep the button in memory. + * + * @type {Object} + */ +window.eoxiaJS.upload.currentButton; + +/** + * Keep the media frame in memory. + * @type {Object} + */ +window.eoxiaJS.upload.mediaFrame; + +/** + * Keep the selected media in memory. + * @type {Object} + */ +window.eoxiaJS.upload.selectedInfos = { + JSON: undefined, + fileID: undefined +}; + +/** + * Init func. + * + * @return void + * + * @since 0.1.0-alpha + * @version 0.1.0-alpha + */ +window.eoxiaJS.upload.init = function() { + window.eoxiaJS.upload.event(); +}; + +/** + * Event func. + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.event = function() { + jQuery( document ).on( 'click', '.media:not(.loading), .upload:not(.loading)', window.eoxiaJS.upload.openPopup ); + jQuery( document ).on( 'click', '.media-modal-content, .media-toolbar, .media-modal-close, .media-button-insert', function( event ) { event.stopPropagation(); } ); +}; + +/** + * Open the media frame from WordPress or the custom gallery. + * + * @param {MouseEvent} event The mouse state. + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.openPopup = function( event ) { + if ( window.eoxiaJS.upload.currentButton ) { + var tmp = window.eoxiaJS.upload.currentButton; + } + window.eoxiaJS.upload.currentButton = jQuery( this ); + + if ( tmp ) { + window.eoxiaJS.upload.currentButton[0].initialButton = tmp; + } + + event.preventDefault(); + + if ( jQuery( this ).hasClass( 'no-file' ) || jQuery( this ).is( "a" ) ) { + window.eoxiaJS.upload.openMediaFrame(); + } else { + window.eoxiaJS.gallery.open(); + } +}; + +/** + * Open the media frame from WordPress. + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.openMediaFrame = function() { + window.eoxiaJS.upload.mediaFrame = new window.wp.media.view.MediaFrame.Post({ + multiple: false, + library: { + type: window.eoxiaJS.upload.currentButton.data( 'mime-type' ) + } + }).open(); + console.log(window.eoxiaJS.upload.mediaFrame ); + window.eoxiaJS.upload.mediaFrame.on( 'insert', function() { window.eoxiaJS.upload.selectedFile(); } ); +}; + +/** + * Get the media selected and call associateFile. + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.selectedFile = function() { + window.eoxiaJS.upload.mediaFrame.state().get( 'selection' ).map( function( attachment ) { + window.eoxiaJS.upload.selectedInfos.JSON = attachment.toJSON(); + window.eoxiaJS.upload.selectedInfos.id = attachment.id; + } ); + window.eoxiaJS.upload.associateFile(); +}; + +/** + * Make request for associate file + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.associateFile = function() { + var data = { + action: 'eo_upload_associate_file', + file_id: window.eoxiaJS.upload.selectedInfos.id, + _wpnonce: window.eoxiaJS.upload.currentButton.attr( 'data-nonce' ), + }; + var key = ''; + window.eoxiaJS.upload.currentButton.get_data( function( attrData ) { + for ( key in attrData ) { + data[key] = attrData[key]; + } + } ); + window.eoxiaJS.loader.display( window.eoxiaJS.upload.currentButton ); + + jQuery.post( window.ajaxurl, data, function( response ) { + window.eoxiaJS.upload.currentButton.removeClass( 'loading' ); + + window.eoxiaJS.upload.refreshButton( response.data ); + + if ( 'box' === response.data.display_type && 0 !== response.data.id ) { + window.eoxiaJS.gallery.open( false ); + } + + window.eoxiaJS.cb( 'eoUploadAssociatedFile', { + element: window.eoxiaJS.upload.currentButton, + data: data, + response: response + } ); + } ); +}; + +/** + * Update the view of the button + * + * @param {Object} data Data of button. + * @return {void} + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.upload.refreshButton = function( data ) { + jQuery( window.eoxiaJS.upload.currentButton ).removeClass( 'no-file loading wpeo-loader' ); + if( window.eoxiaJS.upload.currentButton.is( 'a' ) ) { + window.eoxiaJS.loader.remove( window.eoxiaJS.upload.currentButton ); + window.eoxiaJS.upload.currentButton.closest( 'div' ).find( 'ul li.no-file-attached' ).remove(); + window.eoxiaJS.upload.currentButton.closest( 'div' ).find( 'ul' ).append( data.view ); + } else { + if ( data.view ) { + if ( window.eoxiaJS.upload.currentButton.data( 'custom-class' ) ) { + jQuery( 'span.media[data-id="' + window.eoxiaJS.upload.currentButton.data( 'id' ) + '"].' + window.eoxiaJS.upload.currentButton.data( 'custom-class' ) ).replaceWith( data.view ); + } else { + jQuery( 'span.media[data-id="' + window.eoxiaJS.upload.currentButton.data( 'id' ) + '"]' ).replaceWith( data.view ); + } + } else if ( data.document_view ) { + window.eoxiaJS.upload.currentButton.find( '.default' ).replaceWith( data.document_view ); + window.eoxiaJS.upload.currentButton.find( 'input[type="hidden"]' ).val( window.eoxiaJS.upload.selectedInfos.JSON.id ); + } else { + if ( data.media ) { + if ( window.eoxiaJS.upload.currentButton[0] && window.eoxiaJS.upload.currentButton[0].initialButton ) { + window.eoxiaJS.upload.currentButton[0].initialButton.find( 'img' ).replaceWith( data.media ); + } + window.eoxiaJS.upload.currentButton.find( 'img' ).replaceWith( data.media ); + window.eoxiaJS.upload.currentButton.find( '.default-image.fa-image' ).hide(); + + window.eoxiaJS.upload.currentButton.find( 'input[type="hidden"]' ).val( window.eoxiaJS.upload.selectedInfos.JSON.id ); + } + } + } +}; + +window.eoxiaJS.gallery = {}; + +/** + * Init func. + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.init = function() { + window.eoxiaJS.gallery.event(); +}; + +/** + * Event func. + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.event = function() { + jQuery( document ).on( 'keyup', '.wpeo-gallery', window.eoxiaJS.gallery.keyup ); + jQuery( document ).on( 'click', '.wpeo-gallery .modal-footer .button-main', window.eoxiaJS.gallery.close ); + jQuery( document ).on( 'click', '.wpeo-gallery .navigation .prev', window.eoxiaJS.gallery.prevPicture ); + jQuery( document ).on( 'click', '.wpeo-gallery .navigation .next', window.eoxiaJS.gallery.nextPicture ); +}; + +/** + * Make request for open gallery + * + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.open = function( append = true ) { + var currentButton = window.eoxiaJS.upload.currentButton; + var data = { + action: 'eo_upload_load_gallery' + }; + var key = ''; + currentButton.get_data( function( attrData ) { + for ( key in attrData ) { + data[key] = attrData[key]; + } + } ); + + currentButton.addClass( 'loading' ); + + if ( append ) { + jQuery( '.wpeo-gallery' ).remove(); + } else { + data['_wpnonce'] = currentButton.closest( '.wpeo-gallery' ).data( 'nonce' ); + } + + jQuery.post( ajaxurl, data, function( response ) { + if ( append ) { + jQuery( '#wpwrap' ).append( response.data.view ); + } else { + jQuery( '.wpeo-gallery' ).replaceWith( response.data.view ); + } + currentButton.removeClass( 'loading' ); + }); +}; + +/** + * Next and Previous picture in gallery + * + * @param {KeyEvent} event Keyboard state. + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.keyup = function( event ) { + if ( 37 === event.keyCode ) { + window.eoxiaJS.gallery.prevPicture(); + } else if ( 39 === event.keyCode ) { + window.eoxiaJS.gallery.nextPicture(); + } else if ( 27 === event.keyCode ) { + jQuery( '.wpeo-gallery .modal-close' ).click(); + } +}; + +/** + * Close the popup + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {ClickEvent} event L'évènement lors du clic. + * @return {void} + */ +window.eoxiaJS.gallery.close = function( event ) { + jQuery( '.wpeo-gallery .modal-close' ).click(); +}; + +/** + * Prev picture func. + * + * @param {KeyEvent} event Keyboard state. + * @return void + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.prevPicture = function( event ) { + if ( jQuery( '.wpeo-gallery .image-list li.current' ).prev().length <= 0 ) { + jQuery( '.wpeo-gallery .image-list li.current' ).toggleClass( 'current hidden' ); + jQuery( '.wpeo-gallery .image-list li:last' ).toggleClass( 'hidden current' ); + } else { + jQuery( '.wpeo-gallery .image-list li.current' ).toggleClass( 'current hidden' ).prev().toggleClass( 'hidden current' ); + } + + jQuery( '.wpeo-gallery .edit-thumbnail-id' ).attr( 'data-file-id', jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + + window.eoxiaJS.gallery.changeURL( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + window.eoxiaJS.gallery.checkIsFeaturedMedia( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); +}; + +/** + * Next picture func. + * + * @param {KeyEvent} event Keyboard state. + * @return void + * + * @since 0.1.0-alpha + * @version 0.1.0-alpha + */ +window.eoxiaJS.gallery.nextPicture = function( event ) { + if ( jQuery( '.wpeo-gallery .image-list li.current' ).next().length <= 0 ) { + jQuery( '.wpeo-gallery .image-list li.current' ).toggleClass( 'current hidden' ); + jQuery( '.wpeo-gallery .image-list li:first' ).toggleClass( 'hidden current' ); + } else { + jQuery( '.wpeo-gallery .image-list li.current' ).toggleClass( 'current hidden' ).next().toggleClass( 'hidden current' ); + } + + jQuery( '.wpeo-gallery .edit-thumbnail-id' ).attr( 'data-file-id', jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + + window.eoxiaJS.gallery.changeURL( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + window.eoxiaJS.gallery.checkIsFeaturedMedia( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); +}; + +/** + * Change edit link URL with the current file ID. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param {integer} fileID The current file ID. + * @return {void} + */ +window.eoxiaJS.gallery.changeURL = function( fileID ) { + var href = jQuery( '.wpeo-gallery .edit-link' ).attr( 'href' ); + var tmpHREF = href.split( '?' ); + href = tmpHREF[0] += "?item=" + fileID + "&mode=edit"; + jQuery( '.wpeo-gallery .edit-link' ).attr( 'href', href ); +}; + +window.eoxiaJS.gallery.checkIsFeaturedMedia = function( fileID ) { + var mainFeaturedMediaID = jQuery( '.wpeo-gallery input.main-thumbnail-id' ).val(); + + if ( mainFeaturedMediaID == fileID ) { + jQuery( '.wpeo-gallery .featured-thumbnail i' ).removeClass( 'far' ); + jQuery( '.wpeo-gallery .featured-thumbnail i' ).addClass( 'fas' ); + } else { + jQuery( '.wpeo-gallery .featured-thumbnail i' ).removeClass( 'fas' ); + jQuery( '.wpeo-gallery .featured-thumbnail i' ).addClass( 'far' ); + } +}; + +/** + * Le callback en cas de réussite à la requête Ajax "dissociate_file". + * Remplaces les boutons pour ouvrir la popup "galerie" + * + * @param {HTMLDivElement} triggeredElement L'élement HTML déclenchant la requête Ajax. + * @param {Object} response Les données renvoyées par la requête Ajax. + * @return {void} + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ +window.eoxiaJS.gallery.dissociatedFileSuccess = function( element, response ) { + if ( response.data.close_popup ) { + jQuery( '.wpeo-gallery' ).remove(); + } else { + jQuery( '.wpeo-gallery .image-list .current' ).remove(); + jQuery( '.wpeo-gallery .next' ).click(); + jQuery( '.wpeo-gallery input.main-thumbnail-id' ).val( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + window.eoxiaJS.gallery.checkIsFeaturedMedia( jQuery( '.wpeo-gallery .current' ).attr( 'data-id' ) ); + } + window.eoxiaJS.upload.refreshButton( response.data ); + +}; + +/** + * Le callback en cas de réussite à la requête Ajax "eo_set_thumbnail". + * Remplaces les boutons pour ouvrir la popup "galerie" + * + * @param {HTMLDivElement} triggeredElement L'élement HTML déclenchant la requête Ajax. + * @param {Object} response Les données renvoyées par la requête Ajax. + * @return {void} + * + * @since 0.1.0-alpha + * @version 0.1.0-alpha + */ +window.eoxiaJS.gallery.successfulSetThumbnail = function( element, response ) { + window.eoxiaJS.upload.refreshButton( response.data ); + jQuery( '.wpeo-gallery input.main-thumbnail-id' ).val( response.data.file_id ); + window.eoxiaJS.gallery.checkIsFeaturedMedia( response.data.file_id ); +}; diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.mo b/core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.mo new file mode 100644 index 0000000000000000000000000000000000000000..6a7bc5541dbed99f3678f94ad390fe38ea9745ce GIT binary patch literal 955 zcmZuv!EVz)5H(Oh7?2QxN=OLJu~oIMoeEJo3ZjGrRkYNC6u4Pidy;Hq?^?U-wEX~X zT=@eI_gk=t@tsv-4)=*?Pb3u6%arTqisv3tl&U0X7pNaIux zNh%9`%0RPqtB0rETqR40PN zTB0O$wZ|>jzZWz64w2|UZOeO^vZD_8YH3?54SZ|+=c&kdCV7E~gLL+Ut;1!-8E1jA>VQdI-+>Wu0 zCW*&3&(2@t`jxDq7q9g-KDP$BPR0>wWj?9BsL(q}vNFZACXDC@I6D(nTGUWVghI@} zCI}NH=Jqb&lHEDU<)Y7KWV9kQ_Omkx5FP2~&FtgiM7gloXXU P2lH7*1Ttd1{om}rDVG!z literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.po b/core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.po new file mode 100644 index 0000000..28d5898 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/assets/language/wpeo-upload-fr_FR.po @@ -0,0 +1,54 @@ +msgid "" +msgstr "" +"Project-Id-Version: WPEO_Upload\n" +"POT-Creation-Date: 2017-11-23 11:51+0100\n" +"PO-Revision-Date: 2017-11-23 11:52+0100\n" +"Last-Translator: \n" +"Language-Team: eoxia (contact@eoxia.com)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.1\n" +"X-Poedit-Basepath: ../..\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html__;esc_attr_e;esc_attr__\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: .git\n" + +#: shortcode/wpeo-upload.shortcode.php:53 +msgid "Upload media" +msgstr "Téléverser un média" + +#: view/box/gallery/button-add.view.php:22 +msgid "Add new media" +msgstr "Ajouter un nouveau média" + +#: view/box/gallery/list.view.php:31 view/box/gallery/list.view.php:54 +msgid "Preview not available" +msgstr "Prévisualisation indisponible" + +#: view/box/gallery/main.view.php:60 +msgid "Close" +msgstr "Fermer" + +#: view/list/button.view.php:32 +msgid "Add an attached file" +msgstr "Ajouter une pièce jointe" + +#: view/list/list.view.php:32 +msgid "No file attached" +msgstr "Aucune pièce jointe attachée" + +#~ msgid "Set as default thumbnail" +#~ msgstr "Définir comme miniature par défaut" + +#~ msgid "Add a new file" +#~ msgstr "Ajouter nouveau" + +#~ msgid "Change file" +#~ msgstr "Changer de fichier" + +#~ msgid "Dissociate" +#~ msgstr "Dissocier" diff --git a/core/external/eo-framework/modules/wpeo-upload/class/index.php b/core/external/eo-framework/modules/wpeo-upload/class/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/class/index.php @@ -0,0 +1,2 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Class + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\WPEO_Upload_Class' ) ) { + + /** + * All methods utils for associate, dessociate and anothers things about upload. + */ + class WPEO_Upload_Class extends \eoxia\Singleton_Util { + + /** + * Need to be declared for Singleton_Util. + * + * @since 0.1.0-alpha + * @version 0.1.0-alpha + */ + protected function construct() {} + + /** + * Get and sanitize $_POST data and return it. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param string $nonce_name Nonce name from the request AJAX. + * + * @return array $param { + * Les variables renvoyées. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $title The popup title. + * @type string $mode Can be "edit" or "view". + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type string $custom_class Add custom class. + * @type string $size The size of the box (button for upload or open the gallery). + * @type boolean $single One media or more. + * @type string $mime_type Can be application/document, application/png or empty for all mime types. + * @type string $display_type Can be box or list. By default box. + * @type integer $file_id The uploaded file ID. + * } + */ + public function get_post_data( $nonce_name ) { + // check_ajax_referer( $nonce_name ); + + $data = array(); + $data['id'] = ! empty( $_POST['id'] ) ? (int) $_POST['id'] : 0; + $data['title'] = ! empty( $_POST['title'] ) ? sanitize_text_field( $_POST['title'] ) : ''; + $data['mode'] = ! empty( $_POST['mode'] ) ? sanitize_text_field( $_POST['mode'] ) : ''; + $data['field_name'] = ! empty( $_POST['field_name'] ) ? sanitize_text_field( $_POST['field_name'] ) : ''; + $data['model_name'] = ! empty( $_POST['model_name'] ) ? stripslashes( sanitize_text_field( $_POST['model_name'] ) ) : ''; + $data['custom_class'] = ! empty( $_POST['custom_class'] ) ? stripslashes( sanitize_text_field( $_POST['custom_class'] ) ) : ''; + $data['size'] = ! empty( $_POST['size'] ) ? sanitize_text_field( $_POST['size'] ) : 'thumbnail'; + $data['single'] = ! empty( $_POST['single'] ) ? sanitize_text_field( $_POST['single'] ) : 'false'; + $data['mime_type'] = ! empty( $_POST['mime_type'] ) ? sanitize_text_field( $_POST['mime_type'] ) : ''; + $data['display_type'] = ! empty( $_POST['display_type'] ) ? sanitize_text_field( $_POST['display_type'] ) : ''; + $data['file_id'] = ! empty( $_POST['file_id'] ) ? (int) $_POST['file_id'] : 0; + $data['upload_dir'] = ! empty( $_POST['upload_dir'] ) ? sanitize_text_field( $_POST['upload_dir'] ) : ''; + + return $data; + } + + /** + * Associate the file_id in the Object. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @param array $data { + * Les variables du tableau. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type integer $file_id The uploaded file ID. + * } + * + * @return mixed + */ + public function associate_file( $data ) { + $element = null; + + if ( ! empty( $data['id'] ) ) { + $element = $data['model_name']::g()->get( array( + 'id' => $data['id'], + ), true ); + + $element->data['associated_document_id'][ $data['field_name'] ][] = (int) $data['file_id']; + $data['model_name']::g()->update( $element->data ); + } + + return $element; + } + + /** + * Dessociate the file_id in the Object. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @param array $data { + * Les variables du tableau. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type integer $file_id The uploaded file ID. + * } + * + * @return mixed + */ + public function dissociate_file( $data ) { + $element = $data['model_name']::g()->get( array( + 'id' => $data['id'], + ), true ); + + // Check if the file is in associated file list. + if ( isset( $element->data['associated_document_id'] ) && isset( $element->data['associated_document_id'][ $data['field_name'] ] ) ) { + $key = array_search( $data['file_id'], $element->data['associated_document_id'][ $data['field_name'] ], true ); + if ( false !== $key ) { + array_splice( $element->data['associated_document_id'][ $data['field_name'] ], $key, 1 ); + } + } + + // Check if the file is set as thumbnail. + if ( $data['file_id'] === $element->data['thumbnail_id'] ) { + $element->data['thumbnail_id'] = 0; + } + + // Set another thumbnail id. + if ( empty( $element->data['thumbnail_id'] ) && ! empty( $element->data['associated_document_id'][ $data['field_name'] ] ) ) { + $element->data['thumbnail_id'] = $element->data['associated_document_id'][ $data['field_name'] ][0]; + } + + $data['model_name']::g()->update( $element->data ); + + return $element; + } + + /** + * Load and display the gallery. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @param array $data { + * Les variables du tableau. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $title The popup title. + * @type string $mode Can be "edit" or "view". + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type string $custom_class Add custom class. + * @type string $size The size of the box (button for upload or open the gallery). + * @type boolean $single One media or more. + * @type string $mime_type Can be application/document, application/png or empty for all mime types. + * @type string $display_type Can be box or list. By default box. + * @type integer $file_id The uploaded file ID. + * } + * + * @return void + */ + public function display_gallery( $data ) { + $element = $data['model_name']::g()->get( array( + 'id' => $data['id'], + ), true ); + + $main_picture_id = $element->data['thumbnail_id']; + + if ( empty( $main_picture_id ) ) { + $main_picture_id = $element->data['associated_document_id'][ $data['field_name'] ][0]; + } + + $list_id = ! empty( $element->data['associated_document_id'][ $data['field_name'] ] ) ? $element->data['associated_document_id'][ $data['field_name'] ] : array(); + + require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/box/gallery/main.view.php'; + } + + /** + * Set the thumbnail. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @param array $data { + * Les variables du tableau. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type integer $file_id The uploaded file ID. + * } + * + * @return mixed + */ + public function set_thumbnail( $data ) { + $element = $data['model_name']::g()->get( array( 'id' => $data['id'] ), true ); + + $element->data['thumbnail_id'] = $data['file_id']; + + $element = $data['model_name']::g()->update( $element->data ); + + return $element; + } + + /** + * Output all attributes to send to the AJAX request. + * + * @since 1.0.0 + * @version 1.0.0 + * + * @param array $data { + * Les variables du tableau. + * + * @type integer $id The id of the POST Element (Can be a custom post). + * @type string $title The popup title. + * @type string $mode Can be "edit" or "view". + * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. + * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + * @type string $custom_class Add custom class. + * @type string $size The size of the box (button for upload or open the gallery). + * @type boolean $single One media or more. + * @type string $mime_type Can be application/document, application/png or empty for all mime types. + * @type string $display_type Can be box or list. By default box. + * @type integer $file_id The uploaded file ID. + * } + * + * @return void + */ + public function out_all_attributes( $data ) { + require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/box/gallery/attributes.view.php'; + } + } + + WPEO_Upload_Class::g(); +} diff --git a/core/external/eo-framework/modules/wpeo-upload/index.php b/core/external/eo-framework/modules/wpeo-upload/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/index.php @@ -0,0 +1,2 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Shortcode + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +if ( ! class_exists( '\eoxia\WPEO_Upload_Shortcode' ) ) { + + /** + * Call the main view of the plugin. + */ + class WPEO_Upload_Shortcode extends Singleton_Util { + + /** + * Add the shortcode [wpeo_upload]. + * + * @since 0.1.0-alpha + * @version 1.0.0 + */ + protected function construct() { + add_shortcode( 'wpeo_upload', array( $this, 'wpeo_upload' ) ); + } + + /** + * Call the button view + * Developper: WPEO_Model is required for use this shortcode. + * + * @since 0.1.0-alpha + * @version 1.0.0 + * + * @see https://github.com/Eoxia/eo-framework/blob/master/modules/wpeo-upload/README.md + * + * @param array $atts See paramaters in func. + * + * @return HTML Le code html permettant l'affichage du module d'upload + */ + public function wpeo_upload( $atts ) { + + // Parameters of the shortcode. + $atts = shortcode_atts( array( + 'id' => 0, // The id of the POST Element (Can be a custom post). + 'title' => __( 'Upload media', 'wpeo-upload' ), // Popup title. + 'mode' => 'edit', // Can be "edit" or "view". + 'field_name' => 'thumbnail_id', // For use "_thumbnail_id" postmeta of WordPress let _thumbnail_id. Again for more details @see. + 'model_name' => '//eoxia//Post_Class', // Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". + 'custom_class' => '', // Add custom class. + 'size' => 'thumbnail', // The size of the box (button for upload or open the gallery). + 'single' => 'true', // One media or more. + 'mime_type' => 'image', // Can be application, image, audio or empty for all mime types. By default "image". + 'display_type' => 'box', // Can be box or list. By default box. + 'upload_dir' => '', // Empty for default WordPress upload dir. + ), $atts ); + + // Convert "//" to "\". + if ( ! empty( $atts['model_name'] ) ) { + $atts['model_name'] = str_replace( '/', '\\', $atts['model_name'] ); + } + + // Load the POST element with WPEO_Model. + $args = array( 'id' => $atts['id'] ); + + if ( empty( $atts['id'] ) ) { + $args = array( 'schema' => true ); + } + + $element = $atts['model_name']::g()->get( $args, true ); + $main_picture_id = $element->data['thumbnail_id']; + + if ( empty( $main_picture_id ) ) { + $nonce_name = 'associate_file'; + } else { + $nonce_name = 'load_gallery'; + } + + $field_name = $atts['field_name']; + + $no_file_class = ''; + if ( empty( $main_picture_id ) && empty( $element->data['associated_document_id'][ $atts['field_name'] ] ) ) { + $no_file_class = 'no-file'; + } else { + $nonce_name = 'load_gallery'; + } + + ob_start(); + require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $atts['display_type'] . '/button.view.php'; + return ob_get_clean(); + } + + } + + new WPEO_Upload_Shortcode(); +} diff --git a/core/external/eo-framework/modules/wpeo-upload/shortcode/index.php b/core/external/eo-framework/modules/wpeo-upload/shortcode/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/shortcode/index.php @@ -0,0 +1,2 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +out_all_attributes( $atts ); // WPCS: XSS is ok. ?> + data-nonce="" + class="media "> + + + +
      + +
      + +
      + + +
      + +
      + +
      + + + +
      diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/actions.view.php b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/actions.view.php new file mode 100644 index 0000000..12dfe55 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/actions.view.php @@ -0,0 +1,42 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/attributes.view.php b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/attributes.view.php new file mode 100644 index 0000000..41d174d --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/attributes.view.php @@ -0,0 +1,27 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +data-id="" +data-title="" +data-mode="" +data-field-name="" +data-model-name="" +data-custom-class="" +data-size="" +data-single="" +data-mime-type="" +data-display-type="" diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/button-add.view.php b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/button-add.view.php new file mode 100644 index 0000000..19a06b7 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/button-add.view.php @@ -0,0 +1,28 @@ + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + +
      out_all_attributes( $data ); // WPCS: XSS is ok. ?> + data-nonce=""> + + +
      + + * @since 1.0.0 + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +
        +
      • + +
        + + + +

        + + +

        +
        + +
      • + + + $id ) : ?> + + + + + +
      diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/main.view.php b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/main.view.php new file mode 100644 index 0000000..8c170b4 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/main.view.php @@ -0,0 +1,67 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/navigation-arrow.view.php b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/navigation-arrow.view.php new file mode 100644 index 0000000..c828fe7 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/gallery/navigation-arrow.view.php @@ -0,0 +1,23 @@ + + * @since 0.1.0-alpha + * @version 1.0.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\Gallery\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + + + + diff --git a/core/external/eo-framework/modules/wpeo-upload/view/box/index.php b/core/external/eo-framework/modules/wpeo-upload/view/box/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/box/index.php @@ -0,0 +1,2 @@ + + * @since 1.2.0 + * @version 1.2.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\List\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +
      + + + + + + + wpeo_upload->path . '/view/' . $atts['display_type'] . '/list.view.php' ); ?> +
      diff --git a/core/external/eo-framework/modules/wpeo-upload/view/list/index.php b/core/external/eo-framework/modules/wpeo-upload/view/list/index.php new file mode 100644 index 0000000..593db72 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/list/index.php @@ -0,0 +1,2 @@ + + * @since 1.2.0 + * @version 1.2.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\List\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} ?> + +
    • + + + + + +
    • diff --git a/core/external/eo-framework/modules/wpeo-upload/view/list/list.view.php b/core/external/eo-framework/modules/wpeo-upload/view/list/list.view.php new file mode 100644 index 0000000..0cd82a2 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/view/list/list.view.php @@ -0,0 +1,40 @@ + + * @since 1.2.0 + * @version 1.2.0 + * @copyright 2017-2018 Eoxia + * @package EO_Framework\EO_Upload\List\View + */ + +namespace eoxia; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +?> +
        + data['associated_document_id'][ $atts['field_name'] ] ) ) : + foreach ( $element->data['associated_document_id'][ $atts['field_name'] ] as $file_id ) : + + $filelink = get_attached_file( $file_id ); + $filename_only = basename( $filelink ); + $fileurl_only = wp_get_attachment_url( $file_id ); + + $view = apply_filters( 'wpeo_upload_view_list_item', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $atts['display_type'] . '/list-item.view.php' ); + require( $view ); + + endforeach; + else : + if ( 0 != $atts['id'] ) : + ?> +
      • + +
      diff --git a/core/external/eo-framework/modules/wpeo-upload/wpeo_upload.config.json b/core/external/eo-framework/modules/wpeo-upload/wpeo_upload.config.json new file mode 100644 index 0000000..0ab8e71 --- /dev/null +++ b/core/external/eo-framework/modules/wpeo-upload/wpeo_upload.config.json @@ -0,0 +1,13 @@ +{ + "name": "WPEO Upload", + "slug": "wpeo_upload", + "since": "0.1.0", + "version": "1.2.0", + "description": "Upload media and manage gallery.", + "path": "modules/wpeo-upload", + "dependencies": { + "action": {}, + "class": {}, + "shortcode": {} + } +} diff --git a/core/external/eo-framework/package-lock.json b/core/external/eo-framework/package-lock.json new file mode 100644 index 0000000..83ad4e7 --- /dev/null +++ b/core/external/eo-framework/package-lock.json @@ -0,0 +1,5105 @@ +{ + "name": "submodule-gulp", + "version": "1.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "1.0.1" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "1.1.0", + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "1.0.0", + "get-value": "2.0.6", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-done": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.1.tgz", + "integrity": "sha512-R1BaUeJ4PMoLNJuk+0tLJgjmEqVsdN118+Z8O+alhnQDQgy0kmD5Mqi0DNEmMx2LM0Ed5yekKu+ZXYvIHceicg==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0", + "process-nextick-args": "1.0.7", + "stream-exhaust": "1.0.2" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "1.3.1" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", + "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", + "dev": true, + "requires": { + "browserslist": "4.8.2", + "caniuse-lite": "1.0.30001016", + "chalk": "2.4.2", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "7.0.25", + "postcss-value-parser": "4.0.2" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "dev": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "1.1.2", + "arr-flatten": "1.1.0", + "arr-map": "2.0.2", + "array-each": "1.0.1", + "array-initial": "1.1.0", + "array-last": "1.3.0", + "async-done": "1.3.1", + "async-settle": "1.0.0", + "now-and-later": "2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "pascalcase": "0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "browserslist": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", + "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30001016", + "electron-to-chromium": "1.3.322", + "node-releases": "1.1.43" + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001016", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", + "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.4", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "lodash.debounce": "4.0.8", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.2.1", + "upath": "1.1.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", + "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "process-nextick-args": "2.0.0", + "readable-stream": "2.3.6" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coffeescript": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-2.4.1.tgz", + "integrity": "sha512-34GV1aHrsMpTaO3KfMJL40ZNuvKDR/g98THHnE9bQj8HjMaZvSrLik99WWqyMhRtbe8V5hpx5iLgdcSvM/S2wg==", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "2.0.2", + "for-own": "1.0.0", + "make-iterator": "1.0.1" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "1.3.2", + "is-plain-object": "2.0.4" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "4.1.5", + "which": "1.3.1" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.46" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "electron-to-chromium": { + "version": "1.3.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", + "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-symbol": "3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.46", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.4" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.1", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "parse-node-version": "1.0.0", + "time-stamp": "1.1.0" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "1.0.0", + "is-glob": "3.1.0", + "micromatch": "3.1.10", + "resolve-dir": "1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "fined": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.1.tgz", + "integrity": "sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g==", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.2" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.8", + "mime-types": "2.1.25" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "through2": "2.0.5" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.12.0", + "node-pre-gyp": "0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "nan": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.0.tgz", + "integrity": "sha512-zT5nC0JhbljmyEf+Z456nvm7iO7XgRV2hYxoBtPpnyp+0Q4aCoP6uWNn76v/I6k2kCYNLWqWbwBWQcjsNI/bjw==", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.7", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.7.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "1.2.1" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "3.0.2", + "glob": "7.1.3", + "glob-parent": "3.1.0", + "is-negated-glob": "1.0.0", + "ordered-read-streams": "1.0.1", + "pumpify": "1.5.1", + "readable-stream": "2.3.6", + "remove-trailing-separator": "1.1.0", + "to-absolute-glob": "2.0.2", + "unique-stream": "2.2.1" + } + }, + "glob-watcher": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", + "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-done": "1.3.1", + "chokidar": "2.0.4", + "is-negated-glob": "1.0.0", + "just-debounce": "1.0.0", + "object.defaults": "1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.1" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "7.1.3", + "lodash": "4.17.15", + "minimatch": "3.0.4" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "gulp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.0.tgz", + "integrity": "sha1-lXZsYB2t5Kd+0+eyttwDiBtZY2Y=", + "dev": true, + "requires": { + "glob-watcher": "5.0.3", + "gulp-cli": "2.0.1", + "undertaker": "1.2.0", + "vinyl-fs": "3.0.3" + }, + "dependencies": { + "gulp-cli": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.0.1.tgz", + "integrity": "sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==", + "dev": true, + "requires": { + "ansi-colors": "1.1.0", + "archy": "1.0.0", + "array-sort": "1.0.0", + "color-support": "1.1.3", + "concat-stream": "1.6.2", + "copy-props": "2.0.4", + "fancy-log": "1.3.3", + "gulplog": "1.0.0", + "interpret": "1.1.0", + "isobject": "3.0.1", + "liftoff": "2.5.0", + "matchdep": "2.0.0", + "mute-stdout": "1.0.1", + "pretty-hrtime": "1.0.3", + "replace-homedir": "1.0.0", + "semver-greatest-satisfied-range": "1.1.0", + "v8flags": "3.1.1", + "yargs": "7.1.0" + } + } + } + }, + "gulp-autoprefixer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/gulp-autoprefixer/-/gulp-autoprefixer-7.0.1.tgz", + "integrity": "sha512-QJGEmHw+bEt7FSqvmbAUTxbCuNLJYx4sz3ox9WouYqT/7j5FH5CQ8ZnpL1M7H5npX1bUJa7lUVY1w20jXxhOxg==", + "dev": true, + "requires": { + "autoprefixer": "9.7.3", + "fancy-log": "1.3.3", + "plugin-error": "1.0.1", + "postcss": "7.0.25", + "through2": "3.0.1", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + } + } + }, + "gulp-concat": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", + "integrity": "sha1-Yz0WyV2IUEYorQJmVmPO5aR5M1M=", + "dev": true, + "requires": { + "concat-with-sourcemaps": "1.1.0", + "through2": "2.0.5", + "vinyl": "2.2.0" + } + }, + "gulp-line-ending-corrector": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gulp-line-ending-corrector/-/gulp-line-ending-corrector-1.0.3.tgz", + "integrity": "sha512-l68bon1Bbni5S5boKqya3MiwDGn8f6XGV7fsmOokkS+etVk/LY+OhFm24xy0Jlo8Xf0Rx4LsDNhmdzUGIaw7Yg==", + "dev": true, + "requires": { + "coffeescript": "2.4.1", + "line-ending-corrector": "1.0.1", + "plugin-error": "1.0.1", + "through2": "2.0.5" + } + }, + "gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true + }, + "gulp-sass": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp-sass/-/gulp-sass-4.0.2.tgz", + "integrity": "sha512-q8psj4+aDrblJMMtRxihNBdovfzGrXJp1l4JU0Sz4b/Mhsi2DPrKFYCGDwjIWRENs04ELVHxdOJQ7Vs98OFohg==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "lodash.clonedeep": "4.5.0", + "node-sass": "4.13.0", + "plugin-error": "1.0.1", + "replace-ext": "1.0.0", + "strip-ansi": "4.0.0", + "through2": "2.0.5", + "vinyl-sourcemaps-apply": "0.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "gulp-watch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gulp-watch/-/gulp-watch-5.0.1.tgz", + "integrity": "sha512-HnTSBdzAOFIT4wmXYPDUn783TaYAq9bpaN05vuZNP5eni3z3aRx0NAKbjhhMYtcq76x4R1wf4oORDGdlrEjuog==", + "dev": true, + "requires": { + "ansi-colors": "1.1.0", + "anymatch": "1.3.2", + "chokidar": "2.0.4", + "fancy-log": "1.3.2", + "glob-parent": "3.1.0", + "object-assign": "4.1.1", + "path-is-absolute": "1.0.1", + "plugin-error": "1.0.1", + "readable-stream": "2.3.6", + "slash": "1.0.0", + "vinyl": "2.2.0", + "vinyl-file": "2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "fancy-log": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz", + "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", + "dev": true, + "requires": { + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "time-stamp": "1.1.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + } + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "1.0.2" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" + } + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "1.0.0", + "is-windows": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.12.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "2.0.0", + "es6-weak-map": "2.0.2" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "1.0.3" + } + }, + "liftoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", + "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "dev": true, + "requires": { + "extend": "3.0.2", + "findup-sync": "2.0.0", + "fined": "1.1.1", + "flagged-respawn": "1.0.1", + "is-plain-object": "2.0.4", + "object.map": "1.0.1", + "rechoir": "0.6.2", + "resolve": "1.9.0" + } + }, + "line-ending-corrector": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/line-ending-corrector/-/line-ending-corrector-1.0.1.tgz", + "integrity": "sha1-WGN+//piwZo29AGPI4i6jTHayQA=", + "dev": true, + "requires": { + "coffeescript": "2.4.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "2.0.0", + "micromatch": "3.1.10", + "resolve": "1.9.0", + "stack-trace": "0.0.10" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "dev": true, + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "fragment-cache": "0.2.1", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "1.0.12", + "glob": "7.1.3", + "graceful-fs": "4.1.15", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.88.0", + "rimraf": "2.7.1", + "semver": "5.3.0", + "tar": "2.2.2", + "which": "1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.43", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.43.tgz", + "integrity": "sha512-Rmfnj52WNhvr83MvuAWHEqXVoZXCcDQssSOffU4n4XOL9sPrP61mSZ88g25NqmABDvH7PiAlFCzoSCSdzA293w==", + "dev": true, + "requires": { + "semver": "6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "node-sass": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", + "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.3", + "get-stdin": "4.0.1", + "glob": "7.1.3", + "in-publish": "2.0.0", + "lodash": "4.17.15", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.14.0", + "node-gyp": "3.8.0", + "npmlog": "4.1.2", + "request": "2.88.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.1", + "true-case-path": "1.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.6.0", + "validate-npm-package-license": "3.0.4" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "now-and-later": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.0.tgz", + "integrity": "sha1-vGHLtFbXnLMiB85HygUTb/Ln1u4=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.12" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.1.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "make-iterator": "1.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "1.0.0", + "make-iterator": "1.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "1.0.0", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.2" + } + }, + "parse-node-version": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.0.tgz", + "integrity": "sha512-02GTVHD1u0nWc20n2G7WX/PgdhNFG04j5fi1OkaJzPWLTcf6vh6229Lta1wTmXG/7Dg42tCssgkccVt7qvd8Kg==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "1.1.0", + "arr-diff": "4.0.0", + "arr-union": "3.1.0", + "extend-shallow": "3.0.2" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", + "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "source-map": "0.6.1", + "supports-color": "6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "http://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "3.6.1", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.4" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "micromatch": "3.1.10", + "readable-stream": "2.3.6" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.9.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "1.1.6", + "is-utf8": "0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "3.0.0", + "safe-buffer": "5.1.2", + "through2": "2.0.5" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "replace-ext": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "is-absolute": "1.0.0", + "remove-trailing-separator": "1.1.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.9.0", + "caseless": "0.12.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.25", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", + "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "0.1.15" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "requires": { + "glob": "7.1.3", + "lodash": "4.17.15", + "scss-tokenizer": "0.2.3", + "yargs": "7.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "2.5.1", + "source-map": "0.4.4" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.2", + "use": "3.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.2" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.2" + } + }, + "spdx-license-ids": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-bom-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", + "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "dev": true, + "requires": { + "first-chunk-stream": "2.0.0", + "strip-bom": "2.0.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.12", + "inherits": "2.0.3" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "xtend": "4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "2.0.5", + "xtend": "4.0.1" + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "1.0.0", + "is-negated-glob": "1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "2.0.5" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "1.6.0", + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "7.1.3" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.0.tgz", + "integrity": "sha1-M52kZGJS0ILcN45wgGcpl1DhG0k=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "arr-map": "2.0.2", + "bach": "1.2.0", + "collection-map": "1.0.0", + "es6-weak-map": "2.0.2", + "last-run": "1.1.1", + "object.defaults": "1.1.0", + "object.reduce": "1.0.1", + "undertaker-registry": "1.0.1" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "dev": true, + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "v8flags": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.1.tgz", + "integrity": "sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "vinyl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", + "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "dev": true, + "requires": { + "clone": "2.1.2", + "clone-buffer": "1.0.0", + "clone-stats": "1.0.0", + "cloneable-readable": "1.1.2", + "remove-trailing-separator": "1.1.0", + "replace-ext": "1.0.0" + } + }, + "vinyl-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", + "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", + "dev": true, + "requires": { + "graceful-fs": "4.1.15", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0", + "strip-bom-stream": "2.0.0", + "vinyl": "1.2.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "1.0.4", + "clone-stats": "0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "1.0.0", + "glob-stream": "6.1.0", + "graceful-fs": "4.1.15", + "is-valid-glob": "1.0.0", + "lazystream": "1.0.0", + "lead": "1.0.0", + "object.assign": "4.1.0", + "pumpify": "1.5.1", + "readable-stream": "2.3.6", + "remove-bom-buffer": "3.0.0", + "remove-bom-stream": "1.2.0", + "resolve-options": "1.1.0", + "through2": "2.0.5", + "to-through": "2.0.0", + "value-or-function": "3.0.0", + "vinyl": "2.2.0", + "vinyl-sourcemap": "1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "1.0.2", + "convert-source-map": "1.6.0", + "graceful-fs": "4.1.15", + "normalize-path": "2.1.1", + "now-and-later": "2.0.0", + "remove-bom-buffer": "3.0.0", + "vinyl": "2.2.0" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + } + } +} diff --git a/core/external/eo-framework/package.json b/core/external/eo-framework/package.json new file mode 100644 index 0000000..0737cc9 --- /dev/null +++ b/core/external/eo-framework/package.json @@ -0,0 +1,22 @@ +{ + "name": "submodule-gulp", + "version": "1.1.0", + "description": "Submodule et GULP", + "main": "gulpfile.js", + "scripts": { + "install": "git submodule init && git submodule update --remote --recursive --force", + "update": "npm install", + "start": "node node_modules/gulp/bin/gulp.js" + }, + "author": "Eoxia team", + "license": "GPLv3", + "devDependencies": { + "gulp": "^4.0.0", + "gulp-autoprefixer": "latest", + "gulp-concat": "latest", + "gulp-line-ending-corrector": "^1.0.3", + "gulp-rename": "latest", + "gulp-sass": "latest", + "gulp-watch": "latest" + } +} diff --git a/core/external/eo-framework/phpcs.xml.dist b/core/external/eo-framework/phpcs.xml.dist new file mode 100644 index 0000000..4f1d0e5 --- /dev/null +++ b/core/external/eo-framework/phpcs.xml.dist @@ -0,0 +1,17 @@ + + + Generally-applicable sniffs for WordPress plugins + + + + + + + . + + + + + */node_modules/* + */vendor/* + diff --git a/core/external/eo-framework/phpdoc.xml b/core/external/eo-framework/phpdoc.xml new file mode 100644 index 0000000..77c824f --- /dev/null +++ b/core/external/eo-framework/phpdoc.xml @@ -0,0 +1,16 @@ + + + + docs + + + docs + + +

      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%0D*<8a_u^ z#l+h9!u-S~aUT3>=;sl)HZQU8K_Aylvt z=KTWGZVthX_kfaS`x$TUr(g}Di|{(L4o_lNL)rS)lzrzA6~+8*yG2Ojjq^OLA%YjH zZXSa^`^?}YB{mYnl>6eye||J-Yt>%R~Ff6^h^Lvy;3C_I{l!$43L zY2l7=qD1Y)mdE;sxK*vRdv|7g+P!+3&+Bx8r?(_M160OTmK}S!6nbYp{HSNt^H}f^(#n1{^yrM!f?A3u;Lvh=)qFP?%&a5gR55Z3hAP9XRa&Giu< z7zBd-ag!m;s8l}v&{o`=h0Dc~lE-TUuLO*NQeOoh@bj_+<(AlHc@k?^OUo`+lDx_Q zx0imcVu?Su2-j9x$X&_mRB4IflivD34{jkgsvPcfqUrmTd2 z_V$-W2_2D3y0bBriBF$~&%k7NOXP^(TNa7+R!`o|R@oVSlb`dgiIvBIDRh@zxe~A% z%XF+6NhZ~!$tDM|XWARIZbp3tj3Tn>C|*umP7x<9pJ!1|jn!35I<+NyIIZ*?mO3q0 zmEyb!ICKzavl|NLCJPp_L)Yi%KfgKaL)iesq*$5r?#_r zKQXoH_8o`z-GJ0IECVyHQyB<@dY$o9s27M7)*p3Y{6^PWbX8q`i?8edc3@tNB|6#? zqmDsW0cx!C!Y|Yb6&!FU4{ltTsXFRMiyx7lQl0d0gE+)BO0Y59jO}Ow8*D|ChyD5{ zkf-Q18VR4iVDH|5cX@jy7K`KuHXiOBcq@3j=iKhy=l1-+<$tirHhIUkY54U7nC2yo zJ55IzI5Ds*H}B%?PX`BaDATi@N18W|?{MFmeC zVpXXul@gqpeT~HMODg$X4!VP*1d6$V?)+IOJFEu5Y;^AzTvL3o!;~<5N6R z@QLI^e2O5MU~uc{o=;)Tf000QNGWj2 z<*bx*vx97+eW?9vdHtVn`bpdz)N@sKSTB^k71HIP%E-O*_JXY2+Z1S1@UC~pgfjLm z!$~9Qr@D9h?{-(-jbToM+T$yPUKS8`iI0l@H`_3fJo`Jg%@Rz*kz8nyQ*uzgSPx>+w%i ztys|eZFwEs`*Xq*yw{LekOG|z8@{af0`unTw13trAT|eOCe*JCw=6n~amf4$2 zC%N*M)Zc#9HS{ts_O7}!8Tk9F03}kFVU3zU-l4c=LIbb z%FEVW>Rv)2mJ_s$4mTH*pt0u08SonjPYE0FhPYgfH6ihu5fF$FhLG74$sO`Oaa}bP z-xKI`u$)7|du+c_8O_U%c2^jc(0FM|Z6UQL$wl;DvQE0&mAr;1?$4s20ERAYbUgv50PzCC_?YUhWpU3kw%AW2|ncg+Yjx;s0Ezt0PQgyL`Sg zUUhYHc{Ov(xPV#xGudWOdBu{&!?tHO>&Gs|Z`Yphf1p+pFVt7p`wKOd!mw@74-E*s zKwdslD(F9PWpq~2fGG3k9yeDVsm{pO`!qI&L*dE3cIC#>yzoXu9FE0DJTR4o@7Q{y zZb|teN!J~C0UZRO%*?VspZSeo|BmQzI$7Bf4;a4lO!fJFQsv~Bw#V&5(0)u#F`_~0 ztOo-<^8Jm98{bQh;Gh+$)7TFswUv*GxgbBJI>gQNeMgx-NKkU9L>2%1sI;O*bQxU0 z#l88yhUD*)U@;sG7Jl2ys0~5s{qR_5e!qV1^>5m(MN2o-a>>_jDz^Xr_Fu7KH&+=f z8Zbu?cN4_es0!?L7t7J5@$wC-T9%xVuy{!~mGxg{>8ELn?yk)_EfvhUP%*SRTXH$T zo|cpviHJ1{2Em8hPv+*Y*2ymJed$_#{2XM-zjpT$-~)L7_sb&&42{yHyi1KA4P&F4 zunMtDd|`W(22EV?ia3!bp<<#E`^^l6Zcw~63Zi8>7d|~ss;y?$&hI5!tgxlEckg;B zYmamgEq2(VAD{0~TMd)~1krPUn|>kN_{vssVft^mbO?eg-e`S~@3h-@9&dm6-c%5# z2e0i$dra3SG&d(D@TW6-7K56ubex9q_&Z^yPqN3I`~{!&v;yD%k6z^EWVp+caVY)c zwse~7-|F80-!)bG&{`wm2}SOZKSi1IPgk1vcyqe85jNMBM~Kdhws;bg;&2293W*O9 z^|<_UildjfLAjO!Y*=~e0#2|t_WarYNrvB3{YcsvrkmyS{p*L1?g@>gLFMzFa)=fg zIuE@5Ub5=$>)>5VuZ!PlGS<@fLS>n+zd-$G}1@ImERDM;f&n zoZgE+A9eGsqiwwsk9W=us|+ze3hIxHcv1;0m%=wZHK{f`s^D@CIkPh+WZ=>kg}WBG z%Jvd7z+Lnjxr@^fvM1;9m|!P=A4tjnmvs{G*=9`zk3{ z=bZLiasG4{Xk5x;g87kU2L1VkaY<-fO5xt$#OaojAZpij-bz7{psFtL`}h~CQhbA` zI%Xp_eLg1MD^6ahe#T)kX;egWewu7{#;=0yq%M$9uOKAt&CR@YF ztE%ef7G;=iY;w`uSG9^9ZYIreX_h5V#ZSTb1lxj=dDXMXN$Nd`aKL%-`2aX^k9u9} ztm=6s3v7++V^^$*UH|-1<)5slUJRu~T#&{xelf7r{Vln#@m-{Ka2&7mX63JOQ{VXp#{Vl8P_EjQ;4cRr- zq88m?ZD&`&T!|5{%HXnq91i3??9HFrj54w(m9Hi+arN0r%2;eXs(C8ka2CYL32?Fp zzMPcBo@9QdHXUQ3d;qP*E&rA>;av{&nQ*>bFPV+&dqaLg5e>Bx;t9~5+0Ya6o4(n2 zosVW^KK3(|qm=_a73zd(thsCx9>(S>bkyIyd%Sr?l~x>Bgn%#DzcuhuUsp8`t1E|D|a}2;_Sb2xXj}nqY(}|(h0QpVji~nfo&$@L{jm1EB@i8 zaaAs7jfE=*w)}n4zzo*z=d+)9! z$=}~JYhP}>s<@=o+~lgRsa~Er7rf$&W?pd3>6dyo4u6x)PDD=5y|l2C_ji(c_?PmA z=YaWhmKbv{^VZpbijaRw%NCTEo?0`L%U2&?0PindX|?JwAuVja882IuJ4Px!H>H1V7Mvr%llI)R;q?!C9oo~Ea*%&;OG<2y8FJ$4*<#=W1S8|vKIRlw z3KVve+~wK6gQ!JD0mw}}Re@PI|&8Xd;OFmK&%qp~W^FS(w)%GqbMyMuFDGhtwM zA56AVikbTWpndk~DDbIkkxw)r0a?vcwpQt=J7~L6h#3u9(T=2D(vfuTCR25`c**Pm zgB^t^bx>@&MXYw`kO@`+c_yXS|46?y4Q;FE$~g%nnn9nTn}5!48O>(&+k^=%0*#N6$J{wvaUdn z^8dDc*bid~{KHqJo4pVJS?nn~P?eo*6(gi9B+^plZon1IdVcF(^REu9IPlYc!L@9f zK4|U31zZpRu`DT8Q2t-vhy5Zf9y$WBV3U8~X~H%c!omI~U8awj#F5MHC5jQ*F@br)D(iYOO`B!8=mQ!)$tuIRId#0ROye_I1KB476f+28kPAZv9lky;^km!9 zq!dJLSrldp6Ga|q!-ESfyw00#3@KM{!>#4RZC#^%ZED*fs0EwxYXc%hdG2QRYOUG(Ze zsn#pR!WQ~L1TE)9uIJt(2yhGStT8`tImDm@HYGI$Qcltn4c+emg#?0^{=Hu51KyN? zt7h#Mw|86nhonU&re@Xfl^`)PO*a_4(wl#eHGq79y#XDC6RCvFIG{omz3qY6^+y!q z)mk$5?$swyk3>IN_IQ?1@hIW0!xphiyyS_UA1L*`r%MH>i9b*X!o*jtP^ydDai>W% zrMt@A-EFyf_ZCO%JYeI`xi{wxVHpjT@<|~G!_@wC>Rsm@C_U>Bw_v@E1c)d`;Sw9o zAj~@A9)s}4o~QN0B2#NTlYalQ&`Vd|8@$MjDD09})()kw$Mw)}^E^_aqHa^aK z^x3T>;#Nb1gzAr>YK)T-gcXz=3?LN~#i3xLvuA4uIND`~pDKkowK^#-=KPon#0 zua2g?#}5-{0cV)XjcWYNJoQf(`fe5A^tbvh{8W>f`!RHRdU|dq3G<9B(bvM8i}=N{ z9oAlQ@<(&{9&^9K>G~aH-E*lTB;d?Ues*i2sMZ@$khr zc+OJ}{!L38v7spsuIvM3hWihl5Y6^YM9XmOaU>v#O zy4W2`JZ*kt1O|K^gC9YmukOpBLeZbADEjb&;*{%NE+tUimD6VLpRI-6RD!gDgItFl zVh6m0L}HVCyW0Hi<|T7pM>rIxVtiyI3Cj|sOI5tp8kX}#!qiOMI*689U1_sOIF0YRPg#va- zdLO)xUccw23e7-kk^9(MEQG~QKMHG^b6JKm zbDkaE$Nf?#CBE%!?z;wW=H_>A_vk%y|Kt(F5A~gy#|wuHHk+?HoHV-N_pDpuTR}B9 zZ!%0T$k(^Nk6g)JshF+T$uFEfmE4GdW5hFn$J7zbdcrLps@)i01Z_#CK^VrH44j;@ zmw`8efgQdKyvgE0JM2Qka{*a8H@xBhwLfRf++hef^ArJAwWRSXM`0T(qj1Z-zuqln z+*j{q&?REG)XNJJ|2$&|*fBF2N$%$BLY*T!-EC7^!{kyuE+dkCz!p=t`6rS0jrO9L z=Iz@Lp8d4;8{VRyHrL7X4zSZBIa0kmtkoBXSGjW=#oOw>|GxON(?@bT{q}9^HqcVu zMV1!-&mkpu{Z^PrN&Mj?(r4}C5N;yMx@Lq2Eg01a8~p}9jjt&&2bPR~8mWa}l2utc zv;xf`5+F6$bh)&m%HbYI9iw`d$Q2&eVi^(r6$*PSV(VyPTu)#IT1apcI+4!X5=-Mf z)yi{3rzaK~FDv_xNkz}z=Bw86pGoz=oN~4fvoQC}S;IqNU-_XUXa(}llM84r+b)T; z`O&(-?K5X?ua4276(!UwF+Jt#A}O54!$&lK?ck&!YPJDt%}%wr$%MVm6uZQp<9~sw z6=n$}G23jyRgpk=XLf%;h2J)*utu^9kC)-M`UZxPvxpURop+D>asbzx1jn+0h_@O@ z&9_IQe7F5cql#dr^RV?16yjxO{0j8>D^<_L+$#V{+>c6gxz+mZN(tDbBU}k3rL5h!4r)s&$m-J&r4)HIhz!1Q*?=M5Sp4kY8TGgq+*JBaPP@E zw;;!r;NI_M-+~C%E*EOBbyNjUWexi6ireKk$Wkoh;Wr=U>ar4`TXRnK!p`yXe0-Rx z+BBz7R?^f&xUpPDc()14M9Ds5gEnoR4I%Ax*{bd?ZYW4HHB>doP2CfB=_33ygTty^ zHZUu@p^r%3Az?h-Jl&l*=tHS%Uk8jB^6vtgJ3Vb+!0*IOYwZ15Tx+-wD)@>feaX0n zX0YH9*vU+Qavt20q4t*WmRrPIq`s{?YL#4_BSEH3lOTfYWW-iC>GVfd609hOa~kJP z+k6b2BK{#iIs8B*^!=>l|E6$%r~(WBNw&s=Ybx|Id3|Xb1ni7OYYrDyXUxAN$jk=M zZKTd@&*NFif5KSB{?NiV{-dc9qe(bZa3^DatNIt%+Qm~)VBy6tUZ$9Tp;e9@3(*)9 z9D~84P{qZ*3M?iDMq$tkcc8FwnlP=#s;w8#ktO2r1YpAYJF*=9C=6iG<}`d%Q$y@M zmVXz=1uQ0l4`>pl{@qDN_3Li&=*%`aM^OQMSZF)0%+4Wr<~KZ~1(!{}5R?PK6!wsA zr(E5JiTxr!O_l_bDB>qdRgtPiPl`k+Is|@SHC^Yo*ZX@;1ls4ynghj&qZNZwgnOL2% zQ*t!|Pcq1}C%EzCZG)lJeG?a`4jnldETjUJD1Y|sZ@G$mv~}x0)*xjiB^_hKqQzQY ztU`>&R$?jXmC7J%I>|>TrAV~^*hy6dTXQ&5qbF|(+>%avDko>Fsz5y?5%>guR^``a zFk2v+S{ZsITA}bClq;6c+Z*kOmMcJ7r;4H~f?Yq6>vjDIT%k81VD_%Rp{=tmPbobOwRz4U??b+VEyna-nn zbx-j{miq8-mm6_{Tw$H?Ph*V!@&j_O_beRV@0)M@$SI5QF((VjS=n}#>ll>b?1NjCqRHpaRYnlT#hiQMkNj#)x-;Hq>Dto+1Ri!S! zu;9YR*4B+e^YVjryh-KuHuk;(ZbD=wX)}+Gx#}#`>9mNUt-=s|m%-@((IYi4SQc`i z-!i@iwH{hBPBU!FS&%jLXrN2sO0xxI0aoGA=I<5Pe-8Yo8*deImP^9|>1@|y+e`~{cg zp847GCT3H%SVn$%LB6LvJDHg*hXLbQuL9Kf3m*ZJY+u7CeSv$QrE9klvgSo`fU@OAw3ycaF%UD~gajO!#rBw|%VT)J|BS$tZ3S-} zd4@M*OCGVj^qyc@_s)zAsu#5sSCNDb36$QAMy?+&i-)azgYs*JYoT{dwC*B_rdl>`iH42)>69uvH(D^YIgCr`xf3 zSGsSZ>}>YBlwUlJ>wUeFvQic+MAZN8ix)}{%qfW9_g|kW*}~JM5UPRs|K`SA0n0&9 zkcGJfh973bXabpHY)Mh67KbpB6CI_a>7t@Jp9hHk`U|ui=*E;F00q?0<>gg$zAa#U z9#$eC@r*7qs{s--A3kJ?$vckiPTW<1!eAwL8EC9;fne7Aj$$sVZzIa!IzjILIJ)@e zJk~HsxDP&Vhyd=fnUZc(6RNS!1c$ij`A63e4h*c=yXF<~{12`_I^P~mhKy5Z;Kv9N z$Hnvp`y2z@?ZT;MSK_82o0@o69{5FAww|ClEl`?mU(O zFmK!hIYrzhbMnk>R4hhNt^La8gCFh=q+&$)Fp!EE+ukrHWns+z5OJqS=vQB|Y?dr} zHR_$FcCs`k}xQJ=kVer7w*x|HoLY0}R&zy`kCzvjEMb}`rK zQN>#ZX(&PbaxO%P^U(egfX1LHta>;;rhzqp8V%}8P0rGS)ng(A_B?k|LuC>e`d}2e zvd7+|hnnr`E_Xcd@k?2wT<91o9Q7&r_(1Z&@#h!!?D4ka8}jF<@n^@pk5v?^wjOZ< zjlSaF@_~o<)Gq&EBNB&+xkU5PW*>XBoi*dwd8vUFc&_7{+Cb|uIqdZGxXV0^AQ9h9 ztqD)@&J!fRzARGbuNm?mTAYs(>#AMOPX31tjdgW&GcmacN65NC;c}yjn_JKQ#kt?*cDiD2qc?v~GX>W?0pFmV_ zxDc1xiCB?Q4tI5cO>BdB#o;WgfWW=t8I5sLnYMdpj? z&VR{ZqXd%69cj)g^XT(4Gn?ZcRz`ts_`xdE#IpD`*|)ereAz?;qpvp9hq^Z<;9i<{ zFV!cxaLMK+-5Y^B>5SAXUxzoZX}T=V+={OCbOL{r_YW}`n!iQwoy_vCtmNYo_a6xs z=H-TGyk6s%_x$v+x$9Q_8Mtd&`tc<8`smfUXL;O}TOM%hoL8OT(^Iiv%>R}JH%zk= zqz|QMG{*}eYtAfpCuFbCSyqFgt5&@$ltkvFwXiKxQn-)y_!gQ6ZT9F|o3J?-#Bo|~ z9Ih1>Du7+G9WnwA>ybIs8XR(MoxJ2|4lWh9Z10K-=kF~KOAbr0CKIzRSJ~9mW-qF| zCc8#X^PDu*;L2walM}3AVadzyoxiX`nYD?LrQ>x~sSGPF+`X_oJpGJc7pL}@@BF^| zrIyp>cP2c2`Fx2LDnnJ5j+e#Q)G)wH9>}etqR!0n$i(6ZvK`$U|80>2F!f~ap``}w z^{AWKR>|{#Hu}rk60!qBg;Z#-F}fD;QzT~*2fk`Xk8x+l zPd>9@230~;Qr(he!g#d_PrOVdWKGkVnR#z2nP%Oc=LC%qY_RS5o!3>q$$RazEXLWp z^XT_3_Aq-fk@qM%dVx(IdNY!)%Ws=G%9VFwL|%C1_33iUR4Z`0TByzb`5(Ek*kDf# zUle({g}_=dp8tAcBI(U{K9r8R3}Jy2zK*ho$F(q}ebfL;opZ3-D#lL&pEo{90T#j^ z?s4H)=%ZGFG3PGFUEW*wC#z3Kt9Xm9&?@{yfL+y~v|U*oiv;US%vrjBAR)q~PHqN70Jdq>%9_ZO*xAuV3s*4!q;P5t5Li z?|SZKT+@z=ptJe!@k!1||3J$e-n2;)BKg9FV=O$JNefHQ=pU#Y7{F|qIkT|P-Jsvq zr40+kg_Gc^5mQ^>6AWC#;fTX!ct#c+8acx8yhy9>=JiI0JgB%$=dDZNyzWUs`SU>H zMFHu`35$`3bEH92k;p}%fDbdS_H4SBoCloOD}B56tD#69e*O#7>)>Mn679QPk3sOT zL~=p)_tt+8&I$Pm4$R!amfweVZW5I}M^@FS_YB~2_Mu>@y4H6gTbxN+gQj=6f0xU5nSB&- z@Aq&L=s9g~5r1&CEO_!fl~1LKiN=Cs^ZI%Gv?NJ6T&}YGG+uvw8eftW1xF=0jc@!L zh&CW%Jev=vV0wm)rCtMkji>H!;51Gc-kVs?TFlDQmc=Yyc42Lluh0*%N z#`u0Er50C1oJ3H71r9tSnZ^NCD(-jBn>W}|;X;5?#SzcmXw z=V#WFCvI8BrWD@IAq-7;y|$3X1M_{5QiD%avbWxNeciZB$^+UQgwzDRV~Jj?RSR>6 z{NuJd?KC&Fjn+m@i4oQR3CwRkJXWeSfiDjhJPPo%iVFV}mrjn_zNz+#4%oBqt@ZU= z-7rI&xH7%`HWzIy6#c)Y-H(>tlu5W#GKw=DR56raRYlzFZde>^OlMkN183}2h_B`n zV;%qrTPX|NTS4p_0+eT^xKhC_9U0V$NBh>|slT-t#f)Ms$18f8D zfKo%48kxUNO2Aj)xYl^AR*I!NJV-iu3#fc2ql+={epx2c|CK6l>qMcJfE%DTms>iL#5t^a0fVIFyYW8NQW z>4dZF`!%+umDFeE-A)=G&|CqIidA@*`|cj|NRcCh4D(MHzb>u~^5H7BT|h(V3)>W2 zA7vUQCw$JF@ElCqHkP4sV16V!h}XQZ^kgX4_k0tXKpRNFdgp!*(_g>)778XkXI6MOgRD?SX3;Bbu!bQfHA^3FnLA=!} zg4^u2)HH|PHP6x9=5UlucJGUV5NK?{i?PY&xNVVbHG6&=A}voObQ8q*79*y9_sZ^b z`QX`Z;o%m58#>{-1>$8+|Lc$*U^*JWpLc}yU1gE~xsAxhT~zkS_^f_Q@11UnxVKa| zYn-yFyDlOd&vmT&6lA!+%=(+CPxPC0*?mLMpZAtmmsKyn2P!U1{}x0lEL)D@?8PwA z-t;4D1fKWb5tjfZK?#&qEc4wC%#m~#;Yn%EL$gsUxI_T5JdUZ|);z0QeQb47T96@h zD}{0kr%5fi!jFCVPW+rg-WnQYh+|a0up~$itDd~tV-bYsdz9{ZrL@wlmn`iuG3}Oz zMw(Iga*s!8c)mrj=jC48)n5YIC z%Dd&w#^S4u5VQBw)WSp7A8UawR|k{W*w;v8w&Sa(>>No74$V?*j6VD>^TVBle*Lp^ z&vx;j9e&m?&=vp5xcTmiD;tmcc25gCL%{P2fUnzapVDcZvdVDxz<`#f1*?-9IWaM@ zPP~tbs{3ciHa3{eTu6VcrO$bhk3l(LOn%9Ex)${6u()DE+BIPxou?Rw74(w5DP|-9 zBoGh>BA+NU;U&)=*qAFJN>a{52s2ooUi-RH@u>exJ67Yf;=4}5Yo&M&_oc$}R6g*W zOn@K#w5&`=)w#KMN?94L|0MiGt?Qz<(k%nSW_~)QelZFqGt<^s7$`ughqIg#&$AGg z`8!?ntoaqo&U1;J&@uwg5>F}rmcF}RzfMn9Z#?QmBp<8SlWk+G0frqdywEc>$wVo?JjtZ_-ke@Qz z_avgby>4GvUKY9c`8!U!>67UoCo+HO_ z8jUypwvCL#w-KaR8;*#p#ENmg-4asU1lPn7huy93lmzy-6FRjXNw+T#Jp65`drq7t zFM2r@(!p(1*7oBJF=gkTNdi9C%lJ2&O=!adBZ0$}dg4^g1dxI)>3m{-rCZ%@pZ_lxd9Z|}_q zxpbZ2z2}veFiY{po_Q8^M@N{mK0F_LkrmGb$Ao_@VY|QOimP{08f0^tb%7X^~yO4&Rc&ScwmATW8MtcI|7V&m7JmJ#Me8PVyx7Yi$_qtYUM(1C5J8(jl{y~*c zO=^0nUv6UD`-^E^9=HF|>W9i_Mw5xG)Z3GH6Gy`(P7N8TX8C;I(vCm=bt=9HthK<5jprgV0MyK>f&Pb#s8pG9Q zV@_(7;o$6PbEcL1x{c2Gkdasx;jz%B2wyBFI?^(db3?z;{9tgC`rZi8NT21z;uG;b zgrUg4{Qja}If8RUDWaTUsiuX{gU2Vv<~)-IXm0rK{PM8z?*6H{2W>BW*9xWLpoxT_ zXO!rPzF%}zH07BvgjHTbZR+X6x6e_qwL0zic zqF$@Q>Y}q)!13mH^oqn0F;$}eLnx-Yv@w|oNEFb#Ta19R5yN!(Hd?0>r}cq#2q`}h z9`hg5YMY=Ps-UGN94WAm6&JgYL~jfGvFuX&iU5(AvQdD!T+1%hfS%xkl)OX)Jidm% z^DtV**tQ-io6!2h!tD9dMc-G3=+e?`S=B1XCCMg5YO8*!(pG6*tMp}vrQ6f^k4>UW z|5l=754n%H4{hXUm;Kui^HMw;O!6$eshB-R>WD&~VjI;7ilhMvJ2Pkd{kj> zw8y?Avsu6U@Qvuy<)`JClvw_Rh5I}v1r}Z75Bk7gx1M=bkCzT6tIlye4|`*C3+Et^ z$H?T?wZ}GY*mx|i8JngmhgBf@WuEJg-_MCT0WDcarSr%YNP+DEBC7R~y2&h$=v>n* z_LhtX>Lmh#JBAd)WX6#8fK=(l>RMSOR;z9`F@^iIKyQF~C}(1#SJZ-O?8=F^3w{2) zvk+J8d*wm`i~hW35&2zADPI;d{rO}wH{zB^H#(3>|Jp) zH^SuZ;1g_^|2$U+8}}rndVpSkPI~r|C=?cprm9hMR!EE~|8UBg=dn_aTs^F&0_!zV z;YkF{Wa&ZEuou=(Wx^cA$WRnu7q?$3@_F#vQH7VuqXqBc zoMnG$LYb6J>f~iXmIX_W^V^^$s-!nXyQpW77!%7ZNGd3b)f6|`2aoVrF=@J(An-wR z*);pk8Lc>?jkIn;1(2k2g{g7=tS_JaLm%w9KZ8Vd>mL3nD=gHlSzT7zU`@a46Mf)d5vlAr^W~jsT3~&RePvS|P}3#u4uQel2@LM;?oPts?hb)4I1KLY z?hXNhySqbzJHegs=H30URa^V)?hm-P>vVVZmp*+?IHb>JNLUHw3;RXWD<<~z`YDuh z_GJ!<$OMG^6y84R&C_R{YfL3PzmbDP@Wl~aWZ-JKmFAGFFKpltmodWyNWbmFH{hvY z>|*XfS9iOUdQ_I%_eX(JMHrDoMxKPRqaP~>`YOIRVdaLq;`*y8EhY##ozSt($bR=L zVQ<~&bvJ+CE9+Sqv(w9o%^)ml&r~3&9Q7!V%Z&R{daDc_t^p_2w@8iRiR5+jsFRY; zDyNY$CgtyHM0$;0FRnRWq-yi&0bTOaKy^~qU8K&-OW~=hN0}D0!Xn)IJrAU01cESO zSMw%_20Dt-8L=M6}3hY~V>xq9sRnaG1) zO4ldMGy@aU9s|iMtiaT}_Yf8{L(krwpOqN-SuXgppN}LBGJxFiLBlR#m!7_Cr!Wz{ z`wJ2|kX1zYPf$9Gpq|@Dtpf>0b}(P~eysm!LuKnh|H(Q=TNtHw^`$*NaGCKE83dKo zloH1vc16UDvQPW-R^|PBb8rldh9)x;W$XC8=DazeYkfYC$JkaV%s@@YWpTh;`wP}h+|dPv!uAkQ)hR#@I2MQ z-r}o7c;b&fN7(IN3~vbW9!V$XukJ7--plwA(~|Bib=Q>al;qr!{DgC5rdPamHMM2r z2B1f83;Ol60CB>lpJD|Mlm$O~{SSa2_o`*>ZtL8#dv-GNYN-H+zids@?L-G^a_ff{ zu-LMnDIRrmZp2J&1RfFnjvIFR0mC|{)gmWFz#xMr(jADNP1{1e2ppPrP#I0?2kdQhg#y#?2fOP9*CSm)Y?rJ6W& zK!>nwG3U}#K(&4hpIBu>G{QlMg7WSrN;V??fy3XO#v@HQ6VIRpLeL;6jk%U2&85gL}op zl}&uV`rb;*mhR|mj;iZJWmX`(Dd23;&|CyY*$y13U&uk~Ol zY_s0DofPfM4B)l?Pb(dFksy9q$Gym|iF3x2b0{e4=e*gOw`{B)!9@~L!&2?TxIvnk z+Cr308oH2xW!M-Jp7=3XnVQZ)4$1Wx6X!R2k?>M_nE#+ZW3*Bk0-HL`fmk1zkJu+V zTr69GMYgbPO?=@kZ3hcbcvHlJSSGu`2+t*#$i^rL!Kcs?RnXT+Yz$wm0G3d3^1Oln z-n?vUA&qISk0pAvGTmjF4XI1B`N3&|7cexxU2FCgHEcHZi6YiMAO^l76vC1szBON`T9^4B{oGix3PmM=$C&HluLW3h@KrxJ32{OBjhe8GDf|yMcdzl825>}$#7{YO=K{7%M_}Vb(HnO$NC_OEpt8e~Gq&Hb$Vbrlo zLgA!kAQ7ol!%PvMRnZyh$>}_U4KjD%D&6iz@d`ymGWhlkjJdk=QJr_l+$uX@&Zv{Baifg*E_4HGZ0R1#hgXTV`_$UnFR zYLs`&SoY~}T82aR8+>=lMOqQm3I6fASN=aP@(W^gtNtq~0}7T$z`Ts$1k02Kp@~9` zeLtcf3pu9~%UsJX{t?=k#PZq(P-*5o3c7NRZ`S_>t^8;F+*?z-w&5es?XY#dojFzj9 ztEa6H(HGAx=g%dE5S!MXPS)z&n*MsXyf=qIRgU@jj*_vSD348J6Wm zCvg#Bz*XzXtj&UbZ0+=3>`(|6<>marto(sbY3pQb2AhULSkkVoE8A>3v^$f*At07v&O9K{$?JhU`bo3MH9bvLz+h9s!t8lw&o3i?4 zq4&=x!!7$skCQV3(<=nJh)_nj7UpToMXQ#_)Zu$5yprsr#$bMbdd&%!tQNmE1*wm7 z;$wB#JiyAN<~}vHF-IA@$zUMw14$Ql1&Rx)sAtZsV&{r8`QIu>K&V80)YI{f53NT2 zBOv|IY>=44S->NUfn79w_mu0)jN7mU^b{6z1Ew3~ddS-JR7xkB*EPm9Fd8P9+uBC- zsqB~XZus|K1Uu86lEnv+vpkp|m=2u3;l4PSD^qzgcD3G@fnoy2X|vD_L(=T?+RBY{ zIf~a%u1j+?!fh~16QUL>&ERNdSVXb;H$3L~3i4nP<8H$LNHh zm3Kte1J#(=CJTBTXGfb8A8RwUl_vtIV*NsIq_@TJU?-w%SI)heh65t~%HTe5jMS&M zmwj7*F~bUfhoo3m>$yj2(bJ?7|5f23-<=ZE$KUd3cuRdXG}u$@c6;716brWC1NQu3 zd_eSy^}Fqewri3$SHjU8<5WZ7&^$vZL?b*mbJ`Bnzp(bMGcjTYQTptd9(rwDO45oB z^sX~%5zi0X$Xe;{Rz-!4f6GBB5nWKZcPVzlV9tB%==0S4Dl`^;T?ojj(CO%@%$^Vp zoI42!1rTXlA;QPg*YogBXxi!ON(%(aRxvsQKyd2l(L3z#o-ik~O^of!NcB=zOARo8 zYU^jND@Zt!)<~9)E(FjYkI&Z?0QoQy&^LNfU|1CFgFpo2pCDkv1PGfQfv=bnChqq; z5;A-Os(HvZ-M{_JQ1aY|pc5Jh|7DyjWAdaYJ^@;Yz@PilW2HTsUld$Ih>VsZ^E>uF z_c#fYvG)7YncObNBdShThzWmx&TGhmtjuL`ME(FBzi|Aln-A!76&2M7Lw%pHTqI&! zD-I=KhEhe)*E0AVBb4>_nS9Y+QqUmv=lu9QwEl*E{a3f|lc8ogyqs}}3sh!9HU&|>RhuWQl~-O9xqDfh=(q#V_E)q?qBG&)Gm^~}LFyhMT?Rm#{Wg%pFL zr4w|Sq&3r)HBuE*LN^EQIF_xr7_;lLt^~Z8X;35I4{w(ypIa~@Etb4FN{WmXP~RRS zZG-?x+B8y&j(iuaQL=39;Tt?>-ins@$F@l@o3(A^?7y)BNWfAB?0O`*Vl)YiT0}Yj z5hZo&BJTeJdU8;t8r%gFNCAXH38s!`;6i{5;6~7JgenwqrnB&bPwb(FP&G&~B{3&6 zwa8R05J%HB4gHU}wT>(!)Jkyw_evz`4I3GL{xv{Vh5o`NB~Pczpq**Z(Y%!7{&ysp zUJHv>U!8jk_<6%cSQM#|K ze%m`A+Y0f-H4^UsqtyQzhbYrv{eL!3XipqX#)ol1d8T7}>P35Q9M1nw_G*EieqG>a zabS=spST9sfNK|pLSvzAhlxS!o^Jq_j7y@WkGhV>g6BI><+joB)kVO#w(WKA`Q_<^ z6H4NLd(})O6f33e96_rxZJ6XFj@QF4C@f-Eua@bb$o1vDEa^{zd~f0Ue=MA6eZ zFD@{o7&xkFHQNqRCG982@h1QJ8ISN*`OO#onSx&bZM&HL?iBNAV%{;f<&9@djc9Z2 z(MKw9KGT_C6?e~iP_3=Mc+W)yQz2c2Hyw$Thx^g~`+;J9tP933lm`Am+W}TTC*xjl zV`ur`G71KceF!knKp@L)Fq?!*a|-`pRw0GK&t)OkqlttuEn5;DX-`kQm3bBYPX(i-&cr&*7HxtWWE4F z{{0{*Q?ASCx0Y?a!bQhW+@!cZfkG&>TjxVw*A&iOss^?VbopKXVoDym)Gp^#b*Ml# zJQ6AZ_;PKhp%~ipQp*4J!0%I$miiVjavLC|AuggHwSew06i{>#8MHOl3FwKCaOl+D zpM}IR6~AmbitK^)xfjuXR_hPyF3`H$c@bfh!O)yOwAH6n;kZujQzc9o6K3$`LzT2- z1ecL)g*!Jdf@IAb8@?JmRoEZgX?bTAiNZ6jcIv{9tba4^6PeyinTT!zD$*4Iaih*yzGEpvlDl1H(NGyaOu zXy(G!aeg`Cj2n(Aa;9QFl(*#`X9XxFXt}%Y^ViqktuL`T$w6bf9o-KuF+1JJWNM#; z-AC8s#owLtOYgW39+LLgbEoy(uOVZAe;fk(>7%~&Uen;106DLkcB@~*S*{g}`=@M< zP`=sdf`*8MqZQ!`C{Lz zCfagL!jdLbQv2EFn5gpHhZM^FmP93`I*AFqiXXvvCZc#1_piOk+A$FuMhJ=)hTCl) z5GLIM1oB`33rMvtk~<75E+m8tJjjR_QCe_;XEOz12VQ}f?2WCg~5CZ2wG zbKHWmD+j!=)wSe@_^C#Vwd8Ukhjuf_noh>>&Bj+h!;F73erSfl{;EW+eR?N^-yZ+I zyfU5b?R4m!64{XLCZUUSpIC{0eD7P}z^s+X|1y)Oghi!V#N4;n+W+seLx=Vr?_}%g z6eq~DY4BR9Bca)*C+VGK0Wt5NxsbKheGB6cE3VaJiC2LOX&Dq8IE5kro6JdJgN2HA zQqWecVBU?EDV_PJJkq)IbrM z;RYbWzlor7nypUeZ|_NadigP$x3ThVfE&*Z@ALvmZM`U5hT$x%1jy$6nmg0-hk>4W zvh(BEFQ5id#6O9SRDdF8}H+%1$z9d`X z=^oys7!UYFmdxejsm+A0$d)QbcXXY7gZ_4+S;yQPSnRuS zbE7^#8mt6DAY1I?&qc}<;@uo)SL@MbeP8TizG(pIQn@bPPjhHtyt;K$_vcd?V% zevKpAq~w1VFX0SIbP^fkR|C%$9ZVt}Os?Eb%GBkKOQ=X3FK2^WY3Vd#*-?MaLv_fE zRDRG8))*&BGX~}xFlFtu$RceP-7Ev^4Tls5}kFu!sRMDGV}^M4F{(xjA{ zJp>(T-O&SX&iW{dE%E5ATqwQwM*6emXnHgiwg0Y8wyV+{-v|vd3w{?UiHzG0j511GJ{t7zXqjId>9TIry z<&6{-A+~;Wn$CLHfpD{w(`^2;wdg13rInm&&SOhJo|3)(q*xZc_DBZbH+G1pno4iC zR=V-9#x9Wns}ldh_mjoq)NPs#roqUGcH`jizvSxn*ds{DdQ@P88(m7+GW+Bw1GSdn z156SdrcElu<1oR`)dVDDp;qg`@l5p-m!~*#$HDEVpI&~zQcIn(UX8_CNx!LMaNwLz zz0Tx7BUpt6>m@zHrepaSD~3!N(|#`eCPx(J@P*G?%g@M#f!z76l=_|WX=%6APeG#w z3B6y5yQf3|lsv<%>mT|vg4?2(CDgAx^}#O$CYh&R&O7F=y{V@TtbK|&<>a12kI zVRTBeV>DKtVA$TgH;hCYe6IO$9p4G-{t}SN-zaz$te0Cr5UC~u1zQvYd#y;t4Yr>b z$}eRCWga3X^%_YZx!t+XF+(s}LhePO*7ZN^XKOPPfR=i@@0gJ9K7bt*v=#;jN8TPv zS%T-(0vcdn@9SsPYTJH?n2p~q#@{qCf_Kf@8tEy5+r2jhBmelKJ<#Y8N)?j)vsHoutMxhUM}7OH8bI$q10FJqz>W#i#t)m1;t&2T z0zgE3oIY2zWT@a5MApcOD+(+ztVpU_VK6aDtV;*?jLl;1d||lS$tVA?qY7|2X?$EC z>Cl)~^cv&iKs#DFs-$cBbrNLVgW01(NrRdrfR5qD(enlgq;i`dahZ0fg~4E?VNZBa zN}NOCeW-)YDK>7r>qME37di|xY$wnX<~)IQV&CG~+G$~{Kxc|JO1>+F%@H`V1y_28 z9J_vs<9z{gwM(Ktq{$cRE?yitu29`$Br*%BE6Q0%RUI5$Jpu=9}l^G}{a3lUw82y#wawZ@XZ+Jl_L~+u=F7@-zOFkni z2UVUrn4dV>Snt5f2svmF2?;4O$&;mD^9N;5)GBO12qO|qw?tQjg4C?geXOQAUYI(8 zhv9yowsSNj>?VA$kMRIN3;eV1^wRwqTKbMyp4lbpkB*b6!}E&v-9Slq0u#B_cMV6a z+%U&uUt`h5vb&2v`3K<=J=B>U4ZPj878+>?s7#@KU|Rnm2R{*ZyOqe+1g@V7=ZJWP zaqAvqV)H(D1wd!Cn>L8pB0Z4E?WTli>}rV~TCu;roT&G?eK#Mo$b(F}wnyDFp)*D8|?vCGdjy!3-YW0-P|M z5nn;|dv>!8RB8qg+K`cEU!jsk%x(s+gT$4ajpZM-4VP3S`x|bybZ%UQMmKMnBHsK4 zgiCXuXwlGm6i*K<5A&p8<`dh)rsgUl{;5TmwW`Bd8YL0w)WfyZem(aZNd9B`5J`h` z4DC0OYc22$w&=TK^4MI_PPizvaerpe<1Kr+J@U2PnNV6=Wx-vr&KWUXfo3T*N}%tT zRLWHEdtHSS9(2Vuhk;$M!Ed;~zg^|Xv+Yv6xog4^_mb@HBE-wtY_q1Tm{2K5t`F?z z6&njCMX1ptN90d*r-W*8Kl9D)PzNXnSwkIsp9-RMgw80Cg%*~(@%A$5GhT4fy;fR{ zQ9$&yokn@&=?A&5%?$1}L?Id>I|N}X6D-*b+{!ojgMoPJ9Aacg9hBrGfA=k7>HP(j zn!ApKi}%{`u28@~5=Hbu4;${^)0SbAmw(7It(iv|@}SduSq7gj<@hml#%0YvXuH>6 zLkgKEk#*U&KWDoT#~oMj{c;v36a_4b7n=?88D!Z1tzy`8vi7EQhThGFzWu!!i0kv6 z_1+zSHCL-M>A_J1)6{U&lmSa?f{R%H-;$5!1h%pz0$n@|<3YC#N!Y;30-7DM(HbHH zlTyrkh?rbl&ETovda}>g1q&nh<$cXi>JU6>|GE>1$YDXJzlsM&o|fJ~R(cN0B(-Ec zY=hS15<_el=r3Zu6;gd_fUBi(@N)t+LkM~iO z=u3e(JbIzlOBKDhlK3)HQAc?Fm4N~>yL72OSeNHz(ab{Jsp$xSr}})M@wYj^_1IMX{!JS%juA zDF(=$M~B#&)0&7D=b}etJ?c1E29(J4 zJ6V3ae3E0{P57RBIApcA79SpLWKnn55}DkNJ4>Ajkc4VIac$Y}9kg&$yLQjXsc_0I zQ4#IFVaMX^C4Vq;>n|~k)w(@xQMHG@1Pa zqMOFX>(-w$@YyE2y0#-vo-7Tif4=k}AalI1#$W2VJNoXU|M!omhkXkWzuPV+yZ|$% zi(0@TR!fimuefV>Syd52WHH`mMBy?~Y;ZB})erhjnc%*q<(dlai^w9*C4+4JWJ@1& zc{LJ1MN`Lic0J{n`5s7lOk`U417qU=>C;VTwMD1>;b6lM9qmzBx?~_6`Gi4w^N^?2rcNk|pgG{L;}3t+GcG0$L}}V?+9(Ifb|{^MB8Zy9=R9`(8E$%k z_>iJOtLs(j%5NyZp$nI`^P4hJo*>b}P9Sc&*H3(6c^z#W86rK4fd{_Y9hU1l%yV@k z2=jg7gL*HxlzDMD8B%b#gr3M=k?{8B6Xs5;p<3s^NI&n24RV?8u89d5+nk+nw;Y0{ zjgTVH-Hj<0{34T0{*tm++jAFLb$W%4!8L}@v!yqp zAj|M3V{vN4Na2iw`m&2U-9avd%Qp4)sDf0{>P22%9J5xL!{jg;v*WH)=c(YD^o# Ist}z20#(n*6#xJL literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/examples/assets/img/gravatar.jpg b/core/external/eo-framework/core/assets/examples/assets/img/gravatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14d4862c0848ed4c84d0cfb066bb9a2d1488c621 GIT binary patch literal 14291 zcmeHt2{e>%`|vZCv6IlENK&*|#+H4uQ;DpRrP(kUGt(^AH0?@@5G9o#*;U9cOZ_BC zl092UNS2ChS>}75u~fge_dW0VzVn^)Kj+`Ad7kUOw)?uT=en2c?qA7fIrwzFdGQ7gSflk559zF1L4(6FeD?k1Ven{Fiw`91Q6b^ z1m6c?xu0YaFg8FM#6fK-gRm(0ZU%q&U=Eh-FbKTC+B#9Rk8rE{MN^k&^Re8 zPZEtp^(2v{3=O4}l@Pn7WG_JGs;!BCbY`1Tge}(i?|U@$we@!IabwwM%Nyvu<0i7#6VByCK5P8&Eit#E zsc*vG-RFE%Qr`3C{>j~@4j#V2H%OSSpnE8%!wqf3FjUpATj7uaT-((Ct_O{{w-#$`r%uDYUoqj|TOj+x z1ZEq+&(3O77(fEU3Y41as41PL*GZm(Rc(`vpB>*ND!$v4-!}N&uE_e; z{dUZbn`v2}?#^DGwdv_CoT*uJ+K?Vjtel-@CF>jH zl@8A(y6seW#eey*$&?k3_bc&N^P*L#P<>bPtB%8TJvrT7OyHeI{d`aDDC0R3c$$!_ zOURhLtQR$^%>?fC&V0BwiRno1)IGzj%Rdwpy|sIUSXV1c8ZgK{PnfXC`mS5gGo}0N z#OHpy`N*)k`}4_{r}Fl_4H}VX^P6I9r`=J@xRa57_bhly%~^{@!#PWB$6uLc_>9KQXtsnzKqb9eJ8HDVK!(TDC6`i@NTOCh98^? z%&gpeL5kk=KI=glPhK}RtI7LV*4?)pn-WLABh77VartPiwuMMb?=v~)qg~Dix#p^? zs%m~6<_cAR=rTRo*wS<)W+OK+d0j@p`tsT23TJgfXw92hci9Eb$*X}(;6u3cjkrce zgU~k}MuWLZrzBqq6fpI>n-u#qz9V02&t%-I9bo*;1U}|A^acrbWW-wA^^U9DiM^My zKrcg{M$BZ~s<*y!vnxTqdzWkK{LXQ|O=3OUrGuN9K+VFn@G+xEpK4|+b3}0L#~P!e zpaf_bm|Ji_%Lf2(Z3LGf}uf+z{V7_b6t088KiUB;7!)Ldtlj_$pn-x|Ko%GT$RGv> z&;cLt2^C)QiX2#D^~r!hBQEucA5F&-Xm}z^IY{SWaT{7V?pySyHl%`09(?@p+3KHs zW=W>uNkl40Ukh;>l4-UVf+DuKqrTlo?8Sg)}2`rt4$62%BbLqR=Y8ENHVMO}_7 z2!@!!H)J-jALqWP<{!=4f;+6=HEV+*EaI&wm_3e=23A>xp^(T9o;dL1f-#OKdMvw7 z5F%KEHW`p;G?F)gMD$n^;a{deCj5jKSjJo9Jv@IV@GTQS+gA9Y(Z)WqXv5Oxif#GL z8j0IjG{L1t!58x6()bl%;h>Q%$>Lo9Yn^?ZRp((n!3T^LrLs_Lf|0&7ron(^SunxE zngNRL?jVH#KA}w`B(#W$i@vpjfwr44zzKXV^Qf^fP~uwI}R{h7#Hu-?I8ue z{(twMolYSvEjCME4RZdk7z?V$@`AL;14j{PwkVHZxCAjcP!8uuGpCx_TI^q*u(+4e zzcBN7k|+WC1iZ(xr-T+eZ?=pEd(MT$xufW;36#eNN1^?O-F_MUD?1d zI{##yf3nU$S?B+#tdli=Z-(Y?zyzNOuEouawP?3be7xR9a-F`aj}ko!M2z^0t22j8d*zGkw{fQLFcRr7?QW5 zABwDqP*73?bdY{z6vhijlS1Rbor zyfB(rX{4T%j-QsFH`yCULrM906NpqTKV4~-axD;s(2CMhEEbxVt~BfHQ|gd~m6Rcg zf|F8HP?yIbR5YY^YbqerG&Ph}cR{DU>WWI5iU?JCC4`oerj`;yYN<$rtx>S=vcyMGkn|4s)MqvcMbc%#6e zz z#R^m{{BK;d)HVHo-?c?q?7w%5!M~MNTrtKBPX(jNe`∋EpXp1UzUPI1aQ>80eHp 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 -1) { + arr1.splice(arr1.indexOf(arr2[i]), 1); + } + } + element.className = arr1.join(" "); +}; +w3.toggleClass = function (sel, c1, c2) { + w3.toggleClassElements(w3.getElements(sel), c1, c2); +}; +w3.toggleClassElements = function (elements, c1, c2) { + var i, l = elements.length; + for (i = 0; i < l; i++) { + w3.toggleClassElement(elements[i], c1, c2); + } +}; +w3.toggleClassElement = function (element, c1, c2) { + var t1, t2, t1Arr, t2Arr, j, arr, allPresent; + t1 = (c1 || ""); + t2 = (c2 || ""); + t1Arr = t1.split(" "); + t2Arr = t2.split(" "); + arr = element.className.split(" "); + if (t2Arr.length == 0) { + allPresent = true; + for (j = 0; j < t1Arr.length; j++) { + if (arr.indexOf(t1Arr[j]) == -1) {allPresent = false;} + } + if (allPresent) { + w3.removeClassElement(element, t1); + } else { + w3.addClassElement(element, t1); + } + } else { + allPresent = true; + for (j = 0; j < t1Arr.length; j++) { + if (arr.indexOf(t1Arr[j]) == -1) {allPresent = false;} + } + if (allPresent) { + w3.removeClassElement(element, t1); + w3.addClassElement(element, t2); + } else { + w3.removeClassElement(element, t2); + w3.addClassElement(element, t1); + } + } +}; +w3.getElements = function (id) { + if (typeof id == "object") { + return [id]; + } else { + return document.querySelectorAll(id); + } +}; +w3.filterHTML = function(id, sel, filter) { + var a, b, c, i, ii, iii, hit; + a = w3.getElements(id); + for (i = 0; i < a.length; i++) { + b = w3.getElements(sel); + for (ii = 0; ii < b.length; ii++) { + hit = 0; + if (b[ii].innerHTML.toUpperCase().indexOf(filter.toUpperCase()) > -1) { + hit = 1; + } + c = b[ii].getElementsByTagName("*"); + for (iii = 0; iii < c.length; iii++) { + if (c[iii].innerHTML.toUpperCase().indexOf(filter.toUpperCase()) > -1) { + hit = 1; + } + } + if (hit == 1) { + b[ii].style.display = ""; + } else { + b[ii].style.display = "none"; + } + } + } +}; +w3.sortHTML = function(id, sel, sortvalue) { + var a, b, i, ii, y, bytt, v1, v2, cc, j; + a = w3.getElements(id); + for (i = 0; i < a.length; i++) { + for (j = 0; j < 2; j++) { + cc = 0; + y = 1; + while (y == 1) { + y = 0; + b = a[i].querySelectorAll(sel); + for (ii = 0; ii < (b.length - 1); ii++) { + bytt = 0; + if (sortvalue) { + v1 = b[ii].querySelector(sortvalue).innerHTML.toLowerCase(); + v2 = b[ii + 1].querySelector(sortvalue).innerHTML.toLowerCase(); + } else { + v1 = b[ii].innerHTML.toLowerCase(); + v2 = b[ii + 1].innerHTML.toLowerCase(); + } + if ((j == 0 && (v1 > v2)) || (j == 1 && (v1 < v2))) { + bytt = 1; + break; + } + } + if (bytt == 1) { + b[ii].parentNode.insertBefore(b[ii + 1], b[ii]); + y = 1; + cc++; + } + } + if (cc > 0) {break;} + } + } +}; +w3.slideshow = function (sel, ms, func) { + var i, ss, x = w3.getElements(sel), l = x.length; + ss = {}; + ss.current = 1; + ss.x = x; + ss.ondisplaychange = func; + if (!isNaN(ms) || ms == 0) { + ss.milliseconds = ms; + } else { + ss.milliseconds = 1000; + } + ss.start = function() { + ss.display(ss.current) + if (ss.ondisplaychange) {ss.ondisplaychange();} + if (ss.milliseconds > 0) { + window.clearTimeout(ss.timeout); + ss.timeout = window.setTimeout(ss.next, ss.milliseconds); + } + }; + ss.next = function() { + ss.current += 1; + if (ss.current > ss.x.length) {ss.current = 1;} + ss.start(); + }; + ss.previous = function() { + ss.current -= 1; + if (ss.current < 1) {ss.current = ss.x.length;} + ss.start(); + }; + ss.display = function (n) { + w3.styleElements(ss.x, "display", "none"); + w3.styleElement(ss.x[n - 1], "display", "block"); + } + ss.start(); + return ss; +}; +w3.includeHTML = function(cb) { + var z, i, elmnt, file, xhttp; + z = document.getElementsByTagName("*"); + for (i = 0; i < z.length; i++) { + elmnt = z[i]; + file = elmnt.getAttribute("w3-include-html"); + if (file) { + xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + elmnt.innerHTML = this.responseText; + elmnt.removeAttribute("w3-include-html"); + w3.includeHTML(cb); + } + } + xhttp.open("GET", file, true); + xhttp.send(); + return; + } + } + if (cb) cb(); +}; +w3.getHttpData = function (file, func) { + w3.http(file, function () { + if (this.readyState == 4 && this.status == 200) { + func(this.responseText); + } + }); +}; +w3.getHttpObject = function (file, func) { + w3.http(file, function () { + if (this.readyState == 4 && this.status == 200) { + func(JSON.parse(this.responseText)); + } + }); +}; +w3.displayHttp = function (id, file) { + w3.http(file, function () { + if (this.readyState == 4 && this.status == 200) { + w3.displayObject(id, JSON.parse(this.responseText)); + } + }); +}; +w3.http = function (target, readyfunc, xml, method) { + var httpObj; + if (!method) {method = "GET"; } + if (window.XMLHttpRequest) { + httpObj = new XMLHttpRequest(); + } else if (window.ActiveXObject) { + httpObj = new ActiveXObject("Microsoft.XMLHTTP"); + } + if (httpObj) { + if (readyfunc) {httpObj.onreadystatechange = readyfunc;} + httpObj.open(method, target, true); + httpObj.send(xml); + } +}; +w3.getElementsByAttribute = function (x, att) { + var arr = [], arrCount = -1, i, l, y = x.getElementsByTagName("*"), z = att.toUpperCase(); + l = y.length; + for (i = -1; i < l; i += 1) { + if (i == -1) {y[i] = x;} + if (y[i].getAttribute(z) !== null) {arrCount += 1; arr[arrCount] = y[i];} + } + return arr; +}; +w3.dataObject = {}, +w3.displayObject = function (id, data) { + var htmlObj, htmlTemplate, html, arr = [], a, l, rowClone, x, j, i, ii, cc, repeat, repeatObj, repeatX = ""; + htmlObj = document.getElementById(id); + htmlTemplate = init_template(id, htmlObj); + html = htmlTemplate.cloneNode(true); + arr = w3.getElementsByAttribute(html, "w3-repeat"); + l = arr.length; + for (j = (l - 1); j >= 0; j -= 1) { + cc = arr[j].getAttribute("w3-repeat").split(" "); + if (cc.length == 1) { + repeat = cc[0]; + } else { + repeatX = cc[0]; + repeat = cc[2]; + } + arr[j].removeAttribute("w3-repeat"); + repeatObj = data[repeat]; + if (repeatObj && typeof repeatObj == "object" && repeatObj.length != "undefined") { + i = 0; + for (x in repeatObj) { + i += 1; + rowClone = arr[j]; + rowClone = w3_replace_curly(rowClone, "element", repeatX, repeatObj[x]); + a = rowClone.attributes; + for (ii = 0; ii < a.length; ii += 1) { + a[ii].value = w3_replace_curly(a[ii], "attribute", repeatX, repeatObj[x]).value; + } + (i === repeatObj.length) ? arr[j].parentNode.replaceChild(rowClone, arr[j]) : arr[j].parentNode.insertBefore(rowClone, arr[j]); + } + } else { + console.log("w3-repeat must be an array. " + repeat + " is not an array."); + continue; + } + } + html = w3_replace_curly(html, "element"); + htmlObj.parentNode.replaceChild(html, htmlObj); + function init_template(id, obj) { + var template; + template = obj.cloneNode(true); + if (w3.dataObject.hasOwnProperty(id)) {return w3.dataObject[id];} + w3.dataObject[id] = template; + return template; + } + function w3_replace_curly(elmnt, typ, repeatX, x) { + var value, rowClone, pos1, pos2, originalHTML, lookFor, lookForARR = [], i, cc, r; + rowClone = elmnt.cloneNode(true); + pos1 = 0; + while (pos1 > -1) { + originalHTML = (typ == "attribute") ? rowClone.value : rowClone.innerHTML; + pos1 = originalHTML.indexOf("{{", pos1); + if (pos1 === -1) {break;} + pos2 = originalHTML.indexOf("}}", pos1 + 1); + lookFor = originalHTML.substring(pos1 + 2, pos2); + lookForARR = lookFor.split("||"); + value = undefined; + for (i = 0; i < lookForARR.length; i += 1) { + lookForARR[i] = lookForARR[i].replace(/^\s+|\s+$/gm, ''); //trim + if (x) {value = x[lookForARR[i]];} + if (value == undefined && data) {value = data[lookForARR[i]];} + if (value == undefined) { + cc = lookForARR[i].split("."); + if (cc[0] == repeatX) {value = x[cc[1]]; } + } + if (value == undefined) { + if (lookForARR[i] == repeatX) {value = x;} + } + if (value == undefined) { + if (lookForARR[i].substr(0, 1) == '"') { + value = lookForARR[i].replace(/"/g, ""); + } else if (lookForARR[i].substr(0,1) == "'") { + value = lookForARR[i].replace(/'/g, ""); + } + } + if (value != undefined) {break;} + } + if (value != undefined) { + r = "{{" + lookFor + "}}"; + if (typ == "attribute") { + rowClone.value = rowClone.value.replace(r, value); + } else { + w3_replace_html(rowClone, r, value); + } + } + pos1 = pos1 + 1; + } + return rowClone; + } + function w3_replace_html(a, r, result) { + var b, l, i, a, x, j; + if (a.hasAttributes()) { + b = a.attributes; + l = b.length; + for (i = 0; i < l; i += 1) { + if (b[i].value.indexOf(r) > -1) {b[i].value = b[i].value.replace(r, result);} + } + } + x = a.getElementsByTagName("*"); + l = x.length; + a.innerHTML = a.innerHTML.replace(r, result); + } +}; diff --git a/core/external/eo-framework/core/assets/examples/assets/jquery.min.js b/core/external/eo-framework/core/assets/examples/assets/jquery.min.js new file mode 100644 index 0000000..644d35e --- /dev/null +++ b/core/external/eo-framework/core/assets/examples/assets/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"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){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=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={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),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-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){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 ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$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("fieldset");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=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;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 function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(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 qa(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},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=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),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){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.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===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(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,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):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(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!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&&C.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.escape=function(a){return(a+"").replace(ba,ca)},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: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(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===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 V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.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(_,aa).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("(^|"+K+")"+a+"("+K+"|$)"))&&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(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},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,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/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=I(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(P,"$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(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).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:oa(!1),disabled:oa(!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:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(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}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};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=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.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 W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),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),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==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,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.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 Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(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&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.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):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.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=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var 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(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.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 Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.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 Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(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}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(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}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(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 r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + +

      >Glf5`A9ho|AgCtDd+kNmD(1Ci%g^uHdRqj4u^SsIDXgBWPsZ0PD?o}p_-FM%; z+F=aL(J7!ZOm;n zy3x&{QKlyrj~q4mkr%L>q*Je(&uawD>OP2xcBh|Gb2HP^m`2?o-}Bo11n^?+UY*Va zuG^3FK7D?1Zg%e2{FJhA3`Ci@GrM#N9Gf9U8-PUdr7KBz56-X#mAN@DA$)(l9d=+r O`2K?*{H}Zc!T$q@l%`hz literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.svg b/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.svg new file mode 100644 index 0000000..bba5446 --- /dev/null +++ b/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.svg @@ -0,0 +1,799 @@ + + + + +Created by FontForge 20190112 at Tue Feb 12 10:24:59 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.ttf b/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a309313d5fb20765dff1d8f41dbd72c558097611 GIT binary patch literal 34092 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 bpfWe-C4}#dx5ExB2;Y0;ecy4f-~Yb=ElGcm literal 0 HcmV?d00001 diff --git a/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.woff b/core/external/eo-framework/core/assets/css/webfonts/fa-regular-400.woff new file mode 100644 index 0000000000000000000000000000000000000000..2578261897a5c36bce54a1b1f5c6a784acdc6360 GIT binary patch literal 16812 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