From 46d4116c8a7cc14a473fe23a1b22c92106404c87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karla=20Saarem=C3=A4e?= Date: Thu, 31 May 2018 14:34:48 +0300 Subject: [PATCH 1/3] swatches LESS rewrite Rewrote LESS code to suit better with Magneto Blank theme --- .../web/css/source/_module.less | 576 ++++++++++-------- 1 file changed, 315 insertions(+), 261 deletions(-) diff --git a/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less b/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less index 907180eb37444..0fcee34fda688 100644 --- a/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less +++ b/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less @@ -4,289 +4,343 @@ // */ // -// Common +// Variables // _____________________________________________ - & when (@media-common = true) { - .swatch-attribute-label { - font-weight: bold; - position: relative; - } - - .swatch-attribute-label.required { - padding-right: 10px; - } - - .swatch-attribute-label[data-required="1"]:after { - content: '*'; - color: red; - position: absolute; - right: -11px; - top: -2px; - font-weight: bold; - font-size: 1em; - } +@swatch-attribute-option__selected__color: #646464; - .swatch-attribute-selected-option { - color: #646464; - padding-left: 17px; - } +@swatch-option__background: @color-gray94; +@swatch-option__border: @border-width__base solid #dadada; - .swatch-attribute-options { - margin-top: 10px; - } +@swatch-option__hover__border: @border-width__base solid @color-white; +@swatch-option__hover__color: @color-gray20; +@swatch-option__hover__outline: 1px solid @color-gray60; - .swatch-option { - padding: 1px 2px; - min-width: 30px; - max-width: 90px; - height: 20px; - float: left; - margin: 0 10px 5px 0; - text-align: center; - cursor: pointer; - position: relative; - border: 1px solid rgb(218, 218, 218); - overflow: hidden; - text-overflow: ellipsis; - } +@swatch-option__selected__border: @swatch-option__hover__border; +@swatch-option__selected__color: @swatch-option__hover__color; +@swatch-option__selected__outline: 2px solid @color-orange-red1; - .swatch-option.text { - background: #F0F0F0; - color: #686868; - font-size: 12px; - font-weight: 700; - line-height: 20px; - padding: 4px 8px; - min-width: 22px; - margin-right: 7px; - } - - .swatch-option.selected { - outline: 2px solid #ff5501; - border: 1px solid #fff; - color: #333; - } - - .swatch-option.text.selected { - background-color: #FFF !important; - } - - .clearfix:after { - content: ''; - visibility: hidden; - display: block; - height: 0; - clear: both; - } +@swatch-option__disabled__background: @color-red10; - .swatch-attribute.size .swatch-option, - .swatch-attribute.manufacturer .swatch-option { - background: rgb(240, 240, 240); - color: rgb(148, 148, 148); - } +// Text attributes +@swatch-option-text__background: @swatch-option__background; +@swatch-option-text__color: #686868; - .swatch-attribute.size .swatch-option.selected, - .swatch-attribute.manufacturer .swatch-option.selected { - color: black; - background: #fff; - border: 1px solid #fff; - } +@swatch-option-text__selected__background-color: @color-white !important; - .swatch-option:not(.disabled):hover { - outline: 1px solid #999; - border: 1px solid #fff; - color: #333; - } +// Size and Manufacturer attributes +@attr-swatch-option__background: @swatch-option__background; +@attr-swatch-option__color: #949494; - .swatch-option.image:not(.disabled):hover, - .swatch-option.color:not(.disabled):hover { - outline: 2px solid #ee0000; - border: 1px solid #fff; - } +@attr-swatch-option__selected__background: @color-white; +@attr-swatch-option__selected__border: @border-width__base solid @color-white; +@attr-swatch-option__selected__color: @color-black; - .swatch-option.disabled { - cursor: default; - } +// Image and Color swatch +@img-color-swatch-option__hover__border: @swatch-option__hover__border; +@img-color-swatch-option__hover__outline: 2px solid #ee0000; - .swatch-option.disabled:after { - content: ''; - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - background: -moz-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); - background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(42%, rgba(255, 255, 255, 0)), color-stop(43%, rgba(255, 255, 255, 1)), color-stop(46%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(255, 82, 22, 1)), color-stop(53%, rgba(255, 82, 22, 1)), color-stop(54%, rgba(255, 255, 255, 1)), color-stop(57%, rgba(255, 255, 255, 1)), color-stop(58%, rgba(255, 255, 255, 0)), color-stop(100%, rgba(255, 255, 255, 0))); - background: -webkit-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); - background: -o-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); - background: -ms-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); - background: linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#00ffffff', GradientType=1); - } +// Tooltip +@swatch-option-tooltip__background: @color-white; +@swatch-option-tooltip__border: @swatch-option__border; +@swatch-option-tooltip__color: #949494; - .swatch-option-tooltip { - max-width: 140px; - max-height: 100%; - min-height: 20px; - min-width: 20px; - position: absolute; - padding: 5px; - background: #fff; - color: rgb(148, 148, 148); - border: 1px solid #adadad; - display: none; - z-index: 999; - text-align: center; - } +@swatch-option-tooltip-title__color: #282828; - .swatch-option-tooltip .corner, - .swatch-option-tooltip-layered .corner { - left: 40%; - position: absolute; - bottom: 0; - height: 8px; - } +@swatch-option-tooltip-layered__background: @swatch-option-tooltip__background; +@swatch-option-tooltip-layered__border: @swatch-option__border; +@swatch-option-tooltip-layered__color: @swatch-option-tooltip__color; - .swatch-option-tooltip .corner:after, - .swatch-option-tooltip-layered .corner:after { - content: ''; - position: relative; - top: 1px; - left: -15px; - width: 0; - height: 0; - border-style: solid; - border-width: 7px 7.5px 0 7.5px; - border-color: #fff transparent transparent transparent; - font-size: 1px; - } +@swatch-option-tooltip-layered-title__color: @swatch-option-tooltip-title__color; - .swatch-option-tooltip .corner:before, - .swatch-option-tooltip-layered .corner:before { - content: ''; - position: relative; - top: 2px; - left: 0; - width: 0; - height: 0; - border-style: solid; - border-width: 8px 8.5px 0 8.5px; - border-color: #adadad transparent transparent transparent; - font-size: 1px; - } +// Layered Features +@swatch-option-link-layered__focus__box-shadow: 0 0 3px 1px @color-sky-blue1; - .swatch-option-tooltip .image, - .swatch-option-tooltip-layered .image { - display: block; - height: 130px; - width: 130px; - margin: 0 auto; - } - - .swatch-option-tooltip .title { - max-width: 140px; - min-height: 20px; - max-height: 200px; - color: rgb(40, 40, 40); - text-align: center; - display: block; - overflow: hidden; - } - - .swatch-opt { - margin: 20px 0; - } - - .swatch-more { - display: inline-block; - margin: 2px 0; - text-decoration: none !important; - position: static; - z-index: 1; - } - - // Layered Features - .swatch-option-link-layered { - position: relative; - margin: 0 !important; - padding: 0 !important; - } - - .swatch-option-link-layered:focus>div { - box-shadow: 0 0 3px 1px #68a8e0; - } - - .swatch-option-tooltip-layered { - width: 140px; - position: absolute; - background: #fff; - color: rgb(148, 148, 148); - border: 1px solid #adadad; - display: none; - z-index: 999; - left: -47px; - } - - .swatch-visual-tooltip-layered { - height: 160px; - top: -170px; - } - - .swatch-textual-tooltip-layered { - height: 30px; - top: -40px; - } +// +// Common +// _____________________________________________ - .swatch-option-link-layered:hover>.swatch-option-tooltip-layered { - display: block; - } + & when (@media-common = true) { - .swatch-attribute-options .swatch-option-tooltip-layered .title { - width: 100%; - height: 20px; - position: absolute; - bottom: -5px; - left: 0; - color: rgb(40, 40, 40); - text-align: center; - margin-bottom: 10px; + .swatch { + &-attribute { + &-label { + font-weight: @font-weight__bold; + position: relative; + + &.required { + padding-right: @indent__s; + } + + &[data-required="1"]:after { + .lib-css(color, @form-field-label-asterisk__color); + content: '*'; + position: absolute; + right: -11px; + top: -2px; + font-weight: @font-weight__bold; + font-size: @font-size__base; + } + } + + &-selected-option { + .lib-css(color, @swatch-attribute-option__selected__color); + padding-left: 17px; + } + + &-options { + margin-top: @indent__s; + + .swatch-option-tooltip-layered .title { + .lib-css(color, @swatch-option-tooltip-layered-title__color); + width: 100%; + height: 20px; + position: absolute; + bottom: -5px; + left: 0; + text-align: center; + margin-bottom: @indent__s; + } + } + + &.size, + &.manufacturer { + .swatch-option { + .lib-css(background, @attr-swatch-option__background); + .lib-css(color, @attr-swatch-option__color); + + &.selected { + .lib-css(blackground, @attr-swatch-option__selected__background); + .lib-css(border, @attr-swatch-option__selected__border); + .lib-css(color, @attr-swatch-option__selected__color); + } + } + } + } + + &-option { + .lib-css(border, @swatch-option__border); + padding: 1px 2px; + min-width: 30px; + max-width: 90px; + height: 20px; + float: left; + margin: 0 @indent__s @indent__xs 0; + text-align: center; + cursor: pointer; + position: relative; + overflow: hidden; + text-overflow: ellipsis; + + &.text { + .lib-css(background, @swatch-option-text__background); + .lib-css(color, @swatch-option-text__color); + font-size: @font-size__s; + font-weight: @font-weight__bold; + line-height: 20px; + padding: 4px 8px; + min-width: 22px; + margin-right: 7px; + + &.selected { + .lib-css(background-color, @swatch-option-text__selected__background-color); + } + } + + &.selected { + .lib-css(outline, @swatch-option__selected__outline); + .lib-css(border, @swatch-option__selected__border); + .lib-css(color, @swatch-option__selected__color); + } + + &:not(.disabled):hover { + .lib-css(border, @swatch-option__hover__border); + .lib-css(color, @swatch-option__hover__color); + .lib-css(outline, @swatch-option__hover__outline); + } + + &.image, + &.color { + &:not(.disabled):hover { + .lib-css(border, @img-color-swatch-option__hover__border); + .lib-css(outline, @img-color-swatch-option__hover__outline); + } + } + + &.disabled { + cursor: default; + + &:after { + content: ''; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + + // ToDo: improve .lib-background-gradient() to support diagonal gradient + background: -moz-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); + background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(42%, rgba(255, 255, 255, 0)), color-stop(43%, rgba(255, 255, 255, 1)), color-stop(46%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(255, 82, 22, 1)), color-stop(53%, rgba(255, 82, 22, 1)), color-stop(54%, rgba(255, 255, 255, 1)), color-stop(57%, rgba(255, 255, 255, 1)), color-stop(58%, rgba(255, 255, 255, 0)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to left top, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0) 42%, rgba(255, 255, 255, 1) 43%, rgba(255, 255, 255, 1) 46%, rgba(255, 82, 22, 1) 47%, rgba(255, 82, 22, 1) 53%, rgba(255, 255, 255, 1) 54%, rgba(255, 255, 255, 1) 57%, rgba(255, 255, 255, 0) 58%, rgba(255, 255, 255, 0) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#00ffffff', GradientType=1); + } + } + &-disabled { + outline: none !important; + cursor: default; + border: 0; + + &:after { + .lib-css(background, @swatch-option__disabled__background); + .lib-rotate(-30deg); + content: ''; + position: absolute; + width: 42px; + height: 2px; + z-index: 995; + left: -4px; + top: 10px; + } + } + + &-loading { + .lib-url('Magento_Swatches/images/loader-2.gif'); + content: url("@{url}"); + } + + &-tooltip { + .lib-css(background, @swatch-option-tooltip__background); + .lib-css(border, @swatch-option-tooltip__border); + .lib-css(color, @swatch-option-tooltip__color); + max-width: 140px; + max-height: 100%; + min-height: 20px; + min-width: 20px; + position: absolute; + padding: @indent__xs; + display: none; + z-index: 999; + text-align: center; + + &, + &-layered { + .corner { + left: 40%; + position: absolute; + bottom: 0; + height: 8px; + + &:before, + &:after { + content: ''; + position: relative; + width: 0; + height: 0; + border-style: solid; + font-size: 1px; + } + + &:before { + top: 2px; + left: 0; + border-width: 8px 8.5px 0 8.5px; + border-color: #adadad transparent transparent transparent; + } + + &:after { + top: 1px; + left: -15px; + border-width: 7px 7.5px 0 7.5px; + border-color: #fff transparent transparent transparent; + } + } + + .image { + display: block; + height: 130px; + width: 130px; + margin: 0 auto; + } + } + + &-layered { + .lib-css(background, @swatch-option-tooltip-layered__background); + .lib-css(border, @swatch-option-tooltip-layered__border); + .lib-css(color, @swatch-option-tooltip-layered__color); + width: 140px; + position: absolute; + display: none; + z-index: 999; + left: -47px; + } + + .title { + .lib-css(color, @swatch-option-tooltip-title__color); + max-width: 140px; + min-height: 20px; + max-height: 200px; + text-align: center; + display: block; + overflow: hidden; + } + } + + &-link-layered { + position: relative; + margin: 0 !important; + padding: 0 !important; + + &:focus > div { + .lib-css(box-shadow, @swatch-option-link-layered__focus__box-shadow); + } + + &:hover > .swatch-option-tooltip-layered { + display: block; + } + } + } + + &-opt { + margin: @indent__base 0; + + &-listing { + margin-bottom: @indent__s; + } + } + + &-more { + display: inline-block; + margin: 2px 0; + text-decoration: none !important; + position: static; + z-index: 1; + } + + &-visual-tooltip-layered { + height: 160px; + top: -170px; + } + + &-textual-tooltip-layered { + height: 30px; + top: -40px; + } + + &-input { + left: -1000px; + position: absolute; + visibility: hidden; + } } - .swatch-option-disabled:after { + .clearfix:after { content: ''; - position: absolute; - width: 42px; - height: 2px; - background: red; - transform: rotate(-30deg); - -o-transform: rotate(-30deg); - -moz-transform: rotate(-30deg); - -ms-transform: rotate(-30deg); - -webkit-transform: rotate(-30deg); - z-index: 995; - left: -4px; - top: 10px; - } - - .swatch-option-disabled { - outline: none !important; - cursor: default; - border: 0; - } - - // Bugfix for Add To Cart button - .swatch-opt-listing { - margin-bottom: 10px; - } - - .swatch-option-loading { - content: url(../Magento_Swatches/images/loader-2.gif); - } - - .swatch-input { - left: -1000px; - position: absolute; visibility: hidden; + display: block; + height: 0; + clear: both; } } From c52f79506f20d53e80ff505201107bc0b9823c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karla=20Saarem=C3=A4e?= Date: Thu, 7 Jun 2018 16:40:13 +0300 Subject: [PATCH 2/3] replaced loading gif Replaced loading gif with Theme loader gif. --- .../Magento/blank/Magento_Swatches/web/css/source/_module.less | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less b/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less index 0fcee34fda688..111d4d57d6212 100644 --- a/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less +++ b/app/design/frontend/Magento/blank/Magento_Swatches/web/css/source/_module.less @@ -207,8 +207,7 @@ } &-loading { - .lib-url('Magento_Swatches/images/loader-2.gif'); - content: url("@{url}"); + .lib-css(content, @loading__background-image); } &-tooltip { From b4098fe6f9ad679f00ee2e1c1ee5c45778355d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karla=20Saarem=C3=A4e?= Date: Thu, 7 Jun 2018 16:41:29 +0300 Subject: [PATCH 3/3] Deleting loader gif Replaced with Theme loader --- .../Magento_Swatches/web/images/loader-2.gif | Bin 2035 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 app/design/frontend/Magento/blank/Magento_Swatches/web/images/loader-2.gif diff --git a/app/design/frontend/Magento/blank/Magento_Swatches/web/images/loader-2.gif b/app/design/frontend/Magento/blank/Magento_Swatches/web/images/loader-2.gif deleted file mode 100644 index 362e2455f4be8a5ade24c3e41131533a4bc581b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2035 zcmYk7c~nzp8i(%2Z5+DR3 z0g+8WBmvo^6j@pd1d&CNK!K696(P#>xD=T)+S5Arl)0SgY5D%Se|-1c=XuZXecv0% z31EB{{~b^UyaRx(t*x%Eu7!mKqtV#c*C&_D>2x{>f;Kibqobo06%_)30N8Qtx3Ho9 zf(Tz0&)?IXW&%Q2_8;H~1oU*>er@}+O!yXVoO4&tcr(?%C8lZ;5^K-5wx_%qOm&@3 zzp$FwzL~YTHB^_%cC{`VZ@B#US0YZOSZ9{O+p`-#x9OLfIl0O_Repi`TA`+>_mmOO-=2c#TUUVC-Gl*_YB@2dN4dPI`;6<_~Qw~}lxU~G; z_fJ=zt*#lLzc`LD#jJ<$P>q1DKU)9F3v7Lf$MWh3CL0(2@-CCgn|BXk?nhWU2cw=F z%4nu(%@5{{dn$z%iSO$fTEf0K;D-V6Wtf(qTcGzxl26Qoc-L=KEu zKFBI`TAIKkoH1TU;n94=iQ{PGDbrLFxF|GEVd{FEm1(s@CIONm0Tz(VdE7WUoI_8( z>4OuAWinMwY!x|0O+85q_CMyP)HY{DO;&;VXY1Dm@ZBv@#p`DJ=Jj+1H^OZ(w4R!B zXq5-}ri5yoSgRRJ4(FQ7o`z)?_Rkzqb}k9#>Y^jRr&asm>uwB2yO}G!h}nB zRIpV~Z1Vikv##U}JJDLM6Zr>SOLa8~{JWjx&JR-TW?7Wnb412eM_Y)!rj!OXEZzkO zC&4^S+E6+7tz^J1HOy^46RhHElxL{iNA&8S&Q0|N6H`nt@ezkXsKh_^!2hxPA*>>` zcpIx0`+q=OKNFDXzMR@Nfr58fQMu2bJw4{&Em=P@QlOB7r|1>;e3D-U)D^8Idfd_+ z(6y&_=*{#tl1QQjOsCH1?w;xBB-+i6j=d~6z-qOj>Ozm8Z4(8`15r_VN{qJ}hCPO& zlCUmFqS*a}DM}5xn5qGUeD4me6yPXiX$xsdp(sY{7}*3VTcjed=h!J3XtH+j-wBf~ ze*0s9-5Z9hrK<fP&JzNn)1*QGdC0y5z?P9vrYhPFoihL%ipCPsN!lJ6 z6yrwx1)9Q9X47sE?e>s`a76)8=|`5R zt>964ws|`|;sDO?19Fz9^>yiGBp3Ffm%c``ic`*)6VA1o=ei^p#JdW$r+rCmD?{+v zm+4A&wNa-A*`UJEn3x357ULdo=)5qSXX5?V5*$O;nzgVtV3qk*NA7ArR_j>lp7z(h z=!5PVL<~Yn+JQa^_&^P@Jsz>Nng|*6zbY)`SB4WnT#e8p@~nuFsc0Qs2+{ z%?5|u!HWaDp|wPYco(1s6ll}5h2=wHD%TH}<#2i5B17cgX4X!xdm)7rC1T~gLpL8V zA7B46Ky{F*Aj(Tcu+JnTX| U!z@LYDOY)vhyxTQRN~S90WwAnga7~l