ࡱ> bdb  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdefghijklmnopqrstuvwxyz{|}~Root Entry F{keiWorkbook"_VBA_PROJECT_CUR" @ObkeVBA b0t3e \p Ronald J Roth Ba= ThisWorkbook=h;xCalibri1?Calibri14Calibri14Calibri1 Calibri1 Calibri1Arial1Calibri1Calibri1 Calibri1Calibri1Arial1Arial1Arial1Arial"$"#,##0_);\("$"#,##0\)!"$"#,##0_);[Red]\("$"#,##0\)""$"#,##0.00_);\("$"#,##0.00\)'""$"#,##0.00_);[Red]\("$"#,##0.00\)7*2_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_).))_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)?,:_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)6+1_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_) 0.0% 0.000E+00 0.0E+00 0.0000E+00 0.00000E+00 0.000000E+00 0.00000000 0.0000000 0.000000 0.00000 0.0000 0.000 0E+000.0                                                                      ff + ) , *      P  P         `            a>   H  @ "p   h@ @   `@ @ *  `@ @ ,  d@ @ *  d@ @ * #P   @   h@ @  !P  @    HA   L7   l@ @ A  `@@ ,  `,  h@ @ A  D   H7    "|@ @ A a    D ||[5a\}-}= 00\);_(*}A}2 00\);_(*;_(@_) }A}3 00\);_(*?;_(@_) }A}4 00\);_(*23;_(@_) }-}5 00\);_(*}A}1 a00\);_(*;_(@_) }A}( 00\);_(*;_(@_) }A}9 e00\);_(*;_(@_) }}7 ??v00\);_(*̙;_(@_)    }}; ???00\);_(*;_(@_) ??? ??? ??? ???}}) }00\);_(*;_(@_)    }A}8 }00\);_(*;_(@_) }}* 00\);_(*;_(@_) ??? ??? ??? ???}-}? 00\);_(*}x}:00\);_(*;_(??? ??? ???}-}/ 00\);_(*}U}> 00\);_(*;_( }A}" 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}# 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}$ 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}% 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}& 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A}  00\);_(*23;_(}A}' 00\);_(* ;_(}A} 00\);_(*ef ;_(}A} 00\);_(*L ;_(}A}! 00\);_(*23 ;_( 20% - Accent1M 20% - Accent1 ef % 20% - Accent2M" 20% - Accent2 ef % 20% - Accent3M& 20% - Accent3 ef % 20% - Accent4M* 20% - Accent4 ef % 20% - Accent5M. 20% - Accent5 ef % 20% - Accent6M2 20% - Accent6  ef % 40% - Accent1M 40% - Accent1 L % 40% - Accent2M# 40% - Accent2 L湸 % 40% - Accent3M' 40% - Accent3 L % 40% - Accent4M+ 40% - Accent4 L % 40% - Accent5M/ 40% - Accent5 L % 40% - Accent6M3 40% - Accent6  Lմ % 60% - Accent1M 60% - Accent1 23 % 60% - Accent2M$ 60% - Accent2 23ٗ % 60% - Accent3M( 60% - Accent3 23֚ % 60% - Accent4M, 60% - Accent4 23 % 60% - Accent5M0 60% - Accent5 23 %! 60% - Accent6M4 60% - Accent6  23 % "Accent1AAccent1 O % #Accent2A!Accent2 PM % $Accent3A%Accent3 Y % %Accent4A)Accent4 d % &Accent5A-Accent5 K % 'Accent6A1Accent6  F %(Bad9Bad  %) Calculation Calculation  }% * Check Cell Check Cell  %????????? ???+ Comma,( Comma [0]-&Currency.. Currency [0]/Explanatory TextG5Explanatory Text %0 : Followed Hyperlink 1Good;Good  a%2 Heading 1G Heading 1 I}%O3 Heading 2G Heading 2 I}%?4 Heading 3G Heading 3 I}%235 Heading 49 Heading 4 I}%6( Hyperlink 7InputuInput ̙ ??v% 8 Linked CellK Linked Cell }% 9NeutralANeutral  e%"Normal :Noteb Note   ;OutputwOutput  ???%????????? ???<$Percent =Title1Title I}% >TotalMTotal %OO? Warning Text? Warning Text %XTableStyleMedium9PivotStyleLight16` ModelGauge Graph DatapDocuments and SettingsLENOVO USERMy DocumentsDistDistribution StringDist for DistributionDIST v1.0.2.xlaSheet1Sheet2Sheet3 Scatterplot DIST v1.0.2# HistoGramDistYYYY   Assets; Dst DstCreateDstName DstNumberOfTrials DstSumProduct Eight;BB  Eight_Percent Four;DD  Four_Percent[ Chash_code@1122b78782b76bdb01ceeadd4d69fc5c74eccdb93368829a3d08e8e10d3aaf35F!HistoGramDistBinCounts9@: @ @" is_active&on_off_indicator:# Portfolio;  Six;CC  Six_Percent Ten;AA  Ten_Percentg FjwODf"\Z2Ш@=\Z2Шв~%#Vxڬ{uX[Ao X;Hݡ)@q 8@(ES݊Kqw;ɜ=sfgggw;9@@\/,VZDPŧ=(&$tu9I@0?C[I(Kw&h&L^]fzdpϢ}Hd1AMТR4:XĬlu_0qߡ=Rq%GRJt1 GC1qcgƄt%ϐ (dԩq,i1rݛ 6-/<-xrŤe1e uc?^U.3F?'1x G=vrӖ֢/ ec}h;`KBwYذH›DAh7>@z$`kg^YvP{#'n@΂7utffv\z 7,L쫾CFY-J aU?6DGM:*ʳuoZQ4ӳ(6v NXEE\"('GHV366 9mUХǛR+jb'BN0IfMA3+r8 Yp<:uEBIW&1t5#?bKc0r՜LRQAr;E#`v7! c!A;9I§B'@@"1R[L^ xϱ3|+d/P]{)v6叮|idOC`u\0o‡ukk(֨y !UI|J^dɟL Ŋn8%\ kX,N2w;2Y?f HIMf(ܩ8_U8\\?O@=NudMvي#cS>0 1_M'IR 6#V&NKX>} 8Zz ?Q]gM:sB`u@"27NjfBsJ;4 tf)Q$ @Vڥ ׃MoNO$k@CA$A!6$)oAeǖtFĦ}ց*t4A T{)hhB G`NKLwa}]q{ȴ> U /QB,%˂(lW\ .؂#FWRKO#x|eק0[=BAYp h=UO#uRomFAɟ"Y ."vѯك)D^=1٥mp%mD=i맍wKr?+Rm\'&%~)CCJCF6;u˹w~I=kQ\BOӯvӿ_Ur!4e|e@WWb7ٗ%uz,W54Hj(}]BiI-TNBg &b_vNQ[S$BvVp jIGD^fےזE*K*dm9: KOWUvDhxK&wS 5kۯw+si|nCj3)1![{c; S<40Bb{* Mɽ墺t1r9~rZD] V?ĘS4s'a a C -!!B5vM'L~h4,nށҀ?[]6SJ@`bm!!O8'GԮ~C+NU)(5@ DZAGF?݋8oRH lk+i$8< L^p|3=x3ʄJ3e7aVBi5j?N;,w"[AӪ[uI'yZ`ʊ6낋 3䑞Zp?\m}}k1̓Nydy߼wWQ9)apy ã<A`]!ݲ YYQᖯ%-u DhW"([릴-%'FpS|0 \:%Pxoθ/]GA`*Gw=S2 (GcuC_{f?sG@1]Ii4uw`UOB) q~L$,è7rJծ <b]" D*' 6]Ϙ] $)d0 bւ ݬ߅c 0z(=&,B߻do !&8%CU*AOHkFz=~zi  Keg(m9ͬ U4{`4'v~MI۸3roynKx灕ح֓m7oq:f~TT^zw;xuT֮1f;S Aܚ$w sg(&KG|g?Eaj,̻;EDJ'Q bynLSf"Bylq"i˜ Sj A6NsP] 'r@=9_vEa, $OLd!JہF5hn7,vG ;?'.|{hwݹ{ #)pEH)tBN5.^[ğV 27,0Z/چiC@pCe,Pބ rK}w}=W([3mwl>EzJ_v%dǑ}Yv;QU;u9ErG~& m^ŎJuy+d-O~TLk^hQjWԦ)13ٽPS =Al(vܧIN|QYh$=7Ϳ l[}bx,}З/#WT9aD|j{3& +3HsY$HYqp; 1ZSN}~Y鼷' h;p DH_/W,)7Kkaŷoy = &a c2OD|x;A(B*0Jc ޗʣ3pz_8KEUre0U TPDV} l߮+6 MQkb"Ao>P;J3*J_v#L+_ق;h}M2ܵFQIҭap%oЫ1 @R0Xb1Yd5&U>ס3)P'"o.)NtX:}Q1<,p$DxPNDE.T8D5E:™kͶrɘ*%rr"IqOT`.¨9́ޏF AnHLׇk_XqqDHXBяx`2]nҢñnUI7|ŲpS4-N|zE[Jw2}|h!K.̛j LdA@RhOێ_ ܋hQ6]??-(C ~ 1~OD>RqS_a,<ދ t뾞B۹ݟBF@,06Gu? Wpo6m7c .bCnP %qy~!+qGqbTNjAA>wegl9;`ڶL;&N{B$H5 9=|+iN/(*7rg4`U)e{1ŭ/q|Y+I &ɱA/ߠG1"!~|љLJzTnL3ozӸE JCO' cEJ6tm3ܾ3۸uȻz`bf&!&óG"s-4\j|74 ΰ2/; ̈́'T_XUBke8oѺGb2w4;c1U\״@(0 ַsS$Zbt@,T%ʟmlg?xJ2_fS`Go8U…Fxq{d'<enX/c+hX`RL;zr݂B: ʋg?P巤& CuSҎ3$f 09زFcyAA'ӣWl:y<4 $c{=UZx5ߨluWt2/G=$Q{-mݫ`E/9S`"Tb-DSٽS监?3IuuMeVr~[wjv<{[C+Ŭ>t}wnB`wA pEjR+|wUs`*j~gNK8U {lsqV# LRbARV$8s)#ؾ4ahq!zثƇ$ 8l ˦]f%յݥ$?&x{ E'hڂ`NaEj%8% '\7ʎ8 d m.'4Dx$eh %#JmGU׽ vZs5>+\l۰=2,eh:)@8sGj2,"kܷR>/MjJw1i< o,V l]Ȧi+J4(yr|2gbm]2%ԣƥ *;U9a| f9,BxU[3?bYFտwW=TI+_$Ox8 7ITȠ il1?q5T %L~]8YDignc3drp^|Ǣ' y"Ba-<(`vv 50u+ҿc+x Sa5u}Laχ=N0̵V= O0hO}S>w: n]LzW3s.yE.51UHԉ.E p@wFi%b 6d6|[yhhm:Q?v~:3 VPxaxR 6O~&ꐞ0` ns.Aep#ZԺogjyABHJOk^ yGc~[įu BXH"O Vg""ͲJv`H>EiH:Hޣ=zJʐ0I+BxZ5o xh^(:v XPk`j9$amHvHFc;)(z@>%;.H3 .;a^]Vk[a?!ۥoJ,Y~tL88EBm1 Ofd5e]jN9VdD~#fVG/A]Uoo/,@x0seZ'K2 ʗD$~!a2ʲH5%AldK>P66-PpBDiDD֠WO s- K6 dħ;| KQx,ŞPh31Ǭ|()P$ [on6up HvyBDfdEL19@c֌* "o(_ :Y;Ǽm$Q7NEmd;2ylH־ВJ$MT%mv?JG#R\:Ť:\\"@EIM4<̙(794/ΣM ae  G6/cosx].bt;{?^'Td%8c`G$Pq#JR#kH34M7Ք6 _f?op5xަ8ZZCж9,Qbc @g2z܈D3t^Y._ϧ~6.igq|~fY6(J F=JYbb $2i1c\Qx=ő&:Yg}U O XgniMld 'V@GEPf0^7sj{YKŗ T.g\3?%A|kfVwu-\/R6N&H[_d ţx|uا=1ꧠbxUOV4R=m÷ܾD9{ e;`~@}5ct'\5,=2@_u<>ZIJ]Gn|ے+v޿בնDU^qLfoz眖ݿԄoQƔgm opu*m0o5-ƼEbtu+\n S~;31{w ˌgW7ό(n􌀱g0)1ѫཨY+JP DCNqfDݗ׭oL})gWk*Ͱ>{N%ソʗM=3-iJP2Q3a| YTX@Q!R`8uN`8;|UnL%Ȯ3:ERT!rL۰b~FHնLt.Do=ј|̧Ey~,.!ev/@Amǔ+Θ4O ^gr4hnҤ-1,D G*/TV}Yw6,Ufs \PSDC@hv'uAX/s \&P~ <@b&X`z'XGu3}y4(ʘ:V,rTf"G*rPZ#)LEOI e{%1c[XDf֚/~e,=~Qp?6*kD x}(^1uo)19 ?i.z]\ a`L}I׌C2;noCltL-. z!6tdT`]}."t7dL6<# iHTshj&Q.Ôpyq ]6y_Y_Q$՘&ʞ /aqXp7o^q;8.>j?lBGU/ayPbUvGB m$r` ,,0w8zV}gg (\^}rZzjh Tywu5(p]'`0ÊrK_v@Zg+:F2_b:XJ$)GI uV$- "F Mʵ@$gv4Vq9~:[Z횙v_ݾZ6F!08 aQTecTϢK% }̶u2(SodZzČ 2?)R8OAOW@! y=בb*>ϳ* a0?QrD:Żh߼,bžecٗqlbrh͸}R$-I)@~"7ɴo3{z]Ya0.7T9J%(:e8z߉W!OjU\^hՉ\lwbN2{wΞcOHWǒP=:R #\cc(}B';dcƇU&:m|+ 2~ GN f1HЁπB|3|yZ0n s]3sJA2}m7.C5&&\ H)eqxeh<.'$fj6 LӤAU1=IE;0+K20 =0DHKQ`㖔>tlXep}l! ue 57#_=JH1u iw*Aœ 7Jhuߠ.:̓ VO]6g@Bw/^Pf C->rE( 1ú7.*:]iuQI? ~.,ݻ2&}YfsV.娼P_3xD g]K$qf&զiA]NDDƉ_G/b~}2+C{+rMSU:Z}F7Q@fyZOnE2\ۉꕔApQ3Y{0A|Ն/.%l SuNH9c'n}{%xAfIhQCoLCJ@򘥕H.4V?m0E*>b9)b$Y$sr[ӠiJRދL xD#E C5 3*K)cwg~a|L>}^o~4*VEV)C[oYØrZѝ)R& i~z:AnyBG5=Qd b7YVcT+I蕘0rxoGU!qo:+`1jk9͛?"%E"^[rLyi]-.]g Ů`ԃ÷L.!tKD&7á4+-p#s3s@֎+zk)ko7iHoZ+m#s)N`$-ha lA%`SApa#^B@)߀#7M^*L2Y{=k=aNӿw2< jScū'rπЊbңwG& RQqzߪ[[TN@!Ssi:ڈ/.l@WDѷ7M2g,bxyfs^[KpMb΍9],xY-:!~CjN9˥6_7<&ni^ V֢kgY/~-Y#)(,iٿ5mLTh_F`h\%g-1XKjEPثorrK}i lͬJ1Xk{L+D!̖ںO}w&m$Iw\7[s d&Z,rRwD||^w3P@65aҤΘ T=M5REc)t{pI  :FHL: 2K_H`5)PUyLͳ`$z yZ`LXp˂SYߐQIC<7iJ؇>>%b1st)/'*2~GnӤ,IYU\Lx/^{Wk#{X+ Ō}~`[\umes3M 3]{0Fs{qRi55=F~[!gƁ^PfY02 @g$S?I$p VN ZW{%֘TQSel>7ڨQ nG3g#si!,i5:Pŭ-&6[K1XiX=`(%Y;Q*d ~"B9ɖ(=iF}Vi˃%yN ^zyr:(Jޭl#pPQA@`R}=qB>:,%}ް|"ޚ,e'ڏ0jFhB i(i{=0({~]j  iBH*k$ r+rGpe "&?| mI}zE q9Hb7P5pB!3cXptD8U8ޠQgUm|2/e]6gr)7ojIK'ʾۢ{Q7=CP9&Ƀ9u56rHC$wml FpŪy͐_,z{n#&=9<UEE1s z˜I]VMh"RB%JΠ@#-#NToԈ@: XG`) T3۫)=ܷܛK*8t$mZ2_s1\ھ}r4!>.<'Kq#v`k}aP/S⮈Iu. `29ٖ#xVYd9'\h]1~XULjfK?^RܶE[5U'~V5!QXfE.m,[!j]I1AZUN/(#jQ̔[a 4mh*f=$kzkPQ2ɩ6qROm?%wvj* ^he.8vz2,WL ,M(iq(JT' XRj;ci4zy\+j1-QW(:o6@р4=#هwɷG;} =6x FS;,V]ENVެU TE!PQ}`Yr+:z ebdZʥώ6ijY2Բ8sOCBm fݑR9˼i_^< $&rÈbcVqy)ltBhZJ1=AfmkDoJVLDK t$ⶪ^1D%?y>?.܌F c_+fu\*c2:Y%Iwd1mQlzr0wrZW)_!M; =&J$- bi i~%w42YF|Ϊh1u.7YS|?SĹdIt~_n-/_crF)m"\Pg A}0C8knzp|\X TX$xC exY)+lpű5ؖ5("Fm b.CqcR`;p0w$'HV)fXe!aLpA䱭 ̞>Y .ן>+c%##⚭XefSU^7 pYܛ/A1;gmzAS%V-VkّyquSP8k+f a"KDh+!ehOvB+yԁhPy`+:K$]U+](}f8)O#KwPI&j" 8fW Z{ѽY ҷe-A>|6.$刀ke_+mLv C?c IO--TI:m,Tz`Q-㟒!Y,յTe{I+oMU)CJRamXJҡT~JJSt:~TH19;ξ}|{źc:oy1Ԭ fGWǞc&i9.H8f߽H[@YTܹ~vvPvic|I\L1՚MTΛ{λD5ҲI mm/1UOg}Tm墴>K+^INS.[u)۳uv)</+f0omAd{l, acVZF>VٵF듼eN+(uv8a=-Rt讙9yqʉz₍=͜?6ʿpVm( \꼳k7FoK8TfiK&9QF;vUqD˺43[]SjQfNzgt˫~i^zCwEoW_vz>a:u [=ub̹*[s}TiG_C>eϷGyfF{H[8rlC%U ~ڝ4~1$^sk`9;f~gKiP_w+"\JwQ@>I`Pdanҍ֫ϖ9?D?n*:FfN?;<(@;˦e{r5 cw\D'tfqSⶑU(KyIz5I熙k{M7y1'c<]@ENJ {BQs{kY4ƹ%[mYwO(딒A靴Ʋ{m+Rg7}">FROy-[z!A=闽wM5}VѦ[FCI[]`$} 2݅NgVNrN1L魾jm42n[!|Y؜97뾌7uC6!l)FwK6vxKNWz>'/_ci}9/oȷZ?fa=O%F8=bY֨F{i1;Hҫ=tWElZ~zz][$oJHqj`ւ<[ðwgs^O8fLԍ雽KY8t\ NrYf?%/5U~'1A{ߜE ز o/}aHKՔ3~Ytbyty/z6{??͊5vғ[næj1q}'aоVHC@Ayi7[i{FI~<\M*v׵> 1wZOx`U$٩aӲg@>jlcIu3N=K{:^)1L a9n~9b&6XayOUo:XlBot>lb42n)c,?RW'gVN}js[j>'tZK[9:}q{_Y̓)=/gxA~nɻ [+eBb<:[O l,Mzjv25OJn.te9Osc+Z'N~!>)}[7zLfg_QtR5Iu\-@ݨVN\72ufxm{_qD ۏDk&fN>r;ƮtfŁZmoP3^0x7PWa#SŹ˙/~Ѕ~o.YtPFԔ6/90Ż^o~/;ss)s)amiɿ澫 z6wk^r+ᯬ-n9.oVTԎOvBse[fIҌ*3z39 =Ҿ7>.pdaݭ4cW?jT)0`$7CߤkZt/cXnx7iÓgh|{SH,zVJݎ,C.le|~2vu.$MRK~=?qqr m`Y2M&r9r~Ŗd̠TvQ {B]Y& oAk=vk4.Ī˲}J= _pR͠04yKRJ/cvqRm3tя :aC\v-uU>?35!-|/Q:0ӹ:2:pʳ M͸-H+N6RK'}p\jе{FUc0' Գ Bw͜yͼp䑺eo7sj:I.P7T_{NEF>ǦCۆP=4I˝zYWli6oɼ49󻱞U9{>[Lo۽&򔷽]nJ߽3HfmI9g|Aye2:c غw/V1)/rKf^ =: ,~|ӯ1ej C^‹jôsl=6SϜ\6*PCa_Q;њ>:~TO3OVu`j/yGÿ myK T>NTyU u1<(*G{F:d"6C3y{K>.qw(^V=oAEȯKSG_4旪֡iٙn:Sz})aF&R?0VYfh #ve 滅=mc*5a;*#m=竌v\E^屈ČFXpt ٰ4#E_s~mᓽ_&|:G1eCk[lSJ:\nqeo< $$Ǜ/)WqGUDݧHM}:{usw2{:oV*vPUASkcG_b.co =m|8ﱮԍm'Z{I|UkvW6|S<.|]yn;VX82|XKdy +q0a>쾔iƦ xZj=Ks '=znn-;NCS|Ut^[iVEȎW&ꕻL7Lr 7M8煑Qɺe*SmpTS<4Ej喢 ݵ,gK!󬳥M_Jiɱ.eTVQOo# uso~e7' ٯJdA?M qfͿ6{_8>fvkC/F/u eJ̿f٧蟟iu@nQ1?qh=])Rі=*I.>s2Oco0Wu;dW\2)y:S6.q9~zJcq%{G|>lv Cuψvj_%ieٳ[yS>=x|^>TֿVVXrYOC^Sۦmtwvw<(//3u5+Ko?"C-)Zv6.hL8m;y]ޕqu2!'֮C4y&91[ dkfc] {|~笻Qa<5$tOleAh ՒdziS3~ƒ m;blܣ#/JZnR#`å8f>uQ]A; ?TR"ohͣlHsmzU]ܯt{K9RT ;ŢN(٣r;%:A Zֲr>{UW>R\/?MIE;U R*i*I̢fׅ.ayikmT-uT{dXSxò.7&,]|.2d|叭 t}`fr+]Akг1 d=yªƲ]g<ڥz-\URm>U??#ҷUrEaH=JlM]>}{S-72ǖ7WP=bhw{M U6?bm|'h<<߳Q4[]NCn{.MVj|MY} R~ޚP.Gc]"S彟))Ky#1e^V^YEŔqe<0Jֵ y"aڊ_]qO=gkd(0_.=ZӘNۻ|Sm/&C;Y. Y8;Ud؈q *_rcN<N,E `Ww3e gGZH)=<]*Z3$IEҳ"wVq7k4yv7a8xn'6=P~}tJ^0(-ҩ\cp8 MkkeoL䱼X[i_Y:RuJBG)){kvA;$D;k&Ss/v: џla;,sBܟp2ang1>K))D;'q;t&D: A?BYV lg7qGIx;C?NܟB<ZBvv䄘/,7$pvRs]MZE ȥ1t9| q.w S$шyO'r!O؟o H 4g^*D~yӏBu!q!-@$ϗsЇ~ M؟M9+./D;b~8;b]&C؟J!أ,]҄y)eIN,a;3 1֝$]ca q;y;gvl!yL<>vXOA|̖|i@)1/ȉ%GՎB;d 369.p|-:J<>RBA;"ji< BA;"jGI$it?0ׯw"#s!#c@"M Pm *TN%rv;yȒVP U:v*VB[[<y"J9w@XgIExS4f;r 8аNxO du@KC>}a 2kS:5_ָ1V4Mwqa5qDv *Ľ9~(E:@_5EJ::::GXKsӞ%@ri+M^|gy:/~աvCS\!9VJQVա&!sRaqyoOP7?2+h' E_#Hf_@y|kkԲ $ JxB ]CA<rQ9&N*GYA n~/vIB -9nvX$-Ud`6#t$ccPA]j!v- `r#gnLg 5R,HgmWoc@mxb~,E JL5VtkwX<' $Fu@^5?/BR8j0)s5> }$ !.4Y`o<$ &.oy4e @'/<iA6+Ȋq5>P@] 9f|vV7b(ܼ4hbϖ#eBΦ!w C1<Sト9$|Vc >h|x:@NONFؔɇ@ٲf>@#HA q0@Ӈ]W*i;dPEuɚ#Mo  jEqM3P,|Q/;q|QYj hX- >9T2ܓ3jq\@0HbCHFPUpQDXQeՓG3bdžn~NvxjoƳ'c[%7&YFlO<~14 \ ^ MCd1a2ة@Yw%\XʊIfo8>z)g!YO@hu*4aJx}\E7|6|/lir b͍OhƗH ?ޞ5n< :C4_2-[`hͲ'JA˔ k!cQÐ&}bc 燍v%5(1A"O$%)ln~t;^6HXw#XK X vlq^sp1,HXd=gGcw<خJ< !٨q-rxOl3+: FA)1B>)G$X}^8<5H 5uICa.[zjKM\O~ tRq IJ;FL Lq4@SS3a;5$_(gDGG IJB [.d9^7aln! 5'N@WV~z۠q)'!B ՅYȮB2σ8~o^И'А&+UABfnQ! >WWؾͿ*+5K|Y{,6"Dr(ϐBIKe&*@1#~7 >@M1<6*+0 Ⱦ*`+'gƦφ)4-%Q`!ThBY ȹ)t<mns'Ia hΘƖ`xASWb;[$19nU-+y|<;8(@[ FX dYAƊ\,i'+3>~"Yv8F(6^)P}"39 %#d{˜D0g|Cm}O*4@X[xnksV i_YX=x@by nqYx*ȩ[2ИBs`FaL=b8 "c{M((W8r?г/tM!+Njq[`ÂH  R CՈ]N;Dv';n {Aj^D9;ۃ+{A,r --x:~`RykA)\ee~tBS M0[Nc µ;NR7F18Ԩ\ pty&kȇ$B)>ρ/>H矈 0Z%3)|/z^qa YJdK~B\0N^y8e 5>2I# -@P_EOLCaPWv  1BJ%+4gl ^ `tؾ0"&p5B)dK xȮxxTT́8sY&l3kĢhƭYs) خ6UB#mP$9L$Ȯ*xN;KS ߈jܠ @!&D =;K;/1nbb(N!<=MpLNq ܺ 5->帵=̮䨦ʣbEȜ{PV`E|H[_~v~H/PF@d)dǢwKef 5>O'1ІBdWgK>fq.A}CF Kh$1]*4]AA}1Jhߢ=XYO Nvx_rO^3oo?h ќx[VhXX2QaNҧW"]&kUQ)+4mE=khl(YUSVhU%T NH֠x_4VVh | ڬvjE'kА ͉m&x%mWh-=2[ r܆S~Q,ar@evY+rAc쿀$sA!)a ,DRA-+4Vܺ _i>{s AkibQQi ݢY=/e&OY9wr?b(f-@nuXUT9*m۱G3rLm~ Rh7edvSE<1@VG3bvIv\yy|0/ a~Ps᪀ڣ&gjK9ngJeAE-5 /Y0KʃxYؔSVhL- h@ pF=(No0I A"8cOjuM ɰ6Fu-XfN8F3V4n?'͹[8`6[Ŭ^ hFx'q Of8l0K>BrR }m^~9߉!U~gFiht+?߈EWfѵL>jf+4 ~q1@ ^rh8 釵*o}UdZ>@ Pa<`P ` @0/B~U@=9rm j)ìQ @^Ľ8iZqeU+B=`XyН @ï ,eN;*;6_.̋PRFr6 h4#w?kU,P}e;G"?L$]veT$^߃I$6_͌mƬIJ+15fHw,^y@]~+<.V >˯@=Ȟ)@=ro crF3r qZ>@jf4Q [+K`j oYayk_L(NvXl DvN]u(C-4<rOqC >`y(v'qB ތaW><.&b($sՇC\ S7)}܋qLTA+I}yB؝W^#N"CcM wYVb(aln ߆6X9,ʀ /)+0EK=P <%s*دXxcZVL^7lP\\jfMP{;6/~vX)zF6D LBt.qܻp1)-MVW|gt4"6$09x5 ڛ?4>@qA,èxyV/BQVhY˓8? +G{}IC|dzb[a_x%BCD)h+Aʼn Iʬ<9[*>`˛  c֋M"+9!+0%N}YzAN 2 %wA+p5ތ-`nd6/Q|![P}%Sh$~sC~j0ΉHB;6Lo_?Yw|xr'xF|1PB}y?; fx탄#.w4Z{^05_pa3`o1=SA8cpu'1W$#[/h|5ְX(5(dX#̃čSw'n^]sC}P!\'7ཿ8+[' ϑŸ@ODV,4k.'oXC4[*\eY!s,&?c]b*0c߆\ic" 3.B6|ʱ{@п BvRg'>0 |Q.|!/LOPgs14)!ɞ=*oP=+G ,b@=T8ụo\YGܐh|&xwPx ~2@j܁u@J | |SsȢU(>9'9^n @ >&S81%G;voq(ncϒ@̏o,g~֩>| A}uCM= C|_7>*7ԥ&p 0=j%n< l ~A|8^tP$H,l:sMqR,Y]r$rWnt'^GtHf@<)@תktR gɋCYYɡ nN^1QL?0 -FBB-({UGc?^g$A!k1m< :# -0 S?n6 zsoj$Gc_ `׸"JPCsQE?6 oev.O!"}^'1\8v n>N uC)umqRti>F  Kb5}/ v쀟h21@!*'~`Z$gџٟN<XI t+6m8@qSh̃l?+,܇7qy|/!syYK,JS Ie! ۺkŕ$gaHc<܇~t u*+HBKd-*s^/e!tI9hfmFX*HQ8u0W VHhqjHCZH|H@rH@rH@rӁ5@)Hqwp# R܃ RXNE?>ݑ&RR{otȻҷEU y1G2u4q#K7/:t;՞G!E Rt-MxYK*"{:RG/>Yv&Y` #^ `X2c[#NCFQ ]f P)u Ayg;;u@T @v R佫*iϢgv )OʠBuw{ *N6:` { Z/7 _s-ʐHy^Z5Zp@)r ))^We툣o>7<%/BAɯ)jX]k?BvFC~؆H9*k^]r|rȹ5 =ܽ<&"oZo}Nw?#ݩڔB >$V8؏lֶ6]!&/ Wn@IəCfk1>V)UMLTdž>DP g|`F's?rؼ[fBREYə&I]-ykR,1 qw6:nKȭ~?zbYm9ry!:pa! ,OyqSOJ;=ߤz~ܳ/;Zky2+d~¸!s^1 n9'g=;V %e䲁<{wQ8oCsAߋ~ꎖcAeA Knc6[3:k|lwa.7z^Qvˊ'WU8"y!.µ \u5 ^IP键K?RfSnx{Ԇ7.}}͏_?O?[^/Ug&{!7|#+eƃA?J.^SzBolvۭ3L>ts o^]@}|Ծ⼋Kvt ,oc`IWng4Us>m^-[kS_^Aiy>b:X}k٬;uyuee&x?ݮXpcAE˘GO/lʝ:9d}~i!GfFZDNA[ ;:Es{뎌\(!տ}>{hFc# DI0NdĴjAoopc :.6,02\V#m\3赨 skL{~d)^`\sQc;0NzbJV+>6kƓ3]sJFꙭ޸XEO:Q#tv{t5lC:}pUm.w)4ů}$ۤ]+_،Za(LJ.={i'Wh4Po )ʃ4/l"WՑ>bEs62j*2}`zkz'uzn)}( :{F=DLnk7zQ^/#oRۥ=;xx9̥ʤug#"Ӗ ?nrW|]ޓ7Ϡ{E[oWuKq[A}6&HuWNޡ2}S)}bWv,Sn}6WbMgQ+E?TIn78 '7 6A'8v{kWkFĀSk}dq.9цNȌ.:\ߞkT4ճ4M]4.My-lV\Wٮ89Y_CgipFeҝN|ϗqrs;J۵6 iBg &&7-tգgoapؑEo ,{7闖x)[L11x3Fz| UKq)ْP̟>9s$s&T+4r (3P/=L)|؏_v?6NV;Nfa82Z d50(xX~V|zoo3+}!ڤ[_[Dv%cAyWz/+h+ ͺh94k'w>lMt{ǚ]: uc JOya'_ %94\ϵljc-\D*>}}qlP#޵wۨ?sO͜dl v$mi_9xUez2ug72"&oʱͮxt4e/^@ؔ9ۿ2ߦ+*/{Hɩ`-ڪ[FH* }K$@fkeoL1\ v ^ 222+W˗ŋAJJ y&v8|0}6999ٳgÇԩSƍ`Ϟ=ŋ۷o |?wށO'OM63ݻwAQQUUUÇ۷z ۃC`ܹ޼y9Μ9> ?_ ĉ޽{[͛UW۶m.];viii 55۷CCCon ֬Ybcc'@hh(gϞQQQlذ[]deeD~z ;Ӂ#waaa`ɒ%J9s怣GǏClٲڂ}]vݻw`gg?0w\ЫW/pA( HNNqqqFs΁+W:8@@@pqq7n˗`„ 3dff7770~x|r0j(`ccѣ̙3A>}@tt4>>>`޼y`ܸq0 Ann.(,,ϟѣGӧO'''<==+ I^$d$/KWv1@^*$U׼GٮWwkyENg 5."cرFJpEfQg\BEhl v.9 M~L3QD@K>{ڌ-7+ˡ5 [}ov#6;q}r^H> IeKmIN]Y0Tۇ÷+K˴Vٱ]ˮp-}לIIrc8`}f2DC#Hzn`}w ą"C^F=}lq}@OmAh FQ[ e5i6rk`?tUf_!`%=u{ҝ;Di'5ҫZxE>$l[F L4`/뷌3{L]VJьD{I2hjp$03!e:afoq0f:+JE~nɸ/_>  Ecp.z0tE އH-KVs`0H/]oh#"]90ik`>DއA#C|^ֺI q0wu: eit#q`?gE|dڸA0Kn|B6@cd}p9=;>e8h sՙч91ISk76:՟ ҇ișDrkX=z3f 5HXL=#d8&@ytCXY_m o̜J0,k^rz#?llڵo^CGNtv-בuپ^>}۳7dHh##+G'qoE%Vwۨ*a-E"I]]$M!5B$}Q}KI$}AI$}AI$}/$Y4iY:Dߌ/=C 2H ) 9 _`|3J_f&>ƫʚfx7ӐIHfoo]py73~ - jfp2X5ss:"5Z\mEj}LҵjۨO,u?& % Doj ,#_0~ &_kE`L/P~<''%C_8 8??6+۶߷heEiDBEVFڀ q *ۄTħJ, 4$"wf2`Òa }$ש"(J{^é>>^ Do$g3jh"ܲ|}AZOUndz~ l߶'} ی$t4 CeA@%y1͕i9#jGkjzB/)B|39!VROH#C[v3;U\~i .dg /AW[K]U΍0eq-JFh]'] %OwE%3]mwH_k/gGW>-f|uW.bBX jpTٝr1dYc]o9vPtUa5Ѳq˅tqCZ 1g2u>4!H01q4ñ񸴕9S lᐪa%!^pajhh\H[Ou2t1RV.RVWup4z9gz{K->*u?z0DP”D[Sjagïmjj-a|cgmN _fAd*`eNӾCd=9qXG틳|-}rz)t "heÖc_vef^\ %{ZC!Emdn y`߹CL-l5fhwXlȖ?ZA}?K,K L:7QgMljyc.soX`yn3RJ*CY}xnvjzv& %,Y9m}60{k@\߼[0 Q gfO*<:۰ b`(H _F4v]"'gw79lܬ!439ꨥK]I1 -[đWX`Sy6un;&X'퀙>+ΙGlءof)A;T̼W(PB+țT+FHpy?W-Jێ$wQ7A x"GᆂE@v=5[ESS -} iteޝvҢo}8]|=7QX-fM۫i kff SQ.c$~rచgM&e,mݜje[ZE:?+1^Yr)$pfBc*,fNO儙xfZ;J3pp !IF!2 Q`+)'&U%,=Åtwrxfe'g](*2[qʓ݌OupsJ,NE%ҬuSoT6S!tLu2݂^M7zAjtZUxY3( /d*eiB2,q`"$cE #iKDf~WC9b}yUh|pHBCɣˋ?8%9zXyO|,ıD43k. z4 @$H]P Wh_ۙZz|<̨_>~rSf]?p։Q ~Fbq{V ;rhAFIiU^V,kN]RuPEnI+ع㢮a n 3ݿMm 9>j5/iWGC@-#k ]B0c. 5$-KFk1+\V엘)jũl.Qk_e-HaEǵ ;#,o% C4JG^&8#|\6@mx`.)jˆ)6#5 U4%MH oY>Zm;RAMNwqJ+۟¡߹Lu6\ PPf'8>&)Šy!F9K&@MAk d!2V;Nƫ7+%!b2+}@+:RR}!jBTUhxNK1UWbW3~BAC vNbЍ&e7o:T!Ri&Āc0_A''h$V)Hy >R6n^B2J?b%} T<+jd3&[fmRKÉ5CTy s9'!(0!ƝfDY.`}Ut rVHag؆DܐSSlo֒ƭʔu<S|xv8b+N .q=$ 7pǭs%os؇xbq'Bo5RT!5PgԬx])Q?C]_tD2+ΐlX {[i\9Ipr,v]\PQe]l 1f |mM"3]$^s ܄0tܭ&oU>AHL<\R@_»I琑p}zg]K ~&&5hY瘸!@}٫,=O:OV"NAR< zk E:l9:Z,u0!B_UM6:"WbBWTT# Zlȍ$oj@1T/'=}7^Aֆ!Ԭ5k"Mws۞ۖq[I1C+tFoaapaaw[=E:JBlkߢ'medaGpmiFa>$ؘuH5z7\ +7mwQ b3{2 3qu%˝~\|?`~;p -RpV "SSHJ EJ<%v\~3@"6cpVZTb4_rr|".TF":b"}!VQs3,!g歞U{iozm[{a#u =JfʔtErdw,q&C;C֘uZDM 1,kb> zFUi;?'=G]D*;7MI%iHU$8^7j#!Iekj +o`I#1zH=Z{:?ɩ((Ra*Xg))Ȏ/,/:7y&'W^[Ce+eM顎O ׮crQENm./=]TtۭKBn^mlmWeUV٧b죮o˷ b [[jR5/6x[VeNn$1<3 GIR~3eiLDII8!>_xW&I kzppJT4ܝQDҒ# הV6J,媄8K9 JJ o˞AˋCjN0t$?`-4D?$(4y{ƝfT{ܧq~ @Ck\ζ>hgBD s~y=:ZSHr]PI@ -0\ȕhFWC9ŧdߙT* 5gv1간h*DB79?&4 4 #KW(/lMK@E)*Mk.9wCaV\xR!f&4v9,i)0SkGq,KkIQ\ )[e㺢sU8BFV3c_NB"8`wޙRpybQ&8UGiTn6#lx}qqki'FeukKa>II(9 v+S=WSa bVwɃ)Ú_NH 9[@y1`q5=MjlhϚ/-+_N79:qXۛ₝Y~w#%:}n@ENi ˣR6POlK ovOs/Kw%ժ\N(ץ n*̎rxUC/ɊJ 6>@Lov;u;!vA5}R+kxӣbBpƨ}G^r`+V9EXڌ*}U k&)9ryy6¶^u(Ԗ!5{^o$'.TpnxF!瑆J|mQQ[s[LLֆ8Q񎆆*&y;]D%5)RQF1AN[ՙ<5iKUVqLC3oAda_Bߺm);sc#C˵Lu:r|b."~ _,oHA1m>酯ANĒ$ۅ%z6ivLoRZU9 ^sA=iCď "ŝ밑QsZzo=AÈ!1]?\}dis[a?E /cQ+Rg.ju;+*d;1NBbmISf>/^pyz/7rt\`@ +9 *lTI&.%Iʥb#V&OŘ¾ɽlueo:kT)ZV[ɯBEúְH Q/㎲&s/`-3t;]0<42Q[JGKQKS0zeB] {к5"L>%^I3Ye>IHBKD8F}C@(l SyoCfn' dmRV94d ȹlrgdm21oYSgWRZv?\\T `},Gks Tlcba&6!qZ[jhED]oZh\v?|+B5<&H]كۏEgOӗ*[)/2RS͂8(5'u=zBR(s{|QYYFpV (5%y3n^J )Eˈ~jpЫ^ rk-E /Hlku~pqF-Ǡ߭7YH!C ylczzzx)XIIv%uGηjkk0_zs"F‘xu'i$:)'>cG# v etpH *Qm iweD@ Hc8HMRffNX}Wb7ivfc"heV$)B#wlXt'Nxa=5r]mN0L+3޿4< Ձ4:o^eeeQWWR2'86ӆNr!.q* H[CW8yUƊ+|= 7K1M4*}F"h' 9 #>idO'̵^)1qɲ^D-D|m=27%Jss"22_BP_gm.NΑeaR{,y"d(ڼ_/V三: #yӤGY9o-+kch1 }Y3 ,̲I $[˩w趒kêO/-1 `4O~{W8U@hMa2Hcڱ->J؁7n,-Aq,'NVTq;궘Y}R?Eu,zϦgZ5T,vQ`ݣ+D[@([M .u%7p^yu씔}LjhI/Mz-8.e!0M5 wvrNՈ5h|b"X~NsNNNP4 rsb9ڋQmׅݮCEbbrtL 7vFG᫆~7֐w|Exxw_ JSkYg==Kp6?`X+)K}xgbgz$Xsn ݡt[{ߺOƩBqw[MpewZ=8xbOXZ}m{o/8ڈp(V8/\zu edXm?k{H<<%.&&NՌ;!t&U B:uDF:%Čڭ5ofd AQDdD KJD(,vZ˧b׎Ddda5VƂ}2&7/sswz٦0%)C}%73j&&S'յ⺩WB#UL`4Ջe'>hNwwå l ?Xz](ޭZO$"]depgD%gر„9:^jghfSmH =nIRTTqrZ<#EJ-[Zq[Aa$AE7hw^+ln~:A=w20.{B5=9Ʈqp_[1a"/Rpg **‚Ki@"E:j9_"yG5n%bϠ7)#hӂ8v)/йݽ"qQ8ޞtdIPaT bT&W-*1xf@Z(U)BK5]G6?[Aߋ8j_ 4<>% "D7%f p2߸D]\X'/3xvȩ,"CTT4{,SC1%;Aq0n~uzS]iˊxnG&7%7ni @LMÁa'Bz#]@ggk!H6^5,SuϞfm>]5.9|6Xz'ぐ٤̙FA#T>&#SD'Eq"mAx!`p M\vėFROqD 0!|:#4$.pԇgElƽ"IX**fFzPư6UAڀ#v rb,7Q!0< tRMTL UlHA5ɥA\PAL[E}A<{}Մځ(N̑( X(cץ\{yKS۩H-(4Fʂ&Ҽ/(-\fmM^"0.-QʙR@OG6]# ִW￳G[=p ƈjmfؽO0n/XQO:; t{q7.cEGyM]AU(~;$fw)UլH4 sq]` &[;JXϽ쾖 D<\\`B򢢑^$O( gp6ȕw 2Z=Se΃@j4Nz/k1Zpt;tԿ1)>$*;n` #+^A*\,.$QCc mmB.g:?Ղ̣M3^C Q(^AB ,7v13+dLihh CUo#*uhpWDeFHPEArһOK@O!$s+M/<; "U"6??(lkWN(_p\"}OOe3TbhT#ȿ߉_##" L; ׺(p| Mr{齽599~GGoC%OFw uO { msquzSJ %zǫn$$۫!JCZrDMMw>&--]fpq{{q/T,2|9 :7QN|~:Qp'm!h6^B怅!Dلbxn '?o(b k8ݐo v2`l62mUUc߾-V_]bI͈52gyB3f\xypN98O@^OH)SaW3{X;XnnTؖoHHU[ݦ.jjҼ>ok)z:uLӎeYnϗ#H:IQV'5c%? mOb}hbRETdUn2nVC ALvfn9qjOEE&9TֵUvJmSzȨ?>8}KgI'L5pӂ:6X IW-,,bmy;xQ 5H cUtӂ΂Hx{+.&ކαH8{lll,Ep."#M4E?kè #l58|\f4%Wω?uR|ڕ;'\vnEoN+ю( r}M:OZڇpBDwERMwE`!o)7گ8:۳Ut++r$EL G'LfM]UpB 8-?<mo67՗4dz'ϑ2ʦ뱚 p Z so#P65yD!jNZ8ĄBn4R-W \p㟲f3&1h9r9]ܜi645uDӉh(!=-`Nee8]1qBH`8 迟e>ژ1B"ޡ*)%fSDu}jm¶x"uk~~w@;.KЁR/۞jR{6МYWnmJfqf\d$$}G8k#q=QSSnmvR'$z>H+܁T"NPZs_:Pz1?]sҧK$;M0q W%!t(|mm.]G;X7[}l!r33̯=?P\RMĢL[ml\ܭfu-3&{9CU ϕ;;EAk8oHq&{4XcJG%8 [ZX|ȫ6x": zft6h\5J'n(HgLSG9\Zu;&ܭ3]Uva3HYlCazz]w8Plc\vŲ&C qbH{ͬ&X9TG?˚50CP$$܏NBM__u-,:;WYڸ층k4f]rLh" A-i=6^u:M\.Œ>[Ajjee5'W6&PZ,rw%CeBMp<"_V ZlО?Ade'\F[JZ%)(>/{ƞ>lr}VTw8naW!kzĥAVݶ&h Rƞ 16^38vZ2[oS&Y.:1s27~1siha"b5Uzl`BITMA /Uվك' o)~]/qe0 *hMf #GfP`S3_>|6xsjsAj..X=YsR+==77J@XY8eʍ yNPv˕ %;9D{,=~G3]ۻ'[L&0ZY8yˁYZKL.Z{~MJk=VRlfمy?{AjqD8xK5F_hog-W43oIas}"WǹT\\eN.[rn/Y"+! )ӉE[p.tŚKTF"z*" ~ձ1qj&gknK8^kIJ,wA@1jKln}wH\c1܁9p(pNhf=|ڋw6Bl!brܥczn^/ Th_n?ew;V?w=/=AWCʙ֧czbpZ j.68n;30l4V6S]p769ln~T GxBh}|t6)jef(o!zP,%,-!|fmex>Ne n1KZ' j 8=|_mW-&CDt^]WfB$mUN+5NA/{a eҰEyßCmdL8ʁ9]$wQmdsS λ/ͤ0q\"(Wh۽Py ^eus fϟ;=kGٜh(_;r5|'hYY90nЕyfʹ/9+ezƏƤi\_K#[\~j[infKþX5:{_;?+ñt釖"Byó+$.kG@H͎#Ez#g5q?J𲣏yIwooS"'MU{ &ZYK<7io86 ܽU@4OʷMHSϓue?)+dYZmO͝}&%?iwDM 4zCAAOOUFD\ppFσqF2^H|✟-<ú_y')l/'+*-|oK !suj?w FN6A8;OpAm;Jfsm{+T`H$hrfG cqөKe>9I\]Ƥ u[[OP b-7(ShU sTz?8D+u?% X,1D^555ǔT%ҟL>!HwIj&7@Q:dh$.,߂ ŲƓc5i]~?_ԭ,.y*9@R"EH?2>hnN'&٪am1;<`lKӶbsh=/3IR"jv<|u`H:!oJx.:4*]O|nv{.wv}W9Sh{ '>zӏ4^{T/{8m:TFB:E1Bm~265u o A)rti[)ur<5-Ǵ>h,iـ3gH*dXpd%wԒí6D-`ln_csٓb`[kП9kKb!"Aff X,G/Kwccs?Dዾ|-y _E4LdF1ah0+mgLvlZ"\e~GR3/\b=6K09Pd1c~JČk@~ALc͇˅Xњ5 AESR7x7ࢫ2 ^=&yR'lپX;lRaoc+d8vbzQ,-mDiZ;Z7bI\ʁ7_. ϿW#>팍XAjcDґX49 =w΢ķPczpi5zOM̌Oa&W{GUq%(\A]ђ+RjUIvZaut97DP:)GTh2cz߼y}|[s9 H AAAך GE.Q̙1U7;R7iˑCd pn@韛~N3sPVWhsڠo>M~xvdG\Z~V#9qw[2(Ӱ~V9,pgE_lX9"Sa-~}?.h(NJ{[fLk'oV kiuhl3v14)vuv:8ͣ^ӝ %Ċ>7a5_4Šm~OB$lرx_&mK_VAdll͚:aIt6 5Rٵ!dϨ'g-2,!caNq%*(ߗ]a||˾ιktwmO9[P=;9DM W #‹$V=DjΟ(eWyٱ/t%/}vx7-37<v[6bŖsvw^kXGrwɘxܔLw69/3ե.?8r3Y_}xOyCʛJ&RıG=X{[v6O"LhOxQ9ӯ^%vlFkݪ.;5ן-ߵ&Z*6Huw^6}`+-=߂?VVY{GêTmMJbX+4[Fl^mJ̝a%>aXfPɨ9:/I%;.^Tmr唨7zsC]¦ |] Tl]#3s0?<=[-z*Q%swP:Z>ߛ^\:ϫ=C~5/c[sM̮ .k/Ҹy$sUaeɳƟexQSsE 79WjmMpō"t4?HV\yq?1r8 o4ɾqkg\F[Fh*h?SDRu9!:zM yѩ+/z0gԆdJpP]M^NV$7S&\zw%tω }k\H+!O҂g\MG{V;O}om)6FTQ?nHC\yήb4mKm$&_{1Ho\ݾuDݻʐqAO"g ;m^ȥӦ'jnm-1}|^nxr( ^=/VH#`J"bϝs];K6aqh&.Xi0ٳajW)h &Nm3Bmgl.w7C l[ o'%,A vz6LG%9kؓ^OEե%H7E6N8su%dS6zo?{ՃQ7V4)~ꂙG>9?<Ԛ,.:~C8@U%6TjI0'.M՜₌֖:5'I%T k5k %Ȅ_|<޳!@pbOxL(.if,%++&ZTZ/yM G|nVzJezMCd~_h;7xw$w;ˣ)be=zUFrWؠsʙizYy&ddL\1W_;p5-,ԯ92yuJGeYOD7զfJe=]^9|D4Vő8;,/V_׮]j{Ԅ%?or7UDZvsϫ5BV,*ŝ-NRm{41BnwF'/>sչFK}tč8M[=Kw}M> h+#:V'և,R䐛L}OYHl9<1[䗲(Fqc 'IT;y1>lbGojp͖GRU8^1Ys 5NN,dhKtr#fjڦ}{Ggu#`ܹ>B2ߜ+~kpQNZV3n7ƏҳT񐀏KVEU6yfW\'4^+;q{ޭW;2/Z*Wp'!v4^Og< cQNmrN 9>tYRRO~y []]=G~FM_\_Nt͛5;GxF[V[)J]&歩顁Y,e\nbkSsΙ_=7%nq/ToFazV_lg:E{?h3ϼ*yS NʹTu.-n]2W^^/7x JJ?[˵Dj(#wp@MI-;%jc/{~Z=Iǜk?1$a<<<խ8S׉.?hؐS.""bYYY:ܷo7:[߱x⇵55zO?է %>1lnt}Es͚FFiMd|ٯ#\^ӊ|f 1pà9vVD ΚxqX,aY8 h_-8Ka?wђ1 *臺/I,ԠR?* "Ԩ5PܛO'3/ǪJcFPp}/8-t!))9V"s;-YԹ\ְ=)uK(x15I`KJz0]]I>I$ 6?NuiKJd]{&)GC}b8 davOm8s4˳[zmcDA6EFO_zּqpv!\ v7х4 !IL6 rʗ N9亼rJZ4ڝ T rMס-!d#J4.f,3p_ݾ:IOlYlBA, D˼h3/lZ1 Z ußB;{(XVLZ~cڼ4o)nß{ uqf<7r|ov,qU =#7Pn _ 4-hZU09݂F*A`co|=fH @N gGd?1gAO1hrö8 /!Dς]O@@>C6yDς]yg_maAm0^3gN̘U ]〞as} y2.Q!Ah}ߴ[QgW3vArODF̿"HEFH>S b@>ob\S >?(?y? S4,?IgoЂXqv} x @'?C |)@7Y3XEB-ov BOӎvV yL겪PN Bw'o=7' 9ǻyavV{fuV蘻d P̊hak{Q6L#΍ŝ oPE4 |b &=+@.o0ﻩFs_}z'w[Fs׋7; } RzֵF(/C\lB8,M +I uHV x1U{FG'c mfֹcUzF0Pa(G&)=un_hX@!G&c=z}!~]3VWҹQ˽~&^E!Ay@_΍q\{ǵiŭx=$t"DHrw j][\sP!?7吰zV_G*w=׆K$y>.St{D;@6_Oj|:v`u v4y`_27 W_\3 dM`yBǜw}~g+f\c*5W)(F)\i7F/~8-,o(,PZGeD plfRB_7/-#BF 6+܁h=` iBdGsx+a^#wJ˘;/o@9c\Sh>zp}`dk0D5 .[7P Ɛ<0ί{h76y`P:(tp`y`R0hjc `*-T)H4vUvҜ@dŰPo~y`"hz`ys4 kX:&V䴃 w2z` "~ =:&4׵z:ڝ ^'ar]@>9H!2' VȰKnDy}"Am?#zxHRC/IˌA@5bUJ\bYe-A/dh!ZwJuiydž\3ٖBGi-\ h*ϽmF8ey-fнBr-qVW'#9ݻ8>o)3p]__cAԥ2} nA_uyI < M1д9ӲW)YMwМoOe!^DCNv2\Sh9PoeqIowm}[}o@}Bׯ9ke4 B׼ LTa7x5nY=Z+A@hpk_' 6R@MCym;ŗ1vX3g| cm]v(WC,󢝌)[n sn@ű. -f#:y]._+ǟ>`^t)DKj}yU|i -> m4> `Z.r{?s Ҳ~mLh@ճݴK{k0A޶Ph4k5mw *6ڣ롑 O  @4qw HAڶTo>;iSZtvշ.Pv0 &Q@_8HЯssh '4z gE앒Mg aq:l =g0@\` |Z"B2~,8Ԧ< tYw\1A:X0: @NrExq8u l"NDWLl\y^rN@=jNDWLl\y^4K8Nx} UگKv}_5%K$%EI!B(%kDhQT$E$KNJ49ϝ;w3yg0+WǸ|= J05T>"qv`/ޤ%/`f0Cz0#%1ˏʫJ\Ky8Oi~4ևc1>ǂF+J1JVҫmn_/mn@}!?򽬫pFaX//HvD[s+1-$VSU_y#|:[GoאsV8lTu4`z?ytc4USi ϓ1хg#Dk>y3o) "4 U)*ikglˠB|#z34jqݠPw1sC%'Sj%zo]l>:ڥZۊuQ{,TYc[L^KKfRlMoͫ58깍^_׾0Qtݏο˟LOO.^4B'1f%i1󳓋,<<UxEP>ַø-MF'F{Ytٙ4Z~'1O3jccR/;qm Jڲ@kjgG+.&vyBwQ2r xȍmT؉NfhOzm|1B9ғĹKۍfS e>~`WR8(J$}q͖;H6m{{ϨrJ'4؏  N$ii"Jlh~/zWĄ퓩\uz:ʻz?aRBigi}uLl3CTZcM[M,i'dgœF㜴*8(\b}m~{jL_?-jņ.E"{GӬ O̻9hm*JN_?ꆅMiȯc9Htsv4~r+ _䭛_>0x6;E8hG{]FΒGRwlEZd#ie7휏X:snXb޻#Ctt3Rhn{w?}]paӥN;؄%(?nhԹ.NA`ٜ5jD;*d ӽ[ CxEbԬ(싏k?z5s{K1X.Wl%|Oj.f$Ƹi^\2GOp Ss`^4F7qw{>onN8y2J=Cj Kƹͮ:6rqSOߧL #Dːti5-}t~IVNKZ"Wՙ \}@`S{/ ֮]-{v7']\+3ҝi N%IY2ʹ_B.^Kކ`9F̧̼y`T~_f^!rDO;^J˓}ݨvr7Rpۙ '"b{nOkZ:޽7qZ'$2[ejBwT ׻vE{ʷ^z :T^{嗈׸Z,k鮛&$檼*:UVa< Npp-5,%͊e`!9XCmt7SS OuѰ]$|)CjZxG YWq,]J$8Kwa'eRAOK>J$v+ޘdpθô7i\' gpR˽cs;$xR" C`ϒd-K%r4 JRJβ9)xo۳ }1G5e49\A䕊m&0L7(NH z+n~Q̅ {d1GzU i SG`Koۿko i8+\J֭>Ƥsd ;[b<(˜| \:eRDKRcÚ/kB ioLH>ci<v22kXX}ZݗUoC홰͜d.(1rfi P׆TeJq :b6_lGc;<=Se9˖(|{ְHqWb{wFn߼bٗw4 ds̍_%wN=6g!4]&Ev`@ dj&B{HZߙ1{zC'1CaHOlfdߖ} -}!cHP8< Gc|)}s7n;Z\,# ܴ &Io7(N 3Gkl±7'0X>'pwTJ8WЁ-ռlR{k(}*IFה6m9QO#n>s逝xp4b26"]CWQ$<+%ӆ[8\C7.΃DsQ=ۙ>̹mDm }GqS.r`솿#{%XCo>oɵ,W ,y4ܩxG_pR`t`lį:J(@@ཙ $[!L ̸#K_,ӳ+,v;7vВT=8$yi-R:s7o:anN:up,ez \T&dJ,, ,5lAG=^+89<*:,m)/3޼f7Z=sqy1QQwUYeNg[ur{tcCG]ҥ0][Ym|lQmole'lDl]Ȯ) Gc8#ؔL*Sw=~QmUD!l٧yQ=X,跕v\4 u"gv3ۙ;Pu7 |/rO/f~1-w2p6$k3yYEo:>ϖƞMy2tӑ"Duj>CpޤWEAB>-Y;d"N ~b۷yQ6T.2:smT>2W_t/}N<3mv ܬuhSni>/FGZ).a{JRu'+y LP,֙04nV67d7 ZcxcT˃Qr !»ed6xQ<_RŎ}HA7'ߝh;~dw۱gSZ*Mk2PL٤)e!n4G0|V2D8zN:=nA[S$Igjlyu>qna hͭ}a]ַ)E/z804Gl atJU;2]~BW`\+wchoeGWP0 *(T9#({]/R"17:sAш5UXGm@FcWۖ߻tq9_Luʉ^ΌZ=>r;I=/\W坒fǙ 019H{hVGOUbl! :cI`-NR^`hɾ9q?DE x҃Ks]=iJGgwOvI;M~*zQOaZ" m »qbͅÊ&K3UV}(oZ)7TH-bC)f7;z1r$wG! 17Zgu 픲!Ș=feN@l-_ VG&," Say=-#˞6NS|VF6 ]G(P>! _T§g9G \W;S&Cį72\셟{r->qZ!M?{ wi{,\Jq.K}eAܻl=n h [+Ymm]n P8krRSѵ-HAyn61Kb* ;*.R-_O1E+/k, ee:&|!5=s@Zcf[8 x4۰"z'**@UX$^Ot[]prlиI,,߶;`bn8!'ᡨA'' w?'t<u2.vhNU9N҄ՙu’潸,mWݦIgafc;ϫ2sΛFt J]\}3}^YZ5ׂw,.Nƹu:C>JSLxuW]- *T"hǧxeV WJ# "` sC2vlwfߋfSIpk:Q,R׳ӱ댵u\$RDUM??)bq3[xCLs!='gI}R`iIg\ˑ _0A3n[i$!yQ-pK)³s1#w/+mO덗"dIO }mWwMŊ Jaml݂j/+s$ulS=5 ]oy#̓6\`;y37IPwN7T ~Wv }^EE @gGKhBa&S2w`7,Z1l,n9-Xwe} n\=ML—;t*qx10hqu~Peғ[tސ0ýc4['n prR;R1q.g@xP3|W]fj#%`)?ct=^΅"1Ůd$Ȭԭ6vٖ8j=oiCrOnviFq1帔j5PW SQ͹lIbHq1a6 / O1nyvd/\ vp$:I0#C]ŀ,aĦo;v<P @j7. Fa0\!TVy N'nqӼA ^p oxQnV& A<P҇=큾w_U+튼*5ə9ZVHFKB*^25C`E3ƒ u !E/C<5cSJQo`Cb飑H޹GQYŸ>U6 vY9; mvQXE k+ v wkXȺsaٻ5ݴIabu}Ł|-̮PwT`XwlFTLQ"[yy NL4jn}Ej'M4ٹPp`.>33D%'}E ~LO&=U;7Lb8ڛ=e&LguAa+klXo4KSϴޯJg]`\v m8DY7Gb^ia ?e:ku&܂M6LKi9IDxQC2"1)tyoڙ[Բ>SojWn@Mr5]"Y|L=U0K&)Ŏ7ղ:†p3(3C9I`34Bvǜ7oV(AhpJ~WgSy4U6ꮬ!>>-h\;c Fvk,hk5K>r-'H)LtdULz"u˪պG9daN=Ѱ!׿rWE ȭ'$+daf^FcXڂ[k/eZw F{!XNq T_[f+Woc9rJ5H+ʾ잎 e'FG4( ̚5؏$o, ? V@&kQ7 AH]0J|3YI3>撬|4 ]ēҫbgN$ScecIfߩ0~k`~f,GJ߱OkS*Ҝ_QԵ9(n C$/DRUm ʫ?͐Z-#N,Y 7jIoG6( iL{v `v&gPnxF*^xX-{_L9U%}q$Ms'FG@3lw+#(0(BjW#f\x^$g*yS{M{}H NP" ]9*_xfg\I^X#|&~VjFgV$L%Arf E/ѽˣxw-t-3D[pn;eH߼_P#с[&-0@Ɉ8GsS'<#sN%p&Eo@^#h`Ԏ99d ~qw׳;w k&iW4*u2JP꺩g"~3(~T@>68~ˆ ptt Lխ Cyp C2z͍/zyH;ݑ _: I=ݦ/1YP0#'pӾ=f T#Q[LKdw}N}6X?M1D& 9dž:bz^nj)}}%P5A d)ܾz1Rp.2 9iW6+@H;|%@a 8" )C16Om/ϦkKvHO0mmOcq{#uB$]ᮬ0}1LG)# Y<}{^BEC=R wα&N0gsn=ՠދ`gysy)L*On{,7bgv}[XV(< .9|="YCc<9:ť}4X6mfL0s+IECcN#N/>DkiTJ1!;$=R+ztVH]w|pڌ ڼDP6i(PH>${\PwL 9~۷rY=jZԱt$ C9֑= #DᆳOYr%T>lNlF=|Y)z":kϸJ|@f8VCKb%l=Ύ+[V4ݸj%]Sլrˢ:jã[+zC ߢ0*h Z5r9o!N=ZKyrջħKU9=3%w N]ld8"$ݓ`қ޿g>~,⺴́ciÅo` LoS$9=UpFk~ A~<_.py/ vŅ٣؝T/5  ae-O[ajB$oY*kZh‚tē=\FY|{‡To=JmNv&ŀ>}[1&A1V;$[[U)>F2Qj@C;+Dyb YiRf{KrЍI0/?rH !qxݾ~* ScU>n/!j]lb/9Fa;z0Kro;zIqP*2HXLľJ'`Jc3ȟT@9: B PLPNbx6H Ԋ'=J<i`2b{v<=mo7'}lOcmI ζvΒh+ _C'yxB\;[ntf7VU= b?~} u$ħQb"gx'CuPӄ]5}kك>xe\GŴ'Bh9cbڈm%'Ph5lXtŵ۰+8¶{}}bIߘ3gjL_NS>m(SSTV Da=v{氿3G q֒RR"3k}x 3C{h ,ʠ" 6.y >+cԆfB{sOs %r-..@+ ԯhK9 20 )Ǿ r2HV$[L?j~*ޒlnu[o->+p@(Zjdžo..N}ON|<`Hel.#Y>ȷ5,˲[0̷|k+_go~sYWQl`?.]Yo텭o8Yl-c9֒1h 5Rk>|Vk闵>^֒`wjg[C6^C=;%nAo+2Ϫlj :zk/^y[.3٭U᯽/"TǶ}vW S߃ soo uRO;k.ǵ7 oȻ_3inhZDm#a/gʟԹ]56C^K=ڼۼ6oo%4l.,GM+P׊_7\=`]br< "Ke-#=4֗Z#>GkN@ VPe4Fe9\'b{n !eڿʉ{WMjkq}N52[.?7^k@-Y˿ͅ8% 6+| of,@m_u.X[ ~< mŶ!āo#.Hyx𣑰nXAB/=dW|ʁ_Z$?́ssrHXMG\ $ V8z^[\zD3\@0/Yïm}_ˁq -XAQ^́pZ\?w_7k\XFZwu%M>9zs_;7rd=;}l2 H_B}Np!Wp@@s[6\?ͅug I<ZXbߵ4>G'7PvU5C9s\0$WPXj_}~ϹW ̮K,=7Xk9.,{?֫ [g+W߃_t#A2~N#~zѰ޵gI߲+>Gh$ŃqirHfU(/9~zb/=4Ol8WUg^79^y0$'ڄqa}#a=~w.w4,?U=9.gH[&^όy=+>ךg~OG,IF\=[?%I6a\XҊ-2ֿO~#4SX~ _!_?#X?&Ϳ}6Z{G_Ζ O[֊ٻ25K{8.5+~LOgIWN\.|[^ϳ?_H_>>/p`)O˿YkE|&H'.`~'BƎ?/;?_kϝ!wڟi1:?;{~Mjĥ, ޜ ?zF3א:Ben?&@VG /i5Ӿo}l~}ɿ3WEÏϳH#a}/_{x-,_,iŕs~}`';?ޏm3AҦDOό% mVXVMg5iTkH|o ~4SXk4|hb-J--'a_s`˘DV~mVt|=kX 0c'm,x]wq*>7%,oaˣIl| .(֜dL3X뼵+?{<㬦I>Q 6*vZ/Ŀj4&ނ>3_¤1Eǘ 5 P4ūOk!rsm}+gSx@-(}UZނIUhc/O*]_;E >G!NeHpY.46K26w0m,g"$S{QhqA\FO~{Ǎ|>L]2ALQs%(,-^ApKwuT.oGy>H3.iJ >*n*>IFHD34 KW ނޢN+g1V[ R˶bK,^A3Cq: ͯF` _ wb|Oy}Idvvzjn@ݤ*@Af̈́iڟ+H6 QKHڋ NHPϘzRљs#Jp"G"8ֳ]W_i-V#PY>?s`7C*$[J(QMTi W)ɠ%:wFNN KB=E b`ā5w('Ni˒?g76l?$[hlVN[:cu%q7`iY)(H;B(XD3@}>F>{i2q-WJfurh旭_:n|#P]`]9e\g$!v=}ߤS*)h(խ &|l 4_6%+i5>Gc[&T"P0{&(@ >1z>}%3j,)p>VfI >Ƃ͚ϸ؊tdJ˗4BJ$(#"cաָ0|eEճB1Dȧ>afH@fOr,] a739XYi}#QLcmɖ_ӌY ̐E}OcqN-G q6J\?Łe_!k> RE2?Xم%]Z hD10,ġQR:,4#% y8 _KB[D17zav03?G>sے ;ȟ-銮[+iӲ7T|fj~=vVPX Hx5֢bfa zW͓\TAњ2-+ЁfFK`m - sV%8F<@KJpB-GkkQ5q\ $m|)Ӑ:-U.oL5l\!y\Q >ishT, 2ۯ?m]v=}hµ|uhM>XK4B9ɂ:/^9NkdjFp,5gu*s1V!K˧'Zjgķ3[c-UNW` 8"]J{qlhf2a %I&8п=?w8h>0`U>&ozݔu8VzZȊJ.>З4ӗu# ?hM}>oY _Kmө ?oAk#?spbOczXj?ێqz%dy a *PƝx0dI Fe V4K7f_hEc6WdaEc*pc`B__숶VbZ0IBQ Ug xm/!y'p{x&f@$9i TSi.aFʪ0::rv搘f p4W ~aiٗb(G)DcU)EX&2s 7EIm Vh{^_nc}g'!¾͗tV7iQ"eVZr +ODdBޓ%eR$|² 3_Xޚ:[7,_mͼb:[ˠ+Ȧ㭭׊P'1'3ݙ2qJ7-I:$&ڸJ\y@Xs)qýVL~FF12wu=~<u+6dI.۸wUa܂RJcP=!H[+eooF.F+V;c1*(Q;'FjO弾Mkig.z;wtv:9L\O񎠑=$ZXȟ³APķomũN:hX8LG(/zW:y:IgvM%70}sjiE=7p)w~`~ݵd/]@/a0622,B< O>i~s휍ݞѷ%wZ8k{CeRtZP8(@ulOsXУCR]܆!t 3z7^q[=so5yƏH␝Ox|vtwVWg'˂^ح;_PHc-m{,awk 9ǹ*3A}1^< k6I4:{c`v( 3vEur&RȪ1cD*vhGj!vO( 'A3tu"B4z>|T{B}/#j 'f$0,a8p4VPG.3N& Aߪd%׷Ml ^rxcnFO"S\W/vF 煐;dDF%SK;'"Փ;Z͜7Ujq(t0@5~پsy2 ,g1 =i6tbzđڍZF( "cS.&$,! <5Rawa\鏪]< 6:ѿC{PmFnKKPw aIKJ@`W3dgo}*#)@Ev_rFy&]Ҍ3'z!د؄ja6§0L+bBX5ce'=?m[FiґyKQ]ȝKȕI 7O@Z{qL+-FjR(sgg;]"㦐U796Cr̜eW.z}q(Ij͑[fFs[f]Ӹ2cYl2y =>fr$)EΦCc=BcOv/b:^Cv%lm)8Tw6i"jg:zcB\Oc/&}vۜĆc93͊c{d[eC{za|ePZ͍aѦ]DBcIL-o L{nԴqp!iM Taj7Ӹ%Qy1RXڇ**Ȥ{j;yƥhJ(*~@DrF>%-C`Õ{D#I}?D?^<M %5X0xp[0vm)sIMGYEVu/.C=$I^[h* x%67ubm >.JѪL{Eq8PF{^{@u+a̱h 93FꆪZ2_4r⺁Dֺ;S.LY $`>ò"KgxԢHGv2?%#W$e[Lwx|0Z1kVH9<$XH3UPS|AaBc?6v1& C3om_ISܗ?4l<#L3н8Y*TzDTѸ5oto$[>=IBPkgW/A ;2YO})ުntX-ä<*Adc}.;,2vClF+O]g+XXid6*^qK?T 7WsmTBX}_[\|Ey N>>=µʹo4ҏ۬(~*/f|r$;ݐd۳8T2n쳵[i@) fi_7xfES7BOӉA+K6ad&mkzhɺmZ][pIgMinzJ=j7xR{[%_/{̅1H}ViՋ5pCZpXlnhZ/`{J/oɜ3= Gqƶ2ޛAUnbӄJJ?~+"c`KLJHNxͼg,="YB#E=n5:MX``wu_/Ns8j)N:7UXI'. ޤX o; <5Ԕ5,h,?}/>MuWCY#?a"/)?ا*3 ͯt|qSWg0yXI/.r`Ai>' B}-- &|Hˁ-B5Z_<!aP0F|_,^\D`&0,˸,`* _l"f:aao?eWVs#zC;w9@^R-w koW {SSPU::1= q;7rlPwf d+|%DSc$,@`>{ryHIbPF~,k`22BP`a}}(#X6>3昘@`̋Y޾b`>yZ}0ҁ7@A(*pسg.`Dy{ ,ĝӁw08Σ 6X>1o=, X`H@9.иmj6m`C}2V <? T7F|E턁XS8l cp  l6=VLđ#ī.I <Z WU )DT m34IQ\@KTi]%Tu+Sk[4.pi]*[TDgtIJȼwf޼{߻μ{qP'&Ć~yx-Cι_BQoW%~x`|(ѧp}@{,"::@ ==CCp 'eu5@" 02|!m|ўxL(Q$A GMW^OySZZp<P'08E qȯFC"m=qU3@0UqLqL_L8__NCxA .Y)7Lgg{寲y._LgcR[;G\gq{F?T`UcEA|G>6pwL?͜v&~GfL%LX%S2;Nn71>KϮܢ5*/ޟi`|@sϿ׻]O _4xAy|~:3M׷U^[9vf_t6mOFըY~Qbt:Ӯ2xZ~i(6Y<P 2?Zjd|nSbt8M6mrr.5Y[UsáVUƭaQqcw t{DLuR+#7Fs޶As'BjY֟GɺoX)D7vTus9զk,׉v7p7`:8:d!V3XsK/ QTLIS[2$=xq4Eq/5Xr$HҲ /"Qg0[Η04k. rY=Q{zHds 25eES4>Tݦ@W($W ՞yV>bz bfeYgh4b#* 5Jµ$ՂDrF?L2uEr<2J#}k} |k=y+m y7MjSr8* ^tҷO; uE#qJ!"G< ]_ L\nN#@=< ]_ L\nNx#Km x @W_$aUP9-(v T9 (`QanZj֣YEzb-jA¾L8 v%~2G޼y'(!L#Z CR+B@Ĵ1$~C:)!;BN#FDanHhčZhsZ9]oHAP2+Ly6٨THלPIaon{R5ViVH\=m:n׺OrȫJyyl iM=lB}#63zGk+ec}]ES/=d07xJ4w,hP/eh2ә򔹓yLD]@=&&|= irdw1a'/L"-dJyJ0d t `ڸw#>2P . h͸, h0۵qw?/b핹~6ϕ{5M=3oF 5X ʻ~:鹿ޮS214S?hQ~?c_Kų? }()!{թ|͛zPyN\ѡҫ~m̙g߿$Weddܾ9s@Ee%Aʔ}J/-qF`hVϵ;;ku)gW޽{U.:Wï/#8Ynޘyy3qf~9;,vwJgɩS[o[7n4*=V9.yi˝z?q ſ_=镌xS,gA1Y"mnE^qT駏] ?,͜9&xe4gM- *'<0gѽ Z?Gi멒);w<-4)gϜq?Mchhژ*5͛sZd<bN4iVQS~]]Zuoegz^+)~|r$YߵAϧ?}鬞3c{}Ks/:i䁊+[K+ulvFỴ<.=r&z=XVzxq:g4QAfeޭnJKI}eߏ2+?[jǘ|TvzZ^{}c{WW/-A }>v Fcޛqg@Ŕ|Yǭ^=J[/a`yVM B3OO潵+$ܬ:j$ȵ #ݸja(zz2ˏva}!̒>ӥe"Q卙6rFu&g߄?z؈2Zy$Y jte\.{ 4Օ첖JżZ$oYG߯Ep5EhkdB kz #?c?GC1?#?#1?C1?#?#1?CzakNq/#>[B㎑yUϵU#Ǔ/ RXXHKm6MJJJ͛7Ɍ3ȱcȭ[Hii)Q*$55呢"2uTF޽K>|HHzz:>y) "W\!ѣG$<<\vׯE?~Lrssɝ;wHyy9y )..&#$))lٲlܸ۷H3n1b<, y~#{d|/An@ ׆GbNDg oދ2\F9MRZ>0??kՖX9=Vt׷>5W{oHw޿ ׋w/y>ևޖ fB/[UmR5(9]6e#GvO^bդ72o]թIJYߺSl[Wuj֟}NM<aЯԬ?6N֯TF4L3rMaJ:cĻVR/s!(yy_-οzvBCT-/(ErňZ#d &I}%d䝓<'0 hON&ݼ 91lLh]B4O{^l=ր)6/xfe$Eόk>+m.=4ڗ猪 i6]l_Aw_FV"mo4OfS|3wU&(S !YPc6ȊVF3=_s;a4 w,&m J¼D3}`|WwRFwr)o 6$4π;gV<_hsw]6]ϧ-iyW mx EH];Ai,]LBiH5}'}g(>hzߣL/l3:pLa5 Ydϣ>7%Җ`[ d}F?>$n8]ہts&MTFdܺ1;f&bl xȸuf%o1ww;^ݎ }u]`_8 n)ܖsm ψw]:U] Ryyׯz\RǴ9?g9в<&x׭Lvuumڮ~o2zi+ 9(۝Y-r{EqK0:߇[tϔuL| ='sWK9mHt__7 :@9RM%*Tq2R$jkU(NǙQd:]Ɓv=n:=i+m_GG2zAߟL=q`ޛ6aPHТ7<424Q+yz*ߖa"YkoN;LG"C&zƂ8̟uOxZ:-gXGZ<-w{%ZRs-jN=t*<-ernS hz?`Vj4Ocw|?p@"ߎlĜ6i AtIy#d0}u`d̪yE cV Є+g"u{P3暈1YA&I|n$2 qM}~[r>"hTp7;u}4~thF_?k|j5^Sz_q?˄Tx3 s\둧qxi ^|< *.F;\ǍE\,?c*x ]t\khպ˹l|:DÓkr'멆pJoto"j4AB\K$:kYc͋pVcE8XL09 9/EL^^f>U.ށf[0PsۆKU 7΅9w#.\cgBmg[eTd䈌DB3Ak_;[>TlJe_+5~cS0OJ˫/ȷs/Y?YvȺZdmO{kYO3Q؜z觭 ~cW5kvr21j6DtU 9 \PDdny6Er0͉:sMy|:C<+ȹK f0ZM.FOgg:/&|j{RIU:]FU|)ԭP=ANT^wvm6 M&êy^]QM!/t2]#R3s̳U޳,?'l3 A@@  k6 Decisions StatisticsDISTs Portfolio VariancePortfolio MeanBQEDAwMFAgIDAQMCAwIBBAADBAIBAQQBBAMBAwQEAwMEAwUEAwIDAQQBBAYCAwMEAwICBAQDBAQCAgMDAgEDBgMCBAQEAQQCBQMEAgIFAQICAwUDAgQEAwIEBAQDAwQCBQUDBAQDAgQDAwMEAgMDAwIDAgIBAgQCBAMCAgQBAwMEAQEDBAQFAwMCAAQDBAQEAgEDAgQFAgECAwMDAgMEAwMDBAABAQQEAgQFAwIDAgMBAgEBAQMEAgMDBAIFAwMCBAQDBAEDAAQCAgIDAwADAAMDAwMFBAQBAwIEBAMCAwIDBAMDAwEEBAICBAMDAwIDAgIDBAIEBAMCAwMEAgMCAgQEAgQCAgMCAgUDBAEEAgICBAMCAgMCBAEDAgIBAgMDAgIDBAQEBAQDAgIBAgMEAQMBAwMDAgIEAwMFAwICAwMDAwQDAwQCBAICBAMCAgMCAwMDBAMCBAIBBAUEBAMEAwIDAgQCAwQDAgMCAgMDAwIDBAIEAwMDAwQFAAIBBQMCAgIDAgMABAQFAwEDAwMCBAICBQICAgIEAQYCBAQEAgQDAgQBAwQCBAIDBAMDBQICBQQABQIDAwMEAQQCAQIDAwIDAgICAwMBBAIDBAQCBAICAQQFBAQECAICAwUCAQIEAwECAgIDAwMFAgMCAgIDBAABAQIDAgICAgQDAgEDAQMDBAIDAwMDAgECAgIDAgMEAwQDAgMCAwECAwQDAgIDAgICAwMEBAQDAQMBAwQCAQEDAgACAgEEAwMDAwECBAEDBAMCAwMCAwMEAgEFBAEDAgMDBAQEAwQCAwQCBAMEBAMDAgAEAwMCAwIEBAEDAwUBBQEFAgQEAwMBAwQEAAUCBgQEAwMCBQQCAwIFBQQDAgMEAgQCAgICAwQEAgMCBAQDBAEDBAIEBAUDBQMDAwICAwIEAgMFAwMCAwIAAwQDAgADAgICAwIDAwMCAgMEAQMFAwIDAgIEAwMDAgICAgMEAwIEAwMCAgIDBAMEAwMEBQIDBAICAgMEAgMCAgIBAgIDAwMAAQECAQQDAwICBQMCAgECAwQBAgMCAgQCAgMDAgMDAwMEAQIEAwMDAgQDAwEDAgECAwMBAgQCAgMDAgIFAgICBQMDAgQDBAMEAgQEBAIABAIDBAQCAgMDAwICAwQEBAMEBAICAwQCAwMDAQIDAQQEAgMCAgMCBAMCAwMCAwIDAgQDAAQEAQIDAwMCAgIEBAMDBAMDBAMDAgMDBAMEAgQDAwQDAwQDBAQDAwIFBAIBAgMCAgMCAQIBAQMDAgEBBAQEBAMBAwIEAwMCAwQDBAICAwUCAgQCAwEDAwQDAwECAwMFBAQEBQAAESVACxYeHU4yTEgiakRHGk8iHCooKTUeZVEOKhZiNCkkEhlQKAczWy1FVDgwIEFDEikQL0odNjM/Qjc1JCo3SxpCOywlF09aSkZXMhQ6SiMcEU0cMS4xLBQeKUMGLIQ0Wi9BNh0QHzdEKzZDLSE+NCUTHyIKJTUiIi4XIEoGMi1PMRAXODREQkkmShslNBhFQh1SSoMoGz4oMkImE2c8SzgSOh8qMDEMKCFSOxgtLCcxMiEnOUckODYcYk4bKjIaHjc7GzQvGzI5HiU3JgsWSzFJRixHMRgaTCc1MykZSiU9KjgcMTNeJCtWJ0AjID9SSRglNhovPBw2MDlGNxhSGikeO04nByglUEk2LVFQETpMKCkdHSAJUDQ4RD4uLTgwEyA7NTc6Lk8xKiNKODtBEzELIFcsLBNGIjQ7LR84MBImOTAhSgQ4Ly4+PUBHJDgbLiQeLygsTkItKyobNDhJOA8LGiMiYkk2JSIgG15CKgcrRh0/HCwoOyoqHzwrFzxCLSwbLzhAHTEZHS5JJkIjJjswRk5CFApGMygVYkFGPzZDMB5PVzBANSYsTC5GUiY1GU0OTCk/PzI4LEcMGRIxSg8mXDEjIy0MUR03US4ZMCtLKBNRJSwZOzcdITRIGEkqNRtUGC8xHSpDTRwVHxUgLzAjJC4eJhEmSR0YJR4pESY1HjlKR0MqEhscMz5PIR8jNSY9PSFAKSQaEzEmF0wZGCY3Ixw7UyofKjRaVzwWMCwkFBYNHBY+VR4GMSwIOCMgI0M0RRgNLjw5MR09KCYkMh82K0s0Aj0scEImdTkhFjEjJAtRMBwyIi12US5JGGAeKw43SRxzMDQkChw3JSsoGmRMPDc2IDMyQyIqIVA1HRYxKUQbVh4SWUYsLyxGQTY2ICI9PiklMCY/Kz1VMTcrMUQxLwRFIkUxODUdSyw7NxciMS0dPC9RFkMVHU1PKFE+Ljc8FjAaMzAZGRoNRB1DQTo4LiwSLgIYMi4tBRxFIzkuUEA9OhAYNyo6Hz0zVGYpJUcpEx4iTjQZGxszMx4+JzpVJRkSK104LxREYBIzNDErKAksH14/Ii86Nx43L1cuOiVOPDAAKitlEiEwCDQqOkIAJj0nPjZPSCchRx80KCgTOi8bPSItBj9LGy5ZJ0QmLhZVYxATPSUiNUYwPw9ALCpGJDcmEkseL0RLQSA/QigwHxk/Cl0KPxc2LiQfMBM/BT87Wh8vKyg9IiA2QlkqRSMpODU3Ozs5Sk06Ij5NLQg4FiQxFzkFHi4mGi0yLi05NzciESM2Iy8+Hi4mMSMhMiQfIiQ7DTNERiopMjM7HiErPi4lRzhFRwAAFj01GDIPGj06TTU0Ul5ONTg5JzkiFVA1Uk0nLCFmWUErFBQxMQdAb0k4QTpFL1JTGjwhP0MtJzUwUEVTMVYoLg1bRDAdHTdJRTlUSyw+WCtKIT4qOzojPB0mR0sJOU9QRURHOiYQJkg9RDE7NylKGjQuKzwXRz0vKh4kPUAwXTFYXSYVO18iSlc7UyAmMSE1Qh9kSmAqJ0k1JC4RLIY0S1IUQiEnRjMKGixxJiQvK0IqLzImMUY4OjkzXkgtMzsqFigyKEUuL0NSHys6GygoVSw3M0hZUx0hTDkvIE4ZRy0tKzsgIj1dJzRbH0ofKUw3PzQoOTouWC5PJzpFPBlVLS0vSlMpCyo0Pj0rNXs9Lz9ZRCMbLisxRG4jY0c6KEFDFSlPPDozJT5LMzkrVkZBKigdMlcrISA4OSgjM0Q2KRwYMDMaPxtDOVIuVzw7LBwuODohNzRMSCY2JTIeK1AqQCAoKSw8RywyMTQYMDVVLCAgTioyLCk6RD9KMiVIHTBMNCgtSk9AIEcFEk5NJV4hQEExPj1BIxU9KBktUDJDTCVLKhlLQjE7PyRKNDVrUB9lHkUkVCBAM0IqJi8PGhcsUBQeRUIhJTAkTxs4U0c6WDk0Oh5TNzQrHEgjJyxNHUc9QBxiKkxAIiI2RiUiGi0dKylTMj82ICA1OjskIycnSCVgITKCQ0U0Eiw1RHxASR48NyJnLjM1Ki05FC1II0QgOzc+LjA/QisgSDxCRDkhMiwqKRwgJS5GRyUZWDATRjRRFUceTDcUHlYwFx8tKi0tPzE1Mi9JCSsdUUAiYzsgGygoKh9LSB81MBtOSzFJLUY2NiomRjBWJTYXEkFIOC1PFlM6TT4qITE4MCQoKVEpPhQvOEcwVh0qVUFBIDUzSy87MzY4UDwsLCY6Si86OT88LFA5DhdHOEYpQDMaPSEoQCUkMy81SzZTIDkWGkFAMlEoUTY+LDgfTzgYJBgZRx1UTEw0MS8WWQsrJDgpDyI/JiE4TjQ8Ogo5XFgyJlYtYmQrPTk6JiYfTTUVIUJgPkhGPk1aJigiOWssSgI6YC0wNysyJhEkNkktKRNJMCFEIkQ9ODMwUy8fQ0M+MzIxIzxWZlMOT0EyNlVLTzIlUjs7MSkPI0QhJC4/H0xPFjBJLkYvOChLUSkbPSYfPEsgMhRIMCxORTUiLjslMytCNSpMYD1OJhtkE0oJLSFCQA0sRRk7EzVrVC4pGT0vIiJXbWEVSCMrPztAS0xHQV4cKz49MAAzNDNOI1gSHzwXHTYwODYwXzE8IzFTKFM2L1IzSicWPj0fIxgYGCdATDczP0AmJzEvMzAkPCM4MwAAFDNVESYbHDk1UzkrVU9HJUMpJDAYHEctVVEdMhxfUD4mDRU3Mgg7aDVIQ0RCH0tMGzoaOUIhLjg3T0I+K0YqMRJTQSspGjtPRzpSQyE9SSgvHUciODQlMhUZNkcDMGJKVTlEOyEXMkRHLzZBMSxGJychIigbMjEqIiMYNkQiUDFTUCAZOEkySFAxWBopQSo9RBtQS2kqIkEpNjccHYY/SUENPhwtNDANIiZYLCMyMTEoMCUfLVI0RzUhaEYkMy0oGSQwIDoqLjpHHSI6IxktTSs3OzlDOhkYSDUyHj4ZRis8KjoaJzVaLS1VKTseLUw4RiMoNi4uVCNDJEY5OB5LKSomPkooDiUwQD4oOXRGH0BWPhwbLB8fQVI2Tzs0KjdAGCZEPDI5KD88MC4xSUFNIh8aLFMzKRk2KiotMzI4PB8XND4lRQ1NNUMzQksyJiEnMzIdMCk5UDgzMjQWKk8xQBUZHCkvRDU1JysaH0BMMBklTx4zJi8wRDA8LTE2HS9PNiUiNk43JD0KFkJVHlwhLT4xSTxKGQxIJR4lVS5MODBGNBdVSTU+NihAQS1nUCVFG0oUTR1GNjw1JjUVGhUqRhUjSjYgMDUgSBkxUzwuNi9BORhOKyseND8kHS1OGEcxLR1dHzdDIR1ASCgiGSQfKSM5LzYtIhgqPyokJyEpMiBUFytoTUUuGBsqOF1CPSQ1OCJZSCo3ICUuESw4I0QcLDY5JSk6SSgVQTtXUT0YLygnHBkaIRlIPBoGRygMPys2GUIuTScQHEs7ICE4LyQrQDI4MjdIATYcWUAhZDkaFSwnKRdPOCAqLyZqTCtFLFMtMxMmPy1RJzIRCy9DMitKFmZSSDw0HCw2MxwsK0QzNRc0NUMsTRwiW0w0JDI/SCY4KDhBO0YlKiREODhDMzgyM0QwGAxFLE00OzEbQCQ2OB4iKy8rNTdQFUATG1hCLlY4QDg7LDIaRjsXJRsQRydPTk41ISsQQAglLzYjEh1DLC86Sz8vOgQrUEYyHE45VGgwPD4kHSsjSjoVGC9CPS9AOT5hIx4ZMHoyMwg7aR5BMCUzLQ8fKEQsJBhGLSA5J1Q2Lio9SDIXLTpFJCQsFjVHTUsHOTouPFNHUjIkRy4wKykPMz8eMCQuIklLIDNNLEgrLBpIWBwRSikmNEYqPg1CLypRMigbJzseLi0/NyBNUTI6HhtQDk8ILhs4NxIjMRkxCzJTYyUmJS8zISJHUVshPiEvPTw4Qj48RWQhJjdBKAA2Hy1JG0YGHjYaGTIvODcpRzMxGitEI0QxKEMoPikPOjEgKRsjEzE2TzgqOkMsHiotOC8qNCw+LAAAHTJ5FCMwKD45X0YsXkdIIVYkKi8YLUYvX10dQSJfUEMqEiBEPBQ/aCteTlVHGk1OJkAePEgePENGVUcxMD40PSFSRS48IkdcUUNXQyFFQi8fJFclPzgwMRgWMEwKMHpMbDdJRSYoRUhYJENPNDhLPCQfJB8oJzAuJDIWN08eSjlVTCQmPTxKTVIwZB82WDxMTSJGUnc0KEEoT0cwGoxRTzkRQiE8LDcaNCtIOyw9PiowOiMiM2U5WzkZd0wmPSkvJis3IzcwNjpEJSNCMxQ6TTJASzQ2LB8aTDk+JzgjTDNTMkIfNjZeOzBVOzUmOlJBVB0wPCs4WCJAKlg2PS1ILjAnO0gwHCo1S0cvRXNWGkhZQR8kNB8XRT9QQzg2NjZFJSxBRTNHNEc3NSxARURfJCAgMFdCOh09JTU/OypDVishQFA5UgxfOT1ANl8zKS8pODMkMycwXlA6Rj8ZM1U/SRQVGS8rSUVBJiwlGFJLPRwzWBw8KT4wSys3MkYuJjdaQSwiK1U3MTwZJD9jImErJUQ5W0NaGg9aLC0nYTRcL0NJRh9lWEJJNjY/Vi9pVzUwI1UPTSRTQT5IMEMlJB0yRR8xVzQpREMmSiEzWjosHi9VQB1QKSscUj4uHjhXHk4vJShfHyxNKSNRUjQsIyQqMCYpNjUtLBspTSMuNSQ0JiVQGC1WXUwxKRUoNEdLOjQ3QSxTaSpCIScsGDUxLUshJj4+Jis+VzAVQ0NwZEkZNC0tGSAfJxBSOhoAPykRQSwmJ0VHVSEXJEhOMi1LPiYxSD1DOkdOBUkmZkcpaz8eGjgwMRpaMSopODmJVC5JNWUuOQgvQTNTMjcVDidFNDNNIH1vS0NGITE8PR85Nj9FNiNCO0gxSyYlZ10yMTlSTiY/KENSMVcoMixVMElSNzoyQkEwLAxLK1pHPzglSjFLOSIqLDkrKUFUFk4bJnVMMmJPOEFBNTYgRUYhLycTTztRWFc/HDEUMREpQj0oICNOOkZFUFIsQgknSzw7HE5MTnI+QksaHjgwTkYfGycvRSFCPDluKh8aMI5AJxlEdhlYMSk9PBclJEc0KChLMyg3NGo4LitRRTwaIztUHyExFDZCPUwMLT00SVhMXTwtRSouLjIbS0IlRCQoLk1PMj5YM1IvKhhMZRkSXjQ1Nko8UhJEODFcKiQeKkMhMzhEQh9VSjAwISVEFFsSOB84OCEkKCMxDzhEdycsOSs+KixBPlw2PSo7REU5Qjo5UW8uLDhNKgtCFDBMHjwFJjkmIDg2QD8rOD4wGy8+KD01KTwnOzQSPi8rOSc3GUQ2WEErPU06IC00RTc4Nj5MLgAAGzV9Dh4tKDxPUjEYTzxCLUwkKx8NJEovR18eMhxFVUAtExs9NjMzZy1cQFdIG0Q+JzwfMjwYLkAyST4sLzgrJCdRQTQ3JD00TT5KLiA6RiYUHj80NDwqJhoVOj4FLmlAakI+RhkwOURZHzc7ODZHPSgsJjErKC8zKEAYQUUvSyxVWCcjLEM3V0ooTSI0U0I3RhQ+Rl8zIDcfQS8lI4FJSjcKQCM3LzgjNS46Ky4wOS0sIDIULmpKXCgYX0clOSsrJCY6I0UtUTEzDCs3Lg43RxwuMTgnHhwhQkczKDowTj9MJCwoJzlSLj5MKS4lOlEvQSAxOSY7YSgzKlMwPEE3MCkfPEM6Hiw3Qz8mRF1jGkBUOhgrJBo1PzU8Qy0wMTM8GjVHOS5QI0oxOC4tRkVkMhkeRU5FOBtHKTZHRiY5XCsmS0pCNAh1PU06LVYpITgfMy8vNjEyVE45QUQcOWUuPwgXGScvNjU9IyQlI0tJNR4vTSA8JTsvOT42OTsyIiRzQzAiN1UnNS4TFjdkGFUkLlA8U0FPFBhjLzAYTh5bJ0tASCeIPjdIMUI0PDxfST0mMVEXQSZTLipLHiwgLRwuRBshYS4wRFMyQxwoWDM6Gy1YSyE/KS0eSS8yIjNHHTc0ISBkFitGJilLUEQwGyksIyErQis0NBwkRSowODEtJB1LFixqV1suIhIrRj84RSctNDVlVic+HS4mFzYqMkEmKz<q M8HiM1YykPWDlhTEEgNzAwIRoxQhVOIyoASCoTSCsiITdDSBgYG1I6Mx9QSSAlRURNQy9fCkYdcFweWz8bGjk1Mh9GOCQiKztqVCY5O1wlLQswPytMNzgbGi88LitTHnBhSkZHJkE6Lxg1SixBOSRJPjg0Rx8kVlEvLzVGRR9ALE9GKFofKCFMMDpJKzQsTUQ6IRE/L1VBOzYbODNAKSoiI0IsHTheEkghIXJKNVkwMUs6OSAUS0cjGSMUTzFQXUYyHSYeMhItPC8bKydNQUI9UWEtQBAeXjQoI0NJX3AsO0QWIyotSD4eGh8sSik0RDl4HxskLZg8FxRAUxxiMCEpPh0tH1InHSNSMjknMmRCKypPR0AfGy0/LyE6HDw7OzsOMC0nX1xBWzkuOTw1IisjQj4eLzcUNTBBLDQ1JUohIRJSVh0YYSwxNTU/SRFLJy1XJCEdNjknMDc/Sx5VTDAjHS5WEE4UMyIzOR8gKiAoCytGbiYrPiw6Ii9FQFwyMSI1PTA1QTM3VmYiMjw9JAolDypWIEAKLkUjIzg2TjsUN0IwGDhAJjoyLz8rLzELMyQuLBgiHT0vRTcgPEUqGSo/RSwuMz5PIwAA      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{|}~KjA0H0AbKhQrCT8uH0A0MBo3PhceFSpFHBMzPx4VPTQ8JSQ3DjY8bzc7RzY1GyopD0AhIBslJ00dLRkzND0VPBw2PDYsNDU6ET4qNS8uKD4zOCUcUSYuQkUsLiBCRQk8FBolWyk7OjooHig+NDMhNTctHDw2O0s4KRs0SShAJxhHSkM+F0UjK0kwHDggDxwrJS8nLyE4Lh80HichVFswHj0wHwwtNTM7OypAJUI7HzEnHDspJB8yJi0XHigxHiosHCw9IRkxH0EkHUNNMCgrMBQtPEM0OztQNzsbGTMjQCodMzBEFCRMGCoqLRYkMl0kJCoeNS1CPVkyM0AfPSsiOTcbJjInTUc9EhMZMEIPRUE8JycvLCE+CjQhOAcpNCY6NTU4ECI0LTBLa1IJOTVCNywpIiIXHTQ8IyUgJkI+Cz8oHUcfMzEbPjwcQBgSIzIpMFUbOi4jHSQdQR8fNhcLHic0FzM7HTkYGzEZIwdEQzUkHEAdMRlDREJFJCg6Mx4yMUJGS1U2KlMPIC5URDAhMTIvMx8oMiobOh8/EA8nHDojJjImGxBEOTYvFhs0KEMtNj8ZSRMhDS0sICFFJy8XJTcwMig5IzdJLjw9MDVaLycrJSE+GB0mGiY/JQhVRi1AIBpCSCc7PB0fPjQeK2A3KkA9XlE6MSU0LVpKWC8sODBEKyJDXS0wIT9IQi4jTDonKyg7Myk3MTc1PydFKlcgNi0cJC4tLjQnTRwdNTMsUCYDTSxONCE9Ny0eNStCJywwIjwoISs0LVgfEC4bN0c4KE4UJB01MBoePTgsGzUbGT4tGDZUJkk1Ny0IJUcwFxsuOSIcHykbJxM9GRotQE9QISQ/OC8ZGhklMyctGCFwORlUPjoxN00VLyExKx8oIjcmIkMvGB9EHDtGHSM8aTk7OVQwCEAoIUUhM0wLLywyOx45QDsuHDMpRTMsHBsoRTUmRDRdTSwpSjIiRzE1Ejc7G2ktMkMnPQ8gVT0rJRgbGxoIFxM1RCUhLE4mMzgyNTAmGQAhSjAWHRQ0PjU4Oj0sQhYlLCoYMDg1KysRJSouEiAjJzUkVicZGCZDITdAOTYhPDouNTY2PQghYSkkTDIoNEocLEZfDkEXNDESKEIcGDgwLiMuH1YdRR8NIB06IBUkSDQ5Pl85QRU/FCAoLy4rQig6VSkgIx8pQw8WI0VCFi8ZCz4dUSIfIiBNLA00RycVJzAxMSgiH08tHS5IQ0oxLz87Px0XLz82JkEdOTwdNDw+IlQ5RC9BMTIxLishJSwhLz4sMCMtM00aNEhCKx8hOS0wFSI4JAkULjgfJSEgKiBEGQ8wRylAPwAAScaling factors Needle length Label radiusTick outer radius Tick inner radius scaling factor Main TitleTitle AspirationBlankGaugeAspiration data labelXYNeedles Low NeedleValue Mid Needle High NeedleNeedle and Tick LabelsLabel locationsNeedle and Tick Label Text Tick MarksX?Y? Middle NeedlePortfolio DISTVariancePortfolio ===>Portfolio Avg Rtrn Avg ReturnTargetBins FrequencyInputsFormulasby Sam L. SavageGrowth PercentilesInteractive Mean Variance Modelwww.ProbiliTech.comOptimal Portfolios: / Mg) 4  ccBĘ7ɹq1  E,\  dMbP?_*+%h&?'?(?)?MAuto EPSON Stylus CX5400 on LE odhhRL**** xhhDLLName32=E_DU18CE.DLL $d $2EPSON Stylus CX5400 @ **** "d??&U} A}  A} A} A} ]A}  A}  ]A} A} A} A} A} ] A}  A} A} A} A}  A} AEppvphphphphphphphph ph ph ph ph phphphhhhhhhhh @3 A0 Y4B C DAdX ?  #,BCashA Large CapA Non US EquityA0.  Mixed FundA Multi-CapAh Small Cap ApX Gold E E E E E E E  E  A H'F nr >  #,"B.F%9uŪ? F+Ӝ?F?Fl7?F`n? F-{? H*GTY?   #,"BG>eO5^?G;?G`}?GT㥻?GW? GQ? K('I?3% e*JJJJ?JJ KIIIIIII  E  !<  .####"Portfolio ValueBGStpER4qIzYyUj0mUj4+HUofJSkVJz0pU1EZOR5TRjolEBw7NBE3WiZSREo+F0NEITgaND8aNDo9Sj4rKjYtNR1HPCg0HT5QRzpMOh08OSkbH0wgNzEqKxUTKkIJKmpCXjBAPCEjPD9NHzpFLTFBNB8bHxsjIiooHysTMEUaQDJKQh8hNTRBQ0cqVxsvTTRCQx09R2gtIzgjRT4qFnpHRTIPOhw0JjAXLSY/MyY1NiUpMh4dLFgyTzIWaEIhNSQpISYwHzAqLjM7IB45LBEyQys4QS0vJhsWQjE2IjEeQixILDkbLy9SMypKMy4hMkc5SRkqNCUxTR44JU0vNSc/KCoiMz8qGCUuQT4pPGRLFj9NORsfLRsUPDdGOjEvLy88ICY5PCw+LT4wLiY3PDtTHxwcKkw5Mhk1IC43MyQ6SyUdOEYyRwtTMjU4L1MsJCkkMSwfLCIqUkUyPTcWLEo3QBESFiklQDw5ISYgFUdBNRgsTRg0JDYqQSYwKz0oITBOOCYeJUovKzQWHzdWHlQlIDsxTzpOFg1OJigiVS1QKTpAPRtYTTo/Ly83SylbTC4qH0oNQx9IOTY/KTogHxkrPBsrTC0kOzohQR0sTjMmGilKNxlGJCYYSDYoGjFMGkQpICNTGyZDJB5HRy0mHh8lKiEjLy4nJhckQx8oLh8tISBGFSdLUUIrJBIjLT5BMi0wOSZIWyU5HSImFS4rJ0EdITY2ISU2TCoSOjphV0AWLScnFhsbIg5HMhcANyMPOSYhIjw+Sh0UHz9EKydCNiErPzU6Mz5EBEAhWT4kXTcaFzEqKhZOKyUkMTF3SShALlgoMgcpOCxIKzASDCI8LS1DHG1hQTo9HSs0NRsyLzc8Lx46Mz8qQSEgWlEsKjJHRCE3IzpHK0wjLCdKKkBHMDIrOTgqJgpCJU4+NzEgQCtBMR0lJjElJDhJE0QXIWZCK1VFMTg5Li8cPD0dKSIQRTNHTUw3GCsRKg8kOjUjHB5EMz08RkcmOQgiQTQzGERCRGM2OUEWGjAqRD0bFyIpPB05NDFgJRsWKns4IhY7ZxZNKiQ1NBQgHz4tIyNBLCMwLVwxKCVGPDQWHjNJGx0rES86NUIKJzUtP01CUTQnPCUoKCsXQTkgOx8jKENFKzZMLEcpJRVCWBYPUi0uL0A0Rw87MCtQJB8aJDodLDE7ORtKQCoqHSA7EU8QMBsxMR0fIx4rDTE7aCImMiU2JCY5NlAvNSUzOzwyOTMyR2EoJjFDJQk5ESpCGjQEITEhHDEvODclMTYqGCk2IzUuJDQiMy0QNiklMiIwFjsvTTglNUMyHCctPDAxLzZCKAAA EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEERSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSo K& A A K A1 I A A+( F|<̉?#$ "B. I~ X@ AII A2,Gj}h?1#$ "BI~ XV@ A)I~ X?I~ X$@IIII A54F&n~ g"4&DH& - h. h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h: h; h< h? h -L-LK >-L $?-L*!J?-L;(n?-LyD~?- Lg?- LL|?- L\Dd?- L~? .L.LгY?*.L@L@L@L@L$@L&@ . LQI?. LʡE? 0A, 0A- 0T. 0O/1A? 1D GStpER4qIzYyUj0mUj4+HUofJSkVJz0pU1EZOR5TRjolEBw7NBE3WiZSREo+F0NEITgaND8aNDo9Sj4rKjYtNR1HPCg0HT5QRzpMOh08OSkbH0wgNzEqKxUTKkIJKmpCXjBAPCEjPD9NHzpFLTFBNB8bHxsjIiooHysTMEUaQDJKQh8hNTRBQ0cqVxsvTTRCQx09R2gtIzgjRT4qFnpHRTIPOhw0JjAXLSY/MyY1NiUpMh4dLFgyTzIWaEIhNSQpISYwHzAqLjM7IB45LBEyQys4QS0vJhsWQjE2IjEeQixILDkbLy9SMypKMy4hMkc5SRkqNCUxTR44JU0vNSc/KCoiMz8qGCUuQT4pPGRLFj9NORsfLRsUPDdGOjEvLy88ICY5PCw+LT4wLiY3PDtTHxwcKkw5Mhk1IC43MyQ6SyUdOEYyRwtTMjU4L1MsJCkkMSwfLCIqUkUyPTcWLEo3QBESFiklQDw5ISYgFUdBNRgsTRg0JDYqQSYwKz0oITBOOCYeJUovKzQWHzdWHlQlIDsxTzpOFg1OJigiVS1QKTpAPRtYTTo/Ly83SylbTC4qH0oNQx9IOTY/KTogHxkrPBsrTC0kOzohQR0sTjMmGilKNxlGJCYYSDYoGjFMGkQpICNTGyZDJB5HRy0mHh8lKiEjLy4nJhckQx8oLh8tISBGFSdLUUIrJBIjLT5BMi0wOSZIWyU5HSImFS4rJ0EdITY2ISU2TCoSOjphV0AWLScnFhsbIg5HMhcANyMPOSYhIjw+Sh0UHz9EKydCNiErPzU6Mz5EBEAhWT4kXTcaFzEqKhZOKyUkMTF3SShALlgoMgcpOCxIKzASDCI8LS1DHG1hQTo9HSs0NRsyLzc8Lx46Mz8qQSEgWlEsKjJHRCE3IzpHK0wjLCdKKkBHMDIrOTgqJgpCJU4+NzEgQCtBMR0lJjElJDhJE0QXIWZCK1VFMTg5Li8cPD0dKSIQRTNHTUw3GCsRKg8kOjUjHB5EMz08RkcmOQgiQTQzGERCRGM2OUEWGjAqRD0bFyIpPB05NDFgJRsWKns4IhY7ZxZNKiQ1NBQgHz4tIyNBLCMwLVwxKCVGPDQWHjNJGx0rES86NUIKJzUtP01CUTQnPCUoKCsXQTkgOx8jKENFKzZMLEcpJRVCWBYPUi0uL0A0Rw87MCtQJB8aJDodLDE7ORtKQCoqHSA7EU8QMBsxMR0fIx4rDTE7aCImMiU2JCY5NlAvNSUzOzwyOTMyR2EoJjFDJQk5ESpCGjQEITEhHDEvODclMTYqGCk2IzUuJDQiMy0QNiklMiIwFjsvTTglNUMyHCctPDAxLzZCKAAA,1A 2#@$1@BPortfolio Value 1O+1Qث 11!)111##$ bBGStpER4qIzYyUj0mUj4+HUofJSkVJz0pU1EZOR5TRjolEBw7NBE3WiZSREo+F0NEITgaND8aNDo9Sj4rKjYtNR1HPCg0HT5QRzpMOh08OSkbH0wgNzEqKxUTKkIJKmpCXjBAPCEjPD9NHzpFLTFBNB8bHxsjIiooHysTMEUaQDJKQh8hNTRBQ0cqVxsvTTRCQx09R2gtIzgjRT4qFnpHRTIPOhw0JjAXLSY/MyY1NiUpMh4dLFgyTzIWaEIhNSQpISYwHzAqLjM7IB45LBEyQys4QS0vJhsWQjE2IjEeQixILDkbLy9SMypKMy4hMkc5SRkqNCUxTR44JU0vNSc/KCoiMz8qGCUuQT4pPGRLFj9NORsfLRsUPDdGOjEvLy88ICY5PCw+LT4wLiY3PDtTHxwcKkw5Mhk1IC43MyQ6SyUdOEYyRwtTMjU4L1MsJCkkMSwfLCIqUkUyPTcWLEo3QBESFiklQDw5ISYgFUdBNRgsTRg0JDYqQSYwKz0oITBOOCYeJUovKzQWHzdWHlQlIDsxTzpOFg1OJigiVS1QKTpAPRtYTTo/Ly83SylbTC4qH0oNQx9IOTY/KTogHxkrPBsrTC0kOzohQR0sTjMmGilKNxlGJCYYSDYoGjFMGkQpICNTGyZDJB5HRy0mHh8lKiEjLy4nJhckQx8oLh8tISBGFSdLUUIrJBIjLT5BMi0wOSZIWyU5HSImFS4rJ0EdITY2ISU2TCoSOjphV0AWLScnFhsbIg5HMhcANyMPOSYhIjw+Sh0UHz9EKydCNiErPzU6Mz5EBEAhWT4kXTcaFzEqKhZOKyUkMTF3SShALlgoMgcpOCxIKzASDCI8LS1DHG1hQTo9HSs0NRsyLzc8Lx46Mz8qQSEgWlEsKjJHRCE3IzpHK0wjLCdKKkBHMDIrOTgqJgpCJU4+NzEgQCtBMR0lJjElJDhJE0QXIWZCK1VFMTg5Li8cPD0dKSIQRTNHTUw3GCsRKg8kOjUjHB5EMz08RkcmOQgiQTQzGERCRGM2OUEWGjAqRD0bFyIpPB05NDFgJRsWKns4IhY7ZxZNKiQ1NBQgHz4tIyNBLCMwLVwxKCVGPDQWHjNJGx0rES86NUIKJzUtP01CUTQnPCUoKCsXQTkgOx8jKENFKzZMLEcpJRVCWBYPUi0uL0A0Rw87MCtQJB8aJDodLDE7ORtKQCoqHSA7EU8QMBsxMR0fIx4rDTE7aCImMiU2JCY5NlAvNSUzOzwyOTMyR2EoJjFDJQk5ESpCGjQEITEhHDEvODclMTYqGCk2IzUuJDQiMy0QNiklMiIwFjsvTTglNUMyHCctPDAxLzZCKAAA.1P`P 2#@:1@B Unnamed---~ 2UQ@2A{Gz? 32![2;2M@#@$1@"@%3;@A@#@$1@B@ 2OC2PS? 3-@#@:1@"@D @BI3U(\?(43@3; 6L@D<@D2@@@@ @@3Affffff? 42 3O%B3P΍? 4,@#@:1@"@D@AH4UQ?(534AX9v? 52 4OB4PmK ? 5,@#@:1@"@D@AH5Up= ףp?(635A;On? 625IB5Pb̧ 1,@#@:1@"@D@AH6UQ?(736AS㥛? 726I~ 6P47U?(837A~jt? 827I~ 7V?8UGz?(938AMb? 929U(\?(:39A~jth? :2:Uԣp= ?(;3:A ;2;UQ?(3;A 2~ <U@? KXX ? ? ?? LCash? HT??  Large Cap?HT(??  Non US Equity?H0P (??  Mixed Fund?H@(??  Multi-Cap?H((??  Small Cap?HLX ( ? Gold$,r8~ VV>>>>@ hA hB hC hD h~ @A$@~ A Z$@*A A4@A$@A4@A.@A?A$@~ B Z @*B A.@A.@A$@A.@A.@A$@~ C Z@*C A$@A$@A$@A$@A$@A~ D Z@*D A@A@A@A@A@A4@bP<<<f; 1;  (  n  c 4NChart 1 5 @]@>  PP PZaajk&?'?(?)?">??3&PHP0(  {3d23   M4 3Q AssetsQr ; Qr ; Q3_ M MM  R R R R R R K"$S S4ES S 4 3Q  PortfolioQ:Q: Q3_ M MM   ,R R R R K"+MS S4ES S 4  3Q FrontierQ ;.. Q ;-- Q3_  MM ] ""dR R R R K"#S S4ES S 4D$% 0`63O&Q4$% `63O&Q4FAH 3OQ %3*&! 43*&! ! 4% m 3OE&Q Variance'R RR R<rrrrrr?3f?S S4% ; Z3Oy&Q "Expected Return'R R<z?5_NJ?S S4523  M43d" . ZE3O. L6% 0,3O& Q423   M4R RR R <?̶+U??e?C S S 4S S4S S4DQ %cccccc?~]c??''X? K[S S 4 eee   RA??Picture 2 ]&` ~  c DN Chart DistoGram  5u+]@  PP PZaajk&?'?(?)?M\\YOUR-4DACD0EA75\EPSON Stylus odhhRL**** xhhDLLName32=E_DU18CE.DLL $d $2EPSON Stylus CX5400 @ **** "d??3&PH`0(  z3d23   M4  3Q  BinCountsQ ;2;QQ3_    MM<4E4  3Q $SeriesAxisLabelsQQQ3_ M MM  !!d R R R R R R K"#MS S4ES S 4D$% 03O& Q4$% 3O& Q4FAq <3O<Q'3 bR RR RV Vd#! M K.(KQNRS S43*?N & ! 4523  M43" 43d" 4S S4D<Q'XG).? e{?۟N/?#]Ӡ?% (@3O& Q:2  0.7'R R<S S4% @3O& Q:3  0.8'R R<S S4% @3O& Q:4  1.0'R R<S S4% V@3O& Q:5  1.1'R R<S S4% @3O& Q:6  1.2'R R<S S4% %@3O& Q:7  1.4'R R<S S4%  @3O& Q:8  1.5'R R<S S4%  @3O& Q:9  1.6'R R<S S4% R @3O& Q::  1.7'R R<S S4%  @3O& Q:;  1.9' R R <S S4% @3O& Q:<  2.0' R R <S S4% 3O& Q'4 K[S S 4 e??@ @@@@@!@ #@ %@e  e zr  c 8NChart 388H u]@  PP PZaajk&?'?(?)?MAdobe PDFS odLetterPRIV ''''0\KhCFF0EBDAStandard"d??3& s^p[^(  #^  XA??Picture 8"]Ã]PK![Content_Types].xmlN0EH-JX tA` *`ٓ"~ﱛV"uiϜ{z5LP;mYQV:mxJ;@jD[t?2r#tlt.1 )z`wUuϤl,bΠMB'c$s^Lt<-{Sm2?ydx G-ELcU'fL~&iȓV? [A+ k0ɝkVN5X6z!b KۄtLg?|PK! _rels/.relsj0 }qNo^K [IbHnھL`_Ŀ]fd &G> JMN vi{ɖz$cȢ*%2鉣-uAg>zӶ/3[0߀:r5a8>GT8Wr>wOo?aΫǮUv_PK!! drs/picturexml.xmlTێ0} !U[Uڮ^>1&XNBciԗji^b=gΜ9@'f,ת"ƈ)]uD5Dh*|aoߔ v P(c؅VIl!j 92v8\1a+o0ZԇPioPNjU2U4CRk,ۦ_&Yo_zNC:8ݙϧAp#E$ 70z/d4a'+ԑ+wDؽu0?BsHc}HByŸd/xȅKRlvQ4{ݶM)lV"l;[L䞁S36D k{.Qavs6/PK!" B!drs/_rels/picturexml.xml.rels 0EfoӺ݈Эil$QpcAp9raefFV:(_vG`1U8;K6M}SI2FSJyds3`03ܣH|_ЬSB*`? tvaȦ Mvg CJ' 2ǚ7PK !  [trash]/0000.datPK!-S4drs/media/image1.emfygPTM␔̐$0dCHr, H$gE$ "dHw[nUݧUz"?>Pu= pz|: | #) ث$n]qAH|3 _GkjGˊ$Ȯ16$sQ$?_o}m%v$q ZAZq5/p~"/xP$@$ |7?qN4$'a$ZwՌ}?^Dv ?#M;A袬 ivDm]#=Ṏf _wa6 @P w7'IKM~/`Ow2/[f=d]E)4oG˄&xD"1pIjTz:7Dw:0f<yBb[VpFEռ܃Õ}N& !,OXJ>Z,. 6BRVy~~7~aܽgֽwMGjƿ]nmAOebbB1V|"@9o~v:Ftf_9!(Xw!wCMrJS'% 0PsQ5{7qYv}6^1ddpLl<)LfF߰-yʫɏ_ݞm5 ]lxwڵle h)[TYgggg~UvRlrowjDDfS/\YÀ{sE~ϺZ}:{=ۧ__ДeL(á)уųU"+w <  pDmU,uݿhsș< GB 1D$yGlM}:HȑZV=U^6QpQWײ%AZnǎu^@w$k>F~lCY!7}z+dJi6dJ+IHi3H'c9qj9 =2va}Yc ( _^y~m45? ^R&%θq[04A_xo1YN݉=v{l;XolH~Սq˅1|&jE~5ӛpѳᷨ-Y"X.>l/~t&osjFkvjqZTM`ez/ܕw㇯Y)G3^ J;'+9}7?&V].|" rw]7;|Sr{1)?_p'JOx5?/Ǯ2z m=1!N]'Vw4F=f|'z,7ͳ5 k!GewOѹboMd,u #/z t +T$07X5mڢ__:s:{ ?íhC>+j"g _P}l>@ F윸d a?WG)Gb9jy*rG{_z"fYIN[' {vN?dJ8((x6z'auk(h*";?Gy蠢"<92FlN' #@?1z_#ǿJ[^My Nvs|D4RĔKP{)s̈́Ω,49ď\۽~fk֭ij97c ¤M.lS1fXDrFQh<DzOLJܯ3zmbC:+/9:pq$bN)6] 0wdnc؏{{]Un{x{5&Ԓ.l!>dCA9?x>7]3QN 2I=qRD]?ONJn_mwp~K ?ٿy1:ENV맹ỗV+ob.ULMw.~r ]U0?c8]^rsؒ\}Y04L\AP"Y%877H @!-#t5V-;ΙS-垆AF+!ٮ$JoD841 ߲zU@ VF";~™$30qX~PƷJQw+)D*"IK.oWW#aH6?M50s8ߧ׾眑*Kո `Пt;QDwOI﷭ ۨ͏Q\k_v6HFR!V+}>mRρ Z)Ojoޡ, P}*tUor>zo^&o6b32חxog 57&bn\1[ Y>-+  / +f!pfus@r;w/ %?V=}߳1C"lN̅oI=`&~.ph3d-O5bֽvM%g!ڧ-ܥe$%}sfȰvY5T),L?)G̖F62f Bàt~F%tp ፧ŕt[~ rFZ`BǐEְSny㣊*7,a Fĺ-Y&!?yay6b!ۄ;߮YYvG1 JS<y2ZF+"LI6W7}vXߜ*7s\+ 7#|\e vZ)zx~v"fq6>%7y׺IlLrJFu Q1Hh/8ngP54:J3\^2 7ԈO<%"z7 ER]J.L@/b&.ee9#?)!΁$ʭRA[ڈhҞHnڜ`wz㥉b>Igg]Qmu "R6@ud$S*6tKՂXefn|KADOyiGj7h>mH}P]xxh_uSfBz_F 3: xG7>%%yxЎFGקV*Rpmz/RhTLZ=fKїn&ݳ}bҒq!_ l ޖ3*KU$3dv~J\h"+!gb5YջJG5y([lIr`Aig4힊)QƎ7Dt;q ݻe SMkfP\*TZQR2G s<gw@Ědaq mFYݦgO>$|s;g +h$Ifҏ uZCWsh̰391Fa顩jl/>UBZIF*i$1tZW6ªhivFibm͙Dwļd?޽U$ZtXxiϜ|; pT.f?#$k ;% ull;z7ax* I?XN0O/e E9 Ѽt9}+ !p]-ӖIhٟ^g"k֍"w܉(_HHr3yem0pntg! uf.Zoߴ84`OU\BD`DGk%]f%V-ȓ#Cq`/~=N$tnk@C.(AX+?mw=f[I}jнh@PEK2Trly@9άתA-䋭 '*Q[N]jtעhbD-GH0jqXnt^Oy|{<`j&3hwmYc[2ǵw a  Ab! ~rRTQw,ۻ߽ƹ]Q}a: T%? 1!q ,]n^ZIP|kU/{z@1 pL>D"h2}|}#zt:ѵ8H[֖A\zzAD.{t|ӑn;e[LH IG*JX{*>fT1n&No_k7g(,0vDQWbE. sDPt>/fKwj=N$ '."('V+!PC(`3 !}ч8ևUOzĔ;#ǞZZg`8FM m &:;{J )1Wo߄}Y){>r9("ABB Og F3=)K:9h`a*BbIo o\9K;u4 "N _e肠wwt(Z_pB2S$xW^yܔ逄w=sLޅ@?f3ꗥVaN[%]_$`(caNj|K%`Qkw f-^F0HfއhAaIq!dT^ABvb@\H+! 0vOP<3CNDɣI;h Í;f[,D"5n@Ӛ\9yfH("99hI Pq7Y :DdˬoLэRu_7MݹcϚUC =$P(\tH9FXox}v:b.C<5?Gf"{n"As$ӄoE YX~ƙd\H& 6jɃ@ )X[t:0} PN< V3QHMŌŰ#R_goI9\evFH =~j0$p? c?o*vD`F/@T]5R uQ]0rMw%W{fR/%Q){4tW( Y^}zXB4>.n$n}&"? M+oH~c6H`_ [[ƋS?X* >in6 {_7I d6&3uЙ==uj$U6x@9~!}k/˹~U$8t;Z]{-"_6̋j^UdiYrsF;le,cS - 4 ca{bd!=ͯJ ܧ1ԄFeS%Av噪fx7CAOO29D6?|)yxuqfKc'q",)ʃp6!'  W#u5"Eb徰`F<@ldpS%W^doM:;obחb2~P됐 3zh2z:9=|(Q_V*X]4hXv)czNVM?-mrQh-ZSH ,4@GM;Uʻ&SO 6J50[9G3D2 ޢ%ɑ"\nHjʍ@L_d\*wA;ړ2yu!iIaR”K<:|a"A:ɸLZ;UMiA!MQa~Mwe."V0C9ӘE4sLg֎eM}"LմsUdžrl<Ĩܺ:4hn ]g9nu5+^AV$—>9[iX+%|9FAfGBq>T: +A#BC\ůf\(vZA {bVY^DIMEǿS6~+h"AS"~HX SLbEA_QK(f03jJKf_-$4)wWVLM?vo Y.o7;zŽ Pחڸvaޙ! + Xw1s=7M>k'"j8a3AHhRsoxݸ XE=nSrs_4C:Q؋l'6G#-MKU)}5l:t]rz>YnB6D'ۓ~.D{9z$Iy}Gf9쉦k!9RMH @+L!R1njkN9WnJ6|H7\X* KNug`YԇtzÐ`J "d^Sj0YGI*JEȼ{ɒ!6EBѾHEDZEiEYҢGe{^J۹{=|?sgJ;^1?zw5~b/vt;~,ک?}+miU+fE2Y':^\XArziҶL,异XI~jRqVG:7r_iwIn)I9.AV*N器ZJr1LSJErAY 1U߯XP2D|;LJ+IRFyﶔ>K;h{b*M]y^_妙N]SF jI ,]5{eiƲk'f=7B"++UsTXc4/ ;AO.E1E?Z::~91 5uC%4֍`f\*C59O"[Y5%N)HnO܌6hO`Sq``?Fm9ocuopAU-pEz]p}ԵLPHt.&*Z+,j}!Ex")3jɃV'uJTꅭ)bG|rZ"yˤGyB}݅VF_6=1Fh۽e7>9mvFXﻱu/^I>LEt_z|e"!d E?ucvgzSͣM4syo_$8DE0rwxY!EyCO"k,tἓſ$%+Jo@l$"h+7Rr0r`]/U -fz9{"eNV e{։,~ȇQS,{Ox9%W P)+ W4gJ\YwIH^g׆4?>A>i?eCeʐlDI(p[)O,ޖ5'):UWg< .MXzT;ͷfQ黤TKJKg|`(Mnx7V#<뷨Ř_ժ ތ+v˗C*N{d=4qx0*b'cORxlUX&-j¼ c} %qie[đJp}N_lv˗q ӆa.C^YURs$L +S`5 F[. a#oӐYRzɚ Ɵ tZW:g :& x|P[ ?TV+kK+~yG9Ta G,ׂէLcDZ rk\,xo" [9bln[Yqǭ\Yr@1lvk}ʡtq^ǭܿҡ]nq+W7&F9e\d\de缗[9LVk}=Z!F`rʸd{ 7{kK .vs GOXj1Ar C J٭ "Ym2#.2eBAš\,658X^ #(\eE. j ()3{Lk^Y{7\dmlk kbM2p}*n?Am܃Z+gm9(Ah0 8魌37q*Z݅ǦJg7v?C?Cg#޸9c-2x;wjs(us1pJaEZ7:{{zze2=z v^s 85;˒:{o ;H%L'Ư-57Kd]c8Q`hnP&qc3=ᎡDC @"ѿ :}Op3'2}3}1K VEDx7' 1ntxpsNn9yNL&8#5:Dd]!BDj{BϻBΧp6S@>>xYʺ:CG '؂8V6q[Є5vܙD O@ @ Ⴌ+@w|6dAGrbm|8y4n =pcP#tbNBHu D R?awZc [r# |!8x whT(yr"s""qǹomg v-!O cf$Ya_rT>cD;* e_m=Ĉș^cC-;]Y\ b}&aa繠k$@="ݕ%ʼnJG._s!dB8]sjK<#xBㅮϻFE"*X@%5r3n\1$x"'tg\xh1ֆ8Swf?!sj κ${ զsL3=翹"p5oyHӌȥ4=#957-p+D-|G]: Y_]iޙ ?nGԗ9m !A<%|nt {Wb#5{ 4 =-vu1;s[10Ctяʹ#~ä3GwFH0$OXyYr80_YȵtAmލ>VJ[~ܺ< Nk$k $|>Drh ߲v%:U Yc@'n6?\RX'p~E-o::s_qN+#е%s8%΅Z6/r['tH#ެnᖀy>'@B} LOpO {<'@H;Y @p K-otibj{#O9<"rD'(]y_ W #i1R9; X)-8"0нWWK7-p]HczZ- s DԜxs#gFt#8 ja0*GY2|71@}c'wf/_k^*0iwx D¯#t=Ms#`k--q2'8cR=Ɖ] c= r\{91z]||"$G9lG?s"XcotfxY DI+~qNx! 8dmAAwp+u7?YsA{Z/@p~ 8tvǬCԏχ9?#CQn6:& 6ap[ GòzA-mTF,ocDsZ~ )Bў7 ~?<13C6ʬljdz~O!-Alcy^GBPv1cQim,lOw(9G(H& ՠ3 t oLOh=LZ3 b"K?=5t X/rt<;Ao iV_>B @3YTO3`-NpEu1@.$9c^<6:w#=:9Ѩ[HYަ>la ɟ$z:WE&d8zJV hۦ7KA"4 ZZE iُ=5x}Pxb-32@,&HFgl#Ev4SfLmA<"H(2hDɾ0@}I! >}j` V ,jx}hOd~SQ_,県4:k ϶XActV G^Q^Q2 9^dib|YǾ{mN(dӇNBˁ4rt_1='P+, u V;8B :kV) BG3w@v"i;P9N*DR:s/93I߁x"Iα^;[=f,v6G z:wN2,Z=A!}v6@g /:8{έIsjݼ(aJQӗ򘪧!>t:S3)Ah>e#]3"U2<^r%"C;'Lipų Lkt5Hg@2}ɍdCBCԷ17\{J"ѹr27::tm"HRZݠ3?I0Rr3,O<P/ڬj8OWl|YY6[C+ rY80j3qϿT̽ݱ_2c`!BC(q^ֿfFZC== ֫wt[j2[Wh3{]q5>Iw&$0['Ü3 )T|'Do7%SޔetI2e]?}T_Z'x6p/"W~ )X󞂨 ^Cz#LŢ޵#Kf98>Bwatk9kY@نSfa b l2e}3]4kݰc+RpyM# lDڌO.wڀl,˩EOFvvsaAE Tt[oa2ANo@=Wq5 #AP xGJF#̲Dzd~Nb/H:f.E9X(`>[zU I"M EEMey9Iup W! ->⒥߹jUJ)7S( h֩eUd]~TT!miͳ^Kbtx^HhSdf85z󓏪ٔ>\Z[IC:Yc^.-~ٴ*fRo"Ot]AUkA ĸS?Of--^.Nͥ ]V5]u6P :VD2n>W?6{TWW T =x6zE}J{{PӬk23GjC] Dž'g,ox}ɗWdmNLٳ~S]Gh,Z,)Ԙ'ac߷K1sԀé_my)#^ u-ej(Wf4fyMprnts .$KcEfƧ\ţ"2wRz*3ggAoֹO%uRG๚4`BWy H}$4Xw dzy"ȇr^w+}U@i{ ZV[6)]c$I5v˒[bmY%~JTWʓUl8WBiL.oMaFYx5/ :=)$(_+ƷGMfҖӮ>vҎs} lY$K\̙%75]HΐU=HSΛS2f_z 3d0cЎ:q 夵iꆓ?kB}]zrRa~zZԩp?*texZ^zp 'WkTngo>dT"AϤ[vtn R,!dyv΅Q?[taF;HYgvۛ;;!6l*hbW.Mє?fٙ'ǭs )?![ucEl.1HHuvh+s';Ub+Se5>홵xb'=ZɎܐE)-aL0xfɘ'LL1,6/si2j]a! ΟlQ童sWg~y|lzzw|f9sr>_'گ+OZZڅ.~)G+|Ɛ# "數9_-:?f#ɂwr IxS{y.e6?S7`0e-0{1pرs[/]f?d.ugD#*.nxBfxEr `ˌ͕ RN6>wyt^Y.xhهny&F(鰯wN8te7m} t| >hT]-H;ϗ0Nͦ^ܪJ|cMJ= *oQ\-gt?[S8FΕ74~r2kIeS Vgr)6jDT}p\}掀cW篴<9UdN_:Ƒ*Glnz{ύj~>)jKU%}:I -^]%8dXeo *lƘȿMJXSlc7h{F>kVQD1Snw[4_,Ty$*xhȑYEn!wa߷Cvl~-ommvU|UWZ/ZZmmkMnry _w9;pI4ҳ\d%4^[Vb΄;y|iXsϘ)hbWK'40Pp3aSaLTć"8w\' 8&exsxPKm)9.=F2l"1!^.HLc  %\DbOhG^m9R3}U]^qBGszE|8V=do/1g\K$C O8/(W]<5^E D._%\{#G0//9)"㒺 Hx=6KjIѷ^‒c&VT祴y %zɓD ;|T׮q%¥KDUO>!v4ENH}m#ˤG<q%(Ν?<~(Q GW{Cp5֐6385Q0;{:E۷Ǐ#,%ad?p7U߽Qb͌qoX[څaAޢ,h4b! ۲hL3H;H?\i+mH 9v EoD阛9nJ"0oD7n71vLi_p(֑}ñZ\YS[= ^5r"^pxQg pg p8#'%{-yLNe:C*dg#ӾrΊ3iyo$vͳN '[VTMKr0ӮIɞ./<ޏ^UM?Ħ晊B)HQ4ܜ ;&'Tɘ'N|* ub8Tk m9;ey[v4u*H>Qc*c⠽*[I]>Rz[ˮCmYۯk mZqv;.Gy4R-*RmOU^zCZvҍ6o}Qsj{d&A׿_]UW}p␂ Կc+lrV]'j Jd6eKu%ܗW-8o铳%:~M+Vt;m5zU''[g6-q|m?"ԛҾ9'XꚖ,msiWv~_}s3MEaMcY[Hp!p{g==oos8%ƅek5NsZ=w^d>9?3ޝԔ=k Z y'Wq\K]a}vcnQVVV_blp4DNf6Ɩ< e#sj~ZVj4p9v9',SCS;:Ґ9/1ؿ~(RpNf/Q˷H |뗼2:[&Dsy|R#p9oQkߥ1zȜQcxXIiwcQ` K3 f3#W'c)TА~0y :]R2NTbq(u8JqF JL`LyHL|vdQHstexgw|zta=IQnRi6^B]#ǁhaNŏyOq?PK!H drs/downrev.xmlPJ@}e&4fS X6 K]ԯwb<6gΜ3g&MZtAH#lݛ.75WHgaW\_VtEyopCIqi&QҐ<_ӑۛ|?K MqRuKqVgGqzDX5-20g :[{X& ,+~PK-![Content_Types].xmlPK-! ?_rels/.relsPK-!! <drs/picturexml.xmlPK-!" B!drs/_rels/picturexml.xml.relsPK- !  [trash]/0000.datPK-!-S4drs/media/image1.emfPK-!H sZdrs/downrev.xmlPK[' @ ]&` ?3d23 M M4 3Q  Middle NeedleQ ;-.Q ;*+Q3_  MM   dR R R R R R K"#S S4ES S 4 3Q  Inner DoughnutQ ;QQ3_ M 3f  MM<43_ M   MM<43_ M   MM<43_ M NM  MM<4E4 3Q  Outer DoughnutQ ;QQ3_ M   MM<43_ M   MM<43_ M   MM<43_ M NM  MM<4E4 3Q LabelsQ ;JXQ ;:HQ3_ M MM  ##d R R R R K"#S S4ES S 4 3Q  Blank DoughnutQ ;QQ3_ M NM  MM<43_ M NM  MM<43_ M NM  MM<43_ M NM  MM<4E4  3Q  Tick MarksQ ;Q ;zQ3_  MM  %%dR R R R K"#S S4ES S 4 3Q  Low NeedleQ ;$%Q ;!"Q3_  MM  &&dR R R R K"#S S4ES S 4 3Q  High NeedleQ ;67Q ;34Q3_  MM  ''dR R R R K"#S S4ES S 4D$% 03O& Q4$% 3O& Q4FAs3O3*?#! M43*?#! M43d"  44As3O3" 44DC˯`h?C˯`h?Lyi?Lyi?%  5@3O&!Q:i  0.27'4% U5@3O&!Q:j  0.07'4% @3O&!Q:k -0.08'4% . @3O&!Q:l -0.20'4% 6 Z@3O&!Q:m '4% Z@3O&!Q:n '4% Z@3O&!Q:o '4% =Z@3O&!Q:p '4% -Z@3O&!Q:q '4%  Z@3O&!Q:r ' 4% T Z@3O&!Q:s ' 4% 6Z@3O&!Q:t ' 4% T 6 Z@3O&!Q:u ' 4%  5@3O&!Q:v  0.50' 4% 5@3O&!Q:w  0.06'4% 3O&!Q'4 K^M K[S S 4 e??Y i$??Gz׿3_ڿ@@e}$޿@Zd;Oտ"x ?%c@@^z.@yQۿ'vO@VjztQ@GzQۿZd;O wQ? 0vO @? _jzt Q?  @? Gz׿ Q? -Zd;Oտ@k&{(fffffݶ(\Gz?Zd;O?-vO?\jzt?Gz?Zd;O?0vO?_jzt?Gz?.Zd;O?e$I$I&@$I$I&@cW?0vOt}оV?m۶m2@m۶m2@)?_jztau?N@@Q5@Gz׿Qۿ-Zd;OտƶxQ?33333@?GzQ? @? Gz? Q? Zd;O? fffff^<  vQۿ 'vO? @ Vjzt??Gz?Zd;O?0vO?_jzt?Gz?Zd;O?!<q= ף<Gz׿Zd;Oտ'vOVjzte   VA??Picture 568 f%]&` ~~ 9 <п; CC@`],9@п;  ; 9  $<4%<DNA~~ : <( % CC@],:@( %   % 9 $<6%<DNA~~ > < % CC@],>@ % $ P % 9 $<8%<DNA~~ @ < % CC@+],@@ % ` T  % 9 $<10%<DNA>@AB7yK www.ProbiliTech.comyK Phttp://www.probilitech.com/yX;H,]ą'c Sheet1ggD  (sIe  dMbP?_*+%h&?'?(?)?"h??&cU} .hhhhhhhhh h h h h hhhhhhhhhhhhhhhhhhh MM MM M M M MMR@MR@ M MMU@MU@ M MMR@MR@ M M MV@MV@ M M M M M MM(< Z1GStpER4qIzYyUj0mUj4+HUofJSkVJz0pU1EZOR5TRjolEBw7NBE3WiZSREo+F0NEITgaND8aNDo9Sj4rKjYtNR1HPCg0HT5QRzpMOh08OSkbH0wgNzEqKxUTKkIJKmpCXjBAPCEjPD9NHzpFLTFBNB8bHxsjIiooHysTMEUaQDJKQh8hNTRBQ0cqVxsvTTRCQx09R2gtIzgjRT4qFnpHRTIPOhw0JjAXLSY/MyY1NiUpMh4dLFgyTzIWaEIhNSQpISYwHzAqLjM7IB45LBEyQys4QS0vJhsWQjE2IjEeQixILDkbLy9SMypKMy4hMkc5SRkqNCUxTR44JU0vNSc/KCoiMz8qGCUuQT4pPGRLFj9NORsfLRsUPDdGOjEvLy88ICY5PCw+LT4wLiY3PDtTHxwcKkw5Mhk1IC43MyQ6SyUdOEYyRwtTMjU4L1MsJCkkMSwfLCIqUkUyPTcWLEo3QBESFiklQDw5ISYgFUdBNRgsTRg0JDYqQSYwKz0oITBOOCYeJUovKzQWHzdWHlQlIDsxTzpOFg1OJigiVS1QKTpAPRtYTTo/Ly83SylbTC4qH0oNQx9IOTY/KTogHxkrPBsrTC0kOzohQR0sTjMmGilKNxlGJCYYSDYoGjFMGkQpICNTGyZDJB5HRy0mHh8lKiEjLy4nJhckQx8oLh8tISBGFSdLUUIrJBIjLT5BMi0wOSZIWyU5HSImFS4rJ0EdITY2ISU2TCoSOjphV0AWLScnFhsbIg5HMhcANyMPOSYhIjw+Sh0UHz9EKydCNiErPzU6Mz5EBEAhWT4kXTcaFzEqKhZOKyUkMTF3SShALlgoMgcpOCxIKzASDCI8LS1DHG1hQTo9HSs0NRsyLzc8Lx46Mz8qQSEgWlEsKjJHRCE3IzpHK0wjLCdKKkBHMDIrOTgqJgpCJU4+NzEgQCtBMR0lJjElJDhJE0QXIWZCK1VFMTg5Li8cPD0dKSIQRTNHTUw3GCsRKg8kOjUjHB5EMz08RkcmOQgiQTQzGERCRGM2OUEWGjAqRD0bFyIpPB05NDFgJRsWKns4IhY7ZxZNKiQ1NBQgHz4tIyNBLCMwLVwxKCVGPDQWHjNJGx0rES86NUIKJzUtP01CUTQnPCUoKCsXQTkgOx8jKENFKzZMLEcpJRVCWBYPUi0uL0A0Rw87MCtQJB8aJDodLDE7ORtKQCoqHSA7EU8QMBsxMR0fIx4rDTE7aCImMiU2JCY5NlAvNSUzOzwyOTMyR2EoJjFDJQk5ESpCGjQEITEhHDEvODclMTYqGCk2IzUuJDQiMy0QNiklMiIwFjsvTTglNUMyHCctPDAxLzZCKAAAWQ? Z  M M MM MM MM M MUM ?@@DD\@DfD\@@BBUM$I$I&@ ?@@DD\@DfD\@@BBM3  DMm۶m2@  DM@M@ M M M MJM 4D@Df@D\@ AAAD@JMДK 4D@Df@D\@ AAAD@ M MJM H4D@Df@D\@ AAAD@JMGP߿ =4D@Df@D\@ AAAD@ M M M M M MMS? Z2W΍? (Z3Dd lF h!h"h#h$h%h&h'h(h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;h<h=h>h?h M M!MMQ"M;Oh %;D@D\@Df@D\@AAAD@Q"M"x ? %;D@D\@Df@D\@AAAD@ #M #M$MMQ%Mˑ :;D@D\@Df@D\@AAAD@Q%Mau? :;D@D\@Df@D\@AAAD@ &M &M 'M 'M(M΍? Z3(WmK ? 1Z4 )M )M*MMQ+MJW? .;D(@D\@Df@D\@AAAD@Q+M3_ڿ .;D(@D\@Df@D\@AAAD@ ,M ,M-MMQ.M͔c? ;;D(@D\@Df@D\@AAAD@Q.Mt}оV? ;;D(@D\@Df@D\@AAAD@ /M /M 0M 0M1MmK ? Z41Wb̧ \Z5 2M 2M3MMQ4Mغ 7;D1@D\@Df@D\@AAAD@Q4M%c 7;D1@D\@Df@D\@AAAD@ 5M 5M6MMQ7Mzp <;D1@D\@Df@D\@AAAD@Q7MN <;D1@D\@Df@D\@AAAD@ 8M 8M 9M 9M:Mdr- J@D@@D\@@@@@Df@D\@@@@@@@@A@@@A@@A@D@@:MY i$? J@D@@D\@@@@@Df@D\@@@@@@@@A@@@A@@A@D@@;M? K@D(@@D\@@@@@Df@D\@@@@@@@@A@@@A@@A@D@@;Me}$޿ K@D(@@D\@@@@@Df@D\@@@@@@@@A@@@A@@A@D@@<M=1S3 L@D1@@D\@@@@@Df@D\@@@@@@@@A@@@A@@A@D@@<M^z. L@D1@@D\@@@@,@Df@D\@@@@@@@@A@@@A@@A@D@@=MyQۿ(]==G L@@L\@@@@Lf@@L\@@@@@@ @@A@@A@A@L@@=MyQۿ(]==G L@@L\@@@@Lf@@L\@@@@@@ @@A@@A@A@L@@>M@(^=>M@(^=?MQ(_=?MQ(_=DlBBJJJ`>@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh[h\h]h^h_h@M@(`=@M@(`=AMQۿ(a=AMQۿ(a=BM(\(b=BM(b=CMwQ?(c=CMwQ?(c=DM@?(d=DM@?(d=EMQ?(e=EMQ?(e=FM@?(V=FM@?(G=GMQ?(M=GMQ?(H=HM XD@@@D\@@@@Df@@D\@@@@@@ @@A@@A@A@D@@HM@k&{( MD@@@D\@@@@Df@@D\@@@@@@ @@A@@A@A@D@@ IM IMJMUlX i@D@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@JMcW? i@D@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@KM&E ,? j@D(@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@KM)? j@D(@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@LM> k@D1@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@LMQ5 k@D1@@D\@@@@@Df@@D\@@@@@@@@A@@@A@@A@D@@MM@(WMMW {L@@L\@@@@Lf@@L\@@@@@@ @A@A@A@L@@MM@(NMMW {L@@L\@@@@Lf@@L\@@@@@@ @A@A@A@L@@NMQۿ(}MNMQۿ(OMOMƶ(MOMƶ(PMPMxQ?(MPMxQ?(QMQM@?(MQM@?(RMRMQ?(MRMQ?(SMSM@?(MSM@?(TMTMQ?(MTMQ?(UMUMfffff^<(MUMfffff^<(VMVMvQۿ(MVMvQۿ(WMWM@(lMWM@(XMXM w{D@@@D\@@@@Df@@D\@@@@@@ @A@A@A@D@@XM? l{D@@@D\@@@@Df@@D\@@@@@@ @A@A@A@D@@ YMM ZM ZM [M [M\Mb̧ (Z5\Wɿ Z6]M݉ŘǷ(G] ]e LLf@L\@ ]Mp= ף(>] ]e LLf@L\@ ^MXG]|Ӻ(N]^MQ(?]_M83߽(O]_MpGz?(@]D,l>>>>>>>>:RRRP>>>>>>>>>>*B>`hahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh{h|h}h~hh`M'a uu(P]`MyGz?(A]aMvе(Q]aM233333?(B]bM+ÿ(R]bM(\(?(C]cMa}Qſ(S]cM(\?(D]dMܾ⤍ƿ(T]dM ףp= ?(E]eM:,>ȿ(U]eMQ?(F]fMɿ vZ6fW? \Z7 gMM hM! hM!iNS? +DiN΍? 4DjN΍? "D(jNmK ? =D(kNmK ? +D1kNb̧ >D1lNb̧ zD\lNɿ vD\ mNN nNN oNN pNN qNN rNN sNN tNN uNNvNɿ 1DfvN? wDfwN(0 "D@GStpER4qIzYyUj0mUj4+HUofJSkVJz0pU1EZOR5TRjolEBw7NBE3WiZSREo+F0NEITgaND8aNDo9Sj4rKjYtNR1HPCg0HT5QRzpMOh08OSkbH0wgNzEqKxUTKkIJKmpCXjBAPCEjPD9NHzpFLTFBNB8bHxsjIiooHysTMEUaQDJKQh8hNTRBQ0cqVxsvTTRCQx09R2gtIzgjRT4qFnpHRTIPOhw0JjAXLSY/MyY1NiUpMh4dLFgyTzIWaEIhNSQpISYwHzAqLjM7IB45LBEyQys4QS0vJhsWQjE2IjEeQixILDkbLy9SMypKMy4hMkc5SRkqNCUxTR44JU0vNSc/KCoiMz8qGCUuQT4pPGRLFj9NORsfLRsUPDdGOjEvLy88ICY5PCw+LT4wLiY3PDtTHxwcKkw5Mhk1IC43MyQ6SyUdOEYyRwtTMjU4L1MsJCkkMSwfLCIqUkUyPTcWLEo3QBESFiklQDw5ISYgFUdBNRgsTRg0JDYqQSYwKz0oITBOOCYeJUovKzQWHzdWHlQlIDsxTzpOFg1OJigiVS1QKTpAPRtYTTo/Ly83SylbTC4qH0oNQx9IOTY/KTogHxkrPBsrTC0kOzohQR0sTjMmGilKNxlGJCYYSDYoGjFMGkQpICNTGyZDJB5HRy0mHh8lKiEjLy4nJhckQx8oLh8tISBGFSdLUUIrJBIjLT5BMi0wOSZIWyU5HSImFS4rJ0EdITY2ISU2TCoSOjphV0AWLScnFhsbIg5HMhcANyMPOSYhIjw+Sh0UHz9EKydCNiErPzU6Mz5EBEAhWT4kXTcaFzEqKhZOKyUkMTF3SShALlgoMgcpOCxIKzASDCI8LS1DHG1hQTo9HSs0NRsyLzc8Lx46Mz8qQSEgWlEsKjJHRCE3IzpHK0wjLCdKKkBHMDIrOTgqJgpCJU4+NzEgQCtBMR0lJjElJDhJE0QXIWZCK1VFMTg5Li8cPD0dKSIQRTNHTUw3GCsRKg8kOjUjHB5EMz08RkcmOQgiQTQzGERCRGM2OUEWGjAqRD0bFyIpPB05NDFgJRsWKns4IhY7ZxZNKiQ1NBQgHz4tIyNBLCMwLVwxKCVGPDQWHjNJGx0rES86NUIKJzUtP01CUTQnPCUoKCsXQTkgOx8jKENFKzZMLEcpJRVCWBYPUi0uL0A0Rw87MCtQJB8aJDodLDE7ORtKQCoqHSA7EU8QMBsxMR0fIx4rDTE7aCImMiU2JCY5NlAvNSUzOzwyOTMyR2EoJjFDJQk5ESpCGjQEITEhHDEvODclMTYqGCk2IzUuJDQiMy0QNiklMiIwFjsvTTglNUMyHCctPDAxLzZCKAAAwNQ? zD@ xM" xM" yM# yM#zMGz׿ {oD\@D\@@@Df@D\@@@@@@A@@A@A@D@@zMGz׿ {oD\@D\@@@Df@D\@@@@@@A@@A@A@D@@!{MZd;Oտ  DzD @!{MZd;Oտ } DzD @ |MM}M'vO ~oD]@D\@@@Df@D\@@@@@@A@@A@A@D@@}M'vO ~oD]@D\@@@Df@D\@@@@@@A@@A@A@D@@!~MVjzt  D}D @!~MVjzt  D}D @ MMDl>>>>>>B>>>>>JJhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhMGz oD^@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz oD^@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;O  DD @!MZd;O  DD @ MMM0vO oD_@D\@@@Df@D\@@@@@@A@@A@A@D@@M0vO oD_@D\@@@Df@D\@@@@@@A@@A@A@D@@!M_jzt  DD @!M_jzt  DD @ MMMGz׿ oD`@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz׿ oD`@D\@@@Df@D\@@@@@@A@@A@A@D@@!M-Zd;Oտ  DD @!M-Zd;Oտ  DD @ MMMHzneݼ oDa@D\@@@Df@D\@@@@@@A@@A@A@D@@Mfffffݶ oDa@D\@@@Df@D\@@@@@@A@@A@A@D@@!Mntڼ  DD @!M(\  DD @ MMMGz? kDb@D\@@@Df@D\@@@@@A@@A@A@D@@MGz? kDb@D\@@@Df@D\@@@@@A@@A@A@D@@!MZd;O?  DD @!MZd;O?  DD @ MMM-vO? oDc@D\@@@Df@D\@@@@@@A@@A@A@D@@M-vO? oDc@D\@@@Df@D\@@@@@@A@@A@A@D@@!M\jzt?  DD @!M\jzt?  DD @ MMMGz? oDd@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz? oDd@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;O?  DD @!MZd;O?  DD @ MMM0vO? kDe@D\@@@Df@D\@@@@@A@@A@A@D@@M0vO? kDe@D\@@@Df@D\@@@@@A@@A@A@D@@!M_jzt?  DD @!M_jzt?  DD @ MMMGz? oDf@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz? oDf@D\@@@Df@D\@@@@@@A@@A@A@D@@!M.Zd;O?  DD @!M.Zd;O?  DD @ M$ M$M0vO oD\@D\@@@Df@D\@@@@@@A@@A@A@D@@M0vO oD\@D\@@@Df@D\@@@@@@A@@A@A@D@@!M_jzt  DD @!M_jzt  DD @ MMMGz׿ oD]@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz׿ oD]@D\@@@Df@D\@@@@@@A@@A@A@D@@!M-Zd;Oտ ? DD @!M-Zd;Oտ  DD @DlJJJJ JJJ JJJhhhhhhhhhhhhhhhhhhhhhhhhhhhhh MMM33333 oD^@D\@@@Df@D\@@@@@@A@@A@A@D@@M33333 oD^@D\@@@Df@D\@@@@@@A@@A@A@D@@!MGz @ DD @!MGz  DD @ MMMGz? oD_@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz? oD_@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;O? A DD @!MZd;O?  DD @ MMM'vO? oD`@D\@@@Df@D\@@@@@@A@@A@A@D@@M'vO? oD`@D\@@@Df@D\@@@@@@A@@A@A@D@@!MVjzt? B DD @!MVjzt?  DD @ MMMGz? oDa@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz? oDa@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;O? C DD @!MZd;O?  DD @ MMM0vO? oDb@D\@@@Df@D\@@@@@@A@@A@A@D@@M0vO? oDb@D\@@@Df@D\@@@@@@A@@A@A@D@@!M_jzt? D DD @!M_jzt?  DD @ MMMGz? oDc@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz? oDc@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;O? E DD @!MZd;O?  DD @ MMM!< oDd@D\@@@Df@D\@@@@@@A@@A@A@D@@M!< oDd@D\@@@Df@D\@@@@@@A@@A@A@D@@!Mq= ף< F DD @!Mq= ף<  DD @ MMMGz׿ oDe@D\@@@Df@D\@@@@@@A@@A@A@D@@MGz׿ oDe@D\@@@Df@D\@@@@@@A@@A@A@D@@!MZd;Oտ DD @!MZd;Oտ  DD @ MMM'vO oDf@D\@@@Df@D\@@@@@@A@@A@A@D@@M'vO oDf@D\@@@Df@D\@@@@@@A@@A@A@D@@!MVjzt 4 DD @!MVjzt f DD @ MMMM>$0JJJJJJJJJ\f v >@vr7 Sheet2ggD ThisWorkbook __SRP_8-\__SRP_97Sheet1 :   !"#$%&'()*+,./012345689;<=>?@ABCDEFGHIJLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\8 }}#<j D|x5lFچrF&#BxچrF&#Bj D|x5lMEPSLSS6" <<N0{00020819-0000-0000-C000-000000000046} `k@ i `\Mi e "``|k%( %X %$ the values  q`@ 00000000000000@l @\ 0000@0L @H< 0000@`, 0@x 000@ 0001@ h0@KIK$*\Rffff*0u4bef0a8d$*\Rffff*0v4bef0a8d*\R0*#144 "   8 2H :+  "   x2 ThisWorkbook.Names.Add is_active_string, False, Sheet1.Range("on_off_indicator") = "OFF"hr($0The model has been modified and cannot be saved.A@ 'k oA$oAttribute VB_Name = "ThisWorkbook" Bas0{00020P819-0C$0046} |GlobalSpacFalse dCreatablPredeclaIdTru BExposeTemplateDerivBustomizD2Option /licit4 P#' Sub _BeforeSave(@ByVal AsUI As Boolean, @Cancel ) ' .s.Add is_act]_sng, `Sheet1.Range("on_off_indicator"b)OFF1I f Not-IsAuthentic() T@$ @MsgBoxe mod-has beenifiRand cannbe s?d.D;= SE@ If=AQUOpen(IlPC`_s? rU  I.  q $4  9  `` IWD ?+'''<:lN\\ 6\< D$ \<<   $ 44PrU @,`9 Y #$A` nG}F#xME (SLSS<N0{00020820-0000-0000-C000-000000000046}@(%H@0KIK xpAttribute VB_Name = "She@et1" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2Option /licit r }жxMEModule1Kz __SRP_6B__SRP_7Sheet2(6 << < *x`@p &Macro recorded 7/18/2009 by Sam Savage 14 F`   H`   J`  &xMacr(%pX8KIK$*\Rffff*0t4bef0a8d3"   .0 ,`  . ( " 0 8 @ .` ,  .0 HX " ` h p . ,  .0` x"    . ,   8H.`   Four_Percent MacroJ1' Macro recorded 7/18/2009 by Sam Savageg& Application.ScreenUpdating = FalseFour. ,B@ 0B@2E8$4B@H  :8 ><@B 0B@6E15$4B@H ,(Dox Four_Percent Macro' Macro recorded 7/18/2009 by Sam Savage& Application.ScreenUpdating = FalseSix. ,B@ 0B@2E8$4B@H  :8 ><@B 0B@6E15$4B@H ,(Do Four_Percent Macro' Macro recorded 7/18/2009 by Sam Savage& Application.ScreenUpdating = FalseEight. ,B@ 0B@2E8$4B@H  :8 ><@B 0B@6E15$4B@H ,(Dop Four_Percent Macro' Macro recorded 7/18/2009 by Sam Savage& Application.ScreenUpdating = FalseTen. ,B@ 0B@2E8$4B@H  :8 ><@B 0B@6E15$4B@H ,(Do@8Attribute VB_Name = "Module1" Sub Four_Percent(X)  d.~Descriptionacro recorded 7/18/2009 by SamvageeQProcData]Invoke_Func] \n14<' ' | Mw Applica^.ScreenUpdng6False GoTo Reference8:="MSelec*Copy!Range("E8"). PasteSpe cial :=xlValues, OperY None, SkipBlankHs _6:=a, TransposR j$15L$FTruFEnd SixIjzTjj(jjƖjVXjEigh:t5ojzj= ,Pej5jjj 5 js5Ten?5?5&?5?5 `44444"4oôjrU~| 0  0 x  0  0  \rU $` $`$`$`n'}[`#xME (SLSS<N0{00020820-0000-0000-C000-000000000046}@(%H@0KIKxAttribute VB_Name = "She@et2" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2rU $8`!aq Unnamed---single/,`q!9Q/(`!/(`9!MakeDistGetDist __SRP_2&:__SRP_3ModuleDistXmlFunctions.0En#4*\R0*#1a*\R0*#19*\R4*#5*\R0*#f*\R1*#337*\R1*#10d*\R1*#fc*\R1*#62*\R0*#e*\R0*#14$*\Rffff*0v4bef0a8d$*\Rffff*0u4bef0a8d*\R1*#116*\R1*#280*\R1*#281*\R0*#17 4 8@H P `p     0 @:P, B,0Pp      ( 0@ P Xh x   \;a= }. xME`@ (L L> LLLLLL "L`<` 4`"` ,`$`(`&x$`( `*0 `, `. `4 f :` ` x  ,I< %Returns DIST of averages of arguments 16`  %  % @ %`  @ ` *k  LI< $Returns number of trials in the DIST 16`@+\  X % T@ % P` %` L D` P6 k lI< Returns name of the DIST 16`\  X8% TX% Px% H`   I< !Returns minimum value in the DIST 16` @% `% %`  L`(   I< !Returns maximum value in the DIST 16`  `%  % +%` + P` hP, k I< >Returns data storage type of the DIST (single, double, binary)@  16`\ x X% T'% ,P % T`Hp ( ##I<   Returns origin data for the DIST' 16` X % % '%+X `Pp 0  i +Returns variance of a DIST 15``Z ++bh `0  !i $Returns standard deviation of a DIST 15``Z +hx `  7i  ij Returns covariance of two DISTs$ 15``l$`Z $`n +t `   Oi $pij  Returns correlation of two DISTSst> 15` `l`Z ssed`n tine z `0  gI ing.I| #Returns k-th percentile of the Dist 16`~ An u` s oc` arr ` "hk `X o  `j la i˜P@B˜RB˜V(Cʘ\xBʐ`HʐfH ˜jB ph @˜t*Bh0(X xh` hx@@P8 N %`l pTV@ " single\^  x  H `  (Xh@ ` @  @ @ x @@ @ @ '&@ ',X''@ L@ L@ P@8 Pj@P 2trPRZ@h @ $@ @ $@ $T+s$@ $(y@ Py$@` x8} @ `} ` X@  @  @  8 @ H '*X  *8, $ @x '@t '( @p (  @ l 8 @h H H!!`!" 0!!@l  ! ,@!d @x!T @D @!4 @!0 @, @! @ @ )"#"prx @ #h @8#X @P#H @h#8 @#( @# @# @# @# @# @$ @($ @@$ @X$ @p$ @$x @$h @$X @$H @$8 @%( @% @0% @H% @`% @x% @% @% @% @% @% @&x @ &h @8&X @P&H @h&8 @&( @& @& @& @& @& @' @(' @@' @X' @p' @'x @'h @'X @'H @'8 @(( @( @0( @H( @`( @x( @( @( @( @( @( @ )x @h @8)X @P)H @h)8 @)( @) @) @) @) @) @* @(* @@* @X* @p* @*x @h ( h H  +,+++ ,@+x+X+@@l h+@+@+< @, @ @ @ @8, @  @ p--@-p---,(--@Pl -,@X-@ @0 @ @ @ @- @ @ p P.8X`/86. /8/0/.x5.`vx..P/VT@/ @/ @x/ @ /8/@P0 @h0 @/ @/ @x @0t 0/7@0p (00700@.ZPpR@5l @0\ @0 00[@2  10[@ @1 (10m@H1 811m`11o@p1 1H1r@1 1p1r1p1t10x@1 11@h2 21021@@2 X22@3 2@2@2 2h2@2 2222@2 32@83 32(32P3@2@`3 x383@3 3`33`3@3 33@ 43@4 (43@H4 844`44@p4 4H4@4 4p44p443@4 44@5 54054@@5 X55@ h5@5@580 @5 @5 @5 @5 @6 @ 6 @ @ 6@` 77@7p7776(77@Dl 76@X7@ @0 @ @ @ @7 @ @ XX$5KIK$*\Rffff*0r4bef0a8d*\R4*#6d*\R4*#1*\R4*#9*\R0*#13*\R0*#0*\R4*#6*\R4* 0 ( 8@ HX `h&p$    (08@X `x    08_H8_8_$!(;((;P(;x6R*;6. @ $Px       0  8 .8P        4' 4' 8 X ` h  1              (  8  H  4'h  4'          1  @  P X  ` p          -      &((  P ` x         4' 4'@`4'4'  18 Xhpx               4'8 4'p   4' 4'  X x   1       ( 8@ X` x        4' 4'X 1  0 @ P X h x         4' 4'@ x    1    (08 @  08~4@  B  H(@Xp     ( 0 8@  `&p / ) 9R$@HP 7X x    777( 8Hh!   (8 H P X ` h px    @W  `p,$x4'.$ 0@Xp(9x,E%  8 @#H`#p #  &;   &;0  X  p         @W  8!H!,$P!4'!.$!,$!4'".$P""" " " " "$""##8#X#p#,Ex###%# ##$ $#$0$#@$X$p$ x$#$$$ $ &;$ $ &;% (% @% P% X%p%%%% %%@W% &(&,$0&4'`&.$&&& & & &'' '@'X'`'x' ''' '''.' ' (@_( P(`(((($((( ()# )8)P)"3X) ) )#) ))) )* *** * 8* P*`*h*p*x*G******** * +++ + (+ 8+H+P+x4X++ + B  + +++,  , ,@,H, P,X,`,  ,, , ,, - -  - (- 8- B @- H-P-X-h-  p- --- - --  -&- /. )0. 7H. h. x. . . . B . ...  . ../ / //  8/&H/ /h/ )/4/ / / / / B  / //00  0 (0H0P0 X0`0h0  00 0 00 1  1 (1 01 @1 B  H1 P1X1`1p1  x1 111 111  11 2 82P2 p2 2 2 2 2 B 2 222  2 233 3 3 3  @3&P3 /p3 )343 3 3 3 3 B  3 344  4 (4H4P4 X4`4h4  44 4 44 5 5(5 05@5 H5 P5 X5 h5 B  p5 x5  5 555 5 555 6 6 6  6 B  (6 06  @6 P6p6x6 6 666 6 6 6 6 B  6 6  7 787@7 H7 P7X7h7p77 7 7 7 7 B  7 7  7 8 8(8 08 88@8P8X8h8 8 8 8 8 B  8 8  8 899 9 9 9 (9 H9X9`9h9 999 99 9 9 9 9 "9  H:0H:8f; X= B `= h=p= mx=+= = ==- DstCreate/Dst 256 bins Base64 multitype v3.080]]@]-1]-1h]$ (]$P ]$]$x]$ Avg=]$ Min=]$ Max=rle]$ Count=V]VY]YU]$ X h Z  j \ ^ ppe] X h Z  j  @63]0h2]*Xcm single Unnamed---] ]8Ph]](]@Xp]]$Error:Demo is inactive.'vzk |$singleKT' Single 'doubleKT' Double 'binaryKT' Binary 'Sh' Custom 'nH z'' Sip is Range or Array x$Range' x!! x!! x!!''d x!!'k' ' x$  e' Sip is Array x' x x  ' x' x'd Y(X 'vzk x' V' T''      $'d  $'k`   G 'j   G 'j   '   V''k  '    ' Z$ 0.00000000E+000$ Z$' Z$ 0.00000000E+000$ Z$' Z$ 0.00000000E+000$ Z$'' concatenate array characters]8]p]'       $'d  $'k       P 'dx P'kh $+$ $ +$ $@ +$@ +'   $ $p' H'  + k  '  +  $+$ $ +$ $@ +$@ +'   $ $p' k e      $'dP  $'k0        P ' P 'd     P' '    P'kdx''k` $+$ $ +$ $@ +$@ +$+$ $ +$ $@ +$@ +'   $ $p' '  + kH  '  +  '  +  $+$ $ +$ $@ +$@ +$+$ $ +$ $@ +$@ +'x   $ $p' (k  e''     ' '   $'d  $'k   'kX  R  '  +''k $+$ $ +$ $@ +$@ +'@   $ $p'  '  + k    R  '   '  +k( $+$ $ +$ $@ +$@ +'X   $ $p'  k d k ' 'vz    -Error in data passed to EncodeString routine. Trial   (  based.)  Click 'End' to abort processing. B@z A@  '  d LAn unidentified error has occurred. Lookup table arrays have been recreated. Try DstCreate again.A@ k8i0A This function can only be called from a formula in the worksheet]] ]8Ph]]]0]H`]x]]D]  + $Error:Demo is inactive.'zk  ' $ G j (  %G j !!G j %.0 %!' @ this means there is no node value, i.e. the DataString is empty'k type !%!' $singleKT'doubleKT'binaryKT'S('navg !%!'min !%!'max !%!'count !%!'    ' X ''']`  ]    ]0 H ` x ]  ]  ]  '$'&'('* T', V'.''     '0    '   Gyj  $$2 t $r +  $$ +$ $ +$ @$ +'k  ' $'  P   +d  P   +kX $  $   'k  $ ' $ . $'. '&'* $ .e * '* $ , e $', '$'( $ ,e ( '(k    &$  * '  &+   $$  ( '  $+ e   '0H   '   Gyj  $$2 t $r +  $$ +$ $ +$ @$ +$$ +$ $ +$ @$ +'kp  ' $'  ' $'  P   P   +d    P '    P'"  " +k $  $   'k@  $ ' $ . $'. '&'* $ .e * '* $ , e $', '$'( $ ,e ( '(kP    &$  * '  &+   $$  ( '  $+ e'    '0h   '   Gyj  $$2 t $r +  $$ +$ $ +$ @$ +'k(  '   ' $'k  R   +d +k  R'k` dHk@    * (    '  Z$ 0.00000000E+000$ Z$'   '   * (   * ( 'dX    * (  'k(   $ .  + $ ,e  +d $  + $   + $  e  +kk kkkd    + k] '4 ,!6!8G'4j X  4 'd0 $'kz  Y('z0A@  '  d LAn unidentified error has occurred. Lookup table arrays have been recreated. Try Dst again.A@ k(i 8 ] ] ]D ( ]H $Error:Demo is inactive.':zk> <' $ G>j (  %G>j !!G>j %.avg !%!'  X':z> Y(':i` ] ] ]D( H ]h $Error:Demo is inactive.'@zXkPBH <' $ GBj (  %GBj !!GBj %.count !%!'  X '@zBx Y('@i` ]] ]D@`$Error:Demo is inactive.'DzkF <' $ GFj (  %GFj !!GFj %.name !%!'Dz8F0 Y('Di]](]DHh]$Error:Demo is inactive.'HzkJ <' $ GJj (  %GJj !!GJj %.min !%!'  X'HzJ Y('Hi]0]H]Dh]$Error:Demo is inactive.'LzPkHN@ <' $ GNj (  %GNj !!GNj %.max !%!'  X'Lzx Np Y('LiX ]p]]D$Error:Demo is inactive.'Pz k R <' $ GRj (  %GRj !!GRj %.type !%!'Pz0 R( Y('Pi ]x]]D$Error:Demo is inactive.'Tz k V <' $ GVj (  %GVj !!GVj %.origin !%. 'Td !'Tk z V Y('Ti ]x$Error:Demo is inactive.'Xz@ k8 \0 ' $'Z Z ,!^%`'Xz \ Y('Xi ]8P$Error:Demo is inactive.'bz k dx ' $'Z Z ,!^%f'bz@ d8 Y('bi h]0H`$Error:Demo is inactive.'hzkp ' $'Z j'l l$'n Z n ,!^%r'hzXpP Y('hi8x](@Xp$Error:Demo is inactive.'tzkv ' $'Z j'l l$'n Z n ,!^%x'tzpvh Y('tiP]8Ph$Error:Demo is inactive.'zzk '~ |' ~$  $ Y('zzk    Y('zzhk` ~$'   ,!^%|'zz(  Y('ziB 64 safe characters for encoding use. As used for standard Base64.&JlABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/D@'p"0dp?@56789:;<=>  !"#$%&'()*+,-./01234DP'ro]  %! ,%' G'j 'i@8Attribute VB_Name = "MakeDistGet0" ' DstCreate/$ 256 bins Base64 multitype v3.0^ Option Explic it b 1 Const BD=OtsPerPChar8MinStartL20ax-Pubx f@Length?3H2 um16 CountG TyAvgHTexY" =? iaxaxMyExtraO.5 7 =He0aderO+ 3 * (M+ NQ) +@]Mp_ + GO&TrialsLoci~+Dim#de_Values As Va@nt, pDecoQE#F(loo4Fu nc(Sip, al S-%AS@ng1"Unn@d---", BCG Param si0ngle OriginK "), GF-.De0scrit~Retur`za DIST c}d from the `array`X ProcData! Invoke_% \n16 1.Ro>wK*K ip s % TruM-Q)=VsHC> vbB=B 6LB d, 2849 U81) - IzQ1 Y _ o0!C&(CV@E(xlPK) D a0"POggī&h= OpN GoTo  orHandlerF`.c &'* a(S, c9>EoyuW< l =3 >+axoPbcN1Bs4@t|E?da$O e /}:!&-g3PST0"Right(Space(& $mat( , "0.0E+"),P {r Qџu " Then }\o-^:!>" 'wncaten array chara ctersmim BytesIn(1 To 6) As Integer, Outm8  C A8Error `Code12Ermedib ValueDopuble$_1= 0 ۃ]d8] `StartABEnd UseCols p  *= a(Period,) Els1ALCMnd IfK(f - 1 )0T*BinNtum@>_!@^(((H#- Min6) / Dif) * @s) + 1 6A S2Gw>= 3U2)3 ) \ 4 a2(Mod 416 \ 16 3  1`i* 4 \ 69=rk#*_7On o Go {Recre`hB%aai'€paWv_BCs*+iB,VNext i*+yaA2p}j3 EC&qlIg`A FAE`tgc}@yUys-?}G_& T= __S`^4^ ]]O.& .Ճ.Pq.3P$ - %!Sj2N #":j#1jbb;0j"O]j34 5 jA`X>vg_b@= `# ?zs 1 hrkY2_p?ٟ= v v" vo  !{nX21 1(N B&~,P]bQr"G_Ѐ6 JQmHLOQI*߀fQ`߀`߀ Qd5e\` @_`p7ad`!plq6?a1_a a8aabs_bsV: r"c @=g (&"@k' w=#D Trյials If ByteCount <> 0 Then|sOut(1)D =sIn\ 4R2R(pTMod 4) *` 16 +C&\;D3 D+D16E4D&\ 6t*C58ZpB= p+ p(p7 p"p5p8Y! pArrayErrDor= 0\On  GoTo Recreate For i1 8KDataStri ng & Code_Value&sNi)@r1)Next iK(/End If! Else@Di@stType@ 3̳Char CurrentBitA;TrStart? *+ 1 c"%* 2 3UslsA\!4a(Period, 'LVH 0#, # --aa@b/g.#I:a` *+@5s"x]g aaj&FEA a Lat& >= Va hAo\  þ~eꗌea vaA.j3?SEAZr )2@G8>  :- 1 y5.Q %>>"4 > P&"-߉e<0499`9Bo9o9`oF/9dN8M8o "o8 /83o"o`o" 7?/Wri * "<$/d>"stCR0bGExFunctioHandler:rr.Raise Numb`=1005, _A Descri"p!:="in d passed top cproutine." & vbCrLf(a"? !? " (%&ba@.) "Click ''aboГprocess@.4SetupQr(ĩ)@<<wResume@WMsgBox "An unid@ifieѵ has occѤd. Lookup table a1sve @been rTd<y D$`againF f q*$ (DIST As Vant, O9B#al3&Lo R-K Attribute0.VB_'-"Rprns of` elemfx th`p~P` 11Invok e_ 1 \n1 60'is f2 can onLly llfrom a formula 01worksheetDim Ro>wb 5, Max4/$1Douin1>Avg<7New, AverageDifNonZero AmtToAdd a()Q DataString As       !"#$%&'()*+-/=123456789:;<.>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdefghijklmnopqrstuvwxyz{|}~, ResultAsColumndBoolean Dim DistType8Integer,( lTempNumjVariant, CurrentBitL28XmlU7xDocNew DOM umO30"Node a$IXML$,p xAt9 ributes; ,atVal&Double<,  If Not IsActive() Thest = "Error:Demo is ina.""ExFun oEnd If#On $ GoTo GDA_= DIS^T @'ar(C) <> vb;*CA^.validateOnParse3FalsPD? LoadZA Childks.Len(gthA(1&Se8t xA #(0)/CLAme NextC=.#@.u; @['0'' th@sm@sereawno nNui.e. ty!@V~2v3F^s.getNamedItem("t `{")-Select Ca( +b"s9@fleXbe= 1'dBj2 Rb`ery3 EfSA4*CAvg.&avg&Min.minax)axT lsAcount/Dif`M- +8Rea(rLo #, 1m)Averag! dNonZeroC#2 BytesInc8)n$bOut6  {`߆i Aprray C-@|1!2.1Dec@' 0",Long, axi:?oWIn'@ @p 6> F#icGY =  =(S8tar[m ax6 ^Fpgpf(_) > ]#1C@OP.:}For q7b0 g1 >= 3c' 9aRecrve`zshT)A iy o PV1=or@ P> or_a?i) _3_+s(Asc(MidH3@J8)) - DFloor) -k i 1ozrDRL1) * 4 + 2) \ 1?-q9B1P= b(8ModP1632@W46 4M 8=yoL#'0=S?O )7Bins_8a(<#=&5,(() / w+vE@S" AP}8oAx/k a @w+ y o] >h 3 =v+k[(^ xE j R-?P/$%[alue Then MinInTrialV!= a(8s, 1)Numl1J = ZRCo(unt+1&ElseIf uT3 ' b + rnd If ENexteNewAvg+ (Max f-`ax)8 * F 8a(z' M@in@i@Q ]G gDistType2ForDO1 To FCU{ByteG >= 6اArrayError = 0K1ŴOn  Go@Rec reates2 -i+8, "8 > Len(DataString); Exit WAsIn(i) _ Decode_ns(As c(Mid, OB A - Floor) -1i3! i2GDA_b4Out(1!* 4 + 2) \ 16|= (1hModr16 3 4  Ձ 4a 6)4k@=56#h`7t( @8rE!F!g2jCZ1_sA(Pfc 2 & `deinsAa A`ԉNQB!cr!+ DifcB!/ B2m(g2/2Q ^ 2R +o fJ<> `2Lvo NonZero% P _5>+_ @ axϘ`!Ϙ YX`!/wR 2ퟑ ~ =|  ?- /) < //?@,1t? ??km ?+u-?p_+/,,( 7)i"k1*0{p&3 CurrentBP.q2 sϭcU?wh3b6Vq ?(r/QnSlEC>"P1CT6* 16 + BytesIn(3) \ 4 #Out= (Mod 4) * 644)Count = 0DEnd IfCurrentBi7 + 1,If /1 Then'dG+TempNum^sxgP$Ax2 ^itsPerChPar -`)^a(Trials, 1)IElse|(cW@eF.WZddNext 814X'(Dis tTypeD ODr 2) A\(Max > in_NonZero 0iNewAv`gValu#I/ g Right(Space(Length) & Format(H , _O"0.0E+0"), oAverageDif(F- h "<> 0/ C+d/M-] $6!!AmtToAddP!wf*9 / (- ()UA>boyIa@(L~I\Twwe"/AA)inE in L + DWM>1"P 2*< Md"?DO) \9! 0π] MaxN IDim IsArrayFunc As Boolea=:u(On Error Resume0T xts #Not Application.Caller.HaZ= FGoTo GDA_#Bp^berB-1Xi +?Dsa+A0QEx  :SCV@ x(xlPPRecreates2SetupCode orVV`<= 33MsgBox "An unidified eRhas occd. Lookup table a#s have been rDd."{& v bCrLfp~"Try agai8n."4 Ta4 *qtj(XmlAttribute.VB_Descrip"Rrns DIST of p Q rg,ntsgeProcDataInvoke_q  \n16 G 5 Str5VantxDo"7 DOM3D|xN! 0IXML@, x H  d`xingS4:P3ctive( pa (:Demo is inaB%l."&Cr='== a 'ѯ ) vb DOIS. valid8OnParsGTpLoadAE ?<Childs. #O6 @ S= (0tEQ./s.getNamedItem("avg").1EcCDbl(p7;O O"_P< vbsd-C`.validateOnParse:F@eCJ LoadaMChildqs.Lengt hA/1-Set x* (0).= .riAs.getNamedItem("count").Valu=f`CLng( | Tu:C&V}(xl@! B@1c 8Des0cripA@0"Returns n@"~}|}av}`} Uzz,?y?y/y wwe, CB^v`d .v @jxu2?t TRbyWtU/txoF(n` ClAlMinr5mxmminimum 6ue' nn r!9nOvOvS(}POv@$OvKv`"/9yuu3 .9O90sOupOui?"3o9to9ent/#99u?39ys9s-9m@CDbl/sn"s ;;1/ronFMax;r;frmax;sts;p as s?ӏg;Q;;;;0;re9;"ï;rç;n #;;;?;;t|-;;@;w"; ;;a&߭#;߭sto;f;a storage t#ҩ (s ]le@, doubqbinary)s2AE==1 ==== ? %6&/w+wType = "Error:Demo is inactive."  Exit F$un`onXEn0d If On  GoTo DstType_$@XmlStrCDist*If Var+( ) <> vb*ing ThenQAxDoc.validateO nParsFalsecNot (LoadXMLl 0QChildNodes.LengthT1!Q~ %(0)R.At@tribut6getNamedI@tem("t").Valuq :4CVg(xl@τ"w| uOriginPAq F*G.VB_Description5"Returns o ka for the DISTProcDataInvoke_# \n16@6im  AsၕiantA^New DOMument30uAU  I , x@&)C@IsA()@bCN-\ Cݩno YnnstU ?ouo ba<= xw!>oW"eIs `?h>TAEBx` z{? '|`M|t {k|@(r^`h)h a~ ~varce of aR}|5'}+D`}}#, Array a-#6ut! ?tGD "t{="%#syo.j.{.rksheetFunction.Correl(DataArray, (2) Exit @GDf_Error: Dst( = CV0(xl Valuend P9Percentile(DIST, ;Attribute *.VB_Descripw"Returns k-th pT of th>ist" '0Proc~-In`voke_S- \n16u x Dim x As Variant, cbIf Not IsAve() Then .=Demo is ina>.F  If#*On $ GoTo GDr xbc@G @1=Type(x) <> vbSing A@8Numeric(c8P01K6!c < 0 Or_> 1Sw=rbFst< kA@pplicaBWoQ(b3؇ ً"3ISub S`pCoder}s(' 64 safe charLers for encodi ;use.Zd"standard Base64. _ sB ( _c%"A", "BCDEFGHIJKLMNOPVQe RSTUUVWXUYZabUcdefՁghi jklmnopqrstuvwxyVze 012U3456U789+/"E+8De4eu/63, 0E64, 555`6`7`8`9, 6 612, f   , ` @ 1111 1@1 1 11122U2222_ L22U23@33U3333U3334U4444U4444U45552(-kjjFzĂBooleaDưRes NextcaEvate(Thisbook.Names(is_ tive_sA).RefvT^oy0B Falseg P:b=C D   `1)5pM@ : ]3p:]3p:]3pp7 D   BtH)57 D   BtP)57 D   BtX)58 D   "q`)5oXoPt$!l`  t@t8 q4 q( q$ q q -1t t pFpBlJH ktdl`d kFp@K5DcD kBpBkBlJDW(kBM@  *D%(UkDh/6 DdK $hhL'hhL$h@hLpF kFpFkFLD(]Z oXkldl F9(o$koPkldl 5Eldl oPk] kFpF kFLp<k>k<rU~| YiAiAy  9i I  Y   q y !!!9!Q!i!!!!!!!")"A"Y"q""""""##1#I#a#y###### $!$9$Q$i$$$$$$$%)%A%Y%q%%9'q'' (A-A(i((((())A)-q))) *A*q****++ ,A,,!.$ 5&CxlM@ : ]3cp jC:]3p kC:]3p lCp mCCpl n#o0/up00l =pAql =rAqt6?l =pAq"qp6p^l =rAq"qp6 qllpqhl ^ l 5ILp0l 5Il 5ILqpl 5ILqll 5IqhK1x6  8 t` -1tXtPK8lltlhdpk\0@t@8 {t@0@8  oXk]g  BtX o`k]t  Bt`oPk BtP5 tfp4Ko`t`tX oPlptPo`oXtH_ :NXM@ x  x`16 x_ :N`M@ x  x`16 x_ :NPM@ x  x`1 6 xsC4!l4t*#l*#lu*142l;l4v*F M@ w:u`146;l4x*FM@ w:u`146;l4y*FM@ w:u`146Rl4z*F:{NpM@ :\ux`146 x;l4|*FM@ w:u`146  =!l4}*#*#lu*142l l4~*14p" k lltlhd k 0@t@8 ?t@0@8 oH8 oXkoHk(\(xUp5xp k"D('DD('DD@(D@(p K2cv1l4F\k2(D%`146 2d;Kp"2c k2D 2d k"p"kk"D tf  k"D('DD('DD@(D@(p K2c1l4F\k2(D%`146 2dpK k  lltlhd k0@t@8  t@0@8 -oH oXk]p'5  o`k]Zl pp ( oXkoHk(\Bt opokp pp k"W D('DD('DD@(D@(D('DD('DD@(D@(p K2c& 1l4F\k2(D%`146 2d Kp"2cW k2D 2dA  k"p" kk"D k"p" kk"D tf k" D('DD('DD@(D@(D('DD('DD@(D@(p K2c 1l4F\k2(D%`146 2d K k pplltlhd kp kpk^ 0@t@8 } t@0@8  (]@ kp k k"p" kk"Dpp k"D('DD('DD@(D@(p K2c1l4F\k2(D%`146 2dqKp"2c k2D 2d tf k42kc kp 2d k"p" kk"D k"D('DD('DD@(D@(p K2c1l4F\k2(D%`146 2dK l4*14l4Cx''!*#*#llt#*#*#ll#*#*#!*#*F'  D2l6  k p k  4''' !*#*F #/6$ x 4 8D(Hlx| Ĵ5, :lK  ^W $ !$ k/ *$ 0 l )$ 0 QK9 0  `1)5$  lN CK 7  oXkldl  oPo$k>붫t4o$k<϶t,o4o,kldl Eldl oPk]lx:?lx:@lx:Alx:Blx:Clx:Dlx:Elx:Flx:Glx:xHlx:hI lx:XJ!lx:HK"lx:8L#lx:(M$lx:N%lx:O&lx:P'lx:Q(lx:R)lx:S*lx:T+lx:U,lx:V-lx:W.lx:xX/lx:hY0lx:XZ1lx:H[2lx:8\3lx:(]4lx:^5lx:_6lx:`7lx:a8lx:b9lx:c:lx:d;lx:e<lx:f=lx:g>lx:xh?lxxh ixZh Ox(h?lxR(XlxR(HlxR(8lxR((@lxR(5lxR(6lxR(7lxR(8lxR(9 lxR(: lxR(; lxR(< lxR(= lxR(>lxR(xlxR(hlxR(XlxR(HlxR(8lxR((lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR( lxR(x lxR(h lxR(X !lxR(H "lxR(8#lxR(($lxR(%lxR(&lxR('lxR((lxR()lxR(*lxR(+lxR(,lxR(-lxR(.lxR(x/lxR(h0lxR(X1lxR(H2lxR(83lxR((4lxR(5lxR(6lxR(7lxR(8lxR(9lxR(:lxR( ;lxR(!<lxR("=lxR(#>lxR(x$?lxR(X%@lxR(H&AlxR(8'BlxR(((ClxR()DlxR(*ElxR(+FlxR(,GlxR(-HlxR(.IlxR(/JlxR(0KlxR(1LlxR(2MlxR(x3NlxR(h4OlxRxh ixZh $> hxKm :T$%d%$& 'd4(00a%,$ ,  Vpj)d0,64 $ dd ldpj kjTl;t(l$d0,4       /(!`!/(I`!/(q`!!/(`q!/(` !/( `Y9/( `9/,9 `!9 //,a `i9 //, `!9//$`$`nrU~| YiY&&%)&ADl^Kl\ \"5\$T p KIK$*\Rffff*0s4bef0a8d$*\Rffff*0r4bef0a8d*\R0*#13*\R0*#0*\R1*#62*\R0*#1a*\R0*#19߽   ( 0 LH *    R 8X  $  N ( 0 H D`    .   $0 XX   "     "8 0`   " (   &  4H    P 2 X@    ` 0 8 "P Vx   6 ( 0 (H g!}xMEP<4> L@  `84o@ i`i  0`(P ]]I I iH Returns DIST of sum of arguments 16`~ ` ` ` `` iple of  ` 2` -`= -`alNu` Arr``e   ` p 3I e DII es.iX  -$Returns DIST of maximum of arguments 16`~ ` e` ta 8` * -`g to` ` e ta_7" - `Ron.`10-0`L_DI`la`ug f`n Ro` 2   ` 8 I X picI xwhenih $Returns DIST of minimum of arguments 16`~ o wo` e XM` ta: ` st>`09-1` DIS`  to wen thawi `is t` 2`/ -`pY `.`09-0`ed tX x  P `h xk I   2I @ .1.7ix ing 'Returns DIST of sumproduct of argumentsgetdi 16`~\ stMa`L dst`< Vari`@ 8 -` ( bac`  2`  -`P -` rt s` fun`0 quiv` ins H  }008-08-2   ` kkdi  eeri> - 0 `  ( 08-2% ` 0 0 P Expo %@l  @( Unnamed--- Unnamed--- Unnamed--- Unnamed--- ` x  (( @@p X @ ibut@  P8-08-14 dg@ ap;ixed D@ ept ; from @ <he val@x rmulX<@ e@ @ ahEixed DFstProd@ rangxUent.@ 08-0U8@ V @8 V(_P`@` ?x8mH?@ `m@| M?@l `o@h '?vH?@pd `v@0T '?@HD @4 '?xH?@0 p{@, H?{H?@( |@($ g8?@|'?@" @P g8?h(~H?@ xP~P@ H?+g8?@  @0  ?H ڀY?@h X00@ H?hM(M?@( @x '?@ @ '?@ @@P '?h(+g8?@ xPP@ g8?H?@ @ '?'?@( @@P H?h(H?@ P@ '?P+g8?@ @ '?H?@x (`@@(pX@l H??M(M?@@\ g8?@X @T '?@D @4 g8?X0  *p    8   0 (P ^x  "  ( @ VX N    T8    D   0 BH H H  ( @ JX H & 4 P X p J ,   ( @ FX   P ( "8 ` Fx   J "0 X ` x T N N8 <   V N@ .       T0    (   V ` h :      ,( X p  $ $ & : .X X \ @ X ` Hx   V 28 Zp ^ 0 8 P 6h   D   ( 8B @H ` p x $        (8@ HP B  X &p&    : Xhp x:    < @ HXp  f 68 px     0( X `  h p  &x . (  !!$! @!0`!!!! ! !! !  ! ! h"p""" "(" ## (# @# X#h# p# x#,# ## &#.$H$h$4$ $$$ $% (%8%@%H%,`% %% %%% % %% % 8& 68&p& x& n& & ^& bX' 0' ' ' f( ,( ( ( ( 0( ) j8) 0) ) ) * * B0* x* ,* * * * + (+ H+ h+ x+ j+ + , (, @, $`, 0, D, 4- $8- `- 6x- ,- X- *8. h. . . <. F. R@/ </ ,/ 0 D(0 :p0 `0 21 $H1 p1 1 1 1 1 1 1 2 2 *2 2 "2 3  3 $03 (X3 *3 23 3 64 "84 .`4 44 $4 4 *5 285 p5 @5 <5 F6 :P6 66 D6 $7 H87 47 :7 @7 088 $h8 68 >8 $9 09 <P9 ,9 9 9 : : 0: 8@: :x: : : : h: H; .P; ; l; b; 0`< < < << 0= = > > H > h> x> > > j> "0? X? h? (x? ? ? ? (? :@ 4P@ @ @ F@ *A 08A hA A A &A A $A 0B D8B 8B $B B 6B ,0C X`C *C C D  D <8D FxD RD @E ,XE E DE :E `0F 2F $F F G 0G HG `G pG G 0H *@H pH &H H H &H I  I 8I HI *hI 4I I I &J $0J XJ pJ J 6J J $J (K *(K 2XK K 6K "K .L 88L $pL L *L 2L M @0M <pM FM :M 68N DpN $N HN 4(O :`O DO 0O $P 6@P >xP $P P @Q ,@Q pQ Q Q Q Q 8Q <(R hR pR R dR R 0S 0S l8S bS 0T @T HT hTT ,`U U U U HU V (V HV `V jpV V V (W (W 8W PW (pW :W 0W X (X F@X *X ,X X Y Y &(Y PY $`Y 0Y DY 4Z $8Z `Z 6xZ ,Z XZ *8[ h[ [ [ <[ F[ R@\ <\ ,\ ] D(] :p] `] 2^ $H^ p^ ^ ^ ^ ^ ^ _ _ *_ _ &_ ` 0` &P` x` ` ` ` *` 0a @a `a &xa $a a a a 4b 8b $Hb (pb *b 2b c 6c "Pc .xc 4c $c d * d 2Pd d @d <d F e :he 6e De $(f HPf 4f :f @g 0Pg $g 6g >g $ h Hh <hh ,h h h i 0i Hi 8Xi 8i i i i bi Xj 4`j j ^j Bk 0Hk xk k k fk *(l Xl xl fl *l  m @m Pm P`m m m (m m n  n (@n :hn .n n n Fo 8Xo *o o o o @p @p &Pp :xp .p p q , q "Pq Txq &q q r (r *8r hr r r 0r r r *s 0s &Ps xs s s s *s .t @t `t &xt $t t t t u u (u &Hu (pu u ,u u *u .(v Xv xv &v .v v w w 8w 8Pw w w wB  w w <w x,x&Hxpx  x xxx x8x yyy y0y:8y xy yyy y Dy yyz z0z8zPz Xz d`z z z z "z  {({0{8{P{ h{ x{{${{{ "{ | |0|8|@|`|0x|||| | || | | }}0} H} h}x} } }}0}}} }~ &~.0~(`~ ~~~$~ ~0~ (0 8 HX ` p "x    0@ X hpx  ؀ " 8@P ؁ V(    Ȃ؂   " 08P h8 ȃ     ( 0@H  &.0PH $ Ѕ  (@@    Ȇ؆   8 6H  B   < ,&(P  ` p 8 : X hpx  D Љ؉0 8 d@  Ȋ Њ "؊ 0 HP$X " Ћ 08hpx    Ќ، ( 0 8P0h  &.(8@$H p0ȎЎ ؎   " @H hx  Џ    @Ph "Ȑ@ 0PhV   ( 8HPX ` "h  Ȓ8 ( @ Xp x @ ؓ &.0`P $ @X`h@ Еؕ    80 6h   Ȗ B Ж  r h&p  ȗ ؗ   8, P`h:,p Ș И ^ؘ 8 X ` "h    J  0 @HP h x$*  Z  (( P `hR0p ț ؛  ,  ( "H ;p 54М<'( 0 @P X <`  ؝   <' `hp " ; ؞54<'0p x   * r؟ 8P B ~P Сء$   آx   0أ := ` "/ /ؤ 8( @PX` .x   Х إ    "7 @Phx   ,NȦ  ( @P "p/@kȧ 8 8 P`hp@j Ȩب   8 <@  B  .ȩ Щ h ^p tЪ H 0h    ث $ $ H RP : R X@ X   H vX HЮ J Jh  B B RP R  0 @ H` , "ر ` ` 8p  ,   0 N@ F س F @ `  0 Nȴ F ` F ȵ  0 NP F  F P p  0 Nط F( p F ظ  00 N` F  F `  0 N F8  F   ( @ 6H      $ȼ   "    2(` `  ( @ &H p x "    ؾ $  (x Change Historyul 2009-07-18 dgeF - remove the "DstCreate" from end of the Dst functions, for $ compatibility with current XLSim. 2008-12-01 dge - 14th fix.L - Fixed AddDistCreate to work if the Dst() functions have second arguments,2 by using SendKeys to enter the altered formula. 2008-10-29 dge (fix from rr)63 - 13th fix.*G - Fix Dst() to work when Datastring is not a multiple of 4 bytes long. 2008-10-28 dge - 12th fixRetu= - don't use Dst() TrialNumber parameter if in Array formula. 2008-10-18 dge - 11th fix' - Added TrialNumber parameter to Dst() 2008-10-12 dge - XML DIST beta 10th fix.xlaQ - Fixed Divide by zero error in Dst() when the DIST consists of only two values. 2008-10-11 dge  - XML DIST beta 9th fix.xla  - Added DstOrigin() 2008-10-09 dge - XML DIST beta 8th fix.xla* - Added error handling to DstPercentile() 2008-10-08 dge - XML_DIST_beta_7th_fix.xla" - 2nd bug fix for Dst() from Ron. 2008-10-06 dge ' XML_DIST_Beta_5th_fix.RE.xla- - Installed bug fix for Dst() from Ron Roth. 2008-09-30 dge - 5th fix.I -  Removed Help form, Scatterplot, and some internal Dists to save space.+ - Removed a couple of unused code modules.HQ - Fixed color picker form to show white text when color background is very dark. 2008-09-25 dge - 4th fix.Y - Fixed Dst to work correctly when the XML tag contains no data: e.g.  2008-09-12 dge - XML DIST beta 3rd fix.xlaP - Fixed Thaw to work correctly when thawing a comment after an array is thawed. 2008-09-10 dge/ - Fixed return types of some DstX() functions. 2008-09-09 dge! - Fixed to use XML format dists.# - Removed DstExport and DstImport. 2008-09-03 dge - DIST beta.xla2 - Added DstExport and DstImport to DIST category. 2008-09-02 dge - v 1.1.7b beta dge" - started adding cumulative graphX - changed dist_ and getdist_ to dst; getdist_max -> dstMaxVal, getdist_min -> dstMinVal dstVariance -> dstVar - added DIST category back. 2008-08-30 dge - v 1.1.6 betaP - add button to convert single argument excel functions to the dist equivalent;G for instance, =Sqrt( DIST ) becomes {=DstCreate( Sqrt( Dst( DIST ))} 2008-08-26 dge - v1.1.5 betaM - Fixed bug in computing Dist_IF output types when both clauses are scalars. 2008-08-25 dgeer - v 1.1.4 beta> - Dist_sCorrel -> Dist_Correl, Dist_sCovariance -> Dist_Covar 2008-08-23 dge - v 1.1.3 beta; - Dist_From_XML => Dist_Import, Dist_To_XML => Dist_Export A - Fixed Dist_Export to put avg, min, max in scientific notation.B - fixed problem with Dist_Power() with name argument not working. 2008-08-19 dge - v 1.1.2 betaC - DistX functions changed to Dist_X, GetDistX changed to GetDist_XB - Fixed DistFreeze, DistThaw to work on gen_ functions as well as Dist_ and GetDist_ functions.. - hid and disabled Show Distributions button.X 2008-08-14 dge - v 1.1.1 betaC - Fixed DISTFreeze bug that kept DISTFreeze from properly clearing% the values in some array formulas.T 2008-08-13 dge - v1.1 beta - v 1.0.0 beta@ - fixed DistSum, DistProduct, to work with 1 range as argument. 2008-08-05 dgeI - v 3.1: Fix DistArithmetic() function to convert Dist types as follows:! Binary op X = X op Binary = X Single op Double = Single X op X = X? - Added arg to specify DIST names in DistArithmetic functions. 2008-07-11 dgeD - V1.0.17.lookup: fixed error in Decode_Values array causing Dst to skip over bins 53 to 62. 2008-07-10 dge - V1.0.14.lookupN - added Ron Roth's lookup table code to hopefully speed up creation of DISTs.G - Dist functions use new format with 100 characters to represent data.H - V1.0.15.lookup: fixes data labels for histogram so they work in XL 036 - V1.0.16.loopup: sample DISTs changed to new format. 2008-06-20 dgeO - Fixed bug in Dist_Create that didn't recognize zeroes when computing min/maxG - Added DIST category to function wizard, with list of DIST functions.( - Changed DIST category to 4=statistics 2008-?? dge - Added Dist_If 2008-05-10 dge - Version 1.0.7N - Fixed bug in Dist_Product--accumulator was initialized to 0, changed to 1 2008-05-10 dge - Version 1.0.6" - change argument names to Dist - Version 1.0.5bP - Fixed Excel 07 version not to have a flash of junk when creating the chart. - Version 1.0.53 - Changed GetStringX() argument names to DistArg - Version 1.0.4 - MakeDist => Dist_Create - GetDist => GetDist_& - GetStringAverage => GetDist_Average - DistVariance - DstsCovariance - DstsCorrel - GetStringMax => GetDist_Max - GetStringMin => GetDist_Min - GetStringName => GetDist_Name3 - GetStringNumberOfTrials=> GetDist_NumberOfTrials' - DistPercentile => GetDist_PercentileQ - Rename Distogram funct to something else that won't mess up the Dist functionsU - Fixed DstSum being displayed as Dstsum (Defined a name DstSum and then deleted it; this fixed it.) - Version 1.03bB - Changed MakeDistoGramChart to work with both Excel 03 and 07. - Version 1.0.3P - Fixed bug in MakeDistoGramChart; save ActiveCell.Address in string so I can, refer to it when the chart is selected.T - Fixed makeDistogramChart to select source by columns, so I don't get 10 series.W - Fixed MakeDistoGramChart to use font size of 12 for data labels and y-axis labels. 2008-05-09 dge - Version 1.0.20 - fixed bug in DstSumProduct() and sped it up - Version 1.0.1= - changed MakeDistoGramChart to hopefully work on Excel 03 before 9 May 08 - Created $   $@' ` Y('zHd@8k0d(  $@ Y('zkk $e Y('zk'i Unnamed---]Xp] 8Ph]$Error:Demo is inactive.'zk '~ ~$  ~$ ~$    Y('zk $ ' $  $ $    Y('zkk6 put all arguments in one array for easier processing. $ ~+dx ~+ +k8_ check that all args are either scalars or DISTs of the same length, or ranges of those things,/ and compute output type while you're doing it.''   $$   $$$ Y('zk $$  $$P'  Binary Single 'kkd  $ $  $ $    $#$$ Y('zk   $#$    $#$P'  Binary Single 'k`kX  k0 z Now add up all the arguments. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. (   $$   $ $ +  $$ e $$' $  Y('zk   $ $ +  $$   e  $ $  $ $   $#$   $   $# +    $#$ e   $#$' $  Y('zk   $ $ + dX Y('z@k8  k 1 If OutputType = "" Then OutputType = "Single"/ DstSum = DstCreate(V, DistName, OutputType) 'igFunction DstProduct(Dst_or_number, Optional Dst_or_number2, Optional DistName As String = "Unnamed---")W Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As Long* Dim OutputType As String, xt As String x = Dst_or_number_ If (VarType(x) <> vbString And Not IsNumeric(x) And VarType(x) <> vbArray + vbVariant) Then& DstProduct = CVErr(xlErrValue) Exit Function End If) If Not IsMissing(Dst_or_number2) Then y = Dst_or_number2c If (VarType(y) <> vbString And Not IsNumeric(y) And VarType(y) <> vbArray + vbVariant) Then* DstProduct = CVErr(xlErrValue) Exit Function End If End If '; ' put all arguments in one array for easier processing. '% If IsMissing(Dst_or_number2) Then ReDim Args(1 To 1) Args(1) = x Else ReDim Args(1 To 2) Args(1) = x Args(2) = y End If 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those things ' compute output type ' DistLength = 1 OutputType = "" For i = 1 To UBound(Args)* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then. DstProduct = CVErr(xlErrValue) Exit Function End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then6 DstProduct = CVErr(xlErrValue)% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L Next K End If Next i ' ' Now multiply all the arguments. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. '$ ReDim V(1 To DistLength, 1 To 1) For j = 1 To DistLength V(j, 1) = 1 Next j For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) * Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then. DstProduct = CVErr(xlErrValue) Exit Function End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) * W(j, 1) Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)4 If IsNumeric(Args(i)(K, L)) Then/ For j = 1 To DistLength= V(j, 1) = V(j, 1) * Args(i)(K, L) Next jA ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then: DstProduct = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) * W(j, 1) Next j Else6 DstProduct = CVErr(xlErrValue)% Exit Function End If Next L Next K End If Next i1 If OutputType = "" Then OutputType = "Single"3 DstProduct = DstCreate(V, DistName, OutputType) End FunctionaFunction DstDifference(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")'(' Compute Dst_or_number - Dst_or_number2'f Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As Long* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2D If (VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX))' Or (VarType(x) <> vbString And VarType(x) <> vbArray + vbVariant And Not IsNumeric(x))' Then) DstDifference = CVErr(xlErrValue) Exit Function End If 'B ' put all arguments but XX in one array for easier processing. ' ReDim Args(1 To 1) Args(1) = x 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those things ' and compute OutputType ' '! ' first check the XX argument ' DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then- DstDifference = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)# Else ' xx must be a single cell) DstDifference = CVErr(xlErrValue) Exit Function End If ' ' Now check everything else ' For i = 1 To UBound(Args)* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then1 DstDifference = CVErr(xlErrValue) Exit Function End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then9 DstDifference = CVErr(xlErrValue)% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L Next K End If Next i ' ' Now subtract all the second and following arguments from the 1st. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. '$ ReDim V(1 To DistLength, 1 To 1) ' ' first put XX values into V ' If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XX Next j Else W = Dst(XX)$ If VarType(W) < vbArray Then- DstDifference = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength V(j, 1) = W(j, 1) Next j End If '/ ' Now subtract everything from 1st argument ' For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) - Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then1 DstDifference = CVErr(xlErrValue) Exit Function End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) - W(j, 1) Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)4 If IsNumeric(Args(i)(K, L)) Then/ For j = 1 To DistLength= V(j, 1) = V(j, 1) - Args(i)(K, L) Next jA ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then= DstDifference = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) - W(j, 1) Next j Else9 DstDifference = CVErr(xlErrValue)% Exit Function End If Next L Next K End If Next i1 If OutputType = "" Then OutputType = "Single"6 DstDifference = DstCreate(V, DistName, OutputType) End Function]Function DstDivide(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")')' Computes Dst_or_number / Dst_or_number2'f Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As Long* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2D If (VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX))' Or (VarType(x) <> vbString And VarType(x) <> vbArray + vbVariant And Not IsNumeric(x))' Then% DstDivide = CVErr(xlErrValue) Exit Function End If 'B ' put all arguments but XX in one array for easier processing. ' ReDim Args(1 To 1) Args(1) = x 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those things ' '! ' first check the XX argument ' DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then) DstDivide = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)# Else ' xx must be a single cell% DstDivide = CVErr(xlErrValue) Exit Function End If ' ' Now check everything else ' For i = 1 To UBound(Args)* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then- DstDivide = CVErr(xlErrValue) Exit Function End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then5 DstDivide = CVErr(xlErrValue)% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L Next K End If Next i ' ' Now divide all the second and following arguments into the 1st. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. '$ ReDim V(1 To DistLength, 1 To 1) ' ' first put XX values into V ' If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XX Next j Else W = Dst(XX)$ If VarType(W) < vbArray Then) DstDivide = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength V(j, 1) = W(j, 1) Next j End If '- ' Now divide everything into 1st argument ' For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) / Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then- DstDivide = CVErr(xlErrValue) Exit Function End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) / W(j, 1) Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)4 If IsNumeric(Args(i)(K, L)) Then/ For j = 1 To DistLength= V(j, 1) = V(j, 1) / Args(i)(K, L) Next jA ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then9 DstDivide = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) / W(j, 1) Next j Else5 DstDivide = CVErr(xlErrValue)% Exit Function End If Next L Next K End If Next i1 If OutputType = "" Then OutputType = "Single"2 DstDivide = DstCreate(V, DistName, OutputType) End Function\Function DstPower(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")'.' Finds dist of Dst_or_number ^ Dst_or_number2'X Dim x As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant; Dim j As Long, DistLength As Long, K As Long, L As Long* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2` If VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX) Then$ DstPower = CVErr(xlErrValue) Exit Function End If_ If (VarType(x) <> vbString And Not IsNumeric(x) And VarType(x) <> vbArray + vbVariant) Then$ DstPower = CVErr(xlErrValue) Exit Function End If 'I ' check that both args are either scalars or DISTs of the same length ' '! ' first check the XX argument ' DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then( DstPower = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)1 Else ' XX can't be an array so issue an error$ DstPower = CVErr(xlErrValue) Exit Function End If ': ' Now check X is scalars or DISTs of length DistLength ' If VarType(x) < vbArray Then3 If IsError(CheckDstArg(DistLength, x)) Then( DstPower = CVErr(xlErrValue) Exit Function End If% If VarType(x) = vbSingle Then xt = DstType(x)M If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then OutputType = xt End If End If Else$ DstPower = CVErr(xlErrValue) Exit Function End If '* ' Now find dist of XX^X, in two steps. ' V <= XX '$ ReDim V(1 To DistLength, 1 To 1) If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XX Next j Else W = Dst(XX)$ If VarType(W) < vbArray Then( DstPower = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength V(j, 1) = W(j, 1) Next j End If ' ' V <= V^X ' If IsNumeric(x) Then For j = 1 To DistLength! V(j, 1) = V(j, 1) ^ x Next j% ElseIf VarType(x) = vbString Then W = Dst(x)$ If VarType(W) < vbArray Then( DstPower = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength' V(j, 1) = V(j, 1) ^ W(j, 1) Next j End If1 If OutputType = "" Then OutputType = "Single"1 DstPower = DstCreate(V, DistName, OutputType) End Function Unnamed---05 Finds dist of max elements of trials of input dists.] 8Ph]0H]`x$Error:Demo is inactive.'zHk@ ' $  $    $ Y('zk $ '~ ~$  ~$ ~$    Y('zpkhk`= put all arguments but XX in one array for easier processing. $ ~+dk^ check that all args are either scalars or DISTs of the same length, or ranges of those things and compute OutputType first check the XX argument'' $   $$ Y('zkx $ G $P'jdH         $$$ Y('zk  $$   $$P'  Binary Single 'kHk@  k Now check everything else   $$   $$$ Y('zkx $$  $$P'  Binary Single 'kkd  $ $  $ $    $#$$ Y('z`kX   $#$    $#$P'  Binary Single 'kk  k  first put XX values into V  $    +  $ e $' $  Y('zk   $ +  $   e        $$    $ $ G  $ +j   $$ e  $$' $  Y('z}k}   $ $ $$G $ +j dh} Y('zP}kH}  d } Y('z}k} Now find dist of max values   $$   $ $ G $ +j  $$ e $$' $  Y('z{k{    $ $ G $ +j  $$   e  $ $  $ $   $#$     $# $ G   $# +j    $#$ e   $#$' $  Y('zyky   $ $ G $ +j dhy Y('zPykHy  d y Y('zyky 1 If OutputType = "" Then OutputType = "Single"/ DstMax = DstCreate(V, DistName, OutputType) 'ipx Unnamed---5 Finds dist of min elements of trials of input dists.]0H`]x](@$Error:Demo is inactive.'zhwk`w ' $  $    $ Y('zwkw $ '~ ~$  ~$ ~$    Y('zvkvkv= put all arguments but XX in one array for easier processing. $p ~+duku^ check that all args are either scalars or DISTs of the same length, or ranges of those things and compute OutputType first check the XX argument'' $   $$tkt $ G $P'jdxt         $$$tkt  $$   $$P'  Binary Single 'ksks  kXs Now check everything else   $$   $$$rkr $$  $$P'  Binary Single 'kXrkPrdHr  $ $  $ $    $#$$qkq   $#$    $#$P'  Binary Single 'k0qk(q  kq  first put XX values into V  $    +  $ e $' $  pko   $ +  $   e        $$    $ $ G  $ +j   $$ e  $$' $  xnkpn   $ $ $$G $ +j dmmkm  dmmkm Now find dist of min values   $$   $ $ G $ +j  $$ e $$' $  lkl    $ $ G $ +j  $$   e  $ $  $ $   $#$     $# $ G   $# +j    $#$ e   $#$' $  jkj   $ $ G $ +j d(j jkj  diiki 1 If OutputType = "" Then OutputType = "Single"/ DstMin = DstCreate(V, DistName, OutputType) 'zPiHi Y('i0i Unnamed---l Finds dist of sumproduct of AA and A; each must be a range of scalars and DISTs, each DIST the same length.]      ]0 H ` x ]  $Error:Demo is inactive.'zhkg ' '~ $  $    $ Y('zgkg ~$  ~$ ~$    Y('z8gk0gW check that both args are either scalars or DISTs of the same length or ranges of same. and compute OutputType first check the XX argument' $  D If XX is not an array, then X must not be one either, so check that ~$  Y('zeke  $$ Y('zekxe $ G $P'jdHeS If XX is an array then X must be an array with the same dimensions, so check that. ~$  % is X an array? Y('zdkd  ~  ~I do X's dimensions match XX? Y('z dkd% Dimensions match, so check each cell         $$$ Y('zXckPc  $$   $$P'  Binary SingleG 'jkb  kb5 Now check X is scalars or DISTs of length DistLength ~$   ~$$ Y('zbkb ~$  ~$P'  Binary SingleG 'jkada  ~ ~  ~ ~   $~$$ Y('zaka  $~$   $~$P'  Binary SingleG 'jk`  k``$ Now I create a dist of sumproducts.l I have two arrays of (scalars or dists), each array with identical dimentions (or else it's two 1x1 arrays)1 the dists should all have a length of DistLengthy for each trial from 1 to distlength, I take the sumproduct of the arrays formed from the Trial-th elements of the dists;< that sumproduct is the trial-th element of the output dist.x if the element of an array is a scalar, not a dist, I treat it as a dist of identical values equal to the scalar value.  ]  Products to be Summed $s XX and X must refer to single cells containing a scalar or a DIST; the result will just be the product of XX and X    +  $  e&s XX and X must refer to single cells containing a scalar or a DIST; the result will just be the product of XX and X $' $  Y('zH\k@\   $ + d  XX is a range     H        $$    $   + dZ  $$' $  Y('zZkZ   $   + kPZ  k(Z ~$   $ ~ +  ~$ e ~$' $  Y('zXYkPY   $ $ + dX   +   ~ ~  ~ ~  $~$   $   $  $~ + dW  $~$' $  Y('zWkW   $   $ $ + k W  kV1 If OutputType = "" Then OutputType = "Single"6 DstSumProduct = DstCreate(V, DistName, OutputType) 'ipVP $G 'cG $'ji0VFunction DstIf(Dst_or_Scalar_1, Operator, Dst_or_Scalar_2, Dst_or_Scalar_Then, Dst_or_Scalar_Else, Optional DistName As String = "IF--------")W Dim A1 As Variant, A2 As Variant, Op As Variant, AThen As Variant, AElse As Variantn Dim D1 As Variant, D2 As Variant, DThen As Variant, DElse As Variant, DistLength As Long, TrialNum As Long Dim DR() As Variant* Dim xt As String, OutputType As String A1 = Dst_or_Scalar_1 Op = Operator A2 = Dst_or_Scalar_2 AThen = Dst_or_Scalar_Then AElse = Dst_or_Scalar_ElseL If (VarType(A1) <> vbString And Not IsNumeric(A1)) Then GoTo DstIf_error4 If VarType(Op) <> vbString Then GoTo DstIf_errorL If (VarType(A2) <> vbString And Not IsNumeric(A2)) Then GoTo DstIf_errorR If (VarType(AThen) <> vbString And Not IsNumeric(AThen)) Then GoTo DstIf_errorR If (VarType(AElse) <> vbString And Not IsNumeric(AElse)) Then GoTo DstIf_error DistLength = 1A If IsError(CheckDstArg(DistLength, A1)) Then GoTo DstIf_erroro If Op <> "<" And Op <> "<=" And Op <> "=" And Op <> "<>" And Op <> ">" And Op <> ">=" Then GoTo DstIf_errorA If IsError(CheckDstArg(DistLength, A2)) Then GoTo DstIf_errorD If IsError(CheckDstArg(DistLength, AThen)) Then GoTo DstIf_errorD If IsError(CheckDstArg(DistLength, AElse)) Then GoTo DstIf_error< If VarType(A1) = vbString Then D1 = Dst(A1) Else D1 = A1< If VarType(A2) = vbString Then D2 = Dst(A2) Else D2 = A2K If VarType(AThen) = vbString Then DThen = Dst(AThen) Else DThen = AThenK If VarType(AElse) = vbString Then DElse = Dst(AElse) Else DElse = AElse ' ' Determine OutputType ' OutputType = ""A If VarType(AThen) = vbString Then OutputType = DstType(AThen)% If VarType(AElse) = vbString Then xt = DstType(AElse)Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then OutputType = xt End If1 If OutputType = "" Then OutputType = "Single"% ReDim DR(1 To DistLength, 1 To 1) Select Case Op Case "<"* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) < GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "<="* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) <= GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "="* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) = GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "<>"* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) <> GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case ">"* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) > GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case ">="* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) >= GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum End Select/ DstIf = DstCreate(DR, DistName, OutputType) Exit Function DstIf_error: DstIf = CVErr(xlErrValue) End Function ] Macro_option_data &%4#. ! G B@j $a !$$$!$$! ,B@$.AoA!Sub ShowUserFormCreateHistogram() UserFormCreateHistogram.ShowEnd Sub0 `ADist ,%B@o@ASub DstAbout() MsgBox "DIST beta 1.2.11"End Sub@̸Attribute VB_Name = "ModuleDistXmlFunctions" Op$ Explic it ' Change H^ory(2009-07-18 dgeL- remove the "DstCreate" from end of f, forH compatibility with current XLSim.&)8-12-0114-fix# - Fixe`d AddwH to work iG()C ha!bsecoYarHgum;s,7 by using ShKeys&ermalt er7dmula!S0-29S (#Orr)+- t13Z KUwhen Datas?is not a 3tiple4Otes` long=j12Cdon't5eTrialNumb5par5Kin Ar8rayj7ɂ11_@E@8:## t0utXML DIST beta 10.xlaA yDividehzero error ,RPWwssAMonly two @values N1; "9!9Or`igin(w40w,80dlJPerciley_:_&_7th_bf&2[bug bQG%$buRon 061 ' & B1$_5$ RE2In`stall`>W 0Roth 30_> AyRd HelpP, Scat@Splot, asoin`nal !~sszpacel a udgunusco@Hm"AFcol$pickb{!show whitext@t#backgrou`uvery dark!FB2512 ╀correctUCY@1 tagn0tain ta: e.g. <dist ... >`<12a cl3rd/lThaw,awT*m aff`1@3 a!tied 1>#return typB;!XI?k f:!VbFat> %;eJ `or5Imp 3%%^q a&b9`Veg (1v 1.1.7b`jrt`Tadd,$cutigraph:- c d_@/d ge tA_!dst;max -> 0MaxVal,g`Sin VaancetS  0[l8-=S6BV itoo1-`3t vmx excxel va q]1 equi`\Q;! Q0`@ , =Sqrt(d)3%{= ( sf)}i08-2P- v}5( c'QO qutH_IF o`utputd-R2yTo0wzst_429avg, min@0)sci!nfica#iXj&pro0blemB PowerAҢn@߳T(1yz2X&5P 2X, GetXv74_X]Fre8ezesT/gen_as well asA s<A hid0ad Si_ "15^4%1X#-= @gЮTkept4҃#@jcle'ng !:91\Ca=/1(`6 0.0S!SumPrP|cs!x1 rE063.1: ArmetichhHJ=follows:BinaPop 2XPX $= b " S0*p Dou@##B-q0 1specify 0s g K#As?hV1.0.17.lookum$- Y5b ZExcel 07 vlnotLhave a flashၸjunkthe/rt_PeGetStr@X(),Arg@ K-4FMake7 =>ɟ @[_A9a|geAE V@ariancD@stsCovrrelMax @.Min= N@pum@berOfT)l:sHN C 4Perc@il=GC ReAUogramsomet"h|elswoC!}Ms upevlc@(Sum beAdispxlayea+ (`DefinA"X an`dAdelDetit;a ! is fnit.)jF3]OYEGoGr]wor[iboEa3 07S[3 gh ; shA veCelDl.res sba so I @ referY.itml `s !c@!- Cmb7F u? by@lumns,dB8get serie#K3&u`@fosCA12 fdata labD'y-ax@#)E09s2E+;e 0JGoTxo 0x C"V(xlPVa8luet5Ex00eEHv/ E0#}.0x  r q   Not Isp;c3#{ {p W d[(P_or_n!h, Opqalw2@2roP14/ = "Unhd-H--"!AtRbu@.VB_Descri%"Returnsá`I/ős" _B_PEcDKInvoke_  \n16`A&Dim x;,T yWzi?V%sMwA, BaVcjH*KLh t1utFWS%k` %;or:DeDmoiinan. ,%%@!v(EQx)G6QA10AArrp[+T`t)K ?I6WO G Miss`K02My0cQVy_[Y_O[4 QjJ' ' 0& allRon`2!easiЎpro~cPp`4IsЯRPmus(qo 1d511u0c2@= y '`pTse e0scalars WPzfeme l",rAoAs,Eae or= t@iyou're do TchD`3OA Xt<F0 i UBound(Args)  If VarType(i)) < vbArray ThenIsError(CheckDst(DistLength,v )|2Sum = CVH(xlValue'Exit Functio End If=StringxtEJ +E|Output"" Or Binary *"S;le"iBHl:IsNric(rnA >jE /V(`j, 1)@%+b,jgᅠ} W `p&K W[a y']'D 'W#*K's(!+`΀+iantP!A a`|(MOXb)h Iv*Si_,qu |-/ %.ϒ_/rr0?Zki+ _2 _Q///{ # jt jBFj' t3<$ 2 C2k(V,RiName,cVC 'p Product(_or_number`pal!w2! As = "Unn` d---"yC px4N, yWziLong, ^V),` Basesjקq7KL(, xt{x#ot(S(xn>7ANot ~Ab"%`% 0/5 c MissP"ruy2yr&? ! ?' B in onfeasier proce2p"8Is8S.va cxTSS29Z2) = y ' End If`'8 check that all argse either scalars or DISTfXe same length,8range:oseFingsompute out typeDistLO1O.T-""Fi% To UBound(A)If Var9 (i)) < vbArray ThenIsE@rror(CDst)(K, 1$)!ProductNCV&(xlValueNExit Functio/ Hk=kStrKx#'C?A@L\ Or Binary""Sle"sJxtP;ElsK@[L(zKPL, 2@xJA M(K, L)A.f `fd$vbLexM4(! +MbLKOe* PeQNeL Kj i' Now multi8ply²`Auments. S IJar@reated as i@õmade @up of (c8opi` v.K ReDim V(1a1$ijD,'V(j, 1a jߺ IsN rici:%*%hfYeW$|  W|a_Q8/B/bzl A* WCo]3{+`nIiantf Q `=\)x``s(i)`2 )S?*fOO +sOF.- ._ 68 /0ߗ_12|,3_/8!o_4 OrsOr "Ar!!s<$Cr(V,qName,m/  Difference(_or_number stJ2pal As d= "Unnd---"c' CҪ >- m FxQ, yWziLong, VXX/R)Bap cj(KL |, " =[x#v#(@XXu>ApǾgaNotxx) _Q@VxOE??x@%d`"(Value) ' Exit FunctionEnd If0' put all argum@ents b"XX in one.ray for easier processing. ReDim Args(1` To 1) = x 2' check thasse eithmscalars DISTf,e same length,Arangeo,sePs6 a~comve OutType FAfirstMe DistvLCn10 "" If Var;(XX) < vbArTheҁ߀IsError(CDst(4,G))   Diffe renceCV(xl@Έ щ/Ɋ.=.StrXB!T!9D>El@d' xx TmuUb@ le cellD #)0(NowDseverythA.e@%kFi0UBound(B(ibrNsuEa;b  b Or+G"Binary&" "S5le"q] xt0*_TAKL'A(=`CA"L, 2iIf Out@putTyp\"@" Then Single" vCreate(V, DistName,!~Bs )vide(_or_n umber'st2*pal3 As StrP!"Unn=d-(--":'1' Compes2t /2 ADim xAVariant, yJ*WJzJiALo ng, V XXArgs()a BasejAWLengthKLwJ|, F (=KExWJfAKAJ(IA(XX) <> vbcA@Array +@ V Not IsNumeric) _AOr Fx e'ESFGiORUBound(RkA 7A(i@08,%) g% AL݂KiCOutputa KT""O SRle"d `Cre@ate(V,"Name,!(  @Power(_or_@number s*t2` pal! As df= "Unn@d---"a'@ ' F@inds d Lof! ' ^2`*Dim x , WziLong, V XXH jgKGLEH3 ,  =x,XX>A u{"!E(f)Not 綁>9qcY(exi. j ?p# ;A)%' check that both ay@e either scalars DISTfe s0. lق6' firste @ s0tnt5t'= 1D?E?}!`!spIsor(C1s(,{Q__q0!!l lvkN- 1{ 'can'ae an`s@o issuerror4Q p_ "©' NowX`!MS!Q"/ ; x__3 @ h_ !PNBxA`b- Or "Binary"T@eo x5A %/#rQ*Ǐ/#(#fooXX^X, in two ste(ps.'k<='p.tRepV(|A1%^$'q XXuLf%a/+/+ 0.++Pw^V^H>?3Y 5^ x/!U:9e End If ' For j = 1 To DistLengthV(j, 1)$^ W&RNext j EIf OutputTypeH"" Then Single"3DstPower. Create(V,Namte,=)3vFunction AMax(_or_number pal 2 6 As0 StrP^Unn@d---" vbĚAArray +@ [Ak 2NrLic3CV(xlValue Xaa&&Miss@ai2)bzc x`' n2g@ (xo ! 8P0KAm'C' iall x @=in one5Bfeasipye'o D +(Reavbi18 xElseuR00D)Vcheck that s`e eithscaltarrb" s l, rangeo}thGsc' aѠ,com`)e first eA-e/*HClЃ/%Qoj#Kg Is`for(CWa"K,( ,@)_P3oKHP='o劃 K`LBoundCCo U3A1L, 1?_;qt(K, L)4ٯEH{t$iKD'!sL(i"<: PO:gJ:u:S_&_&;\;q 1Z%5r@ B% $$a$e/$t$?$KGGe h o hHHX"" d<"a7###G0 k JGxt%Dp&&&ݿK ?'.LQLiM73vAato V3V(NIsN0.?0b'X~X#a 18If VarType(XX) = vbString Then WhDstPBIW) <vAprray ttMaxCVErr(xl Valu e)'Exit Functio}End If* For jM1 To DistL ength KV(j, 1W @Next jElsedd+iaiantjAKALBoundEU6kL, 2)^LIsNumeric1(K, L)4 0XX@pL PE(ISNV/VIG /ܠ  Ԧ̩qf >bOr IsEmpty(gCkNI!j,_%y $MyLKH'' ' Now( fi 6d of m vsD;7i`wuArPܴ&A5?{a tM@!= ?fo j SMiss`;4w 72(} x<  ype(x) <> vbArray +HVariant) Then DstMin = CV@Err(xl V alue) NExit FunctioEnd IfT '' put all argumentsD bXX to nefor easier processin g.CIf Not IsMi(_or_nu mber2 ReDim Args(1 To 1g )zx-Else00ocheck thassie eithfscalars oDIS Tfe same length,rangeosesI' acome OutT  firstr %e Z^J DistL A1""^x(XXF Isor(CDgUY(,")Gog AbI\"="Str@JF/, yF@dK LBoundB6@!UF!A LI , Ao   ,E(K, L)FHEJJ&$ vb'xt(ds lG Or1"Bi`nary"B "S7le"9 xtNeLKFNowieverythNeFADi &Bh1!(i`>(`G'Ia(or:Demo is inar.1l-"e}S P2o(s1*2sWXX}>g^A@q;(#izauqK_7_ E (E x I > t FM'S' chec k tha02ot h p:p1re ei0r s20232 5s5303'6comPVeQk fir:e #EC1= 1""T 0 0-not @,en NXSCCon, so(݀>1 +U6/(bi(Isb;(C@.P(w1H0`Kh58 x!u=~AIan_uw,s]dimens x`_d+A  'X#?g Qq4e<>&Or"0@ do X's matyrXX G!   jDC86{cellgK0#TxXX&; 4t4Z5 J!H+XX vbt{Q)xtU = DstType(XX(K, L)) If Outpu"" Or H@Binary0xtFSingle@" Then VxtEnd Ifi NeILK  /'' Now check X is scalars or DISTf length DixstLtVarx) < vbArrayaIsErr0or(C6Arg(), x)) SumProducCV"(xlValue Exit Function? Z=ZStr@̀Bp5yCIy,ElseFgKLBound(@]To U ( L , 2@Y K 5^kDln pt'>vbVvKxE=zzczzI crea@te a d@w of sump#is.$ I have two awB~(老s), eachC wiidenti mAons (`SeU it'bs 1x1 Du'0 theBhould alla f `ual from` 1 to ,tak` ǡ$ med@Trial-`eleAb b;E%thath(᥁; o⿂-ifg !an*a, not6"c9@* as90v!s equ"!;#8 BReDim V(1 7)14aPr() As Double ' ;o be ( oIsNume8ric@XX a vX must referA6sB cells containWE !ab;"&r`esult O@Ej! Y!)% !g=j,V( j, 1)XX;'BnjXX}nooovooo W VQG Wy5oZ/vY-vWS 3B2rangp,*lЙCq'r qXX$0Q a v va6y;q3kq-h1`..#5k( ?)i))_*}+ ?,?, [>-ϹO _%?//b%R;* x7 RߵdE#x6""_!_!a  * Kd/_i" CQ0u Is#=_FQIIw+P`J&SW'yJV' (r(۴ Then DstSumProduct = CVErr(xlValue)Exit Fu nctioEnd IfBFor jq1 To DistLengthoV(j, 1)2 + PrK, L) * W!BNext j QLFK 'If OutputTypeM"" Single" Create(V,Name,!V L G  GetTrial(Array_or_Scalar@ As Va@nt, BNum0LongD@5Iseric)8< Else(s0'F0;If(@/_1EperatorJst2 &3alF[?Stri+"IF-"D'miI1A ɆOA2OpK KF`HDKDKDD:Asw R()(e@!`%[A1&L4D!= Ok522EB= " dW(3q(A<> vb;ANot ([1)YostIf_e0rror Opl) G22 > ^ (  D&G% =1(Is`or@(Check``!% 87M<5ߠ3k 2=1`H63 A-=(AAE>9b@":R4) stAqg%A#S= Au^' Determine8xLL z`0J1 f  N Z Sl Or( "Binary6""_ x>t%= GU4ReDtD\R(01SHeleCa Op@(aaF= ޥ2 5@DЅP'D( uэay aoR h=媅[f=l`/"/aBDoƿ@0E0#_+uu_+ '_+CU_+?_+ ןT+>_+rWA  /7A WaAlNum) ' End If Next Tr ialCase ">" \ForZ = 1 To DistLength XIf Get`(D1,Q<) >2 ThenIMDR(, 1)\6F Else0,,=Y=VVl3mVumtSe0lectDst= Create(DR,Name, OutputType Exit Functio_error:5DCVErr(xl@Valu@SubMacroOp$s( Bim MODR As RangCSet= S@heet1. ("B_o_data")(m1 aWorkbooks.CounXt ?@ABCDEFGHIJKLMNOPQRSTUVWXY[\]^_`abcdefghiklmnopqrstuvwxyz{|}~\R0*#1a*\R0*#19*\R1*#28a*\R0*#f*\R0*#9*\R1*#281$*\Rffff*0w4bef0a8d*\R0*#10l  B   ( H,P 2[2[  2  @ B H P FX  /   0 $; !@ X h p  0 $;Z50H P ` h x     B h H "P }1xMEP@ (4> "LLLL +   ( 0 H P h x    N < H zP  x]$ is_active]A@ $' make key 256 bits long''  ompati &h  $XD6$'8-12-0 &h  $XD\$'   $$'i? makes a sha-256 hash of the unprotected formulas in a workbook]Ph'  ! !    rq!  "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkmnop|tuvwxyz{l}~  !%.    !%ic(x  ! ' Fo  DistLd B@ kx  !%.    !%= vb !!d$XLSim:  !!d$Dst: (  !!d'VEk  d B@ctionkdx  !' FokX gth 'i8('%Waltz, nymph, for quick jigs vex Bud.$$ hash_code %!@$'i](Hhte(V$', Outp$  !B@ncti'Sheet1.Range("on_off_indicator") = "ON"! Application.CalculateFull1 For Each wks In ActiveWorkbook.Worksheets+ If Not wks.ProtectContents Then0$ On Error Resume NextErroD Set fc = wks.Cells.SpecialCells(xlCellTypeConstants)   If Err = 0 Then fc.Dirty'~ End If  End If Next wksdp  !B@(Sheet1.Range("on_off_indicator") = "OFF"or4The model has been modified and cannot be activated.A@ ko to use this sub: Uncomment it.^ c Run it.ar Re-comment it.orSub hrihkybgpv()ra 'G ' Sets stored hash code value to the actual hash code of the workbook.6 ' This allows the workbook to be activated and saved.Z 's ThisWorkbook.Names.Add "hash_code", HMAC_SHA256("Waltz, nymph, for quick jigs vex Bud.", GetWorkbookFormulas())(End Sub ޵Attribute VB_Name = "ModuleHashFormulas" Option Explicit Pub, Const is_active_sng&~ Fun@HMAC_SHA256(key As S3, data)e Dim inner_ /oiALong, cL, b Byte TC_Crs_Initializ6= U) ' make  _ bits l5 )T}6'T i1 To 32! & Hex(C`("&h" & Mid, i, 2)) Xor 54" ;$92DNex|n.F I-t)D End EwFGetWorkbook"(@ ' \s @a sha-]h of the unprotected fī=@ w@Vfmc@zIwkssheet, fBpRangJCoEach AIn VA0.svI f Not .P#-tenTh,en ZO@rr@tResu@GaAQSet+=Cells.SpeFc@(xlTxypeETa#Err 90  b`"@ .B _Bl E(&.?$K Elsd2E `.Clear@MIfk_&E&Comm!3_&I _&4H3 %@40Amtrp(Left(fc. .T@s, 6), "XLSim:", vbare) Or ?4!Dst3CP:i/E03a>% >BF aZ!'"@p`3" IsAuntic()!Boo`WWY Fab(i"Waltz, n0ymphN Fquick jigs vex Bud.$s(Pf=rgPThis.s("qY_code").Refer@sTo, 3*4g``SuySateRX_A[?Z`2Z ;]sS p6 /_.Addޏ, T$ruJ'Se1. ("on_off_indica tor")@"OJN'.ApaAQ.CalcpteFullqDF/h hvhyh)!nUblliostaoUn =0ui1 `PDirtya1%i!7"OFF1Msg Box "& m 3l p4 beenifiaS@cannot 2P:3, G55to useis sub:! Uncm iDt.Rune-a:hrih@kybgpv ' Pp, !@ !@ valuJoe ua hoԛ52'P` a`llowsb ` bRivq saved OBxI, PPPϩPP 'ChCd` dP[lhF:( l`lM@@ D6D `1h6 [ldF:( l`lM@@ D\D `1d6  `fP<2ldlh*ǜ #*ǔ F l244lhd\0  Ch/X\ $ H \ QX[Td\P N d kNK0<%\d \ `\5$ \\ l\;<%\d \ [`\5 !lhF<`a`1h6 ` , \\H\0<%\d \ `\5$ \\ l\;<%\d \ [`\5 `a\\a`aXXa(,]`F  :</(H]`Fx  x:hX/8()\X6xX5lh`a\\a`#$*1h/$\6 `  \\H\lh$d H l$*1h/$ dP 9 lhF<lXL4 lTP`dhL$\XxX8(Kpz:<%L$ Lah h``CddP  P(@ /Vpz2d`)L6 hP0$ 8 d`LhP` ``1p5` K(:L%c,%\$ \\):L%f,%\$ \\+''' :LN`` 6` 000txp \` \rU , `q  00$ `__SRP_b ModuleSHA256__SRP_cs__SRP_d$ `$ `nrU X$ `, `  , `  , `  0! `   0I `   , F   ( T@ T R RH R R TP V T VX   T &( P @X  X V ZP X  V 4h  V L P (X "   4 V ` h x     V ( VH " J < 68 6p 6 6 6 6P 6 6 6 60 6h 6 6 66H8888(8`8888@8x888 8X8$##}TxMEP> L<<< %pAchroP`xx@  C  8 0` |+7+"`kp@@i$  stri&lgor+(0`k;;i$ t isi&st, +*(`pd+p##Ii, for i.assw`0t is `2phat `4l`6hs ar`8dctio+:`Hx+h li~ le miiract+<h`x+ vi~ (ven iHing ipass+>`xk i~ AUTIi@nt a+Bh`xk( i~ Hter i@is '+D` xk i~  cod+F( `xk i~ de, +H `xkh i~  sel+J `xk i~ ance+L `k(` SSiN own s suppliH`Ptrran`Rpny k TlO So commis`Vhsed `Xdd`Z`cons`\\ do `^Cact ``C! W` + ` k JJiN r-20 dp` Ini fXH ************0  @ @h `8H`4`0`h,****`j(****`P $****`l  C`n)`****`****`p ****`r  0@ h@ <@H CC  ( (0h0hH 8H `  x  0  p pLJ*HF:D  0000 p @h 0000@   ! 000@/ 11110 ? @@ 0000X)111111@ @)000000@ 1@ ! 0@ 1111@ X <0000000011@;11111 E+@0 0111@H @x 0000@` 111@ ! 0@ 1111@t @d 1111@T ?@D 0000@ 4 @8$ @P @ @h @ @ @ @ @( @ @ @@t @Xd @pT @D @4 @$ @ @ @ @H @ @0 @` @x @ @ @t @d @T @D @ 4 @$ @8 @P @h @ hH0( pP Lx`  b"(@L @< @, @ @ p`"x@ h @8X @PH @h8 @( @ @ @ @ hxh`(xh@h @X @H @08 @H( @` @ @ @ 00hH`FxX0>  X8`>xH ("p(`*x8h`:x`Dx>H(`<x`Jx>BHx(x`Bxx(h hh `Hx h >B@  Xp KIK$*\Rffff*0w4bef0a8d*\R0*#10*\R0*#f*\R0*#13*\R0*#197` V X x8  J 4P666606h6666H6666(6`6888@8x888 8X888888p888  *P 0@P`p 0@P`p 0@P`p 0@P`p V    < NX   &   R Rh & VB@ JP P  ! *! 8!H!P!  NX! ,! ! ! !"  "" "  >("h"1""  H" L" J0# ##  N# N$ LX$ J$ $B*% `%  Lh% F% &2! & X&`& Vh& & & & <& N8' ' ' &' ' ' V' LH( T( ( V)B`)  Jp) P) *  * *(* X*h*p*  Px* * **  ++  ++ +  >(+h+1++  P+ N+ N8, ,,  P, R- N`- :- N- R@.. N. L. H/&X/// V/ / 0 0 &(0 &P0 x0 0 0 0 0 F0 V1Bp1 1 1 1 11 1111 "2  02@2 `2p2 22 22222 23 V3 `3 x3 3 3 V3B4$ 4H4 VP4 4 4 4 4 V4BP5.h55 V5 5 6 6 &06 VX6B6H<67 V7 h7 7 7 ,7 V7B(8 88X8 V`8 8 8 8 8 V9B `940h99 V9 : :  : 8: VP:B :40:: V: H; `; h; ; V;B ;40;0< V8< < < < < V<B 8=40@=x= V= $= > > 4 > X> `> 0x> > > V> 2 ? VX?B ? ? ? ? ? ? @ @ (@8@  H@  NX@ P@ F@ R@A <A V A0B  LHB PB LB 28C pC xC C CC C  LC P0D "D";D $DDE RE (hEEE JE &F,8F PhF PF PG VXG $GGG  H H V(H H H H 8H H H I 0I 8I PPI I RI TJ RXJ RJ PK RXK 0K VKB 8L@L PL`L pL L L L L L L L L M M M  0MPM`MpMMMMMM  JM N  0N@N`NpNNNNNNN N NO (Opn0O O  X`O &&P  (P 0P 8P @P XP `P hP pP P PPPPQ0QPQpQ Q  Q@xQ0S@SO******************************************************************************* MODULE: CSHA256ts l FILENAME: CSHA256.cls AUTHOR: Phil Fresle CREATED: 10-Apr-2001? COPYRIGHT: Copyright 2001 Phil Fresle. All Rights Reserved. DESCRIPTION: N This class is used to generate a SHA-256 'digest' or 'signature' of a string.M The SHA-256 algorithm is one of the industry standard methods for generatingL digital signatures. It is generically known as a digest, digital signature,L one-way encryption, hash or checksum algorithm. A common use for SHA-256 isL for password encryption as it is one-way in nature, that does not mean thatK your passwords are not free from a dictionary attack. If you are using theM routine for passwords, you can make it a little more secure by concatenatingO some known random characters to the password before you generate the signatureM and on subsequent tests, so even if a hacker knows you are using SHA-256 forP your passwords, the random characters will make it harder to dictionary attack. *** CAUTION ***M See the comment attached to the SHA256 method below regarding use on systems with different character sets.9 This is 'free' software with the following restrictions:R You may not redistribute this code as a 'sample' or 'demo'. However, you are freeP to use the source code in your own code, but you may not claim that you createdS the sample code. It is expressly forbidden to sell or profit from this source codeQ other than by the knowledge gained or the enhanced value added by your own code.O Use of this software is also done so at your own risk. The code is supplied as. is without warranty or guarantee of any kind.O Should you wish to commission some derivative work based on this code providedE here, or any consultancy work, please do not hesitate to contact us.! Web Site: http://www.frez.co.uk E-mail: sales@frez.co.uk MODIFICATION HISTORY:. 10-Apr-2001 Phil Fresle Initial VersionO*******************************************************************************]@D ]@D ]@?D ]DH ]DH ]D  HO******************************************************************************* Class_Initialize (SUB)O*******************************************************************************D Could have done this with a loop calculating each value, but simply6 assigning the values is quicker - BITS SET FROM RIGHT+ ! 00000000000000000000000000000001+ ! 00000000000000000000000000000011+ ! 00000000000000000000000000000111+ ! 00000000000000000000000000001111+ ! 00000000000000000000000000011111?+ ! 00000000000000000000000000111111+ ! 00000000000000000000000001111111+ ! 00000000000000000000000011111111+ ! 00000000000000000000000111111111 + ! 00000000000000000000001111111111 + ! 00000000000000000000011111111111 + ! 00000000000000000000111111111111 + ! 00000000000000000001111111111111? + ! 00000000000000000011111111111111+ ! 00000000000000000111111111111111+ ! 00000000000000001111111111111111+ ! 00000000000000011111111111111111+ ! 00000000000000111111111111111111+ ! 00000000000001111111111111111111+ ! 00000000000011111111111111111111+ ! 00000000000111111111111111111111?+ ! 00000000001111111111111111111111+ ! 00000000011111111111111111111111+ ! 00000000111111111111111111111111+ ! 00000001111111111111111111111111+ ! 00000011111111111111111111111111+ ! 00000111111111111111111111111111+ ! 00001111111111111111111111111111+ ! 00011111111111111111111111111111?+ ! 00111111111111111111111111111111+ ! 01111111111111111111111111111111D Could have done this with a loop calculating each value, but simply . assigning the values is quicker - POWERS OF 2 + ! 00000000000000000000000000000001+ ! 00000000000000000000000000000010+ ! 00000000000000000000000000000100 + ! 00000000000000000000000000001000+ ! 00000000000000000000000000010000 + ! 00000000000000000000000000100000 @+ ! 00000000000000000000000001000000+ ! 00000000000000000000000010000000+ ! 00000000000000000000000100000000  + ! 00000000000000000000001000000000 + ! 00000000000000000000010000000000 + ! 00000000000000000000100000000000  + ! 00000000000000000001000000000000 + ! 00000000000000000010000000000000@+ ! 00000000000000000100000000000000 + ! 00000000000000001000000000000000+ ! 00000000000000010000000000000000+ ! 00000000000000100000000000000000+ ! 00000000000001000000000000000000+ ! 00000000000010000000000000000000+ ! 00000000000100000000000000000000 + ! 00000000001000000000000000000000@+ ! 00000000010000000000000000000000+ ! 00000000100000000000000000000000+ ! 00000001000000000000000000000000+ ! 00000010000000000000000000000000+ ! 00000100000000000000000000000000+ ! 00001000000000000000000000000000+ ! 00010000000000000000000000000000 + ! 00100000000000000000000000000000@+ ! 01000000000000000000000000000000# Just put together the K array once|/B+D7q++۵+[V9+Y+?+^+ج+[ +1$ +} U +t]r +ހ +ܛ+t+i+G+Ɲ+̡ $+o,-+tJ+ܩ\+ڈv+RQ>+m1+'+Y+ Ƭ+Gլ+Qc+g))+ ' +8!.!+m,M"+ 8S#+Ts e$+ jv%+.&+,r'+迢(+Kf)+pK¬*+QlǬ++Ѭ,+$֬-+5.+pj/+0+l71+LwH'2+43+ 94+JN5+Oʜ[6+o.h7+t8+ocx9+xȄ:+nj;+<+lP=+>+xqƬ?+oxO******************************************************************************* LShift (FUNCTION) PARAMETERS:6 (In) - lValue - Long - The value to be shiftedG (In) - iShiftBits - Integer - The number of bits to shift the value by RETURN VALUE: Long - The shifted long integer DESCRIPTION:6K A left shift takes all the set binary bits and moves them left, in-fillingL with zeros in the vacated bits on the right. This function is equivalent to the << operator in Java and C++O******************************************************************************* 0C NOTE: If you can guarantee that the Shift parameter will be in theI range 1 to 30 you can safely strip of this first nested if structure for speed.$ A shift of zero is no shift at all. & $'"zG A shift of 31 will result in the right most bit becoming the left most% bit and all other bits being cleared &e $'"d'"kz7 A shift of less than zero or more than 31 is undefined & & e B@khB If the left most bit that remains will end up in the negative bitF position (&H80000000) we would end up with an overflow if we took theC standard route. We need to strip the left most bit and add it back afterwards. $ & $G (Value And OnBits(31 - (Shift + 1))) chops off the left most bits thatG we are shifting into, but also the left most bit we still want as thisE is going to end up in the negative bit marker position (&H80000000).C After the multiplication/shift we Or the result with &H80000000 to turn the negative bit on. $ &  $ &$'"dF (Value And OnBits(31-Shift)) chops off the left most bits that we are@ shifting into so we do not get an overflow error when we do the multiplication/shift $ & $ &$'"kiO******************************************************************************* RShift (FUNCTION) PARAMETERS:6 (In) - lValue - Long - The value to be shiftedG (In) - iShiftBits - Integer - The number of bits to shift the value by RETURN VALUE: Long - The shifted long integer DESCRIPTION:O The right shift of an unsigned long integer involves shifting all the set bitsE to the right and in-filling on the left with zeros. This function isN equivalent to the >>> operator in Java or the >> operator in C++ when used on an unsigned long.O******************************************************************************* C NOTE: If you can guarantee that the Shift parameter will be in theI range 1 to 30 you can safely strip of this first nested if structure for speed.# A shift of zero is no shift at all & $'(zJ A shift of 31 will clear all bits and move the left most bit to the right most bit position &e $'(d'(kz7 A shift of less than zero or more than 31 is undefined & & e B@khI We do not care about the top most bit or the final bit, the top most bitH will be taken into account in the next stage, the final bit (whether itH is an odd number or not) is being shifted into, so we do not give a jot about it $ &$'(J If the top most bit (&H80000000) was set we need to do things differentlyK as in a normal VB signed long integer the top most bit is used to indicateH the sign of the number, when it is set it is a negative number, so just3 deviding by a factor of 2 as above would not work.H NOTE: (lValue And &H80000000) is equivalent to (lValue < 0), you couldK get a very marginal speed improvement by changing the test to (lValue < 0) $G We take the value computed so far, and then add the left most negativeE bit after it has been shifted to the right the appropriate number of places (@ & $'(kxipO******************************************************************************* AddUnsigned (FUNCTION) PARAMETERS: (In) - lX - Long - First value (In) - lY - Long - Second value RETURN VALUE: Long - Result DESCRIPTION:@ Adds two potentially large unsigned numbers without overflowingO******************************************************************************* 0]D]D]D]D] ,'4 .'6 ,@'0 .@'2 ,? .? '8 0 2 8 4 6'8 0 2e 8@ 8 4 6'8dX 8@ 4 6'8k0 d( 8 4 6'8k 8'*i O******************************************************************************* Ch (FUNCTION) DESCRIPTION: SHA-256 functionO******************************************************************************* ( ~  ~ ':i O******************************************************************************* Maj (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************  ~  ~   '<i` O******************************************************************************* S (FUNCTION) DESCRIPTION: SHA-256 function (rotate right)O******************************************************************************* h ~ @$$( ~ @$ $"'>iO******************************************************************************* R (FUNCTION) DESCRIPTION:& SHA-256 function (just a right shift)O*******************************************************************************  ~ @$X$('BiO******************************************************************************* Sigma0 (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************h ~$> ~ $> ~$>'DiXO******************************************************************************* Sigma1 (FUNCTION) DESCRIPTION: SHA-256 functionO******************************************************************************* ~$> ~ $> ~$>'FiO******************************************************************************* Gamma0 (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************( ~$> ~$> ~$B'HiO******************************************************************************* Gamma1 (FUNCTION) DESCRIPTION: SHA-256 functionO******************************************************************************* ~$> ~$> ~ $B'JiO******************************************************************************* ConvertToWordArray (FUNCTION) PARAMETERS:. (In/Out) - sMessage - String - String message RETURN VALUE:) Long() - Converted message as long array DESCRIPTION:O Takes the string message and puts it in a long array with padding according to, the SHA-256 rules (similar to MD5 routine).O*******************************************************************************]Dh]D]D]D]D?]D]D]H0]HH N'PG Get padded number of words. Message needs to be congruent to 448 bits,I modulo 512 bits. If it is exactly congruent to 448 bits, modulo 512 bits? it must still have another 512 bits added. 512 bits = 64 bytesL (or 16 * 4 byte words), 448 bits = 56 bytes. This means lNumberOfWords must5 be a multiple of 16 (i.e. 16 * 4 (bytes) * 8 (bits))  P ^ `    ^   ^ 'R R TxF Combine each block of 4 bytes (ascii code of character) into one longI value and store in the message. The high-order (most significant) bit ofE each byte is listed first. However, unlike MD5 we put the high-order, (most significant) byte first in each word.'V'X X Pa Each word is 4 bytes X 'Z X    'VE NOTE: This is where we are using just the first byte of each unicodeI character, you may want to make the change here, or to the SHA256 method so it accepts a byte array. N X $$b'\ Z$T \ V$" Z+T X 'X:K Terminate according to SHA-256 rules with a 1 bit, zeros and the length in" bits stored in the last two words X 'Z X    'VD Add a terminating 1 bit, all the rest of the bits to the end of the word array will default to zero  Z$T V$" Z+TI We put the length of the message in bits into the last two words, to getI the length in bits we need to multiply by 8 (or left shift 3). This leftJ shifted value is put in the last word. Any bits shifted off the left edgeO need to be put in the penultimate word, we can work out which bits by shifting right the length by 29 bits. P$" R +T P$( R +T T'Li7O******************************************************************************* SHA256 (FUNCTION) PARAMETERS:1 (In/Out) - sMessage - String - Message to digest RETURN VALUE: String - The digest DESCRIPTION:J Takes a string and uses the SHA-256 digest to produce a signature for it.L NOTE: Due to the way in which the string is processed the routine assumes aM single byte character set. VB passes unicode (2-byte) character strings, theL ConvertToWordArray function uses on the first byte for each character. ThisL has been done this way for ease of use, to make the routine truely portableJ you could accept a byte array instead, it would then be up to the callingK routine to make sure that the byte array is generated from their string in* a manner consistent with the string type.O*******************************************************************************]]D ]?DP ]D ]D ]D ]D ]D ]D ]D ]D0 ]DH ]D` ]Dx ]D  Initial hash valuesg j+dg+drn<+d:O+dRQ+dh+dك+d[+dC Preprocessing. Append padding bits and length and convert to words N$L'f Main loop  f$d'$d'$d'$d'h$d'j$d'$d'l$d'n ?    $f +d0  $$J  $$*  $$H$*  $$* +kX0 n j$F$* j l$:$* $$* $$*'p $D   $<$*'r l'n 'l j' h p$*'j 'h ' ' p r$*'p/ $d$*+d $d$*+d $d$*+d h$d$*+d j$d$*+d $d$*+d l$d$*+d n$d$*+dh. Output the 256 bit digest"1@O^m00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$$'i,,Attribute VB_Name = "ModuleSHA256" '*K MODULE: CkFIL0ENAM.clsAUTHOR5Phil F resleCR EATED10-Apr-2001OPYRIGHTCopyright  $. All R s Reserved. "DESCRIPTION:This c lass used to generaa k- 'digest' or 'signaturef a sng1 Thealgorithm-one of tinduyandard methods f.>ingPA;ital 9s0. It(ically kno`wn as"), ,@!-way encryption, hash5check0sum -R common FB'-CiBs+pOwo71A"i)in CL,@@at does not@> anA'your& 3refree fro@&5cA-ary attackCf  a@ usMB`routi@] )s , cmake @)a litt le mo@se"cu by>ncg-bsoCZrm#characptersAvCbeete%q ;@ Vsubsequent t(so eve(n iAh@9erxsG:Ec` 'A-e Owic d ^di-+@ @ Cv`f `AS2CB1hgfZ below reg@]3aIystemHwd@;ffer * setsewbu t'fA' so8ftwA!fol ! @rs|aYou m@_Nredi pætbodeh'sam plA{ }demo@'. How1rGaA &sWceF ]bYrc , b7%`im B`aWcre}`MdB Cb }e4xps}=biddCse9profYdա o@r na[!Yledge gaddAenhanc`9valu;`" da e2UsO22`al@XdO4uAr !rpisk."suppli aBA7:`w ;Wty!gu@mntNan@Should+wi"!Siss v\ivative ပk baaP?@(vide0hQ,A cHult"y, Cqhes`n tॅWeb Sitehttp://www.Hz.co.uk3E-mailsales@!AIFICA! HISTORY"xxpryIniticV0J217?{1?/ 5H ~4 ?[516 ?7Q?6112?6# 7125?5$>8151/?4%>91102?3&>1*204?2'?*409?1(?*819?0)?*638?? 87*276[?0?&1*5|53?, *3107>-?*6214=.?*2428< "1 m_lOnBits(19) = 10 48575h '< 0  202097151+B1C1C4194303CBC2C838860.7 C!!3!1677721!!4!3355443!!!5!6710f!!!6!13421_@3AD726843545D853687091Dĩ737418^2@D3é14748364DC' Could have done this with a loop calculating each value, but simplyassign the s @quicker - POWERS` OF 2 @2Power(2BAC!dn2}10nf410nn8e@nn16zAnn3 "yBnn6 "xCnn|12("wDnn2>5"vEnn51/"uFn1U02F"tGoU ;sHoU09&"rIoU19&"qJoU38"pKoU|76EDoL?*5?0YD>-?*31|07=.?*6214</?*2428;/?HS#":/HPt*Q9/L>s*R8/!2s*R7/"?t*R6/#?s*S5/$?s*7R4/%?t*S3/&?t*S2/'?s*T1/(>7S0/)4&' Just BpЈtoger0e K array onceK3&H`5A2F 98eR.&H71I 49TK(+&HB5C0FBCF(&HE9B`5DBA5e%&H3956C25Be#&H59F PFB &H923F82A4r&HAB1C5ED&HD807AAw &Hu035B0j&HB285BE1t550C7DC3v72BE5D7180D0EB1Fw9BDC06A7vC19BF1xE49B69Cw EFBE4786vFDCg240CA1CCNDE92C6v24A4AA5CB00A9Dw76!8D83E8515!A831C66DB00327CV&2BF597F Cf2C6E0(0BFf2D58A793&H@6CA63531429296327B70A86%32E1PB213f 34RDDF35T33!1f 36p50A7f 7@66A0AB1381C2C92V%392722Cw 4012BFE8A: K(41) = &HA81A@664B 2C24B8B7 0\3\76C5(1A3.4.D1@92E819.5.6990624.6.F40E3(585710P6AA0w89@A4C116/9IE30850274877 4C34B0(BCB;5w391C0CBk5w4ED8AA4A#w5B9CCA 4F w682E6FF#wGF Ew78A56 36#w84C8(7815w8CPC702w6w9@0BEFFFS64506CE6w@ 9A3F7#6w67178F2 End Sub '*?I@ LShift (FUNCTION)PARAMETERS:(In) - lValueLong- The vBto be sediBitsInteger@numbpof b@ 2tby@RETURN VALAs -, _cU?@h==) ' NOTE: If you can guara6e%a!?EcSpmet`Dw;.Kib*% geD 1' 30 safely strip Kth!/irst nes 3ifuctu@re for s`peed.AZ! a= nodG$  = 0cn%n= ciExitF0#D' 31 "!r`esultN"L moi$com@TO]A !!J^Jo@NrUbe!c0learwElsem wDAf1L&H80ce $ߢy@ If&A`?lessJnt jmo`>thN``9undefin<9Oq> Err.Raise 䁷E'A^a|F2 t remainseupnegativepos ibD(7) we would Ip@Lrflow `/0tookPest ard route. We`20LX"4? #dd `+backaf:ws1(!m_l2Power(- 2))x#a' (Sg%On1d(A+ 1)chops9fQ ^0~t.;/bo , but`soSQstGw J 2ais0$go?SJ` markL00)[3AQm0>ipli0e0c/Sk (1D@bw d Nchy$ on(vI(*Mt* a SF ?31-|cr @ do not Fg@2err Bwhenq@pf%+P/&2y'Eq{o~*QR6oo`>-Rўoo!>Po3\k7w10Coo#?pMo m Cu37P"unsigb`Zvolaf&u tB'!CS8gG<"Jb>>>/@,C++ -uspoP|' z pA߯!o C%oo!$4os o2ϦϦe .ϦoϦϦϦ`fϦȦ ' spe0ed. 0 A shift of zero is noLat allIf iSRBits = 0 Then6 R80lValue0Exit Functio/ ' 31 will clear y bkand move the lemost torig htPposisElsea8 b_ A:&H80uw1< 10-If!&lessxanorreundefin,ed/z<nOr r> AErr.Raise 6,C' We dBot ca!aboutBctop%Dh(m$all.,~b@3ak en invac`countB next stageC (whe5C@Eodd number !@"not)beHingøed, so wF4giaa jo7iK(7FE) \ m_l2@Power()_:E<@FK() was set&n\th@/s differ`ently iHn aerm[V B sig lo@*eg!nFs! .indicatw'.ac), -`4 3 |- negata'#*jus(deHvida/byfact2 2 @C@,.woul`6oork NOTE: - )%equival"$%]), you @Ilb' g*a very margin%£ imprmchang"!teZ$ c/@9+)Lft@\ ue mput0%far, !-@9dd%,Ab'"aft@;0h )be hº:!7b ap pri<fcȑ' plac|es' ]$T4] - 1))D^Eg '*?' AddUn_(FUNCTION'PARAMETERS:(In))lXLd- Fir<"3)Y'pSecoERETURN VALUE Res ul_bDESCxRIPbwo potMi`y lQe ueisth@Srflowh_#?! Pr04tez(By} As , _G"(>Y )sDim4bՈY 8>YcclX:8X~= l F40=L3cF) +PVFlX4m llX;U ArY8#Da=_!M _ &HCB`rQ@A&H2 F{?O?P E ! ?QL7**1ECh >L}DSHA-256 fF?oUA Ch@xe5@0S@yeszuB3(8y),((Not x0zf?_ 1MajOOOOO _OZo7e _czd S (rotrт SQn1Sh((x, (pOn(4))) Or LShift(x, (32 - (n And m_lOnBits(4") ETFunction 0 '*KQ R (FUNCTION)DESPCRIP:SHA-256 f (just a right s;NPrivate R(ByVal x As Long, _  )R = RCIntcSigma0oa@f?\J \'M]S!D0= (S2) Xor 1322)?=BT1T[aT1*Xma1Tc*6i*1=i*5*=a*GamT ' `?(p*|*$T7i*8RX3_*=F*T_*<U*T+B*T1j*9h*10*=*ConvertToWor@dArrayPARAMETERS(In/Out)`sMessage@Stritngm#` RETURN VALUE(Ae d as l aMvTakes the ss a@puts it inPw with padd acc9to 8rul(similar to MD5 routine).% (| e(bq}Dim lDLeng|NumberOf1s l `BytePosi0Count!,R:c MODULUS_BITS`512CONG`RUENT448SL= ' Get b%0,n of "w%s. 2need+o be c-rue%p b`,mod0ulo r. If,s exactly  0mstil@l have@2o.r6 01ed.= 64 b0 sU(016 * s ), 6#. This mean<&%a mult0iple!(iP.e. ()q@8 (1AQ!lSK j(( +((J"- ) \ #_TO_A_BYTE\  + `*/u)!)WORD$Rew46 -`EComb@H each block (ascii"dchar #er)P&oneCUvalu dPTore@"UTq(e hP-,er (mo6significan `_PC `# list1first. Howef, unlikeUwe Z"W%  Q6XGB!!G6I= 0laF6Do Un0 >=S' E R%(@$Sc%Q'l (30t(XpMod 1)x)*+ ' NOTE:8whe@Pa`usooc7$unicode' %, you mЂvwp rmy0n, PCp'uQmethod9LsoMxep`{aS۷. lByte = AscB(Mid(sMessage, hCount + 1, 1))WordArray(lb)0Or LSh0ift(`gPositionb = }Loop  ' Terminaaccing to SHA-256 rules with a 1 bit, zeros and th@e lengin(s sto@red inast two w}0szzZ\ BYTES_TO_A_WORDw(3 -F Mod)) * BIT&+|Addit#{oallZreyZofiC&'B5 ar@J@defaul@pen&mA, w e canik o@Hwhich4/%ErighsJQ29 DitNumberOf;rs`R1)SEuL]bd,"c 2R3D}29}ConvertToFK#@g E@UFuncA!_'*?1' '!(FUNCTION 'PARAME TERS:(In/Out) $e@Str!o- qPdig o`RETURN VALUE&T\JDESCRIPa"Tak@a@b us Zśproduce@sigure 2f`Zit`>NO`TE: D Wgway!jI s[roc`n`Wr`NDin` ssu@q a!sleg@@charac` set. VB pasaunicode (2-bY ) ( s`vha' AfD? ocfir < tTD4tT4$tdT4     *<<lP=<><xq?< $ P  kl qx kWl RC qxO qxkk1'''8'X  D6X8l k R*l kk qx!l kk qx $ X8, kl qx kq ` ! , ` ! ( ` ( ` ( ` (9 ` ,a `1 H0( `1 0nld@Rldlllhls/ }!ModuleXL2Dist' ModuleXML$_VBA_PROJECTB#dirZrU~|  a 9   !  I 1 y  Aq   ?    ? ??       @             @         @         @ /B<D7q<<۵<[V9<Y<?<^<<[ <1$ <} U <t]r <ހ <ܛ<t<i<G<Ɲ<̡ $<o,-<tJ<ܩ\<ڈv<RQ><m1<'<Y< <G<Qc<g))< ' <8!.!<m,M"< 8S#<Ts e$< jv%<.&<,r'<迢(<Kf)<pK*<Ql+<,<$-<5.<pj/<0<l71<LwH'2<43< 94<JN5<Oʜ[6<o.h7<t8<ocx9<xȄ:<nj;<<<lP=<><xq?< $ P  kl qx kWl RC qxO qxkk1'''8'X  D6X8l k R*l kk qx!l kk qx $ X8, kl qx kWl RC qxO qxkk1'''8'X  D6X8l k qxl Rlx@k qx $ X8(l qllqhl @qtl@qpl ?l?ĪqdltlpR|ldlllhqdltlpRld@Rldlllhqdld@lllhqdldlllhqdldqx $ Ll ll lqx$ T$l ll lllqx$$ tDdPRGKSendKey!biNdx "O@rror GoTo ADC_err-0ʂ\}Ahi"B = 1 `LeniS$jV(t*^{H , 1B} a NextC+. "{F2}a ,@ ^+~dd`;, True n'4RP<:Q'Q' 'Q`>J _JAB J* G+Ln/(&0* pHd VBAProject4@j = r KIK J< rstdole>stdole h%^*\G{00020430-C 0046}#2.0#0#C:\WINDOWS\syst em32\e2.tlb#OLE Automation`EOffDicEOficEE2DF8D04C-5BFA-101B-BDE5EAAC42Egram Files\CommonMicrosoft Shared\o@12\mso.dll#M 11.0 Ob Libr8aryK`MSXML2Mintst, if any.2''FuncDstImport(XmlDist) Dim Str As VariDan~'''xDoc New DOMnt30!xNode I, x ÊK@ing, Stat&VsIDoe,  !#'Orror GoTo {_e :N=<If?TypeJ)

vb@$senWFJ.validateOnParsAFalseN@ LoadKTh@+ ChildAZs.@Length-1!e+Set m= 9(0̉Ä' F3q$.{ s.get dI@tem("n"l). xuGFGLeft(& S`pace(9),!"$' AveragI1~avgRT= CDbl( c&gst@G`AvgText & R ight(um+F"( , "0.0E+"Min!c3minr[RM$M idp , HeaderV + 13? .qWa$Sub (q92ߴ״eUPSeleb. (uee doc luccessfullBY ow so0methstR>playa, ExfailߑF' See the previopus l! H$B (ByRhef sXL1, _#By Inde@YIgerERs q=+ 2Q EachIn3  'Debug.Pr0drV~ϰedItem("name").NodeValue@ ''' If x\pType = NODE_TEXT Th enXbDebug.Print Space$(Indent) &Parnq6N|_ GJ":"3- End If6;HasChild:sisplayLy, Z+6MN8extSub pdx  > ( H "P Jx 0v p  * 6   ( 8Hx]$#.###############E-#< This stuff is not needed since we went to XML format; but I0 retain it here for hisk(AvgTextR(MinText:T(MaxTextRa (CountText:aExtraTextLengthCountTextLengthC (HeaderLength TrialsLoc Code_Values^ Decode_Values" Decode_Floor (DstCreate=SipSNamed DistTypeParamIOriginFTrials2 MaxTrialsg TrialsStart TrialsEnddMaxValuecMinValueAvgValueVDifaX DataStringBi`Period? TrialValueUseCols StringName MinString7V MaxString AvgString.DistTypeDistTypeStringVBinNumN CharValueŇ CurrentBit(IsActiveLCase:TypeNameColumnsp9Count0vRowsUVarTypepvbArray]9 xlErrValue ErrorHandlerORight Space Trim@BytesInBytesOut- ByteCountQ>ArrayErrorCount.Code1Code2IntermediateValue{:RecreateArraysErroRaiseNumber- Description vbCrLf(SetupCodeValueArrays(Dst=DISTe\c3}kxMEH%ʐL8KIK߅   ( B0 6x  *  " * @H F  *  D( p (x B  D 8 *@ p x   F D @ H X p D " r h p   D " r     D " r@     F "@ ph   ,  D0 (x &     > H P p x   .   @ P 4X    L d( d d R` L * B8  $ > * 0 P X p "x  " $ . .@ *p *  * < P ` pdx  > ( H "P Jx 0v p  * 6   ( 8Hx]$#.###############E-#< This stuff is not needed since we went to XML format; but I0 retain it here for historical interest, if any.$''Public Function DstImport(XmlDist)x'''' Dim XmlStr As Variant#'' Dim xDoc As New DOMDocument309'' Dim xNode As IXMLDOMNode, xAtt As IXMLDOMAttribute@'' Dim DistStr As String, StatVal As Double, AttStr As String''$'' 'On Error GoTo DstImport_errorld'' XmlStr = XmlDistulat>'' If VarType(XmlStr) <> vbString Then GoTo DstImport_errorer -''"'' xDoc.validateOnParse = False;'' If Not xDoc.LoadXML(XmlStr) Then GoTo DstImport_error000000''>'' If xDoc.ChildNodes.Length <> 1 Then GoTo DstImport_error''$'' Set xNode = xDoc.ChildNodes(0)'''' '00 '' ' Name '' '00?'' DistStr = xNode.Attributes.getNamedItem("name").NodeValue00='' DistStr = Left(DistStr & Space(NameLength), NameLength)0'''' '00'' ' Average00'' ' ='' AttStr = xNode.Attributes.getNamedItem("avg").NodeValue 000'' StatVal = CDbl(AttStr) k'' DistStr = DistStr & AvgText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)'''' '01 '' ' Min@'' '00='' AttStr = xNode.Attributes.getNamedItem("min").NodeValue0001'' StatVal = CDbl(AttStr) ! 0k'' DistStr = DistStr & MinText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)000000'''' '0 '' ' Max ! 0'' '00='' AttStr = xNode.Attributes.getNamedItem("max").NodeValue000'' StatVal = CDbl(AttStr)000000k'' DistStr = DistStr & MaxText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)000000'''' ' '' ' Count0000'' '0?'' AttStr = xNode.Attributes.getNamedItem("count").NodeValue'' StatVal = CLng(AttStr)00000j'' DistStr = DistStr & CountText & Right(Space(CountLength) & Format(StatVal, "#######0"), CountLength)'''' ' 0%'' ' Type (binary, single, double)'' '00>'' AttStr = xNode.Attributes.getNamedItem("type").NodeValue|!'' AttStr = " " & AttStr & " " '' DistStr = DistStr & AttStr'''' ' '' ' Data+'' '7'' DistStr = DistStr & xNode.ChildNodes(0).NodeValue'''' DstImport = DistStr''''Exit Function''''DstImport_error:''' DstImport = CVErr(xlErrValue)''''End Function ' DstImport''9''Function DstExport(StrDist, Optional Origin As Variant)''.'' Dim StrStr As Variant, XmlDist As String.'''' StrStr = StrDist'' XmlDist = ""7'' XmlDist = XmlDist & Mid(StrStr, HeaderLength + 1)TI#'' XmlDist = XmlDist & ""set bi'' DstExport = XmlDist''''End Functionzero''''Public Sub LoadDocument()unctio''Dim xDoc As DOMDocument''Set xDoc = New DOMDocument''xDoc.validateOnParse = False'''If xDoc.LoadXML(Selection.Value) Then('' ' The document loaded successfully.#'' ' Now do something intersting.#'' DisplayNode xDoc.ChildNodes, 0''Else#'' ' The document failed to load.6'' ' See the previous listing for error information.''End If ''End Sub''V''Public Sub DisplayNode(ByRef Nodes As IXMLDOMNodeList,''' ByVal Indent As Integer)''7'' Dim xNode As IXMLDOMNode, xAtt As IXMLDOMAttribute'' Indent = Indent + 2'''' For Each xNode In NodesD'' 'Debug.Print xNode.Attributes.getNamedItem("name").NodeValue*'' If xNode.NodeType = NODE_TEXT Theng'' Debug.Print Space$(Indent) & xNode.ParentNode.nodeName &''' ":" & xNode.NodeValue'' End If''#'' If xNode.HasChildNodes Then/'' DisplayNode xNode.ChildNodes, Indent'' End If'' Next xNode ''End Sub'' |Attribute VB_Name = "ModuleXML" Option Explicit Pub, Const J_numeric_format#.# E-#' ' This stuff not needed since wnt tJo[ S; I>retain it here% Ptoal TrialNumberRowCountu NewAvgValue[ AverageDif1 NonZeroCountchAmtToAddResultAsColumn7TempNum6XmlStrxDoc DOMDocument30RgxNode IXMLDOMNode5xAttIXMLDOMAttributeQ|DistStrqQStatValAttStr{9 GDA_Error vbString`evalidateOnParseOLoadXMLD ChildNodes5LengthY NodeValue< Attributes getNamedItemUNextByte~ Code1Decode: Code2Decodes NumMinTrialu NumMaxTrialzZ CountMinTrial/ CountMaxTrial}MinInTrialValueMaxInTrialValue~RecreateArrays2Asc!u IsArrayFunc4Caller=HasArray (DstAverageXmlDistDstAverage_Error(DstNumberOfTrials !DstNumberOfTrials_ErrorO&(DstName DstName_Error7 (DstMinVal_DstMinVal_Error (DstMaxVal[DstMaxVal_Error(DstTypel DstType_Error (DstOrigin"DstOrigin_ErrorD(DstVar DataArrayGDVariance_Error3WorksheetFunction&Var(DstStDevV GDStDev_ErrorfStDev(DstCovarDist2\ DataString2K DataArray2?GDCovariance_ErrorCovary (DstCorrelyGDCorrel_ErrorGCorrel (DstPercentile  PercentileaxocZGDPercentile_Errorp IsNumeric$*EvaluateTNamesο(is_active_stringRefersTo ModuleDistXmlFunctionsO CheckDstArgm DistLengthgArgu(DstSum Dst_or_numberHFDst_or_number2 DistNameylWmzqVmArgsCjaKbLcxt_ OutputTypeZy vbVariantZA IsMissingIsErrorU(DstMaxXX_IsEmpty (DstMin DstMinError$ (DstSumProduct&Pr^(GetTrialFArray_or_ScalarTrialNum(DistMacroOptionsZMODRv WorkbooksBAddr MacroOptions^MacrocValueKIIfzCategory\(DeleteDistToolBar CommandBars Deletex ModuleHashFormulas a  *\G{000204EF-0000-0000-C000-000000000046}#4.0#9#C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL#Visual Basic For Applications*\G{00020813-0000-0000-C000-000000000046}#1.6#0#C:\Program Files\Microsoft Office\Office12\EXCEL.EXE#Microsoft Excel 12.0 Object Library*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\WINDOWS\system32\stdole2.tlb#OLE Automation(*\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.4#0#C:\Program Files\Common Files\Microsoft Shared\office12\mso.dll#Microsoft Office 11.0 Object Library*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#3.0#0#C:\WINDOWS\System32\msxml3.dll#Microsoft XML, v3.0   KIK } ThisWorkbook0u4bef0a8dThisWorkbook} Sheet10i4bef0a8d' Sheet1FMModule10t4bef0a8d(Module1ж0x Sheet20k4bef0a8dM Sheet2[`H-MakeDistGetDist0r4bef0a8dNMakeDistGetDist.`,ModuleDistXmlFunctions0s4bef0a8d,ModuleDistXmlFunctions`xm!$ModuleHashFormulas0v4bef0a8d$ModuleHashFormulas1 ModuleSHA2560w4bef0a8dModuleSHA256ModuleXL2Dist0p4bef0a8dtModuleXL2Dist!5 ModuleXML0q4bef0a8dModuleXMLk9x`0:O}J4oi/M5FYob&0ܩ[9@:} ZM+ Dd dBrLxƿG1zCPBQrjCKAA[:(H ؖ 9J1 [0 +;_>Bˢyak܄IJ3g!HTXW b BaseQf Excel+ VBAWin16~Win32MacVBA6# VBAProjectstdole`OfficeuMSXML2O ThisWorkbook| _EvaluateWorkbook_BeforeSave lSaveAsUICancel(WorkbookIsAuthentic]MsgBoxR Workbook_Open(ActivateWorksheetL Sheet1 Module1b (Four_Percent Application* Referencee SelectionZCopyƿRange  PasteSpecialKPaste xlPasteValues" OperationyxlNone SkipBlanksұ TransposeScreenUpdating!  (Six_Percent (Eight_Percent (Ten_PercentMJ Sheet2 MakeDistGetDistCBins BitsPerChar%MinStartfMaxStart=h (NameLengthyS (NumLength (CountLengthk (TypeLength(HMAC_SHA256Fkeydata; inner_key outer_keyh3(SHA256_Class_Initialize}(SHA256_Hex(GetWorkbookFormulas(fmlasnwksV Worksheetfc6]ActiveWorkbook WorksheetsProtectContentsCells SpecialCellsxlCellTypeFormulas#FormulaqYClearxlCellTypeCommentsqVCommentHs vbTextCompare Q ModuleSHA256qZ m_lOnBits' m_l2PowerBITS_TO_A_BYTEBYTES_TO_A_WORDBITS_TO_A_WORDOLShift%lValue܅ iShiftBitsRShift AddUnsignedclX)^lY&^lX4lY4/lX8lY83lResultMUCh\MajSjneRiSigma09`Sigma1:`Gamma0bGamma1bConvertToWordArraysMessagemlMessageLengthTlNumberOfWordsB lWordArray; lBytePositionh) lByteCount^" lWordCountlBytev MODULUS_BITS)CONGRUENT_BITS}AscBGhashQMdd[e\g^h_T1*_T2+_ ModuleXL2Dist (ExcelToDist8 CurrFormulatGB-M2".:"b1Xm lFuncAsG,aH3EXmU@5F6n tonW 2 u`c`i  .m! @ 4aHashFormula`$hHa hF`rOI!32?lb  01acbSHA256UM(SzA5|6UoRok f)XL2W(XgWNakA^o`|K/f5-!+;%GC6H%M2/9k `rU~}    SipSName DistTypeParamOrigin %Returns a DIST created from the array 16DIST TrialNumber %Returns array of elements of the DISTXmlDist %Returns DIST of averages of arguments $Re__SRP_0__SRP_1 jPROJECTwmPROJECTacivem<xl@ &h =  00000000 q r k      .Error:Demo is inactive.2Q!3)6{O>`3)6{O>`3)6{O>`3)6{O>` type3)6{O>` double binary avg min max count p 0.00000000E+000FHasArray( An unidentified error has occurred. Lookup table arrays have been recreated.  Try Dst again. 3   0  P m n o  p A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l w x y z 0 1 2 3 4 5 6 7 8 9 + / Y  Binary Single 1  /   Single   Double   Binary   Custom  RangeColumns CountRows <dist  name=" " avg=" min=" max="  count=" #######0  type="  origin=" > </dist> ZError in data passed to EncodeString routine. Trial   (  based.) @Click 'End' to abort processing. (Try DstCreate again. O   ( name `The model has been modified and cannot be saved. D|x5lturns number of trials in the DISTReturns name of the DIST !Returns minimum value in the DIST !Returns maximum value in the DIST>Returns data storage type of the DIST (single, double, binary)Arg  Returns origin data for the DISTReturns variance of a DIST 15 $Returns standard deviation of a DISTDist2Returns covariance of two DISTs  Returns correlation of two DISTS Percentile #Returns k-th percentile of the DistK*rU~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~w  : A}   a  Y  a   ) Q ) Aa  y 1 Q i  ) a Ya     A a a 0 )Ya y!1AYq9   VBAProject ThisWorkbookSheet1Module1Sheet2MakeDistGetDistModuleDistXmlFunctionsModuleHashFormulas ModuleSHA256 ModuleXL2Dist ModuleXMLF /C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLLVBA Y 0F4C:\Program Files\Microsoft Office\Office12\EXCEL.EXEExcel Qy@0FC:\WINDOWS\system32\stdole2.tlbstdole aPL-[DR?C:\Program Files\Common Files\Microsoft Shared\office12\mso.dllOffice Ai`Q!C:\WINDOWS\System32\msxml3.dllMSXML2 ap Avg= Min= Max=  Count=  single Unnamed--- DstCreateDst DstAverageDstNumberOfTrialsDstName DstMinVal DstMaxValDstType DstOriginDstVarDstStDevDstCovar DstCorrel DstPercentileSetupCodeValueArraysIsActive $ CheckDstArgDstSumDstMaxDstMin DstSumProductGetTrialDistMacroOptionsDeleteDistToolBar  Four_Percent Six_Percent Eight_Percent Ten_PercentFj D|x5lFچrF&#BDFWorkbookWorkbook_BeforeSave Workbook_Open @ is_active HMAC_SHA256GetWorkbookFormulasWorkbookIsAuthenticActivateWorksheet hThe model has been modified and cannot be activated.VBE6.DLL t u v S HFFyFFFfĤIx8<'DF XLSim: Dst:yh  x i  JWaltz, nymph, for quick jigs vex Bud. hash_codeF s x SHA256_Class_InitializeLShiftRShift AddUnsignedChMajSRSigma0Sigma1Gamma0Gamma1ConvertToWordArraySHA256$ Xt isut  DistLength Dst_or_numberDst_or_number2DistName  Returns DIST of sum of arguments $Returns DIST of maximum of arguments $Returns DIST of minimum of arguments  'Returns DIST of sumproduct of argumentsArray_or_ScalarTrialNum &Macro recorded 7/18/2009 by Sam Savage 14  SaveAsUICancelkeydatalValue iShiftBitslXlYxyznsMessage6ThisWorkbookThisWorkbookSheet1Sheet1Module1Module1Sheet2Sheet2MakeDistGetDistMakeDistGetDistModuleDistXmlFunctionsModuleDistXmlFunctionsModuleHashFormulasModuleHashFormulasModuleSHA256ModuleSHA256ModuleXL2DistModuleXL2DistModuleXMLModuleXMLID="{00000000-0000-0000-0000-000000000000}" Document=ThisWorkbook/&H00000000 Document=Sheet1/&H00000000 Module=Module1 Document=Sheet2/&H00000000 Module=MakeDistGetDist Module=ModuleDistXmlFunctions Module=ModuleHashFormulas Module=ModuleSHA256 Module=ModuleXL2Dist Module=ModuleXML HelpFile="" Name="VBAProject" HelpContextID="0" VersionCompatible32="393222000" CMG="AEAC029402ACCAB0CAB0CFB5CFB5" DPB="7A78D6E8BF05BF0540FBC0053BAFAF2E9308211B5A238E2D99DF4FE3D568DDF3EE97A52395" GC="4644EA3C7AC447C547C547" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisWorkbook=66, 66, 1130, 491, Sheet1=0, 0, 0, 0, C Module1=0, 0, 0, 0, C Sheet2=0, 0, 0, 0, C MakeDistGetDist=176, 176, 1240, 601, Z ModuleDistXmlFunctions=110, 110, 1174, 535, ModuleHashFormulas=88, 88, 1152, 513, Z ModuleSHA256=0, 0, 0, 0, C ModuleXL2Dist=0, 0, 0, 0, C ModuleXML=0, 0, 0, 0, C Oh+'0@SummaryInformation(!DocumentSummaryInformation88CompObjrHTl SamRonald J RothMicrosoft Excel@k@|ge՜.+,D՜.+,< PXp x AnalyCorp, Inc. ModelAssetsEightFouron_off_indicator PortfolioSixTen  Worksheets Named Ranges 8@ _PID_HLINKSApz7http://www.probilitech.com/ F&Microsoft Office Excel 2003 WorksheetBiff8Excel.Sheet.89q