From bd44aeda827b2dd5764a6251ee779bc8b0555d7c Mon Sep 17 00:00:00 2001 From: Ilija Pavlic Date: Fri, 1 Feb 2019 08:12:57 -0500 Subject: [PATCH] Remove reduceType in favour of mapToType, similar to Java Stream. Rename Relation to BinaryRelation, to reduce the chance of confusion with SObject relations. Collection's `mapToDouble` and `mapToDecimal` return DoubleCollection and DecimalCollection, which offer further functions like `sum`, `average` and `filter`. --- README.md | 51 +++- images/map-all-transform.png | Bin 61166 -> 0 bytes images/map-some-transform.png | Bin 65871 -> 0 bytes images/mapToDecimal.graphml | 257 ++++++++++++++++++ images/mapToDecimal.png | Bin 0 -> 64520 bytes images/mapToDouble.graphml | 257 ++++++++++++++++++ images/mapToDouble.png | Bin 0 -> 63394 bytes .../{Relation.cls => BinaryRelation.cls} | 2 +- ...s-meta.xml => BinaryRelation.cls-meta.xml} | 0 src/classes/Collection.cls | 25 +- src/classes/CollectionTest.cls | 20 +- src/classes/DecimalCollection.cls | 58 ++++ ...eta.xml => DecimalCollection.cls-meta.xml} | 0 src/classes/DecimalCollectionTest.cls | 44 +++ ...xml => DecimalCollectionTest.cls-meta.xml} | 0 src/classes/DecimalPredicate.cls | 3 + src/classes/DecimalPredicate.cls-meta.xml | 5 + src/classes/DoubleCollection.cls | 58 ++++ src/classes/DoubleCollection.cls-meta.xml | 5 + src/classes/DoubleCollectionTest.cls | 38 +++ src/classes/DoubleCollectionTest.cls-meta.xml | 5 + src/classes/DoublePredicate.cls | 3 + src/classes/DoublePredicate.cls-meta.xml | 5 + src/classes/FieldMatchCondition.cls | 4 +- src/classes/FieldsMatch.cls | 6 +- src/classes/IncompleteFieldsMatch.cls | 18 +- src/classes/ObjectPredicate.cls | 3 + src/classes/ObjectPredicate.cls-meta.xml | 5 + src/classes/ObjectPredicates.cls | 10 + src/classes/ObjectPredicates.cls-meta.xml | 5 + src/classes/ObjectPredicatesTest.cls | 10 + src/classes/ObjectPredicatesTest.cls-meta.xml | 5 + src/classes/PrimitiveComparerTest.cls | 32 ++- src/classes/Reducers.cls | 17 -- src/classes/SumDecimalsReducer.cls | 18 -- 35 files changed, 887 insertions(+), 82 deletions(-) delete mode 100644 images/map-all-transform.png delete mode 100644 images/map-some-transform.png create mode 100644 images/mapToDecimal.graphml create mode 100644 images/mapToDecimal.png create mode 100644 images/mapToDouble.graphml create mode 100644 images/mapToDouble.png rename src/classes/{Relation.cls => BinaryRelation.cls} (76%) rename src/classes/{Relation.cls-meta.xml => BinaryRelation.cls-meta.xml} (100%) create mode 100644 src/classes/DecimalCollection.cls rename src/classes/{Reducers.cls-meta.xml => DecimalCollection.cls-meta.xml} (100%) create mode 100644 src/classes/DecimalCollectionTest.cls rename src/classes/{SumDecimalsReducer.cls-meta.xml => DecimalCollectionTest.cls-meta.xml} (100%) create mode 100644 src/classes/DecimalPredicate.cls create mode 100644 src/classes/DecimalPredicate.cls-meta.xml create mode 100644 src/classes/DoubleCollection.cls create mode 100644 src/classes/DoubleCollection.cls-meta.xml create mode 100644 src/classes/DoubleCollectionTest.cls create mode 100644 src/classes/DoubleCollectionTest.cls-meta.xml create mode 100644 src/classes/DoublePredicate.cls create mode 100644 src/classes/DoublePredicate.cls-meta.xml create mode 100644 src/classes/ObjectPredicate.cls create mode 100644 src/classes/ObjectPredicate.cls-meta.xml create mode 100644 src/classes/ObjectPredicates.cls create mode 100644 src/classes/ObjectPredicates.cls-meta.xml create mode 100644 src/classes/ObjectPredicatesTest.cls create mode 100644 src/classes/ObjectPredicatesTest.cls-meta.xml delete mode 100644 src/classes/Reducers.cls delete mode 100644 src/classes/SumDecimalsReducer.cls diff --git a/README.md b/README.md index f6c478d..d3a99e3 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,8 @@ Collection remaining = mapped.remove(Match.record(new Account(Name = 'Bar'))); - [`pluck`](#pluck) - [`mapAll`](#map-all) - [`mapSome`](#map-some) -- [`reduce`](#reduce) +- [`mapToDecimal`](#map-to-decimal) +- [`mapToDouble`](#map-to-double) ### `filter` @@ -310,17 +311,48 @@ Collection.of(opps).mapSome(Match.field('Amount').gt(120), new DoubleAmount()); | `Collection` | `mapAll(SObjectToSObjectFunction fn)` | Returns a new `Collection` view formed by mapping current view elements that satisfy `predicate` with `fn`, and keeping those that do not satisfy `predicate` unchanged. | -### Reduce - +### `mapToDecimal` + -Reducing works through _reduceType_ functions on `Collection`, for the appropriate _type_. For example, `reduceDecimals` is used to reduce records to a `Decimal` value. + + +Maps a numeric field to a `DecimalCollection`. This is similar to `pluckDecimals`, but unlike a raw `List` returns a `DecimalCollection` which provides further functions. + +| Modifier and type | Method | Description | +|-------------------|--------|-------------| +| `DecimalCollection` | `mapToDecimal(Schema.SObjectField field)` | Plucks Decimal `field` values into a `DecimalCollection`. | +| `DecimalCollection` | `mapToDecimal(String relation)` | Plucks Decimal values at `relation` into a `DecimalCollection`. | + +Functions on `DecimalCollection` include `sum` and `average`. + +| Modifier and type | Method | Description | +|-------------------|--------|-------------| +| `Decimal` | `sum()` | Sums non-null Decimal values. Returns `null` if no such values exist in the collection. | +| `Decimal` | `average()` | Averages non-null Decimal values. Returns `null` if no such values exist in the collection. | +| `DecimalCollection` | `filter(ObjectPredicate predicate)` | Filters all values satisfying the `predicate` into a new `DecimalCollection` view. | +| `DecimalCollection` | `filter(DecimalPredicate predicate)` | Filters all values satisfying the `predicate` into a new `DecimalCollection` view. | + + +### `mapToDouble` + + + + +Maps a numeric field to a `DoubleCollection`. This is similar to `pluckDoubles`, but unlike a raw `List` returns a `DoubleCollection` which provides further functions. | Modifier and type | Method | Description | |-------------------|--------|-------------| -| `Decimal` | `reduceDecimals(SObjectDecimalToDecimalFunction fn)` | Returns a `Decimal` result of reducing the collection with function `fn`. | +| `DoubleCollection` | `mapToDouble(Schema.SObjectField field)` | Plucks Double `field` values into a `DoubleCollection`. | +| `DoubleCollection` | `mapToDouble(String relation)` | Plucks Double values at `relation` into a `DoubleCollection`. | +Functions on `DoubleCollection` include `sum` and `average`. -Lambda comes with sample reducers built in which can be accessed through the `Reducers` class. Custom reducers can be written as required. +| Modifier and type | Method | Description | +|-------------------|--------|-------------| +| `Double` | `sum()` | Sums non-null Double values. Returns `null` if no such values exist in the collection. | +| `Double` | `average()` | Averages non-null Double values. Returns `null` if no such values exist in the collection. | +| `DoubleCollection` | `filter(ObjectPredicate predicate)` | Filters all values satisfying the `predicate` into a new `DoubleCollection` view. | +| `DoubleCollection` | `filter(DoublePredicate predicate)` | Filters all values satisfying the `predicate` into a new `DoubleCollection` view. | ```apex List opps = new List{ @@ -328,14 +360,9 @@ List opps = new List{ new Opportunity(Amount = 150) }; -Decimal total = Collection.of(opps).reduceDecimals(Reducers.sumDecimals(Opportunity.Amount)); +Double average = Collection.of(opps).mapToDouble(Opportunity.Amount).average(); ``` -| Modifier and type | Method | Description | -|-------------------|--------|-------------| -| `Decimal` | `reduceDecimals(SObjectDecimalToDecimalFunction fn)` | Returns a `Decimal` result of reducing the collection with function `fn`. | - - ## Important notes on the type system in Apex diff --git a/images/map-all-transform.png b/images/map-all-transform.png deleted file mode 100644 index e321accce3dd21b8a2211f98b5568bbe519962ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61166 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 IjbGfq04z>Br2qf` diff --git a/images/map-some-transform.png b/images/map-some-transform.png deleted file mode 100644 index a0e50b17107ea797609ab177d918cbc192620890..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65871 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 Sxe + + + + + + + + + + + + + + + + + + + + + + + Collection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: A +Amount: 100 + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: B +Amount: 200 + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: C +Amount: 300 + + + + + + + + + + + + + DecimalCollection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decimal + + + + + + + + + + + + + Decimal + + + + + + + + + + + + + 100 + + + + + + + + + + + + + Decimal + + + + + + + + + + + + + 200 + + + + + + + + + + + + + 300 + + + + + + + + + + + + .mapToDecimal(Opportunity.Amount) + + + + + + + + + diff --git a/images/mapToDecimal.png b/images/mapToDecimal.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a9262bb63d6a80b93dd7aa034df08ed042c690 GIT binary patch literal 64520 zcmeFZXH-;Kw>6Ayn;Hde1yoXF0Ffj)7b+qup;Q#fNCt^TlxzS|NeW7a0tHGW=L`yx zGlk?JIpuFFau_~ZB=BqSsU zu3ouxlZ1qfkA!5$!rtBR$|>!|dJ>WcBv&t8xOHD`qRT#sMki2gCg8=vgV)Uzi&fb< z-5-SSCT&eokhpNkW|zbtoQK~1c8mRwU6o2X51t=AbdCMdZ^zm19kjgh<}UMI^Fs&j z9@*;>dqgVh@~MOD*)KL%t(`2)Ydg4Q(8CKAmUY8&iyLn9(sdzWSAFf~MDTAf?|_T= z-+%uP&PqnVZ~yQwo#aFC^@B>qAFqX% zXr4rV{yMdF@Amu7yMO(_vwFn$6JLHn>F$YqajW+0`-v~IQBot3`!3|i1&}DQ^8E&{ zT^IcNe&YMm6o`K?-2ChNiLdD=6aV1(K~_GpLJlvb?#{#8w;m&P5lxD`=}|pL%GY;A zA@52{X4<~zIKxT-au`FeeEcYl1q)<(~kX!a&yoOCc}JfVZZL^t_SDIIbl>Gk)>yuMz_ zhd+j}$V+h3rM=S92-c{72H(09z6_`Qx*YXSR+*3=!IEND3?`6O zyH5IbHS~+u47isO+EaAH`wm zw$6MeNB-37fA^;<+4(ZKoYq$ce5BZ)k*h2FrTej1&{1-zg><)ZJ4rXhC6^wrV8(^` zuqtP;q86Tx4B1RYXP8XEiVbW`J8ylM)`p0%^Zs|AZ^p)#Vcu?lD?#6og3lgb63JVi ztEw=`o%D<0@HN0km$=a%`g+wR^L1ia8pnl(iq>Q;w{=-~-r>s%Ml?>x?UAS4^yurh zX+O91`}z3&%bNWGoLWBACRq$lLG8(L=_;ASy-!bil{fj-yeF_)%?sPeDN_}0ZA^0) zqMyRAj)+oHyJ3F>s7Z1OrA0#FCSi-+C+iqe*Ut9`IR6$dFT}<-mD%G|5#_HIR2{&1 zGJB=Z-ItU->o3864{jeVZ&AKB-C$#`#mA|m(ZP)Flx)wj@8uJ6r*a0~z4fZp?#{Et z7`(MgO|u?+eMfg}x88D>4Vpb?m)1X56lOn_J>aKoacTMn5Tu zmzA<+^A_8@Z@xB}NnQ~mXwjF_6l&8Q7!xYyy!oMyid`i@#iE9Hv}+$ZYURs-aL=l& zc^R!uB!_r zjNaJ+*>eL~{a#Y+*#kZci zGMp)MR#O`*%<@b%F7P?g_R?g!)Y+|A9NiRg6}y8aG~s-votASe;xoI0kPYzI>vxjH z8@kpNnp!ANQRKnii;%WBXYvF|b@c*}GvB>_t!T7gNE9{jQj+djmD^sa%Se(L!aPph zSn9yJKb8=kujU^8P2C|xK-o0kYVI-p`d^AE+E*Q(-om-2XIl)HMpZzZ`o)lzkyYK) zc*)tBd~VaWoVt7FiDg9WV6Pj!EF(HBB*t)1#?%h~f*=dm*K^u_B3W`Ss3nil!b4y@ zvCt_;zs;a69&h`UY8ka!f!4iukq_!dk-LE#o!!WX{!&kB|A~|;_6n+k8P|d6V3X%k zZhOnfr5>6(%?ESWi3w*B}h2i7PS$6I9mD$m`uGm$`qOaM{lz7)wm7$iBGi=x<(&9dwXvB9FH6dA! z{dUQgXsytAoNsjyFH3%LH+9cSX?0z{i)*1-OTO&pvh!AE{|OznqMORX5_QE8-GMRt zn9Vaw{c@)Zgjd^J3MijU`ckPoaBgChd)XfgPi1Kh+0Lh|4h7@t8mAH~U*jZ&_KfjfIsYl6rh)HM^ow^>*!iWk6P1 za}J4^<7H3@(^FF1JufJ{cur40*H-7m$1dZz-cMiGM0qvKUY+TVnypTBfqqfwZ(3cf zhUv;i6O0;)oToOYL%9qZBQ3A8Q&OJF6_gFBV$WqoX-CY@d^(KQcIvK-?Mk=MaT&~7 zY*yx&50UuOkF*Z<@XCvr6NMIm?Z^`}b6k?Vmz?~5IlfC%D^pR+lh+6K|5+3d$wC}g zsuU&lJW{r4U7vL3+0Oe2S`3}4L#-LDYmtx~y`dBI7{k3E?%+WwCoz|oX=-H&Ypk!l za9r-U|=u%A#RlP~@_&0RO1$$oK0j{Jq2DJ7K3+GDvDHT*py z0|9Vr6tI{!x*l7~YR#%PUDeLiA=Wm=o%YlD+*a{%1%$Ct+UaIUDAjdJ1~x6FCx&}V zsZFcbMNZ{;#}8)qWlL8aiezzx2*0FmQs%%L}f?}jC%*;*_m*+Cqx8>T%&Wu8ZAUE2K6nDetbh5W1%ODHZGn6Sl+6J*v2_i*ZX|&+!Xn?# zsi$mlok%XDn~fmd0FWfVm`(m4%z3e#H!M0Eu_IjXb)afWYXDk{oaBnC)9PTwr)P(` zJs*DuNfOk&660g6tZYw~&+$YGjk?W~knr3I9Qtww*;YZd$hP95arcBIQZ9nhhPp#@ z)22q@2TM3;h>6+R%;I5Wm`Cj<7>DUQ6E ziz;F4>IoU`_W}to&f)kJUiM@MBY}J2Hg>~|zdnmG62D*JrA7VC!8O0k))ja4bjN^-fT}M>{(vHx$=|v{u)TTkQGPI%kXovg;G*?Y^c?VE~`W* zyzVe96lF(aITA<(Cz6W$8W|8kV)-&Y)EN@q=uK6J>T@;}Ear4YU2A<E_HN{!Oe3U}?`$V*UoIY0B3e&Y;$s0@FX zCG5^R{=(IoY71AF9*(-hXpx2`FV|_imfU|{Ajs1wtCY!%4&AY0TJ(-^_8-~LaRLF~ zJbzR&^0XIaig>2I@eF!nWz}d5VbTX-LXiB|4W<`nt2;EyK)>=~&y%M7#dy=2rdJga zZgfIs)iZ;`vvuM{jV+ZUy3tWxn*B(=$uc^hoBPQ)v&$Nzc(zlOGvPpmvXM&OeN0aI zN(I`9tIfQMjoW+j)r`(iGUWJ{!cD88;rMG2b3c-dL}tpwuM3AOBK`eSp|zyAkG zU?w?V$Bd_;*#*&Y9v_HMk0)Bmvopoybt0&N!`PKiFLHQWRJi5j7~%Q0eBdM(9C%S( zCywNX3w53OCc5_RY8fdp9#**dW;hiJY?yrxz_i6XFj?nQ|d!dPsX z8;d0!u&#{iI^}&f9V}z6RBBg-i|HI@KCVcLBWQVEgdwxjTuLP<8PI?>9o1Z`miK|C zBR_4EY3to_<$`(_bnSHBFIi%Z<0JKI&F(q@f*`ko&_K(<$t)pT_D&f!s%g}Z0Hs{1d7IWDz5 z35EpFFTQWm70DXPSKIfe#^R>bp`G%ST zQ~rhPg9DF9*{@K`hx$ovEoBy-1`=y;zPUQA=Y)Ns!0-s-pcV3Of#n%%DBuj<3$&`VkYDe{Ov+1@g; z16U+W1`gAOKzb(vmlS|oD+iAep@gPJw#i#hzDf}jvm$=KF5BVIS#e>zp+G$!X1Qo> zufuwPie#N;9@C$a@?$+Vx3ZH=;4irjX01|>tNy<$3x&D?StGN167l|iPdjf$k=_|Z zZ0gu;Nn}2Axjh@~LMKS-$^T*T=LKiA#EZ=9`%2v1nx=rx2IeFkQM5$83yn?4Icrh< zVkW9Pbbahj;kD^=N2eYvKSMj55FC6Z*SPuuhjp?GkH$+&<+g=cTbw?b-?~DCBZvRg z)oTy!nXxZRACF6wRgqs2kq+i#lfz#Nu(9LS*q4ESG!dv5CK$OCms(rdNYTt=VLgAba3vAH&lr2(2;u`r7FRZP{@DfmKoxQDKshT|0LD4Rmk-7Cgb3~n?&G33V_hOhAh7p=+BG^OxE&ioNp(3lu~})K#ed)V0yA3loiWN&<-x zXVc?OPxYtQu|n@&1&r#Il|L8qPG^uq3#?9LK5eKJ7=t^*46J=6 zR*%)IK%NX<2Yr%$E&#hez*GU+$*UOCK|JuY7X&{5Fzj;FL<)rnx=)&(4A%O}3Ng!3 zbLmzG3}keeP~YsSnO2GXmOsRrN_ZK1H;i%Rg8DIYj^jLA&>DEa$nqoM2g>%$90?+S zO!ehSmCtD@A7UYM=sM+axV4yEjD}w5HWIk(Ky0bGtm0jwKfCNZ+&E9M#d?Zo7d_zE zl@}FK9Qm(|K$8q4n3&Jk@Z-vkKl_@sJmWv^8@2=LP`$qV@fr0~lJlvre+88QSMD$( z^4mJkP9e5SCi#oa8s$Qv2CGmpeP}GIIRk@UoI7bToxe;bI0S`107RcjQ)hcSTy~O& zEufqzDSsf2ANSA$o0ia1dZeacWVDfcI|L*?`@6|3tj}F@jfQFpKUJA^g}5crWFiRg zUcXCVl$lde=&pY30onVBh$OsXa1+6F(FL!~oV-zlkp+uG-D@+Zwip?fUhYHVLpJP6 z$|b|7cYUe!YLY64|LjgQ%S-xlw7YO7=<%E3zux_uwY53W2?@HtQ3FF5#p#8`zBbNi zV_fYecMgDSr>!srIynHa3GLt3m-9k&sr4kv@;woC>7RLG8u@(u;u4UDho+gzS!NnU zl|=4v<5Y0fH->z1=QtD++3Cn*Q>dc_5%G9_9Y^5DSG|GK*_{4Y9(o|p>&KkdarZJf;XW*asPd)8Uwn3bz1)gnWr;wWnWX=EF{LuZ|kqy+tSb5LP4Y zn0ZXp&eFVu;?5^G`h&Xn5o%K1pM&sSeD2FqPO*5%wT7)drn6-D51VYvQ~Da0+htQVv4YD ztEaJCxL#GLJ(eT0GB^D(N06MYx2l4_P20CxE2jb?m71RKBWL~JLJ zhgk+W=tV&N0-d*bqm8_1m_NZ2AH>aK2f~A0k5G*>^a8^xeque0ogX>Yx5Q*Apl-<8 z&(6EJnC=S(IY$NcSLf_GC+TuM)O=u8ni)c$aZjp1{}qZ%7zDwis_BV}*~eWwc`b&j zD?o{wHhHY^@LXrM83f%|wdj7TZp}46c2%M4a-TK(ujHAA)>?FDhNc_tMFcVoGs)lc zZlxLIML}$AVu29KQWCJnRjT>E{sA2~TI(xePK42w>*6lC2c9@*KBMnohIiQ!8#8WK zDS%Usx|WpwGHJ1x;~&C-i|wbj@jHG5wXS z_M9^)6-h+bLxh@Y%-o+t;d7L`a*32-%z}RZu%6foC|3Tq(jg$FpNgLx0`xpvU=_3l z&B61&KY_4nZ>NQ~(iVSd<7N0grS7y7N$I?c!>E)xD9ZPtZnbwO&!|q@-BD4>f=oIE zBvwCKcVVP~m^axeGO8e>a(N4mM*8mdvV|R??L=qZtf+UuZYZMYL{DtYy=2U(?o3(F z_)$C#`X(7&)*aIMrIaKK{#-R5Zy?2sCls2F_fA(^xop``Tn$j%r+$fcsx%YW&?!k; zt6Rj@21;9_*UNO;zGuw`kf1K4qRhNOw$b%c=_wii?4+p?Sd%Rj|Z1sl$=3ZL@jZQn%s=0zj%PgZ+)7>)A zWVWwlmf??VU_ZVH&{Tvr3U?XVF)=3xF59^QOZmyqmPl``<0d5HqX~6RRV7sFA#u=( z3ewAo@u4S)pe2Z>S^}0?7?>jJ()eR`|Z_j0<@zE|)AH#%fMpZQ-qz?zZ$F=bby?>bmwCJPCqbD)TnLwYK2zIK5Wf9G{l z(h4Y%4B60%@dXkg9LTA4S!j*heraL=l7oAd6sb+tI-rGDDD(=e>u~nkRPLS8>F%qy zv1@m;P-_~=b9K&}7CG9-DAA_SQPb`%a>cY=i^Z?)CdvOvEYKq|ZgT~eUN3tISKVp} zD%Dqf)H2uP2}wPRRP-nGc6;!NL;@%=*hi})ksJ>FANOZGXA zr?nnMVMASn#Yz{E{%GMZ@)88`_3WSU-oBnO9-zF{j})%F6rTGV=jBX2MHEfuX&59Z z2Y~b1Afz8EAsKQZcR&rEZ-$)C#jBH2OeVaaCKFG4&>0W~S<|Z@PizfB@_k`FIi5$){ za)~J5_w#jG;C6h5%-FVbf{2zY>3@h%+9iPAh)4{YULn`i;V=P7QN94`?fj@ zG|+5SR}uOE0dzfDPyq2SJ&5MsLOdPk2Y*W2`t4~3a3S&u*+W5DBK_XZ>sl%8_hNPE zsLg@5ku|}VQVhhpIRFnnZkZMb%@6MRfENJSS=iaq;3;(hr4NhQS7?}p*HOHqYIS=k zfB{JoDneiG6cTRR>D8DGm!Tc{4ikIl)ggl1wg6rBzPyAm=g9K6Sg**`mJM+ z*viLht&51jkd;PUL=9Vxgnj$mpZqh2IZaB%PIGe};E1*tRSNXK_6w>%riJDz2+ALA zWPn~!bBmGhbB_%@B1nF6wg7R&RG#@6-M|8eo9pQMv+@mrmE!@5f^xQ~XJ`BAPUaa9 zDr7b{mkY^ltI3 zAtO78Ve!ICiF}i>BGp6vK`*ZQGM)y}yXZyxm!x8{s-}V=-o&d&KjvW&;8@0=X~TgO zJS}I7n*Ah0A_Eb_=TAnC*uEn;BKDnEH~v$EoMkOHhCdxBku0EWlq`|b?}x}s{%;0P622=Hszef(??s<=ODgCH#Um9juuZJ ztJP6CY(DdG54oW3{R0@8EB6zNW{Vza-JdQRH)gh@12OLZ9zvwclFl3!l?2K0^)>@Ta_Q16rxs3 z8#lP*>OYYv{TSvjS0SyMi}2x{-v7m`z~;gd`pEFLok~5|EK>_9c_m5QWmg{3!<)}K zfoPS!paz^q4Lo?`ZYMGRD5)tE(5l`&cWrnMQem+5p#h0>0cyJ-6bE9gm|MW3%iNCl0qwuC#YHWaAt$fyxHtfMuRA&S z7XSxpL!21IJMfTTQYU_UIv6zMaF1Vb2JDx!cfRW&cRzsC^lAcR!V0AKtoRpo2wO($ z3DtMXAZ|N6y<-LXFXJ8>v-2rKL58|s)QFI&4NavA1U9Wi7|Vb{W8v}Q{*6R^Ro2eQ z8PL_#xvVEztF@GEtCYKaq_HSbMG!#OXEKUt8PL!h(1zB}waeagkVmiFFMtHk3Yvgq zpPQZvAdCtn!}!;Nmj#w0ulo96x7LSurt8!dn-!X>L!fh)?FH3+z1|J=DyHY|;{$!5 zqI~=hS^t5@KNZ`#RO|+8ps2m|9HfVm!6=cf_4x{7wO5Ku$d6`n-lk?>Lk4ycmRIJQ)8ApVd`J3gGaFv|xz50MY=3Lm!#iI85DwtGbSPB+UtYxUlry6u*kydd=(p{xe0s~L z-uVy5cQt$+tlV##n4$gg)%5t?kXPEjCEd>d=e8{{MhG-bHQmcGa**)9dLh5t`aBoB zJbRVri}%0U{`e~t`!;a(ZsujBy;@)WgGxzXjf&LY+<`wp0<6e8SJ)~)S+d}zpK1&8 z9VNuuPlhOX=|SZWHUZx$L2>d3)_@<7@OXXm68_k3@ao^~Ht^C>j2q~+IXNU0VZMV=@VDj`|0@@v&%1{S9k#x{*rG0$d8O}%=MNSiF(Q9AL;gRQm=HS?{QIBHj{kcR zKfBBR_i?}qfX_~jnhEP*-i|(eXmr_ST!X_rl=6@wU5mk?m))|7YPdVE&15gqzYpFf zy6{VXDcRU(f>lzBI{o?2DtkKq6AUpvdj5BU zYNGlc`;EmNx8hq8ALnlpNZt<#wW@vR^Z#(0#Uv-{r|mX`TE`Q~!|&xg(M~M3?77a{ z@^R@0`TiGBBuBmb;6taD@s^Kj&WAKFr^ly3 za%jY6dl}NVuQh1=uKjne443#fJQH(Z=hO3r-p++JS zkQn%Hba7$MD(8;tJf)pt*UuO!##5f7#&!qc_VzOU<0HLx&+(|lC4yl7`W87v_aP+0 z)zBR3IQ!c_xp%%juN<-haMz;|Vs;TRvN{A*X36f{NT{~517JR@akgLRz(TG`A|CN4 zIy}96_FKD5?P@%EKe7MCbfOWxucbh3Ys+ms?dgIAvNP<2t+Hg7-va`qF#c+Dt%U8j zJNcp0ouQs1YQRob&b`Kj?k1=Pj;HOieDD%KX+;1xrw4h%m98-VgG8z6+MGW{IQDbz zaRs-Qz1Lq0sq7q|Ilkk4-*E*sxR2+2L@WIPoz0j7j#t8aUa#^a6C@{b)mH7ACqI;r zE(sYYCtDDu43-LY`3Fw&ZiaVh)lQzjJ!W+BlQv&!1t+{^ph ztthgV4?=mDAH2`n?RO_yFzd|$;xL1Fpz}R(`aef(bT(x^BDckC5t@N~Vots+7=gjx z2%6mg%tA@l{DzxwfM3CMO4~;5sZEm1=DjtcdHw=R0m`pMb6sB#)KNM3z2O z3vuG8UENIiZ6S60@!#BjiYhy+pf#t`uzM%6`68;t(j&+P&0*-qG;%n{2=TOo+Q=Ko zttaa+qO=C~iJ(maYePbvt=`f327noNn@|FVM&b`TSk{uuztv8 z{x_eN`9R#nU)C)BW!`8+K3JJa*CDYL9M<^EJa763C3SFxRgP#2ZZO0R1~wp8f4&4u zdw9C7f<)u>>j4gy^J1~v5w;yDCA>*_f7@4t7bo?yb|)(fPNw1eaPLmh-y6L_Hdix;B)cJG^Px&xNS zKXscHZumg+od@Xwm_vJoiAu%nf_dpNy;ERWHA(?atUb0z4;oW4lx#{z#BRr{*mPM{ z+>oSwT>;*9m;$1q1vCT+g#{?CKmKJ%;*C|Dy6Lt<1x57 zgo#Hq9;c(c+6V1_L`#s!&sW0eJ-+ZB(j^4W@VeO2)b8%gxp8fXU<3Fu-&)iP z;+D0K1}=l?Y+RIi7{YGEvFEI}=#qjZbjua3K*-H1wnIFeovnx`N_!2=DsK`0p3vq> z|68Pm29jLr8)yNfW`^fKrD>txS}AJ)htHpmL)_SBvLdseMxf(#mR9|;SF8x_6{j-u z{YYD`JH(s@CcDx`pig&PfQdA@%xfs@w~wXPZ_re4(M%(FE#iG=9Cpk(>L_#pODAl# z#`Cds?nJACC#n542ZbH=IzflIzAw;k=LLdLGD(~fg4P>VcZthHqR-qcM)5^WTHvkX zQ?|+_e>>3dI(sPdXu7lc1sBJ^mRE|&JeOyrVb_Ma%aGw5WdFzS)EzN#b&WXpwZo1=%!D*&V< zD+#QQIay*2INvwuwL6*U!$zzek32tTCE-4~QIM!c3o=kSzF2yOIuKsP;}~@JB#F!0 zQT*@Jhl8|Q3il&*4S2Ah=7!vksS+2tj2CvTuB{w}>*k}HW278;^|amdl`M&upxruf zozyidS~j#@nN_458LQEUQMjr}_1nmRQ?H!-80&d_X7l#)$@dq9{YfuRVi`E(BAs-Iq^M!R;E^ZEL9b}Ib7_4q)h#X} z79k-~dcKI>l|^;9R-a0fRIz$uio*(wwAteJ(8x{fY}FVWdFySBJC1=lguzmBWf)Wq z7gmkmRW3oAJpPI`!Oy%Waex%?kr{o{?u9wtp5G&no8c@t#qTwxvpIF5p;{ryBRy034`KciH4 znC;|awr!MdScD0wAqm)W)+P?2U~UeM6C7tfPp8X}A#$~JL+Li6ZZD@BQHTO&R<*A1 zlrpS*#oPcIH3eJ#LSweE0sJJo_NV)Vc;j)j%iF$B+2<%3ES>2u_nEVzp)=K)oiDkQ z-t5DU25<@AxL@SwvH=ra$7mr&@;`}|QrR{w0eGEs%BEm1T%Q{OKbdpFlYItht63{= zkhNIwMv2a*r_*~zOS)&!QDNbaw)RNMjo=qXpS_FUc#5J8i$+ta9-Tf>lg#~X#|p!a z9qG#tNN)UeaRSCE_%jQe$b={EdisimWW&7=m0q2M7IePYd**?HS0bUMv?mu~u&X&p z&HnAmeon;5woc1z%4CG`$ZS!@yBC<|edCf_e2qca`5JP1eE8gAc8Z zdO5RjgUxO}xF>|#Hy$iA90cfWH&Hu7uT&DTftYwS#VMwyh+SNO@cRUkZz;)=m}fraa_*fqc(z8M4`zk?bo50@<#e@3SDpx$F7#0I zceP9j#DEN1Al7yQ9RHHjSNWzC6hE!Q2Y7hIT5LraF)R%Qn|815bXSB{qA_H_VB-u$ z(+EqjmxR8iX0n2$tJFVLxV72cw}^DY8=kWy2yjgSDM>4h8W2hs9)|ibMiy&DQ_or> zy6cfA?7eR>NxTJNVm1U@N^lNxN4AHI;!0gbqY@kxUi!Wbc{kYeJ|23W5=irX>Hr5z|G^rYgu@pf6kgJM~658ttGuB57rxHd2I{y^1^;!Ub&DN>07^ z2)@?cB9zQ4yh<}pX*BG2ip2!r8F$mHPJ#ZYr@=)%epK@H%h0rx}9nxg?O;yC) z{$3?GIKYjft);6Ar7SXL(#qS)vn2epX17aV5tOgCGjn;zGban z!k zCp099Dp`(ZtwbV~C0G(0)|%7wZ40Vn!x!+DUKRre<2vo(`@tHsMc!EDuA{G3((wX>G56<7~) zdv=F)niU_&?&tX2ysNC(Nq@8*Gb@1ru~ren!l&jaCmthjN>w3t6fsJM8gNV*?29J} zmiM<&$JgphVq6B;Of`#&Ta5>{nFn`m`6S2ULvn`?$1}kuFkGrX1~vkkKnw8WWKZ5q zId9K1*6Dmk>8Yqz>3*Bmr!9FyyxFrb%KTC|PBLtFzt`*cN>4YSYA;Z#O~W2)KpLPO znQ;T;;yGh9dw8TQ&=2ow!4`49lEO|fIvS*-2;TDqG zV4Q(T;*Pqb)xt`@w0DIS?%fVhEvvX-YZv?MLGco2uBXZ31e zodaX0>KHPK>M%_B3P|$7Ae>WtIWDQ_kL+2PFtK!7MEdgC$v0s?4Hi^fV~Kx7Eha4! z$W;=W@N;R;Q3&0f7tIT_!ZccTzojRO};_7Jui#wm^?9q%cV zlXNifrw^Xvx=DZerAuVa3T7%E{f+yPJgj9gf}cDucD58_@B}IPMr4jTv?G!w0_-*Q z2$b3PYh}})&kvZ5e&*UbeZNfDd`&9Uyps8(7J}H>fX`-g2DNMZ%3K~29e5#b-Vv3M z)%W}*=W#2_zo^(g`K{^bJg3w&h3T%Tq%a}UWDdyM-J17o;*{qkrJ?Y*b+-5`-D9?? zRQkCFeGC0<{6!Uu$By7&v6=s|#R%wRWSj1H*=eSmt_MA9$3!5h~y9#t?%zQ}Ug0B9oG( zp>Q@rc0aq-r$dq+)d&Ys=$YnlUX_|!t0*FzMFt^EumHbWXq)ZZ-Gz}}ICb0RSZv~D zqykxj9dc>YyafE(G>$My>xCG;^`Vvp20jP(vsU(M>K3X7lMQ|gbBk*S2=tc$>X%QR zT!aLbCCEu^y_;Tjug4iL{8P*T6g%>g;BHr5b(?ug*EZuyi|1e-}93Ew<#I}T40S+Gx}h~uJK%h$)WBJ zYbfOu(Q|ko*IY1%Sm;j73)=XxCi#({g`*LI&F8fZpPlv_5uLLG$T)Sxj~tF$$#x`% zV-33B#<-)dvlguMHNdRXQfEumwbH8JMs79i`Tf{DAP8-zvmMA00-dO~!iz5n#Il+R zPU^)BWH8y4{#~Pzar);sNNKP2$Vee)GYBvNn|`e^OYB0{s|~uu0>ZuF+z#zSg}L5M zaG=I0S!faullCLenh11Du&_HS^wtPU^qnLr!7`PIB`ivTS53Vw7)E~s74Faf1tYaP zaOmb8o4jbWTKsaV;3f>2YEFA==;i|{tnu`f=q%p6QGNnBI>1CW=Dk=ebITkKh*T~v z8LYmSm_jXYPCH2~d8_$#L0W&HVu?MuaM37xc+l&mkNr)FvOAkyQ>_34YH8)ie=1or zSXpWfMmQ?~Aa zWxun<{hI8=+$FygsA1U(b@CVFBvS>q!60XN)z=(%9AZnkKz>2v1e@*tw6*m2l}_ax zN>AAqK_G&Mq1r(+wz*EAxTu;yqiYBJZG z5T;&_Tay5CMMd#1U@L7AHcq7KQ#Q2z>PK>?>x5gr&IFvZxy>^&IOe2NfLZaV>HxTk zMmCZwkqNX0m?fj?0%Ll%7!C8XS?6k`_6*Bm(%zUy@}!y}Z+6tomS( zlal$(_puWk2g}v@?vF?QgD+s&6H~HxIkwZ$=b*{Q8Xlp#ScwVBBYEs=f*Qpy-6vRXrk{so zAJ9l6jL5m54`gU<$UV&Hc0cA_NvVl7E83TDf6|~L|Ag&t?s3=`yQ<8^K6Ej$Wk+Kj zm87nP_4RqZRx-_BG+$mRK~8Rf~s zwVV5kJDsn1xvO=p?gF&ynC{$Bz68BPkT4c<<# z3<)=ZD5VHno|*gjF_a}9jK_7yJ3eU|Fx#GeS~c7Wnfxi@)g35pW?nV?9db~Tu+^k% zD|q|^?tR4Ei=)!4+LI4Q7YQvd8tI7b)jdF{e;j8nKIdH8G264( zKW`kh>9zY=e6hSqB%%Fo+X4OUd&!^mmz&CBaUs_22HDXZi{Py6q7^zKm|WGTWP^%n zOVv}>ilvm|NdEL^{^1-}c|S?6Ds?FZut!<+!(N+5D7MiQs3E-k?D5Ef00c1XA4Nty z^Kr{Gb|Vo{Wm<4PMA{I=V}LGj!bJme`o;*Hs3SLBI5^vkRB}sTzy6!SHXt{4FQpA| zcE%(_LP8t8EX?46?2bt~fU~L@0+PhKL zRz#p#V`GIYM_a5l#UQ@rsaN^qgtx2WujWosDz1m}R&Tg9-B)l+Uzdk835 zeZFm>ZZi%jByA|(;wNq!jn;!y@AMS5Xr>ADRG3I4gE0$Tf zCfxjT$|Q<@m!R(+Fq~3%d9n3z0nYK^}w%anoD83DmNB&+_krPG+gFsFCO~DY6L2H<-AfGGsS5it3e zKMI6K4#SYd?7^#NrmSNC$fE3kIC7`9q2SPjp{18X0NUd)z(Z`hZS@RQUgnT`l_;=& zVkg8>T--F5XmAs@6{R?~ByB^w;Rz>@m6#CoG6RGBYf@RM+3y?Y_ zv2+=dq%|1kHOB_r_~Lf`jP;Ios6j*V)N8=S0+Icjy3=mQp(}DvlVJ(Q4&K6ub7g2w z6U>F!kv{9PeSgnahVL14qnT~ax{J_CBoyYX`F#dE?;B)1Wr{}>NVo?i?2DTL+HLf$ z)qW0Ji2SBx-KJyF0pmc*hP8haAu>S8-OemLjzY?yNxc1gsYK*|6}&&3n9)5*M*Cdk zp*R$jTBg&c^>HaBjZ?mIDMKKs3rFOx8Nr-Lvw*sVGq{(lKp+61&doh23QY#rvJ%l+ zSXYj$FTWY89IAQLpRDlI5e(Pa;*v03WLn{=jwzw&(hvpK-azAzxLEnsuBqKoMCRmS zAAmy_o(DBi0fMSIMXhTB=fI8Niy-3rgmKdib z;gbqmx5DF>HA_!sUuG|}3kZU)(loh90vw*yAg^pp;W%Z1b%zeiahu8rRq$#zfM|J; z4f1C8^y}u`)JFBW*uR!TpD>`41VNItUp_Z5Y&GobGi?LMkw}2X@icesDNIWbF8Q9# z*-Cb_}VY{ds+!^g|^2*RTvin@UZZ9 z1dQq4$hi%dL7P*Z_TIy;l2uQO;!*s>>ipsQkTB5ww+Ot*+|+_uzNz}=mnF^S(uHvH ziUg7L!f)+5Aa{3x*f1ypMu;e8up8ahY4NyRS5y}w75&n+X=)~CA=VAjt5E|6XGS04 zg$6kO%Cd-BgpM3>ZOMf&fUcUe9U}q9b92Gk>de=MiFO1sqc^X)=Vj#_hO3}ro)lNCIj>D>gA zSo7W1tM0T@d@<1OD+`RF{YsI-(H*;MRQWg@g^a#sn?nl*!9=J~s<1ek;>6#Mtgv%i z9daJ*u*g0sD4O99=FG7<5AZ$GjwHVVWaub>w z8Nz9nH|E1jfL->;&gRUM^h;vftWRt~2&O4pD@h)7OC>1F?Yqm|Vs|`}*I^ zBNWY4G7hd0+nHW3TpOlVKoXhG9;UMyd5Vb4*|QR)$t6kd$-HF}<$X4`Y3aE=FzE8R z!wDwZhcaZqz+eY*ZAf7Ig>RWR&A7f3Qdk30z%E*-{O;KP1L@tNmst(MLZE@p-hVk2(1rH$pDX);>QiHk;@6PiXfn5$9KYesA^k(^)Vl9)60KHHesb&@dr znia(%EArSVPDh~KCcouHDAjPcplH=9EEuRe@(dborgV$LOHvKE$rG&s^}q57z8?1- z4>a_VuHWwu%#eZ$y-B&B8<T5y5c})m=1&s+NUq8{RJMD#($ejrjDARILZaOseGp#=wz zz=MBGCUk~h?fnGvIi!JY5_fCFwNYpDypk#Q|kT8i-&vs2nJK`wR+M#9Qv$iX|e?;!Qf_t_)$-({5 zG64B!KgoV^M3~*~&+hmuFT;%9V(o;{QEJR zo-}06uV@33Zz3FA*08=h-_bDLlGhy`>= zj=|YwZ+H_R2Z%K295vT8TYeqHYv>1&fgC{Dc|QgwL`!MgEnp67sPvkv+EcbCsvhxz z>@kQ{LJ3L0Ym~1&l#}j06#fw!virIDp)I;Fs$ma0m_JZ^pgfR+^;mz(!K(5LqYm5o zA>5X`KZi46%YA$-t2voJvwgT<=-zqS<1KxoWOP@bV&=2Fo{jTkM31*@l`cN14$!!= zS7$J*o2JE5kNVsVt8DZRtwB*t{*jg%jH7VEa@Ku*04h@;~A1pB?$xUjgi#%mxX_do%P zOGXWM>%a9h*NQ|2Emh8+rwqpe(uNV(WUKz3FQ1LRl$HJwq8^?Z>3p#j89_n zD_r&^cuM;A+m*Ls)oW8Pr*$~U&8)_UcLz*;`FImUOWh*JxaAntJWbBV%bT##pYw5G zOXkmO*&+$5`_T_ReQH`n@ltl{Ow13KF6ml++9R_Wa%vIFXsb#x;|@*4b|;SAB)c1s zHs=qQ3ho!^H%Tua2E%{)kin*8{8cJ^Zz1QR>O-M(XOszg)iH&z*FLA%L$}?dqB7tF zypi?!I&VZ+S)|<00eLE$^XA;|)HWLFb=h?=@YI==Ca<93Is#>6x`qvX?&Z*+*VSs-sC|wKf&^* z%%TC-v1xf7LLU*1B(^nxBA>r*O?5V(cg<;-z2Upnt+S}9(h>xaU#hZ}HrY~z)WebW z)ZP{flf6lC4!fwA-NzFdw>DCE&$OOF>*nDHmRZi)dM5fz?3O;NIxQDbAvm*3i+)-; z?$F5dl)G9>R_e5qjw7e$4ufc-_(j$7hBgmrG7|5d1rm$M85|Sy0G!Cv!=0}GNEr#p zU?M+C8IGTg$dwxZT1Otil~*NwrSw}FY4dkSlM$)vanLg zZWYec8e_d#-MTsAMJ8>|ThkLY@r-DJb*T&4iO-@Rd(I7fG7Vl|zB>Lai`{da6vLLQ zk3B(M!do`5oOpKM%>r5L(yUY+6>{A%eR~TWZx>FWdGOS`p(RgOOg>6@Z@;{6;^b%P zxl6sVeRj12>Qn}vL-r(RzV+*NlH3Lu^L$E>a1jA8NTUe+D8F`9E8U34EZP-QcYo#(y$oZ}Ov73Ke7?>*z1&bIGiR0anX3pR>~g(6B3rHC{uihzt1 z3muW7H0eSp_CgV)DhMc`NbjA1h=eA+B($IqL`fjh5+IN~`x|g{=H5GZ?*BJ0pLcWp z%yp8JbM{_q?Y-AFvwp0$STc_lbJx=7VXAykv0fLW-<&v_@nEdY1*t4w`fH*>m%LCNTL6V^u6ixS2)#r6wK#1AkC9 zilF6K)0oa~m6G+ee)?#?Bdx>*OfxUi6riNs0!%B2cet}XNjo0+QsMOt&hWtF zz6=NL)kE^!CB%(G3fwq)m9!>2Mqp6*do#sIkv0HaxV9&i@93Nh+yao{WNarwyyg@UW+Gh z9?ack!Xa9o*s|&sgC2DRObjAAjv}2C(cJN0 zQj8a_**(|kI7ULup=7;bPSxeXbd9!QFBEqX7%!Oe#WKXB356eAYb(h7*?gwHerisv zq<$@ChUW7vO+t%89vzBy%n}_4vr}Kie^g@k(+w_@oIXNPvO1L4CN!}p>`CSa(GcZC zA8Gktqd)D#-6*Xs#}L^4Tvp^xczCtrCTrTZM|@aYcM;Ic0m=+-+6Jz5o-2c!tFy#~ zG%?O79X*NaJOiISn55q_MqM=M3Icgx?&JiFwb@uA8`0mLC@C+a; z-Wx(VtvJm4f6?@r({5hZkrZL$O-;m6&$nb(D%c~N-OpogJrbC9bfMPYIv(juUyryWN- zZEF(n_TuWzr^3QE9gqzr!9)oezz(Hw;oP?Y{4pmo;3B z!yBB5S^KPyEQLCVxma^V3+s^Tx6p#Cu1e#lKDhjR)j~HOC-7;GL{+HfS#|^gOodxl zydeG{$^V*J1}e`?dWwfr;NuO!Iskvf*{0W8^;)bK#o<9gI3k8P3`};Zc{K*uz0?#& z=+)r+&qy_mzwc=5S*DcC{1wX3V(HKPuBm(`PMnA&zn7LzCs*gWTSQ${NT)_!`4Hd` z&53pFd{}Wl(7L2hi4V)}u%K-a>qj(mur-@gj%d%W6%Wr-2g9&Iy?1yUp=SgUd&?>p zwCe41)z#DKq#eKTS70^|cJEA&SI^#I{Ft_GU~XlID2|_kyLLO^7@ebQAw5&}La+(p zrI1{sqrbf`v47xjvw-FYUa{GNdg9T?_qK&Z4bJHrY<)^_p^Ai*Zt)ehCt=T>tF=C5 z)a0U0plUpWOi$xMDJ3nWZm85hn0_HZF`~5K!MLCqnQCL8ow|YU@hHQ+UaI4i)K^;-1f)?zR+>Fd*1L!^mACF_2mPFIzh=+_tR7B}5?$#X1b-Pr!wd!r}u z+*n!bu6%0)s$5Ubv~9>bS&o!illX1*gBnV?L!H3No}HxWKsFtk zv7n+F1(fwSvrE;rkv~VyH${oDJBgyLVhHr=x6B)gsvB49 z3Ge>Uq6!@Cu?+4;LDq1{TjG93 zEvXUM8zVUm3xPR(V(yH!tygw@<;BDhcT+xVDa%s4?ek=*g=lFSp=nfOTAQ)m*E;@5 zi~G{A7Nfe{pv(O}2e+kakeGb+82oSon_?E^5;R8%o*HMC-_<=9voX@UoaWI#6bN+Tq9E#ph&gkZfKKd#6mFZ z#w#=%`=c2sQUe}&Rym$iPareSzftwLcQ>q0&aV!@Oq)ueQ?gs^L2b9q{tm?J+8;Qq zMz7k73zAz%-V;-b5k2~CLE)@}^ro)!IucJOgzM+NXe$NgDTE!AZyKe1zC|zy;y9&b z&Q{*&Rn&-Mgqx{P@VKp@^{cz>*)a0_SG3h{FCTk1X`}jP?Cb4}MBPozdslIEaNP8&Xvdz&bQmh! zE;}20D(37V`E>qB0nzLiCjNI>>yPcQ3o^l(#9xn%$&Et0zmI%9W9cKBUOzCGq*|6y zvY^uC{;PiEz>$ZnYy!>Wh9TSd<<4?GtbOcoCqUmkUspH!ZP3#ia?}9;>Y9=igMzLo zYg#hAqQvJNJC{|E=(MgVH1cp>drl+2RVaNI*}+X*WLD0|vFtM&@49*$UX5B>#>0%8 z;nz_qcXP`Ko?>a)i64xv_|7tam~H%Sy(`l;bd=eVyezw-?mV-YAO~=4wJpKT&h7Rq zGZK0)SAk^)IV=h@Y+WMGo~(S80ZyV{wBCblG%?NP(Jg@j~N90Zmt0 z^uhc+FNW^lPj{y4Z>fu2k7aX6GY$TBmv&IWazxoM@sY`(oDd`Dxn=MU{cu(Z!dK@p zTzt-*1HC(rMw<*yWAM~A%I6K`Qj|mP6T#c=2p%-s;zxXQvM1ZDPk5;4%43v2I#8jD zXbh;v!XW(aZGq;Q4{;1)u&@CdFG8KZD7;@lXoB`y9bT=f!$JejskTX;XKdqgK`z|~ zJ-h-2AwwwP)_r{Jk7oIneqVH~`$gJcYdUU;uF64E_o1geBfl<57 z?#20-<$K71yELdG{ng!GVhlVW5TmHpl(q#U>DrAqtKS)6=&}mGWocZ?`QUotq0{XQ zYDoq)AcN{p#=08z%TP)y=^IwER6z;rCQ6c}`0QUulY&aAQe;q{A3uh|vjO<^zU9-4 zLUI-2mMsPS%2ps$2Et~XZO~*Xs0Vv3;t=0j#B(kVY9#o+R~wni$;Q|wqY)>&Twbr@ zr-+RF9Op?r*FPDLhE_CYITi%;xrhpu8^MPDvEiah#uhEE?5_)ZUS%JBrEFOyZn_dH zBXsF)OrP;`R$j}Ma^ljInYf$bygYT`3el(E9ZTP+?oArbS#f`Vx5=Qs2IuFRMu+Fp z?}Rj2gA+GdR5wXh9aWY+{hKiEixPJ;hakIqtD&oZ`_9f^doK7Zx;Ect_{dOhxStt( zkh)<=U{g^ft%`H3N%yCpPE4KNkA5s2S7ywODl0x(I~jm3S2!nDe?ekgI^$c{DJ{E9 zNqyO81a`+ucWwvJA_WScr#%ROo6*q7H`r;fE@`|>>=UKardE3@pO3qXDip%{B*(1Z zCg6=sq|y-WA|tw%{{dgxhAN6IMJb{u>P~RtYD=Fj?yWZ0+(Q&L$d(u`e`xL*yV0`@ zM!D=g(UzX&`NVEKf#GFt>dbNn>gI33our>A;b`az10yf@_>LH;GD4IJ!2;>?7+8&U&Bp zqgJ(Iy!ApuKWJB5fo{W^NTT~3sBQC27Ujj}SbS?5Wn&*<<(1e^DHHCBLiGyg*S7Jd z)R1T8%*eYd?(O2l>6?(UIGv|VrEcw%WG1dvGQ}B3*@^z)rKhr;>NYly9D>wWk2>_@ z_b{(eaZip^5Nw||H46;ckKLiqi;9iKMOlw;Zsr^#9!^Uf=-z*@(dAiIb$LJD;A*Z{ zT?Zj+OSvS)^UiJJfQ1=(QVHd>pYv|SH+_nwdxZ46rzr<|5)vLnjC-B^HtS8DE@PjK zxjL6;_+Wl*-+G&lHpOK+&`P!J(%n7P_u}>>6QvO~2Yn}d6}L@-ruL?jg1U*{k3KG# zCm&wH@55ZjY?#Ab8-FU6#3Ox0OM_f*H@Zod@y>MZ%n=i#CaGgB@{9b&3k;{GZM+oZ zU%cPHEG@1%XdY!0%ct{E%8cw3fOdb;!pduGHlg_`Byk&F!)$WfOAtRB5fhwLby&%}>vrwaw<-3YAZ z4;f9}kgpM-c)n5d&O7(A)5?u>QO!t!-(p-o#@Tl1)$_CrPd@)hLsI|73B|T4K++HV z7Z%*IWLLbo1#qlY_(RQY8#$RxC(jwCNCh1rZL~-@#>V@#ZPQ5?G;|wW$$X-uaZU%D z^0Vv=jn#iSJ$X}j?DG6G%4dVO$$K6KairI3-^(rw>k^t?8PZ=~!#vey2nbbcr7245 za8WCHG%{N_Tt5U_XG_QRt_fjK>oz{iW}d1U+57nGG8=mt<2suVj}L@9J5KiYwCBD5q|>6*QG`;{HF7mlbEqIF01Sf7xTQ@%pwmI)G4=}9!u*iLLG2Ph8P zr>5mQ`72T;DW6|79-uT$D59JK6?CU{%>rpFtxv=@Io&2BX+Wcf>K}-8<&)*6(IU`i zS=J!3aj)MpkT_ARcHRk?x(a;dYunO4{h@gMedO>z-qH|A&HB%6FYCAUiwk~|xzKgl zbEoFfx-o_-$|(t=ft}Tt*>%n@ zv#82lcv9N;qpZNheZyKwbDy4oS8r#J?h~kX4DvZZ@m|>#wJ#uFvnW!bQ-poQVmQS z;qjL9rZ=;r%bVrC5d88IKQuLwz}D~o$^v@O5n=DvJ6>5n!( z*PLDl7w8l>s=puZKpnj-!8J#A_%>@L8*ktKz7!#MN0V^g%R$29wh3>fHH=!cR~6)_ zNLlCJdiiL+Or%XGv&HM(r9SM9Cz`ydM&8keFv258&8U&V0R+n;LCi%EH?!J|Jj{mN z9k2VjT8qiRr8A*$OqSAn!6Lr|2H-yAXMKys(A|w55(j+i9)|@tv53bGv-XqSjLA_! zWNxZ-XS+4(Vjvfd=2L@T^MZ{zz`f>XdfQ)A8~@wT{7qq{t%LRN#zMCreQR3gHfNMC+s}-j4nT zW7_coI9x&zCWb*CZ3y`JmNcuoZfE!O@1#L!W>n=N38SAIWt^0^q*r-SpR}J?Ed!C- zfQE}&owgCn;6W+Nz7Xuij~q-0p>pGMN7Od*IIhsrvd>moBLkwN2L^v(xnBLH-F3D$6ST8g%=2Ld&f<#1SYiF$ zoDX}c(^IbTnXe;~k4*leu(S~~h z-$afkle|w|+|4=GtFaV~lGayXTtJPq%a_GECS(oooinuDJiSfi&zH=vP?H`e{0qH( zw!8eX|8`z1H*I(}S~X@&_KneX3Q%f@-k#+M>o``1u#ObZeq6u4cOc8uKXPCzQZ0fL z$2@_wzt2lW7lk%e%?uQMkV&c^ZP>#8t3|bib>fFYoxbK~2O(v$Qs=`@{(u^KUsP;# z5Hk;`LEXuU^$?sEv_A0;4)7jVHhw$ul4AD(+_Vl*q?`}An-%%ZBSb-CuRLSHAuW=x zJ*Z^~-G)?Pfb|(raZ$Q52WNfyUzm(~W40?Rr*BT%z;29wk1c&?$*+3vSDCX1Db%N1 zv9KDel9rk^e7G8KGh3QfZBfr*#a>V_x8~}rrF^(cdl0~1prszCf9#XB=UcryH%yS- zR@^3D++7!KPg>Z1;ZcSK3k#}J^~6z~Kx-|F60+0nrth!}*!eTTK@U8xALRr0vH0&C z?<=rAET>+64i@RTb$e5O12~+VKvi9btOIru#%HhMV{(sI(88>`b> z3K%%T@VvR}ZyfO)GU=SyZDvh7oy4R0LbHNZWA=veF@7`9&c3t7;SQ^L1x8w9g63UI z2=wDUTN5n2vUqT)R(Ik`>E7%aA9A6$eRAbF&NtVG8P*1sy?gYO(>Z!2!nwYuT5cPI zCW246ZR&=@KKm)pImHo@P!Oj2PONLZb*1mjh+x_0%}TV>dqH`VG%JryU{mbST&~Y~ z*A?9ZbviPmq4Oc(Vua!+skFH5Unu8ecc!&l(Lz&d%?wrE-5(oQCuV;*6wuAgH(ygZyNB$iz?lj(xmae1hG~M|1Z02A6mFEEC9&g3yY;6iqHY+*AD+C}2I4 z0zN88J+_ibRnAS%Ie%gD@IA>!%uH>tO^W6I_-^gy#DT*y@^9{vt7dw{=REQWNuD_a zbD64JGS#k&l`M#dtYfX+c+X($>1y=}=Nz~9d9DWh{=|BRzG43mkBZQhactbSnddxP z2tKcS1|qKpuYVEr_BJa!|6Z;VTAZY~?CBjxA5L!RXj11C4ILEIY;+tB4c^hPW6U99 zZe7THDyR5qRosb~UuQKj-o6)f51pbn_#Bv>9mY(L7OwTTb_!9bI(OTDLY}T?z{s=e z?XoyzXL6bn^6`Z}=XTKp2qQyLd*bXcJMIpsai?Qn!!Q2oYuihN zMft`R8!T!jMTcxJaja$a#NP^}H=t1ARzG%a>;n>$YnzlOI@(y%&brc>p8+p#fvReAsO-!Cq zy*@#6Sa7S5NzzuAV@5g=V=sZtdvSZnvvG;luNjX|f!uX&%jx0|gyB8=+~;CF?WySV z&ZIv4h;>g` znATTK6PiK^y|64+CeCB6J68=#cT^}PQMrA)s6v#*aM@@jaFL_p*5@Bg%D z&M+-;XW5&N;^LYqduu{gWpVk~w)w;v>GpAAdAE#C?zD_jxZ3=RokR7@SVQ*Y9;ppB zn?eTXt{JS>pbv}gz4TPs>Q*^aPhM|-Oe7CRUb!!sGqjN3yHdD-O^E33-lBn3+G1lbXaFvaaU%3`euX0Zaek!P3bG zpS^drK$;mz_`ZXg#vml}fkpa*5?-Y}S>-!q6uSyKd7p1;$*RAh9rlHPQKW#cZ zky}GjYON%)i3x_1y~$H(o`L5(JkkALrS_Ns#X(wLbT@`@JlHr#g{67X+voqtJaupt zgsnwtZ$4^t9TglqxZrgqtJGTGtVutYOPSXw*t+v1LBvN{nqqLZ_VQf3#)MQ{dt@V* z`>~*uy;4)xJ~Mm-)BCHYH)t!@{B|N{Rm6gkajq;@=+H*~d-u z+9x=C1Zr176XV{orjcI#{#7WI8Bbfkv;mJ6+@#_*Z0j@0e+n<1enBiQ9D7L2E|dY; zj(0-mh1cL*vFh?$^4#)IbsvCA&?KO#39EnfG1F&5MD;Q}w0dsrx^*jU@bCwLo&HT2 z>4WL7vhQG$+@2Dyo}ajzWgkg!D@j!KUZ=sTN1*O~ncNg5(Cn&Zz*vv1R_E+}Gnrfa z=uItE!^-aT$&n|8opo!q^rWHU&v^|kovw_5rUJi#!-vv`Xvg=>B3U`@z!Tc(GciZz z9u+DAD5Q1$Jar!_`q!6pf%F?~*58=g6^sQe=u#m#NUj=y~`S&t)Q zbLpF~4>UNpaqnCD&ySqKcsIz-=Bn(Fa@QK7L*=_Rwq#2rq4q6H6zGX+^{|+RDlF?sNq?(;ltm+Cq z@2B}O-sIvudd-*piyy(v{86EhB^{+@z*{}d7vjTDj^pYS&X-aB{8PZbsIN3%Mq`? z*}1~ve5rdy0W7LV9IE(|Vavo(H=c|yZJ@fhB{C)=$_v|WAoD-wkxC0-$X49u9Q=8} z1Tk?Vh;GMDsgK{?!@{$8{j(-w3h9FB{O_kj3N5N!ju?>rtsO14fuHo>{w!b`_hIAW z-T(Y(QDg-q0p)z;@-yf5UcCB84v_hG75 zY4SINQ`OUY)+e0)xp>Q(Z)t!g%K2S0GJyWdM$!v5m@xQP zdbf%FBbbwUC}tl6gxs~v$i-)mqPegI10HI{cb5NisY7z2$zeL3xaLil!zeel{Yt^h ze=g8+?dH_++>?&ai{3esRCxBW^?mMtq_)63mz$DPp9(#&uGczs9Y!}{uV^EFlz*c$ z`fntgw_GJs>G)~BlM6so2KA~4|KO3B9UO?;cy=xM;k;enD^Rdlz(dBp>$pc4AWDE?=HOk8^Yh>NcD2jR8MXiXWWgcEG>!U8XlY zJ1ATXqs*vfdC*N%9M!V(=iVXM9mf97u;XN5O6jj|pr3UH(R!TieFB(S6Hw>Etw?Zzp%Ca&S{*z&M&GWcBx^&=A~-dz2^5U&3A!kl zKCDh(&`-R=uzx?T(uNG9{f(JEm~mAG*OA`Ul`Y_XM_kMM1)5$nKhI1hDvz$MIOGa; z)dZuJ;M(py1sJ+3W?G5L_$l?-BFi(u zrYEY``bDxu<8$r>!1T_E$JD-mNp2RyBZVo&zq*BO{Uq)i*R6NAB$;?45Pn_wvt@^{ zgeLvUPD2O2P1plM2!Z~4qoOd&tybF>J7Thv@?J=D!O?hymV(Hyzkg&iQ2uhkteOXL zsu^pyVz%+(U`W<28b*j(IMqa-(E8TtXDfFz2a}P0c<0rh(nogn>KffG+2ec78h(`Y zLB%c1Kl_E{OWZRdhP&-=z=;P6^JP0AXT2B&sA{tQui81f>87v1JqLbu9z_^68~dgu z`aY&G#*5Nr1%As#*qiOpk4Ij6s(Nu0@?`AT<2aMS?0RwQjsx|g8#Q7SOp%k~gW4;k>dLsDRcS7$|ofd#G;PRjRx>MHo-usXPgis(NS%Y!FgQmK};9yKuc zS+@M@!q}A!-jwoJ6>%lsXJy?UKI>MRL!rVB;ki@q!ymX31*3 zGtAj>xNC}b<>7i)UxmeGc#T@OJePCo{iG;?p3-ujs1-g1S2s7WAB^SjDC0Qj_X6MF zU5c)oq<#PNwOEcsdDRgZvL5GDXB^0duZ2oD0)D!7fjj@G?EhqX3Be>8uHC}?u(F$* z2sn{GvW6W7e6wh#(K*a`A1AuOs1&NW7auH-I+d!OH-g`fqC9KchF#M~bUUmMtI#8fS@iN0*jAZJVx$wuU1gJFHm(EJTK=GU%9Jyv*FzmW_~`sb+({vK5nN(LcTP?=Skpm zr{>Fakt5w1Fw&_lg*5}sk(sjoL{-N;>mo-J;C?k2^gZE=jf%k$3?W!Qx z`*clMi>Vw?UU2jdo4bC#jpUd>Tei6x8C*egVtxIaOTl;{6<)9_w1*DBHUP2Nu8a9L z&(Lc`z;$?tEpzWZa9}taLSLXo%rB%H6tx;{xe5j|g37`ZMcckIorx!5Bf=ufXX%j2 zsW?oXWnilrN!ASQXx@lqNyerfqu9$VFGM1(!EAro4ml(#ZD0xBhgiew4Ij|*MVGk?Ci}VWY49A4wCH=W=bl%HE}JFkDTblc&D6p~0`Eok~*K zcRux-H!KWC#h(hK!2J6GGN>ri$gXGZWXg54$I=hu(bPA<5BZ*4?h4UIBtt>8A&o&+bhYefgF ziM=^4eLhVu45eOX%!sY;uNdnqN#hIpB~lhz^}=)mlniST+sdJ?5R-V;i0%S=dxcne z8H+nexK2&=Ah+eU#-9|VIln^X7J`wdzarwB>|&xt2`)*9g@BDmoNDc1@3%!PyWF`2)(a1g!ebO{TAlp4A!>N+aE{aPSrqRb zMSniZg0&(njls}cudgQXvr?kV31qIWc=zKFJuj(Jzn-C5f%jxn4D=g&&zcVwjdtfv z=G*pINE~0qgb8)YR3*dJih4T5niq;s`5B=-xKT!68Au7vu9e_Woe)q+X0G=5eD$&6 zq9r9u@}~htJB^W)#Ym!bnuTE&59Jmwc;A*|OWeo?wbO}(gb1<{Sn%U~>9!b>h%c7_Y+zHYC_bI85BASNNJvmL8RCH=5+t=NSaEPX&~dsWr`{Mh+Q zY&ip#75G;Rt3NeS5O*6mO0mL22j%(m!Cu`b1Gh|loq&i7wzt)VBy#8Vn?wE&fPHhg5H> zr1RA_1+;@LxIRiX0oKHH6Y*$NZ62>r?er`74g0;X?b(XjB`<}AMH_KjU`g3l{QE~6 zqvi$QI(m7xzd47Wn1yU#)BD@hohRa^d5EnGA!c6;4P zO_wa;?A?D(K=0VH?j=kw1gfg)DW8_RgFD8_pu0rNyREgcag0ckA1kcvfgjL+T08M< zUIg1(vwCF$tWK991H#{%4sO%Kr4aNYQo|09yooOb8nXp!*PUC-tLWieTfBMS`Ayh| zFFs9xqgE9Rz*GHQ9Cuxr`SuBOcorWnrf-ot8S>JZF{j9fp@areFEk^n*UC_cSWTsm;fP0H>Fne%3XI*1$H*W0 zn_dYJ3Qa57P^bhZNMuHx4pPfI-Pm;JKzL9twN&k~le@1l-MW4XFA02;n#)?f#n{3G zvB6NwwCBYt46yR@!+dG5@k8$O6KV(Qi|U`kofl)K#dEeWVf@UkX6J*@siHR{xUBes z8{?Nz`|d2>az7+`oyfE8%B~`Iq+C#qU7Z4fbLewTYfQXMyI*2GQ5&dIxub z_X&?MCA5`pDtK)@irATk2WwMPxPqp$VC~{1PY8oOP+l}wSSLj}*ja1%Iu7T?fta_C z3f`*3P3YU)o`+3hdoS%<@yYd#X3c}kMTWUPXFc#G1y6I9M&(}bK$0KW0c#8r>+CPDsADp~pTNac*l&r1=%YiY-;9GrxKz6P z=`a|(Gj_h(pQdt5=FZA>jSZWSiF!ddz7XT*voOGo)8AYK#}i-l8vMXI1hDUix(myp zsY7CO_@!IWri}tzT;xW|st!+mVtiveWs4%2q_X5CmJ`c!-1oDN=7yo6-GEZA@U7nlP7}!pxyb zCo;z)%I9A}(mIT?PGF9LE#BslmbjR?+`9)BjB~89=@iZ#L4Qh>Kkl-m58aatJ1k_< z-8Lonnwa&Mc?Aqle{B&%*-N>&o`S;%4{>WAx; zXggRuunhG`8#cJ#9-l6!PiH(>n_=Hum_^{Pn(*2!zlieo)hdm~Ar9y6dpFpG2KT?- zZ7Ou-2UzJ~9`w|~CIvIk264k;oZ8JJOnpYviNv!Q&VyV(DF1Srmd8bUmS>Iifb1oi z?u64ln>h{^5eH&+m+N?e?K|9*q8LG})++0v2)FLaj(1ftH9}0h_vSVD0OP;-$l`Cr zqu-k_v_7rnJB(9%KBWUcNfeVZB&&M6mzFaO!4#Jg94Dw2PFOy2FHcM__t)o%jxE|q z*7p4qRt$3lSi?U~F+8_c;oIBZM;W)_59)UwJzT`wfY{pwa7n(C2OlkeFC_2wXo_%S zyn#fM1lbtTcCca0m}XiDFu|HM%8x;Iz|~Sqty{9N%PgK*x#VZEg$|m{jahaws1uJ-H(is=C-a!C<6Q^O(5=lld$W-6oUj<4 zFE_Ex470_p;XB-Z0}n=f0o8^--`t_J0{n!>^oVZh>Onw|qk@8@?TYqz1=OPuCKS~E zGZYM!e<+q-I&sDSS_aD}_3p?nK_L#ngdQ_q8?*&<) zdmV4w{VZ^;B!|Q4@%hY;mt}nE^yfZ!rmXBWYynvXp)>R|2do=07wkjQ6_V4sP0T8g zJy*e4afZgOKIUOC8QuB7Ez|9ZLwAe#)E8j-+V0=rx8EF9FRn zpgMAuOr2rHJP{#I670@kj?CQzIM5X?qT13$1aiYf$cUdPu`Mys4ZPEkU#}^!oKfq4 z^wuJLV6H(skyqR2-0w{r&9;aejrvtJgX+Y5@1%cu?}zT-CIa1Qt`t6b*C|+!v(b8e zi5HE6>3(q-U_W~2@%uNB7#N@|VaY|CY*H?W;MyzgFXnbQ*SKKb^?qU4`yH;gJjH0z z)@SHzql(jHT8~cNH)wn?b0$txw!7_nl%z=E_LOT_f_?S@N|53cJ0uupWsjgWFQlCE z^B}ef$J~e;*BdI}wr1ju6sWyUc)*B&mX~S7eok=s!HIudJP}r2!R9^K z004#OJw@#@$H%MrWjh0Tr0a}0tq{OCN$5Uz3*eXGBK*=6_&8L)FCz2<_ol^cxL&(gGbgznoR;^b%$rX-j8fR!hx0;PRqBO_l`d0mZJx+--LLJevCT+O*Xlk^8_yo9FuJ{|wRGpo=uK|0 za|yIf!)b&ZYYN^Da2%FkY=@Bh3e76Q#C1%>ndg!Fra;M-5w|`G8J9OYAAW1aN*)?` zo{9V$x!?x|+A52i0gJ4Rs}c8em4B4y;1VT8UMtL_77yA+lsaMRu|*gT&5 z&*;61L#DetcM>-5^Y@G9 z+cQZM1J}~gH9fNCAveyi`p*63_ zNuWRU&O`zlwIAb0JJfj4T)Qat^rLf2tX|8jTbIe|amx}4D^$MLQmASyiVJ^C2Azpj zVC8;cB2v(#2pAaZ>Wn^WGS#@u>q4a<@2!`U-VWgf!O@7qX+A`I( zX6txmKHM-+%Jc+*55rRq%L(xp%fYP9o!@6Z3oU91dMq9a2s){SM^BXJG#;*>DXx65 zt{@`R9Ha(}5`da<8M|I9iQ~RMPI2s&Yx$&KTl_sV*nK{g!4*1xZSB=#IKA?qj@e3_ z{Gn{wlB2E!Zb_d*Y8d>9or;*F;CB%Y5!W|#fr5l!nD^Ot}QC7t6lm7{( zyeTcLz_i4l;w8p{D?hwx+Tm_kD`4dL0Xe=!WNqG)Z#&tj%=uoDcQCszv%7mR%SJCF}qN#J|%1RRGVnRp(ET1h)if{ zI6QlIND}E(#9drTR;~G*5*WNv`|zs5(K^{i*GRZ53gtBSe@Z}mB_Kn?LXxB`IvC%l zpaq&CLS9oK!=A2vN}oaHi})M~t!wSc(?l$4VQ%`MM|9}?awGXY+8-B@Hq3qiUH3z< z_&j;2K4K+>#J*98i})WRg1IJJRu!-XJ#qQ?|S{U?`LVv^EmGLt2~GfI3-;E%0g`&sild6Cf*g2;ZhAth&A z$#^tDx+;ku%pFlvMcby2B1z;YxwiH3Y$D6m@-27j{CI6jN0L+gryadgx2;q7c5_^T zG0g+CuVhK%ygsweQc; z9>o~~18Dx3?OK!_t`$JkomSLQ=3WHLPQ%6ocZ7b^dzGG@UtNit9B!f>hKw|!cvly` z1RCgUcMsQINkEC;o|s;TiUu`L7%Itn6ASZ+%X;dAIG2>7E3vLEOjK=J5pzh;%`C+4 zx0Oj@fxE{T|$V_^nm{3O9! zun*Ki!5$Ros%is(D6NZ1^(0h!P|=574tP9ohiDtM=Eje-qpeI0I}wYC>CQAgUfbIS zv`gQ!cQLpB%Sr8(d?>b}=oG(KZkA><92GE7G%V-oxJZ^LivNh{=AhyYch;vpSqNl& zd!Q^unOtX9A8mj{Lj^lx^ULE7UcIKI{`t?cz|xUhzgxxs8$!Q>$w|LCUWkx$`W!la z3-$KqGK`aSB@Uv%K6egs>EvUy=oaoB_FdVpvWA~ZnnA^py@40Dfz_R1)&LN30%XXc zLu23~WCR+PBg2ahOQY-gRM!k`${g%F&0QN!YP8b~7}c@PW;({t9a4Soro!J*WZnty z4Vm*3mwkLfBH`7brGkDZE3(pCwN$6B>b(2X5+6X9HGOv%65YSSN1hiQEIX2Qi{uwT zHIt`)o|~wb81^8fk}F!S{5$kZjBia3UXl^>QgFA&0&DS_Ke{ zPYC6s4<3P*1lhTMh{Aq>e@M+l#!ej9Bfx{uq#I<;d?-IEdrVA*`~)|6mi7yaKtX^d zy=q4~WHlsm5m8fLOeNUc;SCNrL3uQqCivu+A8=JHh)yKm(}Jw&Gq#n1`Sf!{72_0D z2B{SdG7`aC9BG$;>{wKvUT$v$oj34w{te;+w~Zb3%vkrM*2{$5h?F}nwX{ZD%NHV- zf!|RBK$&qU>KMi;@^A$Da@8uc1ptON5)RqFt1Y&T&*hAAEE@dFTmfgKSdth2t4n&; z5Lgi(@aTe-6!sGASNhoIF>`l-4C^ zCBvjeI`y#P!FuYzS1jb|>sGFP!9 zB?e5J$r6DR0RnejjLiY?E<}KXW1^ja*2&POk{L0ifWUhbH-If@xCCAG&q3K+jB?jz z!B(tv@UeX3mrA5oNd<1)qh_}BITn+`YoLwoU)o@mXmSCHYKOYi2qbBYna<|6D|!&- z(6NiJ^$(&8vO)gJGX!AlW)WbP7MD5|%n*(q!?svtJaPt9x0}|I57jo>Y=XG9KSuaY z%R!3|-(>9Z&rzNrvEyN-g6WzIY5}~mjonF4fEOq(9<>gU#5m4xEe7cu4a&N0q zW`XM>$z;BRH?Ln9^_BZD41zLEh8v^7MtPDcm=P(+f{)r@!LmM{#ivDi|1;`EI)THl zBK5f+trfqQM*sCzL?p3_wfGReeH6T3`8Lf$I16Z5XXiKyuT+uPq?n5tm*gq8-%qncsLR z5IhB1ACOqFcrSvqKt}$kw`QP~jkju~BL(ffFvs1rE(H;(il#LjKtDRUs2>dl9bYT* z)i!d~Dw$P_aCQrlYad<d|2*U|3H9uG1Kr2$Q#XuB3aB@+=m)Efum zYY$MS#J-~Lb;Bu_ZrH7I0}2Z{u{{5-Jc-zoWUC`Y7urvlKfqFil0+nU&81P59j`#W ze4EFm)0V88Qi|+?L~=qYvLvvmf-F%!4=pf$a3$@SSMtf`#ZbdkuQudaAh#Db7Y#JP zX3!GQsL}9*>S$0iDeWt9`~8(U`~9r3|8GZlq?0K#{0I!tpzxyv{=Ypzmh7|4i}2&M z{((IIPoaESkPGufenkC0l*RtHt9vuG4MAi-Zu#>+~LC>w;s^>T;ikRVxL2)#{TVY8|j zv@6hJWG}z})gGb*{xP3CDN(AnDrTCgv`NZMeRWQ@h&9T)7Ul+ZW)EaF_gHz7lGogg z6)V?HAyO~`9+%n|M45Mh_~bQIY1LtiO>}ZsB9uaWP|z=vDCQXf>7f1ZJp#v=aWwS;Q?Wpf zE6E}jPBI738mm1VnfUCpi3rx#2+>QIl@&u%yhpC}d;Gawj9JkYg{B*pmrP;t$E*B9 z;=V-B+;zNU0^I}hxLcRnxk|#>qkw_obxBaEvH-hKs=79~%nBN;r?j270ewjc*)AOv zuyBw^XC@qYXcLc)3cMok4%d+m3+$}V~KXlB0rGXxHYUcH;l?w9{` zgHydPK54#$>pS9sfU{E^`e={5aq5Kt`48aoL4@kI=xmqoMjL~|>!!6$Z&+>F)@>&t z>+JBbAnuama25#QC??)VG7T}BN$L-LY5RJvL1_VWD|fi1qO;u0CJI<1$)JEyC<$4% zgom9E`q`gB1$wN|LPoG&4xagCufUg$kMz{- znOA{>_%p;9EiaXHQ0seSz89E{v|j>GVRnoaK*vx~$>Ukow~b}1yMP)6NPCM@Qr(z1 zxb}r+;wfp`6tw6BWb`48jrl!xlaMpaQ$tF^R0Hk$iu1C(KRlJh99Cwgj_I?=TNApY z6urHJ)aEqYC|#D{%kBUx--=9%`vIs$t^N>BJ8bwjz9O<<>pM96Lkvc~UJXmKXTKKG zk%gdU5Mg1-c5du#9^HncHs#-oyGDM7;Pz(h@l|lpy|3715&)2mME#{A$5$H!tbo|m zUeCLpWy!-7$G(4L&>>65^AMVWdh`iOlro)eUz#h7f|)hPgB(l>w{#J_pvQp6msm=>>1T3eU1P8jKbPUBT$S|;xXnGnA?UbG|o^sVAX85Rk`j@ zbKG(t>hC$Ve?agM()g1JJSOTI$?yeU1GS(;k<9TVj6(m@9+^$-Kc=A+b;BT7ukm%Q z0*Iw8I}=}dp%N2GeQ!@{q-dL<9ju-!t@|LO-i}ul&ha3}^H7uHnQL;x(BQ9>S6=PO zITl&28Ihu>$eQ1P7g>|2xlLKPg?~Vs!pd$zz)HPkINAD_K4j;BY{$>hPI>@1&??;h z&_=#tg+CcGxu=lSdt`utJ*QSli~vW!D@02BX!viUl z-VjO6CTOQrm2a`9pq>O-LID;^%yk5+YL1-;U-RhmIYqAyK;f2znjaVVzIovbZZrmk z-@}V!=4byo6m#)>I*}W^$q@DKq`E1wQA%}zUCP#@b`Dek zaZbjpv~IC80sildA8f4GGKUxq}W_WW!*gJ{1~h)x02pjloxcExV=-ovNS}j z03z8r)OpV&E(B@Tu14V!8fLfFH#dgOw^Vl3M)W+4Zz6MmTp7gjk~v`WDL zJnx)b@np6>F!V~*p&z(@!|bbIJ2{P}p{N+7{^Be_pZzM5zpgTO;jGFx+O${Oip!Vv zrwHX$1&x_SAK-N5#IeNof(8ZE2FSYPv}k);3riWm za~tTr4CP%1AM>M??IgUk3nYWe=-VSTCmSt8Q6}aSLouV@jd6@av3(~<5%!UD!-2V( zXSftPV~VK~w=?^a5p@y*2*;&-^T)2gweg=me-ulFFCDpL$ou^r%Xq+P{efgG`>Y(` zoxG$PGl+py3Jd%9X=CH;7~56rs3AD_6TGG&85XOJlgvNqVu*iUY)IphKPxf?F;fc_EM!6*mkOW*CF)PRvM6IiBJ= z+JsqWUt<9LIbqCY$b;*7NITVA3;kT;-FesXc{X`(^sG0u>b-#Z6f7ASPoxkZr@Sdc zWJ>B}F}HDpRua9q2q22(l2k>zL#*tUw~33mQyH;pugm8Z6borKmansiFjaS3$+C=8lBBivmyD`nt66M(;W! z-S*Ik(X(~G28i45KS2Tag95k?=2?bKR$t-p3vT{q?kOcW-g}~yYqxS^syhUQr5>&Y z1Ew%u&>!r!&r{$VZ$WhpWNCt&yuHVP-Y@t(-cVP9mJPfPeQGEJ6?a(!h)az#D{640 z%=IDdzH)!pc1}N#dAeZ)sY|9U`rEj4xBT%}H=zr{pVI zqaZVAX9_MJrn=qXlW7f_zHy}s-B$a)If^8~YeLNV=^|wSiLK z&PRo$BsmAYp=^QpBq0L<5_`{Pd3Bo-qRIRS%{~-bKTSx(c4^f~^B=HgCw9+cc6vO-hRtRq$UsEHK;~6d%7C6DR1`^xIlG9hbnR!iQYZ{xM1c!Y zhKYEDoP;$vW{yJSC(_+6sG1498a=2}_3FGuJPGSrorshY1Bwf*j{C=tSQxajvo_>v zJ*}5va$Hj0DaSAf<*u+qg|g-*B4B9geGI4@cV+?{&v~4iBzDdDqEIc)u023jJJ_0s zWm`(01?Nq{*{>FvOdV2L3F?r`gU|(bUuWt~{>8u;Z895!grTV_uxBbmbj1$3L15b^ z1#X71k$)|PQ%eobSoy^B6l(|o9D9ueAj=d93&;VULr6!3#P1`Pz-JpaQ=Z*#abrhF zTA@wR0e1L#@e+jx)5UawB%;xAg%*qV&TSd11|^$> zB??IsD`H#g<3QY{9E+>@o6V94gY_)VhQs5P;X}iS# zw$X?`y-bpnG@2R*JY?vGT<)_Ud{-&MXr#Cch*puTv#=J~Ny&-M2s5r$+$%3+?|di( z(RNu;+9S_|fO&;jSTVBNgHWl#-+O6gf+4R#E)?IdfR?Oo8}$INz%l$ZMbD|N{G>y) zB1Ygvp25mh@wzc6r{<8=#DSqGrsA@YFX1UDChnGDneC;62&(#2uaFM4gemdwv$Uu<$}Ei6E*1Zg;YDx*ewti{^?a+~yCc+`-xEKnk8NN(WC zv;gkG{-=$FY-I)um|s!{hT_t+Ttw8EX^VG?K+)&#Z(3q- z73Ky8x?n-?U^3e&n#QLVY)p?l`tH$zL-@M0HnFp|e#O52U5tTEXBFdy&Q4ZmKi|D;NdD4UQ9zEV14811Se?>0P!%;9V#@;0MZ_vq6u%LqiKtUl<(?hvC?x(n@cfQmHM!g>u^kOR=mD7rI$^2V&7MsqNV zHDpcdZ3nMUDxKR5_t%->RA1@y6dGR6A;6Z{nm`~fWgI~967tkw5S!Br_G~G;8fDi5 zDaBl8(ClcC^y)zy_p|IKr5JA@;WZoZFZb)Sp+I}@W`n36Kz>%XY4WXgd_YThNPF|= zajo5bkL%nQ({zInWE}yz{n8;0EIIvJZ`*z*IpW}aEmYS*eFxyL2swB8Q^?jC-TFlc z-!Hf)9Y+_I-zHLnG$LuGIIN2mhd+gN&m#%8>idKS3iwk#kzn7KGObqYUP3tG2`pm} zS_T8M)co&Gd7Z0k)ANEqX`N$*}^YD>JW#m@dDMGB#Yw0Z6xlS;|-mj9$V< z(6i^G;=OYTe2jBPT#aW4$Ep|u40 zw!8N-(I^T;R6P!=#5wcF+)y2O+E_9KRxo-s$H1)T*BM5!s)k}<_aD7SU=I~;+_sm1U|7@u+bz93Wot{L4$QR5d3>)wrSuKNd z{*Tu1Tpz1lmp?CbReT%C7X-^m5}JLmJ@-;`@5)6q9{_pp3;0$=o9w8Gkyv$D{{1jI zgp7KVLGQ2+n2oy3>QyjEa>>0AHl{Jz&3guWO?;bd6GWETA7)vK2FENT9L)k$u7&Y> zP`WjNlD*BTCELAWQwWqz`fzTSzm^q=tj5G`aln!90=+d0x+_6XShE4h0_YYU7`Ys< zYeaPil(yfok-TmCz)KLgcC0!4J@8QaQ5pHi08V2?&Fyd*gZ+8RL=>P{)O?n_*Z^AZ z%{W8xJtO3!@~nP$K!o0@1)}~JA&(F!c%!R&h{^Q))huBHoWZbd0fMb716H;wE5uTEGB^6p0B2tJs_R<+K z35Jo}!5t9G*^nO5eryX3MqAE&xAve;eHuX*1xjoc8N4PV_c<8mA`8Z&Wb&CelA7-F zI6eH}BdAZ7SqoQz*uulxnboHXTP(B?xKjzDrBAZm69!ziz@i%1%@DL7gC|Oh6fsS< zJU6Vq8zR1nWha~fzw?IBgM`38>fBvOe0td^0aNsX2BG-jkh3{Z6>!LArwAVX=)Y9Sgh`>t9- z1!ybg$w;AERu|Bu3xxbIoV*Y2B+h#%&;n+CM%GGvzF|d5_nL>$UWrS5Nb}E!KvU+n z9t8>Sa~SC$iA2>;tQ<1$-yFgHW_q%s_FSl@7J%$p&3iCXSJJnH)E=?*y!ZjZdBbQ$ z%yBD2n^1rcY3F)hKiRm*e~36JB^rEYDo4p2R-!@Jc;W?D3#EuJ3d^wa0Ad<+AIBIq ziw^=+rx1yLM*el3%mdoBMj8M}C)68=y!Sy!|Ad4n_(EDk(yy6k+p)yPV(B}-@hSc0 ze`)O>ZE{<_9D_>U7scN}XBq$fSqlRo(wztmv}$Zq`N0u`u{a{$rN+i zWO?NTSM9?+JpPgCH>F%{GC=1Wz2tAqsLAOi-%RXpWYTXYmPY%pWH5a*v2P{@Il!me zV0|;OztJ%NXD*b#R3~~dTT}N(~Y)kB+Ac1LGf=%+n2BlCyWFsUD9Q^i2X~?c%pw_{B?fx%vJf z=e0E5{sQGm7&KOTdhH{&sXzTI8MRkWfQltD$|hl9V5PB)s7sw0+C0bk(!`HLP+-!x zUa{WD#5C|7&r^mcZR*$Y$xVJmqf)u=Czp#01F!b}M*rRDmp}7B13JDl)U2<+(V2%r z&`4tgUcVPV;S&(#j&HJeT*u`rDcFC`xV-_rDC~VX<>4oE{psDFcO}v)UrF*`eAss0 zdLwh#D-XKxW?11T%$o6TLpOWq=JR#*_1SAuPl8F!L3eh!NdZ5h#e4bZvSR{YDc<7iXTl3UQcYUbNYc@3w~Idp|tR+->11 zav^@<;%k6_DQoJPfgHf7{muAtop(MPbWT4eqX&{c=|=EsCgLF^FbF&1{;Xtb|J)R1b$?CSDy3 z#F@vN1e;`w$2l)*_q6fd9B--K@0o?|7-;a|!k$9&*VFWkeu;=c=VXC`Jn3<2O44w25Cj)l6(sSbj7qV3yshjS|0Ucoe^~wAWe6ci8Rtc}zTJq%<}!b3U4v zFwsHzpt_67KQ1kKsW>(re~u2N8_+Ziw#8hkgSiIcN3H>k19(2f2U?=z`C^?NmkLZJWDFWn< z3Z3EY6AGw+x3c&bSJBQ{;fjAgbS;xJA5SWnrM~A+`Lin~^k;%^4Dm0zZCa7H4%_Z) z);ct=mwY_0!BM_JE3x+>#pjHpQVCTHph5d44zhKrv_zimLe8Gw( z@#9_|`icSkYs|S-&^2MkA;sVqw;W~mdre=bBOb{)~9DPtLW+!KjFm;TXD>Nn1v2wHht+@i-NDqJyABg_^!C+f~CvQbn$D?#^$wc zZe?$HS!t9VdWdgd|2A~r%x22JJ7uZ|xLuxVR)h2O!so+Z#|_Qgo4uQ}u=(fff)>Nr zBfF(rGLtMyZ?D4E*VL%)(NpMHy>QQUA07C8SO^?HWu&;+AS}z1LK*XDK8qiC(L$YC zlj3^%X(fSBO_+y{lJ~*RZYx9x?sM10F0L2OuKxS)iwOz%Nd(LPPyLd~q5G&sCkNQ! z&;CevcXMi{d=)-Aeakdd^s!%b`Dv)UNDd3Zk1~$bP(h*1E6JLg8kT*pT;nax;%FYkR~z{LgC=U&!>zjZ6W5k=wLmWg z`=g{ZaqTO5?#*~01;2=mdzNN|AHOlMS$O>5DN_UlCT`BjxFz%5$GdjS0Qcj*V;nK-v9sr literal 0 HcmV?d00001 diff --git a/images/mapToDouble.graphml b/images/mapToDouble.graphml new file mode 100644 index 0000000..7d4adf3 --- /dev/null +++ b/images/mapToDouble.graphml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + Collection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: A +Amount: 100 + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: B +Amount: 200 + + + + + + + + + + + + + Opportunity + + + + + + + + + + + + + Name: C +Amount: 300 + + + + + + + + + + + + + DoubleCollection + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Double + + + + + + + + + + + + + Double + + + + + + + + + + + + + 100 + + + + + + + + + + + + + Double + + + + + + + + + + + + + 200 + + + + + + + + + + + + + 300 + + + + + + + + + + + + .mapToDouble(Opportunity.Amount) + + + + + + + + + diff --git a/images/mapToDouble.png b/images/mapToDouble.png new file mode 100644 index 0000000000000000000000000000000000000000..8628876bdd5073b29d9556b342f9efc1f6b13ab4 GIT binary patch literal 63394 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

Hq6K$HO&yk3_Pu!3B@mCC1zrq$PIGQXDaj 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 TGb;go*sYs({5@-f{i%Nf?6Zq6 literal 0 HcmV?d00001 diff --git a/src/classes/Relation.cls b/src/classes/BinaryRelation.cls similarity index 76% rename from src/classes/Relation.cls rename to src/classes/BinaryRelation.cls index 8ecce00..4b6a9f8 100644 --- a/src/classes/Relation.cls +++ b/src/classes/BinaryRelation.cls @@ -1,3 +1,3 @@ -public enum Relation { +public enum BinaryRelation { LESS_THAN, GREATER_THAN, EQUALS, NOT_EQUALS, LESS_THAN_OR_EQUALS, GREATER_THAN_OR_EQUALS, IS_IN, NOT_IN } diff --git a/src/classes/Relation.cls-meta.xml b/src/classes/BinaryRelation.cls-meta.xml similarity index 100% rename from src/classes/Relation.cls-meta.xml rename to src/classes/BinaryRelation.cls-meta.xml diff --git a/src/classes/Collection.cls b/src/classes/Collection.cls index 957e567..ca3a931 100644 --- a/src/classes/Collection.cls +++ b/src/classes/Collection.cls @@ -374,14 +374,29 @@ public with sharing class Collection { return Collection.of(transformed); } - public Decimal reduceDecimals(SObjectDecimalToDecimalFunction fn) { - return reduceDecimals(fn, 0); + public DecimalCollection mapToDecimal(Schema.SObjectField field) { + return mapToDecimal(field.getDescribe().getName()); } - public Decimal reduceDecimals(SObjectDecimalToDecimalFunction fn, Decimal accumulator) { + public DecimalCollection mapToDecimal(String relation) { + SObjectFieldReader reader = new SObjectFieldReader(); + List decimals = new List(); + for (SObject record : records) { + decimals.add((Decimal) reader.read(record, relation)); + } + return new DecimalCollection(decimals); + } + + public DoubleCollection mapToDouble(Schema.SObjectField field) { + return mapToDouble(field.getDescribe().getName()); + } + + public DoubleCollection mapToDouble(String relation) { + SObjectFieldReader reader = new SObjectFieldReader(); + List doubles = new List(); for (SObject record : records) { - accumulator = fn.apply(record, accumulator); + doubles.add((Double) reader.read(record, relation)); } - return accumulator; + return new DoubleCollection(doubles); } } diff --git a/src/classes/CollectionTest.cls b/src/classes/CollectionTest.cls index 58ddf96..4ede8f9 100644 --- a/src/classes/CollectionTest.cls +++ b/src/classes/CollectionTest.cls @@ -565,12 +565,24 @@ public class CollectionTest { } @IsTest - static void testReduce() { - Decimal sum = Collection.of(new List{ + static void testMapToDecimal() { + List amounts = Collection.of(new List{ new Opportunity(Amount = 100), new Opportunity(Amount = 150) - }).reduceDecimals(Reducers.sumDecimals(Opportunity.Amount)); + }).mapToDecimal(Opportunity.Amount).asList(); - System.assertEquals(250, sum); + System.assertEquals(100, amounts[0]); + System.assertEquals(150, amounts[1]); + } + + @IsTest + static void testMapToDouble() { + List amounts = Collection.of(new List{ + new Opportunity(Amount = 100), + new Opportunity(Amount = 150) + }).mapToDouble(Opportunity.Amount).asList(); + + System.assertEquals(100, amounts[0]); + System.assertEquals(150, amounts[1]); } } diff --git a/src/classes/DecimalCollection.cls b/src/classes/DecimalCollection.cls new file mode 100644 index 0000000..42132b3 --- /dev/null +++ b/src/classes/DecimalCollection.cls @@ -0,0 +1,58 @@ +public class DecimalCollection { + private List decimals; + private List nonNulls; + + public DecimalCollection(List decimals) { + this.decimals = decimals; + nonNulls = filter(ObjectPredicates.NotNull).asList(); + } + + public List asList() { + return new List(decimals); + } + + public Set asSet() { + return new Set(decimals); + } + + public Decimal sum() { + if (nonNulls.isEmpty()) { + return null; + } + Decimal sum = 0; + for (Decimal d : nonNulls) { + sum += d; + } + return sum; + } + + public Decimal average(Integer scale) { + Decimal s = sum(); + return s != null ? s.divide(nonNulls.size(), scale) : null; + } + + public Decimal average(Integer scale, System.RoundingMode roundingMode) { + Decimal s = sum(); + return s != null ? s.divide(nonNulls.size(), scale, roundingMode) : null; + } + + public DecimalCollection filter(ObjectPredicate predicate) { + List filtered = new List(); + for (Decimal d : decimals) { + if (predicate.apply(d)) { + filtered.add(d); + } + } + return new DecimalCollection(filtered); + } + + public DecimalCollection filter(DecimalPredicate predicate) { + List filtered = new List(); + for (Decimal d : decimals) { + if (predicate.apply(d)) { + filtered.add(d); + } + } + return new DecimalCollection(filtered); + } +} diff --git a/src/classes/Reducers.cls-meta.xml b/src/classes/DecimalCollection.cls-meta.xml similarity index 100% rename from src/classes/Reducers.cls-meta.xml rename to src/classes/DecimalCollection.cls-meta.xml diff --git a/src/classes/DecimalCollectionTest.cls b/src/classes/DecimalCollectionTest.cls new file mode 100644 index 0000000..b64819f --- /dev/null +++ b/src/classes/DecimalCollectionTest.cls @@ -0,0 +1,44 @@ +@IsTest +public class DecimalCollectionTest { + @IsTest + static void testDecimalCollectionSum() { + DecimalCollection c = new DecimalCollection(new List{100, 150}); + System.assertEquals(250, c.sum()); + } + + @IsTest + static void testDecimalCollectionAverage() { + DecimalCollection c = new DecimalCollection(new List{100, 150}); + System.assertEquals(125, c.average(0)); + } + + @IsTest + static void testDecimalCollectionAverageWithRoundingMode() { + DecimalCollection c = new DecimalCollection(new List{1, 2}); + System.assertEquals(1, c.average(0, System.RoundingMode.DOWN)); + } + + @IsTest + static void testFilterWithObjectPredicate() { + DecimalCollection c = new DecimalCollection(new List{null, 100, null, 150, null}); + List filtered = c.filter(ObjectPredicates.NotNull).asList(); + System.assertEquals(2, filtered.size()); + System.assertEquals(100, filtered[0]); + System.assertEquals(150, filtered[1]); + } + + private class LowPassPredicate implements DecimalPredicate { + public Boolean apply(Decimal d) { + return d < 100; + } + } + + @IsTest + static void testFilterWithDecimalPredicate() { + DecimalCollection c = new DecimalCollection(new List{50, 101, 500, 25, 300}); + List filtered = c.filter(new LowPassPredicate()).asList(); + System.assertEquals(2, filtered.size()); + System.assertEquals(50, filtered[0]); + System.assertEquals(25, filtered[1]); + } +} diff --git a/src/classes/SumDecimalsReducer.cls-meta.xml b/src/classes/DecimalCollectionTest.cls-meta.xml similarity index 100% rename from src/classes/SumDecimalsReducer.cls-meta.xml rename to src/classes/DecimalCollectionTest.cls-meta.xml diff --git a/src/classes/DecimalPredicate.cls b/src/classes/DecimalPredicate.cls new file mode 100644 index 0000000..679e30e --- /dev/null +++ b/src/classes/DecimalPredicate.cls @@ -0,0 +1,3 @@ +public interface DecimalPredicate { + Boolean apply(Decimal d); +} diff --git a/src/classes/DecimalPredicate.cls-meta.xml b/src/classes/DecimalPredicate.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/DecimalPredicate.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/DoubleCollection.cls b/src/classes/DoubleCollection.cls new file mode 100644 index 0000000..93a00b9 --- /dev/null +++ b/src/classes/DoubleCollection.cls @@ -0,0 +1,58 @@ +public class DoubleCollection { + private List doubles; + private List nonNulls; + + public DoubleCollection(List doubles) { + this.doubles = doubles; + nonNulls = filter(ObjectPredicates.NotNull).asList(); + } + + public List asList() { + return new List(doubles); + } + + public Set asSet() { + return new Set(doubles); + } + + public Double sum() { + if (nonNulls.isEmpty()) { + return null; + } + Double sum = 0; + for (Double d : nonNulls) { + sum += d; + } + return sum; + } + + public Double average() { + Double s = sum(); + return s != null ? s / nonNulls.size() : null; + } + + public Double average(Integer scale, System.RoundingMode roundingMode) { + Double s = sum(); + return s != null ? s / nonNulls.size() : null; + } + + public DoubleCollection filter(ObjectPredicate predicate) { + List filtered = new List(); + for (Double d : doubles) { + if (predicate.apply(d)) { + filtered.add(d); + } + } + return new DoubleCollection(filtered); + } + + public DoubleCollection filter(DoublePredicate predicate) { + List filtered = new List(); + for (Double d : doubles) { + if (predicate.apply(d)) { + filtered.add(d); + } + } + return new DoubleCollection(filtered); + } +} diff --git a/src/classes/DoubleCollection.cls-meta.xml b/src/classes/DoubleCollection.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/DoubleCollection.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/DoubleCollectionTest.cls b/src/classes/DoubleCollectionTest.cls new file mode 100644 index 0000000..c85fa1d --- /dev/null +++ b/src/classes/DoubleCollectionTest.cls @@ -0,0 +1,38 @@ +@IsTest +public class DoubleCollectionTest { + @IsTest + static void testSum() { + DoubleCollection c = new DoubleCollection(new List{100, 150}); + System.assertEquals(250, c.sum()); + } + + @IsTest + static void testAverage() { + DoubleCollection c = new DoubleCollection(new List{100, 150}); + System.assertEquals(125, c.average()); + } + + @IsTest + static void testFilterWithObjectPredicate() { + DoubleCollection c = new DoubleCollection(new List{null, 100, null, 150, null}); + List filtered = c.filter(ObjectPredicates.NotNull).asList(); + System.assertEquals(2, filtered.size()); + System.assertEquals(100, filtered[0]); + System.assertEquals(150, filtered[1]); + } + + private class LowPassPredicate implements DoublePredicate { + public Boolean apply(Double d) { + return d < 100; + } + } + + @IsTest + static void testFilterWithDoublePredicate() { + DoubleCollection c = new DoubleCollection(new List{50, 101, 500, 25, 300}); + List filtered = c.filter(new LowPassPredicate()).asList(); + System.assertEquals(2, filtered.size()); + System.assertEquals(50, filtered[0]); + System.assertEquals(25, filtered[1]); + } +} diff --git a/src/classes/DoubleCollectionTest.cls-meta.xml b/src/classes/DoubleCollectionTest.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/DoubleCollectionTest.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/DoublePredicate.cls b/src/classes/DoublePredicate.cls new file mode 100644 index 0000000..e5db377 --- /dev/null +++ b/src/classes/DoublePredicate.cls @@ -0,0 +1,3 @@ +public interface DoublePredicate { + Boolean apply(Double d); +} diff --git a/src/classes/DoublePredicate.cls-meta.xml b/src/classes/DoublePredicate.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/DoublePredicate.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/FieldMatchCondition.cls b/src/classes/FieldMatchCondition.cls index c6669fd..9cc9992 100644 --- a/src/classes/FieldMatchCondition.cls +++ b/src/classes/FieldMatchCondition.cls @@ -1,10 +1,10 @@ public class FieldMatchCondition { public String fieldPath { get; set;} - public Relation relation { get; set;} + public BinaryRelation relation { get; set;} public Object value { get; set;} - public FieldMatchCondition(String fieldPath, Relation relation, Object value) { + public FieldMatchCondition(String fieldPath, BinaryRelation relation, Object value) { this.fieldPath = fieldPath; this.relation = relation; this.value = value; diff --git a/src/classes/FieldsMatch.cls b/src/classes/FieldsMatch.cls index 893c2a3..8b9ec28 100644 --- a/src/classes/FieldsMatch.cls +++ b/src/classes/FieldsMatch.cls @@ -3,9 +3,9 @@ public class FieldsMatch implements SObjectPredicate { private PrimitiveComparer primitiveComparer = new PrimitiveComparer(); private SObjectFieldReader fieldReader = new SObjectFieldReader(); - private static Set setComparisons = new Set{ - Relation.IS_IN, - Relation.NOT_IN + private static Set setComparisons = new Set{ + BinaryRelation.IS_IN, + BinaryRelation.NOT_IN }; private List matchConditions; diff --git a/src/classes/IncompleteFieldsMatch.cls b/src/classes/IncompleteFieldsMatch.cls index 4106462..db85ecf 100644 --- a/src/classes/IncompleteFieldsMatch.cls +++ b/src/classes/IncompleteFieldsMatch.cls @@ -13,13 +13,13 @@ public class IncompleteFieldsMatch { } // helper for all other methods - private FieldsMatch filterWith(Relation relation, Object value) { + private FieldsMatch filterWith(BinaryRelation relation, Object value) { baseMatch.addCondition(new FieldMatchCondition(fieldPath, relation, value)); return baseMatch; } public FieldsMatch equals(Object value) { - return filterWith(Relation.EQUALS, value); + return filterWith(BinaryRelation.EQUALS, value); } public FieldsMatch eq(Object value) { @@ -27,7 +27,7 @@ public class IncompleteFieldsMatch { } public FieldsMatch notEquals(Object value) { - return filterWith(Relation.NOT_EQUALS, value); + return filterWith(BinaryRelation.NOT_EQUALS, value); } public FieldsMatch neq(Object value) { @@ -35,7 +35,7 @@ public class IncompleteFieldsMatch { } public FieldsMatch lessThan(Object value) { - return filterWith(Relation.LESS_THAN, value); + return filterWith(BinaryRelation.LESS_THAN, value); } public FieldsMatch lt(Object value) { @@ -43,7 +43,7 @@ public class IncompleteFieldsMatch { } public FieldsMatch lessThanOrEquals(Object value) { - return filterWith(Relation.LESS_THAN_OR_EQUALS, value); + return filterWith(BinaryRelation.LESS_THAN_OR_EQUALS, value); } public FieldsMatch leq(Object value) { @@ -51,7 +51,7 @@ public class IncompleteFieldsMatch { } public FieldsMatch greaterThan(Object value) { - return filterWith(Relation.GREATER_THAN, value); + return filterWith(BinaryRelation.GREATER_THAN, value); } public FieldsMatch gt(Object value) { @@ -59,7 +59,7 @@ public class IncompleteFieldsMatch { } public FieldsMatch greaterThanOrEquals(Object value) { - return filterWith(Relation.GREATER_THAN_OR_EQUALS, value); + return filterWith(BinaryRelation.GREATER_THAN_OR_EQUALS, value); } public FieldsMatch geq(Object value) { @@ -71,11 +71,11 @@ public class IncompleteFieldsMatch { } public FieldsMatch isIn(Object value) { - return filterWith(Relation.IS_IN, value); + return filterWith(BinaryRelation.IS_IN, value); } public FieldsMatch notIn(Object value) { - return filterWith(Relation.NOT_IN, value); + return filterWith(BinaryRelation.NOT_IN, value); } public FieldsMatch isNotIn(Object value) { diff --git a/src/classes/ObjectPredicate.cls b/src/classes/ObjectPredicate.cls new file mode 100644 index 0000000..166e2be --- /dev/null +++ b/src/classes/ObjectPredicate.cls @@ -0,0 +1,3 @@ +public interface ObjectPredicate { + Boolean apply(Object obj); +} diff --git a/src/classes/ObjectPredicate.cls-meta.xml b/src/classes/ObjectPredicate.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/ObjectPredicate.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/ObjectPredicates.cls b/src/classes/ObjectPredicates.cls new file mode 100644 index 0000000..3163442 --- /dev/null +++ b/src/classes/ObjectPredicates.cls @@ -0,0 +1,10 @@ +public class ObjectPredicates { + + public static ObjectPredicate NotNull = new NotNull(); + + private class NotNull implements ObjectPredicate { + public Boolean apply(Object obj) { + return obj != null; + } + } +} diff --git a/src/classes/ObjectPredicates.cls-meta.xml b/src/classes/ObjectPredicates.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/ObjectPredicates.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/ObjectPredicatesTest.cls b/src/classes/ObjectPredicatesTest.cls new file mode 100644 index 0000000..725918d --- /dev/null +++ b/src/classes/ObjectPredicatesTest.cls @@ -0,0 +1,10 @@ +@IsTest +public class ObjectPredicatesTest { + @IsTest + public static void testNonNull() { + ObjectPredicate predicate = ObjectPredicates.NotNull; + System.assertEquals(false, predicate.apply(null)); + System.assertEquals(true, predicate.apply(10)); + System.assertEquals(true, predicate.apply('')); + } +} diff --git a/src/classes/ObjectPredicatesTest.cls-meta.xml b/src/classes/ObjectPredicatesTest.cls-meta.xml new file mode 100644 index 0000000..45aa0a0 --- /dev/null +++ b/src/classes/ObjectPredicatesTest.cls-meta.xml @@ -0,0 +1,5 @@ + + + 44.0 + Active + diff --git a/src/classes/PrimitiveComparerTest.cls b/src/classes/PrimitiveComparerTest.cls index b4e8376..c6cecc8 100644 --- a/src/classes/PrimitiveComparerTest.cls +++ b/src/classes/PrimitiveComparerTest.cls @@ -1,7 +1,8 @@ -@isTest +@IsTest private class PrimitiveComparerTest { - @isTest static void booleanComparison() { + @IsTest + static void booleanComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.EQUALS, comparer.compareBooleans(true, true)); system.assertEquals(ComparisonResult.EQUALS, comparer.compareBooleans(false, false)); @@ -9,63 +10,72 @@ private class PrimitiveComparerTest { system.assertEquals(ComparisonResult.NOT_EQUALS, comparer.compareBooleans(true, false)); } - @isTest static void dateComparison() { + @IsTest + static void dateComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareDates(Date.newInstance(2013,5,1), Date.newInstance(2013,6,1))); system.assertEquals(ComparisonResult.EQUALS, comparer.compareDates(Date.newInstance(2013,4,1), Date.newInstance(2013,4,1))); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareDates(Date.newInstance(2013,8,1), Date.newInstance(2013,7,1))); } - @isTest static void datetimeComparison() { + @IsTest + static void datetimeComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareDatetimes(Datetime.newInstance(2013,5,1), Datetime.newInstance(2013,6,1))); system.assertEquals(ComparisonResult.EQUALS, comparer.compareDatetimes(Datetime.newInstance(2013,4,1), Datetime.newInstance(2013,4,1))); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareDatetimes(Datetime.newInstance(2013,8,1), Datetime.newInstance(2013,7,1))); } - @isTest static void timeComparison() { + @IsTest + static void timeComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareTimes(Time.newInstance(1,0,0,0), Time.newInstance(2,0,0,0))); system.assertEquals(ComparisonResult.EQUALS, comparer.compareTimes(Time.newInstance(3,0,0,0), Time.newInstance(3,0,0,0))); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareTimes(Time.newInstance(5,0,0,0), Time.newInstance(4,0,0,0))); } - @isTest static void decimalComparison() { + @IsTest + static void decimalComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareDecimals(Decimal.valueOf(1), Decimal.valueOf(3))); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareDecimals(Decimal.valueOf(3), Decimal.valueOf(1))); system.assertEquals(ComparisonResult.EQUALS, comparer.compareDecimals(Decimal.valueOf(1), Decimal.valueOf(1))); } - @isTest static void doubleComparison() { + @IsTest + static void doubleComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareDoubles(Double.valueOf(1), Double.valueOf(3))); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareDoubles(Double.valueOf(3), Double.valueOf(1))); system.assertEquals(ComparisonResult.EQUALS, comparer.compareDoubles(Double.valueOf(1), Double.valueOf(1))); } - @isTest static void integerComparison() { + @IsTest + static void integerComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareIntegers(1, 3)); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareIntegers(3, 1)); system.assertEquals(ComparisonResult.EQUALS, comparer.compareIntegers(1, 1)); } - @isTest static void idComparison() { + @IsTest + static void idComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); Id a = '000000000000001', b = '000000000000001', c = '000000000000002'; system.assertEquals(ComparisonResult.EQUALS, comparer.compareIds(a, b)); system.assertEquals(ComparisonResult.NOT_EQUALS, comparer.compareIds(a, c)); } - @isTest static void longComparison() { + @IsTest + static void longComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareLongs(1L, 3L)); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareLongs(3L, 1L)); system.assertEquals(ComparisonResult.EQUALS, comparer.compareLongs(1L, 1L)); } - @isTest static void stringComparison() { + @IsTest + static void stringComparison() { PrimitiveComparer comparer = new PrimitiveComparer(); system.assertEquals(ComparisonResult.LESS_THAN, comparer.compareStrings('abc', 'bbc')); system.assertEquals(ComparisonResult.GREATER_THAN, comparer.compareStrings('cdc', 'bbc')); diff --git a/src/classes/Reducers.cls b/src/classes/Reducers.cls deleted file mode 100644 index 1bb3d90..0000000 --- a/src/classes/Reducers.cls +++ /dev/null @@ -1,17 +0,0 @@ -public class Reducers { - public static SObjectDecimalToDecimalFunction sumDecimals(String relation, Decimal accumulator) { - return new SumDecimalsReducer(relation, accumulator); - } - - public static SObjectDecimalToDecimalFunction sumDecimals(String relation) { - return sumDecimals(relation, 0); - } - - public static SObjectDecimalToDecimalFunction sumDecimals(Schema.SObjectField field) { - return sumDecimals(field.getDescribe().getName(), 0); - } - - public static SObjectDecimalToDecimalFunction sumDecimals(Schema.SObjectField field, Decimal accumulator) { - return sumDecimals(field.getDescribe().getName(), accumulator); - } -} diff --git a/src/classes/SumDecimalsReducer.cls b/src/classes/SumDecimalsReducer.cls deleted file mode 100644 index 82032fd..0000000 --- a/src/classes/SumDecimalsReducer.cls +++ /dev/null @@ -1,18 +0,0 @@ -public with sharing class SumDecimalsReducer implements SObjectDecimalToDecimalFunction { - private SObjectFieldReader fieldReader = new SObjectFieldReader(); - private String relation; - private Decimal accumulator; - - public SumDecimalsReducer(String relation) { - this(relation, 0); - } - - public SumDecimalsReducer(String relation, Decimal accumulator) { - this.relation = relation; - this.accumulator = accumulator; - } - - public Decimal apply(SObject record, Decimal accumulator) { - return (Decimal) fieldReader.read(record, relation) + accumulator; - } -}