From 297426bdb5be30d146d957a78e20c1e2315a600e Mon Sep 17 00:00:00 2001 From: CloneTrooper1019 Date: Mon, 17 Aug 2020 00:33:59 -0500 Subject: [PATCH] Optimizations and memory leak fixes --- BinaryFormat/BinaryFileChunk.cs | 8 +--- BinaryFormat/BinaryRobloxFile.cs | 31 ++++++++------- BinaryFormat/IO/BinaryFileReader.cs | 2 +- BinaryFormat/IO/BinaryFileWriter.cs | 13 +++---- DataTypes/BrickColor.cs | 2 +- DataTypes/CFrame.cs | 58 ++++++++++++++-------------- RobloxFileFormat.csproj | 21 ---------- RobloxFileFormat.dll | Bin 344576 -> 344576 bytes Tree/Attributes.cs | 11 ++++-- Tree/Instance.cs | 17 ++++---- Tree/Property.cs | 2 +- Utility/Formatting.cs | 20 ++++++++++ XmlFormat/IO/XmlFileWriter.cs | 15 ++++--- XmlFormat/Tokens/Axes.cs | 4 +- XmlFormat/Tokens/BrickColor.cs | 4 +- XmlFormat/Tokens/Color3uint8.cs | 12 +++--- XmlFormat/Tokens/Enum.cs | 11 +++--- XmlFormat/Tokens/Faces.cs | 9 +++-- XmlFormat/XmlRobloxFile.cs | 14 +++++-- packages.config | 5 --- 20 files changed, 134 insertions(+), 125 deletions(-) diff --git a/BinaryFormat/BinaryFileChunk.cs b/BinaryFormat/BinaryFileChunk.cs index 60d5a0a..3846604 100644 --- a/BinaryFormat/BinaryFileChunk.cs +++ b/BinaryFormat/BinaryFileChunk.cs @@ -26,12 +26,6 @@ namespace RobloxFiles.BinaryFormat public bool HasWriteBuffer { get; private set; } public byte[] WriteBuffer { get; private set; } - public BinaryRobloxFileReader GetDataReader(BinaryRobloxFile file) - { - MemoryStream buffer = new MemoryStream(Data); - return new BinaryRobloxFileReader(file, buffer); - } - public override string ToString() { string chunkType = ChunkType.Replace('\0', ' '); @@ -81,7 +75,7 @@ namespace RobloxFiles.BinaryFormat if (!compress || CompressedSize > Size) { CompressedSize = 0; - CompressedData = new byte[0]; + CompressedData = Array.Empty(); } ChunkType = writer.ChunkType; diff --git a/BinaryFormat/BinaryRobloxFile.cs b/BinaryFormat/BinaryRobloxFile.cs index 8029cc2..ad4ac47 100644 --- a/BinaryFormat/BinaryRobloxFile.cs +++ b/BinaryFormat/BinaryRobloxFile.cs @@ -28,9 +28,9 @@ namespace RobloxFiles public Instance[] Instances { get; internal set; } public INST[] Classes { get; internal set; } - internal META META = null; - internal SSTR SSTR = null; - internal SIGN SIGN = null; + internal META META; + internal SSTR SSTR; + internal SIGN SIGN; public bool HasMetadata => (META != null); public Dictionary Metadata => META?.Data; @@ -104,18 +104,22 @@ namespace RobloxFiles reading = false; break; case string unhandled: - Console.WriteLine("BinaryRobloxFile - Unhandled chunk-type: {0}!", unhandled); + Console.Error.WriteLine("BinaryRobloxFile - Unhandled chunk-type: {0}!", unhandled); break; default: break; } if (handler != null) { - chunk.Handler = handler; - - using (var dataReader = chunk.GetDataReader(this)) - handler.Load(dataReader); - + using (var readBuffer = new MemoryStream(chunk.Data)) + { + using (var dataReader = new BinaryRobloxFileReader(this, readBuffer)) + { + chunk.Handler = handler; + handler.Load(dataReader); + } + } + ChunksImpl.Add(chunk); } } @@ -133,16 +137,17 @@ namespace RobloxFiles // Generate the chunk data. ////////////////////////////////////////////////////////////////////////// - using (var writer = new BinaryRobloxFileWriter(this)) + using (var workBuffer = new MemoryStream()) + using (var writer = new BinaryRobloxFileWriter(this, workBuffer)) { // Clear the existing data. Referent = "-1"; ChunksImpl.Clear(); - + NumInstances = 0; NumClasses = 0; SSTR = null; - + // Recursively capture all instances and classes. writer.RecordInstances(Children); @@ -168,7 +173,7 @@ namespace RobloxFiles // Write the PRNT chunk. var parents = new PRNT(); writer.SaveChunk(parents); - + // Write the SSTR chunk. if (HasSharedStrings) writer.SaveChunk(SSTR, 0); diff --git a/BinaryFormat/IO/BinaryFileReader.cs b/BinaryFormat/IO/BinaryFileReader.cs index 5c0cbde..c19e304 100644 --- a/BinaryFormat/IO/BinaryFileReader.cs +++ b/BinaryFormat/IO/BinaryFileReader.cs @@ -10,7 +10,7 @@ namespace RobloxFiles.BinaryFormat public class BinaryRobloxFileReader : BinaryReader { public readonly BinaryRobloxFile File; - private byte[] lastStringBuffer = new byte[0] { }; + private byte[] lastStringBuffer = Array.Empty(); public BinaryRobloxFileReader(BinaryRobloxFile file, Stream stream) : base(stream) { diff --git a/BinaryFormat/IO/BinaryFileWriter.cs b/BinaryFormat/IO/BinaryFileWriter.cs index f397900..78e525d 100644 --- a/BinaryFormat/IO/BinaryFileWriter.cs +++ b/BinaryFormat/IO/BinaryFileWriter.cs @@ -28,7 +28,7 @@ namespace RobloxFiles.BinaryFormat // Instances in child->parent order internal List PostInstances { get; private set; } - public BinaryRobloxFileWriter(BinaryRobloxFile file, Stream workBuffer = null) : base(workBuffer ?? new MemoryStream()) + public BinaryRobloxFileWriter(BinaryRobloxFile file, Stream workBuffer) : base(workBuffer) { File = file; @@ -167,14 +167,13 @@ namespace RobloxFiles.BinaryFormat if (!instance.Archivable) continue; - int instId = (int)(File.NumInstances++); - instance.Referent = instId.ToString(); + int instId = (int)File.NumInstances++; + string className = instance.ClassName; + + instance.Referent = instId.ToInvariantString(); Instances.Add(instance); - string className = instance.ClassName; - INST inst; - - if (!ClassMap.TryGetValue(className, out inst)) + if (!ClassMap.TryGetValue(className, out INST inst)) { inst = new INST() { diff --git a/DataTypes/BrickColor.cs b/DataTypes/BrickColor.cs index d85af38..ec55098 100644 --- a/DataTypes/BrickColor.cs +++ b/DataTypes/BrickColor.cs @@ -53,7 +53,7 @@ namespace RobloxFiles.DataTypes BrickColor result = null; var query = BrickColors.ColorMap.Where((bc) => bc.Name == name); - if (query.Count() > 0) + if (query.Any()) result = query.First(); else result = FromName(DefaultName); diff --git a/DataTypes/CFrame.cs b/DataTypes/CFrame.cs index 0726bb3..6955c44 100644 --- a/DataTypes/CFrame.cs +++ b/DataTypes/CFrame.cs @@ -1,13 +1,15 @@ using System; +using System.Diagnostics.Contracts; using RobloxFiles.Enums; namespace RobloxFiles.DataTypes { public class CFrame { - private float m11 = 1, m12 = 0, m13 = 0, m14 = 0; - private float m21 = 0, m22 = 1, m23 = 0, m24 = 0; - private float m31 = 0, m32 = 0, m33 = 1, m34 = 0; + private float m11 = 1, m12, m13, m14; + private float m21, m22 = 1, m23, m24; + private float m31, m32, m33 = 1, m34; + private const float m41 = 0, m42 = 0, m43 = 0, m44 = 1; public float X => m14; @@ -16,21 +18,21 @@ namespace RobloxFiles.DataTypes public Vector3 Position { - get - { - return new Vector3(X, Y, Z); - } + get => new Vector3(X, Y, Z); + set { + Contract.Requires(value != null); + m14 = value.X; m24 = value.Y; m34 = value.Z; } } - public Vector3 RightVector => new Vector3( m11, m12, m13); public Vector3 UpVector => new Vector3( m21, m22, m23); public Vector3 LookVector => new Vector3(-m31, -m32, -m33); + public Vector3 RightVector => new Vector3(m11, m12, m13); public CFrame() { @@ -41,6 +43,8 @@ namespace RobloxFiles.DataTypes public CFrame(Vector3 pos) { + Contract.Requires(pos != null); + m14 = pos.X; m24 = pos.Y; m34 = pos.Z; @@ -113,9 +117,8 @@ namespace RobloxFiles.DataTypes public CFrame(params float[] comp) { - if (comp.Length < 12) - throw new Exception("There should be 12 floats provided to construct CFrame with an array of floats"); - + Contract.Requires(comp.Length >= 12, "There should be 12 floats provided to construct a CFrame with an array of floats"); + m14 = comp[0]; m24 = comp[1]; m34 = comp[2]; m11 = comp[3]; m12 = comp[4]; m13 = comp[5]; m21 = comp[6]; m22 = comp[7]; m23 = comp[8]; @@ -135,6 +138,7 @@ namespace RobloxFiles.DataTypes public CFrame(Vector3 pos, Vector3 vX, Vector3 vY, Vector3 vZ = null) { + Contract.Requires(pos != null && vX != null && vY != null); initFromMatrix(pos, vX, vY, vZ); } @@ -192,16 +196,22 @@ namespace RobloxFiles.DataTypes public static Vector3 operator *(CFrame a, Vector3 b) { + if (a == null) + throw new ArgumentNullException(nameof(a)); + else if (b == null) + throw new ArgumentNullException(nameof(b)); + float[] ac = a.GetComponents(); - float x = ac[0], y = ac[1], z = ac[2], - m11 = ac[3], m12 = ac[4], m13 = ac[5], + float m11 = ac[3], m12 = ac[4], m13 = ac[5], m21 = ac[6], m22 = ac[7], m23 = ac[8], m31 = ac[9], m32 = ac[10], m33 = ac[11]; - Vector3 right = new Vector3(m11, m21, m31); - Vector3 up = new Vector3(m12, m22, m32); - Vector3 back = new Vector3(m13, m23, m33); + + var up = new Vector3(m12, m22, m32); + var back = new Vector3(m13, m23, m33); + var right = new Vector3(m11, m21, m31); + return a.Position + b.X * right + b.Y * up + b.Z * back; } @@ -235,11 +245,6 @@ namespace RobloxFiles.DataTypes float n33 = a31 * b13 + a32 * b23 + a33 * b33 + a34 * m43; float n34 = a31 * b14 + a32 * b24 + a33 * b34 + a34 * m44; - float n41 = m41 * b11 + m42 * b21 + m43 * b31 + m44 * m41; - float n42 = m41 * b12 + m42 * b22 + m43 * b32 + m44 * m42; - float n43 = m41 * b13 + m42 * b23 + m43 * b33 + m44 * m43; - float n44 = m41 * b14 + m42 * b24 + m43 * b34 + m44 * m44; - return new CFrame(n14, n24, n34, n11, n12, n13, n21, n22, n23, n31, n32, n33); } @@ -263,9 +268,9 @@ namespace RobloxFiles.DataTypes { float[] ac = GetComponents(); - float a14 = ac[0], a24 = ac[1], a34 = ac[2], - a11 = ac[3], a12 = ac[4], a13 = ac[5], - a21 = ac[6], a22 = ac[7], a23 = ac[8], + float a14 = ac[0], a24 = ac[1], a34 = ac[2], + a11 = ac[3], a12 = ac[4], a13 = ac[5], + a21 = ac[6], a22 = ac[7], a23 = ac[8], a31 = ac[9], a32 = ac[10], a33 = ac[11]; float det = ( a11 * a22 * a33 * m44 + a11 * a23 * a34 * m42 + a11 * a24 * a32 * m43 @@ -295,11 +300,6 @@ namespace RobloxFiles.DataTypes float b33 = (a11 * a22 * m44 + a12 * a24 * m41 + a14 * a21 * m42 - a11 * a24 * m42 - a12 * a21 * m44 - a14 * a22 * m41) / det; float b34 = (a11 * a24 * a32 + a12 * a21 * a34 + a14 * a22 * a31 - a11 * a22 * a34 - a12 * a24 * a31 - a14 * a21 * a32) / det; - float b41 = (a21 * a33 * m42 + a22 * a31 * m43 + a23 * a32 * m41 - a21 * a32 * m43 - a22 * a33 * m41 - a23 * a31 * m42) / det; - float b42 = (a11 * a32 * m43 + a12 * a33 * m41 + a13 * a31 * m42 - a11 * a33 * m42 - a12 * a31 * m43 - a13 * a32 * m41) / det; - float b43 = (a11 * a23 * m42 + a12 * a21 * m43 + a13 * a22 * m41 - a11 * a22 * m43 - a12 * a23 * m41 - a13 * a21 * m42) / det; - float b44 = (a11 * a22 * a33 + a12 * a23 * a31 + a13 * a21 * a32 - a11 * a23 * a32 - a12 * a21 * a33 - a13 * a22 * a31) / det; - return new CFrame(b14, b24, b34, b11, b12, b13, b21, b22, b23, b31, b32, b33); } diff --git a/RobloxFileFormat.csproj b/RobloxFileFormat.csproj index b9a34c0..da3da51 100644 --- a/RobloxFileFormat.csproj +++ b/RobloxFileFormat.csproj @@ -1,10 +1,5 @@  - - - - - @@ -181,17 +176,6 @@ - - - - - - - - - - - copy /y $(TargetPath) $(ProjectDir)$(TargetFileName) @@ -202,11 +186,6 @@ - - - - - \ No newline at end of file diff --git a/RobloxFileFormat.dll b/RobloxFileFormat.dll index 15dfaa2a0ea0f353d628fb2c1ae2eb3dd463e6c9..354882ef9dcab8e668dc0830c78313e219dfea44 100644 GIT binary patch delta 105664 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 C>wxJ1 delta 105607 zcmbTf2bdH^`aj;&J=+r(c6N4WHcu0FX=Y{#OInhE1Qo=rupo+vD1tWjn8(>!J6 z2pbJnb;Td@jR@vcN%G42YFScc6Mz-D;a&jZ`fP?wBsFFs2n8CUJ)kHhDWYVWkQmuz zZuLrP$d~A2)Bq6HoALA;aXihbl(q$-bjUmm;YQgI#^F@5xw!pV@Mh%GgEK6OO=gM2wc{`FvRP)~?GJ_85TrWUgj{}<1dA0!c zDS&3DPC}}>LVQN*NW}XW;*(Ny5KkB4ovGb2Uy+OzshOEy5y&GnCG%GS>dbs20z)&q zlCTx2w#+0EXqK~7Q4y~(0Ob;^Ooh$S;0m<{A|9zokBN9A6~?tlAMwh@4aCPEsfhTE zcM;qkj`-6)L|Q@oQ7Nl@aC^ATycn!9ZNQxx7`LEz$BykazO?ES)M{E)MF=J!O<7Fs zM3Q<@rXl*tMnWvyZP&NyuDC9Q=fs-85*<516f@*T$?N#OMP}s2X3eu^@t9Z(K1Gt4zY*Bw; zebkFGsx`I((UuRy=T-*%YnFC=RV126L=|eJLjN~t$c79ZnHhuei2713)jl0%5kvv2 zDAN=L18O8-vjjE`Q2Vy+eX4!EF)td9D8E8h8@R$ls;}0_vlKEl6E)ojl9K{4A)BnD zjR`1vlOj}epr`;x57m4Ib!cwJBWAoonr#mjYfj0ulaN6rcC;}BA^IJP-$>A!6s*mo zB-P9?#9Mn{`(7ROm!b|QWsG1VSw|P98YArpwMAo;9ietuh@cBljnTl!)a9tg7zCrC z)WAr{=%ipc5;itMxO6oF*HhV6MuL%irN}2_j0I8qTifd*Ay{ijlv*T+aL}YWj9J+8XRI_@*O?#r+D6#eoq|t9CS^9Hg zl!;2^fks&WHwStu`p5v^+m93tCTYFb(o*CAP z%IS?q!5VU?f2bu%r%o?EGDlfkD{DPdtv^)`3NzIN<~r4??=#BtoV9nKfpG>;5{Y}p zPtQ%ZDbDM&m**&JTc3d<;WQf@=-cVzB-179qSmND&ajb3_ML$=cl5Q>>|ukq_njuv z%;q#8nOHTY3PT(h!{K%@SZk_QcwV-4R1HkMK!w#sspGkM^aGW8CgtWcKQ@jIIeRc- z`YqPok!T+ZVmQw(D1s0Tb-P8*irYG`=-2_V#K-QO2!L-N<0#>AdZT?FtjU`1? znLQrK@GK=MgCA9dzaWZ_%a9)#=D3t7xQS6iQgcU_=AeB}IY4(M(sx@^>jnoO zAPxG%)*rM^tkXo3>lGR9pdamg7(!y7#2C>)u(sf`u9}kb*uf2xb20_RAcAi7QLuDM zVH^Zkidd-rDGe!@mpTbrFe5^YWXP#a6rwZ)lJyrzICL06#L&|WueUo4>xlZH>1ovI z28d2WHAvb3IR_ke>+(o-)m_;-k0 zj52BKwT6D9Sd(@l*I~|FP$Lo3ucyI$9IA8^0?Tp)qeAQ;9QU`@=*Ifs>y%^{P;Ifg z8b^7)vMy*G==svRuW>*o<|Ib%~YR<@bP-eh27E2z?eb+4@W) za{XglAIxxe(uZKA&mM#m`n=H8;Mrn*)z6iTML`xbGQ-gPh4HO<_;(T zV}zO<%W#PvNMQ3287n7FJJ%*F>t4RJUT! z_@I`Fkoc08c08YHNkQ)KS_brCiz{^LRw7aB*=mhS3=H#lcq(Ow3CJAc&gLVz-$r&mtzQ9HE<ZdcVfmrCA=pfV` zmg7`~O+_eJp@(LcSTNFRNGx@*@<+lM)<s zVmw7LjQuAQ361?6K>qs@JDQN}M*);q6dNiSyCmzr!5vsKeKmNHN=;Z_V$~#1L#EL$dK8N1l#!M`*i z=oVn>*i`=-o|&&KqdUyHKGoSV5ex3zxr8w1c+ucFejdk9FT~HMcp{uQATb|C&?h~* zaz15dYrC8EW4I1F9i487pHAg?3Fm{^WGZ(l2j^Q?q&p(4@8!&TJ7!h-an|;9te$(u zE0}B zFW75nzbaD4(VdFR$`7q&AWsxOvnj71s@I%H#lpSAQ&VzZGU7ZMG{W2qd~E~dVIvYu z$wNoaF1har!DW#9-ljQV*f{h-7YrNNw3c|H$oZGH@%JJ%@JEtt88!oCvEivat5K@@ef=SeF*VnhuFIlJ&CPs(*L z`bq1M5zRoK#?SR5^b(>ClX4SnqIXA(08wycDO#G8n_*`$W29ajp-vo`5>u(!Hum~+CHjYRNH9;FIi{iT=8yKJnxG4P+aukXQ8J;ufY>K{t?Uml|_or zjGGCXHI1G^QcX4Q~TciUQ&I zwIZcGvV3lv@t^G9uL`w|t)-1j`ey=RyJW|Xe4Zbot!}dUI$ILlfNvr7i;#CQ5rN{csw7h}>^007b`eN0ARr zp6?P#?_ub7q`-E;qLFztidDtE1ty8b3{NZ;2<<*j_&p`G<&6n>9~21dxz3TE(bm5@ z2WU)ms^HFR7Rg?-JZFo?haMWPDVy9~N0S6SO#BJ1_w0Cla0CtQ*zZaU`BYG<`f zFCp{!oX95(G%0qsvvwE%rYKr#EaGrE}pT%MUc zrrkCei%am#j6tP~tj`dDNd*92suG3209eQXAzWX61q*JSGfSYp0u(zXjv_j`96OJE zi{SaE0t8DZ%49|%lV4FY032Na{6zrJ!P-nd5P-e~3hXvf60{hb;voj;tp#Oo6coRq ztG7um6A-Du1lzI1=pIH%^$(QxvNkB*fsyuc2fmvnLXiV#usv zne;X`q8PJ*#jAeIZt&b2&#s1}hkC{)6>d{x>CK905S2=15I9G@av_W`LtJ~!<5 zb$o&enZ7ULSU?Q6B9m(yC?Yb(3x9nuQaLXdt;v(?d@ZrnI_%IoWb#3;-CT;Qc*G8ir+pcro5~Vg#_tSGt=-BL@TAJf!AWeTsz8K&C=6oKwQ?_fnt|{ z^eh`bhv2>HR3I{QDG%h9QhU|uWdI%erE2u~AV{OXAvWe1Kl+IoaC{)w42Fyc#K8NR zV7f{`5?bO=V*vm*1@&7Mk_E}}4iS7v(y^x_YBQKbEYZOQ)3vr52Z93il+&R@YF>$M zvfc@lezy#B4EfSApN+d0(6H8pDDcKYJmf58k%V7} zDq&SDRTTy7Pt99sSQJoGP6*&-c)Bhx0w`S4Ml}w?v-1bmsZbFGVM*4pZvn|WF{(oT z9>K8BxCe>w=3YMx(RM{?pCH-#D8_w2eY^ol+JrJULwKb`8`M8*vdGb7`$_&9{cyz6 z#|F&N0ck~iHA>sl8uM>776TlG<3){r1QEK*t=u6H^Lf%F>RQC}n|jK5R3!}@GmZ7UUkT>h-!qP7{Wvw9}zKsg#JE$^57UU$=Vz2!c#Z4 z#zlc_Y^_U7Ts0g;y0Nw1w^2V5T#~d#Gf;(*J@LO4om-<$f^5a;?coqtd>T_E5~Q`= z+g6jRU;$d&)iz!R1XDu=_5@0vjv``tW=v^l1D{i69h_1+3^D~n9*jCrjS<$tGZOiu zfNtH&LmK6n2pUTn(w7D~h6HQ~_h1C6w*lNq5unZnq#bD!jW&ckEFx*J0o+v)z^2F- zRgBvtHBQbgHUM)dTNEcFY}W}$lTCu*MgW>^K*#|ks%%KO014X=4tMRe{FIOJPW!h#W0y3q&xEt;l|ZBCe}uT2b=VxLNuYGC5ku<)Wk zT?%yiet4h>C=zD1{AV5!qz-u>zzsBupuPeR<2XFJ$0F<2_IO)&Cj!0d3XqU9k9GAP z1M(&a&>%Tk24Rf<(-i+jm4UR+7ch79YP@U2V4raUqEWBUI1#_>G6-)oxRRiM z6CBXJorEY)6V#4}k_V;wDDnt7j>*M*WLo7>+P{w_`zx|Bhs1~68nxm&1fV9yF6z01 z#kQ;(CtC|=&d6hzRE3M+QfMfg(9oq32f$t~!gR_*9uYDVp#ohN`QX-kFKB*@r&1i9ED_T3f@)4jcaTcHE9(ouu{%q{JeS{T2=uBsJTu({>&aS^X7%5* z2VoclyOf=da46MW?a|LbD6IO8Kj7DI912dAYQVtj`5=&(R0i8Wfd7}LHwM*h|1Z@z z%esA5gGR*NXM==uJqLka^;|sdT+c?X@%3aKk4_ZB7O;JA<8AepO^?t(YA< zfaD3K>U>5Jywd?6OAt&2eJn%B*Zw8hZ6g}qg~$??5wQ#UViX}4G-hHb=u5an3D$G5 z^}+0>Jj#{bb5X9-l=PI6at)^%s%0+MIJwBCDg&!X?X))#+FlO~m-5FbWx2eRMIm=d zgL*_E|Bg_XIzn9*VX4*@rMi@)I{5#aRJH%Vq_TSVYOE9GS?d$^iWvhWpu)6<@7=HO z<%py!L%XgO>>QnrTpiGt z0g&on;I$5k%2V5kBHs91n!^V2YnD!m?%1(IHhEfpG}4D;a{+o(ox)*Xdo5$)LX?n< z&Wtkg15Q*nJS?N+2`3p!y$ zGWQd zyMsxqlG}rMT}r$jA~|5w!Q{o6%LLI(K{Shr)|L}t;3Or4UWky)`kA1iA(ceb&!Pxw zma>9h37!xK>r8?XXE{rZ_49}fuPpaQgjTk)v=7vvKRNRV#L4YRw3$aKIGclyQE)E~ zK2AYO=^R&h5>-`xT!B_2;dS? zFf?R7%yEjU#`E|wUcdwX{Y%l&yoliO6R}WWM{~}wU!}9CuZp0JeS}hz4ZI0fQ=RBC zm?Tvo2@=URLN+?c-2`$rbvcCn09fQS7CE)A*1mGD?J!2{r3G(t& zoH1zzvt5W;*z5wUNLU|;1d%`u6C+F3{><{D5D@%;a>1_!3tMo)lnLH1k{6O2UQ!!F z8yRM#(l`OTUB(;8uFc8k-R<$xBNyhA5J^mK(R+DD!r<}O&>)39h|1Dh>BLG8#$lRQ zUGKqmF=lQQK3E=do(PjYKLrN@sXui_)K-Ej8>aCl!XY2qqZ#dkLVODVoZfhwgRI86ONplAg$p^BkQV4vevGmb2PrA%=A zp~CnO0Ur#Hvjdlp5O2Rn%o^L#kqgg#Ot!60=fpivSpS?eB=i*3Q;1yr-?oO&t)KQW z(!_>W!&0B-8ua0K0Q1Xi2PRtCy%^;j?Gvet^wB>dNR=9?GCoBJ)ma4_t}_L08E=LD@T9D0aEs`4HK6Mqu=po~$A&jON z$^LykIwlGjh!lhNHxkia4~MPUU3&ftV0sP&edbGqTI1SJKmAQI$D^n+c*mw1e=i(lxJ2X0&ga(1}{D3B8)x&jpTY8&&{3hQYMIE_6)9 zwcD0fO6H+1@;YtUYyXhUlU(3>tz)-El4-fX4ce$=qh#Lh0yk>Qk3B{*A9jJ8wES*) zT{2&D!JD;J&!N2k=mHPauGsREWd7y?w`#N2&XUZ*RpsipX`>F^AemEL;6d8<%}-0_ zd;!KlXREJk-+ue8Wd6ZLK3JP|z-y9ug$tb2e)t4jZgqiE+MgfDO6IdJa9Uga<1eUA z7r0&fBLC)nlKB@Ge5khk%x#kCiIgieOk4fHO357V0uR?#{`gPHobCd5Xxsk`eGYel z7i$kZ_nl;fODJ^1vClKHd?e3W)t$1=%$ z&jntpO}^rD$^6L$K3bb{W*&JqSC{L#OuG{6UURGqyj+`l@KKU^mD5z$ao$Eg<)WOX zojmqp$!vFlbK1oZeIuD&E^xQ@%BD?{nJIvmh}zFa61>Q>iV}N5iIyq+NL0 z*^(J|Va_GY;>$mk%%LvKd4$QFcd2B~a$!~x=AdyJDy4Q}c}CcGk+k+1gCz45S0Wgn zr2X>w7RkJ*h_S9cv`hnRD@fXPYmnz#MIst2H0(1-+L32l=%`$nO9(S(?i|S+6e}0z zQo?jJ$0T#M3v(G^ZoB$x+{Cy` z1FXd)?VPjE#i-*-bRS`6-TarXmq*@DyS6$xBf?E(}%x zk~VN5D))OA1}g#_q1bqxWY*V}>xLDAq+NgH3}{g2(%?Bloxj@v$=u(S=mo-@x$7FV zwj#!gEGp9gb9PBvaNZe``FN3tHNc!%(mweDebP1;2D4R3o3`dI$^4HCgQ=dRoqXvE z$&A#OYk)bQq}_l2DHtW|T^eAvCTU+kdkvIxCBoEG(jGj0Iclefu|6x;08>v%n{n`I zlDWD_#2R20DrwiOxJ)wFxiFY`O4=2RFjCy_!e9z2X|LaWBZd|i1`|z5yL=Ib;%#mX zFw>OKeSaaD|8OP3j8oDsy%0TH--begSa%;@RtK1QN?QJ*zo7Rh60ruDed5U7H@{)_ zBcLZh)F3bqRe3Y!htk#7gM-c5ybeHD- zF3c#xOkM-smNmLGz>#)I+jBiMz}*C;Q)g`qVQ#w?_H|JaW9@rHnFeEtsJSPB(XdFw z8o&u$(w@2<$zO3{#uH}CxdF-i%!Qdin5=|}*l#Y(M8Yh)64u(c$)&+AggW!q^U(a8 z$~Blon7f~Q7^7?vWA$57rU9JHVbh1ea@{sfFW9y0P)O5NOwPK&5na+wf8r91PA<$e z!mNAzCUhPy%yhzR|Kt<2H@6165lX^})V$7>Xm`Tg@a5f-d2bP8{aCI6xdmw-UA{vy z-zXBXoU;hi)dkG=F3g^UktB=~?b{`U_zqkqC;ah_O7&$~5>Z5lMHUy`Ebn zVhz3{%#NP>B=cGq=6k}-nuXcV?Jmp@gxU28tahJuVSeO%b|9ZEZVmp%8DW$(zjP&n zhn}P@M5kf?R>W9ulxu*K4(JH(^h#!{R$gj9bDjs@f>nSE1J`uAdjXiKE)3iNCGFKE zkaK?*=3mV1PA(}|9l(cM(%$~AS~3^768(oT&{{H&EMlx{mzUMSZ$wm^8;3rkNW^u} zOPIxL@{)O#3$ueT*UVpqX}b#puSaD0F--bV7sf-FmtTekpJ*-(WKMJ=dj0>n5-EiF z`loBK$m&-pUhBAH$~34TqF1SQ4=fU~1}b6Jy$Z~6E(|=9CGCw?Yz&?6!uSdEq=Yn^ z$}l|#(Ow-nOypoK>Hyj!z0nFDJ8%Hejv;60c-7{m_4JIWc(FK2ig zVZXKBId)+FuT%&vG2=V>O$6e00Iov<5~{ZY;RZX&g5Wj_O5q{*(Qy=4a)(d~M5$tqL8-M;sol?|wou6(3ap$sfnUVJOW^@3 zo4H7+tEdWgpA7kI2TGqWb0^SABL5L2Ab*g^|3>8fh`c`@VR-TV1W4NF&)j9rS<#Yj z$L=~Dzp^CA2^8Viy1^7)K{03#!s8u(A!7U;>4T!CWoa^GroR#f>FSb*!tZI5CFu)j z;;iJ2e}G-GhAne4vnpp+Dw^UoekSVw%FS#1LU_k*DNE%i-khsUz&;iEasXW@Rm#xoN-)yJu!`a+K}W;ME{!L<(rXx{OBI}keetp)UP$qhB9vSS zdR+7?D1+lB1|0#aDE`{3uR0}ip^IK~#q(9J4B$#!Rz!3d0xhSG(pm?@sh!Y=1@e&4XUL|ohuM&PRFBaWN z&(;O{iMHruU3t>YAzsGv64C(h;-eD6A^aJln>bvbypu9C_i>&h1kw^d{FDoMcRwSL_?hXI>c zNu15Agdv+(NqX+QO6b|TO6Xx-u>TSOn^#Gk&8sACn^!?2Hm`zpv}$Z#B^lbCmn7LO zo~;Y!=O|PK2NWLB1fXY8(YzK?+bvVV2^mq}d5x`v;Bx;K7H@%qM|k*D&KVz>@Qd z{*N*{5%Li_hwp*lI|zIggZx^9u~4dSUiGcV$qxMq0DSSeA)kti4*#MUGZ9bs6~D%> zV4WB+G^FT{0c^~|LwF4cykh)Dd4oCmT+v3Fj!a~B-ZP(tfWn(ou1U)5%mGJERk+`) z#uDP)Zp!?|TpxfbT2O>51BuA6XdpghN}#T*eso75QPmY69Zl^PNK_B02_))5K^SEkwm zh8KaT*AJbqgcR`BeG=s4?+DK~D30CxAgIRTr~S?CT*6@^ zep+Xqb3b&;esR%9}~v4!U%FOO~DWa+3m}~UOLfL z;-`oFNU)rF4mtEt5%Mag4=~9_^e*&9Aw^4+zC?Qz@R?UZ8C18P>l|OmEv3Rm&lJoX z5j?RFc?~3)YJ_#PK61Byy$sO33@Limw+I*|Dm0%I-4dBHY7h;j=4Q44hm&_kE#kSO zLGI7e(|8#0`0C;47+PbA@mCo!;B9tq%N^hsCw^#}DIH>`{JrW{%B3DqqX7?}sL>6M zpQ07(PURbcI8~C3Cj6E-qtf{paUwOG+QqjOy`T$^6yj`ZIMw3Y ziWyZYKCIFq8*xfC>~C+R?kg(J@#xLSUI<~dSZ{R?@7xz@$suqkDxsEo7`V}Opei#g zu(w*GTUApy<)*M7tgLbmXpFNa3;XVEptXDZD82G3ekCdMqe=)$LSSDMG-Z(<{N8B*+jkCqQfceIQXl zPeB5cef?SxN{3Z*A(?j?sZK>Ngr897BhpgbeO&Y-4EsegYM9(PkEJ)ce&cE4MNN<0 z7F*lF?4<%TwueeT|Cnt9OUIq4H^5i0prxK}J=Ie;cMmWUA_UM($@xvV;MG!;J5}7p zfEFC!&Q$aX0pTAfOmf_K_#oqwVc~{|`*q=Zg-eF5VW%harHZp3qoep85Xw=URUuEb zqAK222hBQ!gmHxxgIwKwegkjExS$mYr6vudf<72YL_y;+9V#63ym|Y|Y81|?1&&J5 zX*1MGZ%)fg8?V=bE#n{NLMA>a#&QA4L$bY}T`dLY&T(fWg=&6O$R?m~CZAdEm*R+Swg%@qjSr_v#mT&)`9vYo0mj|U>) zLfaKHu(q^j3J#*yw`Y{s3@hQ(%(viIRx>ol6>DblAO|gK#@q;iuXvokwLR3f6{pU{ znJsQUCr~sji(;e!65McV7Uz~GDCw~Q<|D>4nyx79x{3j13-qKm@>n592j%Bkj9jco zIN$CGYkd(ZT+X*N{E9hE5YDsuhg4?$P^ROkYRy9JrTav181*Ay{p^|xW;}l0`aAx$ z)?OmN8k%R z3Q$(gJ^vp$I#r6-6J5~+@E%${JwI3hvwq~RcsVuP!uC^z4<~wi+`z44A)vB6 z$p*6@YCg$(bu>rEY8)m-`nmc;?hJ#N5Rw-%erV>R#JLjU7>sGN^Dv}`HDE4Ihjw+m z4Brn!l9+1mK71Uv?Qlv{V~O1jybljnstAlmAm|TpZrpCePKsgg`o;AVL7Y;h$|6H} z+xqj_ZBaV?DwYjAABKV-TK&!$z?W-<6!ShRGV-cce5jGR=ky;;1>LG^Ec+ zq!Y@mSXTSgNSL%PYNpF;9fK1?Wl? zQ9GERL!v*Nd)-3OcGQf)ZH6=xMejA>BM?ka$1Q1)pZjwd{k*}@|7ZZn=#N4~wCn^b zWg?(q%-yN_w)bf>O<=KZu+BQK{ooZO89SGU6k|LH(tc)zHI=B7*l^W+6$wIUJ#4xn zE5W_muBA%9ZILOT-&O;*Z1p{VY=oPT*GDsQQLLi#(}Y>lsZyAx_0+0l zC+63kC^x4GVCQ=U&xP*+8LG>ckLNOlsi=mjsHLyg>GFPzR_F-gbJx>`J?_d!q|S-> z5UF<}bXh(=LBM)N12}KhI3GF$Vi~;TQ#T^YCzO00Hz?nPuGa%8tXiD;f`wv707mS#M^+yoh&}OvRWUmn0JOErouN_wmQjM36 zMR2;3HUY>w{$<^8!C;iZ)(eK_;nh;8(&bK-LQ84(|EN-=31WkwuGfPTQA5<2sM4?+ z7Xg%wXlV+%c)TVp)=X%-gj1n*&9q5__qMt(Y;!8+mJ6GBwE7(r`sl*e+5eXb!BFbS zP^d}Z%_dn&y=^H^Dv4UhQhsH5ti3MUB`*v@6y-+Jy*o1jsU7r76mJ4)(;mRObKXmz}*ujj+i=?^xpPhk2JGE z+5Rk6^WNSVtkFInLX{v+yl#@Lad{Cm)Hshh-$MR@dJ^rVi`*vGog8Z&~s&k7Ye z>kG&z_|qD+xwQ>u3xf^$GI)ushLsk(HKSxJFPS)oi_&YFRO%ECdoedT4I1i)fQ=XP z4}1?tM4b5vO^dA4FF9~zNuIdp=6CbN=}_dEs4Hd~ymW${DKa{Xc+Wvvhd1UvMM;qP z*#!d1G3ZCd zqc~G*UuGB4Jl|WJs+kRT+11D@{Xv_#V#M#R#22?OgtVslcl~qS*q)JQ_W1b zE?n1SopX6#F(ZY7bhqd4C|H~qhoIU8#Dn<~kFBSAwsQMgBTQ`%X|NW_+kiMRzUkd3{1<7&8<^L`DW#vS+D}NjuD^p&d1K(ymI(F#8nLvu3Vu_EHPB?l`NTwQ7C!Ky0#keXS@lN71?wEq#1jm7=Id1Y0)0@VYads@_ zo*joL-Rm2~M;2^13%c+|+(5}B*dTV|L|l+x$@GN{=a>dz>#!?_Gf z*yOQhjPlc6IBJtc*AAVw$&;hI$CFTs0nbR+Lg1DoS-OVr*biCAWgkF!Y93l zKtJn;tKxa#=wfJSV1hysVJ4&Y7C{LdL0zemSqbTaUL4e3OJV|EipM>10*``X{OIn< zl%o@q6^`p?Q(D{(En@j|INCkMMN07^DaUNeU0swEFH&;Mrkv`cqW#LzE zh&RF^HrTTlWlJ7p-TNZct3E_|A8c*iP_I5r!9%R?H`E`EiJ){O7-Sv+jNHEV1944= z6Jpo@QKE#~Yf#^hCSrcN!!E_wtsH25yH{y#giX&m*G|FTI|XMpOi%726vF!H73xACtagyD#X+%|O_bt=c#uzZl#N zc+m!f-Frf8yx2n+-?@o(RLTr7h@vB8jzn`3$DA1~3&J6M5|&j@4k;D`!dE#(f-s%- zbZF?bsS`e_Z@w6zGoB8D&Y0Ta%!AObhiVTS@4UB>?BLQ=jKfIOnM!shm3Nlvj2G$D z4Ijkxa(15mdkFn5lJ&=^6!pjX`2?Om{^CROGV9@+23pr%S34T-8R(|j>>MP3qZ~iG z@Dy~%%Gvpd907+o@w0$_@ExlMucP((x7W?_Qn$g}mR;Wp&_&nJyj~2O~H*EVO)D~ ze8C*7p*I~D6BE#DNm%^#@wNxN6~^h-eK$QG7X7HVqK{X9#me10nmbm7uLH$k+k);j zS45)pXn7WCrYi>Dmpo3AQtHADfUPR}G? zb{QnlyV> z*pFs~heIyR;yAq64qNLUXv50msR!EBW1xn9to7{!hfJrNx|0E~*dk5(Auey0Cj9|B z5b^r$kQZBUOwR49_{e-|UGQK_)BsaCdjxXRDHv4si1pNiE%hska0+5r=~CxIhlusd zgZ-*#RMU^g1Fu)m-cPaghkk*S+QUr~C@&ocLfAwU9S1<@dcq266b$Vowoy`<LtImy}M5aD~e z<*exhi>nB0>7$9-uM0wxteC|l#bd2` zyZqaSImEu~@lbc?@;{|OfujH!Dk)m<3`gFl74vo~rMk3IBpBgF`<}_~WuHiVkNGqh z%GNoL_nW@RX>RxhbIKoUvlHm2B6lKXb%!Wlr{xjM2{Sbc+4}DBxM!QCKCurzz%b{D znX{>&yUA5gF-({O4hGn<3}QLj8kM^jGMWJ=F@U@Z6@vk^y()K;7b^hPcTen%$XhiM@;3) z7~z$JskofA(ocm((}2%=qI9@{<^r^wp+BdbTH9;e*qn+FOj(b4s-++G3pv^sE!j$d z_lufiaWKKMZhK14^Tf3W;E<0wjETaHkWz^$16faV8%%)uFqNKQ9 z%SXK7EsK3|+{&hk&m6hnR?BluNAA4irDMU4@2?|Eg9cy%br8Lv*+T;#!FT`Sw982@{GsXm($UfFvmi#ifemm z04Z)6F#~UoIJlb*qr}=o;K7^*)bnt0@0jPS^E543rpyyU@FHNjUJj#WKmo?f2q7!4 zAqof^Mym)nY-a}8fA4@A7|>>meKFd4w?{PES{I+Da4AVN=z9rYR8mZL7^N7^R_zO| zp3&C$7qkOL6aPcZ6nAI%d<6=acG5-3VM$IPTACBEv>qv4j_Ii$ImRSZ*w&pd)Ygd6 zn!jry=#-`rV#3xHHe6im|7J3)VEpfSoQoKmXvE8Xd zz^5s=g<@xev_69MNbXuPU`(^7zC15a>VXzl-&3Q;$0hL8_aGn&qGY4+5-{miFtuS1DaW z_A-Kbr3CZvp|zEpHP19_)8_Ob9&5;aXn-p<9~!Z^PY|QeKQ|{a`V4qwx3VPwZJjui z4{C`Nw$6KHkY}lN&nv_7@HOR<5n~X&>Yy>`C_veU&SrFBj3PXZK>`mOV*Kdt%LQW* zgVj)6KZeqh4RH)^r!-ovE2qpeph!w+-6maMPTEcJA|=Oc$}3!y6faV8j481>M#TXW zqLRSRTI-D$(vM@#s}o7l2fDHgHV= zNX29WFDL-1L}0AvTaUfof$tQ4|2lmyws{LZXKiWcFWQTaqk(<>oY0P9UQ*YOD-#mNM$y*3k`UD8KP$vAGwGt>w zfH#1gJKZ*Znf1>%KlZ$Az5CWU&&5{cZF=tcb{n1_ujc19c(U1q6-Hw{$Qxd`$-A%thb?g0>*5K3FE9^L>H)ekmNo93Y5C&){c`pO z;?{&YDQ2^oTd9<2Jnw|w9x9{kwZO*`8h_g*XdZ_F5cA{f0pw9t);AzY>1Qm&{FZoJ z03PIwD8?tHfvypUSA>2dxt^%(-kBrr=vJb@r8$<(N7>bs=2tka@W#7Q&#Bgz@3!Tma!hC?KAw=< zM4BkZBj6@9kL5@?=VtnLY4qVz5CZe-6WVV+3z9nm8ha!E5Y(hHiyNE4#3_s{gm(0| z!^C%yK@m}4vElgWL6!vIJ491q#HipnCiL}nEe-Q^(RiEA%BlgsaT;+5@V(LcCS-|E zVP1zH=dg|S?R#}i$I7;Tw}K%)=&~mjl#;szv81KFANSN)o$v472QQZ3b%R}@NJY%( zw${Ag&y%s4<@ewjZYu6NOnFb&YX>Kz1J zNx*qF5Ux(dD08OOvaKE;yzksLdLY>qT`^6ThgY~c5|As}$L5C_n=#G0c-!KE+Sz}H7 zu+ej#)%9U>9!o2fxm^#7P!Ee2qD7R~1j_e$D)bA$N?%wk^cM(tAptSO)29?L zp%rETj1VLwqiEMmU@h_Eqy|SA+J+LaJt;fpG)Jljsy2Zc(N>4pe)M%fYmLMCL0< zi_;As(obd`V8$OQ=ri^Lx$!Z=7#~C;sJ$P)*}?8_X>Dk<*d*q-~#CGd@nJ=s$u+y|wJ)`aC{& zt7fhQ&(@y%Avbl?;`kLR`YICkYCKf5tT&198boy1W=e-wM2dDDM?s_wfI4~`*COIK zwt<>zOcZ3R0Y4q6NuIR^77nW42j{lufu!9FpV0^qxrqJ>xf+Iq%xN7?H!SPiGxtOP z@-SFpZ005=bMMSuA2&bY(#q3uv>}OyD3P*RVXs#HP62)H?KN=0djb7H{32DJ=I{!= zUEn`EyO8-xQ354%Gv&-V;$)FbS%X_BQA|kvJDo%gOOV7C z4GXXy=moyXIGUQk4pSen+1H`UCNq8&T{X-ym;MI^LL0!-!lVGXI@SaHNc^ zT;bZryzgz0_uK~vpFq6Mdgqg4@*e;uN*8C9q>D(HEcN~9I(cB%$wm;y?paW$)`2jJ zA*fT6aA?T%(Xs2)9E^ML(5dm@4tYG&L*>l%WRRaA0>68B6jS=JtZxSZcbjhll0DT# z`i@Uym7VB(ut!KuDZrge)XV30aH%{%TqOKW%>QcfGr8Hi0&}Ubty1q5yiw#xORKSM#)^l~Yihh1J9fgZj z;KL=bAb-dGT)DDzC1k#g+bQ+p#y#L3QQ?eOo z|FSjri}^$Tj>wz*6{CM3lswOT3`HmF1m=(E$@}a#(=#@Gz~C9S^oi$^|=?QBGoMY7~DjE5`+x+)av=N zW)@j;7-1X#Incr#-@mciZ!EJu`7+ko z3l^CNPz;sugW5rn2N8*S5tAwqdx&BcnM#D|n-6O4&m^P%cdPwR7w0`h@h~WiNAT$U z0NpiSln1gz(~B;(3=1ojB7uPMC`fZJksu)LRr{1vVP^qUsM*Je?BxPk-*Pg8$nwR! zlydaGWn4BB7boXe3M{M2(=?Z*d6m;Ra=cc`;dLjHClR+4_(jV3y z0Y9YUzdk8XEi@4sVb}&Jn&5o^?gWTd?F@?S45}9H9hr;4gFPssQ4nn-nM08%`yFje zO-=+>E0~2vt)st*dhWBjzu9#H+b&uItj;O$56fa774(i3^`<6thionQwpqIyIp#ht z5XH-hj$@)cb=JA<1){ogBAhlTZH&HhY^)sXFUS59bC{Bb94NM^74Ty{*FtN}5sX*RXBnM5(unzsUG0%1JRe`3doMu!>Ifctn4YV2! zns1j6AI1}4ZI1^}A_&)OMcM)zzZ_bM*=I2G6c8A_sk6@;G;axaS|Gt{jHWJ?V$cn& z=c`3%rC~e`Fkcyhq5D7#gkHp>7!p~M(&$7Hx@*Ot zaj8`?XhvqxI2QH$B4aRI7|((UxZ?a_uze%G+fso;{}p1r1(|5NH1053hxMT^;n_2$ z)!z;C46vT~PRo}Jahc~p8)n5=ugcChNiT)7w|a+wMHgq;Xb=js;@-l*ZM5 zv^Ja%t{N$=;P2290lq_P4rD+*?kJ%z9`na=H?}sIEAlwvzEPhH*~NSZB|+MXA$`dI zV7S+RVYm}NHTxaxBR3c;Y8r%}hmKH*iv=FPbEsS}0TJZ_F+LLXV$|n3hyx&1#I(?X z{7l-@Y$ekU>!Qy-skthj7=lOqusT1GZ0-f%jTiAq`Xjz9q48?C90AuwT8`&_fS@4i zRfm+}?PRP6!bD~8&I8iDMCpEX(hV(3mv<#3GUFx4ob-491!2DM=4%9cRn1A*+Cvy2 zufzUtfH)%lgfNSU{nHZNTsct+<0b2fALIElLH{l|vC#i0;req)_!opZhvEM#2jaxK zxN;`0rSQB{YLo?+nkxZiCrYzeJ#A$bbVfj0V>exc{ zyYeNn@>={CAWo70yCnP{hv5h(Th7qMk5Z$^r~DM3PF3u}5)V=JP7c48S{nm;MeXqAlly$!J0D9VKC0lqm{gRFNyJ)g>9FhTP46|J~e(M|o}@KpY+9lCa|B zHu`_%MyZk8Rez6<{Txg#9Jq0K#mmW6OBBs)#sou@vD}=;vVl z@01`hNBIu^sqi@I;R*DDY7{00AQAf{P&QUKA`1!#R|l&}grwLc;4D3EDd{ zN3Bo)73(As%S9=bs{;45(4LGqQ*Xa2cpmdQ#TxSO`aJDIlz7U*52>J1DbErx?O+vX zpd;}nuVL~6WH_;m`Y2mE%FmZR*x7FM@kI~(mZt@(%z_`Dql>%zRla$E>#9OJ0K^-L zdQ;`5ri3;#J{K0%>v&;u;u`Y9j;ZhMy#j7wJhduT`Q{dWk*MG)T zO+P8e9G8(!+Kyx z+kiJqGN5-VMk#>YLX9`A9Xkf?Lc4n^ZP0(cZ zCwu8yPygME3Pilw!^_D5S-cbEh;m3EyOaRgwH}XWXuilzWoL61#_p6)M6Ck|lbR~vG&dFp?D_1!A)qudR@pz$ zPQpBBT5QwWj6OvM$gV>13>qL((j-+C1uOtG%T)Pzgz?tey%kTZEfCEaRdx~s{4B-O zW;3AKqAILOFrew4Dy-?PwObTV?E<=e;e`I^!_$2f<5<``@AU*zKC}bG;HE(bT~OpS zv$IWA@S@3~ZK?u5vpd^V37{H(Tsy_$B|lkc;<}v17GR<-p7nS(N+F$Tp1izi*97zQ;Tjfpc<}SG#KR~ zKv1MVMXK!xW1@%z!qu|k&r;B+Sv$h#nd-@|J;~=uwNeXJeE*NOH-WC{dLRDxIp^M+ zn?dGzCK3rrL_)+Akw^rQAVDHQVoHLL2q~pKNkdRWjiII*+p4K8RaH_{(VDANYbp7 zAi9Kl4DJD8m(d$sMjD4j*TFZdZQvtY=o5UQz`|0aWUErWxI6W^*f(%kMx6z3n%C&2GV%m03N#l$GwLD=99??xEPQk)_96HT4~-$vC9sIt#6LcR z@5%Vcqkd)tUW5#9 zA-)R6ra^}1Y}hs!JiWjlXd9Id#y`!Z%9?7p@HZRDO~nov zbsvO{j#?WY#{W`JhCTpAgoi~A-K~RXj3FF8vycj9!3$?~uJtZ-HimWvvb`X_&yKZ& zubZF+-t-K2g{KP9z(o&tBSRlT;CdI_E;!nO3cjq%TVoaaXyIgAsg2WPP`~X1W3G() z6OyBzEIeTgEAwBFKF71l;kGxNX@w?Zned{qXMlJy^R_Q|z3m6W5ZXoP{zhHm+uo3A z=U&eUcl-Vo-(%EsFri1pjG6I9({2$1y#9GoP zyOmfnPhs&?k;eI(YgCFJ$WWZPlOgXdsaP^VspzoVh z)(o{Vns)1oGQ8_7hfZuLOwmGUB-E09mWif+8ZgAK;A~*)p(-}4s&PVwfo-GwA$_I| zFtCF$7~xbI%CwOv7bT&Lrv_}Jbn6zFQ?DOZYj-ZnmzgSN?YBjFH4U>qq$2N8+AA7! zDl)K0g<4kGc-nwNqH;L{P&+gntF_sH5&n*E(ci#+F`(Q))xDD1Gtr(o4!@CL&;DtI zvVCWi=ewc&W8@7rp%d#3EjF;vp^NO<+2R`s237@?uxD@fL!()ln3I%`o!o?4Q=dAP zd1JNq8L%hjmSa^eQ6=1=FWuRY?8XW1>~dyf@MVx=U{m{GRTekJn08PJ11q!ZnFuHL ze_8cRbY?T`+m#zwPGTU)v(f0#pcv(;b|^bgh?&hXttO(p3~6t+)%mckfkm{hhRSub z!ThL9ls92$T2eoC61`Q|lzbzwqJJb~dIwfiW&1mvOL1pI8=XsmVzT$NGO!u_Q2jg) zO~c$V=e?eovy`T!LksMQX)#-}PfFRaQ@|{VLCezSD0`56LUJd`UrDbzJ> zRt37?#JpS;F^-gLlk;-3m^Zwd6&=$$Ao;S^M3t@ba`RXN)`sXPwJ?aar7&+%&>+^1 zbooFRgi4?R`7N;cA#gEO) zt%QnoBsv&^)D|B7N57>PAr$`ofOomU06Qh zSnA+j@XbqfTt*$-3vPH-0j=qdmFdL>k!}~z$M8a*!9*tn4Ix_W#4U#sb#I82$A(js zDS}3jZhd}U?oO7c!n-lBz}9UM2eLQG^iSySoopz44H3i5If!ooO_XwFEaBKT4( z>JB)gWifl3s6Mo5Clsd=1q{aGN3cqwm~5nx5Fh=n)JH01>N|uZQ#n>s@w-QGnnb!y zpt}RVKRTJH6?E_&s7eh{B6R5;_70muv<>|3fMzO@foK++Ml=xy?GD@yeV6DdjQt(< z0h`Wi>Q1IB;aT1)sM~0wHEbrC<^efMpTc9dSnpHd=qT-i$NrJJlI1RVHWBGgECxLQ z4+kREP=VjW!){1tX$TLqc|=F4^@rJfrdEOS9vygx*#c6o2a1vo!-G`lSSM&9(Mdsz zh}zJcIn3TC`bE%UqN#nc4-c~?L^gE99EO{x81qY<`Jh{dKSJclVrZ@(fxDDg88?^- z`}9YlbC807vZa%7Cl4K8wSmJ>I?YxRMSu=z710gQWdp4yvIbp|bcU@VI!nd>!qyUf z)DKHI%RU5B9oblL+^0XsJ|g7+qVw=Acr5Un0MuQBJ0?iBbX448pAa>tUc1HC6I~Fx z4Mg)`BJR`QVjHOuw}O%GvrVM)Y@e4qUwXhcBf)#iqw{hXNl)0PWcm}WWq-qk9u_z@ zJTG^J^bh--=osjbwh*l#%YWEbqC_fQk-jEs1BcqDk|OOSiWIbq=r+v+MXDoG9lfz` ziu4U(E9xknw43N89BTXYI%yBla~fZRw3nzcSsJ8oiN1sVV4vO~?IZFQmfum6BB6n( z+fP*Hl9ziD?KE7 zMf9fhh>BfD3o-^Bo88cntI11PofXKaOxeG zyomb14BDr^4)Y5esL~Om+RFh{oBFU^!l{THNaP!nm%CJUm+O=1G6y*DWDmIkk)I={ zAfogZXz3w0BtKV(vQ+kwgGrYPx=&?4IfO_LM;cNiq5&|Umdbvr97-rd5j*7oIgBWh ziVu(*6OBnn(*U^%Q6F*)ki&^=A?Q*$NRA-#qBaG|kwjT^hz7|`iGtwR+NTeaqlmiD z;?+=An-O-R)(6YcL=$L<2$f@q>L^U8+?-nYMj?g?m0OUm26s3k@Cd;i=Qf>g$Damphq8&7%$#Pqwl*U+KvfPfyk93{n1Pa44 zQP)ZCKs2=kPD7P0aw1tS0`gV5%1K1?fC7O!5=|h>u5z*jPguhKM-!^6oI=XMRJX2j zC!)oIQi+a+Vu4-d&P3nBaS*4Z$z6!-sA_3)SE4)QmnNrC)na;}Uz*&FbW>s5MoO1x z|C>XO8FB`hZl}#6L+(zr3u>CBWXL_paU)Q+GG5Lj-Bm&TNLLRQ>wM)+c_2|se>e=4 z3Gxsk2RIWNtW1=L62&ATy(Jd{!TuND39(WxBIOncny*Zji-~MuAIkeQmK_k5T(IcQl+v~9z_%ZG*wwGmlCxTR7UiOqO6ujBdN>?b<0-P$YV*_Isx0e zQLdl@%fNK0@|pYw={CbKtpFNF6abbhlyBtmL}~HZrQgVJ61_p4zZY(( zL?S;r+t??+MWj9>)1T!^!W*=FoRO=Dwh4NNXp*36qN({9^bG6)Sj2f~A)G_VlZg^& zK+nlFM2+a6JSR^f3WUuVEvFLYskAwslc!O8zl7azpZ+)bT~ba2x~g23rxPtF`dywu zG?nO@Jd@}v=)LlfTqG+&0T1>Pl1NJ|} zC4`^TDWjw;CE89!NXjyz^>C=|(@V;7qQB@`Nm4!_`VMA3>Q)e0!8Ol5y^XSxD3dzh zMp;F)DU|D06San6g6lsUWewrSLb;acPZ~oTaQ zLbRJ=+A8ab-l3Sb$_Ao-9?B-79%SmPd_gn>j^=%OUu7G0cPWf7 zTt+J2kS+_TQWvJ|CW8)<;qV)I}6aSTscMb+=ekGboBRW|*OVklo#C`f214il#4_U$a0=?iD*&+MwzGlrqYPU(kie@xlGD~Nw6F0S1DJB#?nk! zrCcRiE9iIfa~6Krh876RlNl@%=BB@FV3mDP3Sw z_0+FZ?hx%QM*2j#OF>)1!R4vntlT3S4%8gz53)=GiqmgV?i0O5^riBEs5{Yi4OS14FXc&2N$luy>dN^&~+qT2%ID8S)?vSetoYnPB)V1 zZMfB{XRUQ*L`#U;>c&u%Jfe8r8>CxH)Lu89Xbjwh1;-A$iG)*$l60zE1)Z25jx9{q zy+dI-Q)QBMvxwFZrRZi8wSXJ^de%udm#CB|RX3k#72NpOvo5+?YD5~uysA&rEu!)^ zI;*Jcu3IWsL3?NC%N2UoOSg*1y#lF^ZZ(CuLSeFX9|=eF%h9bPT}$Y4J)9yXMWR)Lt`OM>x=s|IjFzRkJ49cSu2grQ=!&4nM7F~6DbWO>dqFf5bt)@^ zmo?xab1eyjmcfhDkbKE>w9ba8s~~%#QG%R_{u1O)mc`b|K|lK`%>Cw@A=T3i^Sd9pR{3Ey#y-p9pHy6m=T~og9m_ zO;80{eytm%QY*F))(Pb`qJ4rE5q&S{1kq7JJE)?k1r_Q?#@ExV?pDoh^K;ShW$PW?1TkXt9zEfCbe73qCJk15IuK~ty? z*KktVC)E0ng|a7^ZW8o6O`6XHjrPZ&UkFO0_HGxHO!MM|pbtrRTF}x|^gAc$)=;F& zg48ion`;8wjzHxtL5@9;?g{eEM0zMFnhN|&&=G3Hb3r{w_e#(Zs*G&l^WsaIi1h@y zspS~dQQ%IR!R~?_X(o6H3Lx?m6hcMR7xXX@qXY|zB+D>Cow}edLeK>ov?wH4W#6x- zegb=Xj0syK#Tp7pIdeEtoM9x3Jnja!1Np}aG2pS=~{)Mu1rui_`&{HZg@sYMvh|){}4Ut zi>7ZF;65sJ)LUgp6Af@P9B2-;_icl%4opRRCmRBEuNyJh5JZ++2cut&A&e-?25G9H zDbd(OAeFsqXhA4jqjH9!HBkW3EJFv2BIX<5CRu&c$F%be1IRLt`eK1$h=t`+Lyd*y zQp3As*)s)8SZ0__G$Ot$oC~Nc4IdCT@7{HA82iMqo@iKR*TE%hgJGLRn5~ABx|J|$ z?|>sbq+~cvmcKdJz_z{3aE8dq9%-lH2GKdv?K0dZT0~T5xCa$=WZNN0h_-roj(Bm~doI$@HEfhzP#B36}Q_5qfLTooi;(f0^WD)lQECQ%yy<3ED#B zZk3>i8|v&Ke04z2ysVP+EdJQgvt*qqOn42 z+hR^gqxz6D&JEMEM~6Tkxsnj| z7UVP;i0lA1*>8UhoR)18zE((&OV$ zdj{*vO1q%^itI;H)sIkXGO4W#yP}p_CK`5tn#3FSq7!O)!!Fao{FVA2ZJO5~jnZ4A zTud$CRpc%EiE_4(86Ym>-jPU$ID(g-NPUq&1GeE9#RPoOSIv8Rb zYIaA}LOPhHr+rHr znl_mKK?%xH(Mv$PHF5>W?!nJha2`O#Tbjm`LoUfZv>MjXw3=0ny)r&(EjaTvfY0+| z{+~b&KWbi-qs@d2lzeHLJsQ)G>5vX~#Pl^vJ3t!d|4bKj4j;7{-700M^Df&A|k`v1BrwEl~_{6|%$QtJ!4V1GQL7Vpk#2vxi^Gz_Fl+8SzEDz#}~ z0e1VC&XJ&9Os$_!Hs6zdr!Fy&Zy1C_VD34b|1;?jdP#x8r~`RtJ{pClmR-7$M*aV( zWB;QuDU=i224jYIiG!+KNPB?ue_|w#-;QG3gqG5Y#!TAf_?+PL;6QKGe%-kVw2vPV zqp;(uQ&U_|k z(KIX})4pUHLdV69p&0r<3wzcQ2Z$HRR|0-|@`*ndoZBb?s<^u$ruhj7Unlsgpz;Hz z1)Z7fPsCG$C%I_KmyQ_}`fM8J^VPlyEkwMnS+qWmqk(HqGhkR~G8D%9fS)~dpl0v` za(o=NJArzFFWzA)?PffyGlk{~eiV$SL(y^{<63QzSh@9iU7+CfoD7gh!m~g=qc!nE zuN+9%8;Lf5kHF%u(ZsZ)?aI+Z#V*}Tr-dyjE0|>C7|ef%OnbM*^zf+u5NLeUK_G`k z;8DJc2F|lt5#)@c1=W#S)|mE@cW9jmq8v2~d(_wtKG)lQ#dxwEowS+aZz;N$3_svwc}BOfM&gUKHY00p{GGN;D?R-ekF*EccLQ9j^ox zUq)V^QqF*G=sSn(S5W?Z%vafu6mDdHY z_#XVWw}I8^Q2H2AmRqB2pu>eI&#ve67adL3@`9FwmkKMpO0G0PKl*PHn)ZeI#zag>>2% zsnWsrEsgHn3M^nfrDF$S$3{0w0Ebda8(L$9X3!bj_tBVM8;9-N9)}AHZy#@2U@G<& zzl@*U3S+M8jHkGKn93uQA*Sgvp3Z-MF2QhLMx*IrH&lOgzl!PPHpXB3yn0BWSztd^8Ovl1^6gqx5hU4w~!w=i7`e#A= ztf&F}>VV%fD8RFQ_A#9u1r9~8pKzd6wunxozNI<;Bi-9s)egsXSrW=$2B8dSh4M0` zf9i(m)DjGLlDsaFm*w)@fG$xYN%G5;yJX4F0TWwdgXhzBA}o${^UEjBdwB){*?rVqV6gO)*U?ez(k)E~VlDX(rL?LSGxc6A`y?^cj+YJ4xM6n(8<7RlEe(s9$QX$IWT~U^|MafUmsvBaF{FJK$?S4Jz zT<9V!(lGzONWrP(M0c~Ex}s?erRUTAs((m2HJT0K?9*}TMU#9=(=eFQTWP|U(GihH z_mRGChB5hGFvtO89xGh{5jH2Ie2aDjvHt%;UCj@bbUGG#(F*8E8}VCoq*mr*xRO?Q zC`OM$slD%oH!Q^}LN_VPX?~d2I2>uq`zDq*ELDETlHaTRF$~wWNSeLBMJj z$O<|Q|C+7^3gWOTy|^5-2DE&k<;8EHOBa5L&SNg=ybf#ZhB9yr%CU(kWowjg zQGR+3rq}18yxj|Bpe@P(uu*$g#u2<>hgow-Zi~S5q9l~rAt+f1%0fzeP`XtZ=4_=( zJn4(+EE|-QAcDk>d85?%%rPizNcZ{hE?(Z4jcGlturVl;I)GH6H3*vqqlE9Af*hNO zQnp6ZtD~_I~LowD6_!I z1-@H46y$}9;a0KiSZ=8moMJ>BHA?K+fFF$tTbg_h(&@u-9!#OD$K$YCNbFbD7sL5@ zBV>}inRg9L>wNDT@uQOjTX&WwU6e8Xp0zt0Elsw@^h-$hmnU1p84-lToERH-_6%|` zT?=V@VYvy?3n2|lTu+?Tzjg4ngBwq6aSLA7PYnd%SxA34H#QSwovfl0}KJE6@hl4qUJ@`RItc_o}-PONp#QD-hC z76WP65t4IVVf~*Po$m@?r6e_%uT4$!HdXfy9E!cIPzLzJJ%2Hu*F{c&oB`P=mvn=> z`XWCe;VsCSlmQ<dwc_kI)wq|g-Dbyu#i^0Je zq$y{G;|sUmm0nILb3mH%7nMj*SZW89qn%NH6^Zg$Pxy39L_6p@4sr%`L+Ox&vN1_@ zSu2F?AWf!ABY%aQhD}gD8VYx6MTkR*_aNt05y}o}D9?69=|^b=q{%Yar3k8is4JW+ z2;W6s`CvJ+4a&DjO7WQ9t(M}SLy0JNG)8%&J$%q4+`NllK(Aa#Kv`IZaz_`q9unFm zi6u}>Q3p8P5IKhfMng`p3(DQ4C~ve!S=IzjM$9&EK+d{ol(8*U{IjDmoTZr66Co$q z1?BEilsDSL*^60Q1v#PdC>OY*?CXXywk66PjZxMIt;v2`RxLECG{4r|q?;p`K+g7b zl)8*1s#$Tc{R+rhQjYRANOOp`A3)HABG`yUB|c2r3ptUaP=GjsK^gCYvRnHDxc<*2w>{3Vy@~<`Hf{)Ay=4%}2)yGf@_Xj5h00}t zH09iHzYYTVgEZwlE_(?!E!v}8=ZErMf0T8U&Mw6CPtGViv;(PDcK1j4yemq(Mkvox zh&HIM{5u5Y(J?4Li$!^k0^R6<=_8chLh=sSn<_D{UV;N0QzX3@rYm(QH&~&}wndpj zT6HGDHapD9r>q>3XUWvji20K##4fNg72xCYHS~>7Jj%z>C=VsVrM2j%Ly0$`a_w87 z9Ni3Mjz7w}B$TCYC|8%lhZBZemG=03b~VtAjO5P&aCR#KdA7=e&@YPNex}Gdo4E-r zQwmWY18K_dTh<>edw?|M^vD_nIfkJq*G0l@OA+CMTM_0Yq3qd8g}awRvCnQaWHFGY z9Q&}%P}4_4QJ&3&&xeGiQaT?jCl{mKkqq~RM1BfDok;D@e{JSwk{23G+WEn@6#je#Z&rs0@@>%2fPwrwrxi zStuRKQC=R2^7I&#tp=dnOzE4+m>yb!@>wLxu9Nby{U%v`KIXoQY+@eP+{ISn~j~9iJU7;i7Od*-r2h+7hD7!-1WV0?Z3TWh|r4U=O9h_QzEwD`hO^K3)IvbugyfDq{3a0vzKHD z$<-iDTJPcn&_4G-SsM*E=!Dnxf&P$llH_xcru^|O6QDw$_`}Cg!ZNbmdytdf0;F1L z>y40_gR;?3l*iknOb@G-C&f~HwuzWiK<>Rp^d!(aO zqT$ZC@LCrsLr%CqeDo@E)RaOi$T~*yY$kjRD- zl@NLwz=`#axdhHnGH!y5b9m&@qq09-e)Ook0hSoE|+z zaYtVajdE}Yl!Hn;`eNiOzLu6)6>fh6Y}9qm_-Akjl!Hodki)xv|LG9IqN%X(D4bkl zys#?6TA~~e*LWdp58U$)VfEl+35lKcx$h^j6+U=TTMbvrA@HiCJb#IO(gU?Vq>U!+ zO_eUNAN&3TLD8r_^G$aOs1KK(J^}F9p|4K>w&2@9cXmxW7zoce!cAt0EhjI2z3k-s z2jr*uV*X>FCxP&3FI=kjs5}Knjp+j3(hD!+4RBN9b_4i)s6@rPS5Io11i*j!P<`g($`d5;rj+k?kq*V^4w>zM=Ey)%3nC?iH zyGW*!JV3I&Q$H2dSvdtDvnlHY$<9vbcBB7LkZw8HrnwAr7L(kg!}Rwg_c-7+eKN^) z_L%-Sdl+cH9fZCqRwIM3|271r@#@@zmhC<#GIQXt*CO_9Z=hr12}Y>@odub~}*Evwb83J30s>q*!$X`4ipJ zolAFle{PFIj1$wqZs)$=5NC$JqQHvzSwn?&9o_G%hA~n{_P8P31BjnvaAH|u#$YEl zJ-4kL93CVexcMuYmB-=fuFT4nPG?y6KzvGej^~3uF0kD8;ba`TaQIQBojSNaDr?#D z!Gqx;+MR-2nv^mF^KZa)J&Py8TT+_{O6y<4j4aMf3z;oT6_niL3wSxzU_lkF55r5R zW)jsHm!$+tPHX{DwQ*fa7|?Q6DBI;lO3v&FO+AVa0 zyjn`G?4Zz_LhE$q#;yt7-kc23-D?0}s9>zxcs!>!;9o*% zo7Z1*XRnB=jUIVJfQ&(CSz~PPTq1ce7eUU>Wk4Z<`t(CxGeLp<-UR9>=xQ$NG6bE< zoeVTE2wr^zK|Sa8iDDjXJ}LLHr0|WP%nHE*_p_(5EoD!33E$2x#?Xu1A>w{s>@iU_ ztC6qEUhJub&YM|<5kIj~deBdpgY}Xp84DRZ|#0jcK@sx@$;Vng5AQG0$*6 zy~rfRk4+Qg8QB?Vt{^PWpDh-oVuAi_4Mz$Sz#a&6M`*{5j6^4pJzES{!Q04j#_%c zb;ey0NlGyLN6?9g&Ola?yoDZvl9UkUAgKPJ&On}=uxcu6q$$1;;}eQcp+;<-aCGlA zL}|pf32NADIM5G*{Cf{kLfOxPn)V(JbX(9g@C##41uX`@FlGlo*b04NOaMRl30N%$Yz<)p&HLZK>#c45ZjGZayat{z zQ=6I)nfkCuLp2)9)fyd$%eSWKf+F!L|r`HE1u;PC?l%>y${gPf$V2y+B6< z8CumTP1z|y4z2bAUE)NCVU%XhM6ovTu5f5SueS+JWI3WytP7c%be266#d7|OPHXu; zk}B$EIcKBT2p-hZW^ALN zrLbH@vmJsqz;YGMjtWwrm(?jT?6g3;(R+a|5%D6LvkG{FvFX5T&fX?6>1Jzm1LJt{ zA#qN+=4_Opm^crhw*}pV%Cun91^uN$ZCbDo1ddNHfp4IFB&a6+INYW9R1j9QB|JXH zi@=JuWCuA>AI6D_@~XwL1o&}2Q?=vRLrzAlS{!>NC?-zz0JMkK%VM`--C8jpL4QHj zTCt{ruxhPYOF>w*)|#rdVF^NqRcph#bE2xXWd}7>*oKz}l~HwV*%*P?QEgeZAgoL~ zHd_!@rX5=&2rCoMHVDGX#A_emUsy!T^LwG`%S1-{=bv9OPrRjqyTgI=qkhsh}sJ zTcl(rrJy74wG>UYQ&<4$ctulKPYw0e_zmR5_dk>A{~Xk^OaEQqFip_6H1yy6O#7{h zw;od1V2&1#P$lZ>$M5!xFBb^ZcJt8 z1qG;Z;h4&93(RgArF3SG1QoQ51$rUq2^83cK_u*aqaOByF3gdLcXwBoo=Q48@Vc_z zoQxm!*{$o!`U~3DXFpJ(pzr#qyLD-7l)#@rna0Ku@u1z<6rsBqc}CZby(j2qOC!L|xo5FQ3(*`?jtE{ibT*y+;7YeB!e?gct*VcA0y<$pu!wlwNe>b4%53&;OW zn2VYyFNt_x^k8<~EK6vip;T3a!!)#9LzYMLzbk6F%>M6m7W-chwv!4p)%!0^@xJMn zt@v;Bzp4zD&!GM*h%r}SV+g07F*3zR0v zdTgE2lVu^n{%7??#l91kBZKRdEOtcD+rfK* zP7Bh5t{1x?$PIM8*mWYc#yGuAozk2AA(RW+>;*D8DmHaWAG4#M&0e6V+>$Dj%{q0* z_VPKC&3Y5@0nKKrhPG&EKPSHbWwWaqrQCx$Q54ZcL-86Kt)V3v+N7ZioM>~(X4eF% zxI1ODKP*ghG##9ySrh(EmNOxTdG>r=?SES~%(T>*{Z!a~b6EKQtR!8kMz>x=<}hTb zr6U?kW7hvzd>^>~`S12>!(?k5EzbpV*m;dk>!&5H-|yr{b4G>Y@4iN$KQ%#(y)5h9 zT0=cFG(tn#nBS3(PtqKA*1}TFVJ^KbiwM`yWDTv+&~pvh!)ugGOWA+#QB7Z{tck`k zUPCDw>aU?P4b9_ZtZZ>wpTm|2TF~NGAd_wc==z#<6`^DXq7Betizxk=Wh4GOoyWINnYyhXd#E9Owx!N;LiN)eqW_&5@hHYD z-3@&|)>Ke`-94bVY`*^)2U^|G_h$)0Il}55P-lzc2e6Ss7u|G`VF0Tjsxr23x*SL~ z`L$SU$Y)c8uA;>{pxH$H&DwV;kqTId zprs=ZgDytU$ia0=0ZR~MY;sy(z`6;lf=@ULSe~GbWxs&md_mKa)&e~ys$!oxMS^(sZSVxELUsg6#SdSDs{l_6rCZafRz>WBaP)6F3+TGg zecv&i6|+Bt?sUg3QZaifbSHXrvl_-&f2?-3@nVmS(lBO6RK@Q0h=QM)aUFoVDr2{Z zbfCjTu>XyKQ5()i7}ibb7B?u7##8y-rPv>ov#<2>b8rHN`FYEDa zhM=}UZ?Z*#rrH-;PhdL*tslA6IDuW`WDFfX!D<4#FDPbs6;NRj^%HwPS80SCVQYwC419M#Wq!J zlAx#gOO5Za!-7WJFI54J!+Ds?`5)N4!?p^_wg14Tn&pq+y4&G(Hj~&QLH8;S+e~Kr zh^pBa6(?6{VN;4EEB(a;C;|rrFXHsy35Zk9ytSSsKe(=Blj(%UQJkg6%#%K6LROdcnW_ zdVJ_&HuIz~wQPR!4BI(uqM4T1&SksJwAywaJ0hsR%OTtO?6#TC*e+n!r5Ll8^>_K* zww8qw)xcvNTcm|7Ulo|;Vr938O*WH*-TRtPf){IAv6y{Amep*5;%@hE-IxDGx9?v% zzW>pQ_F{HIC?~_mEdLIARipchsK$uTzbt03@WDSmXp31M5r2$jF-sVOI{p~T5|&Vb z#3$lXY!a5w9hb5+QdYBu%KdsvS(czfdKdd;te>Ds#s>DwS+SsV)(z}GVB?5*&=t&g zIu=pO65>|buV8D3o8MOa#$JLq+Ud=Xx5)Y>zl>7Fp*|$X8a*f7v z4Lc?*@9P>mtYK#a#pz=l)@m$2WWQO&{E$6FQdt#reiw(2I1=@6_?YQtV)3=iZRiw- zb*z%8#`r;07im2^&WWYPHn3gKd}pC$4eJ#<+hK#Iz)h@(bk)pFx6SyP+8CBNY-STl zr}8#^iZS5d{(2Fx#hOX~am5!7uW3)kHx8dO*IKl!Wuu3mcld(!B$~slBYp!KK{StD z$a&U0+|Lj))A4JT^*)ixI`;dl_=T){M7&9dG?s_h-@-CnHQG2I zV)8PqTQ!?xU1xKc*${EZBO1pe=5;PszUp*@xpPZa)-%xgD2pPhWzqc-osY5n<-ENC z&WX+^*l|I}`o8IWlKHOSy7R&6a_3W;B7SBQSE90-{h@r~{4;x>=$bXoi!*EmCkf}p z8Fp9@&Wm3)QO+}~RTzc)oo9}m$nQLBD+v5lhl?7=%WR#6<7M`#h2v!wx0-@VSm0HS z-*t9?biCKDvpd|9s(qb37JgXm>&$n}>nQ3?O_)2ZJ6Dq99hNOj(eVyjWZ`&ED=17^pG+WUZc3c_kX()c}5Svw2IC#<7|;}bT{!ttrb@j2UV;rE;!B&ucWBD%Uf zXW<|67GkwuuxvqC{6Cr~@PiH;NXffRl0rXv-3m#H;zX^Gr0s$*j3QZX)CMX14t@0faJJ=_P=XXV112aL#gA2*EMY@b>&1AZ75|6!WM>T{KBMh7Jgwcz7&Q0 z!ld06eoe>^+Rw)#Qo3Z}7%5%1aEz25TR28(3XGB5HomTCjO5FS3XG9v3&M)F(D=nk zJ5UGbe{`tDN&74u9Fv_foU&|+59?6 z2ThcYg2d;49i^$X%~i8=O0jE4X$ujrTC%j06SXN>YWvyipq(^9yGV0M$B(8i(q?W+ z740Hz7k*f^E>hg*6h)=6Pt%0SkYNZ-+BC2JLY`=FKEo~JPV|&4^T#EYg zb$ctMJV98*I86}~q;aIT1b)O*JAgnchQ1rd~+fwLuECT6g zcU2lf#2qW8g+%DMMXHp(G}A_@N;+cpyX5|kbkR)L-K(YRX1eD-N&3S~Pu$hX(qDwU zh#Kh?5ig=f=&&;XxKEMnzcN)#?=e+!C*pq7q(~z4bMcra^(MmmMSdRBr3$Vy9vq#{ zW=L;yo$>hSEz%5Cnj(~EKsi%-PbhDIa;CIM=uWlhW;ILNOvDSEB^~0H)EBd)Uy0^1 z*Q^#E?@2d^@XUInG)Ee|gR0HC`ajXlm1YXs-=n+7JV{+3@NnyFkNMI^f6^jIQwH`6qa(kzsp1cA05#*pD82r12I}_Tmxq`ucCLG?|pu?6kDaW3Tj~ zpfvq9kA2bsL2ZoNJoZaB1kJPF=5bI8*oD=pF&=ZMgI_WW7nDiVO3;_~s7oQ@L->P~ z4g}@n><;w&LF!FPq(+{HqCSLJ8B@IDRAxw5mBfwcg86R`S^R%>B(8py+9|~GS z^tqsi?NC=IXp9@u4}!ibMLI2LZxYgFK}ju;?h%RWztfu4>$LPYDXUo*JD;(VTxkEN`ZSA{KJDX7IfpxWb`^KZ8wvT*9EEV zx7-q*e`(@%NgA`y?C5n}GJa>G6t73pZlWp{U6$tcSSs0X(xrJlmDUjPBmITc`~d3k zV6O6dDSayFR%(^kD=GXS*Ig`M^Zq z8a69BNioXdCy;8{(ST>+f^PRXep4J{HCB5K<@G^K~sS|hDI+hc`*_1U|)GZQ7v0! zuX_8*Hv~zJv%Lf5?WZtkEwgs~*gHtRf0`HJnenN2Lpk+lBwj*@+?NPviP1|9k%yUa z6a32B7&9I7ZY*y%({JA4GQ5ls{-L9vM})kAhzE_7{eLm(9(qU0ZHRcao5_Vl+%j68 zX13g`M62=#gmYMA*mLg~d7D`&`LvLKBI03M$~M1Z5j;$s>`R1|*{j6KMP`zGTFG0@ z)X=AmTy)k{H9wEG@>(JurJbz)XjU4%+R1+q@d6WM-*c}E>>yVXVS({J9c170rl83_ ziSi60?$=3nzVO;FRSqYrG5%bX<&!EGae^p5Ua9g|Dj|35BA??*_Gm;O@2+y-MJj@A z4leLXlRFUcdUumYavg+;V%_BNW-9mTCfAzjO`q=aHX>d^rhJtMH{&TjS+eeuibWvK z_vs@yxP*kq?@FJ(a+H}i`sB&+X8O{nznmuMR_aQhe7UcgHu?;di_G+;&tSPi(8cnV zK11b6X4>deB+tEs`wtX&vHVM)Ve$&0tVmhuGeX{Erj0%$<(+2w(x+5DOvJaN(K3U7 zrp?$yxEb&986$MK86WYfFw@|$^FD9N5x>#?$HPpJEwAV&$gMz$YyL@jkIw|TP|)Z4 zJw9*A3j_@}?(tFOeS*HV-s4jx`&>r98e=g$HCrvm2s%}W)Rl-2VYNI6i9i2&+oxKd z&P`!N|MZzGZzAHOHcdXtbw+$X@Ll;gL37}1SMSQo6)cbkeOLA&!b$4m^{(8Eh)0%m9d*95RNw8gkD!W_V&5Hdn3=}U%_PcLP0nl%txX>8RY9bk)pCuJb)A4--_buTy=G%hLsRHP-q5 zC~pw7+Pcp7C;12wAN$kt-$XSu_NQf=n^+(&tWnBo*^?8Dw$baf9A~B!uV3WpM0|Gr zDsLyMWt;ll^;OTx=LEXAKJh&#+ufp8u$A3j`JR`<&1C0yN$x^~^TNyTikxkxV87qx zp=N68cU>MM=vJzi-%a@)GX?wImS>x(soz~yUM}!rxtHG`@&+>n`#q3%n5n7XBl)19 ziWD!uKjqVA3ikU;zG|kXe$V8Gf`)c#<@a2+zl}|*HMZ`S==VZyDCn(1B(=4`U8L+T zXni|W77^hTD)4zBuMxDUppW-U+4c?w#nY=)zklRFK?Tu0{g~2LP@wC2CMy$(_`Hx6 z^fJvZAYA_yhSO_^pH3)odX@RXs~UxFa9EX}jdI>1jICn1SlcQ$NmtG0%R~HZ6_2~< zSS!=wNy5Fz9GDgtF@*n+zlqG^HQhxLcR`v=S+UcBMBjtwKa=%}wGVl=w}GJjHOA5&B~lZmhLlyt>K@0HCdzxlu{%6g60R&1 zx_o%7BwSg+b>r`*CgOb>JI;!pfz72RK`t778@f9D^kgcH@UUkXn9w^lj`T3&F? zzm3vc(6NFi{%w^Jg05xD0qvAEMEh9FnUL&vjoMCsLB``wM9x$+=R|& zWJ{@o;>UHWvGK?@fFXp{M#sJl0}_=;;n<*WBv2f8gf7kZPf}(R!3XKB#`z~J`-tYS z*?Cz3$;us}o1Iq@kgB*oqsp+JUhfBVR@M>CVX4I%0=g<&1*ww;SFtqZiZH!gusxug z@>I~ef`b9+isRor%#-Zx0U1iZps!j#4(P7TCaQ+dJ3|9|DvO?@Wi|6ik7Aih&I_a} zc0S(Qn5ir^Q%zu&a$L|4YW&Q=UP||u+;MsQ;=ta@3PJPY*9B%P@;^LGp8oT|T*Z-y zFD7}KRUl7+x6;7BYIa|`9GFL|2b>q_d%3y#_cPPe*bM*vN-$a07@wA^>)8M$f;$?m z$~t-sP~c6#@Q*)Il&{1KT|~qdDPMu#z#tty3sj(F2pv8PRG?%FUB8@{fdiF%p)1YN z*B_`93*Eh(^=yz*CUmcII;tLnlsAQPf3|)7!OA;Ac^bNVuri&9A6!F}`9#+wY|{|s z_$#c;H3{1^RMQuQN+rDM1a)Xxs2moAmPJY`{Q4hX*rJ$PtmF}L(_)3m+!0NOX@U+{ zwv&!O+csR;O;k)8n9gwSD+j!=FTI($g0M7c~)c5V%9IyGyr0T7O&X)9mK(_!r8&HV2&d3mg$0dKItjX?&-WgqyI~s~RH4KP@~jse^oEiqNMgZ3{YTL>`hWk06PXHr`3(VQ5joq9fO6 z!$T{I3IYZ+D3ncch+8e?X~w_`*HS6 z=J8x4FCUgo>Z^(LgT83@i%8z49*<-;qunc2k!0q*iqtA~SR~aO6|PptMpDJ-?;3SQ zB&EU2?P^OTH4dp}wKI}>AE~u!VY2D7KYad3{UlkT`!B+cBdNo7VI&%9S{>`B2(Shc2_UZ&cQ zXWpkyh@`ra+N2(gq(;E<-_#0xV;1UPDRv=wzq*l0%qz_6nx-2jd@Tl zkL0ylk7qupE{deSupQ6*sk$zbx(wx7)s9H&4Wu@!dFiIlW2kS7I-OIYl_FLg&)llE zMlx$r{WkSjB-Ls;p81d($S?~IMimdMlQYd!IfD2zwIz~rp^8V;Bau`td~R3sgQn$+ z@bakI5J_DNFOR7$W-27IQE-PE$Rbm7{XVYlh@@x}dg431e^SlvbOBIh^_5GUp6G%Tl zd|9G4z)^ZVB~F$QcaLmqP1Js*ki%e-X=dg`ig3Y`C1F?v!wZu&zx?v%@S0>T-!iM3 z9IOc+O4dfk&YDJvb^VB*u+6U(RJkWn!gO}2Jid_hf2%R|rv2aANW4Q(5sysf3a(*> zf9lub(@fRh@`e=C=q|WM z+%IqbM}7LoWh1$vzY~yus_@?_dueAbl`jo=kALi_J;D6G?Em%L5JvR>q~b`u6MJT0 zPeA_LJr0)ywD{1aalcf)w68JCFIM*VZ2pVQ>cgw*9~Zu})a8<*Z&*p!;z##gMs4}W z6Z#+L-WlEiM`{0z(a^tdzE;px<{c_V34eGD5czIv5+xZLn>(zTpWC2yYh+(;Rf zB~+l-6;$Be8q#c?PUPJ>LNm-n8QJ;F{m;~!vT46NhP+iTBX3c+Tq@Fvni22S9{jb{a_V=H4bZ&mQFjLF6oSRS07!XeH zs};nWQT>*;=WoN0XKL|_%|!0B?;nPAo+P%Zn&t? z%~0y}XQN0ifd?tR#aJLWJTR!m%U5f{HRW_$TzhvmnNzfx?H+wT1dHO7m|4G z{5x!V)=uxmB==rS)n8l-6w|-eTr6dd%_jOHj-FNU|94$bQ+CtWv;Ail*k7-UL%p>E zYfsF>-}Kh}xn@9n#^hp$*Ih;7DC|Syy?cSFr@5LCzAjtyhc3>&p1Af*flH%E#Y$#e zbQ+1`e?N%kE@keX|I<4VHTTjD$eicqLh7OY;yU}j7$ZDAn{3Zwy)+E8tQFDMOZ*=T z32z>eh|mXF{wFu(eAwQ2Uy1>IexQ4! z6mh)kUn-N0BECy{l9Cas$tB;92ykti~l%}$bkJt9lw2zshNP!!xe9Lxy2^R$%E{<>+%zHQKKsBRlnErx@2qD(wF zy@`3Zm?*xnJOa!k!)o)eA*e}Rm*q8 zgu#!)a>C#o<{;)sB_BRRt7IWNwJGGzhQfKmtq>EHEjORh(v_(r{-V{334M1*tb1+>{y0`ih+v;?vA_=Fgcg zS?WdJjH8yxksgNzc3I8|Pqk{TR$i!cSxZFToFuScTAFpc7&fgxgt;>{^{dX(% zVt-w^HAHQhY^}!#m4oY3E3EY>yujLozcSXKK%XntS?6(6=5e!1#7Bim)+X`ofN}V+ zGsUTv*%0B2%Ldq}Q~~(fvO?Rch@OUW6%X_(49WoLNz)KwRlRuT@+w=c7&~+sxX`x@ zAK;{4gIkC1cfSjy&ya3}BO2GomTb1Qu+v(M-`lorJbW$er$uDt{2m$_$`-C>2mg}X z4*2=nwnNY-O!sivJ^b5p?IJ`!E7y+f!O`u4J~_Ha&__+riK&YVqt6NVQq|hQKR4F_ zn|q@>1bt?-lYexs6PhRR2`u_-=pym$P0K);-|}x*vF6@lI5(LtSp;$MuM8>_%%DQS z%vESMoK#+|u8U2SZ{;_{b}NfhZi@{nG<|ZJ`3mh2^WY&~E@BV)T((=evSzokh!=LQ zGHUT-B3)8E2Fjy@Ho?zJauknp400jAZ9C5LagIR__dZ8HQhh|tk$oz6D>*Wh$d^;YUvcHg53j^W z__^&}+>|Q0W_g^uN_NijyH9g9XPM`@8cot*m59d{PIlYjn#T33B{#UeEH{V+BUieY zL8ciqyyj|AFF(2VUU!pxVZ?*(E{uUz8MEx|KTy)EXz1b7NmLx-oEdvD@Ws zgH9ORC4IGjx^lyaI8TXCM~3`-$?$Y5H_u$G?BeWtab3!vJUPm3gU)-Z6e>{2RTfJ6 zS;az0zp7X$`NKb4{cu>ec*|Ly%q-^yO=b>f4;Ad8Lel)GkUU|rI^sie5r?rt^41|~ z=c?suYPp&Q(*|v5WmwP5dGG?8q``XuYgr539JElgw`Br_6OA4Nz+B zn1qciw=hH7xbQYEyaO#-CHHWH8hF8cDxEdQ5*iS|_Y=;sBih@4n^-1(JLhhk51uI{ zT5a=_%EW*xNFFqe_;e|0epRyte7bZ?5;c9DwVmr~=eo+o!%JWp5}&})3^BubNGNJ{ zb~N4^OZP*%IcBCR>X7VQXeJCE6HmL?*i@TJf6DJbRGL#~C|2uM@H5LUaDBx-a76BN zsh!-jqs-&XE^fL_y=(gAX*N~XUIl(TYAzVEU$!vqw4}}9G}`rk!dVVDRk<(_ykveLSG_v~*A2Kyyr0m;VX=$SB_E~btF(a>vWr44T*y^YvyP~CR5>ht3|Bcu zr5TgYYb2kCEFY`jmh^Ju{y2Ry`X=@|?bM5px~u=@3z#F_DjJUcSv7#X;={8D74#dHL?Q5teykBX^*MOKntX zSJ=k-9mJ5>!-;mzZa@WeKfEp_HS-+KDl0QP(C<7sL+Ob5WhV9h=PL0l{MC&@x`T>*89k7|=dpfH+q`q+N$*g7U?lkwHTK(O^GjK{9XBBQ3XJNV@ zJdNpAY$;Jct@wrumqJ6~ZBk2f9KF^;9wW=tjG?|>8%U1d#JQWn>wE12cPsmuhnO!j zUsv&whTY0LoHz*{QM+0GlzEQn5Sn-or}`Xm2mbt7ARfezw(P>+=d5C{GRV%0Ufl8 zDrl@?K4=$Z7UFp3MCM}VGG-lUi1(R)V9k6h*;g|cgEmpetY_ZJ`X+0Lj8=1EEoc>o zSbmH74)bfK&!#5YMIva3bQ@Kc1xASi8#Q-0vk0_`66md>lv&1>vC(Aj2JK=vXca{) zPl=uuLShCdW^+ar%k|7#nKNRj*lcDMQ@2yV57~=S;WU;b2TD;IOJSc9Ta;=Qvtzdf zq^O3*D%LymF<2X&BFZZ6bLwD=Ga77lI-^2XvCZj4;t^*exWkzW?sR5?dz{(eK4(9$ z-8l$6=o|`mI19m-oF!nV^9t~Y^D6MDa{_qGIR!lKoC%(A&H=le^T1QiYVfpk3HXU~ zIe6B&BFc)d^mN{e#Chj!pm5y|YOZx)f{Oy>cTw8|E^2$wMQzV^QQLD}PB70!P0x2x z(}%gJ>4h$8da;X|KE_2&AM2u~m%FIx6I|5v$u4U2bQd)`RNF)LnhC6#%$n&2#i_!e zIL+hSg`B&Hb89%amUCAaAqrz78?9oaW;R;SnvJZvk2Nh^td)yxGpN)Kw%N%x`&e#g z`5@bOu>DJH-^unz3>vJX1`XD6wm)IyhY*A=E^vwqe8L%L+0l8Hg@*#Ac_c23bF*2W%lbUl=d-?$^~J0o!}_t%WB!-3y9plZ(_{~|v4Tx2*>oYx zi&(DVVk=nFz?w$ZG_z(MYc{fcAImMAyNxxEux1Bqc5;LEP`x3sk1KBHiVu1yI2|6E z$uD_mCU<&hCLd)N$JoVjcG1O}Q>^)f<+CiGXIXeTW?qh&mt*Fon7Q!#Nm3M``C30 zyKZIIkFb6R>vyt#59{}FmF-;RL9X&8w(MlfBW!uhi~S$7kyTxseTwDNoPCxxU$92_ z$WrrBV68q1tcx{X)+Dedz?vXya#_w}IiGV2SySwzxQ_8rT+4mD|4(3}$!t`?MwP6Y z$C^bxB@P>rFAA*n#ege(F0jGp0~>uw;3{7l*z5~}>wG!jdS8EVqi-;HpKlo0;wu7M zeV2pVd{=^x_{!rj|9AK%BC*pq72M;S1@7}zg6+Qf;6dNNfE~W2;7h(*u+vu$9`XGv zc+|HNJmzZ#kNfTbPx$TzyL@5rl&=Lm?b{4~;(Hi8>w66R!nYGV@7o)P`LD%MV6AZ! zSbH1?HjZYjH;!g(LLALle;m!&Kpf53U>r@@>^PdRxp6dM^Wtd24r4!s?5CLhjAczZ zYbLN}I%_IeQ^}gpLRKweRSm0Zx%w4ceFIm&ifx+NW*ysXWX*l7X<^Ma);z+R9jw{O ze)h1RcFsM>xi7KY$?}m9n;v7;aaMJ)e2V4MocjqoI?Il};0B%Nc!+q4hZaxqu*Oq7 z?C}&2S3JeT8&4B0A)Y3hKb{tFAf6U*FrF50c04WM-1rc!;JkQR!TIsDf``S^-LEj7 z?taDbboUz@PXkmQPXja|o(5=gJl|kgU&;D;tY66bMe#InwVbCSaXy$$GDmktnXs|Db|0&nzO9= zf;A#xng#P;OW>)81VYEMH-UPYkU+ikCs1z!2{a9Z2{a9}6DaJt2^99c1Pb^tE?dZD z$FMw><#P5jf&ENoKNXx?$+-(j4v9sasA1C;oZY~hM%Fa5W*uwRv*te5w6La?HIJ}n z2Wxh+W*=+XS<}JtODrcOQdj+n)V)Arbd*Dc3KPG;nYB1EIl(R(66vVf$Xvy2PE-@I zLvXR3Tx<`DVTVYh-nS>xR63ZrE=m_?ljx{9-9OFZ5Dk8RFNbLK_wChR3>NvKzwo$5 zKu&gz1~XmNU|-iwlpAvW2$zwrm%-7l*TAbd<673tV$OAa0{xAyq~86-a#!!(CE_rg zj%L@D%qrG2vfRY-N@go-HnV(?<&!Kc3VA42@RL&cq7s*U(a3CN9^~v3%#+G{_(MTA zQ%EXilcWi-oWpW4%VjKAvRut_Bg<=9Ze@8p%P%v#iFgB;%1%{w%5o0N#VnVxT*-1Z z%S{?tu4Qg#zRc`q=IE4L#;j&;XTHqrX68h(4Kq~Dm+j1#ncd7B3mY-JnKmnFa+uZ3 z?aVS8>8qI~$s|`XOHx^8Dj6iJ{dwS+bD1kceA&u8%>00<4q#K}T;@vVR_0-*nnyNs znJbxFnID+?ft0(Id6@YDQys*fnQB3Z67xoljL8>=i%I^V_|52iky*k<%#$V5_76%( z|H0*?7o&**W-+spd6=0whH?)xSC*38%G}C4$UMwEQF=Ip><>60t{_vD8DJJOE18YV zmCRP=LFQqmGM1W{&a50ueu~S8mCQzFEAt@p1T!%1FwOsBT=K=CtH{MklQUVKMQmL{ zxd)jim|`huN@^&#in*Ct(n$I$ldDK>Vs2(0VxDAHt>Ii^NNncBNv7CH83AT7vy$1! zY-Jw2muyZjMVRfG#mq`(BeRuxka>bx{BLA0?&ng>P%&RBnT^a==0WBOrfA^;%wlFG z^WX!dKfx3avJJDCS;=fyRl4UKl z{>0kHR${BLEwVjri;A8ZT@$?`x-I$_(OuEE#%zrFG-j54RO}?jPRDfT>&{coubo-0 z7T4FVJKgQ>zDBt*-B@MpG}?><#v8_m##cs^C)U%~GsrW_GuboKbED@b&q`0&^O$Fk z=aA>9r^|E7qlUZ|ui*`NgWg>4Fz=P#b>1hvA9}y?I(z}&U|*@P+&9}->udDg<=g3N z_r2l!*w+#FMqFY1&GG#cZcf;q;7rU)tVp~m@s7kN63--RNjXU)lWt6^Pijuul=O?F zcapl3Jjwp#+~lj1XC^l#_xI0C38y@l@?lDH>Sd`5Q_rVfACq=nT3y=fX@5-nGA%!_ zF%XxYlRi6rLHbYAcc;IdJ}Kj#3_a7E*(b9gb42D9nNu^DXVz!7WS+|WW9FYSMbH^c z50(Y52~G(v3N8!&AlMlEY4FkD;oxh*bHTW*1z8Vdy_wZ^=QY|mCG^AUH}RhKqgUL6 zk(f}i2~=kiYZD&;`(L*i>@)K*@Y;%}z|qEjaFTHVoHd)|>t_D~JT;5tk7vCOZm%m+ zh3FnaJkg8j??2&!=6Tk1j^o@ACuUzs2{U6S7k;ZB708-P%${-+ICv`YL6)boe2C=@ zEUWWgL~i{sV$yJ8%P?xtIJVizHtTO9{pew-c$eH)tohN^Au{^DjQ_X3*EDL-Qm(*c z?;@%o$ow*U4XXK=b9+tO3pva^t{+BSwQ=>&OnWtijAPSY1^>|hLom~sfL9}5&CLV5 zz2xrWT4HJ)(d^%CStKViH;p7YJ(_4%(^2pnlznIjv7>+n@u4Ba>$T6Isj(184@kj# z1RolbX~B*D_I}jTUcCE}06UO`@m_WKHU<-Z4U~xREUV zairgoK|EbC2>K-zBfyV_k%xCH*w2mR-<&sF^X_#D(OinMA@lNo#t^sSKT*A9IraGT zO~iK!sAq3FDfrWvg4ycg0df;(FwL<~m`-CK!#qEYXW2hh@GW$8WRZH{j3jPcN@GfDr|^eLb@doHy! z=gk1=B)s?ub_Ks~9s@ZJujosW zfFcUs1>}UBgd&Pa2Bq+$1m08xTPafUo8wZX!Agn%@})>ejuc~{Q}DBAX^^jgP7zmv z5`P2Cggg$Eq8vY)jL*)E$3@~Nta>Bk8c^cxL^+Trfl^#6`a+%zN-RKPJAxvXfHEYOijhdv zfKn_IMUZa-CBEPOGRU={6m|F;jUsLarMN|mhP(olVh?(#h`pc`Posy5Xal9#hkhzz zKPbhE;ws25fl~ZCI;)6RKq)%WS$uZxRa~U_CHkz0*FY(bqR)zW3zXtlVhZH9L5Xk9 zod)?G5N|_9&lUXnWd`Kmp#O?E0ZMTa{a3_qK`A~Eb0BwtQhbOvWGUizpv3z==0g5G zD8Vs1)%>P>M4Ml_EX?rNEmAAb$x;@eP89x0!=dL@P@n$AA*=idqIa z36vrkKL(%(KZrLJ;_LnuF$%=6;#>MLtRRL}sfRpS3DqMpMfo8TQ$Z=FDYrtN4oZP< zk%T-G#JJ*ZWEfXaiaE+k$d#ZJ*DI?b&jqDeq}&d9F(~mqp|y~ggHqh8{221Tf>J!8 z+yVJXP>P+(T~xs?d}+HBPbnK9?*=iJ%1ObC6XXM+ z6t5`vL+%9eHhSd&$nRECO1RYL41rsZiQ?CLsEF;Lr8c*DSYy0kmEos zKe-)pB8cTDAA_6>O3_a~4!J*wcZA9(A?JY-?_b#kc@QYYV7VJ|J}7a%+Y5OJD8(?@ z1`e0|p&0>U{*RQ;LUpA)0FITB%uY*s?H^Ke#Eim*O`8F;e;N5sqd?eokPs{hg zPvmdFv+^YPh5P_KFFypO`VknVc7xIC$Dl*~18Ascz&Q0&FiHJ0n5upTW~iToz0`AH zAN4D+zxp*eNc|QZ9#R!W;+qUqaI~s}SE?59D%A!~RAay?YAjfxI>9>Ctzahru@k5s z$SXi8>Qx`us>XwxReU>}*rFzb?P>~mKurUmQ`5oc)l8H+2;z@*YA6erpR2vW!)gu~ zrS%1Kw0>Y8Z2&kx8wloUgTawn0a&OF1uxfzgQK;P;8d*$T%cVB-k_C$4cch%R;?8L zSM5qLq?Lgiw5!0MYU9CH?V1qUvRS(Zi7nbh$Xh`vwrSTweh9=`(566c1F;sgX^{7W zSPR+=$j^f4r8W!l0T8{^Wpg+v{h+8PTQ4sDD7mLBM=`L9jFN$ z3uLBWp1v|Yoc_yne?~APH)B}FWf_-e9LRVf5UD;yI#N+44`?+?D?H73b67mr|E>nz{ zr?l}gijSF8n>=4Qytkp{w`nv+E70@a=*fa$qb9>ctF$!z0VP^I5S~?~ z^-X_3i4zYf@pvSNU{oTmNq8jVk%C96c%bcPRodBNt$bd3%+uNsTidnIYoEuoHNB$U8r>#;r6sFv{&%$6+`)|xOvb5hK8|bi zar9gcc_|KRi^M#nu4mmqF$nSk=$7K-Q!AE-2Y#seuB$~dfaA|n908X@eG`h!#WjF4 z-4#ex;dDbTZ^7vYZ##xm1xw;hoLdihDcpX?HQvIK3yqi&{xnKYYTK{tu4vb;KZ?Qa zN7}}>%pS3E!o#cAhL1b->ESC}`rP;&&7!2}IPe?&^nl_>(W8WP7&+mCE`6|45I*bD zFN+?o7|rXnfG~=}MQ*)!s8l)}(E;Hz%B0O`w%bS?uDF{!EIy-vY<(7+G2UoipQ1~o zjOG>x?AF6SRRuao^w9GF#o;foIE?0vM)M;nMsuqb5B&2PsKaR9;d58>m1JYF55Ld? ze<3_lbZd_dw`9Kb2#*5Ye6}YYikiBJ4|D*3n+_-*su}egbx}T}UaGntkcvMc(IutN zXlzna74w2l)yq_os%X(Ligls!sn9hx4aUq-qZMia%+VMt1z;K6qW|1NHCtHlz`FrO zv@IK%!^5qHo}9sfqjV&2oJE0CqYRgYn$z}cL*K3T$ku^%F4*aJH3bKU?BghVipF0e%==OL$n|z~f{zwd0 z?~JzSMxE8_FjnuRajvrd^}F?TDTkJX~xzi9&~e=#<1>&MjKqK@ly&I8Y2{C+ewJQyUP&)g96bX>}*! zZblUvnshwLQW29^qw*AiDVSi<$Tv#(+>Ni(75`H3pw$8=ttvfB#jxo2)SEmR|mEZJJr}2 z`iw8okyfGu#js1$N?0S}P=x2^ zccb8D^`#x@nZ)hV6EJ7&CAl3oPK0Qd&?c-n(4^Jv7c5Xa!q$#2?Xl7lpu0@~djy(& zhr1~qv7mcOfT}2yR`>10u&)_w?1-J2bXyns|0sc8JMv1+k*U(-lWe8-Z`84UEJX*pYEJJ5oI&fkJ(MTA$b%k%}ScTpBk&r`z%qY(^ykM zHQH!f<9QxF8PHQh{V2e>mxPnuVF(-?K1%g$A8Ue63RpgG0c(QBnqk~ohp{F|_m!rB zSm?M_U`}CL7fB5_r=Emg$KovlF}Z>$MJsVl5SG{AmcAy4D5f}4R31~@U!$>7@G(=& z^@5At#+H6SMWW}rr^0vRG7~4J%6xWT$ zAw$Q$YKASfnd3t#&bd5Xc8~jBIdO7U|yJ8E^Q{}UbOl=8i-az zS#b2T(;38Q7B&n@v%vN=5q$(5YF1Q=Bi3R~iNb$4b~MFGO(;>g-Rnm4WSR>6FFYVq zkGI8ItrWthiQ#K9^}(sJMsuzev24yo3)p`yjxQ;8tHX{`;nqyun~U-jX(XF9R3a%4 zS$4afN4FNYXQMgqLWvWZdYN}G77d>z_Byb@%+pl3D5zf-qCE+btj&yEXrYkSm4 z(||hK6pPB&w3-J^ZjxcK;MCl}|0bAmq#dJq0@Z+ET$iQCC&xcemz-pt} zMgN)>`{}+zQZ?poa{>kN!ZwcG6dOA9P4(fzY<=_qo`O(W@$LQyU8zjHxTq+2w3kF- zdBTEB!@IKegfgs8q$wL$iM<*Z^Rz(TxfcNpvzG=tVCNm78H#|Na?SPK96(=|wR!kp z+|-ueM=w{DvT##heUlemnap!B(iP0g>Tv&Dy_<4s=wDAKAytR__S1htIXo6UISrKa zMn8Q;xrL&!-mu$*mVz^(6?Zzi=QgjmAjow_PP8?k;u(q2Pg(^I!en8=?Hf;wq@rN@ z8+FlEV|)~;>cV&S*As`-IW0CTEK`Lw8s^bf4cmn^8k^2qIIuz;kRCqDxG_`7jIzS- z_tyufvjvVm3huZ#(U~Q1N>Z>UI2|51K#v#7KvJV_E$VXGY4{Y2S4lMW2m{; zv4}cK!?zC5$AxHHukC^1~2ndz{w zS3HeC4;{8kZ*a}6j*GW3B=|mZM`VBB&~sX+$}mIe!V4_?N}fI(K|o_@{@?eVyBEBe zM+q{&Y$@ADd;F{iDa2NycQGD;YjT8SgeLU zGCt<;SglDGx=&!hikK*Uk2xqE80DVS7)!j-ywe;@4AJ|Tisl6?6*o{?%_AxNwQW22f<9r{d;|0yJIrkw*W^+!bZMc6<46x z%{gK-FFIesYxDJSRs_KYZ>8b)^7V9jt;S}qUK{SmG1v?-;5KyI?#1&+9`ndtw9&Q` z8EYF|F}^mOOPi14We1xTYgn~n!PlGpI`$h)`(bQ#MK{!m>^x^~R9uhn$DSvK*};(IUO{#xQ| zxkmW(P`$$FghkJPe%9rXOs(); } } } diff --git a/Tree/Instance.cs b/Tree/Instance.cs index 0f6d07c..74a651a 100644 --- a/Tree/Instance.cs +++ b/Tree/Instance.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics.Contracts; using System.IO; using System.Linq; using System.Reflection; @@ -66,7 +67,7 @@ namespace RobloxFiles { get { - return Attributes?.Serialize() ?? new byte[0]; + return Attributes?.Serialize() ?? Array.Empty(); } set { @@ -136,6 +137,7 @@ namespace RobloxFiles /// The instance whose ancestry will be tested against this Instance. public bool IsDescendantOf(Instance ancestor) { + Contract.Requires(ancestor != null); return ancestor.IsAncestorOf(this); } @@ -265,7 +267,7 @@ namespace RobloxFiles .Where(child => name == child.Name) .Cast(); - if (query.Count() > 0) + if (query.Any()) { result = query.First(); } @@ -309,7 +311,7 @@ namespace RobloxFiles while (ancestor != null) { if (ancestor is T && ancestor.Name == name) - return (T)ancestor; + return ancestor as T; ancestor = ancestor.Parent; } @@ -334,15 +336,12 @@ namespace RobloxFiles /// The Name of the Instance to find. public T FindFirstAncestorOfClass() where T : Instance { - Type classType = typeof(T); - string className = classType.Name; - Instance ancestor = Parent; while (ancestor != null) { if (ancestor is T) - return (T)ancestor; + return ancestor as T; ancestor = ancestor.Parent; } @@ -387,7 +386,7 @@ namespace RobloxFiles T result = null; - if (query.Count() > 0) + if (query.Any()) { result = query.First(); } @@ -421,7 +420,7 @@ namespace RobloxFiles T result = null; - if (query.Count() > 0) + if (query.Any()) { result = query.First(); } diff --git a/Tree/Property.cs b/Tree/Property.cs index fedfb54..da959c0 100644 --- a/Tree/Property.cs +++ b/Tree/Property.cs @@ -152,7 +152,7 @@ namespace RobloxFiles { FieldInfo directField = instType .GetFields() - .Where(field => field.Name.StartsWith(Name)) + .Where(field => field.Name.StartsWith(Name, StringComparison.InvariantCulture)) .Where(field => field.DeclaringType == instType) .FirstOrDefault(); diff --git a/Utility/Formatting.cs b/Utility/Formatting.cs index 2136ab2..0b83233 100644 --- a/Utility/Formatting.cs +++ b/Utility/Formatting.cs @@ -55,6 +55,26 @@ internal static class Formatting } } + public static string ToLowerInvariant(this string str) + { + return str.ToLower(Invariant); + } + + public static string ToUpperInvariant(this string str) + { + return str.ToUpper(Invariant); + } + + public static bool StartsWithInvariant(this string str, string other) + { + return str.StartsWith(other, StringComparison.InvariantCulture); + } + + public static bool EndsWithInvariant(this string str, string other) + { + return str.EndsWith(other, StringComparison.InvariantCulture); + } + public static float ParseFloat(string value) { switch (value) diff --git a/XmlFormat/IO/XmlFileWriter.cs b/XmlFormat/IO/XmlFileWriter.cs index 14249b3..e019b3a 100644 --- a/XmlFormat/IO/XmlFileWriter.cs +++ b/XmlFormat/IO/XmlFileWriter.cs @@ -1,4 +1,6 @@ using System; +using System.Diagnostics.Contracts; +using System.Globalization; using System.Linq; using System.Text; using System.Xml; @@ -21,13 +23,15 @@ namespace RobloxFiles.XmlFormat public static string CreateReferent() { - Guid referentGuid = Guid.NewGuid(); + var referentGuid = Guid + .NewGuid() + .ToString(); string referent = "RBX" + referentGuid - .ToString() - .ToUpper(); + .ToUpper(CultureInfo.InvariantCulture) + .Replace("-", ""); - return referent.Replace("-", ""); + return referent; } private static string GetEnumName(T item) where T : struct @@ -77,7 +81,7 @@ namespace RobloxFiles.XmlFormat case PropertyType.Float: case PropertyType.Int64: case PropertyType.Double: - propType = propType.ToLower(); + propType = propType.ToLower(CultureInfo.InvariantCulture); break; case PropertyType.String: propType = (prop.HasRawBuffer ? "BinaryString" : "string"); @@ -166,6 +170,7 @@ namespace RobloxFiles.XmlFormat public static XmlNode WriteSharedStrings(XmlDocument doc, XmlRobloxFile file) { + Contract.Requires(doc != null && file != null); XmlElement sharedStrings = doc.CreateElement("SharedStrings"); var binaryWriter = XmlPropertyTokens.GetHandler(); diff --git a/XmlFormat/Tokens/Axes.cs b/XmlFormat/Tokens/Axes.cs index c43509b..d5bc2ab 100644 --- a/XmlFormat/Tokens/Axes.cs +++ b/XmlFormat/Tokens/Axes.cs @@ -9,9 +9,7 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - uint value; - - if (XmlPropertyTokens.ReadPropertyGeneric(token, out value)) + if (XmlPropertyTokens.ReadPropertyGeneric(token, out uint value)) { Axes axes = (Axes)value; prop.Value = axes; diff --git a/XmlFormat/Tokens/BrickColor.cs b/XmlFormat/Tokens/BrickColor.cs index c509c6a..2f6ff9d 100644 --- a/XmlFormat/Tokens/BrickColor.cs +++ b/XmlFormat/Tokens/BrickColor.cs @@ -13,9 +13,7 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - int value; - - if (XmlPropertyTokens.ReadPropertyGeneric(token, out value)) + if (XmlPropertyTokens.ReadPropertyGeneric(token, out int value)) { BrickColor brickColor = BrickColor.FromNumber(value); prop.XmlToken = "BrickColor"; diff --git a/XmlFormat/Tokens/Color3uint8.cs b/XmlFormat/Tokens/Color3uint8.cs index 3b3ce05..6b736aa 100644 --- a/XmlFormat/Tokens/Color3uint8.cs +++ b/XmlFormat/Tokens/Color3uint8.cs @@ -1,5 +1,7 @@ using System.Xml; using RobloxFiles.DataTypes; +using System.Diagnostics.Contracts; +using System; namespace RobloxFiles.XmlFormat.PropertyTokens { @@ -9,9 +11,7 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - uint value; - - if (XmlPropertyTokens.ReadPropertyGeneric(token, out value)) + if (XmlPropertyTokens.ReadPropertyGeneric(token, out uint value)) { uint r = (value >> 16) & 0xFF; uint g = (value >> 8) & 0xFF; @@ -28,14 +28,16 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public void WriteProperty(Property prop, XmlDocument doc, XmlNode node) { - Color3uint8 color = prop.CastValue(); + Color3uint8 color = prop?.CastValue(); + Contract.Requires(node != null); + uint r = color.R, g = color.G, b = color.B; uint rgb = (255u << 24) | (r << 16) | (g << 8) | b; - node.InnerText = rgb.ToString(); + node.InnerText = rgb.ToInvariantString(); } } } diff --git a/XmlFormat/Tokens/Enum.cs b/XmlFormat/Tokens/Enum.cs index b9f8536..b237d68 100644 --- a/XmlFormat/Tokens/Enum.cs +++ b/XmlFormat/Tokens/Enum.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.Contracts; using System.Reflection; using System.Xml; @@ -10,9 +11,9 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - uint value; + Contract.Requires(prop != null); - if (XmlPropertyTokens.ReadPropertyGeneric(token, out value)) + if (XmlPropertyTokens.ReadPropertyGeneric(token, out uint value)) { Instance inst = prop.Instance; Type instType = inst?.GetType(); @@ -36,13 +37,13 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public void WriteProperty(Property prop, XmlDocument doc, XmlNode node) { + Contract.Requires(prop != null && node != null); object rawValue = prop.Value; - Type valueType = rawValue.GetType(); - + int signed = (int)rawValue; uint value = (uint)signed; - node.InnerText = value.ToString(); + node.InnerText = value.ToInvariantString(); } } } diff --git a/XmlFormat/Tokens/Faces.cs b/XmlFormat/Tokens/Faces.cs index f29db4b..e1bb4e0 100644 --- a/XmlFormat/Tokens/Faces.cs +++ b/XmlFormat/Tokens/Faces.cs @@ -1,4 +1,5 @@ -using System.Xml; +using System.Diagnostics.Contracts; +using System.Xml; using RobloxFiles.DataTypes; namespace RobloxFiles.XmlFormat.PropertyTokens @@ -9,9 +10,9 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - uint value; + Contract.Requires(prop != null); - if (XmlPropertyTokens.ReadPropertyGeneric(token, out value)) + if (XmlPropertyTokens.ReadPropertyGeneric(token, out uint value)) { Faces faces = (Faces)value; prop.Value = faces; @@ -24,6 +25,8 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public void WriteProperty(Property prop, XmlDocument doc, XmlNode node) { + Contract.Requires(prop != null && doc != null && node != null); + XmlElement faces = doc.CreateElement("faces"); node.AppendChild(faces); diff --git a/XmlFormat/XmlRobloxFile.cs b/XmlFormat/XmlRobloxFile.cs index 759bcd4..ab072b3 100644 --- a/XmlFormat/XmlRobloxFile.cs +++ b/XmlFormat/XmlRobloxFile.cs @@ -33,7 +33,14 @@ namespace RobloxFiles try { string xml = Encoding.UTF8.GetString(buffer); - XmlDocument.LoadXml(xml); + var settings = new XmlReaderSettings() { XmlResolver = null }; + + using (StringReader reader = new StringReader(xml)) + { + XmlReader xmlReader = XmlReader.Create(reader, settings); + XmlDocument.Load(xmlReader); + xmlReader.Dispose(); + } } catch { @@ -46,9 +53,8 @@ namespace RobloxFiles { // Verify the version we are using. XmlNode version = roblox.Attributes.GetNamedItem("version"); - int schemaVersion; - - if (version == null || !int.TryParse(version.Value, out schemaVersion)) + + if (version == null || !int.TryParse(version.Value, out int schemaVersion)) throw new Exception("XmlRobloxFile: No version number defined!"); else if (schemaVersion < 4) throw new Exception("XmlRobloxFile: Provided version must be at least 4!"); diff --git a/packages.config b/packages.config index f33cbab..146db44 100644 --- a/packages.config +++ b/packages.config @@ -4,10 +4,5 @@ - - - - - \ No newline at end of file