diff --git a/client/c#/AcademyMG/.gitattributes b/client/c#/AcademyMG/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/client/c#/AcademyMG/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/client/c#/AcademyMG/.gitignore b/client/c#/AcademyMG/.gitignore new file mode 100644 index 0000000..68c77f6 --- /dev/null +++ b/client/c#/AcademyMG/.gitignore @@ -0,0 +1,82 @@ +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userprefs + +.vs/ + +# Build results +bin/[Dd]ebug/ +bin/[Rr]elease/ +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +bin/**/*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +*.ide/ + + +*.lock.json +*.nuget.props +*.nuget.targets + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +.DS_Store +Generated_Code #added for RIA/Silverlight projects + +# Custom + +# packages +Release/ +packages/ + +*.userprefs +Refit-Tests/test-results diff --git a/client/c#/AcademyMG/CODE_OF_CONDUCT.md b/client/c#/AcademyMG/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f3a1be4 --- /dev/null +++ b/client/c#/AcademyMG/CODE_OF_CONDUCT.md @@ -0,0 +1,50 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic + addresses, without explicit permission +* Other unethical or unprofessional conduct + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +By adopting this Code of Conduct, project maintainers commit themselves to +fairly and consistently applying these principles to every aspect of managing +this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting a project maintainer at paul@paulbetts.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. Maintainers are +obligated to maintain confidentiality with regard to the reporter of an +incident. + + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.3.0, available at +[http://contributor-covenant.org/version/1/3/0/][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/client/c#/AcademyMG/COPYING b/client/c#/AcademyMG/COPYING new file mode 100644 index 0000000..b47bb1f --- /dev/null +++ b/client/c#/AcademyMG/COPYING @@ -0,0 +1,19 @@ +Copyright (c) 2012 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/client/c#/AcademyMG/GitVersion.yml b/client/c#/AcademyMG/GitVersion.yml new file mode 100644 index 0000000..b831284 --- /dev/null +++ b/client/c#/AcademyMG/GitVersion.yml @@ -0,0 +1,56 @@ +assembly-versioning-scheme: MajorMinorPatch +mode: ContinuousDeployment +tag-prefix: '[vV]' +continuous-delivery-fallback-tag: ci +next-version: 3.0.0 +major-version-bump-message: '\+semver:\s?(breaking|major)' +minor-version-bump-message: '\+semver:\s?(feature|minor)' +patch-version-bump-message: '\+semver:\s?(fix|patch)' +legacy-semver-padding: 3 +build-metadata-padding: 3 +commits-since-version-source-padding: 3 +commit-message-incrementing: Enabled +branches: + master: + mode: ContinuousDeployment + tag: build + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + release: + mode: ContinuousDeployment + tag: rc + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + feature: + mode: ContinuousDeployment + tag: useBranchName + increment: Inherit + prevent-increment-of-merged-branch-version: false + track-merge-target: false + pull-request: + mode: ContinuousDeployment + tag: PullReq + increment: Inherit + prevent-increment-of-merged-branch-version: false + tag-number-pattern: '[/-](?\d+)[-/]' + track-merge-target: false + hotfix: + mode: ContinuousDeployment + tag: beta + increment: Patch + prevent-increment-of-merged-branch-version: false + track-merge-target: false + support: + mode: ContinuousDeployment + tag: '' + increment: Patch + prevent-increment-of-merged-branch-version: true + track-merge-target: false + develop: + mode: ContinuousDeployment + tag: dev + increment: Minor + prevent-increment-of-merged-branch-version: false + track-merge-target: true \ No newline at end of file diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/App.config b/client/c#/AcademyMG/InterfaceStubGenerator/App.config new file mode 100644 index 0000000..bc3672d --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/Diagnostics.cs b/client/c#/AcademyMG/InterfaceStubGenerator/Diagnostics.cs new file mode 100644 index 0000000..7f1e47c --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/Diagnostics.cs @@ -0,0 +1,115 @@ +using Microsoft.CodeAnalysis.CSharp.Syntax; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis; + +namespace Refit.Generator +{ + public class Diagnostic + { + public string Type { get; private set; } + public string Code { get; private set; } + public string File { get; protected set; } + public int? Line { get; protected set; } + public int? Character { get; protected set; } + public string Message { get; protected set; } + + public Diagnostic(string type, string code) + { + Type = type; + Code = code; + } + + protected void setLocation(Location location) + { + var line = location.GetMappedLineSpan().StartLinePosition; + + File = location.FilePath; + Line = line.Line + 1; + Character = line.Character + 1; + } + + public override string ToString() + { + var builder = new StringBuilder(); + + if (!string.IsNullOrWhiteSpace(File)) { + builder.Append(File); + if (Line.HasValue) { + builder.AppendFormat("({0}", Line); + if (Character.HasValue) + builder.AppendFormat(",{0}", Character); + builder.Append(")"); + } + builder.Append(": "); + } + builder.AppendFormat("{0} {1}", Type, Code); + if (!string.IsNullOrWhiteSpace(Message)) + builder.AppendFormat(": {0}", Message); + + return builder.ToString(); + } + } + + public class Warning : Diagnostic + { + public Warning(string code) : base("warning", code) { } + } + + public class Error : Diagnostic + { + public Error(string code) : base("error", code) { } + } + + + public class MissingRefitAttributeWarning : Warning + { + public string InterfaceName { get; private set; } + public string MethodName { get; private set; } + + public MissingRefitAttributeWarning(InterfaceDeclarationSyntax @interface, MethodDeclarationSyntax method) + : base("RF001") + { + setLocation(method.GetLocation()); + + InterfaceName = @interface.Identifier.Text; + MethodName = method.Identifier.Text; + + Message = string.Format( + "Method {0}.{1} either has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument.", + InterfaceName, MethodName); + } + } + + public class MultipleRefitMethodSameNameWarning : Warning + { + public string InterfaceName { get; private set; } + public string MethodName { get; private set; } + + public MultipleRefitMethodSameNameWarning(InterfaceDeclarationSyntax @interface, MethodDeclarationSyntax method) + : base("RF002") + { + setLocation(method.GetLocation()); + + InterfaceName = @interface.Identifier.Text; + MethodName = method.Identifier.Text; + + Message = string.Format( + "Method {0}.{1} has been declared multiple times. Refit doesn't support overloading.", + InterfaceName, MethodName); + } + } + + public class ReadOnlyFileError : Error + { + public ReadOnlyFileError(FileInfo file) : base("RF003") + { + File = file.FullName; + Message = "File is marked as read-only and is not up-to-date."; + } + } +} diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/GeneratedInterfaceStubTemplate.mustache b/client/c#/AcademyMG/InterfaceStubGenerator/GeneratedInterfaceStubTemplate.mustache new file mode 100644 index 0000000..1681c31 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/GeneratedInterfaceStubTemplate.mustache @@ -0,0 +1,67 @@ +using System; +using System.Net.Http; +using System.Collections.Generic; +using System.Linq; +{{#UsingList}} +using {{Item}}; +{{/UsingList}} + +/* ******** Hey You! ********* + * + * This is a generated file, and gets rewritten every time you build the + * project. If you want to edit it, you need to edit the mustache template + * in the Refit package */ + +namespace RefitInternalGenerated +{ + [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)] + sealed class PreserveAttribute : Attribute + { +#pragma warning disable 0649 + // + // Fields + // + public bool AllMembers; + + public bool Conditional; +#pragma warning restore 0649 + } +} + +{{#ClassList}} +namespace {{Namespace}} +{ + using RefitInternalGenerated; + + [Preserve] + {{#Modifiers}}{{.}} {{/Modifiers}}partial class AutoGenerated{{InterfaceName}}{{#TypeParameters}}<{{.}}>{{/TypeParameters}} : {{InterfaceName}}{{#TypeParameters}}<{{.}}>{{/TypeParameters}} + {{#ConstraintClauses}} + {{.}} + {{/ConstraintClauses}} + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGenerated{{InterfaceName}}(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + +{{#MethodList}} + public virtual {{ReturnType}} {{Name}}({{ArgumentListWithTypes}}) + { +{{#IsRefitMethod}} + var arguments = new object[] { {{ArgumentList}} }; + return ({{ReturnType}}) methodImpls["{{Name}}"](Client, arguments); +{{/IsRefitMethod}} +{{^IsRefitMethod}} + throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); +{{/IsRefitMethod}} + } + +{{/MethodList}} + } +} + +{{/ClassList}} diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.cs b/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.cs new file mode 100644 index 0000000..14c2c78 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Nustache; +using Nustache.Core; + +namespace Refit.Generator +{ + // * Search for all Interfaces, find the method definitions + // and make sure there's at least one Refit attribute on one + // * Generate the data we need for the template based on interface method + // defn's + // * Get this into an EXE in tools, write a targets file to beforeBuild execute it + // * Get a props file that adds a dummy file to the project + // * Write an implementation of RestService that just takes the interface name to + // guess the class name based on our template + // + // What if the Interface is in another module? (since we copy usings, should be fine) + public class InterfaceStubGenerator + { + public string GenerateInterfaceStubs(string[] paths) + { + var trees = paths.Select(x => CSharpSyntaxTree.ParseFile(x)).ToList(); + + var interfacesToGenerate = trees.SelectMany(FindInterfacesToGenerate).ToList(); + + var templateInfo = GenerateTemplateInfoForInterfaceList(interfacesToGenerate); + + GenerateWarnings(interfacesToGenerate); + + Encoders.HtmlEncode = (s) => s; + var text = Render.StringToString(ExtractTemplateSource(), templateInfo); + return text; + } + + public List FindInterfacesToGenerate(SyntaxTree tree) + { + var nodes = tree.GetRoot().DescendantNodes().ToList(); + + // Make sure this file imports Refit. If not, we're not going to + // find any Refit interfaces + // NB: This falls down in the tests unless we add an explicit "using Refit;", + // but we can rely on this being there in any other file + if (nodes.OfType().All(u => u.Name.ToFullString() != "Refit")) + return new List(); + + return nodes.OfType() + .Where(i => i.Members.OfType().Any(HasRefitHttpMethodAttribute)) + .ToList(); + } + + static readonly HashSet httpMethodAttributeNames = new HashSet( + new[] {"Get", "Head", "Post", "Put", "Delete", "Patch"} + .SelectMany(x => new[] {"{0}", "{0}Attribute"}.Select(f => string.Format(f, x)))); + + public bool HasRefitHttpMethodAttribute(MethodDeclarationSyntax method) + { + // We could also verify that the single argument is a string, + // but what if somebody is dumb and uses a constant? + // Could be turtles all the way down. + return method.AttributeLists.SelectMany(a => a.Attributes) + .Any(a => httpMethodAttributeNames.Contains(a.Name.ToString().Split('.').Last()) && + a.ArgumentList.Arguments.Count == 1 && + a.ArgumentList.Arguments[0].Expression.CSharpKind() == SyntaxKind.StringLiteralExpression); + } + + public TemplateInformation GenerateTemplateInfoForInterfaceList(List interfaceList) + { + var usings = interfaceList + .SelectMany(interfaceTree => { + var rootNode = interfaceTree.Parent; + while (rootNode.Parent != null) rootNode = rootNode.Parent; + + return rootNode.DescendantNodes() + .OfType() + .Select(x => string.Format("{0} {1}", x.Alias, x.Name).TrimStart()); + }) + .Distinct() + .Where(x => x != "System" && x != "System.Net.Http" && x != "System.Collections.Generic" && x != "System.Linq") + .Select(x => new UsingDeclaration() { Item = x }); + + var ret = new TemplateInformation() { + ClassList = interfaceList.Select(x => GenerateClassInfoForInterface(x)).ToList(), + UsingList = usings.ToList(), + }; + + return ret; + } + + public ClassTemplateInfo GenerateClassInfoForInterface(InterfaceDeclarationSyntax interfaceTree) + { + var ret = new ClassTemplateInfo(); + var parent = interfaceTree.Parent; + while (parent != null && !(parent is NamespaceDeclarationSyntax)) parent = parent.Parent; + + var ns = parent as NamespaceDeclarationSyntax; + ret.Namespace = ns.Name.ToString(); + ret.InterfaceName = interfaceTree.Identifier.ValueText; + ret.Modifiers = interfaceTree.Modifiers.Select(t => t.ValueText).FirstOrDefault(m => m == "public" || m == "internal"); + + if (interfaceTree.TypeParameterList != null) { + var typeParameters = interfaceTree.TypeParameterList.Parameters; + if (typeParameters.Any()) { + ret.TypeParameters = string.Join(", ", typeParameters.Select(p => p.Identifier.ValueText)); + } + ret.ConstraintClauses = interfaceTree.ConstraintClauses.ToFullString().Trim(); + } + ret.MethodList = interfaceTree.Members + .OfType() + .Select(x => new MethodTemplateInfo() { + Name = x.Identifier.Text, + ReturnType = x.ReturnType.ToString(), + ArgumentList = String.Join(",", x.ParameterList.Parameters + .Select(y => y.Identifier.Text)), + ArgumentListWithTypes = String.Join(",", x.ParameterList.Parameters + .Select(y => String.Format("{0} {1}", y.Type.ToString(), y.Identifier.Text))), + IsRefitMethod = HasRefitHttpMethodAttribute(x) + }) + .ToList(); + + return ret; + } + + public void GenerateWarnings(List interfacesToGenerate) + { + var missingAttributeWarnings = interfacesToGenerate + .SelectMany(i => i.Members.OfType().Select(m => new {Interface = i, Method = m})) + .Where(x => !HasRefitHttpMethodAttribute(x.Method)) + .Select(x => new MissingRefitAttributeWarning(x.Interface, x.Method)); + + var overloadWarnings = interfacesToGenerate + .SelectMany(i => i.Members.OfType().Select(m => new {Interface = i, Method = m})) + .Where(x => HasRefitHttpMethodAttribute(x.Method)) + .GroupBy(x => new {Interface = x.Interface, MethodName = x.Method.Identifier.Text}) + .Where(g => g.Count() > 1) + .SelectMany(g => g.Select(x => new MultipleRefitMethodSameNameWarning(x.Interface, x.Method))); + + var diagnostics = missingAttributeWarnings.Concat(overloadWarnings); + + foreach (var diagnostic in diagnostics) { + Console.Error.WriteLine(diagnostic); + } + } + + public static string ExtractTemplateSource() + { + var ourPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + // Try to return a flat file from the same directory, if it doesn't + // exist, use the built-in resource version + if (File.Exists(ourPath)) { + return File.ReadAllText(Path.Combine(ourPath, "GeneratedInterfaceStubTemplate.mustache"), Encoding.UTF8); + } + + using (var src = typeof(InterfaceStubGenerator).Assembly.GetManifestResourceStream("Refit.Generator.GeneratedInterfaceStubTemplate.mustache")) { + var ms = new MemoryStream(); + src.CopyTo(ms); + return Encoding.UTF8.GetString(ms.ToArray()); + } + } + } + + public class UsingDeclaration + { + public string Item { get; set; } + } + + public class ClassTemplateInfo + { + public string Modifiers { get; set; } + public string Namespace { get; set; } + public string InterfaceName { get; set; } + public string TypeParameters { get; set; } + public string ConstraintClauses { get; set; } + public List MethodList { get; set; } + } + + public class MethodTemplateInfo + { + public string ReturnType { get; set; } + public string Name { get; set; } + public string ArgumentListWithTypes { get; set; } + public string ArgumentList { get; set; } + public bool IsRefitMethod { get; set; } + } + + public class TemplateInformation + { + public List UsingList { get; set; } + public List ClassList; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.csproj b/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.csproj new file mode 100644 index 0000000..b09c445 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/InterfaceStubGenerator.csproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + {5694F8AD-7A15-4717-B649-1749A311300B} + Exe + Properties + Refit.Generator + InterfaceStubGenerator + v4.5 + 512 + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + 8.0.30703 + 2.0 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + Off + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/Mono.Options/Options.cs b/client/c#/AcademyMG/InterfaceStubGenerator/Mono.Options/Options.cs new file mode 100644 index 0000000..2fc2635 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/Mono.Options/Options.cs @@ -0,0 +1,1365 @@ +// +// Options.cs +// +// Authors: +// Jonathan Pryor +// Federico Di Gregorio +// Rolf Bjarne Kvinge +// +// Copyright (C) 2008 Novell (http://www.novell.com) +// Copyright (C) 2009 Federico Di Gregorio. +// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +// Compile With: +// gmcs -debug+ -r:System.Core Options.cs -o:NDesk.Options.dll +// gmcs -debug+ -d:LINQ -r:System.Core Options.cs -o:NDesk.Options.dll +// +// The LINQ version just changes the implementation of +// OptionSet.Parse(IEnumerable), and confers no semantic changes. + +// +// A Getopt::Long-inspired option parsing library for C#. +// +// NDesk.Options.OptionSet is built upon a key/value table, where the +// key is a option format string and the value is a delegate that is +// invoked when the format string is matched. +// +// Option format strings: +// Regex-like BNF Grammar: +// name: .+ +// type: [=:] +// sep: ( [^{}]+ | '{' .+ '}' )? +// aliases: ( name type sep ) ( '|' name type sep )* +// +// Each '|'-delimited name is an alias for the associated action. If the +// format string ends in a '=', it has a required value. If the format +// string ends in a ':', it has an optional value. If neither '=' or ':' +// is present, no value is supported. `=' or `:' need only be defined on one +// alias, but if they are provided on more than one they must be consistent. +// +// Each alias portion may also end with a "key/value separator", which is used +// to split option values if the option accepts > 1 value. If not specified, +// it defaults to '=' and ':'. If specified, it can be any character except +// '{' and '}' OR the *string* between '{' and '}'. If no separator should be +// used (i.e. the separate values should be distinct arguments), then "{}" +// should be used as the separator. +// +// Options are extracted either from the current option by looking for +// the option name followed by an '=' or ':', or is taken from the +// following option IFF: +// - The current option does not contain a '=' or a ':' +// - The current option requires a value (i.e. not a Option type of ':') +// +// The `name' used in the option format string does NOT include any leading +// option indicator, such as '-', '--', or '/'. All three of these are +// permitted/required on any named option. +// +// Option bundling is permitted so long as: +// - '-' is used to start the option group +// - all of the bundled options are a single character +// - at most one of the bundled options accepts a value, and the value +// provided starts from the next character to the end of the string. +// +// This allows specifying '-a -b -c' as '-abc', and specifying '-D name=value' +// as '-Dname=value'. +// +// Option processing is disabled by specifying "--". All options after "--" +// are returned by OptionSet.Parse() unchanged and unprocessed. +// +// Unprocessed options are returned from OptionSet.Parse(). +// +// Examples: +// int verbose = 0; +// OptionSet p = new OptionSet () +// .Add ("v", v => ++verbose) +// .Add ("name=|value=", v => Console.WriteLine (v)); +// p.Parse (new string[]{"-v", "--v", "/v", "-name=A", "/name", "B", "extra"}); +// +// The above would parse the argument string array, and would invoke the +// lambda expression three times, setting `verbose' to 3 when complete. +// It would also print out "A" and "B" to standard output. +// The returned array would contain the string "extra". +// +// C# 3.0 collection initializers are supported and encouraged: +// var p = new OptionSet () { +// { "h|?|help", v => ShowHelp () }, +// }; +// +// System.ComponentModel.TypeConverter is also supported, allowing the use of +// custom data types in the callback type; TypeConverter.ConvertFromString() +// is used to convert the value option to an instance of the specified +// type: +// +// var p = new OptionSet () { +// { "foo=", (Foo f) => Console.WriteLine (f.ToString ()) }, +// }; +// +// Random other tidbits: +// - Boolean options (those w/o '=' or ':' in the option format string) +// are explicitly enabled if they are followed with '+', and explicitly +// disabled if they are followed with '-': +// string a = null; +// var p = new OptionSet () { +// { "a", s => a = s }, +// }; +// p.Parse (new string[]{"-a"}); // sets v != null +// p.Parse (new string[]{"-a+"}); // sets v != null +// p.Parse (new string[]{"-a-"}); // sets v == null +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Globalization; +using System.IO; +using System.Runtime.Serialization; +using System.Security.Permissions; +using System.Text; +using System.Text.RegularExpressions; + +#if LINQ +using System.Linq; +#endif + +#if TEST +using NDesk.Options; +#endif + +#if NDESK_OPTIONS +namespace NDesk.Options +#else +namespace Mono.Options +#endif +{ + static class StringCoda { + + public static IEnumerable WrappedLines (string self, params int[] widths) + { + IEnumerable w = widths; + return WrappedLines (self, w); + } + + public static IEnumerable WrappedLines (string self, IEnumerable widths) + { + if (widths == null) + throw new ArgumentNullException ("widths"); + return CreateWrappedLinesIterator (self, widths); + } + + private static IEnumerable CreateWrappedLinesIterator (string self, IEnumerable widths) + { + if (string.IsNullOrEmpty (self)) { + yield return string.Empty; + yield break; + } + using (IEnumerator ewidths = widths.GetEnumerator ()) { + bool? hw = null; + int width = GetNextWidth (ewidths, int.MaxValue, ref hw); + int start = 0, end; + do { + end = GetLineEnd (start, width, self); + char c = self [end-1]; + if (char.IsWhiteSpace (c)) + --end; + bool needContinuation = end != self.Length && !IsEolChar (c); + string continuation = ""; + if (needContinuation) { + --end; + continuation = "-"; + } + string line = self.Substring (start, end - start) + continuation; + yield return line; + start = end; + if (char.IsWhiteSpace (c)) + ++start; + width = GetNextWidth (ewidths, width, ref hw); + } while (start < self.Length); + } + } + + private static int GetNextWidth (IEnumerator ewidths, int curWidth, ref bool? eValid) + { + if (!eValid.HasValue || (eValid.HasValue && eValid.Value)) { + curWidth = (eValid = ewidths.MoveNext ()).Value ? ewidths.Current : curWidth; + // '.' is any character, - is for a continuation + const string minWidth = ".-"; + if (curWidth < minWidth.Length) + throw new ArgumentOutOfRangeException ("widths", + string.Format ("Element must be >= {0}, was {1}.", minWidth.Length, curWidth)); + return curWidth; + } + // no more elements, use the last element. + return curWidth; + } + + private static bool IsEolChar (char c) + { + return !char.IsLetterOrDigit (c); + } + + private static int GetLineEnd (int start, int length, string description) + { + int end = System.Math.Min (start + length, description.Length); + int sep = -1; + for (int i = start; i < end; ++i) { + if (description [i] == '\n') + return i+1; + if (IsEolChar (description [i])) + sep = i+1; + } + if (sep == -1 || end == description.Length) + return end; + return sep; + } + } + + public class OptionValueCollection : IList, IList { + + List values = new List (); + OptionContext c; + + internal OptionValueCollection (OptionContext c) + { + this.c = c; + } + + #region ICollection + void ICollection.CopyTo (Array array, int index) {(values as ICollection).CopyTo (array, index);} + bool ICollection.IsSynchronized {get {return (values as ICollection).IsSynchronized;}} + object ICollection.SyncRoot {get {return (values as ICollection).SyncRoot;}} + #endregion + + #region ICollection + public void Add (string item) {values.Add (item);} + public void Clear () {values.Clear ();} + public bool Contains (string item) {return values.Contains (item);} + public void CopyTo (string[] array, int arrayIndex) {values.CopyTo (array, arrayIndex);} + public bool Remove (string item) {return values.Remove (item);} + public int Count {get {return values.Count;}} + public bool IsReadOnly {get {return false;}} + #endregion + + #region IEnumerable + IEnumerator IEnumerable.GetEnumerator () {return values.GetEnumerator ();} + #endregion + + #region IEnumerable + public IEnumerator GetEnumerator () {return values.GetEnumerator ();} + #endregion + + #region IList + int IList.Add (object value) {return (values as IList).Add (value);} + bool IList.Contains (object value) {return (values as IList).Contains (value);} + int IList.IndexOf (object value) {return (values as IList).IndexOf (value);} + void IList.Insert (int index, object value) {(values as IList).Insert (index, value);} + void IList.Remove (object value) {(values as IList).Remove (value);} + void IList.RemoveAt (int index) {(values as IList).RemoveAt (index);} + bool IList.IsFixedSize {get {return false;}} + object IList.this [int index] {get {return this [index];} set {(values as IList)[index] = value;}} + #endregion + + #region IList + public int IndexOf (string item) {return values.IndexOf (item);} + public void Insert (int index, string item) {values.Insert (index, item);} + public void RemoveAt (int index) {values.RemoveAt (index);} + + private void AssertValid (int index) + { + if (c.Option == null) + throw new InvalidOperationException ("OptionContext.Option is null."); + if (index >= c.Option.MaxValueCount) + throw new ArgumentOutOfRangeException ("index"); + if (c.Option.OptionValueType == OptionValueType.Required && + index >= values.Count) + throw new OptionException (string.Format ( + c.OptionSet.MessageLocalizer ("Missing required value for option '{0}'."), c.OptionName), + c.OptionName); + } + + public string this [int index] { + get { + AssertValid (index); + return index >= values.Count ? null : values [index]; + } + set { + values [index] = value; + } + } + #endregion + + public List ToList () + { + return new List (values); + } + + public string[] ToArray () + { + return values.ToArray (); + } + + public override string ToString () + { + return string.Join (", ", values.ToArray ()); + } + } + + public class OptionContext { + private Option option; + private string name; + private int index; + private OptionSet set; + private OptionValueCollection c; + + public OptionContext (OptionSet set) + { + this.set = set; + this.c = new OptionValueCollection (this); + } + + public Option Option { + get {return option;} + set {option = value;} + } + + public string OptionName { + get {return name;} + set {name = value;} + } + + public int OptionIndex { + get {return index;} + set {index = value;} + } + + public OptionSet OptionSet { + get {return set;} + } + + public OptionValueCollection OptionValues { + get {return c;} + } + } + + public enum OptionValueType { + None, + Optional, + Required, + } + + public abstract class Option { + string prototype, description; + string[] names; + OptionValueType type; + int count; + string[] separators; + bool hidden; + + protected Option (string prototype, string description) + : this (prototype, description, 1, false) + { + } + + protected Option (string prototype, string description, int maxValueCount) + : this (prototype, description, maxValueCount, false) + { + } + + protected Option (string prototype, string description, int maxValueCount, bool hidden) + { + if (prototype == null) + throw new ArgumentNullException ("prototype"); + if (prototype.Length == 0) + throw new ArgumentException ("Cannot be the empty string.", "prototype"); + if (maxValueCount < 0) + throw new ArgumentOutOfRangeException ("maxValueCount"); + + this.prototype = prototype; + this.description = description; + this.count = maxValueCount; + this.names = (this is OptionSet.Category) + // append GetHashCode() so that "duplicate" categories have distinct + // names, e.g. adding multiple "" categories should be valid. + ? new[]{prototype + this.GetHashCode ()} + : prototype.Split ('|'); + + if (this is OptionSet.Category) + return; + + this.type = ParsePrototype (); + this.hidden = hidden; + + if (this.count == 0 && type != OptionValueType.None) + throw new ArgumentException ( + "Cannot provide maxValueCount of 0 for OptionValueType.Required or " + + "OptionValueType.Optional.", + "maxValueCount"); + if (this.type == OptionValueType.None && maxValueCount > 1) + throw new ArgumentException ( + string.Format ("Cannot provide maxValueCount of {0} for OptionValueType.None.", maxValueCount), + "maxValueCount"); + if (Array.IndexOf (names, "<>") >= 0 && + ((names.Length == 1 && this.type != OptionValueType.None) || + (names.Length > 1 && this.MaxValueCount > 1))) + throw new ArgumentException ( + "The default option handler '<>' cannot require values.", + "prototype"); + } + + public string Prototype {get {return prototype;}} + public string Description {get {return description;}} + public OptionValueType OptionValueType {get {return type;}} + public int MaxValueCount {get {return count;}} + public bool Hidden {get {return hidden;}} + + public string[] GetNames () + { + return (string[]) names.Clone (); + } + + public string[] GetValueSeparators () + { + if (separators == null) + return new string [0]; + return (string[]) separators.Clone (); + } + + protected static T Parse (string value, OptionContext c) + { + Type tt = typeof (T); + bool nullable = tt.IsValueType && tt.IsGenericType && + !tt.IsGenericTypeDefinition && + tt.GetGenericTypeDefinition () == typeof (Nullable<>); + Type targetType = nullable ? tt.GetGenericArguments () [0] : typeof (T); + TypeConverter conv = TypeDescriptor.GetConverter (targetType); + T t = default (T); + try { + if (value != null) + t = (T) conv.ConvertFromString (value); + } + catch (Exception e) { + throw new OptionException ( + string.Format ( + c.OptionSet.MessageLocalizer ("Could not convert string `{0}' to type {1} for option `{2}'."), + value, targetType.Name, c.OptionName), + c.OptionName, e); + } + return t; + } + + internal string[] Names {get {return names;}} + internal string[] ValueSeparators {get {return separators;}} + + static readonly char[] NameTerminator = new char[]{'=', ':'}; + + private OptionValueType ParsePrototype () + { + char type = '\0'; + List seps = new List (); + for (int i = 0; i < names.Length; ++i) { + string name = names [i]; + if (name.Length == 0) + throw new ArgumentException ("Empty option names are not supported.", "prototype"); + + int end = name.IndexOfAny (NameTerminator); + if (end == -1) + continue; + names [i] = name.Substring (0, end); + if (type == '\0' || type == name [end]) + type = name [end]; + else + throw new ArgumentException ( + string.Format ("Conflicting option types: '{0}' vs. '{1}'.", type, name [end]), + "prototype"); + AddSeparators (name, end, seps); + } + + if (type == '\0') + return OptionValueType.None; + + if (count <= 1 && seps.Count != 0) + throw new ArgumentException ( + string.Format ("Cannot provide key/value separators for Options taking {0} value(s).", count), + "prototype"); + if (count > 1) { + if (seps.Count == 0) + this.separators = new string[]{":", "="}; + else if (seps.Count == 1 && seps [0].Length == 0) + this.separators = null; + else + this.separators = seps.ToArray (); + } + + return type == '=' ? OptionValueType.Required : OptionValueType.Optional; + } + + private static void AddSeparators (string name, int end, ICollection seps) + { + int start = -1; + for (int i = end+1; i < name.Length; ++i) { + switch (name [i]) { + case '{': + if (start != -1) + throw new ArgumentException ( + string.Format ("Ill-formed name/value separator found in \"{0}\".", name), + "prototype"); + start = i+1; + break; + case '}': + if (start == -1) + throw new ArgumentException ( + string.Format ("Ill-formed name/value separator found in \"{0}\".", name), + "prototype"); + seps.Add (name.Substring (start, i-start)); + start = -1; + break; + default: + if (start == -1) + seps.Add (name [i].ToString ()); + break; + } + } + if (start != -1) + throw new ArgumentException ( + string.Format ("Ill-formed name/value separator found in \"{0}\".", name), + "prototype"); + } + + public void Invoke (OptionContext c) + { + OnParseComplete (c); + c.OptionName = null; + c.Option = null; + c.OptionValues.Clear (); + } + + protected abstract void OnParseComplete (OptionContext c); + + public override string ToString () + { + return Prototype; + } + } + + public abstract class ArgumentSource { + + protected ArgumentSource () + { + } + + public abstract string[] GetNames (); + public abstract string Description { get; } + public abstract bool GetArguments (string value, out IEnumerable replacement); + + public static IEnumerable GetArgumentsFromFile (string file) + { + return GetArguments (File.OpenText (file), true); + } + + public static IEnumerable GetArguments (TextReader reader) + { + return GetArguments (reader, false); + } + + // Cribbed from mcs/driver.cs:LoadArgs(string) + static IEnumerable GetArguments (TextReader reader, bool close) + { + try { + StringBuilder arg = new StringBuilder (); + + string line; + while ((line = reader.ReadLine ()) != null) { + int t = line.Length; + + for (int i = 0; i < t; i++) { + char c = line [i]; + + if (c == '"' || c == '\'') { + char end = c; + + for (i++; i < t; i++){ + c = line [i]; + + if (c == end) + break; + arg.Append (c); + } + } else if (c == ' ') { + if (arg.Length > 0) { + yield return arg.ToString (); + arg.Length = 0; + } + } else + arg.Append (c); + } + if (arg.Length > 0) { + yield return arg.ToString (); + arg.Length = 0; + } + } + } + finally { + if (close) + reader.Close (); + } + } + } + + public class ResponseFileSource : ArgumentSource { + + public override string[] GetNames () + { + return new string[]{"@file"}; + } + + public override string Description { + get {return "Read response file for more options.";} + } + + public override bool GetArguments (string value, out IEnumerable replacement) + { + if (string.IsNullOrEmpty (value) || !value.StartsWith ("@")) { + replacement = null; + return false; + } + replacement = ArgumentSource.GetArgumentsFromFile (value.Substring (1)); + return true; + } + } + + [Serializable] + public class OptionException : Exception { + private string option; + + public OptionException () + { + } + + public OptionException (string message, string optionName) + : base (message) + { + this.option = optionName; + } + + public OptionException (string message, string optionName, Exception innerException) + : base (message, innerException) + { + this.option = optionName; + } + + protected OptionException (SerializationInfo info, StreamingContext context) + : base (info, context) + { + this.option = info.GetString ("OptionName"); + } + + public string OptionName { + get {return this.option;} + } + + [SecurityPermission (SecurityAction.LinkDemand, SerializationFormatter = true)] + public override void GetObjectData (SerializationInfo info, StreamingContext context) + { + base.GetObjectData (info, context); + info.AddValue ("OptionName", option); + } + } + + public delegate void OptionAction (TKey key, TValue value); + + public class OptionSet : KeyedCollection + { + public OptionSet () + : this (delegate (string f) {return f;}) + { + } + + public OptionSet (Converter localizer) + { + this.localizer = localizer; + this.roSources = new ReadOnlyCollection(sources); + } + + Converter localizer; + + public Converter MessageLocalizer { + get {return localizer;} + } + + List sources = new List (); + ReadOnlyCollection roSources; + + public ReadOnlyCollection ArgumentSources { + get {return roSources;} + } + + + protected override string GetKeyForItem (Option item) + { + if (item == null) + throw new ArgumentNullException ("option"); + if (item.Names != null && item.Names.Length > 0) + return item.Names [0]; + // This should never happen, as it's invalid for Option to be + // constructed w/o any names. + throw new InvalidOperationException ("Option has no names!"); + } + + [Obsolete ("Use KeyedCollection.this[string]")] + protected Option GetOptionForName (string option) + { + if (option == null) + throw new ArgumentNullException ("option"); + try { + return base [option]; + } + catch (KeyNotFoundException) { + return null; + } + } + + protected override void InsertItem (int index, Option item) + { + base.InsertItem (index, item); + AddImpl (item); + } + + protected override void RemoveItem (int index) + { + Option p = Items [index]; + base.RemoveItem (index); + // KeyedCollection.RemoveItem() handles the 0th item + for (int i = 1; i < p.Names.Length; ++i) { + Dictionary.Remove (p.Names [i]); + } + } + + protected override void SetItem (int index, Option item) + { + base.SetItem (index, item); + AddImpl (item); + } + + private void AddImpl (Option option) + { + if (option == null) + throw new ArgumentNullException ("option"); + List added = new List (option.Names.Length); + try { + // KeyedCollection.InsertItem/SetItem handle the 0th name. + for (int i = 1; i < option.Names.Length; ++i) { + Dictionary.Add (option.Names [i], option); + added.Add (option.Names [i]); + } + } + catch (Exception) { + foreach (string name in added) + Dictionary.Remove (name); + throw; + } + } + + public OptionSet Add (string header) + { + if (header == null) + throw new ArgumentNullException ("header"); + Add (new Category (header)); + return this; + } + + internal sealed class Category : Option { + + // Prototype starts with '=' because this is an invalid prototype + // (see Option.ParsePrototype(), and thus it'll prevent Category + // instances from being accidentally used as normal options. + public Category (string description) + : base ("=:Category:= " + description, description) + { + } + + protected override void OnParseComplete (OptionContext c) + { + throw new NotSupportedException ("Category.OnParseComplete should not be invoked."); + } + } + + + public new OptionSet Add (Option option) + { + base.Add (option); + return this; + } + + sealed class ActionOption : Option { + Action action; + + public ActionOption (string prototype, string description, int count, Action action) + : this (prototype, description, count, action, false) + { + } + + public ActionOption (string prototype, string description, int count, Action action, bool hidden) + : base (prototype, description, count, hidden) + { + if (action == null) + throw new ArgumentNullException ("action"); + this.action = action; + } + + protected override void OnParseComplete (OptionContext c) + { + action (c.OptionValues); + } + } + + public OptionSet Add (string prototype, Action action) + { + return Add (prototype, null, action); + } + + public OptionSet Add (string prototype, string description, Action action) + { + return Add (prototype, description, action, false); + } + + public OptionSet Add (string prototype, string description, Action action, bool hidden) + { + if (action == null) + throw new ArgumentNullException ("action"); + Option p = new ActionOption (prototype, description, 1, + delegate (OptionValueCollection v) { action (v [0]); }, hidden); + base.Add (p); + return this; + } + + public OptionSet Add (string prototype, OptionAction action) + { + return Add (prototype, null, action); + } + + public OptionSet Add (string prototype, string description, OptionAction action) + { + return Add (prototype, description, action, false); + } + + public OptionSet Add (string prototype, string description, OptionAction action, bool hidden) { + if (action == null) + throw new ArgumentNullException ("action"); + Option p = new ActionOption (prototype, description, 2, + delegate (OptionValueCollection v) {action (v [0], v [1]);}, hidden); + base.Add (p); + return this; + } + + sealed class ActionOption : Option { + Action action; + + public ActionOption (string prototype, string description, Action action) + : base (prototype, description, 1) + { + if (action == null) + throw new ArgumentNullException ("action"); + this.action = action; + } + + protected override void OnParseComplete (OptionContext c) + { + action (Parse (c.OptionValues [0], c)); + } + } + + sealed class ActionOption : Option { + OptionAction action; + + public ActionOption (string prototype, string description, OptionAction action) + : base (prototype, description, 2) + { + if (action == null) + throw new ArgumentNullException ("action"); + this.action = action; + } + + protected override void OnParseComplete (OptionContext c) + { + action ( + Parse (c.OptionValues [0], c), + Parse (c.OptionValues [1], c)); + } + } + + public OptionSet Add (string prototype, Action action) + { + return Add (prototype, null, action); + } + + public OptionSet Add (string prototype, string description, Action action) + { + return Add (new ActionOption (prototype, description, action)); + } + + public OptionSet Add (string prototype, OptionAction action) + { + return Add (prototype, null, action); + } + + public OptionSet Add (string prototype, string description, OptionAction action) + { + return Add (new ActionOption (prototype, description, action)); + } + + public OptionSet Add (ArgumentSource source) + { + if (source == null) + throw new ArgumentNullException ("source"); + sources.Add (source); + return this; + } + + protected virtual OptionContext CreateOptionContext () + { + return new OptionContext (this); + } + + public List Parse (IEnumerable arguments) + { + if (arguments == null) + throw new ArgumentNullException ("arguments"); + OptionContext c = CreateOptionContext (); + c.OptionIndex = -1; + bool process = true; + List unprocessed = new List (); + Option def = Contains ("<>") ? this ["<>"] : null; + ArgumentEnumerator ae = new ArgumentEnumerator (arguments); + foreach (string argument in ae) { + ++c.OptionIndex; + if (argument == "--") { + process = false; + continue; + } + if (!process) { + Unprocessed (unprocessed, def, c, argument); + continue; + } + if (AddSource (ae, argument)) + continue; + if (!Parse (argument, c)) + Unprocessed (unprocessed, def, c, argument); + } + if (c.Option != null) + c.Option.Invoke (c); + return unprocessed; + } + + class ArgumentEnumerator : IEnumerable { + List> sources = new List> (); + + public ArgumentEnumerator (IEnumerable arguments) + { + sources.Add (arguments.GetEnumerator ()); + } + + public void Add (IEnumerable arguments) + { + sources.Add (arguments.GetEnumerator ()); + } + + public IEnumerator GetEnumerator () + { + do { + IEnumerator c = sources [sources.Count-1]; + if (c.MoveNext ()) + yield return c.Current; + else { + c.Dispose (); + sources.RemoveAt (sources.Count-1); + } + } while (sources.Count > 0); + } + + IEnumerator IEnumerable.GetEnumerator () + { + return GetEnumerator (); + } + } + + bool AddSource (ArgumentEnumerator ae, string argument) + { + foreach (ArgumentSource source in sources) { + IEnumerable replacement; + if (!source.GetArguments (argument, out replacement)) + continue; + ae.Add (replacement); + return true; + } + return false; + } + + private static bool Unprocessed (ICollection extra, Option def, OptionContext c, string argument) + { + if (def == null) { + extra.Add (argument); + return false; + } + c.OptionValues.Add (argument); + c.Option = def; + c.Option.Invoke (c); + return false; + } + + private readonly Regex ValueOption = new Regex ( + @"^(?--|-|/)(?[^:=]+)((?[:=])(?.*))?$"); + + protected bool GetOptionParts (string argument, out string flag, out string name, out string sep, out string value) + { + if (argument == null) + throw new ArgumentNullException ("argument"); + + flag = name = sep = value = null; + Match m = ValueOption.Match (argument); + if (!m.Success) { + return false; + } + flag = m.Groups ["flag"].Value; + name = m.Groups ["name"].Value; + if (m.Groups ["sep"].Success && m.Groups ["value"].Success) { + sep = m.Groups ["sep"].Value; + value = m.Groups ["value"].Value; + } + return true; + } + + protected virtual bool Parse (string argument, OptionContext c) + { + if (c.Option != null) { + ParseValue (argument, c); + return true; + } + + string f, n, s, v; + if (!GetOptionParts (argument, out f, out n, out s, out v)) + return false; + + Option p; + if (Contains (n)) { + p = this [n]; + c.OptionName = f + n; + c.Option = p; + switch (p.OptionValueType) { + case OptionValueType.None: + c.OptionValues.Add (n); + c.Option.Invoke (c); + break; + case OptionValueType.Optional: + case OptionValueType.Required: + ParseValue (v, c); + break; + } + return true; + } + // no match; is it a bool option? + if (ParseBool (argument, n, c)) + return true; + // is it a bundled option? + if (ParseBundledValue (f, string.Concat (n + s + v), c)) + return true; + + return false; + } + + private void ParseValue (string option, OptionContext c) + { + if (option != null) + foreach (string o in c.Option.ValueSeparators != null + ? option.Split (c.Option.ValueSeparators, c.Option.MaxValueCount - c.OptionValues.Count, StringSplitOptions.None) + : new string[]{option}) { + c.OptionValues.Add (o); + } + if (c.OptionValues.Count == c.Option.MaxValueCount || + c.Option.OptionValueType == OptionValueType.Optional) + c.Option.Invoke (c); + else if (c.OptionValues.Count > c.Option.MaxValueCount) { + throw new OptionException (localizer (string.Format ( + "Error: Found {0} option values when expecting {1}.", + c.OptionValues.Count, c.Option.MaxValueCount)), + c.OptionName); + } + } + + private bool ParseBool (string option, string n, OptionContext c) + { + Option p; + string rn; + if (n.Length >= 1 && (n [n.Length-1] == '+' || n [n.Length-1] == '-') && + Contains ((rn = n.Substring (0, n.Length-1)))) { + p = this [rn]; + string v = n [n.Length-1] == '+' ? option : null; + c.OptionName = option; + c.Option = p; + c.OptionValues.Add (v); + p.Invoke (c); + return true; + } + return false; + } + + private bool ParseBundledValue (string f, string n, OptionContext c) + { + if (f != "-") + return false; + for (int i = 0; i < n.Length; ++i) { + Option p; + string opt = f + n [i].ToString (); + string rn = n [i].ToString (); + if (!Contains (rn)) { + if (i == 0) + return false; + throw new OptionException (string.Format (localizer ( + "Cannot bundle unregistered option '{0}'."), opt), opt); + } + p = this [rn]; + switch (p.OptionValueType) { + case OptionValueType.None: + Invoke (c, opt, n, p); + break; + case OptionValueType.Optional: + case OptionValueType.Required: { + string v = n.Substring (i+1); + c.Option = p; + c.OptionName = opt; + ParseValue (v.Length != 0 ? v : null, c); + return true; + } + default: + throw new InvalidOperationException ("Unknown OptionValueType: " + p.OptionValueType); + } + } + return true; + } + + private static void Invoke (OptionContext c, string name, string value, Option option) + { + c.OptionName = name; + c.Option = option; + c.OptionValues.Add (value); + option.Invoke (c); + } + + private const int OptionWidth = 29; + private const int Description_FirstWidth = 80 - OptionWidth; + private const int Description_RemWidth = 80 - OptionWidth - 2; + + public void WriteOptionDescriptions (TextWriter o) + { + foreach (Option p in this) { + int written = 0; + + if (p.Hidden) + continue; + + Category c = p as Category; + if (c != null) { + WriteDescription (o, p.Description, "", 80, 80); + continue; + } + + if (!WriteOptionPrototype (o, p, ref written)) + continue; + + if (written < OptionWidth) + o.Write (new string (' ', OptionWidth - written)); + else { + o.WriteLine (); + o.Write (new string (' ', OptionWidth)); + } + + WriteDescription (o, p.Description, new string (' ', OptionWidth+2), + Description_FirstWidth, Description_RemWidth); + } + + foreach (ArgumentSource s in sources) { + string[] names = s.GetNames (); + if (names == null || names.Length == 0) + continue; + + int written = 0; + + Write (o, ref written, " "); + Write (o, ref written, names [0]); + for (int i = 1; i < names.Length; ++i) { + Write (o, ref written, ", "); + Write (o, ref written, names [i]); + } + + if (written < OptionWidth) + o.Write (new string (' ', OptionWidth - written)); + else { + o.WriteLine (); + o.Write (new string (' ', OptionWidth)); + } + + WriteDescription (o, s.Description, new string (' ', OptionWidth+2), + Description_FirstWidth, Description_RemWidth); + } + } + + void WriteDescription (TextWriter o, string value, string prefix, int firstWidth, int remWidth) + { + bool indent = false; + foreach (string line in GetLines (localizer (GetDescription (value)), firstWidth, remWidth)) { + if (indent) + o.Write (prefix); + o.WriteLine (line); + indent = true; + } + } + + bool WriteOptionPrototype (TextWriter o, Option p, ref int written) + { + string[] names = p.Names; + + int i = GetNextOptionIndex (names, 0); + if (i == names.Length) + return false; + + if (names [i].Length == 1) { + Write (o, ref written, " -"); + Write (o, ref written, names [0]); + } + else { + Write (o, ref written, " --"); + Write (o, ref written, names [0]); + } + + for ( i = GetNextOptionIndex (names, i+1); + i < names.Length; i = GetNextOptionIndex (names, i+1)) { + Write (o, ref written, ", "); + Write (o, ref written, names [i].Length == 1 ? "-" : "--"); + Write (o, ref written, names [i]); + } + + if (p.OptionValueType == OptionValueType.Optional || + p.OptionValueType == OptionValueType.Required) { + if (p.OptionValueType == OptionValueType.Optional) { + Write (o, ref written, localizer ("[")); + } + Write (o, ref written, localizer ("=" + GetArgumentName (0, p.MaxValueCount, p.Description))); + string sep = p.ValueSeparators != null && p.ValueSeparators.Length > 0 + ? p.ValueSeparators [0] + : " "; + for (int c = 1; c < p.MaxValueCount; ++c) { + Write (o, ref written, localizer (sep + GetArgumentName (c, p.MaxValueCount, p.Description))); + } + if (p.OptionValueType == OptionValueType.Optional) { + Write (o, ref written, localizer ("]")); + } + } + return true; + } + + static int GetNextOptionIndex (string[] names, int i) + { + while (i < names.Length && names [i] == "<>") { + ++i; + } + return i; + } + + static void Write (TextWriter o, ref int n, string s) + { + n += s.Length; + o.Write (s); + } + + private static string GetArgumentName (int index, int maxIndex, string description) + { + if (description == null) + return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); + string[] nameStart; + if (maxIndex == 1) + nameStart = new string[]{"{0:", "{"}; + else + nameStart = new string[]{"{" + index + ":"}; + for (int i = 0; i < nameStart.Length; ++i) { + int start, j = 0; + do { + start = description.IndexOf (nameStart [i], j); + } while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false); + if (start == -1) + continue; + int end = description.IndexOf ("}", start); + if (end == -1) + continue; + return description.Substring (start + nameStart [i].Length, end - start - nameStart [i].Length); + } + return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1); + } + + private static string GetDescription (string description) + { + if (description == null) + return string.Empty; + StringBuilder sb = new StringBuilder (description.Length); + int start = -1; + for (int i = 0; i < description.Length; ++i) { + switch (description [i]) { + case '{': + if (i == start) { + sb.Append ('{'); + start = -1; + } + else if (start < 0) + start = i + 1; + break; + case '}': + if (start < 0) { + if ((i+1) == description.Length || description [i+1] != '}') + throw new InvalidOperationException ("Invalid option description: " + description); + ++i; + sb.Append ("}"); + } + else { + sb.Append (description.Substring (start, i - start)); + start = -1; + } + break; + case ':': + if (start < 0) + goto default; + start = i + 1; + break; + default: + if (start < 0) + sb.Append (description [i]); + break; + } + } + return sb.ToString (); + } + + private static IEnumerable GetLines (string description, int firstWidth, int remWidth) + { + return StringCoda.WrappedLines (description, firstWidth, remWidth); + } + } +} diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/Program.cs b/client/c#/AcademyMG/InterfaceStubGenerator/Program.cs new file mode 100644 index 0000000..d6aa9e8 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/Program.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Threading; + +namespace Refit.Generator +{ + class Program + { + static void Main(string[] args) + { + + // NB: @Compile passes us a list of files relative to the project + // directory - pass in the project and use its dir + var generator = new InterfaceStubGenerator(); + var target = new FileInfo(args[0]); + var targetDir = new DirectoryInfo(args[1]); + + var files = default(FileInfo[]); + + if (args.Length > 2) { + // We get a file with each line being a file + files = File.ReadLines(args[2]) + .Select(x => new FileInfo(Path.Combine(targetDir.FullName, x))) + .Where(x => x.Name.Contains("RefitStubs") == false && x.Exists && x.Length > 0) + .ToArray(); + } else { + // NB: @Compile is completely jacked on Xam Studio in iOS, just + // run down all of the .cs files in the current directory and hope + // for the best + files = recursivelyListFiles(targetDir, "*.cs").ToArray(); + } + + var template = generator.GenerateInterfaceStubs(files.Select(x => x.FullName).ToArray()).Trim(); + + string contents = null; + + if (target.Exists) { + // Only try writing if the contents are different. Don't cause a rebuild + contents = File.ReadAllText(target.FullName, Encoding.UTF8).Trim(); + if (string.Equals(contents, template, StringComparison.Ordinal)) { + return; + } + } + + + // If the file is read-only, we might be on a build server. Check the file to see if + // the contents match what we expect + if (target.Exists && target.IsReadOnly) { + if (!string.Equals(contents, template, StringComparison.Ordinal)) { + Console.Error.WriteLine(new ReadOnlyFileError(target)); + Environment.Exit(-1); // error.... + } + } else { + var retryCount = 3; + + retry: + var file = default(FileStream); + + // NB: Parallel build weirdness means that we might get >1 person + // trying to party on this file at the same time. + try { + file = File.Open(target.FullName, FileMode.Create, FileAccess.Write, FileShare.None); + } catch (Exception ex) { + if (retryCount < 0) { + throw; + } + + retryCount--; + Thread.Sleep(500); + goto retry; + } + + using(var sw = new StreamWriter(file, Encoding.UTF8)) { + sw.WriteLine(template); + } + } + } + + static IEnumerable recursivelyListFiles(DirectoryInfo root, string filter) + { + return root.GetFiles(filter) + .Concat(root.GetDirectories() + .SelectMany(x => recursivelyListFiles(x, filter))); + } + } + + static class ConcatExtension + { + public static IEnumerable Concat(this IEnumerable This, params IEnumerable[] others) + { + foreach (var t in This) { + yield return t; + } + + foreach (var list in others) { + foreach (var t in list) { + yield return t; + } + } + } + } +} diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/Properties/AssemblyInfo.cs b/client/c#/AcademyMG/InterfaceStubGenerator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c1cc88c --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("InterfaceStubGenerator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("InterfaceStubGenerator")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("822f454d-107d-4ce0-abce-3019a25af078")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/packages.config b/client/c#/AcademyMG/InterfaceStubGenerator/packages.config new file mode 100644 index 0000000..830f6b9 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/packages.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/InterfaceStubGenerator/project.json b/client/c#/AcademyMG/InterfaceStubGenerator/project.json new file mode 100644 index 0000000..01877d5 --- /dev/null +++ b/client/c#/AcademyMG/InterfaceStubGenerator/project.json @@ -0,0 +1,14 @@ +{ + "supports": {}, + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "0.7.4052301-beta", + "Mono.Options": "4.4.0.0", + "Nustache": "1.16.0.1" + }, + "frameworks": { + "net45": {} + }, + "runtimes": { + "win": {} + } +} \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Animations/AnimationDirection.cs b/client/c#/AcademyMG/MaterialSkin/Animations/AnimationDirection.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Animations/AnimationDirection.cs rename to client/c#/AcademyMG/MaterialSkin/Animations/AnimationDirection.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Animations/AnimationManager.cs b/client/c#/AcademyMG/MaterialSkin/Animations/AnimationManager.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Animations/AnimationManager.cs rename to client/c#/AcademyMG/MaterialSkin/Animations/AnimationManager.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Animations/Animations.cs b/client/c#/AcademyMG/MaterialSkin/Animations/Animations.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Animations/Animations.cs rename to client/c#/AcademyMG/MaterialSkin/Animations/Animations.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/ColorScheme.cs b/client/c#/AcademyMG/MaterialSkin/ColorScheme.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/ColorScheme.cs rename to client/c#/AcademyMG/MaterialSkin/ColorScheme.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialCheckbox.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialCheckbox.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialCheckbox.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialCheckbox.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialContextMenuStrip.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialContextMenuStrip.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialContextMenuStrip.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialContextMenuStrip.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialDivider.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialDivider.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialDivider.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialDivider.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialFlatButton.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialFlatButton.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialFlatButton.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialFlatButton.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialForm.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialForm.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialForm.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialForm.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialLabel.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialLabel.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialLabel.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialLabel.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialListView.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialListView.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialListView.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialListView.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialMenuStrip.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialMenuStrip.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialMenuStrip.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialMenuStrip.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialProgressBar.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialProgressBar.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialProgressBar.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialProgressBar.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialRadioButton.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialRadioButton.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialRadioButton.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialRadioButton.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialRaisedButton.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialRaisedButton.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialRaisedButton.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialRaisedButton.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialSingleLineTextField.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialSingleLineTextField.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialSingleLineTextField.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialSingleLineTextField.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialTabControl.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialTabControl.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialTabControl.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialTabControl.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialTabSelector.cs b/client/c#/AcademyMG/MaterialSkin/Controls/MaterialTabSelector.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/Controls/MaterialTabSelector.cs rename to client/c#/AcademyMG/MaterialSkin/Controls/MaterialTabSelector.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/DrawHelper.cs b/client/c#/AcademyMG/MaterialSkin/DrawHelper.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/DrawHelper.cs rename to client/c#/AcademyMG/MaterialSkin/DrawHelper.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/IMaterialControl.cs b/client/c#/AcademyMG/MaterialSkin/IMaterialControl.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkin/IMaterialControl.cs rename to client/c#/AcademyMG/MaterialSkin/IMaterialControl.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkin/MaterialSkin.csproj b/client/c#/AcademyMG/MaterialSkin/MaterialSkin.csproj similarity index 96% rename from client/c#/MaterialSkin-master/MaterialSkin/MaterialSkin.csproj rename to client/c#/AcademyMG/MaterialSkin/MaterialSkin.csproj index 9ae76e9..0fb434f 100644 --- a/client/c#/MaterialSkin-master/MaterialSkin/MaterialSkin.csproj +++ b/client/c#/AcademyMG/MaterialSkin/MaterialSkin.csproj @@ -29,6 +29,9 @@ prompt 4 + + exe.ico + @@ -106,6 +109,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.Designer.cs new file mode 100644 index 0000000..efc0990 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.Designer.cs @@ -0,0 +1,154 @@ +namespace MaterialSkinExample.LoginRegister +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm)); + this.RegisterButton = new MaterialSkin.Controls.MaterialRaisedButton(); + this.SubmitButton = new MaterialSkin.Controls.MaterialRaisedButton(); + this.tf_login_pw = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_login_id = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.materialLabel2 = new MaterialSkin.Controls.MaterialLabel(); + this.SuspendLayout(); + // + // RegisterButton + // + this.RegisterButton.AutoSize = true; + this.RegisterButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.RegisterButton.Depth = 0; + this.RegisterButton.Icon = null; + this.RegisterButton.Location = new System.Drawing.Point(131, 200); + this.RegisterButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.RegisterButton.MouseState = MaterialSkin.MouseState.HOVER; + this.RegisterButton.Name = "RegisterButton"; + this.RegisterButton.Primary = true; + this.RegisterButton.Size = new System.Drawing.Size(83, 36); + this.RegisterButton.TabIndex = 7; + this.RegisterButton.Text = "Register"; + this.RegisterButton.UseVisualStyleBackColor = true; + this.RegisterButton.Click += new System.EventHandler(this.RegisterButton_Click); + // + // SubmitButton + // + this.SubmitButton.AutoSize = true; + this.SubmitButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.SubmitButton.Depth = 0; + this.SubmitButton.Icon = null; + this.SubmitButton.Location = new System.Drawing.Point(33, 200); + this.SubmitButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.SubmitButton.MouseState = MaterialSkin.MouseState.HOVER; + this.SubmitButton.Name = "SubmitButton"; + this.SubmitButton.Padding = new System.Windows.Forms.Padding(18, 16, 18, 16); + this.SubmitButton.Primary = true; + this.SubmitButton.Size = new System.Drawing.Size(71, 36); + this.SubmitButton.TabIndex = 6; + this.SubmitButton.Text = "SUBMIT"; + this.SubmitButton.UseVisualStyleBackColor = true; + this.SubmitButton.Click += new System.EventHandler(this.SubmitButton_Click); + // + // tf_login_pw + // + this.tf_login_pw.Depth = 0; + this.tf_login_pw.Hint = "Password"; + this.tf_login_pw.Location = new System.Drawing.Point(33, 136); + this.tf_login_pw.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_login_pw.MaxLength = 32767; + this.tf_login_pw.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_login_pw.Name = "tf_login_pw"; + this.tf_login_pw.PasswordChar = '*'; + this.tf_login_pw.SelectedText = ""; + this.tf_login_pw.SelectionLength = 0; + this.tf_login_pw.SelectionStart = 0; + this.tf_login_pw.Size = new System.Drawing.Size(181, 23); + this.tf_login_pw.TabIndex = 5; + this.tf_login_pw.TabStop = false; + this.tf_login_pw.UseSystemPasswordChar = false; + this.tf_login_pw.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_login_pw_KeyDown); + // + // tf_login_id + // + this.tf_login_id.Depth = 0; + this.tf_login_id.Hint = "ID"; + this.tf_login_id.Location = new System.Drawing.Point(33, 88); + this.tf_login_id.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_login_id.MaxLength = 32767; + this.tf_login_id.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_login_id.Name = "tf_login_id"; + this.tf_login_id.PasswordChar = '\0'; + this.tf_login_id.SelectedText = ""; + this.tf_login_id.SelectionLength = 0; + this.tf_login_id.SelectionStart = 0; + this.tf_login_id.Size = new System.Drawing.Size(181, 23); + this.tf_login_id.TabIndex = 4; + this.tf_login_id.TabStop = false; + this.tf_login_id.UseSystemPasswordChar = false; + this.tf_login_id.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_login_id_KeyDown); + // + // materialLabel2 + // + this.materialLabel2.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.materialLabel2.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel2.Depth = 0; + this.materialLabel2.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel2.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel2.Location = new System.Drawing.Point(33, 175); + this.materialLabel2.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel2.Name = "materialLabel2"; + this.materialLabel2.Size = new System.Drawing.Size(181, 19); + this.materialLabel2.TabIndex = 9; + this.materialLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // LoginForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(245, 267); + this.Controls.Add(this.materialLabel2); + this.Controls.Add(this.RegisterButton); + this.Controls.Add(this.SubmitButton); + this.Controls.Add(this.tf_login_pw); + this.Controls.Add(this.tf_login_id); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "LoginForm"; + this.Text = "로그인"; + this.Load += new System.EventHandler(this.LoginForm_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MaterialSkin.Controls.MaterialRaisedButton RegisterButton; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_login_pw; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_login_id; + private MaterialSkin.Controls.MaterialRaisedButton SubmitButton; + private MaterialSkin.Controls.MaterialLabel materialLabel2; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.cs new file mode 100644 index 0000000..2019294 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; +using RestSharp; +using MaterialSkinExample.Encrypter; +using System.Web; +using Refit; + +using System.Net; +using System.Net.Http; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Xunit; +using RichardSzalay.MockHttp; + +using Refit.Tests; + +namespace MaterialSkinExample.LoginRegister +{ + public partial class LoginForm : MaterialForm + { + public class InputCheck + { + public bool flag { get; set; } + public string err_msg { get; set; } + } + + public LoginForm() + { + InitializeComponent(); + } + + private void LoginForm_Load(object sender, EventArgs e) + { + + } + + private async void SubmitButton_Click(object sender, EventArgs e) + { + if (tf_login_id.Text.Equals("admin")) + { + AdminForm adminForm = new AdminForm(); + this.Hide(); + adminForm.ShowDialog(); + this.Close(); + } + else + { + InputCheck check = login_id_check(tf_login_id.Text); + + if (check.flag) + { + materialLabel2.Text = ""; + var settings = new RefitSettings + { + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + var service = RestService.For("http://127.0.0.1:5013", settings); + var login = new LoginData + { + id = tf_login_id.Text, + password = SHA256_Encryptor.SHA256Hash(tf_login_pw.Text) + }; + var result = await service.Login(login); + + if (result.flag) + { + materialLabel2.Text = "로그인 되었습니다."; + + MainForm mainForm = new MainForm(); + this.Hide(); + mainForm.ShowDialog(); + this.Close(); + } + else + { + materialLabel2.Text = "로그인에 실패했습니다."; + } + } + else materialLabel2.Text = check.err_msg; + } + } + + private void RegisterButton_Click(object sender, EventArgs e) + { + RegisterForm registerForm = new RegisterForm(); + registerForm.ShowDialog(); + } + + private void tf_login_id_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + } + + private void tf_login_pw_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + } + + private InputCheck login_id_check(string id) + { + bool flag = false; + string msg = ""; + + if (id.Length < 4) msg = "아이디는 4글자 이상이어야 합니다."; + else if (id.Length >= 16) msg = "아이디는 16글자 미만이어야 합니다."; + else + { + foreach(char chr in id) + { + if (!((chr >= '0' && chr <= '9') || (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z'))) msg = "아이디는 특수문자를 포함할 수 없습니다."; + } + } + if (msg.Length == 0) flag = true; + + return new InputCheck { flag = flag, err_msg = msg }; + } + + private InputCheck login_pw_check(string pw) + { + bool flag = false; + string msg = ""; + + if (pw.Length < 8) msg = "비밀번호는 8글자 이상이어야 합니다."; + else if (pw.Length >= 16) msg = "비밀번호는 16글자 미만이어야 합니다."; + else flag = true; + + return new InputCheck { flag = flag, err_msg = msg }; + } + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.resx b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.resx new file mode 100644 index 0000000..df2f680 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/LoginForm.resx @@ -0,0 +1,6293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAYAEBAAAAAAIABoBAAAZgAAACAgAAAAACAAqBAAAM4EAAAwMAAAAAAgAKglAAB2FQAAQEAAAAAA + IAAoQgAAHjsAAICAAAAAACAAKAgBAEZ9AAAAAAAAAAAgACggBABuhQEAKAAAABAAAAAgAAAAAQAgAAAA + AABABAAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wFK0uM7T8XYn1Ons+FUnaj/VJ2o/1Ol + suFOwtWfSM/iO////wH///8B////Af///wH///8B////AUbH2A9OwdWlWIiO/11bV/9eWFP/X1lU/15Y + U/9fWVX/bmxo/1iEiv9PvtClRcnZDf///wH///8B////AUbF1g1OuMvLXGZk/2ZgW/+Df3v/iISB/4mF + gf+MiIT/m5eT/42KiP9fWFT/XWNh/1C1x8tExdUN////Af///wFMv9KhXWRj/19YU/9pYl3/kIyK/4uG + hP+koZ7/n52a/6imo/+CfXr/X1lU/19YVP9dZmX/TcHVof///wFGz+M3WYOJ/15ZU/9fWVT/X1hT/5CN + if+no6D/m5iV/46Kh/+JhYH/gn56/19YVP9eWFT/X1hT/1iIj/9GzOA3T77RnV1aVv9fWFT/X1lU/2xw + bv97eHX/Yl1Y/19YU/9eWFP/XW1u/15eWv9eWFP/X1hU/15YVP9eW1f/TsPXnVKgq91fWFP/XllT/19Z + VP9eYF3/V5Wg/19ZU/9fWFP/WoWN/1HN6P9Yjpr/X1hU/19YU/9fWFT/X1hU/1Glst1Ul6D9XllU/19Z + VP9fWFT/XVlS/1egsP9bXlv/VqS1/1Wvwf9SzOf/WnuA/11ycv9fWFT/X1lU/15ZU/9UnKf9VJii/V5Y + VP9fWVT/X1hT/15YU/9YkJv/VMLZ/1iPmv9ccHL/Usrl/1S0yP9ag4r/XllT/19ZVP9eWVP/U56p/VKj + r91fWVP/XlhU/19YU/9bfIH/Ub/W/1ecqv9fWVP/WJSg/1DT7/9Yk57/X1hT/15ZU/9fWFT/XllT/1Kq + uN1NwtadXltY/15YU/9fWVT/VaS1/11lZP9WobH/WIyU/1HK5P9ZjZb/XlhU/19YVP9fWVT/XllT/15d + Wv9MyN2dRs3fN1iHjf9eWVP/X1lU/1xsbP9Yl6T/U8Tc/1Ssvv9Sz+r/XV1a/19ZVP9fWVT/X1lU/15Z + U/9XjpX/R8veN////wFOv9KhXWRi/15ZU/9eWFT/XlhT/1xmZv9Tv9f/VK/C/2BZU/9fWVT/X1lU/19Y + VP9dZ2b/TcTXof///wH///8BRsfYDVC0xMdcY2H/X1hU/19ZU/9eWFP/VLfL/1mKk/9fWFT/X1hT/19Y + VP9cZmT/TrjKx0bC0g3///8B////Af///wFFytsNT77QoViEiv9dWlb/XllT/1xnZv9dY2H/XlhT/11b + V/9YiI7/TsHUoUXD1A3///8B////Af///wH///8B////Af///wFIz+I3TsHUnVKksd1Tm6b9U5ym/VKl + st1Nw9adRs3fN////wH///8B////Af///wEAAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//KAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAA + AAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFTzNobSdLia0nS + 5KtM0ubZTdPq/U3V7P9M1ev/UNPq/UzR6NlH0eSrRc7fa0jAzxv///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFJzNs3StPmsU/S + 5/tRtMX/V5Kc/1t6f/9aamn/W2Jh/1piYf9ZaWj/W3h8/1iOmv9Tr8D/TdHm+0jR5LFGyto3////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHwc8TR9DioVDN + 4v1Zl6P/V2Rk/2FXU/9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hU/19ZUv9ZYF//WZCb/1DJ + 3/1H0OOhRsPTE////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRsfYNUnS + 6OFWqrz/WmRh/11ZU/9fWFT/XlhT/15ZU/9fWVT/X1lU/19ZVP9fWVT/XlhT/11YU/9jXVj/eXVx/4aB + fv9dWVP/WmFc/1eisP9M0ufhRcnZNf///wH///8B////Af///wH///8B////Af///wH///8B////AUbK + 20NL0er1WI6X/1xZVP9eWFT/YFhT/19ZU/9fWFT/XlhT/19ZVP9wa2f/jYmG/6ilov+zsa//s7Gv/66r + qf+VkY//dnFt/19YVP9gWFP/XVhU/1iDi/9Mz+f1RMzdQ////wH///8B////Af///wH///8B////Af// + /wFGxdYzSs/q9VaGiv9fWFP/XlhT/19ZVP97dnL/npqY/7Gvrf+ysK7/sbCu/6Gdmv+Hgn3/eHJu/1tX + Uv9/enb/jIV+/6Shn/+HhYX/X1lU/19ZVP9fWVT/X1lS/1p8gP9N0evzRMXVM////wH///8B////Af// + /wH///8BSb7OD0rS59tYiJD/YFhU/19YU/9fWVP/X1lU/3t2cv90cG3/dG9s/42Fgf+gnZz/npyb/5eS + jP+mpKL/oaCf/7OxsP+gnp3/X1dS/3hzb/9fWVT/X1lU/15YU/9eWFX/XlhT/1iQmf9J0ufbSbfHD/// + /wH///8B////Af///wFI0OOZUqW0/2BYU/9dWFT/X1lT/19YVP9fWVT/amJb/7Csq/+mpKT/oqCf/11X + VP98dGz/3+Pl/4R7c/+ys7T/xcG8/4mGhP+in57/joyL/19ZVP9fWVT/X1hU/19ZU/9eWFT/X1lT/1Ss + v/9FzuGZ////Af///wH///8BR8nZMU3J3/1fX1z/XVlT/19ZVP9fWVT/X1lU/19ZVP9eWVP/npeP/56e + n/+jnpn/paKd/3l3d/+NioT/e3Vw/6Ohof+uqab/srGw/7SysP+ZlpL/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWFP/XWRi/03N4/1Hw9Mv////Af///wFG0eapWY6X/15ZU/9gWFT/X1lU/19ZVP9fWVT/X1lU/19Y + U/9vaWP/lZST/6KfnP+yrqz/s7Cu/7Guq/+bmJT/f3t3/2ZgXP9eWFP/XlhT/19ZVP9fWVT/X1hU/15Y + VP9fWVP/X1lU/15YVP9eWVL/WZej/0bP5Kn///8BQ8DRF0zO5PlcXV3/X1lT/19YVP9fWVT/X1lU/19Z + VP9fWVT/mZSR/6Shn/+KhoL/bmlk/15YU/9eWFT/XllU/15ZVP9eWVT/XlhT/19YU/9fWVP/X1lU/19Z + VP9fWFP/YFhT/19ZU/9fWVT/XFlU/2BYUv9dZGT/TdHo+Ua1xhdG0OFjVam4/11YVP9cWVP/YFhT/19Z + VP9fWVT/X1lU/19ZVP9ZfH//X2Be/2BYU/9eWVT/X1lU/19ZVP9fWFP/XlhT/15YVP9gXFn/Vqi4/1tt + bf9fWVP/X1lU/15ZU/9gWFX/X1lU/19ZVP9eWFT/YFhT/1pZUv9Ts8X/RczbY0jS5aVYh47/YFhT/2BY + U/9eWVP/X1lU/19ZVP9fWVT/X1lU/1t1ef9Tuc7/XlpV/19ZVP9fWVT/XlhU/2BZUv9iWFP/XGts/1O9 + 0f9Q0/H/VMbf/1xaWv9fWVT/X1lU/19ZU/9fWVT/X1lU/19YVP9fWFT/XlhT/1aSnP9H0OKlR9Po1Vxu + cf9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllW/1LI4P9YeX7/X1lT/19ZUv9fV1T/XlhT/1iE + jf9Tzef/UdPw/1LS7/9Uwtr/XVhV/15ZU/9gWFT/X1hT/19ZVP9fWVT/X1lU/19ZVP9fWFP/WXp//0nR + 5tNN0ef3XGBe/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1hU/19ZU/9cWVL/Vp+z/1ahsP9fWVL/XVdV/1te + Wf9XpLT/UNTu/1TJ5v9Swdn/UdLw/1WdrP9dWVL/XlpV/19YU/9eWFT/X1lU/19ZVP9fWVT/X1lU/19Z + U/9camn/S9Hn90zR6P9bW1j/XllU/19ZVP9fWVT/X1lU/19ZVP9gWFT/XVpS/11ZUv9ceX3/U8jg/1tZ + V/9Xbm7/WL7W/0/S8P9Xtsr/WGhn/1TI4/9Q0/D/XHh8/1p+h/9atsf/Xl9a/19YVP9fWVT/X1lU/19Z + VP9fWVT/XllT/11kYv9J1Oz/TNLo/1xcWf9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZU/9eWVP/X1hT/1ta + WP9TzOP/WJ6s/1HO5/9T0u//WJmm/1xaWP9cdHb/UNTv/1TM5v9XbnD/Uszk/1TM5/9dZWf/XllT/19Z + VP9fWVT/X1lU/19ZVP9eWFP/XWVl/0rU7P9M0ef3XGNh/19ZU/9fWVT/X1lU/19ZVP9fWVT/YFhT/11Z + VP9fWFP/XV5b/1O91f9R0+7/U8jk/1p6f/9dWFX/X1lT/1eZpf9S0vH/UrfN/1TD2/9S0e//WYKI/19Z + Uv9fWFT/X1lU/19ZVP9fWVT/X1lU/15ZU/9bb3D/S9Do90jS59VbdHj/X1hT/19ZVP9fWVT/X1lU/19Z + VP9eWFT/XVlT/1tucv9TwNr/T9Pw/1PP6v9YZGb/X1lS/2BZUv9dWFP/U73W/07U7/9R0vH/T9Tu/1qR + nP9fWFP/XllT/15ZU/9fWVT/X1lU/19ZVP9fWVT/XllT/1uAh/9H0ObTR9DjpViOmP9eWVT/X1lT/15Y + VP9fWVT/X1lU/19YU/9fX13/VMni/1DS7f9TmKP/Vc3n/11xcv9dWVP/XVhU/11oZ/9S0vD/UdTt/1HS + 7/9bj5j/XVhT/19YVP9fWVT/X1lU/19ZVP9fWVT/X1hU/15ZU/9eWFT/V5uo/0jP46VGzNxjUrDE/15Y + VP9eWVP/X1hU/19ZVP9fWVT/X1lU/1l9hf9P0/D/WYmU/19ZUv9Wqbz/Vpmk/11YVP9baWj/U7HE/0/T + 7/9Ty+b/Wn+D/1tYVf9gWFP/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWFT/XllT/15XVP9SvdP/RsvbY0O4 + xRdM0ej5XmJi/19XVf9dWVP/X1lU/19ZVP9fWVT/XHF2/1DQ6f9gWlb/XVlT/1mCif9Uwdr/VKCq/1PP + 7P9S0u//UNPv/1eRnf9fWFP/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZU/9eWFT/XW1v/0rT + 6vlItMEX////AUfP46lYlaH/X1hT/11ZU/9fWVT/X1lU/19ZVP9eV1X/Vqey/1p+hP9bgYr/VKu9/1HT + 7/9P0/D/Vb3S/1DT7/9T1O//Wmtu/19ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhU/19Z + Uf9Vo7L/SM7hqf///wH///8BRcTUMUrM4v1dYmD/YFlS/19ZVP9fWVT/X1lU/11ZVP9fWlb/Vpei/1XI + 4P9Wy+P/Ucjh/1WgsP9YgIb/UtLx/1TC2v9eWVP/XlhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVL/W2ps/0vR5v1GwdAv////Af///wH///8BRs7imVamt/9gWFT/XllU/19ZVP9fWVT/X1lU/2BX + VP9gWVL/WlhU/1lZVv9bhY//U7vS/1WltP9P0vD/VZyt/2BZUv9gWFP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/XllU/19ZVv9UtMb/Rs3fmf///wH///8B////Af///wFGvMwPStLn21uFjf9cWVP/XVhU/15Z + U/9fWVT/W1lT/2BYU/9fWFX/YFhU/1xhYP9T0ev/Us3o/1HT8P9aeXz/X1lS/19YVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BYVP9fWFP/VpSd/0nQ6NtKtsIP////Af///wH///8B////Af///wFGx9gvTM/m8Vt6 + fv9eWVP/X1lT/19ZVP9fWVT/X1lU/19ZUv9dWVL/XldT/1eyxv9P0/D/U8zl/19bV/9gWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWFP/XlhT/1aHjP9L0OrxRsLSL////wH///8B////Af///wH///8B////Af// + /wFEy9w9TM/m8ViCiv9dWFP/YFhT/19YVP9gWVP/XlhT/11ZU/9gWFL/WIKK/1PT7f9Tqb3/XlhT/19Z + VP9fWFT/X1hU/19ZU/9gWFP/XlhU/1xZVP9Yjpf/S9Hp8UfG1j3///8B////Af///wH///8B////Af// + /wH///8B////Af///wFFytsvTNLn21eisP9aYFz/XVlS/2BXVf9dWFT/X1lT/11ZU/9fWFT/VpOd/12D + iP9eWFT/X1lU/15ZU/9eWFP/X1hU/11ZU/9aZWH/Vqq8/0nR59tFw9Qv////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFHw9MRR9HkmU/J3/1YkJv/WWBf/19ZUv9fWFT/X1lU/19Y + VP9eWVT/XFlU/19ZVP9fWVT/X1hU/2FXU/9XZGT/WZaj/1DN4f1HzuKZRrvJD////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRsnZMUjR5KlN0OX5Uq/A/1iO + mv9beHz/WWlo/1piYf9bYmH/Wmpp/1t6fv9XkZz/UbTF/07R5vlH0OKpRcXUL////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUm7 + yRdFzd5jRtDjpUzQ5tVN0ef3TNTq/0zU6v9L0ej3S9Hk1UfQ46VEzNxjSLjFF////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA + AAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BVsbRB1HI1zNGzd51R8/gqUbS5M1I0eX5SNTp/0jV6/9I1er/SNXq/0rS + 5vlH0+XNRs7fqUTL3HVJwM8zQrK/B////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AVXK2CtK0uOLSNTl30rV6v1R1ez/Vs/o/1fC2/9RtMf/Vaq6/1Ol + tf9SpbT/Vam5/1Wyxv9Yv9n/Vc3n/1DU7v9L1Oz9RdHj30XO3otKvc0r////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFJw9IzSdPksUjV6flS1Oz/VMDV/1SZpv9Xd3z/V2Ng/15Z + Uv9gV1P/XlhT/2BYU/9gWFP/XVhS/19YU/9dWVP/V19e/1hzdv9XlJ3/UrrP/1HU6/9I1On5RtDhsUfD + 0jH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BQ7jKFUbM3JtH1Oj7UtLm/1mnuf9RcXj/X1hU/2JX + VP9eWFT/XlhU/19ZVP9fWVT/XlhU/19ZVP9fWVT/XllU/19ZVP9fWVT/XllU/11ZVP9fWVL/YFhR/1Rq + b/9Ynq//Uc/j/0jU6vtGzt6ZQrzNFf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFGxNRHRtHk41DU7P9Zrb//W2pw/19Y + Uv9dWlH/WllT/2FYU/9gWFT/XlhT/15ZU/9eWVP/XlhT/15ZU/9eWVP/XllT/15ZU/9eWVP/XllT/2FY + U/9fWFT/WVlU/19ZUv9iV1L/VmNo/1misf9T0uv/RtLl40fH10X///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BS6q4A0bH2HVI1Oj7Vsnk/1eB + iv9aWlH/YFpQ/1pZVP9gV1X/YVdV/11ZUv9dWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + U/9dV1P/XllU/2hjXf+BfHj/nJiX/5WQjf9ZWlL/X1pQ/1xZU/9YdXz/V8TV/0vT6vtFydp1S627A/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFIuMYFRcrckUvS + 7/9Wu8//Vmlm/1xZVP9gV1X/W1lT/2NXU/9fWVP/XlhT/19YVP9fWFT/XlhU/19ZVP9eWFP/XllU/2dh + Xf94c2//lJCN/6+tqv/Ix8b/2tnY/9TT0/+4t7b/nZqZ/3l0cP9gWFT/XlhV/2FYU/9cWVP/WV9g/1yu + v/9J1O3/RczekUS8ygX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUqo + uQNGytuRRdXt/1K0xv9eXV7/YFhT/15ZU/9eWVP/XlhT/15ZVP9eWFT/XlhT/2JbVv9ua2f/ioWC/6ai + n//CwL3/09LS/9fU0//EwsH/p6Si/4uHhP9ybGj/YFtX/2NaUf+Hgn//enh2/19YVv9eWVP/XllT/15Z + U/9eWVP/X1dU/1VcV/9XpLP/TtPs/0XM3ZFDqrkD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUbG1m9H0+7/Va/E/11fWf9eWFL/XFlU/19ZVP9fWVT/YlxY/5qWk/+2tLP/09LQ/9rY + 2P/Jycf/srCs/5WSkP96dXH/ZWFb/2VeVf9rZmD/bGpm/19XVP+XkIj/cW1s/766tP+amZn/x8G9/2lq + af9fWVT/X1lU/19ZVP9eWVT/X1lT/2JYUv9bXFT/WazC/0vS7/9ExdVv////Af///wH///8B////Af// + /wH///8B////Af///wH///8BRsPTO0rT6fdRtsn/XF1a/2FYUv9dV1b/YVlQ/19ZVP9fWVT/YVxX/5iV + kv+Cf33/amRf/19cWP9mXFX/oJmW/56bmf+kop//Z2Rk/6eglv+QjIv/paem/6mlov+akYz/lZOR/7G2 + u/9dWFX/iHtx/2pqZ/9fWVT/XllU/19ZVP9eWVT/YVhS/11XV/9fWVL/WmFc/1W90/9I0+j3Q7/NO/// + /wH///8B////Af///wH///8B////Af///wFItcURRtLl2VDG3f9fYmH/YFhT/15YVf9eWlD/XldW/19Z + U/9eWVP/XlhU/3lwaP+GhYX/bmNc/62urv++t7T/h4eI/4B9ev+GfHn/yczN/9rc1/9pZF7/w8PC/8zL + y//Y1tD/pqmp/8vIxf9yb23/gn98/42GhP9eWVP/XllT/15ZU/9fWVP/XldW/2BaUP9gV1X/YFdU/1lq + af9VzOT/RtDj2UqvvRH///8B////Af///wH///8B////Af///wFGzd+NTdPs/1Z5ff9hWFP/X1lU/15Y + VP9eWVT/X1lT/19ZVP9fWVT/X1lS/2FbVP/Nycf/ura1/5mYmf/AwMH/W1ZT/19YVf9fV1D/vLav/9DU + 2P9eV1L/3dfS/4mKiv+TiIL/usDD/3NpYf+wrKn/qKam/2llZP9fWVT/X1lU/19ZVP9fWVT/XllT/15Z + U/9eWFT/X1hU/19ZUf9ahIv/SdTv/0XK2o3///8B////Af///wH///8B////AUfBzylI1On5V6Gy/2JX + U/9aWlP/X1lT/15ZVP9fWVT/X1lT/15ZVP9fWVT/X1lT/1xZU/+Og3n/5ebk/3x9g/+6tK3/lJSU/5iP + hv+cnZ//b2Zd/7Ozsv9cVVT/kIuH/2poZv+BenT/npqZ/7a0s//S0dD/3Nra/6ajoP9fWVT/XllU/19Z + VP9fWVT/XllU/19ZVP9fWVT/XllU/2FYUv9gWFb/UbDA/0jT6flHuccp////Af///wH///8B////AUbQ + 4aVSzeP/WGJl/1xaUP9iWFP/XllT/15ZU/9eWFP/XllT/15ZU/9eWVP/XlhU/2BZU/9gWFP/xsK7/2lm + ZP9iW1X/koyG/5aWlP95dXL/kI2J/6upqf/JxsP/2djX/9TS0P+9urn/oJ2a/4WAfP9qZmL/X1lV/11X + Uv9eWVP/XllT/15ZU/9eWVP/XllT/15ZU/9eWVP/XllT/19YU/9eWlD/XWtv/1HR6f9GzN2l////Af// + /wH///8BQsDPI0fU6/Vbmab/WllS/2BYVP9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hT/19Y + U/9rZ2P/iYV//5+fn/+/vbr/1tXU/9rY1//Fw8L/q6ek/4+Khv9zbmr/Yl1Y/15YU/9eWFP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9cWVT/X1hV/19ZVP9fWVT/X1lU/15YVP9hWFP/W1lU/1ip + uP9I0+r1QrXEI////wH///8BRc/ggU7S6/9WZWf/Y1dU/11ZUv9gWFT/X1lT/15ZVP9fWVT/X1lT/15Z + VP9fWVT/ZWBc/9XS0f/Qzs7/tLKw/5mVkv98eHT/ZV9a/1xWUv9eWFT/XlhU/19ZVP9fWVT/XllU/19Z + VP9fWVT/XllU/19ZVP9fWVT/XllU/19ZVP9fWVT/XllU/19YVP9gWFP/YFhU/19ZVP9fWVT/XllU/1xY + VP9gWVL/YVdV/1dydf9Q1O7/Rsrbgf///wFNr7sFRtLk1VOxxv9fV1X/YVhT/1tZU/9gV1X/XllT/15Z + U/9eWFP/XllT/15ZU/9eWVP/X1lU/15hXf9cVVL/YFdV/1xYU/9eWVP/XlhT/15ZU/9eWVP/XlhT/2BY + VP9fWFT/X1hU/19YVP9eWFP/WllX/1xwb/9dWFT/XVhU/11ZU/9eWVP/XllT/15ZU/9fWFT/XlpR/15Z + U/9eWVP/XllT/1tZVP9iWFL/XVlS/2BYVf9Tv9X/Rc/i1UukqQVDwtMrStXq/VyJkf9dWVT/W1lU/15Y + U/9gWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhU/1eksP9gaW3/XltP/2FXVf9eWVT/X1lU/19Z + VP9fWVT/X1lU/15YU/9cWVP/XFlT/15YVP9kWFP/U4SP/1zO6P9ah47/YFlR/15YVP9fWVT/X1lU/15Z + VP9kV1X/XVhU/19ZVP9fWVT/X1lU/19YVP9dWVP/XVlS/1tZUv9amaT/SdPr/US2xCtIzN1rT9Tq/1hp + aP9hWFP/YFhT/2FYU/9dWVP/X1lT/15ZVP9fWVT/X1lT/15ZVP9fWVT/X1hT/1yLm/9Sx93/VGpm/19Y + VP9fWVT/XlhU/19ZVP9fWVT/XllT/19ZUv9jWFL/YVlT/1pdWf9Uoaz/VdHv/0/T8v9R0ev/U3uF/19Y + VP9fWVT/XllU/15ZVP9dWlL/YFhU/19ZVP9fWVT/XllU/19YVP9bWFT/ZFdU/11ZU/9dd3r/R9bu/0fH + 12tEz+GfUcbd/1laWP9fWFP/XllT/15ZU/9eWFP/XllT/15ZU/9eWFP/XllT/15ZU/9eWVP/XllT/1dp + Y/9W0PL/V6i8/2FYUv9eWVP/XlhT/15ZU/9fWFT/XFlT/2NYUv9eVlb/Vmtt/1a60/9S1O7/TNPx/1HU + 7f9U0PP/XJam/19ZU/9eWVP/XllU/19ZU/9gWFP/X1hT/15ZU/9eWVP/XllT/15ZU/9eWVP/XllT/15Z + U/9aYWH/T9Do/0XN3p9F0uTHU7PH/19XVf9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1hU/2BXVv9Rus7/Usvm/1hgWf9fWVL/XlhU/19ZUf9hV1X/XFhT/15YU/9WhI7/V83j/1fR + 7/9Q0/D/UdLx/1PS8P9Q0/D/W3R0/11XVv9fWVT/XVpR/2NWV/9fWFT/XllT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YU/9aWFX/VMPa/0XQ4sdJ0OLtVaSz/2FXU/9eWVT/X1hT/19ZVP9fWVT/X1lT/15Z + VP9fWVT/X1lT/15ZVP9fWVT/XlhU/11ZUv9XkJ//VdHx/1d+hP9dWVP/XlhT/1xXVv9cWlD/XV1c/1Sk + sv9S1e3/TNTu/1XQ8/9Txtr/UdLv/1HS8P9Uxt//WVxY/1tZU/9fWFT/XVlS/2BYVP9eWFP/XlhU/19Z + VP9fWVT/XllU/19ZVP9fWVT/XllU/19YU/9bWFP/V7TI/0jO4e1I1Of9VJqo/19YU/9eWVT/XllT/15Z + U/9eWFP/XllT/15ZU/9eWFP/XllS/2FXVv9fWVL/XlhT/1lbUP9cam7/T9Lu/1SmuP9iV1P/X1hU/1pZ + U/9abXH/Wb3R/1LS8v9S0vH/U8zp/1aJi/9Rqb//V9Dy/03T8f9ZpLP/XllT/15fYP9ghYr/XFpU/2JY + Uv9gWFP/XlhU/15ZU/9eWVP/XllT/15ZU/9eWVP/XllT/15ZU/9dWVL/Vqu9/0jR5f1H1er/VpWk/15Y + Uv9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlT/2JXVf9bWlH/X1lU/11ZUv9fWlT/Vr3T/1fL + 4f9RXFr/YFdV/1SIkP9WzOj/U9Lw/0zT8P9ZvtD/W2xx/1dcV/9WzOT/TtPv/1HT8f9agIT/XldX/1en + t/9O0+7/YpKa/1xaU/9gWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9fWVL/VKa6/0fU + 6f9I1er/WJal/15YU/9eWFT/X1lT/19ZVP9fWVT/X1lT/19ZVP9fWVT/XVlT/2FYU/9dWVL/XlhU/2JY + U/9bWVL/WJWk/1LU7/9WgIj/V6e0/1PS7/9U0vD/U9Lv/1iisv9ZXF7/XVhU/1x4fP9T1O//UNPv/1jP + 6f9ZXl//Vo6W/1HT7v9T0fL/WrXG/19XVf9dWVP/XlhU/19ZVP9fWVT/XlhU/19ZVP9fWVT/XlhU/15Z + U/9gWFP/Uqm8/0jV6f9G0+b9V52r/15YU/9eWFT/XlhT/15YVP9eWFP/XlhU/15YU/9eWFP/X1hU/15Z + Uv9iVlb/X1hT/1xYVf9ZWVP/XnBu/1LS7v9X0Oz/TtPv/1TU7P9RzOf/VYON/19ZUv9iWFL/X1dW/1ef + qP9Q0fL/T9Pv/1Oywv9ZfYH/U87u/0/U7f9SzeL/XGlt/1lYVf9fWFT/XlhU/15YU/9eWFP/XlhU/15Y + U/9eWFP/XlhU/15YU/9dWFT/VrDC/0nQ5P1Iz+LtWKm7/1tZU/9fWVP/X1lT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlhU/2NXVP9ZWlL/X1lU/2BYUv9fWFP/Voqb/1HR7v9Q1O7/UdPw/1a70/9da2n/XFhU/11X + V/9cWVP/XllV/1XC2P9R0fL/U9Pv/1Kqvv9Tz+j/VdPt/0/Q8f9Zfob/X1pQ/2FYU/9fWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9cWVP/VLzT/0jN4u1F0ePHVbzQ/1xXVP9fWFP/X1lT/19Z + VP9fWVT/X1lT/19ZVP9fWVT/X1hT/15YVf9eWFT/XllT/1pgXv9XqL7/TtXt/1LT7/9P0/H/V6i0/1pa + Xf9dWlD/X1hT/2BZUv9eWVP/XW1t/0/S8f9R1O7/UNPv/1HS8P9Q1O3/UNLx/1uOlv9eWFL/X1ZW/15a + Uf9eWVP/XlhU/19ZVP9fWVT/XlhU/19ZVP9fWVT/XlhU/15YU/9cW1r/Usvh/0bP4cdEzt+fUM3j/1ld + Xv9fWFT/XlhT/15YVP9eWFP/XlhU/15YU/9eWFP/XlhT/15YVP9iVlT/WGVi/1bA1v9P0/H/UNPu/1DN + 6f9U0u//Vp6q/11YVP9fWFT/YFhU/2FYU/9dWlH/V5Gc/1PR8f9O0+//UdPw/1DS8f9S0u3/V5Gg/15Y + U/9fWVP/X1hU/15ZU/9fWFP/XlhU/15YU/9eWFP/XlhU/15YU/9eWFP/XlhU/15ZU/9YaW3/UtPt/0bN + 3Z9HyNhtS9bt/15ydf9eWVT/X1hU/19ZU/9eWFT/X1lU/19ZVP9fWVT/XlhU/2FZUv9gWFX/WaOx/1TS + 8f9N1e7/VbjO/1Nqa/9Xxt7/VcLd/19aU/9dWVP/YlhT/1laU/9dV1j/VrfI/1TR8P9N1O7/UtTt/1PR + 7/9ZipL/YFlR/2BXVP9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9eWVP/X1hU/15Y + U/9choz/StTu/0fG1mtHuMgrSNPs/ViVoP9dWFX/YFdU/19ZUf9eWFT/X1lT/19ZVP9fWVT/X1lT/19Z + VP9eW1r/Tsjh/0zT8P9Yscf/X1pa/11ZUf9XoKz/UNLy/1lycv9cWVT/YVdU/1pcU/9ahpP/T9Hs/07U + 7/9V0fH/U8nh/1l7fv9aWFX/XllT/19XVP9fWFT/XlhU/19ZVP9fWVT/XlhU/19ZVP9fWVT/XlhU/19Y + VP9cWlH/YldU/1tYVP9Vqbn/StPr/Um1wytNo6wFRtDi1VO91f9fWFP/V1pT/2FXVf9gWFP/XlhU/15Y + U/9eWFP/XlhU/15YU/9eXVz/VMvl/1LS7v9XcG//X1pR/19YVf9cdn7/UdPv/1eZpf9cWVP/V3h8/1a4 + zf9R1O7/UNLx/07T7/9TyeL/WGZp/2FYU/9gWVP/XVlS/2FYU/9eWFP/XlhU/15YU/9eWFP/XlhU/15Y + U/9eWFP/XlhU/11ZU/9hV1X/XFlT/2FcWv9QzOX/Rs/h1UuirAX///8BRsvagU7U7v9cb3X/X1lS/2JW + Vv9bWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFf/VbPH/0/M4/9gVlX/X1hT/15aUP9ZXVj/V8ff/1PD + 3f9UtMH/VNLu/07S8v9W0+3/TdPx/1DU7/9VpLf/X1hS/15YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xZU/9iV1X/W1pS/1mDi/9K1e7/RsjZgf///wH///8BR7TFI0jU + 6PVVprf/X1lQ/2FXVP9dWVP/X1lT/19ZVP9fWVT/X1lT/19ZVP9fWFT/WXN4/1fK3f9UXlv/WFla/1dh + Zf9ahI//Tsje/1PS8P9P0vH/UNLx/1XP5/9R0+7/TtLx/1XU7/9Wfon/YlhR/2BYVP9fWVT/XlhU/19Z + VP9fWVT/XlhU/19ZVP9fWVT/XlhU/19ZVP9fWVT/XlhU/11YVP9gWVL/W1pT/1W5zv9I0+f1SbHBI/// + /wH///8B////AUTM3qVO0en/WWtq/2JXVP9cWVL/X1hU/15YU/9eWFP/XlhU/15YU/9dWVT/XFhT/1p+ + hv9ZxeH/WMXe/1vQ6P9N0+//T9Pw/1XR8f9TzOb/WZqi/1GBkf9S0+//UdTv/1rP6P9ZX13/XVlT/15Y + U/9eWFP/XlhU/15YU/9eWFP/XlhU/15YU/9eWFP/XlhU/15YU/9eWFP/X1hU/1pZU/9hWFL/W3qA/0zV + 6/9Fy9yl////Af///wH///8B////AUW6xylH1On5Vam9/1paUv9jWVH/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWFT/XlhU/15ZUv9dbGz/Uqy4/1nI4P9ay+D/VrfK/1DN5f9TvNH/XlhS/1Weqf9R0vP/TdTv/1ax + x/9hWFD/XVhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZ + Uv9XW1f/V7rT/0XU5flItsMp////Af///wH///8B////Af///wFGytuNUtPs/1Z7hP9fWVP/X1lT/19Z + VP9fWVT/X1lT/19ZVP9fWVT/XlhU/11YVP9iWFL/X1dT/1dWWP9WWFv/X1ZU/1mmuf9Q0e7/XGps/1XC + 2P9Q0/D/UtLv/1KKmf9eWlH/ZFdU/19ZU/9fWVT/XlhU/19ZU/9fWVT/XlhU/19ZU/9fWVT/XlhU/19Z + U/9fWVT/XlhU/15XVf9UkZr/T9Tu/0fH2I3///8B////Af///wH///8B////Af///wFGscARRtHl2VLI + 3P9eYWP/XlhV/19YU/9eWVL/X1hU/15YVP9fWVT/X1hU/2BXVf9dWVL/W1pS/11ZUv9gWVH/X1lR/1t+ + h/9O1PH/VaS3/1HS7f9P0vH/VNLq/1lnbf9dWlH/YldU/19ZVP9fWVT/X1hU/19ZVP9fWVT/X1hU/19Z + VP9fWVT/XVlU/2JYUv9eWVP/X1hT/11ub/9Rz+n/R8/i2UqtvBH///8B////Af///wH///8B////Af// + /wH///8BRcPTO0vT6vdascL/WFxX/15ZU/9cV1b/XVlS/19ZU/9fWVP/XllT/1tZU/9iWFP/YldU/19X + Vf9eV1b/XlhU/1lfW/9Wzuf/VNLu/1DT7/9Q0/D/Vr3R/1taVP9hWFL/XllT/19ZU/9fWVP/XllT/19Z + U/9fWVP/XllT/19ZU/9fWVP/X1hT/19XVv9cWVP/XWFg/1TA1P9H0uj3SLzLO////wH///8B////Af// + /wH///8B////Af///wH///8B////AUbI2WdI1ez9WqS1/15aVf9eWFT/YFlS/15ZVP9fWVT/XlhU/19Z + VP9fWVT/XllT/2BZUf9cWVL/YFlR/1tXVP9XrL7/VNHw/0/S8v9T0+7/VZil/2BZUf9hWFT/X1lT/19Z + U/9fWVT/XlhU/19ZU/9fWVT/XlhU/19ZU/9eWVT/XllT/1pZVP9eX1r/VLXK/0nT7f1GwtJn////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AT+isANGy9yDTNTr/1ejsv9VXFf/X1dU/15Y + VP9fWVT/XlhU/19ZVP9fWVT/XlhU/19YVP9dWVP/X1lR/2JWVP9ZhIz/UtPw/0zW6f9U0u//XHJ4/15Y + U/9fWVT/X1hU/19ZVP9fWVT/X1hU/19ZVP9fWVT/X1hU/19ZVP9eWVT/YFhT/15dXv9TtMb/RdXs/UfG + 14NOoK4D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFAtcMDRMzdg0nU + 7P1crr7/WV9g/1xZUv9hWFP/XlhV/2BYVP9hWFL/XllT/19YVP9eWFP/XFlS/19ZUv9aXlv/Vr/W/1bS + 7/9QxeP/W1tW/15YU/9fWVT/XllT/19YVP9fWFT/XlhT/19ZU/9jV1P/W1lT/2BXVf9cWVT/Vmlm/1a7 + zv9K0u39RcfXg0iqtQP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUXK22dK1On3V8TV/1h0e/9cWVP/X1pQ/1laUv9iV1X/YFdW/11ZU/9eWVP/XVlT/1xZ + U/9eWVP/WGdr/1fC1v9XpLX/YVlR/19ZU/9fWVT/XlhU/11ZU/9dWVL/YVdV/2BXVf9aWVT/YFpQ/1pa + Uf9XgYr/Vsnj/0jT5/dFxNRn////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFHx9g7R9Pm21LS6v9ZobH/VmNn/2JXUv9fWVL/WVlU/19Y + VP9hWFP/X1lU/19YVP9gWFT/XllT/1hiYf9ebmv/XFlU/19ZU/9fWVP/X1lT/2BYVP9hWFP/WllT/11a + Uf9fWFL/W2pw/1mtv/9Q1Oz/RtDj2Ua/0Dv///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQLzNEUfO3o1I1Or5Uc/i/1ie + rv9Uam//YFhR/19ZUv9dWVT/X1hU/15YVP9fWFT/X1hU/15ZVP9dWVT/XllU/15YVP9eWVT/XllU/15Y + VP9iV1T/X1hU/1FxeP9Zp7n/UtLm/0fU6PlFytuNQ7LGD////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFHwtApRs/hpUjU6PVQ1Or/UrrO/1eUnf9YcnX/V19e/11ZU/9fWFP/XVhS/2BYU/9gWFP/XlhT/2BX + U/9dWVL/V2Jg/1d3e/9Umab/VL/V/1LV6/9H1Of1Rc3epUW6ySn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUu5yyNFzN6BRdDj1UnU6v1P1O7/VM3n/1e/2P9VssX/Vam4/1Kk + tP9TpbT/Vaq6/1G0x/9Xwtr/Vc/o/0/V7P9J1On9RdDh1UXL3IFGtcQj////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BN6m4BUq6yCtCyNltRs3en0bQ + 4sdFz+HtRtHm/UjU6v9I1er/RtHl/UXO4e1G0OHHRs3en0LH2G1Jt8YrOKexBf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8oAAAAQAAAAIAAAAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAA////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFVxNMLSbzKQUfL3GtIzt6nRtDhwUfQ4fVG1Ob/Rdbo/0XW + 6f9F1un/Rdbo/0bU5v9I0uL1R9LjwUbM3KdFytprQ7bFP0q7yAv///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BVcjXEVPM2ltJ0uKtSdLj8UfW6f9M1er/T9Xq/1DV + 7P9S0/H/VNXx/1XV7/9U1O7/U9Pt/1TU7v9Y1fD/WdPx/1PT8P9O0+3/Stbq/0bW6v9G0OHxRM3drUnB + 0FtEuMcR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFXydkvTNDgmUfU5u1D1+j/Rdfr/1DW + 8P9Yz+f/WL/V/1iluf9bkZ7/VIOG/1R2d/9XbnL/Vmtv/1Vqbv9WbXD/UnR2/1GAhP9Zjpn/V6Gz/1i5 + 0P9XzOb/U9Xw/0bV7f9E1+v/RdLk7UfK25lJusot////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUe8yi1J0OCtR9Xo+0nW + 6v9V1O3/W8jj/1mkt/9XfoT/V2Jh/1ZXVP9bWVL/YFlS/2FYU/9fWFT/XllS/2BYU/9gWFP/XllS/15Y + VP9hWFP/YFlS/1xYUv9XVlP/WV5e/1l2ef9ZnKv/VcTa/1TW7f9K1uv/RtTn+0bN3q1Fvcwt////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTq+4E0bI + 2JNF1Ob5SNfp/0/V7f9at8z/TYGN/1ZcXP9kVlH/YVhU/11YVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xZVP9dWVL/Y1lP/1paV/9NdoH/WqvB/1HU + 6v9H1un/RdTn+UbL25NNs7sT////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BR8HPS0TQ4t9K1uv/VdTs/1y1zP9edn7/XllW/15ZVP9bWVL/XlhT/2JXVP9hV1T/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWFT/YVdU/1tZ + U/9fWVP/YVhS/2BYVP9Yam7/WKfA/1rS7f9K1ev/RdHj30bD00v///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFDuMgFRcXWj0XU6PtO1O//VMng/1OEj/9aWVf/YVdT/2BaUP9fWVH/XFlT/1xZ + VP9gWFL/YFlT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFhT/2BYU/9XVlP/XVpW/2JcVf9iWFL/ZFdV/1RaUv9Tdnv/WbzU/0zU7v9I1ej7RsjZjT+9 + zQX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFHrbwVRsrbuUfW6v9T0u//XK2+/1tgZf9dWk//YFtO/1ta + Uv9ZWVX/XldV/2FXVv9hV1T/XFlS/1xZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlhT/1xXU/9cV1L/YVxW/25pZP+Ig37/pKGg/8K/vf+WkY7/V1pT/1lbUP9iWVH/XllT/11a + XP9cnaL/WNLr/0nV6/9FzN25Ra+9Ff///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFGuMYbRc3e00jU7/9Q0e3/WpGY/1da + Vf9aWVT/YVdW/1lZVf9hWFL/ZFdU/19ZU/9eWFL/X1lT/19YVP9fWFT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9eWVT/XllU/11XU/9oYl7/fnp1/5qXlP+1s7L/1dTT/+3s7P/y8vH/39/f/8PCwf+joJ//enRw/2FY + VP9fV1b/YVhU/2FYUv9ZWlL/XldU/1N7hf9bzOX/SNTt/0XP4NNCvMwb////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHt8UbRs/g10XV + 7/9YzOz/WH6E/15XUv9fWVP/X1lU/15ZU/9fWVP/XllU/15ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/1xW + Uf9cVlD/ZF5Z/3Vwav+Oi4n/raup/8rIx//n5uX/9PPz/+jo6P/Ny8r/sa6s/5KOif94cm7/Y15a/1hS + Tv9ZUk7/XVdT/15ZVP9eWVT/XllU/15ZVP9eWVT/X1hU/15YVP9iV1T/Um1t/1LG3f9P0+//RNDh10a7 + yRv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFJrLwVRc3e00fT8f9L0uL/WHd7/2FYU/9gWFP/XVhT/19ZVP9fWVT/X1lU/19ZVP9dWFP/W1ZS/19X + U/9saWT/iYJ+/5yem//Dvr7/3t7d//Lx8P/u7e3/2NfV/7i2t/+fmZb/f3t5/29kXv9VV1T/XVRS/19Y + Uv9lXVr/WldW/4F0Zf/IxsX/0NHS/42Okv9gVlX/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFhS/1xa + Uv9dZmj/V8XW/0zS8P9GzuDTQq69Ff///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wE9q7wDRsnZsUbU7v9Xyun/U3R7/2FaT/9eWFL/XlhV/11ZVP9fWVT/X1lU/19Z + VP94c3D/t7Sx/9HQz//u7e3/8vLy/9/f3v/BwsD/p6Sg/4iIg/9uamj/Y1tX/1tXUP9cV0//a2JX/2hj + W/+JiIj/XlhP/15XVP+Ng3f/rbC0/3FmW//j4uH/gH9//3htZv/U2Nv/WVlT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllT/2JZU/9jWFH/WFxP/1tqc/9Xz+3/StPw/0XI2LE8p7UD////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BRMXVe0rV6/9R0Oj/V3R6/2FZU/9eWVL/XVdX/2JZ + Uf9gWVL/X1lU/19ZVP9fWVT/enVy/7CtrP+UkZD/d3Vx/2VeWv9YVlL/YVdQ/25mX/+RiYb/eXZy/5KP + i/97eXr/W1dW/7+0pv+FhIf/3N3Y/2NcVv+rqqj/eWxk/8fL0P+bkYT/n6ex/1xXVf9mWE7/t7Sz/1xc + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZU/9hWFP/XFZY/11ZUv9cWlL/XYGG/1bR7v9I1er/QsHQef// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSb7OPUbU5/dP0u3/VYWP/2NY + Uf9cWVT/ZFZV/1xZU/9gWVL/XVlT/19ZVP9fWVT/X1lU/15YU/9jXln/ZmJe/11ZU/+BdXH/k5SU/4R3 + df/f4eH/rqyv/8nIyf+XkIz/0tba/2tnY//Y19D/ZWds/9PKvP+EhY3/9PTz/6+xtP/c3dj/kIh9/7S6 + wf9eVlD/W1hT/2diXv9nWlf/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFT/X1dW/11ZU/9lVVX/W1lU/19Y + Uf9OlqD/UdXv/0XT5vdJt8c7////Af///wH///8B////Af///wH///8B////Af///wH///8BQKi3C0XR + 4tVK1fD/WKGt/11XU/9iWVL/W1dW/1xZU/9hWlD/XFhW/2BYVf9fWVT/X1lU/19ZVP9fWFT/jYB1/8zP + 0v9eVFL/rKSd/4+RlP/c08v/c3V6/11XVv9dVlH/X1ZQ/8S9tv/o6+r/4+ru/11ZV/+7r53/397c/5OX + nP/Uzsb/8vf0/2pqa//a1s//sbO3/5+bl//j4eL/fnx8/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhV/1xY + Vf9iWk7/X1hT/1xXV/9gV1T/X1pV/1+wvv9M0/D/RM7f1UOjrwv///8B////Af///wH///8B////Af// + /wH///8B////AUfJ24NL1ev/UcDX/1RdXf9kWFL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlQ/1xYVP/OxsL/xsfG/+3r6/9ycXP/3tvX/1tcYf9eWFX/XVlV/15WUP9xZ1z/6OXi/8vS + 2P9dV1T/nI+G//P19v9jY2H/bF9a/+Hg3f98fYH/ZV1U/5iSjP+fnZ3/dnR0/2JeW/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZUf9TZGf/VMnl/0bW6/9FxNSB////Af// + /wH///8B////Af///wH///8B////AUq4xSFG1ObzTtTt/1lze/9oV1T/WlpT/11ZU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZUv9bWFX/fG5i/+Pm5v/h397/XV5l/8K4rP+lqbD/ZF5X/4J4 + a/+3uLr/WlVU/6+lmf+2ubj/XVdX/3dsZP+nqrD/V1JN/2BZV/95cGf/hIOD/6Shof/FwsH/4uHh//Lx + 8f+mop//X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYU/9gWFL/Y1ZV/1SI + j/9L1e7/RdLk80mwvSH///8B////Af///wH///8B////Af///wFGzd2dStXs/1emvP9gWFH/WVtR/11Y + U/9eWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFX/YVlR/1tYUf+9sKP/2uTp/2BX + Uf9jXlj/wriw/9/d3P/R1db/enp6/1pUVf9jW0//bm5v/4F6df+Zl5H/tLO0/9nW1P/v7u3/7u/u/9/f + 3P/DwL//oqGf/4aCgP9taGT/YFtW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVP/YVhU/15ZUv9eWlT/XbfO/0fW7f9Gx9id////Af///wH///8B////Af///wFJtsQjRdXn91bR + 5/9UaG7/XFpS/19ZU/9kV1T/YFhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/2BY + U/9fWFT/a2JX/6Oiov9ZVlP/XlZQ/19bWf9zbWn/j4uH/62qpv/Kycj/5+bm//Py8v/m5eT/zMrI/66r + qf+Tjoz/dXBt/2VfWv9eWFP/XVdT/15YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/15YVP9fWVL/XVlR/1x2gP9S1O3/RdPl9UOtuyP///8B////Af// + /wH///8BRczciUfU7v9cprT/XVhT/19XU/9eWVP/XVlT/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19XU/9fWFT/bGhk/4eDfP+dnZ3/vby8/97c2v/u7u7/7ezs/9fV1f+5trb/nZmW/4F8 + d/9qZF//XlhT/11YU/9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1hU/1tZU/9fV1f/X1lT/19ZVP9fWVT/X1lU/15YVP9fWFT/ZVdT/1hZVP9ZWVf/W7rK/0nU + 7/9ExdWJ////Af///wH///8BP6y4DUXT5OVR1O//VHBz/1tXVv9jWFP/XFlS/2BYVP9fWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP+Mh4b/6+rq//Ly8v/i4eH/xcPB/6ekov+LiIX/b2tm/2Ba + Vf9bVVH/XlhU/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9fWVL/YVZX/19ZU/9fWVT/X1lU/19ZVP9eWFT/XVhU/2FZ + Uv9ZWVP/ZFVX/1OFiP9Q0/H/RdDh5Umhrg3///8B////AUPD1U1G1+r/VLvS/1xXV/9lVVT/YlhS/1pZ + U/9fWFX/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/a2Vf/4F6dP9kXVr/WVRR/15X + Uv9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9fWVT/XllU/15ZVP9fWVT/XlhT/19Z + U/9fWFP/YFhS/19ZU/9eWVT/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVP/XFhV/2RaTv9fWVT/X1lU/19Z + VP9fWVT/XlhU/1lZVP9hWFL/ZFhS/2BYVP9dXFz/Wsri/0XX6v9GuMpN////Af///wFIzt+fTdbr/1iP + nf9eWFT/X1lU/1tZU/9bWVT/YVdU/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11j + YP9Tamn/XldU/2FXWP9bWlL/XldV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hV1T/X1hU/2BX + VP9gWFX/X1lT/19ZUv9dVln/Wnt8/1OXoP9UWlj/YFdV/1taUf9eWVL/X1lU/19ZVP9fWVT/XllT/2ZW + Vv9XWlL/X1lU/19ZVP9fWVT/X1lU/19YVP9cWVT/X1hT/2NYUv9SW1L/ZFZR/1Wntf9L0+7/RsrYn/// + /wFFsb8JRNLk5VfV6v9ZaWz/XllU/1tZVP9cWVT/X1hT/2FYUv9fWFP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9TXFv/YMbX/2J3gP9aWk7/XFpS/2lXU/9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVlT/1xZUv9cWVL/XFlT/15YVP9jWFP/YGho/1K71f9Y0u//W6i2/15bU/9kV1T/XlhV/19Z + VP9fWVT/X1lU/15ZVP9kV1T/XldW/19ZVP9fWVT/X1lU/19ZVP9fWFT/YFhU/1tZVP9jV1P/VVpT/15Y + U/9YfoD/VdL0/0TO3+VGo68JT7bDMUbX6v9Wxdj/V1lU/2NYVP9gWFT/YVhU/2FYU/9dWVL/XllT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFdV/1mjuv9R0uT/UXh//1haUf9fWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllT/19ZUv9iWFH/YFlS/2BZUv9YWFT/UoKG/1rL5P9T0vH/TdL0/1TT + 7/9Roav/UVda/2BXU/9fWVT/X1lU/19ZVP9eWVT/XFpR/2FYVP9fWVT/X1lU/19ZVP9fWVT/XllU/2BY + VP9aWVT/Y1dU/2BYVP9dWVP/XGJf/07O7P9F1uj/Tay4MUjK22NI1ev/Uam7/2BWUv9fWFP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9VgYD/WNHy/1PI + 5f9kX17/XlhT/19ZVP9fWVT/X1lU/19ZVP9fWFT/XlhU/1xZUv9lWFL/Z1dU/15XVv9cW1r/W6Cu/1bS + 7f9I1uz/UdHz/1DV6/9X0fH/UtHy/2NhZ/9dWlP/X1lU/19ZVP9fWVT/X1lU/11aUf9gWFX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/15XUP9Rv9b/Sdbr/0jE0mNDzd2ZSNXt/1WP + nP9hWFP/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9hWFT/Wl5b/0/M6f9X1e7/VIWR/11ZU/9fWVT/X1lU/19ZVP9fWVT/X1hU/19YVP9cWVL/Y1hS/1pX + V/9Qam3/V7vP/1HS8f9X0u//T9Px/1LS8P9S0vD/UdD1/1jH0/9bWFr/X1hT/19ZVP9fWVP/XllT/19Y + VP9hWFT/YFhS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YU/9iWFL/Tqa5/0vU + 7P9Ex9eZRdDiuUvW7/9aeoH/YFdU/15ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1hU/19XVv9Wq7r/S9Tu/1Oww/9cWE//X1pR/19XVv9dWVL/YVlR/2JW + Vv9eV1P/XFhT/15YVf9Ug43/Ycvl/03V7P9Z0PH/TtXu/1DR9P9R0u7/UtLv/1HS8f9Woa//X1dQ/11X + V/9fWVT/XllT/11aUP9lVFn/X1hV/11ZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWFP/YldS/1GTn/9N1O7/Rc7ft0bO3+NS1O7/Wmxs/2BXVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9cWFL/VoKM/1LS8/9bzuT/WF9g/11Y + VP9eWlH/XFdW/1tXVv9cWk//X1lT/1xcW/9Ro7L/VNTt/0zX6f9Q0fT/U8/0/1fP4v9O0+z/UNPw/1PS + 8P9U1PD/S3mB/2RaUP9ZWVT/X1lU/15ZU/9hWVH/XVhV/1xZUv9eV1X/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1hT/2BZU/9Ygof/UNXw/0fM3ONI0eP3VNDq/1hmYv9fWFT/XllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9gWFX/X1lT/19ZVP9fWVT/WFxP/1ld + ZP9Wzen/UtXv/1SAjf9iV1P/XlpS/19XVf9eV1T/XVpP/1Nrcf9bvtP/U9Tx/1HT8P9O0fL/T9Tx/12w + vf9OkKP/VdPx/1TS7/9O0vH/V8zj/2BcW/9VW1L/YlVV/11eW/9eWVP/X1lT/19ZUv9iWVH/XVdW/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9dWVH/WnZ5/1HW8f9Hzd/3RtXn/1HO + 6f9ZX1//XlhT/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cW1D/ZFRZ/15a + Uf9fWVT/X1lU/1lbT/9eV1P/U7DD/07T8P9XrLz/XFlR/2FWV/9hWVL/U1pV/1+Fkf9czeb/T9Tu/07S + 8v9R0vL/U9Dr/1yPnP9RW1D/VbDB/1PQ9/9P1O7/T9Ly/1Kvvf9kVlH/ZFZW/1x5gv9fxNj/YHVz/11Z + VP9iWVH/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/XVpS/15u + c/9N1fL/RtLk/0XW6P9Tzej/Wl1d/1xYU/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVpS/2NXVf9ZW1D/X1lU/19ZVP9dWVP/Y1pO/1yEkP9P1PD/Ws7j/0xfYP9iWFP/Vl5e/1Sn + tf9U0u//UNLw/1LR8v9M0/D/XcbV/1tyd/9dWVL/V11e/1fN5v9R0+7/T9Pw/1HU8f9bhY3/XlhU/1Fk + Zv9Yx97/TdTy/1vL4P9gb3D/WVpS/2BXVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllT/19ZUv9cbXL/TdPx/0XW6P9F1uj/Vc3p/1teXf9dWVP/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tZU/9kWFP/W1pR/19ZVP9fWVT/Y1hS/1xbTv9bXmr/VNHo/1LU + 7/9TfoP/YW9w/1m+1f9Q0vD/WNLw/1PS8/9S0+//WK29/1heZf9aWlP/XVpR/116hf9U1fD/TtXs/1fR + 8v9X0Ov/WWJr/1peUf9Yssf/UNPv/1XQ8v9U0/D/Xo2W/2NXU/9cWVP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFP/Wm90/07V8f9F1uj/RtTm/1HP6f9bYmL/XlhT/15Y + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/YVlS/2FXVf9eWVT/X1lU/15Y + Vf9YWVX/XVdS/1S6wP9T0PP/Wrva/1PS4/9J1e7/VNXq/0nT8f9X0ef/WI2W/1xXVf9cWVP/Y1ZX/2JX + U/9Vpa//U9Hy/0vU7/9Q0/D/U7zK/1lWVf9Qoq//T9Tx/1DV6v9M0+//WrzL/1tYXv9WWVX/XllT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFP/X1lU/1l0eP9P1fH/RtLk/0bQ + 4vlR0+3/XGlo/15YU/9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVhU/1xa + Uv9iVlf/XllT/19ZVP9cWFT/V1pS/2JZUf9Wi5b/UdPz/0vU7f9W0fD/VNLz/1fT7v9Ywdz/UHB2/1xX + Vv9lWU//YllR/1xYVv9cWVj/VMjZ/1HR9P9Q0+//T9Tu/1aRnv9dlZv/V9H0/1XS8P9M0/D/WM3f/1lo + bP9eWVL/XFhV/2BYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/15Z + U/9dfoP/TtXx/0fN3/lHzN7jUdXx/1tzd/9bWVL/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15YVP9nVlT/VFxR/19ZVP9fWFT/YVhR/2JYUf9bbXn/U8Lb/1HS8P9O1O7/VdLt/0vV + 8f9YqL3/XF9Z/2NZUP9bWFb/WldZ/1tYVf9kWVD/VW90/1jV8P9P0vL/WNHw/1HS7v9Sprn/UtLw/0nV + 7f9X0+z/Us/y/1h5gv9cWVP/YFpP/2JYU/9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZU/9jWVH/T42X/1HT8v9Hy93jRc/guU3V7v9Xho7/YVhT/19YU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWFL/XVhW/1xZVP9fWVT/XFlT/1ZYV/9Xi53/VtHo/1HU + 7/9L1PD/T9Ly/1LP6P9Xi5D/WVVa/1tcTP9aWlL/YVhT/15YU/9dWVT/YVhT/1OXov9R0vP/UdTu/1HT + 7/9R0fH/UtPu/1DT7/9H1u//XdHu/1eLkP9eWFH/YVZW/1xYVP9gWlD/XllT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFP/YVhS/1efrf9I1e7/Rs3fuUPJ2ZlJ1ez/UZyq/2NW + VP9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlS/1xYVf9jV1T/WFtQ/1xc + Yf9crLv/UtLy/07T8P9Q1O3/UNHz/1DT7/9bx97/VFlZ/1xYVf9jVlb/ZFdU/19YUv9iWk//YFpQ/1dX + Vf9bu8//TdLz/0rU7/9O1O//UNH0/1LS7/9T1ez/VNLw/1SNpf9hWk7/YFpR/2BXVv9eWFX/XllT/15Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/1xVVP9Ztsn/SdTt/0bG + 1plHxdRlSNbr/1C4zP9cVVP/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xY + VP9hWFP/YVhT/11XVf9Yq7z/UdTt/0vV7f9T0vH/U9Tq/1Suvf9b0Oz/VNTt/1l1fP9eWlH/YFhV/1la + Uf9eV1b/YFdV/1taU/9YZ2P/UNPu/1jQ8f9W0u7/TdXr/1PS8P9K0/P/WNHs/1+Ol/9VWlP/X1dU/19Y + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + U/9XW17/U8vi/0rV7P9JwtFjTK25MUbW6f9WzeX/XV9c/15ZVP9fWFT/X1lT/19ZU/9eWFT/XllU/19Z + VP9fWVT/X1lU/19ZVP9eWFT/YllR/1xaUf9jcHz/U9Ts/1XS8f9Q1e7/U87n/1OFkv9TWFP/Wb3S/0vT + 8v9anKz/ZFlP/1tZVP9hWFP/YlhT/1ZbUf9kVlf/XImQ/1DS8P9Q0/D/SNXv/1bT7f9O0+//V9Ds/1aH + jv9eWFH/YlhR/2FYVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Y + VP9eWVP/X1hT/15YVP9eWVT/W3By/1bV7/9F1en/S6y3MUqlswlFz+DlU9H1/1V6ev9cWFX/Y1ZW/15Z + U/9fWlH/XlhV/15YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/UJut/03T8P9P0vD/Xczo/1pt + ef9dWVH/YllS/1iWnv9Q0vT/UMba/15YVf9bWVP/XVdW/2JZT/9eW07/W2Js/1K81P9O1O//TdTv/1fQ + 8f9O1PD/V8jf/1l3d/9ZWFb/XVlT/15YU/9fV1X/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YVP9fWFT/WltQ/2JYU/9eV1b/WlhU/1SVnf9V0fL/Rc7f5Uqjrgn///8BR8rZn0zV + 7f9WobL/X1dS/1daU/9bWFT/YFhU/2BYVP9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1Wq + v/9T0/D/TtTu/1OSm/9aWVT/YVlR/1pYVP9dbXD/VNLv/1LV6/9WcHf/X1lT/11YU/9WWWH/VpWg/1XR + 4f9L0/H/U9Lv/03U7/9Q0/D/V7TG/1ZkZ/9hWFD/W1hX/11ZU/9gWlH/YldU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/19YVP9dWFP/YldU/19XU/9Wu8//SdTt/0bI + 2J////8B////AUK7yU1G1+v/Vcfj/19aWv9dWVL/XVhU/2FWV/9dWVP/X1lT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9Wnq7/T9Lz/1PS5/9YYmH/ZVpM/1laUv9gV1b/W1VZ/1O/2f9Z0u7/UZul/19Z + Vv9TjI3/V8fc/03U8f9W0u3/T9Lx/07U7v9O0/D/V9Ls/1VhZv9iWVD/XVdX/2BZUv9fWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/1xZU/9jVlb/WFpT/2JX + Uv9hamv/UNPw/0XX6v9Ht8RN////Af///wFHo6sNRtDh5U/V8P9XgIn/ZVZV/11aUf9iVlf/WllT/19Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X3WD/1HU7v9OyNz/X1VV/2NXVP9gV1X/XVxN/11d + Tf9amKX/TdPx/1jF4v9Qxtb/Ttft/1rP9P9N0vH/VNPt/0/S8v9R0+//UtPv/1W3zf9dWFX/YFhT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + U/9bWVP/Y1dV/1laUf9cV1b/Vpyo/0zU7/9GzuDlTaCqDf///wH///8B////AUfE1olI1uv/V7jH/2NV + V/9XXE//Y1dU/11ZU/9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RTWv9OtcH/V8ja/1lZ + Uf9dWVD/Y1RX/1xZVv9cZGj/WKKy/0vV7v9X0fL/S9Pw/1HP9f9V0vH/V9Pu/0/U7v9O0vL/UNLz/1bU + 7f9SkqH/YVZU/2JYUf9gWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWFP/W1lU/2BYU/9dXE7/XFxf/1fM4P9K1uz/R8LTif///wH///8B////Af// + /wFIrbwjRdPm91HR8/9WeHP/X1dT/2NWV/9bWVP/XllT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9ZWVT/V2Fi/16/yv9aqsL/WJqt/1Ohr/9ct8z/UNHs/03T7/9U0e//T9Pv/1DT7v9P1+v/XbzF/02T + p/9T0+3/UdTu/07S8/9Y1+v/Um1w/2NXVP9dWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhT/1pYVv9fWVL/YVdT/1WSmf9O0vH/RdLk90uq + tyP///8B////Af///wH///8B////AUXI2Z1I1ez/UrbF/1pYVv9jWFL/XVpR/15ZU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/V1lU/2dXUv9cXGP/TK/E/1PT8P9O0+//UdLw/0rU7/9P1PD/TtPx/1jR + 8v9Ty+r/VniB/1hXV/9UlqT/VNLy/1nR7/9O0/D/XMPZ/1pZVv9eWVL/XVhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9aWlD/YlhT/1te + Yv9Wytz/Rtbq/0bF1Z3///8B////Af///wH///8B////Af///wFGsLshRdPl80rU8f9ef4b/WFpS/2RZ + Uf9gWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FYVP9cWlT/XVlQ/2VYUf9UgoP/WLXD/1vH + 3f9dytz/ZLrS/06ps/9Q1O3/WNTs/1Voa/9dWU3/V7vO/1HS8/9I1PD/UNLw/1WgsP9kWE//W1lT/19Y + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWFT/Y1hR/1ZaUf9Zl6v/S9Tu/0TR4/NKrbch////Af///wH///8B////Af///wH///8B////AUjE + 1YNG1ev/ZMTa/1BeYv9gWFP/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XFhU/1pZ + VP9iWFP/YVdT/1ZVVf9RV1z/V1pf/1tSWv9ZXFb/XcTe/07T8P9cj5z/VGli/1vQ7f9P0vD/T9Pv/1PU + 8v9Td4D/X1tP/2FXVv9iWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllT/2FXVv9PcHH/XM7t/0XW6v9IwdGB////Af///wH///8B////Af// + /wH///8B////Af///wE9pa4LRM/g1U7T8P9XpbH/YlVV/19YVP9fWVT/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2JXVf9nVlX/YVlS/1xbUP9fWlD/YFpQ/1laUf9aXU//XVdT/1uftP9O0vH/V7nM/1OJ + kf9T0/L/T9Lx/1DT8P9UzeL/W1li/1xbT/9jV1X/Y1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/XllU/15YU/9fW1r/WL3M/07U7f9FzN7VTKCvC/// + /wH///8B////Af///wH///8B////Af///wH///8B////AUa8zD1G1Of3UdPr/1aDjP9dV1b/XFhU/2BZ + Uv9fWlH/XVlT/15YVP9fWVT/X1lU/19ZVP9cWVP/WFpT/1xZUv9fWFP/XlhV/19YVf9mVlb/XltQ/2FW + Vv9XeXz/Udbv/1LR7P9YutH/TtPy/07T8f9T0vD/Xa26/1ZXVP9eWlH/XllT/19YVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlU/1lZVf9nV1L/XVpT/2NXVP9UWVL/Wp+q/07S + 8/9G0+b3SrbCPf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRcXVe0rW + 6/9azeP/X25x/1daUv9eWFP/WldX/1xZU/9fWVP/X1lU/19ZVP9fWVT/XVlT/1xZU/9iWFP/Y1dU/2BX + VP9fWFT/X1dW/15YU/9gV1X/V15Y/1jI4f9R0/D/VdPw/07T7/9Q0+//UtTw/12Fjv9ZW1L/YldT/15a + Uf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZU/9gWFT/X1dX/1la + U/9iVlT/WIeM/1XS7P9H1er/R77Oe////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AT+uwANHytunRtbt/1bH3P9ZZWv/YVlQ/1xZVf9iWVP/X1lT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWlH/YVpQ/1taUf9eWVP/YVhS/1lYU/9bpbj/UtLu/0/S8/9R0vH/U9Pu/0/S + 6f9bZGX/YllR/2JYVP9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVP/XVlT/1lZVP9iWVD/UnmB/1fO7v9H1O7/RsXVp0KktAP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BPKi2D0fO38VK0+7/V8XV/11laP9cWlL/XFhS/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9fWFT/XVpS/2RXUv9aVlb/XH2C/1LV + 8v9P0+//TtTu/1DT7/9YuM//X1dR/15YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XVhT/2BYU/9hWFP/WHd7/0vS4v9H1PD/Rsnaw0qksQ////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFFtcETRNDhy07U + 7v9Sxtz/Um1t/2JXVP9eWFT/X1hU/15ZVP9eWVT/XllU/15ZVP9eWVT/XllU/19ZVP9eWVT/XVhU/1ta + Uv9jWFH/ZldT/1hdXf9Xy+T/TtPu/1DX6P9Q0fP/WZGg/19YU/9eWFP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/XllU/19ZU/9eWVP/X1lU/19ZU/9eV1P/WH6E/1jM7P9F1u3/Rszcy0io + sxP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AT62xhNHzt/FSNXs/1vL5P9Te4T/XldU/1laUv9hWFL/YVhU/19XVv9hWFT/YlhS/2BZ + Uv9dWVP/YFhU/2BYVP9cWVP/XFlS/11ZUv9bWFH/WImU/1XS7v9Y0fL/TdD0/1hwbf9eWFP/XlhT/19Z + VP9fWVT/X1lU/19YVP9gWFT/X1lT/15YUv9fWVP/ZFdT/2FYUv9ZWVX/YVdW/1pZVP9XWlX/WpKY/1DR + 7f9H1e7/Rcraw0asuRP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BR6i4D0XN3qdI1ev/VtLq/1ydov9dWVz/XllT/2JZ + Uf9ZW1D/V1pT/2BXVv9kVlb/XlhV/1xZUv9eWVP/XllU/1xZU/9bWVP/XFpT/19VVv9XlaP/UdTt/1zB + 2/9cWlL/XllU/19ZVP9fWVT/X1lU/19ZVP9cWVL/XFlS/2FXVP9hV1b/XldV/1lZVf9bWlL/YVtO/11a + T/9bYGX/XK2+/1LS7/9G1un/RcbXp0qjsg////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE5vMwDScjae0fV + 5/dM1e3/WbzT/1N1ev9UWlL/ZFdV/2JYUv9gWVL/XVhV/1pYVf9fWVP/YFlT/19ZVP9fWFT/YFhU/2FY + VP9eWFP/V1lV/1mKkf9em5//XVdV/19YVP9fWVT/X1lU/19ZVP9fWVT/YFlT/2BYUv9cWVT/XFlT/19Z + Uf9gWlD/YVZT/1pZV/9ThI//VMng/03U7v9G0+b3RcHSe0CtvAP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFHw9M9RdLj1UnV6v9Z0uz/WKa//1hqbv9fWFT/YFhS/19ZU/9bWVP/YVdU/2FY + VP9fWVT/X1lU/19ZVP9fWFT/YFhU/15ZVP9dWVT/WllT/1lZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FX + VP9iV1T/XlhT/1tZUv9eWVT/XllW/191ff9ctcz/VNTs/0nW6/9FzuDTRrvJPf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AVKutg1Hy9uDRtTm80bX6f9Q1Or/WqvB/012 + gf9ZWlf/Y1lP/11ZUv9cWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/15ZVP9eWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9dWFT/YVhU/2RWUf9WXFz/TYGN/1q3zP9P1ez/SNfp/0XS5PNFxdaBUKSvDf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUC8 + yiFIzN2dR9Tm9UrW6/9U1uz/VcPa/1mcqv9Zdnj/WV5e/1dWU/9cWFL/YFlS/2FYU/9fWFT/XllS/2BY + U/9gWFP/XVlS/19YVP9hWFP/YFlS/1tZUv9XV1T/V2Fh/1d9g/9ZpLf/W8jj/1TV7f9I1ur/RtPm9UbJ + 2J1AscIh////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUq2yCNIyNqJRdHj5UTX6/9F1u3/Utbw/1fM5v9YudD/V6Cy/1mN + mf9Rf4T/UnR2/1ZscP9Vam3/Vmpu/1ducf9UdXf/VIKF/1qRnf9Ypbn/V7/V/1fP5/9P1u//Rdjq/0TX + 6f9F0OHlRMXWiUixwiP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AT+vvw1LvctNQsvcn0bP + 4OVG1un/Sdbq/03U7P9S0+//WdPw/1fV8P9T1O7/U9Pt/1TU7v9U1e7/U9Xx/1HT8f9P1ez/TtXq/0rW + 6v9H1uj/Rs7f5ULK2Z9JusZNQau8Df///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFOsL4JOq29MUPF1mNIx9eZRc/guULM3ONCzuD5RNPl/0XW6P9F1uj/RNPl/0LO + 4PdDzNzjRc/fuUfH1plCxNRjPK27MUytuwn///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAIAAAAAAAQAAAQAgAAAAAAAACAEAAAAAAAAA + AAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AVWiqxtTtsFJS8nYV0jK2F9KvcqrS8XS40nL + 2vVH0OD7RdPl/0XV5v9F1uj/Rdfp/0XX6f9F1+n/Rdfp/0XW6P9F1ef/RdPl/0bR4ftKzdz1T8vY41HG + 0qtKzNtfSMXUV0yvvElQnacb////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AV+5xBFPy9wdTrG+UUfB + 0K9Fzt+5Rs7e20fQ4f1G1OX/Rdjq/0TZ7P9E2Ov/Rdfq/0XX6v9G1+r/Rtbq/0bW6f9G1un/Rtbq/0bW + 6f9G1un/Rtbp/0bX6v9G1+r/Rtfq/0XX6v9E2Or/Q9jr/0TX6f9F0+T/Rs/g/UbN3ttDzd65QbrLrUas + uE9IxtUdTKexEf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BYcfSA13EzEtKy9pzUcjXy0rQ4f1F1+n/RNjp/0TX6f9E1+n/R9bp/0rW6v9K1ur/Stbt/0vU + 7/9N0vD/T9Hw/1DU8P9P0/D/UNPw/1DT8P9P0/D/T9Lv/1DT8P9Q0/D/T9Pw/1DU8P9V0fH/U9Hw/1DU + 8P9N1e//S9Tt/0nV7P9H1+r/RNfp/0TX6f9E1+n/Rdfp/0fN3f1JwM/LQ8XVc0KotktIr7wD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFexNINU8nYNV3I1JVM0N/TR9Tl9UTX6P9D2Or/Rtfq/0jW + 6f9M1ev/U9Pr/1bT6/9W1ev/VdPq/1bU7f9V0+7/VtPy/1nV9P9a1vb/Wdjv/1rX7/9a1+7/Wdbt/1jV + 7P9X0+v/WNXs/1jV7P9Z1u3/Wtnw/2PW8f9j1fL/YNLy/1rR8v9Y0fL/VtDw/1LS7v9Q0+z/T9br/0rW + 6v9G1er/Rtfr/0TZ6/9E1uf/RNLj9UfL29NLtMCTRLvKNUWtuw3///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFnxM4PXcXSd0zQ + 4blJ0uT/Q9fq/0TX6f9F1ur/SNTt/0/V7v9W0+r/WdPq/0fU8P9J0vP/TdL1/1XS9/9d0ff/Xsnr/1m8 + 1/9Rr7//Sqar/0Wdn/9ajpf/VomS/1KEjf9PgIr/T3+J/1CAiv9PgIr/UIKL/1SGj/9Xi5T/Rpah/0eg + rf9Qqrv/VrnO/1zG3/9f0e3/V9L0/1PS9v9O0vb/S9H3/1HQ9/9Sz/T/T9Lw/0vU7P9G1un/Rdfp/0TZ + 6/9Ez+D/Rsvdt06zw3dNqbgP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFcxNMvVcvbh0rP4eVF1uf7RNbo/0XX6f9F1+j/Qdfl/0Tb6f9F2ez/Stbw/1PZ + 9/9U0u//a8XU/2a4xP9ioan/WYWJ/1Zsbf9YYl7/XF1Y/1tbV/9aWlb/VldU/1lWVP9ZVlT/W1ZU/1xV + VP9fVlX/XFNS/1tVU/9aVlT/WlZU/1tXVv9SWVD/VltT/1hbVf9ZW1n/V11f/1Jma/9TeYH/W5Od/2Ot + uf9sv8z/V9Df/1jb7v9S2vD/RNbv/0LV8f9D1e3/Rdbr/0XW6f9E1+j/RdXn+0bM3OVIvc2FTLPCL/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AVG1vwVOyNYfUMrYoUvS4+1E1un/RNfp/0jX + 6f9L1ev/TNLw/07T8P9W0/L/Yc/q/3DM4P9xt8T/Wo6V/1B0ef9WZGb/SVZW/0tUUf9UWFP/WFhR/15a + Uv9hWVL/YllU/2JYVf9iWFb/XlpT/11ZU/9fWVP/YFhT/2JYU/9hV1L/YVlU/19aU/9dWFL/XFhS/2BY + Vf9gWFT/YVlT/2BZUf9dWVH/WVZQ/1ZXVP9PVVP/SlVV/1JcYP9QbG7/XIWH/2ujrv92xtj/atHo/1fT + 8P9J0+//SdXv/0rV7f9H1un/RNjp/0XY6v9Hzt/tRr/Pn0nE0x9LsLwF////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFGpLIlSMPRh0jN3fNE1+n/RNfo/0jW7P9J1Or/UNbr/1fU6v9l1+//ac3k/1+vxv9SjZ//P2d0/0BX + W/9RXFr/V1lU/2FWU/9jWVX/YllT/2BYUv9hWlP/YFlS/2FZUv9gV1L/YVdT/2FYVP9dWVL/XVlS/11Y + Uv9fWVL/YFlT/2BYUv9gWVP/XllS/11ZUv9dWVL/YVhW/2FXVP9hWVP/YVpT/2FbUv9hWlL/YVlS/2FY + Uv9hV1P/Y1ZV/15ZVf9TV1P/S1pa/z5eZP9HfIf/V6S0/1/E1v9m2O3/WdXt/1TW7P9L1O7/SNTs/0XX + 6P9E1+n/SM3d80bE04VAqLMl////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFCsr8RTbC9dUbM3eNE1ef/Rdjq/0bW6v9M0/D/UNHy/1XV + 8f9S1+n/WcXU/02Vnv9Fa23/VFpW/15UTf9nV1D/ZVhT/15ZVP9cWVX/X1lU/15ZVP9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WlpU/1xaU/9fWk//ZFpO/2BX + TP9XWVD/SWRk/0R/h/9Us8H/V9Lj/1vT9P9Z0/f/UdHv/0bW6v9F1+n/RNbo/0bO3uNNtMB1QrbDEf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTq+4SUTI + 2MVE1ef/RNfp/0bW6f9N1+r/Stfm/0zY5/9W1+v/XLDJ/2d/jv9EWWb/S1Rb/1lWWP9lWFb/Z1ZT/2ZX + VP9jV1T/XVhW/1tYVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9aWVX/WllV/19ZUv9jWVH/ZllR/2ZWUv9hVVf/WFdd/0ZRXv9dbH3/W5yw/0/M + 2/9K3+n/Qdjm/0/V7P9H1er/RNfp/0TW6f9Fy9vDTbO7Sf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BT6avG0O3yYlE0OL1RNfo/0TY6P9N1uv/TtPw/0nT8f9b0en/crfH/2R1 + e/9cXV//X1ZW/2BXV/9gWFX/YVlV/19XUf9gWFL/YlhU/2JXVP9iVlb/YlZW/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2JXVf9iV1X/X1hU/15Z + U/9eWlL/YVlS/2RXUv9kVlL/Y1dV/2FUVf9ZWlX/Umlk/2aZqP9lxuT/TNP4/07S9/9L1O3/R9fp/0TX + 6f9F0uPzQbvNiUqmsxv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUO6yzVGxdTbRtfp/0XX + 6f9Q1O7/T9Tu/1XT7P9l0+n/c7fL/1l7iv9KV17/WlRW/2BaVP9cWU7/XVlQ/1tbU/9WWVD/V1tS/1lZ + U/9dWFT/YVdU/2VXVP9lV1X/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/ZldU/2VXVP9eWFT/WVlU/1ZaVP9YWlT/XVxT/1xZT/9gW1P/YFxS/2VX + VP9eVFT/SVNZ/0plc/9knLD/c83k/13V7P9Q0ev/Tdbv/0XX6f9H2Or/RsfX2UXC0jP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUCquA1IssB9R87g70TX6f9G1ur/T9Xw/1bO7v9g1vL/Y8fc/0qSn/9HWWL/YVZa/2FT + U/9iWFf/XVlR/11cTf9cWk7/WVpQ/1dbUv9WWlL/WFlU/1xZVP9gWFP/ZFhT/2RYU/9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9mWFP/ZFdT/11Z + VP9YWVX/VVlV/1dZVf9YWlP/XVxT/1xaUP9aW03/ZlVV/2hUWP9gWVf/WlZU/01YWv9AcXn/YLXG/2jV + 7/9Y0fH/StPw/0bW6v9E1+n/SNHh70i2xH1Gr78N////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFDuMgPRb/Pr0TV5/9E1+n/R9Pu/1DS + 8/9U0+7/Ttbn/0yquf9FZGz/WFZW/2FaUP9gW0//Y1hR/1xYU/9dWVP/Z1pQ/2RZUf9jWFT/Y1hU/2FY + Vf9fWFX/X1lU/15ZUv9eWVH/XlpR/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YUf9gWVP/XVhT/1lVUv9YUlD/XVZT/2lfXv9sYV7/Y1hS/2Ja + Uf9lVlb/ZlVX/2JZUP9UXkz/VF5N/1daT/9VVl7/TYWV/1fG2/9P1O//U9Tx/0/V7f9E1+n/RNbo/0rC + 060/vc0P////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BT6ayM0XD1M1E1+j/Rdfp/0XS7v9Kzvr/UNP4/1DM2/9jgo3/XVhV/1teTf9YWkr/XFtP/1xZ + VP9bWlL/YFpR/2JZUv9hWFX/Y1dV/2RWVv9lVlf/ZlZX/2RWV/9hV1T/XVlT/1hbUP9YW1D/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9eWFP/W1RO/1dQ + Sv9WUEv/XlpY/2lkYv99eHX/m5aS/52Yk/9kXFr/X1dW/1lcTP9ZXUv/X1lS/2lWVP9jWFP/VVxP/1Vd + UP9aWFP/U2hw/1+wvP9O2+n/RdXw/1nO7/9G1uv/RNfo/0PG2M1LprIz////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUetvFFFydrnRdjq/0bW6v9M0+7/WtXs/2DU + 6/9zrrr/Xmhr/1FRV/9eVVr/X1VV/2JbUP9iXUr/aVxL/2RaT/9NWlj/SlpY/1ZZVP9YWVX/WlhV/1xY + Vf9eWFX/YFhU/19YVP9eWVT/XVpS/1xaUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/1pV + Uf9ZVFL/WlZR/1pWUf9eWlT/Z2Ne/3Juaf+OioX/ramk/8fFwf/d29v/7Ovr//Tz8//8/Pz/6Ofl/21r + Zv9VWlX/TltV/1BbU/9cW1D/X1xO/15bTv9kWFT/aVRZ/2pTWv9cVVX/Wl1W/2eOjv9nzd//W9ft/1LQ + 8P9G1+r/Rdjq/0XM3OVFr71R////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFCtMNhR8zc90XX6v9E1O3/RdLz/1PS7f900eL/XJqh/0dbWv9eWFT/WllX/1xXV/9hVlf/Y1hU/15Z + Uv9cWlL/XVpR/2FYVP9gV1X/XFlU/11ZU/9dWVP/XlhT/15YU/9fWVP/X1lU/19YVP9fWFT/X1hU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/19Z + VP9fWVT/XlhT/19ZVP9dWFP/XFZR/19ZVf9oZGD/bGlm/4J/fv+dnJv/vLq5/9DPzv/q6ej//Pv5//// + ///////////////////8+/v/7Ovr/93b2v+9ubf/b2ll/1xZU/9cWFb/XFdW/1xZVP9dWVL/YlhS/2VW + Uv9iV1X/XldU/1taU/9jWFH/UVVU/0Z2f/9wwtL/YtDr/07W9f9F0+v/Rdjq/0fN3/dDt8dh////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BRrjGZ0XP4PVE1+r/TdPu/0vT9/9I0fL/Y87j/0uB + i/9LWlT/XFpT/11aUv9YWlH/W1lT/2BWVf9iV1f/W1dY/1FZWP9YWVT/cFdR/3JWUv9iWFT/YllS/2FZ + Uv9gWVL/X1lS/19ZUv9fWVT/YFhU/2BYVf9gWFb/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9eWVT/XllU/15ZVP9fWVX/V1FO/2BbV/9rZmL/eHJv/5KPiv+uq6j/xsTC/9zb + 2v/w7+//9vb2//v7+/////////////z8/P/u7u7/4N/g/8/Pz/+xsbD/lJGQ/4B8e/9qZWT/W1ZT/1tV + Uf9iWFP/YlhS/2hWVf9mVlb/XVdX/15XV/9lVlb/ZVlU/1lZT/9WXlL/VVlP/2NaVf9gVlf/UlVX/0Vi + bP9hs8P/Wtbx/03S8v9I0+//Rdfq/0bQ4fVCvMxn////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BR7bEA0m6 + yGtFz+H7Rdfq/0bS8v9Yzfz/XM3y/17M1v9DdnT/Y1ZU/1ZbUf9YWlL/X1lU/19ZVP9fWVT/X1lU/15Z + U/9fWVP/YFlT/19ZVP9eWVT/XVlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/1xWUf9YUk//WVVT/2hjYf91cW//iIWC/6un + pv/FwsH/2tjX/+zq6v/9/Pz///////7+/v/9/f3//Pz8//j39//p6OX/19bT/7y5t/+empj/g4B+/3Ju + bf9dWlj/VVJQ/1VRT/9VUE7/WlNR/1pVUv9fWlX/XlhU/19ZVP9eWVT/XllU/15ZVP9fWVT/X1lU/15Z + VP9eWVT/X1lU/19YVP9fWVT/XllU/11WVP9jWFf/bFhT/1hZWf9Ppaj/Vtbq/0vQ9f9K1fX/Rdfq/0PR + 4vtEvsxpRbvIA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFHt8VnRdDg+0fY6f9H1uz/Q9bz/0vY8/9iv8//VGRw/2pT + WP9ZV1L/aFZT/2ZYVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11XUv9bVVD/WVRO/1pUTv9YUk3/ZF5Z/29p + ZP+Ae3X/m5eR/7m2tP/Pzc3/4uLh//X19f/6+vr//Pz8///+/v///////Pz8/+vr6//b2tn/ysnI/62q + qf+Ni4j/enZ0/2hjX/9bVE7/W1RO/15WUP9fV1L/XldS/19YU/9bVE3/WlJM/1tTTf9aUU3/XFZR/19Z + VP9gWlT/XlhT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hW/2BY + V/9ZVFD/UFxW/1BbXv9bnKn/Tdfq/1fR8f9Y0e3/Rdfp/0TR4vlGu8ll////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFLqboDSLHDYUXP + 4PVF1+r/RNPy/0HV7v9H2ef/Zr7I/1JiaP9hVlf/ZlhU/2RVUf9jWlf/XVZR/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11YU/9eWFT/YFhT/11YUv9dV1L/YFhT/15V + Uf9UV1H/ZWVh/350c/+Ti4v/r62t/8zNzP/e3dz/7u3s//z7+v///////v////z7+//3+Pf/8vDy/+Tk + 5P/Zz8z/trSz/5OQkP99d3X/eWlc/1RWXP9SVEv/YE9R/1NUTP9XVkz/XlRT/2JYT/9fV1P/WldZ/1tX + Vf9oW0r/Z1lI/4J/e/+ioKD/srGx/5OYmf9qbWz/U1JY/2FVWP9iWFX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFT/X1ZT/1teVf9aWVH/WFtV/0tVVv90kJ3/Wdnm/1DS + 7P9N0fH/Rdfq/0XQ4fVHtMVhRKu6A////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUmsvFNGzN33RNfp/0nQ8v9M0fj/Sdfr/1zCyv9GZWf/YVdV/19W + T/9eXFP/X1ZR/1taVP9bWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1pV + Uf9ZVFH/V1JP/1dRTv9oW1j/c3Nt/4SDf/+mnpv/wry7/9LV0//m6Ob//fr6/////////////v////7+ + ///9/Pz/6efn/9XV1P+/wL3/qaCe/4OEgf9zbnL/YV9d/11RSv9YUk7/WlVS/15YVv9pWVD/U1hY/11a + Uf9kVVf/XVpU/1lbUP9tWlj/dG1s/15aWP9aWFn/XFdT/2pdT//JwbX//Pz7///////+/v7//////+7v + 8P+JipX/WlFV/2JYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2Ja + Vf9gV1P/VlZO/2JaU/9dWU//XlpU/1dZW/9SkZr/Ydns/1HQ9v9L0e//RNfp/0fN3vVCrr1R////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFIoawvR8nZ5UXY + 6v9F1u//T834/13R9/9Nvsv/Q2dr/25YVP9mWE7/XFxR/1RZUf9bWlX/VlpS/1paU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2BbV/9wa2f/f3p4/5KQjf+1srH/1tPS/+bj4//v8fD/+fn5//7+ + /v///////P38//b29f/u7ez/4ODc/83Nyf+rrqv/jIuJ/3lxcf9tZWL/X1lV/1hVTv9bVE7/VlVM/1xV + Tf9cWE//XlVN/1tWTv9hWVD/V1VT/1pUV/9ZXFD/YVdS/19ZVP9eV1b/V1hP/8K0p//h4eT/Z2hs/15X + Uf9kW0//zMbB//39/P/U1NP/f39//3Jubv+glIv/+vfy/6y1wP9TVFX/YVpR/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlT/2FZUv9gWlb/YlVR/2ZbUf9eWk//V1tQ/2lS + Wv9Hm6n/WNj0/07Q8/9M0+//RNfq/0bK2+VFnqkv////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BPau8CUm/z7FD1+n/R9fs/0fN9f9T1fH/XLTD/1NUYP9oV1T/WlxM/1ld + Tf9dWU//alRW/2tTVv9dWFb/XFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9oYl7/uba1/+7s + 6v/+/fz///////////////////////r7+v/k5OT/ysnJ/7W0s/+YmZb/fHt4/25pZP9gXFT/VFJL/1RR + Tf9YVlL/XVZT/2FYVf9fVlL/WldU/2BaUv9gWVL/XVhS/2dcS/+KgHT/e3x+/2lgUv/EwLv/rbW7/1tY + R/9hVlX/YVdQ/1tWWP9XVk//w6uY//P5+/95fYf/X1NJ/6KVhP/+/v3/xMfM/1lYWP9VU1H/XFZV/3Rc + S//q5N7/wtHb/1NbWP9gWk7/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9dW1P/W1lQ/2xXVf9mVVL/XFpQ/1ZcTv9YXU//X1ZW/11jdP9fxtr/V9D0/1PL+/9E1uv/RNfo/0W7 + yq88p7UJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUSdqQc/usqPRdbo/UXW + 6f9I0+//Ttb1/2K5yP9QYGT/YldY/2NaUP9bWU7/XVtT/1xXVv9dV1j/Y1dU/2ZZTv9jWVD/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2ReWv+4tLH/9vb1/+vq6f/a2Nj/yMbF/6inpv+JhoL/cG1p/2Rg + Xf9ZWFT/VVJP/1tUUP9eVk7/XlZO/1pRSf9dU0z/W1NP/1ZRTv9WUk7/Yl1Z/3x2b/9mZWj/XVZR/2JZ + Uv9XV1j/fmxZ//fv5P/AyNH/YlVI/+bd1f/S4eX/aWFT/1hRT/+RgXv/aXFz/1RPTv+wlYD/+/v4/4qS + nv9eU0b/1cq4//P4+v9lbn7/WFVU/1xZVv9eWFX/c1hE/+bZz//g6vD/VmBc/2BaTv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2NZUv9nWVD/YldW/1pXWP9bV1f/W1tT/1lb + T/9fWlD/WVVU/1pxdv9sx9n/U9P3/1LS8f9H1ur/RdXn/T+1w41AmKIH////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BQbG/XUfU5fdG1un/WNTx/0jV6f9owdP/T2Jn/1tWVP9YXFX/aFpS/2JW + UP9gWVf/XFdX/19XV/9cWVP/Y1tO/2JaUP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhU/29q + aP95dXL/Z2Jf/11ZVv9TT07/VVFQ/1hVTf9gVU//YFdT/1dXUf9cWVP/ZlpT/2NXTv9mXlX/nZWS/7+4 + tv/Oxsb/tbKw/4KCfv94eXP/8vLv/87Q1v9cWVr/X1ZU/1VXWv+KeWb//Pz2/5SkvP9cT0b/1Ma4/+Tu + 8P9samn/XFVQ/97W0f/W3+D/Ylth/4BwZP/08u//pa+7/15USv/d1sf/1tzj/01Zaf9eWVb/X1hU/15Y + Vv9rWEf/mYh+/36Gjv9aXFf/YVpP/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/YVlS/2JZUf9bWFb/X1ZZ/1xWWP9fWFf/YVZR/2RZUP9UX1T/VVdQ/1t3ev9pzOT/SdTt/1DU + 7/9G1+r/RdHi9z+rt1v///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUavwCFIzN3hRNjq/0vT + 7f9X0O//YM/e/0Z0ff9fVlT/ZFdS/1VZUf9kWVX/ZlVU/2JXV/9cWFb/XlhV/19ZUv9eW1D/XlpR/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFP/XVdR/11YVP9ZVFH/V1NP/1tXVP9dWFX/XltR/2NW + T/95bmn/kpOR/2VjYf9hUk//cGFc/9DMyP/9/Pz/+Pb3//Lv8P/7+vr//Pz7/6ino//Ev7v/+fr6/4iQ + lv9QT1T/U05E/6SUg//3+/z/fYma/1ZOSv+7qJL/8vf4/2p4iP9+bGf/9fLv//v+/v+7vMP/ZGBf/+7r + 4f/F0Nr/VU5J/9jQv//m6/L/WWJw/19YUv9gWVH/XlpX/19ZUP9fV0z/Tk1R/2BWVP9kWVL/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/XVhU/19XVv9eV1b/XldW/2JX + WP9lVVT/YlpT/1NaUP9iXFH/VFRQ/1GMmv9S1uX/UtPw/0rU7P9E2Or/RcjX4UektSH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFEmaYRSsPUvUTX6v9K1ev/TtDv/07X6/9Wfov/WVRU/2ZZUP9mWVH/Y1pW/1RX + Vf9mWFn/Y1VS/19ZUv9YW1H/aldS/1hZVf9ZWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + U/9gWlT/XlhS/3l0b/+IhYD/XlpX/11YVf9eW1H/ZFVR/8S8u//v8vL/aGpq/2dXWf/Z0dH/+/v8/7fA + w/9tb3P/Yl1i/4B9gP+vr67/dW9s/3pqZ//y7ez/1ePq/2xyff+cjnf/3tbF/+n3+v9vdYD/U1BN/6OO + cv/7/Pb/dpSu/7Gdmf/8/Pn/5OXn//X7/P+prLL/39S7/9zk6v9YVVP/va6a//3+/v+Wm6X/W1FM/19X + Uv9bWFT/VVdU/1tYT/+UjIz/dGNi/2VXU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1lYVv9XWFj/aVZU/1pbUf9gWVH/Z1dV/2VUVv9YWln/YVdU/2RZUf9kWVH/U1VZ/0Si + p/9X2e//UtXz/0jU6v9F1+r/Sb3NvU2XpBH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUq1xG1D1+n/R9bp/0jV + 8v9P1vP/WpWq/2BQWv9gW07/ZltQ/2NXUf9ZVFX/Vlha/1RYVv9hWlD/ZlpN/19cTf9QW1P/ZVNc/2RV + WP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlV/2BWVf9sWEv/29PJ//j6+/9xeYH/WFJX/2hZ + Tv9tXlT/4+DU/9Hh5v9bUlP/rpR///r//v+5wMf/WVJV/1pWVf9dWVX/WlhQ/1ZSSf9hV1L/W09N/7yv + qP/8//z/8Pn4//3+/v//////2Ojt/11kbf9gVUj/kHxb//f07v+ysrf/4d3T/+Hr7/9ta3H/4drS//n4 + 9f/z7+b/6PT2/2Fudv91Zl3/8e7l//P19f+Nl57/W1lg/19XT/9iXVn/sq+v//79/f/Kysv/Yl1b/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1VY/2NTW/9QW1L/YVxL/2pb + Sv9jWU7/W1hY/1lVWv9bVln/ZFVX/2RYUv9bWk7/Ylll/1q0xv9X1PX/UNLw/0bX6f9A1eb/S669bf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFAqLctSNDh50TX6f9K0/L/T9by/2G4vv9XYFr/WFpN/19YV/9fWFX/X1lU/15Z + VP9eWVT/XVhT/19ZVP9fWVP/X1lT/11ZVP9fWFT/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWFT/YlhU/2NUSf+Mg3f/+vn4/8/S1f9VVFj/YVJK/2pfXP/29e//t8fN/1hLSv/YxrT/8Pb5/2Vw + fP9VVE//XVhW/2BXVv9iVVX/ZVhV/2JYUv9eWlH/bWBY/+zm3P/0+fr/v7y6//Px7v/C0uD/VFNY/2JZ + Tv94ZUv/6+fi/+/u7v/6+vj/rba9/1JRU/+Gdmb/8u/t//z9+v/x/P3/doaR/1tOSP+XiHj/7ezp//j6 + +//k4+T/1dHO/+jn5f/8/Pz/397f/3NzdP9bV1T/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWFT/X1hU/11ZU/9fWVP/YFlT/19YU/9eWVT/XlhU/15YVP9fWFT/W1dS/1Za + VP9qWU//WW1m/3LM2P9T0vT/SNLz/0TX6v9Gy9zlQ6OvLf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRKCvDUbH2a1F1+n/S9Xr/0jU + 8v9hyN//R3B2/1lWTv9lXFD/YFVT/2BZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YUv9gWVD/YFpT/15WUf/Hv7r/+/v7/5ie + of+QiYb/vba2//z8+v+YpKf/XExJ/9zTxf/Z4Oj/UVto/15aUP9cV1P/X1dY/2BXV/9gV1f/YFhU/19a + Tv9fVkz/npSE//j49f/Nysb/9fTv/628z/9bUVP/XVxR/2VUSf/j2tL//v79//f4+f97f4X/WVhS/19U + Sv+QgX7/9fTy//X9/v+Qnaj/Wk9O/2NVSP91cGf/vLmz/+zn4//v7e3/5ePj/66trf9iYmL/VVNS/11Y + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/XFpV/2JYTP9UWVL/VoeS/2bQ7f9G0/b/RdXr/0XX + 6f9Cv86rR5qnDf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFEscBTSNXn+0XW6f9X0+//VNjv/0mMnv9OVVv/ZFpU/2hYUP9iWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlR/19bTf9YWVX/XVZW/4RwZv/07+v/9vr6//r6+f/+/v7//v7+/4CNlP9XSUj/1sW3/+7y + +P9gaHz/X1NR/2BZVf9bWFP/W1tT/1paUv9YUk3/YFVS/2JXUv9mW03/3dbP//7+/f/7/v7/kZmm/2JT + V/9ZW1X/YlNQ/8i8rv/8/v3/2uDl/1xaXf9cWlD/XVhT/2ZRTf+mnJH/9PPz/620vf9YUlD/YlhR/1xW + Uf9cVE3/XVRM/1NQUP9XVVX/XFpa/2ppaf92c3H/YVtX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9dVU//YF1T/1xaVf9GWWL/XKvB/0vX8v9K0+7/Rtfq/0fS4/tFqbdT////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTqKtF0jN3dFE1+n/RdXr/1TW + 8f9assL/S1Zf/2pYWP9qVFP/Y1dU/11bVP9dWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVL/X1tP/1ZYVv9dV1f/ZlJH/7Wp + nP/8/v3/wMrR/8vFv//z9/n/Z3WD/1pPUv+xnIn//f79/6ewwP9ST1T/WVdT/2FaTv9hWkr/YVtN/6mk + oP90cXn/XFZV/1xWUP+JfXD//fr1//H8/f+DgYL/YVNb/1dZU/9dUlH/qZuN//z8/P+krLr/VVBQ/19a + Uf9YWFf/aVdS/2ZXRv91cHD/VVdb/1dUUf9hW1j/Z2Jj/3x3df+dmJT/ubi4/9HQ0P/j4uL/8vHx/9/e + 3P9sZmH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YllT/2dYUP9XWVL/Y1ZV/19WWf9HaHH/Vs7c/0zU + 8P9J1ev/RNfq/0bF1tFQmqMX////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUansgNJvctrRdbo/UbW6v9R0vL/TdLl/2VufP9cWVH/Z1pT/2dVU/9aW1b/T1xQ/1pb + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YU/9eWVP/W1lT/15ZVP9lWU7/cGRY/+rm3//m7Ov/4tvV/+Ln7P9UX2v/YVZW/3Jj + U//n49n/9/r7/6StsP9raWf/bF5V/39sYf/Ivrb//v79/8TO0v9WVFb/WlZV/2VYSP/PxLr/7PP2/3lz + bP9fVVr/XVpV/1xVUf97b2P/np6d/15jbP9VUEz/VU9J/1RUVf9tY13/e3Ji/42Ghf+npKX/v768/9jY + 1f/y8PP//f39//7+/f/+/v7////////////19PP/1tXT/3Vvav9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9hWFH/aVtS/1pWU/9mV1b/ZFdT/1pWUf9Zlp3/SNfq/0/T8v9H1ur/RNTm/Ui0wmtKo64D////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSqu7FUXO3uFF1+n/S9Ts/1vV + 9P9XnK7/XVVY/2VaTP9fW07/VVtU/15XVv9WW1D/XFpT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhU/15YVf9iWFL/X1pR/1xa + Uv9dU0v/qZaH//z79//+/v3/yNfg/1dYWf9pWFD/WFRR/352Z//l3tr//f38/+3t7P/m4+H/8u/u//r8 + /P/P0dL/Ymhp/1lUVv9bWFj/YVtJ/3ZoX/+GiJD/W1hT/1pST/9YUk3/WlhN/2VeWP9jYWT/eHl6/6Sf + mP/CvLv/19bX/+jn4//z8vD/+vn5///////+//7//Pz7//b19v/r6ur/39/d/8TBwf+joaD/h4SB/3hy + b/9kYFv/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZU/9kWFH/X1hX/11YVf9hWk//YlpO/1dd + Yf9dvM3/XdT2/0bU7f9F2Or/Q8bV31GgsBX///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFKvc2BRdfo/0bW6v9U1PD/YMjf/0lhcf9eWFX/YltN/1xcTv9VWlT/YFdW/2JZ + Uv9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dWFX/XVdX/2RZUf9gW0//V1pV/15YUv9zWkz/29XE//z+/v+pvMz/WFNO/2pZ + TP9UWFv/YVlN/3diUv+topn/1NHN/9TV1f/Ezc//lJ6g/1tbXf9eVlL/X1RW/1VSUf9VVET/X1VQ/2Jh + Zv93eHT/mpOM/7ewrv/JycL/3dzc//f09////v3////+/////////////v/+/+7y8f/f3t7/zs3M/6+x + qP+XlI7/gXt7/2hmZP9XV1D/WFNR/1lVUP9bVVH/W1ZR/15ZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlT/2FYUv9fV1b/WVlU/19bT/9jW07/XVVV/1N+jf9n0Or/TNby/0TW6v9F1un/TLDBf/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSam3HUfO39tE1uj/SdXs/17V + 7v9Ml6X/VlFb/1pZUv9eW0//XVtQ/1pZVP9fV1X/a1ZT/2NYU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9dWVT/XVlT/2BZ + Vv9fV1T/YFlV/1pUUP+PgG//+vn3/6amqf9RUFL/YlpT/2ZaUP9eWFX/WFVU/1pRSv9XT0j/Vk5H/1VN + R/9YUkv/ZmBZ/3NvZ/+GhIH/pKOi/8XDxP/b2tr/7Ovr//X19P/6+vn//v7+///////+/v3/9fTz/+bl + 5P/Z19b/wr69/56bmf+Ef33/dW9q/2ReWf9eWFP/XFZR/1xWUf9dV1L/XlhT/15ZU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/XllT/2BYVf9ZWVP/XltP/2BZ + Tv9hWFT/VlVg/2K3x/9S1O//R9Xu/0XW6P9HydrbRp6sHf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFKushtRtjq/0TW6/9L1u//ZcbU/1JfZv9dWVT/XVtT/1tYU/9hWFT/ZFhU/1tZ + VP9pVlX/YlhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFlT/2JZUv9hWVL/YVhT/15YU/9eWFT/YFpU/2VaS/+IhID/ZGZp/1NV + Vf9dV1L/XVVM/1ZST/9cWlr/cG1q/4J9fP+fnJr/v7y5/9LRz//l5OP/+fj2//////////7//v79//z8 + /P/7+/r/7+3t/9va2P/DwcD/qaej/4qHg/93c2//ZmJe/1lTUP9YUk//WFNQ/1lUUP9eWFP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/11ZVP9aWVX/Y1hU/2NZUv9gWVL/XFtT/1dYT/9nVVX/UHmD/2TU6P9N1O//Rtbq/0XW + 6P9Dsb9r////Af///wH///8B////Af///wH///8B////Af///wH///8BR5qgB0vL2s9E1+r/TtHy/0/V + 8P9glKP/b1NV/1ZeTv9SWVD/alZY/2VWV/9YW1L/ZFpQ/1FaVv9aWVX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWVP/Y1lS/2JZ + U/9fV1L/W1VQ/1lUTv9XUUz/XFRI/1dUUf9eYmX/c3R2/4yJhf+vq6T/y8nG/9zd3f/v7/D/+fn5//z7 + +//+/v7////////+/v/08vP/4uDf/9LQzv+8trP/mJSR/4B7d/9uaGT/X1lV/1pVUf9aVlH/XFdT/15Y + U/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/X1lU/19Z + U/9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/W1lV/1RZV/9qV1L/cFVS/2BW + Vf9YWVj/XFlS/1pdUv9OW1z/YrnI/1HT9P9O0vH/Rdjq/0XC0c9SmKAH////Af///wH///8B////Af// + /wH///8B////Af///wE4uchVRdXn90fW6f9C0vT/fMvX/0VlZ/9TVlX/W1lV/15XUv9iWFP/X1hT/1ta + Uv9gWVP/YVhU/2BYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/11XU/9dVVP/WVRQ/2FdW/92cW//h4WD/6Sin//HxLz/2dnX/+Xn + 5//29vb////////////+/f3/+fn5//X09P/q6ej/1tTT/767u/+inp3/gn18/3Bqav9lX1z/WlRP/1hS + Tf9ZU07/WlRP/19YUf9gWFP/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1hU/1dcT/9XWVX/X1Rc/19WWP9fWVP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWFT/XVhU/2FYU/9mWFL/XllS/1ZaU/9WWVX/ZFZW/1lVWv9Uhov/aNXf/03Q + 9/9G1un/RdPl9zynuFX///8B////Af///wH///8B////Af///wH///8BP6ewB0PK2qVE1+n/TdXr/0zW + 9/9soan/RlhX/1JZWP9fVlX/ZFlV/2BYUv9dWVL/XFpS/15YVP9lV1T/YVhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/ZWBd/6Gc + nP/Rz8//5OTk//T09P/+/v7//////////v////////////Py8f/e3dz/ycjF/6+tqf+Qjov/eXZw/2tm + Yf9bVlL/VlFN/1pUUP9eV1P/X1hU/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/W1xP/1xY + VP9gVFv/YFZY/19ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9fWFT/XVlU/2JZ + Uv9fWVL/WVtS/1ZZVf9pVlj/XlRY/0FeYP9syMz/UdL4/0jU6v9E1+j/RcPSo0ifpgf///8B////Af// + /wH///8B////Af///wFArbknSNHh8UTX6f9S1O//WNDt/09xeP9PVFT/W1hY/2JVU/9mWVX/YVhS/1xa + Uv9bWlL/XVlU/2JXVf9gWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9nYl//xL+///7+/v/49/f/8fDw/+bk5P/S0ND/ubi3/5yY + lf98eHP/aWZh/2FdWf9cWFP/WVVR/1lUTv9aVE7/XFZP/11YUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9iWVP/ZldT/2NXVP9gWFT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/1xZVP9bWVT/YVlS/2JZUv9dWVH/WlhS/2hWVv9hVVf/T1ha/1GX + mv9W1PT/UtTt/0XX6f9Gy9rxSaKvJ////wH///8B////Af///wH///8B////AUK4yG1G2ev/Rdbq/0jT + 8P9etcv/Ullb/2FXWP9kVVb/ZlRT/2dYU/9hWFH/W1pT/1paVP9bWFX/YVhV/19YVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2Ba + Vf+HgXz/q6Wh/4yFgP9zbWr/Z2Be/1pTUf9RTk3/WVNP/19XUf9fWFL/XlhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19X + V/9eWVP/aFpN/2RZUP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/W1lV/1da + VP9eWVL/ZVhS/2VYUv9hWFH/ZFdV/2JWVv9fV1b/UGts/17R5v9X0PD/R9bq/0XX6v9Irr5t////Af// + /wH///8B////Af///wH///8BRMrcw0XX6f9I1uz/TdXv/1+On/9bVFP/ZFdV/2RWVf9nV1T/Y1hS/11Z + U/9bWVT/WlpU/11YVf9jV1b/YFhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/2dfWv9sY13/YFlU/1lTTv9bVFD/XVZS/11Y + Vf9eWFT/YFhS/19ZUv9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9fWVT/XllU/19ZVP9fWVT/X1lU/11Y + U/9eWVP/X1lT/2BZVP9dVVD/YVVP/2BZU/9fWVP/X1lU/15ZVP9fWVT/X1lU/19YVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/XldX/1daVP9jXEv/YVpP/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YVP9cWFX/VVpU/1xaUv9nV1L/aVdS/2BYUf9cW1P/XllV/2RV + Uv9hWlz/XLTA/1fR8/9E1ez/Rdjq/0W+0cP///8B////Af///wH///8B////AUyqti9G0uTrRdfp/0/V + 7f9bzuX/VmNv/15XVP9gV1P/YVhU/2FZVP9eWFP/W1lU/1pZVP9cWVT/XlhV/2NXVf9gWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWFP/TVpa/0hbWv9aWVP/XllQ/11YVv9gV1n/ZFZY/2VZU/9TW1L/W1dW/15XVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FXVP9hV1T/YFhU/2BY + VP9hWFT/YVdU/19YVP9hV1b/YFhU/15ZUv9bW1H/Y1lU/2FWWf9ZV1v/R1NT/3GKhP8+jpP/Rlhd/1ha + Vv9dWFP/YlZV/1xXVv9bWVH/WllP/11cUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + U/9lV1f/Y1dW/1dcUP9aWlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhU/11Y + Vf9YWlT/XFlT/2VYUv9mWFL/YVlS/1NcUv9VWlL/ZVhS/2JST/9UjJH/WdTx/0vR7/9F1un/Rs/h60qg + pC3///8B////Af///wH///8BTcDOY0fW6P1H1ur/WNfu/1ezxP9bV1//XVhU/15ZVP9dWVT/XVlU/1tZ + VP9aWVT/W1lU/11ZVP9fWFT/Y1dU/2BYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15WUP9ohIX/aJic/0FeXf9gWFT/XlRV/2BY + Wf9gVlX/ZldP/09cU/9gV1f/YVdV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YldU/2FXVP9fWFT/X1hU/2BYVP9gV1T/XlhV/2FYVf9fWFP/XVlS/11Z + Uv9jVlL/Y1RU/1lWW/86WV7/dra5/2TW5f9moa3/QV5f/1tYV/9jVlX/YFlV/11bUv9cWlH/XVhQ/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2ZWVf9sVVf/VFpU/1haVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/X1hV/1xZVP9cWVT/YVhT/2RYUv9iWFL/UVxS/1Fc + Uv9gWVL/aFZR/0tqav9d0ef/VNH0/0fU6/9F1OX9S7O8Yf///wH///8B////AUGruQlExdWtRdjq/0rV + 7P9h2ez/UIyU/2BTVP9eWVT/XFlU/1tZVP9aWlT/WlpU/1taVP9dWVT/YFhU/2FYU/9iWFP/YFhU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YVdS/0Fpav9/1t7/XrvF/2Vgaf9jU1f/XFtT/1hcT/9oWk3/UlpY/2pWVf9oV1T/XllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFT/XllT/1xZ + U/9cWVP/XVlT/1xZVP9cWFb/X1lR/1taUf9bWVX/YlZX/2dYVP9pV03/XFlW/0N9jP9d0ez/aM/q/1zY + 6/9ltsH/Vlxk/2JYUv9lWk//YVlQ/2JYVf9lWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/ZVdU/29UVf9ZWFj/WlhW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Y + VP9gWFX/X1lU/1tZVP9dWVT/YlhT/2RYUv9UW1L/T1xS/1paUv9lWFL/UlpR/1m4x/9dz/X/TNTv/0TY + 6v9Gv86rR6CrCf///wH///8BR7PCF0PO4elF1+r/UNPt/2HS4/9XcXP/XldU/19ZVf9dWVT/XVlU/1xZ + VP9dWVT/XllU/2BYVP9hWFP/YVlS/19ZUv9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVP/TFdd/1ixxv9K1vL/X8PO/2No + cf9WVE7/XVxJ/2VeSv9QV1r/aVZS/2hZU/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xZU/9cWlL/XFpS/1xaUv9cWlL/W1pR/1pcUP9bWVT/YldX/19Y + VP9aWlD/alZP/2JaW/9alqL/WdHr/07P8/9R0vP/TNHz/1LW8f9fucH/X19b/1RcTv9rWFX/YFNW/1VX + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVL/YVlU/2RWV/9gV1X/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jWFT/W1lU/1paVP9fWFT/aFdU/11Z + VP9UWlT/WllU/2BXU/9eWVD/VY+Z/2HV+f9K0/L/Rdjq/0LE1OlGpLEX////Af///wFRqrU5RNfp/0fW + 6f9U0+z/V8LQ/1NfW/9XWVP/ZVhU/2RXVP9iWFT/YFhU/2JYVP9jWFT/Y1hT/2NZUv9eWVL/WlpS/11Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZU/9iVVr/Y36a/0rZ9f9P2uj/UsLP/1Focv9cWVL/SmBH/2FVWv9eWFH/X1pS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/XVlS/15Z + Uv9gWVL/YFlS/19ZUv9eWVH/WlxP/2VXVf9gWFX/XllS/1tYT/9AZ2f/VrTE/2jP8P9Zz/H/T9Xy/1DS + 9P9I0/j/Tc7y/2Ha7f9Bt7b/X1pg/0lWWP9XXFz/Y1VT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BXUv9bW1H/YllU/2BYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/XFlU/2RYVP9ZWVX/WFlV/15YVf9uVFX/aFZV/1lZVP9bWVT/X1lT/2BdT/9Wc3v/VNHz/0PS + 7/9F1+j/RNPl/1GlsTf///8B////AU67yYdE2Or/Stbr/1jS7P9XrLn/VFNQ/19ZUv9iWFP/YVhU/2BY + VP9gWFT/YFhU/2BYVP9gWFP/YFlT/15ZU/9dWlP/XllT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/2JWVf9eaHf/W8zi/0/V + 5v9W1/P/YLjQ/zlmaP9WXE3/X1ZW/2BaVf9eWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllT/11ZUv9gWVL/Y1lS/2RXUf9jVlL/ZFlU/2FYUv9lWlb/XlhQ/1pa + VP9JVlf/S4KL/2LH1/9a1uz/U9Tv/1HS8f9T0fL/U9Lx/0rU8v9Q0fH/VdHu/07Y6v9Yna7/SlRe/1pY + V/9gV1L/YFlT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/Y1hR/1NcUP9hWFX/YVhV/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/YVhU/11ZVP9cWVT/XlhU/2VX + VP9jWFT/XVlU/11ZVP9eWVP/XFpO/19gY/9Uwt3/Tdbx/0jW6f9F2Or/S667h////wH///8BTMjYs0TX + 6f9M1O3/W9Hs/02Rm/9aUlH/ZVpR/19YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFlU/09WWP9lvMj/WdXq/07P9/9T0fX/Vay4/1lZU/9kWFT/XldT/11Y + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9cWVL/XFlS/2JZ + Uv9mWFL/aVdS/2lZV/9hVVP/YlhW/2NUUv9YWlP/SmBf/2OVoP9ozeP/UNXv/0vV7P9I1uz/TNPx/1bQ + 9P9T1O3/TdTt/1PT7v9W0PP/StL1/1nS6P9jann/YVlW/11aUv9fWlT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9iWlH/VFxR/2BXVv9gWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9cW1H/ZFVU/1W1 + y/9R1e//TNXs/0TX6f9Jvcqx////AUGapQ1FzuDNRNfo/03T7v9f0uv/PnB6/11VU/9kWVH/X1hT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWlL/SVpM/1aY + lf9h1uv/V8z7/07P+v9U1O3/XneA/3NVUP9fVlL/XlpW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YVP9gWFT/XFlU/1xaUv9dWVL/Y1hR/2pYUv9qVlP/Y1ZV/1pVVv9bWln/WllU/1pn + bv9ntMf/V9f0/03U8v9U0/D/RNfs/0fW7P9O0/H/U9D2/0zX6f9U1er/WdPt/1nO9f9Wzfr/UNbx/2Jt + fP9mV1T/XFpR/1xZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1taUv9kWVL/YVhV/2BY + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1pT/1xbUP9cUE3/SJ+y/1XU7f9P1O3/RNfp/0bM3c1Kl58NP6u5MUPQ + 4O1F1un/StPw/2bL4v8/X2j/XlZV/2RaUf9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZUv9fWlP/TW1p/0DY7v9ky/H/WtDy/1ba9f9UmLT/ZVlT/11Y + U/9bV1L/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hU/2FYVf9dWVT/XFpS/11Z + Uv9kWlP/ZVdT/2RXVv9VVFX/Ul1e/zxTVP9cgIT/Wsjb/07Q9/9P0PX/V9Tv/1DW6f9P1PD/TdL0/03S + 8/9S1O7/TNbs/1jS7/9U0PP/UNHz/1bS8P9jwtH/V1xm/2FZVf9iWlP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/WFpU/2lXVP9iWFL/YFlT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFL/YVpR/2FU + Uf9ChpX/WtTs/1HT7/9F1un/Rc3e7UehqzFCwtFLRNPl/UfW6v9J1PL/YLfK/1BaX/9fVlX/Y1pS/19Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/Z1hW/2lW + V/9TWlv/VrLb/0Xb6v9R2Of/WdPq/03G6f9MXFb/X1pS/19bU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWFT/YldV/11ZVP9cWlL/XFpS/2FYUf9jV1T/XFZW/1NcW/9EWlr/bKGm/1PR + 7/9T1e7/UdXs/1XT7f9b0PL/W9Dy/1DT8P9O1PD/T9Pw/1rQ8f9oz+//PNP3/0jQ+f9Wz/X/R9zj/2Cr + qf9VVFj/XVZV/1xXVP9fWVT/X1lU/19ZVP9fWVT/X1lT/15ZU/9eWVP/YFhU/19YVP9gWFX/YlhV/2BZ + Uv9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YUv9kWlL/Y1ZU/ztsd/9g0+v/UdPw/0fW6v9E0OH9Q7G+S0W/ + zllE2ev/SdXq/0vW8/9ao7P/Wllb/2FWVf9fWVL/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hVlT/aFlX/1hUV/9SkaT/Vdns/0rU6P9T1/D/UM3x/0+A + f/9aV0//YFlP/2BaUP9dWVP/X1hV/19YVf9fWVP/XVpR/2BaUP9iWFP/YVdV/2BWVf9hV1T/XVlV/1xZ + VP9dWlP/YllS/2RYVv9MVlj/PW12/221x/9y0+j/RNbt/1PU7/9X0u//VtDt/1TU8P9R0e7/UNP0/1DQ + 8f9S0vH/U9Lt/1zQ7f9I0vT/TtL1/1TR8v9Q1uj/XISH/1tWTv9fWFX/XFVZ/19ZVP9fWVT/X1lU/19Z + VP9eWVP/Wl1O/11ZUv9oUlz/Z1NZ/2FYVP9fWFb/XVlS/15ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/2RZ + Uf9gVVP/PGJo/2TM4v9R0/D/SNbr/0TW6P9Ht8RZR7zLiUTa7P9L1er/Ttj0/1eVoP9eVlX/ZFdX/1tY + U/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVH/XlVa/052cv9jzeb/TNXy/0XS8P9b0vb/UqSo/1ZWT/9iWk//YFtO/15ZU/9fV1b/XldX/15Z + Uv9cWlD/X1tP/2NYUv9jVlb/ZFZX/19YVP9ZVVD/XlpW/1pVUP9hWFX/U1dY/1iAiP9xyt3/WdHz/0zU + 9P9J2+X/VdHw/13O9f9a0fP/S9Xs/0nZ7f9Jz/L/WdP6/1HN7/9P2O3/Ttbu/1jR7/9T0u7/UdXw/1jJ + 6P9UX2f/YVhI/2FZVP9bVV3/X1lU/19ZVP9fWVT/X1lU/15ZU/9bXE//YlhT/2RVWv9hVlf/YVhT/11Y + V/9cWVP/XVlT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFP/ZFhQ/2BXVP9FXmH/Yb/S/1LU8f9K1ev/RNns/0m6 + yYlIvcy5RNnr/0/V6v9U1vT/VIiQ/2FTT/9nWFb/W1hT/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/19VTv9YWFf/TVhc/1vD1P9O0PD/TtLz/1jN + 8P9fxc3/V11a/11ZVf9aWVT/aVZU/2FZUv9XWlP/WFlU/1xYVf9XWVX/VFpU/2NYUv9mVlL/XFhV/1tb + UP9iWlD/Y1pU/1tYYv9ao7L/XNbp/1jS6f9R2Ov/Rdfn/07V7P9X0Pj/XMn2/1jP9f9I1ur/R9nn/0nY + 8P9Vzu//W9Lz/0bV7v9O0/D/XNLv/1TS7v9S1vL/QqzC/01YWv9vXE//YllR/1ZXV/9fWVT/X1lU/19Z + VP9fWVT/XllT/1tbUP9nV1L/YVZY/1xZVf9dWVL/XFlV/11YVf9eWFT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Y + U/9kV1H/X1pW/09aWf9fr7//UtTz/0zV6/9E2ev/SrnIuUrC0tdE2Or/UtXr/1XS8f9Qf4T/ZFhO/2dV + Vf9XWFT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/ZFpR/1ZbUv9iTlv/Tp6n/1fT8f9U0vn/W9Hu/1rW5v9Rcnj/XFVa/15WWP9RW1P/W1xN/2VZ + UP9iV1X/W1Za/15VW/9kVlX/V11N/1JfTP9fWVP/aFhV/2BRUv9Ma3T/SrvH/0fV7f9U1PL/Stbv/0rX + 6f9P2On/TND0/07N9/9Kz/b/TdXy/2XS6P9mu8//TtTn/0zR7P9R1PL/T9Lv/0vR8v9Z0+3/VNXw/1XW + 8f9GiJf/V1hU/2NZT/9bW0//UltR/19ZVP9fWVT/X1lU/19ZVP9eWVP/W1tR/2lXUv9gV1b/WVpU/1tb + UP9eWFP/X1dX/19YVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlT/2JYUf9aWlP/UltV/2GjsP9T1vT/TtXt/0XZ + 6/9Ku8vXS8nZ60TY6v9U1On/Vczs/0p3ev9nWk3/aFVU/1ZaVf9dWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVH/VV9P/2lPWv9Gcnj/YtTs/0zP + 8v9X1O//U9jv/1aYqP9RU1r/YldW/19ZU/9dW1D/XlpR/2BXVf9iVlj/Y1VY/19YVP9dW07/W1tM/1dZ + Vf9OU1v/TYmW/2DL4P9W2PH/UdLw/0vS7/9R1PD/VNTy/0/S8v9JzvP/SNn1/1PV6f95xNn/UnuQ/0ej + tv9S2vD/WdHw/1vP8P9L1O7/TNH3/1PU6/9S1Ov/XMzl/1toc/9iW1L/V1tS/1RdUf9eW0//alJY/19Y + Vf9fWVT/X1lU/15ZU/9ZW1L/aFdT/2JYU/9ZW1L/YFpP/2ZXU/9cVlj/XVhW/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWVT/YlhR/1laUv9WWlT/XZij/1PX9f9Q1e7/Rdnr/0m/0OtLzt71Rdfq/1DU6v9Wy+n/S29z/2NY + Tf9kVlP/WlpV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/11aUf9fWFT/ZFVY/2BZU/9eWVL/X1lU/19Z + VP9fWVT/X1lU/1paUf9TXU3/aFVb/01fYv9cv9P/TdPy/1LU7f9O0/D/Y73T/0lZXv9jVlH/ZldU/15X + Uv9eW1T/XFdT/2BYVP9fWVX/WVdS/2FaUv9bVlL/RWJn/2Seq/9t0+j/UdLv/1DR8f9X0/L/VNLv/1TT + 8f9LzvD/TNL2/1HU9f9c1uj/X7i9/0ptdv9JWGv/Vsnb/0vS7/9e0PT/YNDx/0rV7f9M0Pf/UNXs/1PT + 6f9cvdP/YFRa/2RZT/9VW1T/VVlQ/2ZZUP9aUFz/Wm9y/19ZVP9fWVT/XllU/1daVP9iWFT/ZFhS/2BZ + Uf9fWlH/ZVdT/11XVv9dWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9dWVD/XltT/1tXU/9bj5r/U9j1/07U + 7v9F2Or/SMXV9UjS4vtF1+r/SdXu/1fK5P9TaW//XlhQ/15ZUv9fWFX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9dW1H/WlxO/2BXVv9rUF7/YFlR/15bUP9fWVT/X1lU/19ZVP9fWVT/W1pR/1RcTP9eV1f/WFBS/1Sf + sP9Q1vD/S9Ts/1HS9P9cz+r/UHR3/2RYTf9oWFX/Y1ZY/19YVf9dWlP/WVpP/1ZbUP9ZXVj/WVVX/2Rq + dv9stsn/W9rr/07R6/9U0/X/UdDx/1fT8/9f0fH/U9Px/0nT9P9K0/X/XtPq/1mbo/9GYFf/UlZQ/2Nx + gP9J2ev/TtD4/1zO9/9cz+//S9bs/0zQ9v9P1u7/WNbp/06drP9pUFL/ZlpQ/1pYVf9iVlT/aFVS/1R2 + hf9xxtj/b6Gs/11jYP9eWVT/WVpU/19YVP9kWVH/YllR/15YVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XFlT/1ZcUf9jWVL/YVVR/12Jlf9R2PX/StTw/0XY6v9Hytz7R9Tm/0XX6f9L1e7/V8fi/1Jl + a/9gWFD/X1lS/1xXVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11aUv9dW1D/ZFZW/2NUW/9dWlH/XVtQ/19Z + VP9fWVT/X1lU/19ZVP9dWlL/WVtP/1pdUv9pVVP/UHaE/1jU6v9J0+z/U9P1/1XU8f9bmJ//WlpP/0la + Vf9aV1j/alVW/2lWUf9kXFP/VldQ/0hYW/9XiZX/aMvj/0/S9f9b0/D/T9fu/0zU6/9O1PH/Q9Ly/z7V + 9f9W0PD/YNLr/1rJ2f9Re4v/Z1VW/2RdTf9KW0v/WKKo/1HX8v9az/n/SdH1/0PV7/9S1u3/UND0/1PT + 8P9i1eb/QHR4/2FXUf9eV1D/a1VW/2lTWP9eXGT/Vr/O/0vT8P9Q1ev/ZLO5/2FlYf9dWVT/YFhU/2BZ + Uf9gWVH/YFhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVP/WFtS/2NZUv9gVVD/W4iU/0/W + 8/9L0/D/Rdfq/0bQ4v9G1uf/Rdbp/03U7/9XxeH/UmRq/2JYUP9eWVL/W1hU/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVpS/15aUf9qVlT/W1dY/1lcUP9bW1D/X1lU/19ZVP9fWVT/X1lU/11YU/9bWlD/YFtJ/2ZZ + VP9LWWH/bcXY/07V8P9Q0u7/U9fy/1q6xf9EXVr/UVpa/1ZZVv9jWVb/ZVdT/2NSVv9DYGf/Uaaz/1nT + 6P9U0/P/UNH1/1PR8P9Q0u3/Ttbw/0bU7/9J0/H/S9Tu/1zZ5v9utb//YmRt/2pRV/9cWlD/WFxQ/0Ja + Wf9iwtL/T9Pw/1fQ8v9O0/D/SdXv/0rW8P9W1PL/UNPx/2nC1/9MXlz/XFxS/2BXV/9dVFb/T1dd/1eg + rv9X2PH/TtPz/z/W8P9H2On/brC9/2ZhX/9iV1T/XFpR/11aUv9hV1b/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZU/9bWlL/YllR/2BVUv9ZhZP/TtTy/0zS8P9F1+r/RdTl/0XW6P9F1un/UNTv/1rG + 4v9SYmj/ZFdR/15ZUv9bWFT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWlL/XVpS/2tWVP9cWFb/V1xP/1pb + UP9fWVT/X1lU/19ZVP9fWVT/XlhV/19bU/9sXUb/XFlU/05XXf9qm6z/VNf1/0zU7P9P1fH/bNHl/0tt + cf9PWVr/aldT/2VVUP9RWVX/P3d7/2DBzv9d1u3/VtT1/03P7v9I1ev/VdLx/1vP9/9RzvT/UNP2/1DU + 6/9u1OP/Xpad/0VaXf9YVlX/W1tR/1JeUP9iVVT/X2t8/1zO5f9O0/D/T9Xr/1HV6v9U0+//Vc/z/1bU + 7v9J1vT/Wpyv/15ZVf9eW1D/YFRZ/1VYWf9EjIv/XNbo/1fP8P9T1PT/U9Hy/1XS8P9j0+v/W6ax/2Bf + Xf9XW1H/VlpT/2NWVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/1xaUv9jWVP/YVVS/1eF + k/9O1fL/TNPw/0XW6f9F1uj/Rdbo/0bW6f9Q1O//W8fi/1Niaf9jWFH/XllR/1xZVf9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1xZU/9bWlP/aFdU/19ZU/9YW1D/WltR/19ZVP9fWVT/X1lU/19ZVP9fWFX/YFhQ/2lc + R/9WWlP/Vldc/1xyhP9X1/H/Utbu/0vS7/9m2O//T5CW/1NUV/9rVlL/VFpY/1aIjv9ozt3/VdXt/1DT + 8P9Uz/H/VdPy/0/X7v9U0fL/Vc31/1fT9f9d0/H/YsXX/0h+iP9NVlv/WllX/1ZYUf9ZXFL/U11N/2RX + Wv9lhZz/Wdjy/1LT7/9O1un/TtXr/1XT8f9ez/X/VNPt/1LU8f9SfZH/Y1hT/15bS/9dV1j/TW92/2LO + 2P9K1O7/WNLv/1PP8P9Z0PT/V9Dy/1bU7/9t1eP/YF5f/2lWVP9kWFL/WFtS/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XFlS/2NYU/9gVVP/VYeU/07W8/9N0+//Rdbp/0XW6P9G1ej/Rtfp/1DU + 7/9cyOP/VWZs/2JYUP9fWFL/XFlW/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XFlU/1lZVP9kWFT/ZFlR/11a + Uf9cWVL/X1lU/19ZVP9fWVT/X1lU/2NYU/9pWFD/XVtP/1RcUP9hVVr/W1tu/0/I1/9a0uz/TtLz/0nV + 7f9Hw8f/YlFY/15gYP9orbb/WNLw/03Q+f9J0Pb/UdHv/1zU7v9b0vD/Ws74/0/R9f9K1O7/VNfl/1q2 + v/9FZW7/YVFZ/2pVV/9gWVP/V1xT/2VUWf9lW0z/Ulxa/1ivw/9M1/P/W9Pt/1PV6/9I1PH/TNLz/17Q + 8P9P0+3/acnj/1Bdcv9eV1T/WmFI/1JlXP9ivtb/UM75/07S+f9Q1uf/Ws/z/07Q8/9L0fH/Wdfu/1Os + tv9XWF//ZFdU/1xZU/9aWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1hU/15V + Uv9Ui5f/T9f0/0/U8P9G1+n/RdTl/0fU5f9F1+n/StTt/1nI4/9XanD/YVlR/15ZUv9dWFX/XlhU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dWVT/WlpU/2FYVP9kWlD/YlhT/2BYVP9fWVT/X1lU/19ZVP9fWVT/YVhU/2VX + Vf9aWVX/W1lU/19YVP9TVVn/Vq+0/0zY5f9Q0vP/VdD0/2PH5/9YgZn/ZcPM/zvb4/9C2vD/W9Hv/13T + 7P9J2Or/TtTs/1HR8f9Iz/H/Stfu/1/U4v9ZlJ7/UVZd/11VWP9UW1f/UllV/2RZV/9sVFT/YFVY/2da + UP9GZmT/atDi/07T8v9Z0vD/S9bt/0rU8P9Q0vL/VdPv/0jY7v9bsr//TlNW/2hWVf9NXlv/S7S5/1zU + 8f9S1PL/StDs/1TY6P9P0fL/TNLw/1HY7/9ZxtX/XV9v/1FWWf9YWVX/V1lU/11ZU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XlhT/2BaVf9gV1P/XVdT/1OMmf9O2PT/UNPv/0bX6v9Gz+H/R9Dh+0XX + 6v9J1e7/V8vl/1Zwdf9fV1D/XlhS/15YVf9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/YVhU/11b + UP9jVlb/YlZW/15ZVP9fWVT/X1lU/19ZVP9fWFX/U1lY/0haWP9jV1T/ZVhO/11XTf9hgoP/Tt7i/1bO + 8P9Sz/b/TdL2/2HT8f9h0uz/TNjy/0LT7f9G1ev/WdTo/1HV6f9D0vL/Q9T1/1jb6v9yw9T/VXR+/1VZ + Wf9fWFH/ZFpP/2dYT/9lVlL/YFZX/15XWf9gWFb/YVNP/0iKiv9d1er/UdD0/1TR8v9G1e//T9Pv/1LS + 8P9L1O7/T9zt/1uLjv9YVlP/V1hV/02ktP9b0vT/RNLy/0vX8P9R1er/U9fs/0rU8P9K1ev/Y9bi/1t7 + hf9jUln/XFhW/1ZZVv9VWVb/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFP/XlpV/15Y + U/9cWFT/WpSg/07Y9P9Q0+//Rtfq/0fK2/tHy9z1Rdfq/0fV7v9Zz+n/W3d8/11YUP9eWFH/X1hW/19Y + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFhU/2JYVP9iWFT/VF1P/2NVWP9kVVj/XllT/19ZVP9fWVT/X1lU/2BY + VP9WWVb/TFtV/19ZUv9kXFH/Y1lP/2JcY/9Xzdf/VdP1/07R8v9I0u//TdXv/1zT8P9P0O//UNPz/1TU + 8f9b0u3/TtTt/07U9P9i0u//Z6qz/0FlcP9QVFj/YVhT/2RZT/9lWU3/ZVhN/2ZaVP9dWFf/WlhX/2JY + VP9VU1P/VbO4/1XU7f9T0PT/T9Hz/0rU8P9S0+//U9Pv/0rV7f9d0uL/VWVs/0lYWf9empz/Z9Tv/1HO + +P9R0fP/TtLs/0/X7f9M0fD/TNXt/2DX5/9cmKH/WFVY/15YVP9fWFP/WVlW/1dZVv9hWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YU/9dWVT/XVhU/1tZVv9jn6n/Tdf0/0/T7v9F2Or/SMXV9UfG + 1u1F2Or/SNXt/1zU7/9cfoP/XFhR/11ZUv9fWFX/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFT/YlhU/2NX + VP9WXFD/YFZW/2FWV/9eWVP/X1lU/19ZVP9iWVX/X1ZT/1taVP9SW1H/X1pR/2BZUP9gWFT/WFBe/0my + wv9Q1PT/UNTx/1LX7f9E0+n/WtTw/1TQ8P9U0fP/WNDz/1zQ8P9X1vH/Xsvl/1OTqP9OW17/TFVY/11Z + Wf9iWFL/ZlpR/2VaUP9iW1L/XVhR/1tYVf9cWVX/Y1dT/1ViZ/9WxtH/UdLv/1XQ9P9M0vT/UNLx/1TT + 7/9T1O7/TNbu/123x/9JVmP/Y4+Y/2rV4P9a0vL/Tc/3/1vP8P9Y1e//SdTu/0vP9v9W1+v/X7G9/0tc + Yv9mVlP/WlpP/2BaUv9fV1T/YFdV/2JYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1xZ + U/9hWVT/VVpZ/2Knsv9P1/X/T9Pv/0XY6/9KwNHtS73O10TZ6/9P1Oz/VtX1/1qIkv9bWFP/WFpU/1tY + UP9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9cWVX/Y1dV/29VVP9UXFD/U1xR/19ZVP9fWVT/X1lU/2BW + U/9hWFT/XFpO/1taTP9pWlD/ZFVV/1FXZP9akqf/WMzl/1HU9P9X0O3/YtTr/0fY7f9V1O3/UdHt/07T + 9f9M0fX/W9Dx/2HC1/9Hcn//XlJV/3NWUP9dWVP/VFlU/1lYVv9hV1f/YlZY/1NaVf9UW1P/X1lR/2ZX + Uf9kV1T/SnWA/1/Z7P9R0/D/VNDz/0vS9P9b0PP/VdPu/1DU7f9T0+//XJam/0SHnP9n0+n/TNPt/1HS + 8P9L1O7/YNDs/1fS7P9I1PX/TtD8/1rBz/9ZXmn/XFdX/1lcT/9kW07/XVpR/2BYVP9kV1T/YVhU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/WlxR/21YUf9CXV//V7fH/1jU9f9O0vP/RNjr/0q7 + zNdJucq5RNnr/03V7f9V1vX/XpSg/1lbV/9ZWFL/X1lS/19ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BY + VP9mV1X/YldV/1RcUv9XW1L/X1lU/19ZVP9fWVT/YVpV/2NXU/9kWFL/ZlhS/11UVf9VYG3/YarA/0/X + 7/9L1fH/S8/s/1LX8/9M0/D/RdPx/1zQ8P9U0+z/S9jt/0fZ7P9ZqcD/SmNr/2ZdS/9kXUb/Wl1N/2NZ + UP9jV1X/XVdY/1NXW/9SWFv/XldY/2hXVP9nWVD/ZlpQ/15UVP9Hm6j/W9f1/1TS8P9T0u//S9Pz/17Q + 8f9T0+7/TdTu/1XO7f9XqLn/UNLp/0vR9P9K0/f/NNvu/1PV5/9a1+v/TdLs/0bW8v9swef/VXB5/1hV + WP9cV1X/X1tS/2BaTv9fWlH/YlhT/2RYU/9fWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + U/9cW1H/aldS/0NcX/9ixdf/UNPz/0zT7/9E2ev/TLjIuUm6yolE2uv/Stbr/1LV8v9cprT/U1ta/15Y + VP9jWlL/X1hT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/Y1hS/2ZWVf9WWVb/WVpU/1xZU/9fWVT/X1lU/19Z + VP9VWFD/WVtU/2RUWP9RVF//QXeG/2LE2f9c2O//R9Tt/1zT8f9K1PD/Qtbx/0PU8P9Z0Pf/TtHx/1TZ + 7P9l0Nj/X46Y/09UYP9aVlf/WltG/1dhSP9UXFH/XFpR/2JYU/9hV1X/XVhW/1tYVv9cWFX/YFhU/2VY + Uv9mWVL/VFla/07D1v9T0vT/UtLx/1LU7f9O0/D/VtHx/1HT7v9O0+7/VdDz/1fU6v9R0u//UNT0/0jU + 8f8/1+z/SNXs/1jU8P9d0u3/YtHe/1t6hv9iVVT/VFhS/1laV/9oVFP/WlpV/2BZUv9jWVH/Y1pR/11Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/11aUf9nVlT/RGNp/2bR5P9J1PL/SNXs/0TZ + 7P9MuciJR7nKW0TX6f9I1uv/T9Xx/2S7zP9JXV//YFdV/2RYUf9fWFP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + U/9jWFL/ZVdW/1NaV/9dWFX/YFhU/19ZVP9fWVT/X1lU/15bU/9XWFH/RVph/1uSpf9tzuj/U9Tt/0jT + 7P9M2vH/V9Ds/1TT8v9N1O7/StXr/1TQ9f9R1vX/V77P/0d4e/9SVVb/WlRX/2FYWv9fWVD/XlxS/1pZ + VP9eWVT/YVhS/2JZUf9hWVH/YFlR/11ZU/9cWlP/XlhU/11XU/9eb3D/TtHp/1DU9/9O0O//U9Xr/1HT + 7/9O0/D/TtTu/1DT7/9T0PX/SdTx/1XT7/9X0ev/U9Pr/0rX8P9N0/T/UtLz/27O6f9Shoz/TltR/2BY + TP9gW1P/XVVV/2VWWf9bV1b/W1lT/15aUf9eW1D/XVpT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWFP/XVpS/2RUVP9PdX//Y9Xq/0jU8f9G1er/RNXn/0q0wllBtcVLRNHj/UfX6v9N1e//Z8zg/z9g + Zf9gVlT/ZVZR/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlT/2JZUv9iV1X/VFpW/2BXVf9iWFT/XlhU/1xb + Uf9eWFX/XFVS/1poZv9osbz/ZdLt/1HS9P9J1PL/SNXw/0fW6v9V0+7/WdDx/1fS7f9U1ur/TNLy/1HT + 8v9grL7/UFRV/2pYU/9bWVf/W1ZV/2VWWf9kVFf/YlZX/2NXVv9hWFL/YFpP/2FaTv9kWk7/YFlQ/1tb + Uv9YWFT/U1RU/26TmP9N1e//SdDz/1LW9f9Q1er/UNTv/0jU8P9O1O7/UtPw/0/Q9/9I0vT/VdPt/13S + 6P9e1+v/TdLu/1TP9v9Zz/L/SYqi/1pWWP9bXkb/W15N/2ZXUP9nVlf/W1VZ/2NYWv9YWVT/W1pT/19Z + U/9eWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9dWlP/YVFT/1eJlv9d1uz/SdLv/0XW + 6v9Fz+D9R628Sz+jrjFDzt/tRdbp/0zT7v9f1uv/P295/2FVVv9lWFT/X1hU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVP/XllS/1xZVP9dWFX/ZVZV/2RXVP9YWVb/T2NE/15TWP9Zb4f/YsHZ/0rY8P9I0/T/TNLz/1TS + 8P9T0+7/R9Tr/1vS8v9Gz/b/SNH6/07O9f9T1+z/VNHu/2jN2/88ZGX/XFZX/2JWWv9YXE3/YlhU/2NW + Vv9cWlH/cFZU/2VWVf9XWlP/WFpR/2taUv9nVk3/X1xT/1tZU/9WWFv/UrDJ/17T7P9P0/D/S9L0/0fS + 9P9B1vD/TNXv/1jS7/9W0PP/S9H2/1rT8f9S0Oz/S9bw/0bV7v9N0+7/YdPt/1WIn/9ZUmD/Z1dS/2Zd + SP9fWVP/XllU/15ZVP9fWVP/XllT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllU/1pYU/9aUFb/V6i1/1vS7f9R0vL/Rdbp/0XN3e1Mn6gxSZmiDUXN3s9E1+j/TtXu/1XS + 6v9Hjp7/XlNT/19YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9cWVT/W1lU/2VXVP9kV1T/YlhU/11Q + Uv9cX1D/S2Rq/2DE2v9X1u3/TdPq/0nZ8P9X0O3/VdHw/1HT8f9T0+//S9Xr/1fW6P9Uy+X/XM/w/1TT + 7/9T0vD/XtTm/1KFjP9dU1X/XVhW/1xbUP9hWVX/X1hV/1JcUP9YWlP/XVhW/2NWVv9jVlX/Y1dU/1pb + Uf9ZWlH/XVpR/1xlZf9Ozub/UNTt/1XR8v9czvH/YM/w/1TU7f9L1uz/TNXs/1HS8P9S0vH/SNLu/03W + 9f9P0vL/WdHx/1/U5P9gjpr/TVdY/1NYVP9ZWVP/ZFdU/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/XVhW/1FWXf9RvMr/WNPy/1TR + 8f9E1+n/R8vczVGXnQ3///8BSr7Ns0TX6f9M1uz/VNPt/1Ksvf9aUVP/WFhS/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVhU/1xYVP9eWVL/ZVhS/2BZUv9fWVP/bllf/09WVP9csbr/W9Xx/1HU8f9N1ez/PNnr/1HT + 7f9V0/L/UdLw/1PT7f9b1uH/bKSq/zl0gP9ozOT/U9Hv/0/T8f9S1O7/XKq6/1hTV/9dWU7/Y1tS/2BY + Vf9fWFT/YFpQ/1xZU/9bWFb/XVdX/15XV/9fV1T/YFpV/1xZVv9PV1L/WoWE/03a9P9V0vD/V8/v/1nR + 8f9U0e//UtTs/0/W6/9P1ev/U9Pv/1jS7/9K0/b/SdLz/03R7P9rzuD/aoCM/1ZVU/9aXVH/WV5R/1hX + U/9mVVj/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15YU/9fWVf/T2Zt/1TL3P9Q0fH/TdTu/0TY6f9Kusix////Af///wFLr7yJRdjq/0nW + 6/9S1e//W7/T/2JcXf9VWVP/XVlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFT/XlhU/2FZUv9kWlD/XVpQ/1xa + Uv9lUFr/Xnl//1/W4/9T0fH/VNLz/1DT7v9J1+3/Ttfv/07T7/9Z1O7/aMzg/0qMlf9IV1X/P1dZ/2a7 + y/9V1PL/TNLw/0zV8/9fwdj/V2Fm/2FaSv9kWlT/XFdT/11ZVP9gWVH/Y1hT/2FYVP9cWFX/WVpV/1hY + Uv9kV1T/XlZY/0lWV/9rq6//R9fy/1nR8P9Y0O//T9Pw/0fV7/9P1e3/VdTs/1PU7P9R1O7/U9Pw/07R + 9f9T1fD/acve/0qDiv9VUlT/ZllR/19bT/9dWU//XlhT/2JWV/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/2FYVv9ReX//XNbo/1HU + 9f9I1ez/RNjq/0uvu4f///8B////AVCnsjlD1Of/Rtbp/0zV7/9izOT/Z2xt/1VcVP9dWVT/XlhU/19Y + VP9gWFT/X1lU/15ZU/9eWVP/X1lT/19YVP9eWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YVP9gWFT/Y1lS/2FaUP9aW1D/W1pR/2NUYv9lpbP/Stjt/1HS8v9X0fL/WdPy/17Q + 7v9J1e//UNbt/1W80P89bnz/X1FZ/2laUf9bV0//VJGZ/1bW8v9N1PP/R9H0/2HY9f9Sdn3/aVpJ/2JX + Vf9aWFP/W1tV/1pYVP9oVlT/bFdS/19aUP9UXE//U11Q/2xXVv9hUln/Slxl/3PJ1v9H1fH/W87v/1jU + 8f9D1O7/PNjw/1DU7/9c0u//VdPv/03U7/9J0+//WtLy/1/H2v9Pd3//VVZS/1tcUf9hWk//ZllS/2ZV + U/9nV1X/XFlU/15YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/XllT/15ZU/9eWVP/X1lT/19Y + VP9fWFT/XllU/15ZVP9fWVT/Y1dW/1eXnP9g2e//TNHy/0XX6v9D0eP/SqavN////wH///8BS6e1F0XG + 1+tE2On/SNP3/2TQ/P9FiY//YVpM/1tZVP9dV1j/ZVZY/2tVV/9jWFT/XVpS/11bUP9iWlD/Y1hU/1hY + V/9cWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/Wl1t/07I2/9O0/H/Ptbw/0nT8P9ty/L/Xs/z/1HW7/9aqLv/WVlp/15VVv9XWVH/alpS/2hY + Uf9Ra2n/WNTr/03S8f9O0fj/U9T1/0+nrf9nVkv/X1dX/1taVP9aWFL/X1dZ/0xZVP9jWlL/Z1xM/2Rd + S/9UXUz/c1NT/2hMX/9UfZP/UtLm/0TV8P9U0+//TtPv/0zU8P9N0u//X9Hy/1fP8P9L1PH/RNXv/07Y + 8f9bvsX/YmRu/1RWVf9XXFH/ZlpQ/1ZaU/9gVlb/ZFZW/2NXVP9fWVH/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1hV/2FXV/9eWlL/V1xQ/1pcUP9gWVL/Z1dU/2JXV/9YWFf/V1lW/1hZVf9bV1f/SMLN/13O + 9P9W0/T/Q9jq/0jD0+lLpK8X////Af///wFIoa0JR8DQrUTY6v9I0+//Vs/0/0+yvv9eVFD/XVlV/1xY + Vf9eV1X/YFdV/11ZVP9dWVL/XVlR/2JZUv9jWFT/XFhV/15YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9Wbnv/Qtry/1XQ8P9T0+//R9Tv/z/V + 8f9P1/H/dbXO/1Jca/9iV1f/a1tS/1RbTv9aXFT/XldR/11fWv9aucn/UdPw/1TR+P9R0PL/T87U/1ld + Xf9ZVFT/XFpT/1pYU/9cWFn/bVRU/2ZXUv9ZWU7/XFxP/2ZVU/9NWl//RJGf/1LM4/9R1/P/U9Pv/03U + 7/9M1O//UNTv/1jQ8v9YzvL/SdTx/07Z7v9l0+r/ZaG0/15hWP9LW1P/Wlpa/19VV/9SWFb/ZVdT/15b + UP9XW1H/WFlV/2RUWP9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/YVhV/11ZU/9bWlL/W1pR/2BY + Uv9kWFT/YVhV/15YVf9eWFT/W1hT/1RocP9X1OL/V9L1/0zS7f9E2er/R7/Oq0qgqwn///8B////Af// + /wFNs79jRdXm/UjW6/9U0/H/UM3i/1piaP9gV1P/X1lT/1paU/9XWlT/WVlU/15YVP9fWFP/YVhT/2BY + VP9hWFT/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2B8h/9F2PX/V9Lv/1PU8v9I0e//Tdju/17P3v9Ncn7/TVVW/19ZUv9nV07/XVtR/1ZX + U/9cWFT/WlhT/2OWof9W0+7/Uc/y/1HT8v9P09//UX2G/1lTVP9gW1X/XFhS/1xYUv9hV1X/ZFRY/11W + XP9CVVv/QoKH/1q/x/9c1uf/TdXx/0jS8P9b0e//TdTv/0zV7/9O1O//UdLx/1HU8v9W1Oz/a8nY/1iJ + lf9NVlz/ZltP/1lWT/9aWFj/WlZY/2BXV/9ZW1L/XVtQ/2JZUP9jV1X/YVdW/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YVP9fWFT/XllU/15YU/9eWVP/XlhT/15YVP9gWFT/Y1dU/2NYU/9aVVH/XZGh/0/U + 5/9O0vH/R9Xq/0TT5f1Jrbth////Af///wH///8B////AUyepy9G0OHrRdbp/0/U7v9N1O//YoGR/11V + UP9iWVL/WlpS/1NbU/9WWVX/YFdV/2JXVf9gV1T/XllU/2NYU/9gWFP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y36I/0/W9v9V1O7/TtDy/03S + 9P9Y1uj/Wq+2/0VYWf9YWVP/Y1xT/2BYUP9hWlT/X1lX/1pXVP9YV1L/YXB5/1jR6v9P0/L/T9Pv/1va + 6/9Qm6n/XVZY/19XU/9fWVL/YVxQ/1ZXU/9LU1r/TWl3/2youf9p1eT/U9jp/07W7v9L0/L/TdTz/1jR + 8P9N1O//TdTv/07U8P9N0/D/T9Pu/17F2f89bXn/T1ha/2VZUv9jV1H/YlhT/1xXVP9eWlf/ZFZU/1Zb + Uv9dWlH/ZFlR/2VXVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/15ZU/9eWVP/YVdV/2BY + VP9dWFT/WVlU/2BZU/9mV1P/ZldT/1lYVv9hsMX/Tdfv/0nT7v9F1+n/Rc7f60yfqC////8B////Af// + /wH///8B////AUHB0MNF2Or/SNbt/0rU8f9iq8X/XFdV/2VYUv9dWVL/VFxR/1ZZVP9hVlf/ZFZX/19X + Vv9bWVT/Y1hS/2FYU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9Ybnf/YtX3/07U6/9Q0vf/UND2/1/S4P9RfX7/VFpP/2tXT/9lV07/UlxV/15X + Vv9oVVX/XlhV/1ZbVv9mUVr/UMLa/0rT7f9Q1e//YtTq/1HB1f9iXl//YldU/19ZUf9ZXEv/XGdk/2Kl + rP9V0+D/Utbw/1vS8v9bzvD/T9Ly/0/R8v9V0vT/TNPx/0zU7/9R0/D/UNPv/03U7/9d1+//Q3uO/1lR + Wv9qWE7/aV1I/1tUXP9cWFj/YVlR/2JZT/9hW1P/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVP/XVpS/1xZU/9jVlf/YldW/1tYVP9VWlP/X1lS/2lWU/9mV1T/Xmtr/2HP + 6v9E0/D/R9bt/0XZ6/9Gu8rD////Af///wH///8B////Af///wH///8BRLK9b0XY6f9G1ur/TNTw/13J + 6P9YZWz/ZVdV/2VXVP9dWlL/WVpT/2RWVf9mVVj/XldY/1VZVf9iWlH/YFlT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1Flb/9Oztv/S9L4/1LP + 8/9U1Oz/SdHZ/19ZZf9fWFP/Y1tK/2BdSv9SX0z/YFlR/19WVv9bWFf/VVhU/15RYv9Skqf/YNb1/1jP + 8P9Z0vH/L9/l/2FtfP9cUVD/YWVk/0Odp/9Tz97/VdPy/1DP8v9L0vP/Pdju/07W6v9i0+r/VtLv/0XV + 8f9P1PL/U9bp/0rU8P9L0vD/XNTt/1jK5v9eYV//WllT/1dYU/9fWFj/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9dWlL/W1hV/2VW + V/9kVlb/XFlU/1JbUf9hWlP/YVRS/1xWVv9ikZj/Vdb1/0XU8P9G1+r/RNbo/0qvum3///8B////Af// + /wH///8B////Af///wFHpK0nR8va8UXX6f9G1Ov/Xdb3/1qPmv9XVFn/YlRU/2ZaU/9YWU//Y1dU/2VW + V/9fVlj/VVlV/19aUf9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/V1di/2Ksvv9N2PH/U9Hz/1vU8/9Gwcr/YVBc/2NUUv9mWFT/ZFZV/11Y + Vv9oVlP/W1tS/1xdSv9kYUn/VlpU/1Jzff9X1OT/S9Pw/1TR8/9Q1vD/T6C3/zmfqf9U0df/U9zp/0rY + 7f9Zze//Xc32/1LR9f9F1u//SNbs/1zS7f9W0fH/S9Py/1DT8f9R1ev/UNTw/1HU8v9V1+7/Vae//1la + Wv9eWFL/X1lT/19XVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lT/15ZUv9aWVX/Y1ZX/2NXVf9eWVP/VFxR/2FYU/9bVlf/Qltf/23C + 0f9O1PP/StTu/0XX6f9HyNnxTaGqJ////wH///8B////Af///wH///8B////AUqeowdHwtGlRdbo/0fY + 7P9T0fH/aMHP/0RbZP9jVVr/aFZR/1leUv9eWVH/ZFZW/2FWV/9WWVX/XlpR/19ZU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eVFz/ZX2O/1rV + 4v9L0vL/UNX0/0m1vf9dVVf/XFpQ/2FZUv9jVlb/W1dY/19XVf9eWlH/YF1I/2JfRf9aWlL/Xlpk/2DB + 0P9L1e3/S9Pz/1XO8f9q0fL/YNTu/1PU6v9S1O7/S9Tx/1zR9v9Y0vb/TNHy/1HT7/9P1O7/XNLu/1TR + 8v9I0/P/UtLw/1DU8P9T0u3/UtPv/1HV7v9ZiZv/V1ZY/2RZUf9kWVH/XlZU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/YFlS/1ZZ + Vf9hV1b/Y1dU/2BZUf9VXE7/YVdS/1RVXP9GgIn/ZdXm/1DS8f9I1er/RNbo/0i+zaNSnqkH////Af// + /wH///8B////Af///wH///8B////AUOouFdG0+b3Rdfq/1DU8P9h1eX/TH+K/15SWv9pVVH/VV1P/1tb + UP9jV1T/Y1dW/1hZVf9fWlH/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JUWf9eVGP/V7i9/0/a9f9H1PL/VbS7/1hVUv9YX1D/XFpO/2JX + VP9dVlj/XVdW/19ZUv9iXE//YVpL/09VUv9UT1z/Va+//0vW6/9I0vH/WdD1/1zQ9P9V0fH/VNHx/1bP + 9P9O0fX/V87z/1DS8v9N1fL/W9Hu/1HU7v9Z0u//UdHy/0fT8/9S0vD/UNP0/1bT7v9X1e7/Ts7n/1Vr + d/9ZVFj/ZVhQ/2VaT/9gV1T/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYU/9iWFP/VFpV/19YVf9kV1L/X1pO/1leTv9iWVT/TVNe/1yx + v/9U1+v/UdPv/0bX6f9F0uT3SqW0Vf///wH///8B////Af///wH///8B////Af///wH///8BUJimB0q/ + 0s9E2er/SdXr/1HZ7f9fssD/XFdh/2pXU/9UXk7/WFxP/2NYU/9lV1X/XFlV/2FaUf9fWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/ZldY/2pP + V/9FdXT/Tczg/0zW8f90wsv/XFNV/1hdTv9WXEz/YFlR/2lUV/9rUVn/VFZZ/1tXYP9iVWn/XY6b/222 + yP9J1ub/Rtft/1PU7/9T0u7/UtPv/0DV7f9E1/P/Vc33/0vQ9f9Y0vH/U9Xt/1HV7P9i0ev/Rdfs/07U + 7/9Q0vH/T9Ly/0/T8f9Pz/b/VdXs/1jV6v9PvdP/VVRW/2RXW/9iV1D/ZFtP/19XU/9jV1T/X1hU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVhU/2NY + VP9TWlX/XFlU/2RYUv9iXE7/WVxM/2BWUv9hbXr/ZtTm/0XX7v9O1e3/RNnr/0e8zs9TmacH////Af// + /wH///8B////Af///wH///8B////Af///wH///8BSrHAbUXW6P9G1ur/SM/5/1rS7/9HdXP/a1pN/2JX + Tf9gVlf/YFZZ/2JWV/9WWlT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/YFdV/1BXUv9Pg4//ZNHf/1jX4P9WkqP/XHKC/1Ft + dv9JbXT/RWty/1V1gv9Uh5P/UqnA/1PL5f9R1+7/R9Ls/0rW8P9N0u7/VdLw/0bW7/9P1O3/VdTs/1bS + 7v9R0PT/Pdnt/0Tc5f9T3Ob/Tb3K/0uguP9Y0Or/U9Tw/1LU7/9R0+7/StXw/1PN9v9R1e3/Wdzr/0uU + pv9bV1H/aFVY/2BZUv9dW0//X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9lWFP/b1VS/0RZXf9bWlD/YVlS/2FYVP9hV1D/VFdR/1as + vP9V0vT/StLy/0XW6f9F0+X/S627a////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wE/nKsdQ8nb20TX6P9M0vP/VtLx/1S5u/9UWFP/W1lS/2BYVf9kV1b/ZVdV/2FZUv9XWlL/XVlT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1da + VP9QW1T/aFdT/1ZTVP9Wg4v/Z9Dd/1nW8f9ez/P/X8bn/2TI4/9ZzuH/Wdbm/2bX6/9j1fL/VNLw/0fT + 7/9U0vH/UdHv/1PR7/9az/D/WNDw/07T8P9M1PD/S9Xv/0vZ6v9k2OP/ebvB/2R8if9BU2f/Wpuy/17U + 7/9F0+3/T9fx/1LT7P9I1/L/VM/1/1XV7v9j1+b/RG53/19aUf9nVlX/XFlS/1laUv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11Z + VP9bWVT/WllU/19ZU/9jWFP/ZFhT/11WVf9SdHn/V9Ld/0/T8f9L0u//RNfp/0bH2NtNnqwd////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFEssKBRdfo/0fV6/9P0/D/V9Xi/0x4 + ff9cWFj/XFlT/2FYU/9nV1P/YFlS/1lbUf9dWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WVlU/09bVP9rVlL/Z1dU/09VV/9SeIf/ZMbf/0vT + 8f9R0/X/VdDv/1PT7v9H1ez/U9Pu/1TS7/9O0e7/Rtbx/1PT8f9N0vD/TtXx/1bR8f9g0PL/UNLy/07S + 8v9Z0e7/Y7K+/02Div9IW1z/VlNZ/01aaP9eus7/VtDs/1HX9f9U0u//WtLt/0XV7v9W0fP/WdTw/1/A + 0P9MYWP/Y1lR/2NZUv9bWVP/WllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/W1lV/1RZVf9hW03/YlhT/2JYU/9eWFL/V1Ve/16k + tv9R3ej/StXt/0fV6/9E1ef/SK6+f////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUijshVEyNfhRdjq/0bU7P9M1+//WrbF/1dVXf9YXFL/XVpR/2dXUv9bWlL/X1pQ/19Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWFX/VVpU/2dXUv9lWFL/ZldS/2lPW/87Z3X/R7vK/1XU7P9T2PH/VdLw/0vT8f9P0vP/T9Lx/1DV + 7/9G1O7/UNTw/0zW8f9G1O//TtTy/1/Q8v9R0vL/UdLy/1S41v9RW2X/VlJW/2ZaVv9dVlP/T211/1XW + 5f9V0vL/VdD0/1rP8f9e0/D/R9Xu/1fT8v9e0e//Waa3/1NVUv9oV1L/X1xP/1xYVf9eV1f/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9bWVX/VFlX/2JdSP9lWFL/X1lT/1RXU/9kcoX/Yc3r/0ja6P9D1ub/Rdjr/0XD0t9Ooa8V////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BR6CoA0W1wWtE1eb9RtXq/1HU + 9f9G1u7/ZoOR/1RYUP9cW1H/W1tR/1lbUv9rWFD/Y1hS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RXVf9hV1X/XFlU/1ldVf9UWE7/YFtO/2ha + Tv9eWVL/V4yM/03Izf9L1+v/UtPx/07Q9v9Q0fL/V9Lu/1nS8P9Y0e//V9Hv/1LS7v9I0+z/SdPs/0nV + 7P9L1uz/YdDi/09saf9fWlX/ZlZK/2VZUf9ljJL/Rt3q/1fS+P9Qz/b/RNT0/0DW8P9O0+7/U9Tv/2HO + 7f9HgZT/XVZP/3FVVP9ZXkz/XFhV/2JWWf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVf9hV1b/XF1K/1xcTv9aWVX/TVhh/2yy + yv9N0fP/S9fs/0bX6f9E0+T9SbG8a1KirAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BTZyjF0bH19NE1+n/R9Xu/0nQ9f9jwdX/XV9i/1hYU/9RXFT/ZVZS/2hb + Uf9iWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/XVpS/11ZUf9jWVL/aFhR/2ZWVP9dVlb/Tl1e/1iAhP9sqa7/bLzB/2O/ + zf9gwdL/ZMPA/3Cxx/9wl6H/T3hy/0+If/9V2O3/WNHx/1XS7/9d2fH/PIea/2tVU/9jXUr/RVpR/2Oy + xv9M0/b/TdLy/1DV7f9P0+7/T9Pw/1HT8P9Oz/X/b8zj/z5kXv9eXUn/Y1hS/1xXWP9dWFT/X1hS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YVlU/2ZVUv9pV1T/V11O/0pZVv9Tf5P/WNXv/0zT7/9J1ev/RNjq/0TB0NFOnaIX////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSKm4U0jS + 5PtF1un/SdDv/2PZ8v9hl6X/S1le/1dWVP9qWlf/WlhP/15bVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9ZWVP/VllT/1xZ + U/9hWFP/ZFdS/2RZVP9eV1X/UlZX/0dTVf9BV1v/Slxo/1Fdbv9PXl//Tk9g/1tQWP9bVVH/UGde/2TH + 2v9X0PP/TtPx/1DV7/9Xtsz/XlNV/2JbTv9EaWT/Z87i/1LQ9P9M0vP/UdTu/1DT7v9O0/D/VdDu/03V + 9/9eqL//SVlU/19dSv9hWFL/XldY/2JXVP9jWFL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFL/YVpU/2ZUWP9YV1D/Pmps/2jC + 3f9V1vb/RNTq/0XX6v9HzuD7S6izU////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFNmacNRsDRrUTX6f9I1uz/VdLw/3XN5P9HdH//VlZZ/2RX + U/9ZWlP/XVpU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xYVf9bWFX/XVlU/2BYVP9jWFL/YlhQ/2JXUf9hV1T/XlVT/1xV + Vv9dVVr/XVVa/11XVv9dUlj/aFZX/2tbV/9PWFL/X6e3/1nR9f9P0/T/S9Lu/13N5P9dZmz/V1NM/1SN + i/9a0uf/Wc/2/0zS8/9S0+7/UdPv/07S8P9Y0e7/Udr3/0+CmP9UWFT/Xl5M/19ZUv9fV1f/ZldU/2ZX + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15aVP9cWlP/YVRa/1JaW/9Xp67/X9Pw/1XN8P9H2Or/RNfp/0m7zKtTmqMN////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wE9pa4tRc3e50XX6f9P0vD/WdHx/2K9z/9NXmT/Y1hV/1pWU/9eWVX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/ZFZW/2dV + V/9kV1X/Y1hU/2BZUf9gWlD/YVlP/2ZZUf9qWlL/bVdS/2FYT/9WW0//V1lT/1hfUv9iW1L/YFdQ/1VV + Uv9bhZD/Ws7z/1DQ9P9M0O7/UtXu/2KKlf9QU1X/WKyu/07Y7v9fzfb/TdLz/1PT7/9R0/D/TtLw/1rT + 7P9Oz+b/T2N5/2FYV/9cXE3/XFpS/15XVv9qVlX/aVdU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlU/1tbVv9XUlb/Wn2J/1zX + 5f9O1PD/V9Dv/0XY6v9Ex9jnTKCvLf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFIsMBtQtbn/0XW6/9L0/b/Vdft/1qj + o/9nUlP/ZFVX/2FYVf9fWVT/X1lU/19ZVP9fWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9nVlb/bFVW/2dWVf9jWFT/XVpR/1dbUP9YXFH/VltP/1dZ + Tv9ZW1H/W15P/1tdTP9bWFX/UV9I/1xbTv9gWFT/X1hW/1dkZv9gx+b/UdPx/0rT8P9M1fH/W6+9/0Jg + b/9ixtH/RNfv/1vO9v9N0vP/UtLx/1LT8P9R0/D/U9bq/1a8zf9WVGL/ZVZU/15aT/9aW1H/XVhU/2hW + VP9nV1T/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/XllU/19Z + VP9fWVT/XllU/19ZVP9fWFP/X1dX/2pnZP9Yytf/U9bs/07V7v9F1+n/Q9Pm/0qtvG3///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUiZpxFIwtK9RNfp/0vV6/9Q0+3/T9bm/05/if9bVVj/XFdW/11ZV/9dVlX/WFpW/2RX + Uv9mWVH/YVpQ/1tcUP9bWlL/YFdW/2BYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1pZ + VP9YWVT/WVlU/1paUv9bWlL/W1lS/1xZU/9cWVP/W1lU/1tZVv9kWFP/bldQ/2pTWf9gXU3/Y1lR/2RW + Vf9iVVb/W1ZS/1ivwf9R2O//S9Xy/0/R8f9VzOD/NX6S/2/Z7P9M0+//TtH1/0vT8/9R0/H/UtLw/1LS + 8P9N2Ob/a5qo/0xRVv9kWVX/Y1dQ/1dcUf9eWVL/XlhV/2BYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/W1lV/1hZVv9gWFT/ZlhR/2pYUf9hWE//WVtV/11YVP9rV1X/V1hR/1VaUf9fXF//U667/1LT + 9/9O0PX/SdXs/0XX6f9Ju8i9TZijEf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AT2quiNHzNzhRNjq/03V + 7f9Y0O3/Zcza/0hsdf9cV1f/X1dU/15aVv9dVlD/W1pU/1xZU/9gWFP/YFlT/15ZU/9bWVT/XVlU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WFpT/1VbUv9aWlL/XVpS/2BYU/9iV1T/YldV/2JX + Vv9gV1f/XldX/2BYVf9iWFP/XlVb/1lbUP9bWlP/X1hX/15VVf9gV1D/SYeN/1vX6/9Q1fL/U9Lx/1HW + 7v9bwtv/YtLq/1TT8f9J0/L/S9Px/1HT8P9T0vD/U9Pw/1fX5P9kbXf/UVpV/1hYUv9nWVX/WVtR/11a + Uf9eWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/WllV/1RaVP9mV1P/ZldT/15Z + U/9cW1X/Y1ZT/2NZVf9cWVP/R1dT/1adpv9f1ej/UNL1/0nS7f9E2Or/R8XV4UynsCH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUCvvV1I1Ob3RdXo/1vW9P9S0eX/cb7M/1NaXf9dWlb/VFhS/2Rb + U/9ZWFH/WlpV/11XVv9gV1b/XVlU/1taUf9cWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9aWlP/WFpS/1xZUv9gWFL/Y1hT/2VXVP9kV1X/ZFZW/2FXVv9fV1b/X1hV/19YVf9ZV1r/WllT/1pa + U/9eV1b/X1ZW/2NaUv9Eamn/YM7i/1DQ7v9V1fL/S9Lu/1zU8P9b0u7/U9Lv/0jU8P9L1PD/U9Pw/1PT + 7/9T1PD/WMTS/2RcYf9UW1H/WFtT/2VVVf9dWlH/XltQ/15aUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZU/9fWVP/VFlV/2JXVv9iV1b/XVlV/1hYUf9nWVX/X1dU/1RZVv9UgIT/YNHk/1XV + 7P9L0u7/Rdbq/0bP4PdNp7Vd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRpumB0K6 + y49G1+j9RNbq/1HT8f9U1Oz/fam0/05dXP9FW1P/YFtR/2lYUf9dV1X/VVdZ/1dXWf9YWVb/YVpQ/2FZ + Uv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2NYVP9kWFT/Y1hU/2JY + VP9gWFP/XFlT/11ZU/9iWFP/Z1dU/15XVv9kV1X/YllS/2FYUv9jV1f/X1dQ/1VdVf9ZsMT/VdTx/0/T + 7v9W0/P/T9Dv/1DU8v9O0u//TtXv/0vV7/9W0+//UtPv/1HY8v9Xn7H/YFZU/11bUP9eWlT/Y1RX/2Na + Uf9gW1D/XllS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1lS/2ZYUf9mVVb/W1dZ/11X + WP9ZWFT/V11T/2FWUP9jUFX/VXl7/2HM2/9S0vX/TdLt/0bX6v9E1ef9Q7HCj0ibpQf///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BP67ACUzA07ND2Or/Rdfs/0fU8/9S1un/Xp+n/2RU + Xv9TWlL/Z1pQ/2VYUv9ZWFf/UllY/2ZVVv9iWlD/YFpS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15aUv9eW03/YltN/2FbTv9aW1H/U11P/2BX + V/9eW1D/XlpP/2BYVP9eWlX/YFVK/1WMpP9S0fP/SdXr/2HO8P9W0fX/RdTy/0TW7f9X1Oz/TNXv/1nT + 7/9S0+//TNXu/1B6kf9VWk//ZlpO/2VYUv9jVVn/ZllQ/2FaUf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9jWFL/Z1hR/15XVv9gV1j/VllV/1ZcUf9hWU7/aVRV/1BpdP9dydf/VtLy/0/O + 9/9H1+v/RNfp/0a5yLFCpLQJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BRp+uH0nI2M9E2Or/SNXt/07S8f9b1vH/RZWh/2hTWv9YWlD/X1lP/2ZbU/9gV1L/YFpW/2JZ + Uv9gWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZUv9fWVP/YVhT/2FYVP9dWlP/XVlS/15aUv9iWFH/Y1dU/1tXWP9MWFf/Rmds/37Q + 3P9I1e//V9Ht/1LS8f9Q0fX/Us/1/1bP9f9T0vD/VdTs/1DV7P9Pyt3/bGZk/1tXUf9hWlT/XldS/2BZ + Vf9gWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1taU/9XWVH/WVtV/1Na + Uv9cXFL/ZVhP/25XVP9DZmv/TcHP/1vS+P9Pzfb/Rdbt/0PX6f9Kv87NR5ymHf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BPKi3NUvL3ONF1+n/SdLt/1DR + 9f9h2ev/Uo+Y/1hZW/9eWlT/XVlP/2JaU/9WVk7/YFdT/2JaVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFT/YVdV/15Z + VP9cWlL/XllS/2RYUv9kVlT/X1ZX/09WV/9KXl//drK7/1HW8v9Q1PD/U9Px/03S8P9M0/H/VdPy/1XR + 7/9M0+z/UdXu/1+xxf9eU03/XlhT/15YU/9gWlX/XlhT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/W1lT/1taVP9fVlH/XlxT/19WT/9hV1X/RmVn/13Cyv9J1+v/TNH4/0jS + 7/9E1+n/SMTV40qksTX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BRay8R0fP4OlF2Or/StLu/0/T7P9Z2eb/dI+c/0tVVv9YW1X/W1lR/1td + Vf9fVlP/YFhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9gWFX/XFlU/1taUv9eWlL/Y1lS/2VVUv9kV1b/V1ZW/1FZ + Wf9ei5P/Wtf0/07S8P9S0u//S9Xs/0fX6/9R1Or/VNPx/0vU8P9c1fD/VYWZ/19WUP9hW1b/XVdS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dVlL/Y1tX/2RV + Uf9mWFT/YVZW/1Niaf9mvsj/R9nn/0HV7f9D1PD/Rdjq/0bI2elMpLVF////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRbXBS0XQ + 4u1F1un/U9Ps/1bR8P9N1ur/Wpuo/1BaXf9QXFb/WVRQ/2BYV/9fWFb/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + VP9cWVT/WltS/1xaUv9iWFL/Z1dR/2lYVP9jVlX/XVdX/01uc/9a0On/W9Hx/0vS7/9K1+n/S9rl/07X + 5/9I1PH/VtPx/3XJ6P9DZ3P/YFhS/15YU/9fWVT/XVdS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2ZYVf9nVlP/WVdS/2pTWP9VY3D/Yr/Q/0vY8/9D1vL/RtXr/0bX + 6f9EzNztSaizS////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BQbfEUUTQ4u1F2Or/SNXx/0rQ9P9W1+r/TqSo/1ha + Wf9sV1P/Y1hX/15WVP9eWVT/X1lU/19YVP9fWVT/XllU/15ZVP9fWVT/X1lU/15ZVP9eWVT/XllU/15Z + VP9eWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9eWVT/XllU/1xZVP9aW1L/XFpS/19ZUv9kWFL/ZlhS/2RX + U/9jV1P/UlpZ/2C2xv9H1u7/T9Dy/1XT7P9V1+j/Utbu/0/O+P9T0PP/XrfI/09dXv9gWVT/X1lU/15Y + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dWVT/XllU/19ZVP9gWVP/X1lT/15ZU/9fWVT/X1lU/19ZVP9fWVT/WFpS/1Zb + Uf9jVlT/Q3Zz/17M1v9czfL/V878/0bT7v9E2Or/SMvc7UmsuFH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BPrbGTUnP4OdF1+n/R9Tt/03T8f9b1vH/YLLC/0VhbP9SVFf/YFZX/2NaVf9VWU//Vl5S/1lZ + T/9lWVT/ZVZW/15XV/9dV1f/ZlZW/2hWVf9iWFL/ZFhS/2NZUv9hWVL/X1lS/11ZUv9dWVT/X1hU/2JX + VP9iWFT/XllU/1tZU/9cWVL/XVlS/15ZUv9eWVH/X1hS/15YUv9ZWFP/V3F6/2LR5f9N0/H/UtLv/1rU + 7/9Z0PP/Rc75/0/U8/9Xmp3/WlhR/15YU/9eWFP/XlhT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFhW/2BYVf9gWFT/X1lU/19ZUv9fWVL/YFlS/2FZUv9iWVL/YlhU/3JWUv9wV1H/V1lU/1FZ + WP9bV1j/YldX/2BWVf9bWlT/WFpR/11aUv9cWlP/S1pV/0uCiv9izuP/SNHy/0rT9v9L1O3/RNfp/0XK + 2edGrLlL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BPLHBR0vM3eNG2Or/RdTq/07W + 9P9i0Ov/cMHR/0Z1fv9SVVX/Y1hQ/1taU/9eV1T/YldV/2VWUv9iWFL/XVlS/1xYVP9cV1b/XFhW/1xZ + U/9fWFP/YFlS/2FYUv9fWVL/XVlT/11ZVP9eWFT/YVhU/2JYU/9eWVT/XllU/1xZU/9bWlL/W1pS/1ta + Uv9cWlL/XFpS/1lXT/9ZW1z/ToWX/2TT6/9R0uv/VdLw/1fO9f9F0Pn/Wc/s/1F6ev9fVkz/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/X1hU/19YVP9fWVT/X1lT/15Y + U/9eWFP/XVlT/11ZU/9cWVT/YFdV/2FYVP9dWlH/W1pS/15ZUv9jWFT/YVZX/1xXV/9aWVf/XlhU/0db + W/9dmqD/dNHi/1PS7f9F0vL/Q9Xr/0XX6f9IxdbhO6i0Rf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BR6i4NUbL3M9G2Or/Rtbq/0/R7/9Z1+3/Z83e/2eNjf9aXVb/XFVV/2pT + Wv9pVFn/ZFhU/15bTv9fXE7/XFtQ/1BbU/9NW1X/VVpV/1hZVf9dWFX/YFdV/19XVf9dWFT/XVlU/11Z + U/9eWVL/X1lS/19ZVP9fWVT/XllU/1tZU/9aWlL/WlpS/1paUv9aWlL/XVtT/2FXUf9WUV//T5Wn/13U + 5/9S1O//UtP3/0fP9P9nxNz/S1ta/2ZaTP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1xaUv9dWlL/XllU/19YVP9gWFT/XlhV/1xYVf9aWFX/V1lV/1ZZVP9KWlj/TVpX/2Ra + T/9pXEv/Yl1K/2JbUP9fVVX/XlVa/1FRV/9faGv/c666/2DU6/9a1ev/S9Tt/0XX6f9F1+n/Q8HRzUqj + sjX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTaWwHUHG + 17NE1+n9Rtbq/1TQ7f9F1vD/Ttrp/1+wu/9SZ2//WlhS/1VdUP9VXE//Y1hU/2lWVP9fWVL/WV1L/1lc + TP9fV1b/YlZX/2hWV/9oVVf/Z1VX/2FWV/9dWFX/XFlT/1taUf9cWlH/X1lU/19ZVP9fWVT/XllU/11Z + VP9cWVT/XVlU/11ZVP9eWVP/YllS/2VVVv9WWF7/WpWg/13U5P9B1ev/YNjx/2SarP9aWFb/ZVlO/15Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WFtQ/1hbUP9dWVP/YVdU/2RW + V/9mVlf/ZVZX/2RWVv9jV1X/YVhV/2JZUv9gWlH/W1pS/1xZVP9cW0//WFpK/1teTf9cV1X/YoON/1DL + 2/9Q0/f/S876/0XT7v9F1+j/RdXo/US7y7FToKod////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BObzMC1K90JFF1uj3RNfp/0zW7P9R1O//T9Tv/1fG + 2/9MhJT/VVZd/1daT/9UXk3/VF5M/2JZUP9mVVb/ZVZW/2JaUf9kWFP/ZVdU/2NWV/9hV1f/XlhX/1xZ + Vf9cWlP/X1lR/19aUf9fWVT/X1lU/19ZVP9fWVT/YFhU/2BYVf9hWFX/YldV/2FXVP9fV1P/WFtR/1Fa + Uf9SVVn/cYaZ/03Z4/9B5en/W3mG/2BVWP9fVlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWlH/XllR/15ZUv9fWVT/X1hV/2FYVf9jWFT/Y1hU/2RZUf9nWlD/XVlT/11Y + U/9jWFH/YFtP/2FaUP9YVlb/RWRs/0yquf9O1uf/VNPu/07S8v9G1Oz/RNjq/0TR4/dItcWPQK28C/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BRqW5BUa1xF1Kz9/hRNfp/0XX6v9J1O7/V9Hx/2jU7/9gtcX/QHB5/01XWv9aVlT/YFhX/2hV + WP9mVVT/WltN/1xaUP9dXFP/WFpT/1dZVf9VWVX/WFlV/11ZVP9kV1P/ZlhT/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1hU/19YVP9gWFT/YVlV/2BXVP9fWVT/XFlT/11aV/9RUlP/VHZ1/4Ktqf9bZGP/WVhU/1tb + Vf9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2RYU/9kWFP/YFhT/1xZ + VP9YWVT/VlpS/1dbUv9ZWlD/XFpO/11cTf9dWVH/YlhX/2FSU/9hVln/R1pi/0uSn/9jx9v/YNXy/1XP + 7f9O1e7/Rtbq/0TX6f9JydrhRKq6W0GfrgX///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUS9zCVHx9e9Sdfp/0XX + 6f9L1u3/TtHq/13V7P9zzeT/ZJyw/0pkc/9KU1n/XlRU/2VYVP9fXFL/YFtT/1tZT/9dXFT/WFpU/1Za + VP9ZWVT/XlhU/2VXVP9mV1T/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFT/YVhU/2FY + VP9fWVT/XllU/11ZVP9aV1L/W1pV/1ZXUf9cXVf/VldR/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/ZVdV/2VXVP9hV1T/XVhU/1lZU/9XW1L/VllQ/1tbU/9dWVD/XFlO/2Ba + VP9aVFb/S1de/1p7iv9ztsv/ZdPp/1XT7P9P1O//TdXs/0XY6v9H1Ob/RsDOvUOuvSX///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUqfrQ9AucxtRdHi50XX6P9G2On/SdTs/03T9f9M0/j/Zcbk/2aY + p/9SaWP/WVpV/2FUVf9jV1X/ZFZS/2RXUv9hWVL/XlpS/15ZU/9fWFT/YldV/2JXVf9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9gWFT/YFhU/19ZVP9eWVT/XFhT/19cV/9aV1L/Xl1X/1hY + Uv9bWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9iVlb/YlZW/2JX + VP9iWFT/YFhS/19YUf9hWVX/YFhW/2BXV/9fVlb/XV1e/2R1e/9xtsf/W9Hp/0nT8f9N0/D/S9br/0TX + 6f9F1+j/RMve50Oww2tSnqQP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFSrrYvR8nZrUTV5/tE1+n/RtXp/03V7P9B2Of/S9/p/0/M2v9am7D/XWx8/0ZRXf9ZV13/YVZX/2ZW + Uv9mWVH/Y1lR/19ZUv9aWVX/WllV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XVdS/19bVv9bV1L/XVhT/15aVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tYVv9dWFb/Y1dU/2ZXVP9nVlP/ZVhW/1lWWP9LU1v/RFlm/2d+ + jv9bsMn/Vtfs/0zY5/9K1+f/S9fq/0bW6f9E2Or/QtLk+0TB0qtQpK8v////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wE6r78LT7G+VUvN3dNE1uf9RNjq/0bW + 6v9P0u7/WNP2/1vT9P9Y0uP/U7LB/0R/h/9JY2P/V1lQ/2BXTP9kWk7/X1pP/1xaU/9aWlT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFP/YFtW/1xX + Uv9eWVT/YFtW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/15ZVP9fWVT/XFlV/15Z + VP9lWFP/Z1dQ/15UTf9UWlb/RGpt/02Unv9ZxdT/Utfp/1XV8f9P0PH/S9Xu/0bW6f9E2Or/Q9Pm/UrG + 19NQp7dTOaW2C////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BMKCsE0PBz2tNy9vfRdfp/UTX6f9H1er/StXt/1LW7P9a1e3/Ztjt/2DD + 1f9XpLP/R3yG/z5eY/9LWlr/U1dT/15ZVv9jVlX/YVdT/2FYUv9hWVL/YVpS/2FbUv9hWlP/YVlT/2FX + VP9hWFb/XllT/11ZUv9eWVL/X1lT/19YUv9gWVP/X1lT/11YUv9dWVL/XVlS/2FYVP9hV1P/YFdS/2FZ + Uv9gWVL/YVpT/2BYUv9iWVP/Y1lV/2FWU/9XWVT/UVxa/z9XW/8/aHP/Uoye/2Cuxf9qzeT/Ztfv/1bU + 6v9P1ev/SNTq/0fW6/9E1+n/Rdfo/UrG1d9AtcZrPZytE////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSqq0A1C+ + zBdCu8uBR83e20jW6P9F2Or/R9bp/0jW6/9J1e7/SdTv/1fT8P9q0ej/dsXX/2ujrv9chIf/UGxu/1Jc + YP9LVVX/T1VT/1ZXVP9ZVlD/XVlR/2BZUf9hWVP/YFhU/2BYVf9cWFL/XVhS/2BaU/9hWVT/YVdS/2JY + U/9gWFP/X1lT/11ZU/9eWlP/YlhW/2JYVf9iWVP/YVlS/15aUv9YV1D/VFhT/0xUUf9KVVb/V2Rm/090 + ef9ajpX/cbbE/3DM4P9hz+r/VtPy/07T8f9L0u//Sdbr/0fX6f9F2Or/R9Xn/0bJ29s/tMKBS7XCF0eh + rAP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFNqrsfSrrLaUbH2s9F1Ob3Rdbo/0XX + 6f9F1+v/Q9Xs/0LW8P9F1+//Utrw/1jb7v9X0N//bL/L/2Otuf9bkpz/U3iA/1Jmav9YXV//WVtY/1hb + Vf9WW1P/U1lP/1xXVv9aVlT/W1ZU/1xVU/9cU1L/X1ZV/1xVVP9bVlT/WlZU/1pWVP9WV1T/WlpW/1xb + V/9cXVf/WGJe/1ZsbP9ZhYn/YqCp/2W3xP9qxdT/VNLv/1PZ9/9J1vD/RNrs/0Tb6f9C1+b/Rdfo/0XX + 6f9F1uj/RNPm90DB089ItcZpSKKyH////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BTqS1B1KqvVdKx9mlQsze8UXZ6/9E2Or/Rdbp/0jW6/9N0+7/UNDy/1DR + 9v9L0ff/TtL2/1TS9v9X0vP/X9Ht/1zF3v9Wuc7/T6m7/0efrf9FlaD/VoqT/1SFjv9PgYr/ToCJ/1B/ + if9Pf4j/ToCJ/1GDjP9WiJH/Wo2W/0Wcn/9Kpar/UK6+/1i81/9eyer/XdH3/1TS9v9N0vX/StLz/0fU + 8P9X0+r/VNPq/03V7f9H1ez/Rdbp/0XY6/9E2Or/Qsrc8UjE1KVMp7JXSqKuB////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATyi + sgdAscEpS7C8b0vE08NF0OLrQ9Xm/UTZ6v9F2Or/Rtbq/0jW6v9L1er/T9Ts/1HS7v9V0PD/WNHx/1rR + 8v9g0vL/Y9Xy/2TX8v9a2fD/Wtbt/1jV7P9Y1ez/V9Pr/1nV7P9Z1u3/Wtbu/1rX7/9Z2PD/Wtb2/1nU + 9P9X0/L/VdPu/1XU7P9U0+r/VtXr/1PU6/9O1ev/Sdbq/0fX6f9F2Or/RNjq/0PU5f1F0ODrSMDMw0uw + um1Brb4pQaOyB////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATehry89uspjSL/PrUnG + 1utH1OX/Rdjq/0TX6f9E1+n/Rtfp/0fW6v9J1ez/TdXu/0/U7v9R0+7/U9Lv/07U7/9O1O//T9Pv/0/T + 7/9P0u//T9Pw/0/T7/9P0+//TtTv/03U7v9N0vD/S9Pv/0vU7/9K1uz/SNbp/0jX6f9G1un/RNfp/0TY + 6f9F2Or/R9Pk/0jD0+lIwM+tO7XDYzmhqS////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFNn6sJTrfFGUKotjk3r8CJP8HRs0bM3c9Hzt7tRc/g/UbV + 5/9E2ez/Rdnr/0XY6/9G2Ov/Rtjq/0bX6v9G1+n/Rtbp/0bW6f9G1ur/Rtfp/0bX6v9G1+r/Rtjq/0bY + 6/9F2ev/Rdnr/0TZ7P9F1eb/Rc/f/UbO3utGzN3NPb7PszeuvYlIqLU5TLLAGU2fqgn///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BU5aeDVGgqjFMsr1LS7/NW0O8yYk/vMe5PL7L1zzD0O0/x9j1Qcze+0PR + 4/9E1Ob/Rdbo/0XW6P9E1Ob/Q9Hj/0HM3fs+xtj1P8HR60C9zNdCu8e5RbzIiUq+yllLsLlLUKKoMVOZ + oA3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAQAAAAIAAAEAIAAAAAAAACAEAAAA + AAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BTqCnEU6hqFdOrraZT7bAv0++yddNw9DnTMjW8UrM + 2vdHzt77RdDi/UXS5P9F1OX/RdXm/0XW5/9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX + 6f9F1+n/Rdbn/0XW5v9F1Ob/RdLk/0bQ4v1Hz977SMzb90vK1/FPx9TnVMXQ11jCzL9bvMWZXbG4V1mu + tQ////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BVo+VCVWkrV9VsLqFUrzInU7F06tKzt2xSNLhs0nG1LlIx9XRSMva6UjN3fdIz9//R9Hh/0fS + 4/9H1OT/RtTm/0XV5/9F1ef/Rdbo/0XW6P9F1+j/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX + 6f9F1+n/Rdfp/0XX6P9F1+j/Rdbo/0XV5/9F1ef/RtXm/0bU5f9H0+T/SNLj/0rS4f9L0eD1TM/e6UzM + 2tFLytm5SNHis0jL27FJwM6rTLXCnU6ptYVQn6lfVo2UCf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFSoqwzSbbDXUfB + 0G1Gzt9zSb7Nd020wJVMvszXTMTT9UvK2f9Jzt7/SNLi/0fW5/9F3O//RNzv/0Tb7v9E2u3/RNrs/0TZ + 6/9D2ev/Q9jq/0TY6v9E2On/RNjp/0TY6f9E2On/RNjp/0TX6P9E1+j/RNfo/0TX6P9E1+j/RNfo/0TX + 6P9E1+j/RNjo/0TY6P9E2Oj/RNjp/0TY6f9E2On/RNjp/0TY6f9E2er/RNnq/0PZ6v9D2ev/Q9ns/0Pa + 7P9D2+7/Q9ru/0bV5/9H0OL/R8zc/0jG1v9JwdD1SrzK102zv5VJvct3Qcvcc0G7y2tAq7pdRpmjMf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AWevtxNcvcovVMbWN0vR4jtPushhTrG+r0jA + zvFHyNf/Rs7e/0TY6/9D3vH/Q9zv/0Pb7f9D2uz/RNnr/0TY6v9E1+n/RNfp/0XX6f9F1+r/Rdfq/0bX + 6v9G1ur/R9bq/0jW6v9I1ur/Sdbr/0nW6/9J1uv/SNXr/0jV6/9J1uv/Sdbr/0nW7P9J1uz/Sdbs/0nW + 6/9J1uv/Sdbr/0jV6/9I1ev/Sdbr/0jW6/9J1uv/Sdbr/0nW6/9I1uv/SNbr/0fW6/9G1uv/Rdfq/0XX + 6v9E1+n/RNfp/0TX6f9E2On/RNjq/0TZ6/9E2u3/RNvu/0Tc7/9D3vD/Q9fp/0PM3f9Cw9T/QbjI8Uar + uK1JuMVhSM7eO0q+zDdLrrkvUZigE////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AWnDygVUx9MJSM3dCV22wBNlsbtvWr/M11LI1/dMzt//R9Xn/0XZ + 6/9F2Or/Rdjq/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfs/0fW + 7f9J1e3/S9Tt/0/T7f9R0+3/UtPu/1TU8f9V0/H/U9Lx/1LR8f9S0fD/U9Lx/1TT8v9V1PP/VdTz/1XU + 8/9T0vH/U9Lx/1PS8f9S0fD/UtHw/1PS8f9S0vH/U9Lx/1XT8f9U1PH/VNLz/1PS8v9Q0vH/TNPw/0rV + 7v9I1u3/Rtfr/0bX6f9G1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdjq/0XY + 6v9F2ev/R9Xn/0jL2/9KwM73S7C91VGcpm9Pp7ETQcjYCUK1wwlEn6kF////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AWHH0g1swcdnVcbQuUrK2tFJzt3dStLh60jT5f1H1eb/Rtbo/0XX + 6f9F2Or/RNjp/0TY6f9E2On/Q9jp/0PY6f9E1+n/SNbp/0zW6v9P1+v/UNbr/1DV6/9P1ez/T9bu/1DW + 8f9Q1PL/TtLz/0/R8/9O0PT/TtD1/07R8/9L1O//TNXv/0zV7/9O1O//TtXw/03U7/9M0+7/S9Pu/0rS + 7f9K0u3/TNPu/03U7/9O1fD/TtXw/07V8P9N1fD/TdXw/0zV8P9M1e//Tdbw/1bS8P9Z0e//WNHw/1jR + 8f9Z0vL/WNPz/1fU9P9U1PT/U9Py/1DS8P9P0vD/TdTu/0vX7P9J1+v/Rdfp/0TX6f9E1+n/RNfp/0TX + 6f9F2Or/Rdjq/0XX6f9F1ef/RtTl/0bR4/tHzt/rRcrb3ULE09FCscC5RJqkZ0ivvAv///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wF3vsMxY8POfVLJ2JtRz92zUtDe20rR4f9H0+T/Q9jp/0Pa7P9D2ev/Q9jq/0PY + 6v9C2On/Rdfq/0rW6v9O1un/UNTo/1HT5/9S0ub/U9Tm/1PV6P9V1un/Vdfp/1LV6f9R0+n/TdPq/03T + 7f9N0/D/TdLz/0rQ9v9L0Pf/S9H5/0vR+/9I0fj/P9Tw/0DW8f9C1vL/Rdfy/0bZ9P9G2fX/R9r1/0fa + 9f9H2vX/R9v2/0bZ9f9G2vX/R9r1/0fa9f9G2fT/RNfy/0PW8v9C1vH/Qdby/0LX8v9S0/L/WNLy/1jR + 8v9X0fP/WNHz/1fQ9f9V0PX/UtD0/1LP8/9Rz/L/U9D0/1PS8f9Q0uz/TdLq/0zT6P9P1ur/Udrr/0/b + 6v9L2uj/R9jo/0XY6P9E2Oj/Q9jp/0TZ6v9E2uz/RNvu/0TY6v9E0OH/RMrb/0XE0ttIxdWzS8LRm02s + tntRkpov////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BXsTSM1TH11tTy9p1YMnUr1XM2/dNz9//RNbn/0HZ7P9D2ev/RNnq/0TY6f9E1+j/Rdfp/0jX + 6v9M1+r/Tdbp/0zW6v9L1u3/UNTt/1TU7v9X0+//WdTw/1vV8P9a1fD/WdTu/1bQ6/9X0ez/Xtbx/1zV + 8P9d1O//X9Xv/2HV7/9j1vH/Ztjx/2jb8f9p2/P/bNvy/3Pc7/9z3O//ctrt/3HX6/9v1un/bdTo/2zT + 5v9r0uX/atHk/2vR5P9ozuL/aM7i/2nP4/9q0eT/a9Ll/2zT5/9u1en/cdjr/3La7v9z3fD/c9vx/3Hb + 8v9v2vL/btjx/2vW8P9o1PD/ZNPw/2DT8P9g0/H/XtTz/1rQ8P9Y0O7/V9Lw/1bT8v9U0/D/VNLu/1HT + 7P9O0+v/TNTs/0rV7v9I0+3/SdTt/0rW7f9I1+z/Rdjq/0TX6P9E2On/Rdnr/0Xb7f9F3vD/Rtfp/0jK + 2v9JwM71TLK/rUa/znVDt8ZbRa27M////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BaMTOBWzA + yhtUydcrS9LiMVjI2LVTydr/R9Lk/0HY6/9C2ev/RNjr/0XX6v9F1+n/Rdbq/0bW6v9G1uv/SNbr/0vW + 6/9R1ez/WNXp/17U6f9U1Ov/RtXx/0jU8v9K1PX/TNb4/0/X+v9T1vv/VdX6/1jT+f9Yz/f/XtD3/2nV + +P9o0vT/as7t/2rL4/9qydr/bMjV/27Izv9tycn/asfH/3TExv+Ovsb/jbzE/4i3wP+Esrv/gK63/3up + sv93pa7/dqOs/3Whqv90oKn/daGq/3ahqv91oqv/dqWu/3mnsP99q7T/gbC4/4a0vf+KuMH/ibzD/3e/ + yP9sws7/a8PQ/27F0v9sxdX/bMfY/2rK3f9pzuT/a9Hp/2bU7v9h0uz/XdLv/1vW9v9a1/r/Vtb5/1HR + 9f9JzfL/Rszy/0fN9f9K0fj/Tc/3/1HP9v9T0fb/UNPz/0vV7v9I1uv/SNbr/0fW6f9G1+n/Rdfp/0XY + 6v9F2ev/RNvt/0Td8P9E0eP/RLzL/0W3xbNJ0OIvTcDQK1CisRtNqbgF////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWfE + zzdrwculVMnX8UvS4v1G1uj/Rdfq/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rtfq/0fV7f9J0vD/TNLy/1LU + 8/9X1PH/V9Lr/1rS6P9f0+n/VdTs/0fU7/9J0/D/SdHw/0jP7/9Jzu//TM3w/1HP8/9X0fb/YNb7/1/Q + 9f9WwuT/Ur3d/0yy0P9Ep7//O5yu/zORn/8tiZH/I4GE/xt6ff8dcHX/KGBp/yhgaf8nXmj/J11n/ydd + Z/8nXWf/J11n/yleaP8rX2n/K19p/yxgav8sYGr/Kl9p/yddZ/8mXGb/JVtl/yVbZf8mW2X/Jlxm/yRe + Z/8daXP/GHB9/x13hf8ogZD/L4qb/zmUp/9AobX/SK3E/1C3z/9Pvdf/Xs7p/2DV8f9W0O//U87x/1PQ + 8/9V1Pf/Vtj7/1PZ+/9Q1fr/TdL3/1HT+f9V0vn/VM31/1PM9P9Vz/T/VdH0/1LS8f9N0+z/Sdbq/0bX + 6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XY6v9G1uj/SdDi/U2/0PFQo7KjTaq5N////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFUy9sJZsHPgVHH + 2LlNz9/bS9Pk80jU5f9G1uj/Rdfp/0TX6v9E1+n/Rdfp/0bY6v9D1+f/QdXk/0PW5v9I3Oz/S9vu/0rX + 7v9L0+z/TtLt/1XV8P9Y1vL/VtTx/2TW7/962+z/gtzr/4Pb6/+E1+X/gszZ/3q7xv9vqbP/ZJWc/16E + iv9aeX3/WHJ1/1twcP9ba2v/Wmdm/1dkY/9VY2H/VGFe/1BeXP9MW1n/TVhW/1JXV/9RVlb/UVZW/1FW + Vf9QVVX/UlVV/1FUVP9TVVT/VVVV/1VVVf9SU1P/U1NT/1NUU/9RVFT/UlVU/1BVVP9QVVT/UlZW/1RX + WP9TWVj/SVhT/0dZU/9KXFf/Tl5a/1BgXf9SYWD/VGRk/1dmaP9ZaW7/VGxx/1h1fP9afof/W4eS/2OX + ov9tqbX/er3L/4LO3P+F1+b/h9rp/4Hb7P9r2er/W9fp/1rW6/9a1uz/WNbu/1PX7/9N1u//R9Xu/0bV + 7/9E1O7/RNTt/0XW6/9F1+n/RNfo/0XX6f9F2Or/Rdjq/0bW6P9H0uT/R87f80fK2ttIvc25R6Kwf0rC + 0gn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AV7D0TtcxdSDT8/fp1LP + 3+lK0eL/Q9bp/0HZ7P9D2Or/Q9fp/0TX6f9G2On/R9bp/0fW5/9F1+j/QNjk/0La5v9E3ur/Qd3p/0Db + 6f9A2Ov/RNjx/0vd+f9S4P7/UNz9/0rY/P9Nx+P/V7TD/1mst/9Mnqr/RZCZ/0aEiv9Ien7/SXJz/0tn + Zf9QXlv/U1hS/1VUTP9aVEj/XlJH/2BRSP9hU0v/YlVP/2NWUP9iVVH/YFVR/2BUUf9iVlP/YlZS/2JW + Uv9jV1P/ZFdT/2ZYVP9lV1T/aFdU/2lXVf9pV1X/ZVRR/2ZTUf9mVlP/ZVdU/2ZYVP9jV1T/Y1ZT/2NX + U/9kV1T/ZFhU/15ZTv9dWkz/YFpO/2FZT/9gV03/X1VN/15TTP9eUUz/XFBP/1ZRUf9PUlL/SlVZ/0le + ZP9IaW7/RHB2/0J3f/9Agov/RpCZ/1SgqP9VqrX/TL/L/0rU4P9T3e3/W+P1/1Xh9f9K3PH/Qdjw/z7Y + 8v9A1/X/Qdb0/0HV8f9D1e7/Rtfv/0jW7v9H1uv/Rtbp/0TX6P9E2On/RNnr/0Tc7v9F2Or/Rs3e/0fD + 1OlLytynTbXEg0qvvjv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFPytgJW8PORUvO3lVVytq3VMzc/0jU + 5v9C2ez/RNnr/0TY6f9F1+n/Rtfp/0jX6v9I1ur/StXt/0zT7f9M1Oz/S9Xs/0vV7P9R2O7/Vtrv/1jX + 6/9d2Ov/Zdnr/2nV6P9my97/XrvN/1Grvf9JobT/R46d/0V5gv8/bnT/L15l/ydSV/8qTlD/M1FR/z1V + Vf9HWVb/UFpW/1VaVf9YWlP/W1pR/15YUf9gWFH/YFlT/2FZVP9hWVT/YFhV/19YVv9fWFX/XlhT/15Y + U/9dWFP/XlhU/2BZVf9hWVX/YVlV/2NZVf9kWVX/ZFlV/2JXU/9jV1T/Y1lV/2JaVf9iWlX/X1lU/15Y + U/9dV1L/XFdS/1xXUv9dWlP/XltU/19bVf9gW1X/YFtT/2BaVf9gWVP/XllT/1xZVP9ZWVb/U1ZT/05V + VP9KV1j/RFdZ/zpTVf8wTlL/KU5U/yxVW/85Ymn/PWxz/0CBif9HmJ//Uqev/2C0v/9ivcz/Y8bX/2bS + 5f9m2vH/Y9v1/1nY8v9R1fH/TNTx/0nU8f9K1PH/SdTu/0nW7f9I1+v/R9bq/0bW6f9E1+n/RNjp/0Xa + 7P9G3fD/SNXn/0rB0v9Jv8+3R8vbU0Wuu0VJxNMH////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AVG1vw9OvssdTsvaWVfH0+lKz97/RNfp/0PZ + 7P9E1+n/Rdfp/0XX6f9G1+n/SNfp/03X6v9Q1uz/TtTu/03R8v9O0fT/T9L0/1TS9/9b0vr/Yc71/2jJ + 7f9xxeT/e8Pd/4S+0P+Crbj/dZCV/2Z1cv9WYFr/UVJK/19SS/9uVlP/aFRR/2dTT/9oVVD/aVhR/2lb + Uv9pW1P/ZVpQ/19WTP9fVk3/Y1tS/2NbUv9kWlP/ZFpT/2RaVP9kWVX/ZFlV/2RYVv9mWFf/ZVpX/19c + VP9fXFT/XltT/15bU/9eW1P/X1lS/19ZUv9gWFH/YFhR/2BYUf9gWFH/YVlS/2FaU/9gWlP/YFpT/15b + U/9dWlL/XVpS/11aUv9dWlL/YldW/2NWWP9iVVX/YlVT/2NYUf9jV1P/Y1hS/2JaT/9hWk//YFlN/2JY + Tf9jWEz/ZVhO/2ZZUf9oWlL/alpU/2xaVf9qV1P/alNU/2tSU/9jTUv/WU1I/1lXUP9lY2D/bHh7/3yU + nP+Irrr/hr/Q/4DI2/9vyuH/ZNDs/1zW8/9M0+7/R9Tv/0jU8P9L1vL/Tdbx/0zU7v9L1ev/SNfq/0bX + 6f9E1+n/Rdfp/0TY6f9E2+3/Rtnr/0fL3f9FtcPnScfWV02+yx1LsLwP////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFStL57ULzJ3UfQ4fVG1+n9Rdfo/0XX + 6f9F1+n/Rdfp/0XX6f9E2Or/Tdbq/1XV6v9V1ev/U9Tt/07T7v9M0vP/TNL0/0zS9f9Q0vb/VtL5/1vO + 9P9XvuL/RqLB/zOCnf8naXz/KFto/zZaYf9IX1//TV9d/1BcV/9ZVlL/Y1NR/2NWVP9mWVb/Z1pX/2Va + Vf9jWVH/YlhR/2FZUf9iW1L/Y1xT/2FaUf9hWlH/Y1lS/2NZUv9iV1H/YVZS/2JXU/9jV1T/ZFdW/2NY + Vf9cWVH/XFlR/1xZUf9cWVH/XFlR/15YUf9fWVL/YFlS/2FZUv9hWVL/YFhR/2FZUv9hWlP/YFpT/19Z + Uv9dWlL/XFlR/1xZUf9dWlL/XVpS/2NYV/9kV1j/YlZW/2JWU/9jWVL/ZFlV/2RaVP9jXFH/YlxR/2Jc + Uf9jW1H/ZFtR/2RbUf9jWVL/YlhR/2NXUv9kV1P/Y1dU/2VVVv9mVVf/ZlhY/1xZVf9PVlL/UFdW/0dc + YP88XWf/MV9u/ylrfP81hZr/QqS9/1TF4v9a2Pf/Ttfz/0jX8/9I1vL/SdXy/0rU8f9O1PD/U9Xu/1bW + 7v9N1+3/Qtfr/0XX6f9F1+n/Rdfp/0XX6f9F1uj/Rdbo/UnT4/VNusfdS7C7ef///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BSrPBE0ajsINDwtK3R8zc50jR4/9F1uj/RNjq/0TX + 6f9E2Of/Rdbp/0rV7/9O1vL/TNHt/0jS6v9K1uv/T9js/1nW6v9i1eb/ddrr/4je7f+M1eH/f7zG/3Cd + pv9ef4X/Vm1y/1doav9UXmD/UFZX/1BTU/9UVVP/WFlV/1haV/9YWlb/XFhU/19XU/9gWFT/YVlV/2FZ + Vf9hWVT/YFlT/2BZU/9fWVP/YFpU/2BaVP9fWVP/X1lT/2BZU/9gWVP/YFhT/19YU/9gWFT/YFhU/2BY + VP9gWVT/XllT/15ZU/9eWVP/XllT/15ZU/9fWVP/X1lT/19ZVP9gWVT/YFlU/19ZU/9gWVP/YFlU/19Z + VP9fWVP/XllT/15ZU/9eWVP/XllT/15ZU/9gWVX/YFlV/2BYVf9gWFT/YFlU/2BZVP9gWVT/YFpT/2Ba + U/9gWlP/YFpT/2BaU/9gWlP/YFlT/2BZU/9gWFP/YFhU/2BYVP9gWFT/YVhV/19aVf9aWlX/V1lT/1lY + Uv9WWVL/U1hS/1FXUv9OWVX/UWBe/1VpaP9VcnP/WYOH/2qiqP9/wcr/iNfj/4De7f9v2uv/X9Xp/1TW + 6f9T2O3/UtXx/0zP8f9M0fD/TNPu/0fW6v9D2Of/RNjp/0XZ6/9G1+j/R9Hh/0fM3OdEyNi3P6axgUi4 + xRH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFRmKITUau3W0q/zaNFwdDtRM7f/0PY6/9E2u3/RNfq/0XX + 6v9G1uz/SNTt/0rS8f9N0fT/T9D0/1LT9P9B0+3/O9ru/0rj9f9b4fP/YdXi/2PBy/9iqbD/XpGU/1d7 + ev9ZZ2P/V1VO/1lORv9iU0j/aFVM/2pXT/9qWFL/ZlhT/2FZU/9dWVT/XFlV/11ZVf9fWlT/X1lU/15Z + VP9eWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/19ZVP9bWlT/WVpU/1ta + VP9eWlH/X1tO/2JbTv9nW07/ZlpN/2JXS/9gVEf/WFJG/1JaUf9UbGr/WoCB/1uVmv9crbf/YMbT/1/Y + 6P9T4vH/St7w/0vU8/9Sz/r/VNL6/1jR+f9U0fP/S9Lt/0fV6/9F1+n/RNfp/0Ta7P9F2ez/RdDh/0PC + 0e1Kw9KjUbG8W0+bpBP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUXH1wNCsr8/TKq2gU24xuVI0OH/Rd3w/0XZ6/9E1+n/Rtjp/0fX + 6f9G1un/Sdbr/03U8P9R1PP/UtPy/1PQ8P9c1/T/Ztry/2bW6f9eytr/WLnK/1Glsv9BhZD/MWVt/ytR + Vv80T1D/SVRT/1lYVf9eWVT/YlhT/2VYU/9lWFP/ZFhT/2JYVP9fWVT/XFlW/1tZVv9dWVX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFpU/1la + VP9aWlT/XVpT/11aUf9fW1D/YltQ/2JaUP9hWlH/YFpQ/15cVP9VXFf/Q1RU/zRQUv8rVFv/MGlz/0CJ + lv9Rprb/Xb7P/2TL3f9o0uz/Z9f5/17X9/9b0/T/V9Dw/1DR7v9J1uz/Rdfp/0bW6f9G1+n/RNjp/0XZ + 6/9G3e//SdPk/028yeVLrbiBQrbDP0jN3AP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BSqu4B0+2wBFGx9dBQrfF60LQ4f9E2ez/Rdnr/0XX6f9F1+n/RNfp/0rZ + 6/9N2Or/SdXl/0vW5v9Q2un/Utvq/1fa6/9e1u3/Yczl/5bL4v+htcX/dYiW/1Flc/9GVWD/SVJb/1FV + Wv9YVlr/YFla/2dcW/9pWVf/Z1ZT/2ZXVP9mV1T/ZldU/2VXVP9iV1X/X1hV/1xYV/9bWFf/XVhW/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/1xZ + Vf9ZWVX/WllV/1xZVf9eWVP/YFpR/2JaUf9kWVH/ZllR/2dZUf9oWFL/ZlVU/2FTU/9fVFb/W1Va/1FR + WP9FTFf/RlBd/2Vtff+Il6f/kLrM/3rK4P9hz97/Udbh/0ra4/9I3Ob/Rtvo/0XY6f9L1ev/S9br/0XX + 6f9F1+n/Rdfp/0XY6v9E2u3/Q9Lk/0K6yOlJzNw/T7rDEUivugf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUuptU9Qsbq/R87e60XU5f9F1uj/Rdfp/0XX6f9E1+n/Rtbp/0rV + 6/9Q1+z/Ttfp/0nW5P9O2+v/SNfm/0jW5v9Q2uz/U9Tr/z2xzP8+e5T/RGFy/0Nfbf87V2b/P1Rh/0ZU + Xv9NVVv/U1VY/1pVV/9gVlT/ZVZU/2hXVP9nV1T/ZldU/2ZXVP9lV1T/YldV/19YVf9bWFf/WlhX/11Y + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9cWVX/WFlV/1lZVf9cWVX/XllT/2BaUf9iWlH/ZVlR/2dZUf9nWVH/ZldR/2RVU/9kV1j/Yllc/15c + YP9XWmP/S1dj/0JTYf9FVWX/Q1pr/zZoe/8thZz/PrLE/0/b6f9S6PP/Rt/q/zzW4/9A2Of/Udbu/1bT + 7/9N0ez/SNXs/0TX6v9F1+n/Rdjq/0XX6f9F1Ob9StPj60+1vb9IrbdN////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BT5KdDT2wxotDwtTVSM3c/0bV5/9F2ev/Rdfq/0XZ6v9I1+r/TNTq/1HV + 8P9P1fH/SdDs/0rO6f9Y1Oz/atzv/4Pg8f+Gzdv/c6Wv/11+hf9Wcnr/T1pg/1FRVP9YV1r/WFhb/1pY + Wv9bWFj/XVlY/19ZWP9fWVX/XlZR/19XUf9iWFP/YVhT/2NYVP9jWFT/Y1hU/2NXVf9iV1X/YldX/2JX + V/9gV1b/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFhV/2FYVf9hWFX/YVhV/19YVP9fWVP/X1lT/19ZU/9gWlL/X1pS/2FZUv9jWVP/ZVlV/2VZ + Vv9iV1T/XlVV/11WV/9cV1n/W1VY/1VRVf9QVlj/TWVl/0dwbf9Xh4r/b6y2/3zM3v952vH/Zdjz/1PS + 8/9O0fX/UdP2/1DT8/9K1O3/RtTp/0TW6P9E2On/Rdnr/0fX6P9Jz97/RMXW0zy1yolDkqAL////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFIrbgTUaWuW0yvvJVBwtb7Qtbq/0Tc7v9E2On/Q9fo/0XY6P9D2Of/S9jq/1bW + 8P9R0O//StPz/0bW9v9O2vv/Wdf1/1O/1f9cprn/ZIqY/2Job/9fTEz/ZFFP/2lXU/9qWVX/aVhW/2hX + VP9nV1T/ZVdT/2VZVP9lWVX/YltT/2BZUv9fWVL/X1lS/19ZUv9hWFT/YVhU/2JYVP9jV1X/Y1dV/2RW + V/9mVlf/YldW/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllU/2JYVf9mV1X/ZVdV/2RXVf9gWFX/XllU/11ZVP9dWVT/XVpS/1xaUv9fWlL/ZFpS/2RW + UP9lVk//Z1dQ/2lXUv9rWFT/a1dT/2lWU/9sVlT/aVZQ/2BXSf9TV0f/V1dU/1hmcf9Yhpz/XafH/1rC + 5v9M0/r/Rtj//0vV/f9N0Pb/TdLx/1DW7v9P2Oz/SNfp/0PX6P9E1+n/Rdzu/0PX6/9Bxtj5SLHClUul + sVtHsL0T////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFCvM0hR7C9fU28x+9I1eb/Rtrs/0XZ6v9F1+n/SNfr/0rW6/9L1+z/SNXo/0/W + 6/9a1/H/U9Hr/1vT7/9j1vH/ZM3n/1mxyf87h5n/KV9t/y5MVv9FTlT/XVVW/15WVv9lXFf/ZFtV/19W + Uf9eVVD/YFdS/19YU/9dWFP/XFdS/1xZUf9dW1P/XVtT/11ZUv9dWVL/X1hU/2BYVP9hWFT/Y1dV/2NX + Vf9lVlb/ZlZW/2JXVv9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9jWFX/Z1dV/2VXVf9jV1X/YFhV/15ZVP9cWVT/W1lU/1taU/9aWlP/XFpU/19a + U/9fWFH/YVdQ/2RaU/9mXFX/ZltW/2VZVP9jWFP/ZFhT/2FWUP9cVE7/W11V/1VZWf89TVX/J01d/y1l + e/9Ai6b/UbLP/1zJ6f9f0vH/X9Tz/1fT8P9a2PH/V9fu/03T6f9J1+z/R9fr/0XX6f9F2Or/R9rr/0vY + 6/9LvMrvRbTCe0XD1CH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AVKjrwVLxNUHQ7rLqUPG1v9F2uv/Rdfp/0XX6f9E1+j/SNbr/1TU8P9c0vP/V9L0/1XT + 8v9U0ez/WNHo/2TZ6f+D0eP/i7TE/3qFk/9rXWj/Z1hf/2paXv9oWFr/ZFVW/2VZWf9iW1f/XlxP/1lb + Sv9XWkr/W1tN/1xgUf9bYVT/Vl5T/1FbUP9RWlD/UlxR/1NcU/9VW1T/WFpU/1paVP9cWVT/X1hU/2JY + VP9kWFT/aFdU/2lXVP9kWFT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/ZVhU/2xXVP9pV1T/ZFdV/2BYVf9cWVX/WFlV/1ZaVf9TWlX/U1pV/1NZ + Vf9VXFb/WmJY/1xfVv9VWU7/UVVI/1dZTf9fYVX/YWRV/1heTf9hW1L/d1pg/2lPU/9fTlH/X1dY/2Rc + Xf9gVVj/XFBW/2lmbv99kp3/ib3K/4bU4/9s1ub/WdXq/0/Q6v9PzOz/V9X2/0/V8f9H1uv/RNfo/0XX + 6f9F1+n/Rtrs/0TK2/9FwtKnTMnZB1CnsQX///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUOhrwtTnqpxTMHSy0bQ4fVF1+j/Rdjq/0XY6f9D1+f/Rtnt/1PU8v9ezfP/W8vx/1PP + 8v9U1fb/Vdn1/1XW7v9Sz+L/R5yv/zxqff9HVWX/YlRi/2NUXP9fT1P/ZFNW/2hZWv9iVlf/X1dT/11b + Tv9aXkv/WF1M/1pbTf9XXEz/VVxO/1RdUf9SXlH/Ul1S/1BbUf9SW1L/VFtU/1daVP9ZWlT/XFlU/19Y + VP9iWFT/ZFhU/2lXVP9qV1T/ZFhU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2VYVP9tV1T/aldU/2RXVf9gWFX/XFlV/1hZVf9VWlX/UlpV/1Ja + Vf9TWlX/U1tU/1NdUv9WXFL/WF5S/1leUf9ZXVD/V1pO/1ZbTP9XXkz/YFpR/25RWP9tU1f/ZVVZ/2BZ + Wv9gWFr/YFRY/1xQWP9YVV//RVxp/zhwgP9Fmqv/XdDi/1vg9v9R2fT/UdHz/1PP9P9Uz/T/TdPy/0XV + 7v9E1uj/RNfp/0XY6v9E1uj/RtPj9U3H1slRoqtvRKe1Cf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUCquC8/q7qdSsLS30fQ4f9G2Or/Rdnr/0TX6P9F1Ov/Ttfv/1LW8f9S0/D/UNHs/1DS + 6f9i1+//eN7z/3zM3v9noa//SnqC/0hkav9IVFj/UVNR/2BYVv9hWFT/YFRQ/2RWU/9jWVb/XFhV/1tY + VP9gWlD/Y1xO/2JbT/9hWlD/X1lP/11ZUf9eWVP/XlpT/1xaVP9bWVT/W1lU/1tZVf9cWVX/XVlU/15Z + VP9fWVP/YFlT/2FZU/9iWVL/Y1lS/2FZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9iWVP/ZVlS/2RZUv9hWFP/XllT/1xaVP9bWVX/WllV/1lZ + Vv9ZWVb/W1lW/1xYVv9bWFT/X1hV/2FaVf9iW1T/YVpT/19YT/9dWU7/XlxO/2NZU/9pUVj/alRZ/2dX + WP9kWVX/XlpT/1hbUf9WW1H/UllS/0ZWUP8+WFT/RWVo/1yAi/9uprX/fszf/4De9/9m2PL/Vc/s/0zR + 7/9K1vP/S9jv/0jU6f9E1uj/Q9jq/0bY6v9I0eL/ScXU30GxwZ1Gr78v////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUe3xkFEtMOtQcbX/0Tb7v9E2ev/Rdjp/0XW6v9H1e7/StTz/1TR8f9Y0vD/TtPu/0LZ + 7P9I4O3/W9Tn/1+4x/9cjZn/WGNt/1FOUf9cUVH/ZFhR/2RcT/9hXE7/YVxO/2RaUf9mWFL/YVhS/1hZ + Vf9YWVb/Y1pS/2laT/9oWlD/ZVlR/2VZUf9kWFP/ZFhU/2VYVP9iWFX/YlhV/2FYVf9gWFX/X1hV/19Z + VP9fWVT/X1lT/19ZUv9fWVL/X1pR/19aUf9fWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFpS/2BaUf9hWlH/X1lS/11aUv9cWlT/XFlV/11Z + Vf9eWFf/XlhX/2BYV/9iV1f/YldY/2VVWP9lVlX/ZVdU/2VYU/9mWVH/ZVpR/2NbUP9mWFX/aVNc/2lT + Wv9oVVb/Z1hR/19cT/9TX0v/UWFL/1JgTP9VX0v/V1xL/1lUTv9eTlX/XWNw/2SPoP9sus7/YtTo/1XY + 7/9J1PD/RtPy/03W9P9W0/D/UdXs/0fX6v9D2On/RNnr/0Tc7/9Cydv/SbjIrU27zD////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BSZ+uD0HB0ilGu8vPR8zd/0fc7v9F1+n/Rdfp/0TW6P9G0u3/S9H2/1LV+/9Sz+7/VdPt/1jW + 7v9Y1en/Vsza/0upuf8udID/JVFY/z5PVf9ZYGD/XFpZ/15ZUv9fW1D/YFtR/2BbUf9iWVH/Y1hS/2BY + U/9aWVT/WllU/2JaUv9mWlD/ZVpR/2RZUv9kWVL/Y1hU/2NYVf9jWFX/YlhV/2JYVf9hWFX/YFhV/2BY + Vf9gWVT/X1lU/19ZU/9eWVL/XllS/15aUf9eWlH/XlpS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YUf9gV1P/YVhU/2JaVf9iWVX/W1VS/1ZS + UP9XUU//VE1L/1FLSP9VT0v/YFpW/2tkYP90bmn/eXNv/21nY/9fWVT/Y1lS/2JZUv9hWlH/Y1lT/2VV + V/9lVlf/ZVdV/2RYUv9gWlH/WF1O/1deTv9WXU//VV1O/1VeUP9XXFX/WVhc/0NQWP8vVmL/NnaF/0um + uP9dyd7/XNXu/1LU7v9Q0+//WdTx/1jW8f9P1e3/RtXo/0XW6f9F1+n/Rdzu/0rN3/9Lv9DNQMfYKT+h + sA////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BUJ2oDUmerWdBwdLtRNTm/0XZ6/9F1+n/Rdfp/0bX6/9Czuv/Rcvy/07O+/9U0fv/Vdby/1Ta + 6v9y1+T/i7rH/3OFjv9eXF//W1dQ/1xeT/9YXEv/UlVF/1paTP9dXU7/XFtQ/11ZVP9dWVT/XFpT/1ta + Uv9dWlL/YVpR/2FaUf9hWVT/YVhV/2FYVf9jV1X/Y1dV/2RWVv9kVlf/ZFZX/2ZWV/9mVlf/ZlZX/2VW + V/9jV1f/Y1dV/2BYU/9eWVP/XFlT/1pbUf9YXFD/V1xP/1tbUv9gWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFH/YFdT/2FYVP9iWlX/YllV/1tV + Uv9WUlD/V1FP/1RNS/9RSkj/Vk9L/2BaVv9rZGD/dG5p/3lzb/9tZ2P/X1lU/2FXV/9gV1f/XlhW/1pb + Uf9YXkr/WF5L/1tdTv9dWlH/YlhT/2lXVP9oV1T/ZVdU/2BaU/9ZW0//UFlM/1FbTv9dYFX/YF1W/1dX + Vf9SXGP/a4uV/4bE0P+B3+r/Xtfk/z/U4v9A2u//UdLx/1fK6/9L1Ov/Rtfp/0XX6f9F2Or/RNXn/0DH + 2O0/oK9lSJynDf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BTaCrKVCptZlJxNblRNPk/0XX6f9F2On/Rdfo/0fX6v9F0u3/StT4/0zT/v9Mzv3/TM37/0vZ + +P9A1uf/PKq3/0NygP9LWmL/XFZZ/19XTv9cXUz/XGJO/1ldTP9bXU3/XFxN/1tbUf9bWVX/XFlV/1ta + VP9aWlL/XlpR/2RaUP9kWlD/Y1lU/2JYVf9iWFX/ZFdV/2RXVf9lVlb/ZVZX/2VWV/9nVlf/Z1ZX/2dW + V/9mVlf/ZFdX/2RXVf9gWFP/XllT/1xZU/9ZW1H/V1xQ/1ZcT/9bW1L/YFlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFpU/2FaVf9hW1X/YVpU/19ZU/9eWFL/WlRN/1ZPSf9QSUL/TEU+/0xF + Pv9STUn/X1tb/29qaf97d3b/hoKC/5aTkf+rp6P/vLi1/9HOzP/j3tv/rqii/3FrZv9iV1f/YVdX/19Y + Vv9bW1D/WV9I/1lfSf9bXU3/XVpR/2NYU/9rVlX/alZV/2ZWVf9hWVP/WVxQ/1NgUf9TYVL/VltO/1lW + Tf9ZWVX/U1xj/zxdZv8zdYH/Rau4/1je7P9D5PP/Ot7y/0zN7/9jyPH/YNT3/0vV8P9E1+r/RNjp/0XX + 6f9E1Ob/R8nb402qtpdJn6kp////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BRaSzQ0ewvqlJyNjzRtjq/0XZ6/9E1+j/SNjs/0vY7/9O1O3/U9Ls/1nV7/9c1PH/Ytfz/2/V + 7/9+t8T/YZKZ/0Rrcv9CUlr/Sk5V/1lTV/9gWFn/YFpW/19aU/9gXFH/YFxO/19cTP9hXE3/ZVtO/2Rb + Tv9jW0//YFlR/1hZVf9PW1f/T1tX/1ZaVv9bWVT/WllV/1xZVf9cWVX/XVhV/15YVv9eWFb/YVdW/2FX + Vv9hWFX/YlhV/2FYVf9hWFT/X1lU/19ZVP9eWVT/XVpT/1tbUf9aW1H/XVpT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YVP9fWVX/XllV/15Z + Vv9dWFT/XVhT/11YU/9cV1L/W1ZR/1hTTf9XUkv/VlBK/1ROSf9STUf/V1JM/2JdV/9wa2X/fHdx/4qE + fP+Wkov/pKGe/7Wysv/EwcH/1dPS/93c3P/l5OT/7u3s//b19P///////////87Lx/99d3L/W1lW/1pZ + Vv9YWlX/VFtU/1FcUf9RXFL/V1xR/1xbUf9fWlH/YlpQ/2JaUP9hWlD/X1pQ/19aUv9kW1f/Y1pY/2JU + Vf9kUlX/ZFZZ/1xZXP9JUFL/QFVV/1Bwb/9omZr/a8TN/2vZ6v9l2vH/YdTu/1/U8v9V0vP/TNPu/0bW + 6P9E2Oj/Rdjq/0ja7P9Jy9rzRbLAp0Kms0P///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFErr4DTKq4RUeywb9Dy93/Q9ru/0XZ6v9G1+n/Rtfp/0fU7P9J0e7/TtLu/13X7P9i1un/Zdfp/2DQ + 3/9bsrv/hnx6/3dYVv9fTE7/W09U/15VW/9hVl3/X1Rd/15QWP9fUVT/ZVpT/2RbTv9jXkr/Z15I/25d + SP9tXUj/a1tL/2RZUf9SWVj/O1td/zpbXv9KWlj/VFpU/1JaVf9UWlX/VFpV/1ZZVf9YWVX/WFlV/1xY + Vf9cWFX/XVlU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWlL/XVpS/15aU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cVlP/V1JO/1VR + Tv9VUVD/VVFQ/1dUUP9YVVD/WVVQ/1pXUv9gXFj/amdj/3Vybv9/fHj/iYaB/5iUkP+pp6P/vbu3/9DN + yv/h3tr/7ezp//b29f/9/Pz////////////////////////////////////////////V09L/iYJ+/1Ra + Vf9TWlX/UVxV/0xbV/9HW1j/R1tY/1JbVP9bW1H/XF1O/1xeTP9cXkz/XV5M/11cTv9iWFP/bVNX/29S + W/9yU17/dFNg/29RXP9kVVX/Z1dT/2xaUP9uVUb/aVhN/2OEh/9or73/ZNXk/1nh7f9T1Or/VMzv/1XP + 8v9N1vD/RNjr/0XX6f9E1+n/RNzv/0TO4P9FtMK9TK27RUSywgP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFEs8AJRK++RUuywOFI0eL/Rdrs/0XX6f9F1+n/Rdbr/0jW8P9Ezuv/RMvo/1DR7P9k2O7/adXo/2fM + 3f9GprX/H2p0/1BSUv9jVlT/W1VW/1ZRVf9fWl7/Z15j/11UWP9XTVH/YFNU/2ZbVf9kW1D/YlxN/2Nc + TP9oXEz/Z1xM/2ZbTf9iWVH/V1lW/0laWv9IWlv/UlpX/1daVP9WWlX/WFpV/1haVf9ZWVX/W1lV/1tZ + Vf9dWFX/XVhV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVpT/11aU/9eWlP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFT/X1lU/2BaVf9gWlb/XVlW/1RR + Tf9WUk//XFdW/2RgX/9saWf/dnNx/4B+e/+Niof/m5mX/7Oxr//Ny8n/4+Hf//Xz8f/+/fr///////// + //////////////////////////////////////////7+//38/P/6+vr/+fn5//f39v/19PT/ycXE/42G + g/9YWlX/V1pV/1VbVf9SW1b/T1pX/09aV/9WWlT/W1tS/11bUP9dXE7/XVxO/19cTv9fW1D/YlhS/2dS + U/9qVVn/bVdc/21WXf9qVVr/YllX/2NbVv9kW1P/ZVdN/1hTTP8zV1v/LnJ+/0Wmtf9c0N7/YNTq/1bK + 6/9Yz/L/U9f3/0jY9P9F1er/Rdfq/0XX6f9G2+z/SdPl/0u1w+FEs8JFRbfHCf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BRLC8UUK3x+lF1OX9Rdfo/0XX6f9G1+r/RtTt/0DR8/9A0ff/Sdb6/1XX9v9k1u3/gtfo/4PC + yv9ukZL/WGVg/1FXUv9cW1P/XVlR/15eVf9dYFj/VllR/1NTTf9bWlT/ZV5c/2hbW/9iVlb/YlZX/15W + WP9XWFj/UFlY/1FZWP9UWlX/W1pT/2lYUf97VVH/fFVR/2xWU/9hWFX/YlhU/2JZUv9iWVL/YVlS/2FZ + Uv9hWVL/X1lS/19ZUv9fWVL/X1lS/19ZUv9fWVT/X1lU/2BZVP9hWFX/YVhV/2FXV/9hV1f/YFhW/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/19Z + VP9hW1b/YVtW/19ZVP9eWFP/XlhT/19ZVP9fWVT/XVhT/1tWUf9aVVD/WVNP/1tWUf9jXlr/b2pm/3dz + cf98eHb/jImI/52bmv+uq6r/v7++/9bX1//s7Oz/+Pf3//n4+P/6+vr//Pz7//39/f/+/v7////+//// + //////////////////////////////////////////////Xy8//l4uT/1dTU/8nHxv+7t7T/rKai/42F + g/90bWr/ZVhS/2NYUv9iWFH/ZldU/2xVV/9sVVf/YFZY/1tXWP9eV1f/X1dX/15XV/9lVlf/aFZW/2dX + U/9kWFL/X1pR/1VZTv9QWE3/UllP/1VcUv9VW0//XFdP/2dYVf9nWlr/VVFS/1NbXv9VZWv/cJCb/5bV + 5f981un/X9Hp/1HU8v9P1vn/RMzr/0jV7v9H2Oz/Rdfo/0XX6v9F1ef9QrrK50a0w0////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BR7G9Y0a9ytlF0uT/Rdjr/0TY6f9J1uf/Stbs/0fV9P9A1Pv/Oc74/zzN9v9S2fz/Zdz2/122 + yP9DhY3/Q2Jg/1VXUP9cWFL/XltT/15bUv9bW1L/VltR/1ZbUf9YWVP/WlpT/2BYVv9kV1j/ZFdY/2JV + Wv9eVVr/VFha/0tZWv9MWVr/UVpX/1laU/9sWFD/hFRP/4VUT/9xVlP/Y1hV/2RYVP9kWVL/ZFlS/2NZ + Uv9iWVL/YllS/19ZUv9fWVL/X1lS/19ZUv9fWVL/X1lU/19ZVP9gWVT/YVhV/2FYVf9hV1j/YVdY/2BY + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFpV/1pU + T/9bVlH/XFZR/1hTT/9WUEv/VE9K/09KRf9MRUH/VE5J/2FcWP9taGP/enZy/4mFgf+Yk5D/paSg/7a0 + sv/Lycj/3dva/+bm5v/r6+v/8PDv//X19f/8/Pz///////////////////////////////////////// + ///////////////////29vb/5eXl/9PT0v/CwMD/trSz/6mmpf+bl5f/ioWG/3h0c/9rZ2T/ZWFd/2Nd + Wv9iW1j/YltY/2dYUv9lWFL/ZFhR/2lXVP9xVFf/cVRX/2JVWf9bV1n/XldZ/19XWf9eV1n/ZlVZ/2tV + Vv9pWFT/Z1tU/1xZTf9SW03/UV9Q/1NfUf9QWk7/UlpO/2BcU/9pWVj/ZFVX/19WV/9TVlf/S1Ra/0Vg + bP9Ghpj/Y8TX/1zZ8v9L1fb/SNH4/0zS9/9L0vX/SNTw/0bW6f9E1+n/Rdnr/0XT5P9IwNDZRbbEYf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BR7PDYUa+zdlG0eL/Rtzu/0XX6P9F1uz/TtLw/1bQ9/9W0vr/T9L0/0vR7P9h2e//cdTk/2Sw + uf9Oc3z/QFlb/0VWUf9SW1L/WFxU/15aVP9gWlT/XFlS/1lYUf9cWlP/XltW/11ZU/9dVlP/YFZV/2JZ + Vv9gWFf/X1hW/1tZVv9XWVb/V1lW/1lZVf9dWVT/ZFlT/25XUv9vV1L/ZlhU/2BZVP9hWVT/YVlT/2FZ + U/9gWVP/YFlT/2BZU/9fWVP/X1lT/19ZU/9fWVP/X1lT/19ZVP9fWVT/X1lU/2BZVP9gWVT/YFhV/2BY + Vf9fWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/XllU/15ZVP9eWVT/XllU/15ZVP9eWVT/XllU/2Bb + Vv9jXlr/Uk1K/1ROTP9iXVr/cmxp/396d/+LhoP/mZOR/6ikof+2tLD/xcS//9TTz//i4N7/6+rp//Dw + 7//09PP//v39////////////////////////////////////////////////////////////9PP0/+Xl + 5f/X2Nf/yMfI/7q6uv+tra3/nZ2d/46Pj/+Afn3/cm5s/2djY/9hXVz/W1hX/1dRUP9RTEr/TklF/05K + R/9QS0j/V1JN/11XUv9iWVP/YVlT/2FZU/9jWFT/ZldV/2ZXVf9gWFb/XVhW/19YVv9fWFb/X1hW/2JY + Vv9kWFT/ZFlU/2NaVf9eWFH/WlpS/1tdVP9bXVT/WFlR/1pZUv9hXFX/ZFlW/19WVf9hWlr/V1ZW/1VU + V/9OUVX/PlNZ/1d/iP9vsLz/c9Xl/2Pg9P9S1e3/TtHx/0vQ8/9J1PH/R9ft/0TX6P9G2+3/R9Pk/0TB + 0tc+t8dh////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFGt8QJSrfEUUe9ze9F0uX/Rdzu/0XW6f9G1uz/RtLz/1PO+/9ey///X8v7/1rP7P9i3+z/b9Xb/2Wp + qP9Ocmv/X1BP/2RRTf9cW1L/Ul9T/1JcUf9eWVT/YFlU/2BZVP9gWVX/YFlU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/X1lT/19ZU/9gWVP/YVlT/2FZU/9gWVT/YFlU/15ZVP9cWVT/W1lU/11ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWFP/XlhT/1xWUv9bVVH/WFRR/1pWUv9cWFT/XVlV/1xYVf9cWFX/YV1a/2xo + ZP96dnP/ioaE/4qGg/+VkY//q6em/7+7uv/QzMv/5OHg//n29f////////////////////////////// + //////////////////////////////39/P/6+vn/9/f2//Lx8P/q6ej/4eDe/9jW1P/LyMj/vbu6/6up + qf+Ylpb/hYOC/25sbP9cWln/U1FQ/1FPTv9PTk3/T0xK/05KSP9OSUj/U05M/1VQTv9XUk//WlVT/2Bb + V/9fWlb/XVhV/15ZVP9gWlT/XllU/15ZVP9fWVT/XllU/11ZVP9dWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/XllU/15ZVP9eWVT/X1lV/2BZVf9gWFT/YFhU/2FZVf9gWVX/X1lU/15ZVP9eWVX/X1dX/15V + Vf9oWFb/cVhT/2tSTf9cTEr/a3Fx/3Kvr/9k2dv/Vdrl/1DU7/9Mz/X/S9H4/0nV9v9H2O3/Rdfq/0Xb + 7f9D1Ob/QcDR7UW7yU9Du8kJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFHtsQHRrjFUUq8y/9H1ef/Rdnr/0XX6P9G1uz/SNP0/0XO9v9U0P3/W838/1nJ9P9f0e3/Zdvq/0Sh + qv8lZWf/NVpW/2diYf9iWFX/V1hQ/1RcUv9UWlD/XllU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15YU/9cVlH/W1VQ/1tVUP9YUk//U05N/1VSUf9fW1r/bWhn/3t2df+IhYT/lZGQ/6Kg + n/+xr67/x8XE/+He3f/39fT///////////////////////////////////////////////////////7+ + /v/9/Pz/+/v7//r6+v/5+Pj/9/X1/+zq6f/d29f/0M7J/8TBvP+yr6v/nJiV/4mFgv93cm7/YVtZ/1RO + TP9TTkr/VlFO/1ZRT/9WUk7/V1JP/1lTUP9aVlL/W1ZS/1tXVP9cV1X/XldU/2FZVv9gWFX/XVZT/11X + U/9hW1b/XlhS/15YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhU/1tT + U/9gWFj/aFxa/25cV/9pWlf/WldV/0JTVf8ubG//OaOp/17W4/9V1/H/S9Hz/0vP9/9M0vv/Tdb2/0jW + 7P9E1+j/Rdrr/0XW6P9FwM79Q7vKT0W7yAf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BR7O/XUW+zO1G1ef/Rdfp/0TX6P9G2Ov/Sdrx/0ja9v9C1PP/S9f1/1TY8f9m1Of/is/g/2CJ + lv9XWmX/ZlNa/2ZZWf9YU0//WldS/2RYVf9qV1T/aFdU/2BZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFpV/2BaVf9fWVT/X1lU/19ZVP9cVlH/XFZR/19Z + VP9cVlH/WFNO/1FLRv9PSUT/U01I/2NdV/93cGr/iIJ+/5eTkv+mpKL/tbOz/8TCwv/U09L/5uXk//Ly + 8v/19fT/9vb2//n5+f/8/Pz///7+//////////////////////////////////////////////////// + ///29PP/4eDf/9HOzf+9u7r/raqn/6Ccmv+RjYv/gHt4/3Ftaf9iXlj/W1ZP/1tVUP9eWFP/XldT/1xV + UP9dVlL/XldT/1tVUP9dV1L/X1lU/19ZVf9gWVT/XlhS/15XUv9fWFP/XllT/19XU/9fVlP/YVlV/2BZ + Vf9fWVT/XlhT/2BaVf9hW1b/YFpV/11XUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + Vf9hWVn/ZFtc/19XVf9ZUk3/WlZS/1dfWv9HVlD/QlRR/1xsdP+CmKn/adrj/1La6f9Sz+r/W9b2/1HN + 6/9Uz+v/S9Xq/0LZ6f9F1+n/RdXo/0PB0OtFuMRb////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BSa28ZUe+zNlF0+T/Rdnr/0TY6P9Q2uz/Tdbr/0LS7P9D1vP/QdXz/0TY9f9K3PL/TsfW/02S + ov9BYm//WktY/3NOWP9sVVf/W1dS/1pbVf9kVlP/blNS/3BZWP9hWVT/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BaVf9hWlX/X1lU/11WUf9bVVD/V1JN/1ZQS/9UT0n/VE5J/1ZQSv9VT0n/UkxH/1dQ + S/9kXVj/c21n/4B6df+Ujon/qqSe/7azrf/CwLz/0c/J/9/d2f/o5+f/7u3t//Py8v/39/f//Pz8//// + ////////////////////////////////////////////////////////9PX1/+Dh4v/Pzs//v769/6+t + rP+hn57/lZKS/4iFhf96dXT/amdl/2NgXP9fWlf/W1VU/1hTUP9XUk7/WFBK/1dPSf9YUUr/W1NM/19X + T/9gWFD/YFhR/2JYUv9hWVP/YVlT/2FaVf9fV1H/WVFK/1dOR/9WTkb/Vk1F/1dORv9YT0n/VkxI/1NL + Rf9XT0r/XVdR/2BaVP9hWlX/YFpU/19aVP9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlZX/2BYWf9eV1T/WlRP/1hWUv9VX1n/Tl5X/01YVf9WVF7/XGB0/yWfp/851OD/Wd/4/1fQ + 8v9Z0fH/Y8/x/1/R7/9O1ur/Qtjo/0XZ6/9E1Ob/R8LQ2UiywGP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BR6y9VUe7y9tG0eL/Rdvt/0XX6P9D1Ov/Tdj0/0jV8P8+0ej/RNXr/0bX6f9h2+7/ZsXT/02O + mP8+WGP/UFhf/2BVWP9nU1T/aFhW/2RaVf9fVlH/ZFhV/2haV/9iVlL/YFhT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19XUv9VTkn/TUtG/01NSP9QUEr/VlJO/1xUUv9hV1X/aF9d/3Rra/+Be3r/i4mH/5iY + lf+op6X/trWz/8bEwv/V09D/5+Ti//fz8P/+/fr///////////////////////////////////////// + ///////////////////9/v3/+/j2//Xu7P/n5OP/19jZ/8nIyv+8uLj/sKyr/6Ccm/+XjYT/h3xz/21q + a/9XW2L/UlVR/1VUTf9bUFD/WUpN/01KRv9MTkX/UE5G/1NPSf9YUFD/XlZU/2VbU/9mXFP/Y1pT/15X + Uv9fWVf/XFlX/1pXVP9fWFP/Z11Q/2pcTv9hU0T/Wk9C/19YUf9nY2H/c3Jw/4R9ef+MhYH/iIeG/3h5 + ev9lZmP/WFhU/1FRUP9QTk//WVRX/19XV/9iWFb/ZFhX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19VVP9fVFT/X1lV/15dVv9cXVX/WFpT/1dcVf9XXVj/U1dX/0lPV/8oYWX/WJWi/3jJ + 2/9i3e//XNrw/1vT7v9Xzu7/UNHv/0jW7f9E1+j/RNvt/0bS4/9Hvs7ZRq/AVf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFLqboJTa29R0e1x+lF0uT/Rdzt/0XX6f9G1uz/QdDy/0DR+P8/1vT/Qtrs/0jc6v9L3eD/aMnN/2qR + lP9XVlj/aUxQ/29VVP9mWVH/YVpQ/2hdVv9oVlL/ZlBO/2RaV/9fX1v/VlRP/15YU/9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gW1X/YFtW/15ZVP9cV1P/XVdT/15ZVP9eWFT/YlhT/2BXUf9dV1H/XFlS/1tY + Uf9cVVD/X1ZS/2RZVP9mW1b/XldT/1lcV/9faGL/bnVv/4CAff+Yjo3/ppmb/7Koqv/Bur3/0c7Q/9/i + 4//z9/j//////////////////////////////////////////////////f////7////8+/v/+Pb1//Pz + 8f/u7+//6Onr/+La4v/Sz9P/xMbD/763sf+2op3/nJOQ/3+Bgv9ra2z/X1ZU/1RMSf9TSEf/ZE49/2RQ + Pv9OS03/QEpY/0pTSf9YVkj/ZlJS/2lSWP9dW1b/WF5S/1pfUP9fXFL/YlVW/2JWVf9fVU3/X1ZM/2BX + Uv9dV1b/WFdb/1VWXP9WVlr/XVlV/2ldS/9pV0L/aVU+/3ttXP+ZlI//qq2u/73Bxv/U09P/4N3d/9fd + 4f/DzdL/rbS2/5KYl/9vdXj/UlVf/1RSXv9eU1v/ZlVZ/2hXWP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9lWVf/Y1VS/1tXU/9YXlb/XGBU/11YT/9fVk7/XltR/1peVP9ZWVP/ZE1M/4VU + YP97jpj/UtHT/1bc5/9K2er/RdDt/0vN9P9S0vb/Stbt/0XX6P9E2+3/RdPm/0a4yudNrr1FRKu6Cf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFKprMDS6i5RUyzxOFG0+X/Rdjq/0TY6P9H1uz/StL1/0XP+P8/zvX/P9Tx/0fd7/9P3uz/SNXa/zSS + mP8vWl//SlJU/21ZXv9jT07/YVVP/2ZdVf9kWlT/ZFRR/2pXVP9gVlP/WFZS/15bV/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dV1P/XlpV/2FdWP9dWFT/W1ZS/1xXVP9eWVb/XVdU/2NVUf9gVFD/WFVP/1NU + Tf9PUEv/WVRQ/25jX/+EdnT/lIiG/56al/+qrar/uL+7/8nPy//d3t3/9+/v///+/v////////////// + /////////v////3////9/////f7///7//////v7//v7+//39/f/9/f3//Pz8//j6+f/s7uv/3tnY/8zD + v/+0s67/n6Wk/5GTl/+Jf4f/dnFz/2BiXv9aU0z/X0tG/1dPSv9SUU//VVJR/11VU/9eV1X/X1hX/2tZ + Tv9sW0//XVta/05XXv9VWlH/YFpP/2VVVf9lU1j/YFxY/1pbUv9YXVD/X1tT/2ZVVP9kVFP/XFJP/1hS + T/9dV1T/YVxb/1lYWf9ZV1r/XFlZ/2BZU/9lWUv/XlBA/4l5Z//KwbP/9vXw//////////////////// + ///////////////////4+fn/ys3Q/4yPl/9dXGj/V1BX/2NVVv9mV1X/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9gWlX/aV1b/2VYVv9YU0//UFRM/1ZZTv9gXFP/YVtS/1taUP9WWlL/WltX/2JY + WP9uUVv/RF9q/xiPlP9Qztr/VNzu/0/X8/9Pz/b/Vc35/1TT9/9J1uz/Q9fo/0XY6/9H1ef9TbTD30Sq + uUNDp7QD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BS6CsQUmyw8FF0eL9Rdfp/0XY6f9C1ur/RdDw/1HI9/9b0/7/U9T4/0jV6/9X1uH/fcnT/16O + kf9VWlr/Yk9N/2xbVf9jV1D/XlhO/1teU/9ZX1b/VVpQ/1RTTv9cWlT/XmBZ/1leVf9TV0//XllT/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/WlVQ/1VQTf9UT0z/VE9M/1VQTP9STUr/UEtI/1FLSf9lWFb/eG5r/4iH + gv+ZnZj/q6yo/728uf/Nysj/2tXU/+bh4f/w7u//8/Pz//X29v/4+fj//Pz7///+//////////////// + ////////////////////////////////////////+PX0/+Dd3P/Jx8f/ube2/6Wlov+TlZD/h4WC/4B6 + eP96bWn/ZmFd/1RYVv9UVVX/X1RW/1xXVv9TVVD/V1NL/2dUTf9fVlD/WFVQ/1pXUv9fWFT/XldV/2Bb + Wv9pWlP/Z1lQ/1hZVf9LVVb/WVhR/2ZcVP9nWVj/YVRX/2BZVv9cWlL/VlxQ/1pYTv9rVlH/f2xo/5eO + kP+HhIX/ZWFf/1dUU/9aWFj/XFpa/11ZV/9aUkn/Vko9/5GDdP/Z08b/+Pf1//////////////////// + /////////P7+//////////////////f5+f/U1t//aGl2/1BMU/9hVlX/ZVhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JYUv9lWlT/X1lT/1hWUP9aVlD/ZFpV/2VaU/9iWE//YlhO/2Ra + Uf9aW1H/VlpR/1ZaVv9hZWr/gIOR/3/R3v9j4fL/UdLv/1HV+v9Jy+//SNDs/0fV6v9E2On/Rdfp/0bT + 5f1BtMTBQ6GuQf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BT5qlM0ywvKlHzN39RNrs/0XX6f9H2+v/Q9fw/0fP9/9WyPz/V8v+/1LV+/9L5Pf/Sc7Y/0qM + lf9DX2L/ZlNT/31VU/9yV1D/Y1lO/2FeUv9YXlP/T11S/1BcUf9WW1T/VltU/1VcU/9VXFH/VltR/15Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9dV1P/WlVR/1NNSf9YU0//WVRQ/1hSUP9bVlP/Yl5Z/3Btav+DgH3/mJOR/6qlo/+4s7L/x8DB/9PP + z//c3tz/5Onn//Hx8P/4+Pf//P38//////////////////////////////////////////////////// + //////7//Pz5//Hz8P/g4+H/zM/N/7y9u/+tq6r/o52e/5iQj/+Kg3//fHZ0/3FqaP9kYFz/W1lT/1lW + T/9aVU7/W1FM/1NPSf9MT0f/UVBJ/11QS/9cVk//V1hQ/11aUv9qXFX/ZV1U/15bUv9fWlH/X1dQ/1NP + TP9LSkr/UUlJ/1pQTv9aWlP/VV5S/19YUf9kWVX/YlpW/11YVf9gV1b/XVhU/1FWT/9eXFH/lH1w/9DI + wP/l4uT/wcDE/3Nzdv9SUVH/XFdV/2BaVP9ZUkn/X1ZL/4Z8cv/Y0cz//v36////////////6enp/7e5 + uf+bmpv/lpKS/5aUk/+loJ7/3dXJ///88///////6/D4/2pzgf9LTlX/XVhU/2RaUf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9iV1D/ZVhS/2JbVf9dXFf/XVpV/2JWU/9jWFH/Z1tS/2tb + Uf9nWE7/WFtQ/1BdTv9bWFD/b1JY/3dYZ/9JlJ//RcrY/1Tc9f9M0/f/Sc/y/03R8f9M1e7/SNfq/0XX + 6f9E2u3/Rc7g/Uiyv6dLmqQz////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BT5ipA0alsIdFxtTzR9vu/0XY6v9G1+r/RdXt/0bU9v9M0fn/Vs70/2DU+P9s0u7/XbrL/0OM + lf89X2T/RVNS/2VdV/9wXlb/Y1dM/2BbT/9gXVL/WllQ/1ZVT/9bVlL/YltY/2FZVv9aWFP/VVlS/1lb + VP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFtY/2NeW/9xbGr/gX15/5CLh/+fmpf/ramm/7a1sf/CwcD/09LR/+fl5f/69/f///////// + ///////////////////////////////////////////////////8/v3/9vj2//Dx8P/q6un/5OLh/9jW + 0//KyML/u7q0/6yrpf+bnZf/iI2I/3h7d/9ramj/X1tZ/1ZOTv9US0r/WE5K/1lQTP9VTUn/VU5K/1ZR + S/9XVU3/WVZP/2BXUP9fWlH/XFxS/15cUv9lWVH/YlpQ/15bT/9bVUv/V0xF/1NMRf9WVE3/YFpQ/2Zb + Uf9gXFf/X2Bg/2FfaP9eWl//WVhP/15hTv9iV1H/YVVU/19ZVP9eWlT/X1dY/15YWP9PVFD/X1xP/6aN + e////vL//////+Dj6f+IjJT/UlNV/15XU/9gVUr/XFFD/350aP/Tzcf////////////5+fr/0tLR/5aW + lv9iYWH/SklJ/0tISf9UTUr/WkpE/6SRgf/u5Nj//////+fv9/91hZP/TVZd/1hXT/9iXE3/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YlxU/19ZUf9hWVL/ZFpX/2RbVv9jVFL/YlVQ/2Rb + Uv9kXVL/X1lO/1peUv9XYFL/WlpQ/19RUv9fUFr/N2Nv/1mtvv9y3/b/TtLv/1PU9P9Szvb/Uc/2/07U + 8f9F1+r/Rdfp/0fd7/9GxtXxRKCshUaUoQP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BTZytBVCer0E+v83JP9Tl/0bZ7P9F1+n/SNju/0PL7/9Jzfn/UNT4/1TV6P9s3ur/fLfH/2Vr + e/9TQkr/bVhY/2lYUf9eXU7/WGBN/1deTf9YXU3/WltO/2BWUP9mUVH/aVBU/2pSVf9uVVj/ZVlZ/1la + V/9YV1T/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/21oZf+Df3z/yMbE/9XTz//n5OD/+/j1//////////////////////////////////// + ///////////////////+////+/v7//f39//z8/P/7+/v/+zr6//f4N//zdHO/7y/vP+srqv/nZ2Z/5GN + iv+Ce3b/cGtj/19cVf9PT0f/SEdB/0hHQ/9NTUn/UlFO/1lWU/9aVFL/XFRS/2FXVP9jWlb/X1dT/2BY + U/9eWVT/W1lV/1tZVf9mXFH/ZFtS/11aU/9dWlP/YVlS/2JZTf9mXUv/Z11O/2VaU/9fXFr/VlhY/1xW + Tf91aFj/lY+H/62srP+prbf/e4CI/1RTSv9gXUb/YVZR/2FVV/9hWFP/X1dR/1xWV/9eWVv/UldU/1tW + Sf+WeGT/9eze///////k7fP/nqSv/1FSV/9fV1P/XlBC/3BiUf+wppj///77///////5+fr/ys3R/3d3 + eP9NS0r/TEpH/1JRUv9YVlj/YFdT/1tGPP+Fblv/1svA///////p8/r/jaCv/1VhaP9SU0j/YVxK/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1pU/11fVf9XXFH/YFdQ/2xVU/9sV1T/aFVS/2RU + Uf9eWFD/WFtP/1ZcT/9YX1D/WmJS/1tdUP9bVE//XlVZ/19XZf+BjaL/gcjd/1Xa7P9Y1PD/Vcr4/1XI + /v9Rz/j/RNbs/0XX6f9G2uz/QdHi/z63xsdHmqc/RJimBf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////ATuuvx9TtcbBSdDi+UTa7P9F1+j/Rtfq/0rY8f9Hz/T/Sc34/1LV+f9X1u3/TsHQ/zp7 + jP8+UWH/WVNc/2dZWv9jVlD/W1lL/1hcS/9aXU7/W15P/1tbT/9iWFL/a1hY/25ZW/9rVlj/aVJV/19U + U/9YWlX/XFtX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP93cW7/nJiW//7+/v/+/v7//v7+//////////////////////////////////// + ///////////////////+/v7/7/Du/9vb2//FxcX/r62t/5qYmP+LiYj/gH98/3Nyb/9lY1//WFZS/1BO + Sv9STUn/VlFJ/1lUS/9aVU3/XFlR/15aVP9eWVX/XVlV/11aVv9bWFT/XVhV/2FYVv9iWFb/YVhU/19W + Uv9fVFD/W1VS/1dYVv9aWlb/ZltP/2RZUP9cV1P/WldT/1xZUv9iV0n/dGVO/5uOev/Du7X/wMHD/3h+ + hf9TTkb/g3Re/9XOw//8+vf/8/39/5+ss/9VVEr/ZVxC/2JYU/9iV1n/ZFhS/2BVTP9YVFT/Wlda/1NY + V/9dVkj/km9W//Hbyf////7/6/n//6ixwP9NUFn/YFhS/2BQPf+NfGb/29DC//7+/v//////0dfc/3yC + if9JSkz/WVZT/15aVv9YV1j/V1ZY/2JYU/9lTj//jG9X/9fIvP//////8Pz9/6K4x/9aanH/TE5C/2Fd + R/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9aW1H/VlpP/2FYUv9uWVb/bVpX/2lX + VP9lVlP/YFpS/1xeUf9YXFD/U1lL/1NcS/9aXFD/YlpV/2NYXv9PTlv/RVpv/02Zrv9Z3fH/VdHu/1rR + +/9ZzP//T8v3/0TW7v9F1+r/Rdfp/0Ta7P9Hz+D5TLC+vzyquB////8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AT+ltCM2ssOfSdHj90fX6v9F2Or/Rtfp/0fW7f9K1fH/S9Lx/1DS8v9o1Oz/f8XP/1qC + h/9NWmD/WFNY/2VaWv9jWFH/Z11U/11ZTv9YWEz/XVxR/11aU/9dWVX/XVdX/19XWP9hWFn/Y1hW/2RX + U/9kWFD/ZVpP/2VaUP9gWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/b2pn/5KNiv/39fP///////////////////////////////////7+//bz + 8v/f3t3/ysnI/7i2s/+hnpv/j42J/4SDf/94dXP/cm9t/2ZlY/9cW1j/WVdT/1dUUf9aVVL/WlNO/1lR + Sv9ZVE3/WlRM/15WTv9hWFD/YFhQ/11VTf9bU03/V1BL/1ZPSv9YU0//W1dT/15aVv9gW1f/XVdT/1ZQ + TP9VTkr/W1JL/1hTUf9QUlf/VlVY/2haS/9nWk7/XlhV/1lXV/9YWVn/V01B/5yEav/n07//9/X0//n4 + 9/+KlqX/TUhG/39qUf/Wy7////37//X///+rvsb/aGZe/2dXPv9gWVT/WFBR/2xcV/+DcWr/WVtd/05V + Wf9PVFb/YFRK/49uVP/jyrf//vv2//n+//+5w9D/T1Rg/1xYUf9gTzv/p5J7//r15P/9////+v///5mk + sv9JUF3/UVBT/1tXU/9eWFT/WFhX/1pZWv9lWlT/ZU9A/4dlS//Uvqv///////3////A1OL/YnR5/0VI + PP9gW0f/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9gWVT/ZFlQ/2VZT/9lWVL/ZVhV/2NY + V/9eV1j/XFdY/1xYWP9cWVb/W1pU/1pdUf9YXE//XFxQ/2FcUv9dWFD/V1NR/1BSV/9VaXH/apyi/4nS + 3P9p2Pb/UtD3/1PO8v9T1PT/TdXu/0bW6v9E2On/Rtfp/0fO3/c5rrufPaCsIf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUSdqRtHrbyDQsrb9UTa7P9E2Or/Rdfp/0XT6f9Ez+z/S9Tz/03Z9/9T3fr/VcLY/0+J + j/9FV1r/VU5R/2ZWWP9nWVb/X1ZL/2ZdUv9eWU//WlpP/2BfVP9dWVT/XlhW/1tXWf9aV1j/W1dY/2FY + Vf9kWFP/Z1lQ/2taTP9oWk3/YFlT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RfXP+Aenf/2dTS//Dv7//t6+r/393b/9DNzf++u7r/rKmp/52a + mf+QjYz/g4B//3d2dP9tamX/X1xV/1dTTv9YUk7/VU9M/1JOS/9RUEv/UVFM/1JQTP9UUEz/WlNQ/2FX + Uf9lWlH/ZFxT/2NcUv9dVU7/VkxF/1RJQv9cUEn/YFRP/2FWVP9hWFX/WlNR/05KRv9MSUX/T01I/15b + Vv95dXD/kY2H/7Gso/+VkpL/XV5o/1NSWv9mWEr/aFpP/15YV/9WVlj/VVlb/1VKPv+ymH3///Xh//// + ///4/f//hpas/0hFRv93XkX/yLep//z39P/0////tMvS/3V0cP9jU0D/WVRO/1JKSf+JeHL/zsG5/6Su + sP9ZZmn/REdN/19QS/+EaFH/yrWk//n07v//////xdHc/1tibv9ZVVD/Y1E9/7Sii/////b//v///9nk + 7f90gpb/PkVT/1dVV/9dWFT/YVtW/1xaWf9aWVj/YFdR/2VSRP99XEP/x62Y///9+v/+////x9jj/2l5 + ff9JS0D/YlxJ/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/YFlU/2lZUP9rWU//Z1lS/2NY + Vf9gV1f/WVdZ/1dXWf9aV1r/XFZX/1xZVf9bXlL/V1tO/1tbT/9hXVH/XVpN/2BaU/9eVVb/VlRZ/1Vs + b/9opqz/WM3p/1Pb//9X1Pb/VMzx/1fT9P9N1u7/Rdfo/0TY6v9E2ev/QsXV9UKns4FAmKIZ////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////ATmbpgdCprJrS8PT4Urc7v9F1+n/Rdfp/0/W7f9R0+//R9Hs/0jT6/9j3fX/Ysng/0aO + n/84Vln/SE9Q/1dWVf9dW1n/X1hT/2NXTv9nW1H/YFhP/19ZUf9kXlf/XFlV/1xYV/9dV1j/XldY/15X + WP9fWVX/YFlT/2RaUP9nW03/ZltO/2BZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFX/a2Zk/5qVk/+npKL/nZiW/4qGgv97dnT/bGhl/11Z + V/9OSkn/SUVE/0xJSP9OS0r/UU9I/1ZSSv9cU03/X1VP/2FXVP9bVVH/V1ZR/1laVP9bWVT/XVlT/2NZ + VP9oXFT/Z1tS/2RZUP9bU0j/XVVO/2phXf99cm//j4WB/5uQjv+kmZn/pZub/5WPjf97eHX/a2ll/1JS + Tf9ZWFP/lpWQ/97d2f///vr/4eHj/46Qnf9RUl3/Y1dL/2ZZUP9eVln/VlZb/1NYWv9ZSz7/tqCG///7 + 6f/8/v//0+Dy/2+Anv9GQ0j/dFtC/7mklP/59Oz/+////8LY3f9+gYD/XE9F/1BMSP9eVFD/r5+Y///+ + +P/v+fr/kZ+h/1VWXv9URUX/cltL/6mZi//v6eb//////87b5P9tdYL/V1NR/2dVQv+7rZT////7//// + //+0wM7/Xm6C/0JKV/9aV1b/YFlW/2NbVv9eWVj/WldX/15XUv9lVkn/dVlC/6WLef/OxMD/vsHG/5Kg + qv9ha27/VVRJ/2NdSv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2BZVP9lWVH/Z1lQ/2NZ + Uv9gWFX/XldX/11XWf9cV1n/XFdZ/1xXWP9cWFb/XlpU/1tYT/9eWE//ZFxS/2FaUP9dXlX/WF1Z/1JX + Vf9KWFf/Smxu/1aou/9n1PH/Y9j2/03Q7f9R0fL/UtTw/0zX7f9F1+r/Rdfp/0na7P9FvcvfPqCqaTyY + oQf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wE8nqo/Q7/Ow0bY6v9E2Or/Rdfp/0vU6/9f0fP/Ytb3/0/d7/9E1eH/dM/c/2iS + nv9RVFn/blBN/3FWVf9eX1j/T2FV/1ZcU/9sW1X/a1tU/2ZVUP9mU1L/ZlZY/1pYWP9ZWFj/XldX/2NX + V/9gV1f/WVpU/1hbUv9eXE//ZFxM/2NcTf9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhV/11YVf9cV1T/VlFO/0xHRP9KRUL/UEpH/1RQ + TP9ZVlL/WlZU/1xYV/9fWln/W1hV/1taUf9hW1L/ZVhS/2NVT/9mWFT/YVlU/1hXUf9VV1H/WlpU/15Y + Uv9nWlP/aFlS/2NVTf9hVEv/X1ZL/4F6c/+0rqv/2dPT/+Xi4P/w6+r/+PLy//jz8v/s6ej/2tnX/8LB + vv+MjYn/aGpl/4yOh//u7u3////////////N0tz/YWVw/11XUP9dVU//XVZb/1tYXf9SV1b/YFFC/7uq + k/////X/+Pv+/7fF1v9aa4v/REFK/3NdRv+rlYH/9O7f///////U5Of/iJCU/1FKTP9MSEX/eW1l/8y+ + tv///////f///9vl5/+Njpb/UkZL/11OR/+Lf3T/5eHb///////Y5O3/gYqZ/1ZUVf9mVEL/va6U//// + +v//////qbXD/1VkeP9CSVT/XltX/2JZVv9gV1L/XFZT/11YWf9jW1n/Y1hO/3BaRv97ZlX/dm5s/19k + bP9MVV//UlZX/2BbT/9kW0v/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVlS/2JZ + Uv9dWVP/WFlW/1lYWP9gVln/Y1ZZ/19WWf9bV1n/XFdZ/2dYW/9mVVX/ZVZR/2haUf9kVk7/UV5Q/0pk + U/9VXU//Y1FG/2hRSf9keHj/cK++/23V6/9H3u3/QdPq/1DS8P9U1fL/Stfs/0XX6f9F2ev/Q9Tl/0C4 + xcE+maM9////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BTLrHpUjO3vlE2ez/RNfp/0LX6v9U0O7/Zszz/17Q8/9I2e3/St7s/0Sm + tP81Z3X/RE9U/3FYVv9zWlj/WFpT/0haTv9VW1L/blxW/2pZU/9lVVD/Z1VU/2dXWf9aWFj/WVhY/15X + V/9jV1f/YFdX/1laVP9YW1L/X1xP/2VcTP9kXE3/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BaVv9fWVT/W1VQ/1xXU/9bV1P/W1dT/11X + Vf9fWlf/X1tX/1tXVP9bVlT/XllX/15aV/9cW1L/X1pR/2VZUv9nV1L/YVRO/2JYVP9eXVr/W11a/1tb + Wf9gXFn/Y1ZT/2dWUP9iUk3/W01H/5CIf//W1M//+vn5//z8/P/+/v7///////////////////////39 + /f/7+/r/9/f2/8TFwP+Fg37/wLu2//Px7///////7O3v/5abov9SWVz/T09T/2BaXv9cVlT/VlZJ/3Rj + U//JvKv////+//T5+/+rucX/WGZ9/0VFTf9rWEn/m4Bs/+vgzP//////4evw/42apf9ESln/VEVF/5SB + d//g1c////////j//v/9/f3/zM3U/3Fvev9GREb/gnlw/+Pfz///////4+/0/5mks/9XWFv/WUo7/7Wk + i/////b//////7zH1/9odor/SE1W/1tVUP9gWVP/YFhR/2FaU/9gW1f/XllY/11YVP9mWUj/ZVhG/1lU + UP9TU1f/U1RZ/1tWV/9lWVP/alxR/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JZ + Uv9jWVL/XllT/1hZVv9ZWFj/YFZZ/2NWWf9fVln/W1dZ/1xXWf9mWFr/ZlZV/2VXUv9pW1H/ZVZN/09Z + TP9JYVH/WGBT/2hYT/9oV1D/NlJV/z6Flv9Yxdz/Qdjp/0bZ8f9S0/P/VdDx/03T7v9F1+r/Rdfp/0Xb + 7f9Fytn5Ra65o////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFHpLINRrHCeUjN3udG2Or/RNjp/0bY6v9P1u//SdLu/0LP7P9Z1ez/fdTk/3Sy + vv9RbnX/T1VY/2FbWP9mVk7/Z1dQ/15UTf9aVlD/XltW/19bWP9ZVlP/YlVU/2tXWP9oWFj/YVhV/15Z + Vf9cWVT/WVpT/1xaU/9mWFP/aFhS/19aU/9VW1P/WFtT/15ZVP9gWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dV1H/XVdR/11XUv9fWVX/XlpV/1tW + Uv9UTkz/TklG/1NOS/9aVlL/X1lX/19ZVv9cV1P/XVxS/2BbUv9gVU3/Y1NN/3NlX/+vqKX/19fW/7q+ + vP96e3r/YFxb/2BUU/9cSkj/ZlVR/5+Rjf/f29j/+/v6////////////+vj6/+nm6P/j3+D/5+Lk//Hu + 8P/////////////////i4eD/eHRw/4R6df/b1tP///////39/f/T2t//ZnR+/0NKU/9QSk//U0hD/0pF + Mf99alf/1sm6///////s9/n/naq4/1RccP9HRkz/ZFZJ/4huWP/g0rj////6/+v0+v+Xqrn/Q1Np/1pJ + SP+5o5j/+fbw/////v/9////+/////f3+f+7v8X/W19m/21nYf/a0bn////9/+v1/P+tucf/Vldd/1BC + NP+wn4f////0///////e6Pb/doOW/0BFTf9gWVP/YVpT/2BZUf9gWVH/X1pV/1xaWP9YWFb/ZFxO/2Ze + Tf9YVFD/S0hL/0lGSf9aUlH/aVpV/2pZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/15Z + VP9XWVb/VVlX/19YVv9oVlX/ZVdW/11ZVP9bWlT/XllU/2BYVf9iV1b/Z1ZX/2hSVP9jVlX/Xl1Z/11a + Vv9ZV1H/XFpS/2NdU/9mW1H/ZVlP/09QTP9PWWD/YI6Z/2fT2v9a1+P/VNfu/1DT8f9N0u3/Stbt/0XX + 6f9E2ev/Rdjp/0bI2OdHpbd3SJ2rDf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFHlKELSaWzVUvD1eNF1un/Q9rs/0XW6P9O1Oz/W9Hy/0DS7f8z3PL/U9zv/3e5 + yP9VcX3/U1JY/2JTUv9qXFT/ZVlO/2RaT/9mWFD/aFpV/2NcWf9WWVf/UlZT/2RYWP9uVln/ZlNU/2RY + VP9hWVT/WlpT/1RbUv9ZW1L/blZS/3NWUv9fWVT/TFtV/1FaVf9eWVT/YFlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVdQ/19ZUf9gW1b/XllU/1tY + VP9bVlP/YVpW/2tmYf9gW1X/XlhT/2FaVv9gWVb/W1dS/1pbUf9gXFL/X1NN/2VUUf+PgoH/5eDg//// + ///q7ez/hIiH/1hZWf9SSU3/ZlRZ/5uLi//p4+H////////////y+/z/yM/R/6Cjp/+FhIn/f3qA/4Z/ + hf+WkZf/ubi6/9na2//a29v/rqyr/2JbV/9cT0r/tKWh//jx8f//////9v3//5Wtvf9NXG7/TkdM/3Ng + Uv93a0n/q52B/+zj1///////3fT4/5Cbqv9VVmL/SklN/1pVTf93YEn/2sip///+8v/0/P//ob7T/ztd + ff9vWlz/18G3/////////vf/9/f4//v/////////6vb4/6Wvuv9wbm7/xbeY//755//1+///u8bS/1xe + Zf9QQjP/pJB2//fw3///////+f3//56puf9UVV7/WUxF/2RZUv9jWlL/YllR/19aVP9YWln/VFlb/15d + U/9bV0n/V1RN/2dhYf9zaWv/Y1RT/2BLR/9rVFD/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9eWVT/UVpY/0xaWf9fWFf/clRV/2xVVf9cWlL/Vl1S/1xaUv9iWFP/ZFdV/2pVV/9sUVX/YlVW/1dc + Wv9ZXFr/YFhV/2ZXUf9nWlD/ZFtQ/2NZTv9kWFH/YE5S/09haP89nqH/V9Xb/1Tf8f9N1/L/T9Xx/1LX + 8/9J1ev/RNbo/0Ta7f9G1uj/S7rM40ufrVVRlaIL////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BRJqnN0e4xrtN1+r/R9jq/0TX6f9I1+z/T9Pv/1PN8P9K0u3/VN/1/1/F + 2P9WgZD/OU5Z/1JVVv9gWFP/YlZO/2lcUv9oW1L/ZlpU/2RaVv9eWFf/VVZV/1ZZV/9jXFv/ZldY/19S + UP9kWVL/Y1lS/15aUf9ZW1H/W1tR/2RYUv9mWFP/X1hW/1dYV/9ZWFf/X1lU/2BZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9fWlT/YlpV/15W + T/9kW1T/gnt1/6mloP+7t7L/nZyY/2hnZf9RT07/XVhY/19YVf9dWVD/YlxR/2JUTv9tXFn/raGe//Hv + 7v//////1d7f/29zdv9YVVX/VEVE/5B9fP/h2Nv////////////x8vT/tsHF/213ev9PU1f/QUNG/z89 + Qf9EP0P/TkpN/2VkZP+EhIL/hoaD/21nZf9YTkv/VUhF/4Vvbf/VxsT////9//7////N5vD/jqCv/4qI + jP+8rZ7/zMGj/+bgy//9+vT//P///8/r8/+Cjpr/WFVb/1FOT/9ZVUz/bVlA/9G6mf/9+On//P///7jR + 5P9HZoT/lYGB/+na0P//////8/fx/8LBxf/c3eD/9vr6//j////r9Pz/paKk/8O0mP/57tf//P///8fT + 2/9nb3f/TkY+/4VzXv/Vxrf////+/////v/Y3uf/kJKY/1dPS/9YUVH/WlJT/2BXUv9gWVH/VVZU/1JW + V/9SU0z/UE1E/2xpZP+wq6n/xr29/56Pj/9yYF//a1dW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWVT/X1lU/1lXWf9WV1r/XldY/2VXVf9jWFT/XFtQ/1tcUP9gW1D/ZFlR/2ZYU/9oWFf/aFVX/19V + Vv9XWFj/WllZ/15ZV/9hV1P/Y1hS/2VZUv9kWVH/Zl1X/19XVv9AUVT/ImZp/1yvuv9k1uj/Wdvz/1XW + 8/9V1fX/TtLu/0fV6v9E2Or/Rtfp/0zU5v9EsL67TZilNf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BR4+dB0OvvXtA1eb/Rdfq/0XX6f9H1ur/S9jx/0bX9P8/zu3/XNfw/3bK + 3/9xi57/XkpZ/2NXW/9hXFH/YVxN/2VbT/9nW1H/ZVdQ/19VUf9ZU1L/VVJU/1NVVv9ZW1z/WV1c/1Za + V/9aWVH/ZlpO/2daTv9mW03/Y1xN/11cTv9TXFH/TlpW/15WW/9sUl3/aFNb/2BYVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWVf/XVhX/2NW + U/9mU0r/d2NU/760p////////////+jt8f9+h47/QEVO/1VTWf9iWFj/Z1lQ/2laTv9kVEv/dGVc/8W8 + rP/29vH//P///7fM1P9YWGH/ZFJO/3hYRP/Dr57///////X////1/Pz/trrB/2xmbP9NSUv/VE9R/1xa + WP9eW1j/XFlU/1tZUv9VVUz/TEtC/1JNRv9gVVH/YldU/1xSUP9gT0//pJaS//by6f////z/9v/7/+j1 + 9P/q8vP/+v37//////////////////X////G3OX/coCN/1RWW/9bU0//Y1ZE/21YOv+8p4P/9e7h//// + ///Y3uX/dnd//7yzqP/18ef//v///9jm6/9ydn//kYyP/93Z1f///v3///79/+vn4v/i2Mr/8+3k//v/ + ///T5On/dIWO/0ZLT/9eU0z/qJiL//v67P////v//////9Xd3f95hIf/T1Zh/0tNWf9aVFX/YFhO/1hS + Tf9VUU3/Uk5K/2lkY/+rqKn/+/r6///////x8PH/op+h/2hjY/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BYVf9nU1v/aVJd/11WWf9OW1T/U1xR/11dTP9lXEv/aVxL/2tbS/9qWk7/X1xS/1xa + WP9bVln/WFRZ/1lVWv9bV1n/XFZY/2FVWP9oV1j/Z1hV/2dfVv9aWUz/VFJI/2JaXf92aHn/drG//2fZ + 7P9a0vH/U9Hz/1HQ8f9M1O3/Rtfq/0XY6f9F2Or/Nsvb/0aotnlYk6AH////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AU2ltF1OwdHXQtvt/0XX6f9F2On/S9Pq/0vS8P9E1fX/RNT1/2Dh + /P9Forn/PV1y/2JPX/9dU1j/XFhN/2JdTf9nXVD/Z1pQ/2ZYUf9jWVX/XlhY/1pWWf9XWVv/V1lb/1FV + VP9TV1T/YF5X/2daTf9oWk3/ZltM/2JcTP9dXE7/U1xR/09aVv9eVlz/bFFe/2hSXP9gWFX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlX/15Y + V/9jVVP/aFNK/25XR/+yopH//vnv///////9/f7/rbi+/1phbP9JR1D/Y1lb/2xcUv9nVkr/YVFI/3xu + ZP/X0L3//f74/+3///+kvMf/U1Nc/19LRP+ceV//49C8///////3//7/wc/b/3h8hv9TSk7/WFBR/1tV + Vf9gWlj/X1pW/11YU/9dWFH/XVtR/1xZT/9eWFD/YlhS/2JYUv9fVVH/U0lG/4Fwav/Wxbv////9//3/ + /P/2/vz/+f/////////////////////////x+vz/tczW/2Bsev9QUFT/XVRN/2VYQ/9uWzz/rJh0/+vl + 2v//////6Obo/5WPkf/X08b//v34//f+//+6y9T/WF5o/1lOT/+voJL/+vPn///////9/fb//Prx//v9 + +f/1////3fDy/4KWoP9LVVv/TUI//4JsYf/QxbX//Pr4///////5/Pv/1OHm/5ihrP9qbXr/XVdZ/2FX + Tv9jW1X/ZF5Z/314dv+/u7z/9fX1////////////9PX2/6Okpv9kYmP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWFX/Z1Jc/2lRXv9dVln/T1tU/1NcUf9dXUv/ZVxK/2lcSv9sW0v/a1pN/1tX + Tv9bWFb/XVhc/1lVW/9aVlv/XFhb/1xWWP9gVFf/Z1VW/2ZVU/9fVk3/YF5Q/2BgVf9XVFn/WlFl/0KF + lv9Jw9j/X9z8/1LR9f9S0fT/UtPw/0vX6/9E1+j/Rdfp/0La7P9NusrXUJ2qW////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BOqGwAzecqylIvMyxTNXn/UTZ6/9F1+n/R9fs/0zU9P9N0vX/T9fu/13d + 7P91tb3/W3d6/0hVU/9ZWFH/WlhP/19aVP9iWlf/YllV/2FZU/9hWVP/YVpV/19ZVv9eWVb/XVpX/1xZ + Vv9aV1P/W1hU/2BbVf9hWVL/YllS/2FaUv9gWlL/XlpS/1taU/9aWVX/X1hW/2NXV/9iV1b/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + Vv9fWFb/ZFdU/2lZTv9gTT7/gHJi/8jDt//+/////////+br7/+PlJv/SEhO/1xVWP9qW1L/Z1ZM/15Q + S/99c23/6efX/////v/j9vn/mqy2/1NPVv9bRj//sZR9//fo2P//////8fv+/5Cfr/9RWGD/SklH/1xY + Vv9dWVf/X1pZ/2BZV/9gVlX/YVVU/2JWU/9kWlT/ZlpV/2NZU/9iWVL/YlpT/1ZVTf9cUkv/mIR8//bv + 5v///vf//v///+73+f/Z3eD/1s7J//Lu6v//////7PX6/6G6yv9TW2j/VU9P/2NYUP9jWEn/bl1D/5J8 + W//e187///////f19f/QzM3/8O/o///////n7fD/kaCp/1FWYP9QR0b/eWZW/8O1o/////z///////// + +v/7/Pn/9P///+r5+v+PpbH/VWBo/01GQ/9rVkr/j3xs/9fPw/////3///////v////o7O//1tbb/7+6 + uf+vqaP/trGt/8nFwP/c2tn/9vT1////////////9PT1/6+wsf9qa2z/V1ZX/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FXVv9iV1f/XlhW/1paVP9bWlP/XlpR/2FaUf9iWlH/Y1pR/2NZ + Uv9dWFL/XllV/15ZV/9dWFb/XVhW/15ZVv9eWFX/X1dV/2FYVf9iWFT/V1VP/1RaU/9dXlb/ZVhS/2ZX + VP9KXVr/YJaY/4PW4f9o1uz/WdPx/1DR9/9J0vT/RNTq/0XX6f9G2+3/Sc/i/Ue0wq9AnagpQaGtBf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFErbyFR83e7Ubc7v9F1+n/Rdfq/0rU8v9Lz/j/T9T5/1Hb + 7f9Ky87/aYSC/2ZdVP9WWUn/VV1K/1lcS/9eWVb/X1Zb/15XWP9eWVT/XllU/19ZVP9fWVT/X1lT/2BZ + U/9gWVP/YFpU/2BZVP9fWFT/XllV/15ZVf9eWVX/X1lV/19ZVf9gWVT/YVlU/19ZU/9eWlP/XlpT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWFT/YVlU/2RbVP9nXFL/XVFG/1tQRv+Nh37/7uvn//7+/v//////yMrN/2dqbv9LSk3/WUxH/1pL + RP9VSEf/e3Ry//Lx6P//////2ebq/4mWnP9TTVH/YEpE/7umk///9ur//P7//9fj6/9ue43/R09U/1NU + S/9dW1X/XFhU/11XVv9gV1f/YlZY/2JVWP9kVFb/ZVdX/2VYV/9iWFT/YVhR/2NcUv9eXlL/U01E/21d + Vv/DtKn/+/jr///////o8fT/t7y//5aKgf/d2ND//////+nx+v+Vq8T/TlJe/11RTP9mXFH/XVlO/2lb + SP95YUn/0se+///////+/v7/+vn6//3+/f//////0tfc/213gP9QU1f/WVRP/15OQP+AcGH/zcS+///9 + +/////7/+fv4//X+///x/P3/n7PA/1hjbv9PSEj/aFVL/2hTRP+OgnD/x8O5//Ly7/////////////// + ////////9fTy//r59///////////////////////4uHi/6inqP9nZmf/Tk1N/1dUVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWlP/XlpT/19ZU/9hWVT/YFlU/19ZVf9eWVX/XllV/15Z + Vf9eWVX/X1lV/19ZVP9fWVP/YFlT/2BZU/9fWVP/X1lU/19aVP9eWVT/YFlU/1VZVP9OWVb/WVpU/29c + Tf9vW0v/XlNE/11vZf9urKz/cdro/1jU7/9N0Pv/S9H+/0jS8v9E1un/RNfp/0Xa7f9FyNjtRaWyg/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUSgrwdCtsgxTsrb2UjW5/9D2er/R9fp/0rW7P9L0vP/R871/1XW + 9v9az+H/NZqi/0ppaf9VVU//V1hN/15dT/9gXE//XVVS/15VV/9gWVf/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlS/2FaUv9iWlH/YltT/2JbVP9VTUf/bGNd/8C2sP/39fL//////+/w8f+iqKv/VFlc/2Nb + WP9xZWH/e3Fx/6Gbm//19fD//////8zW2f9yf4L/VExO/2VPSP+9rZz///zw//j8//+7x9L/XGp+/0pQ + VP9dW1D/XltS/1tXUv9cVlP/X1dX/2FYWv9gWFn/Y1dY/2JXWP9hV1f/YFdV/2BYUf9gWk//YF1P/11X + S/9iVk3/gnNp/+Hdyf/+/fv/8/f4/8bJyv+XjYX/3tvS///////h7Pb/ip26/1FSXP9iUUr/ZV1R/1db + UP9iV0v/a1NF/8q7sP////7////+////////////+/v8/7a8wv9YXWT/UVJQ/11aUv9fVUn/XVBG/31u + a//a0M3//Pv5//z//v/1/v//8/z9/7HCzf9eaHT/TEZJ/2pZU/9lVEf/Wk5A/3RtYv+vrqb/4+Pe/+/u + 7P/6+Pb////+/////////////v39//f39//s7Oz/0dDR/5CPkP9ZWFn/T01M/1lWVf9dWVj/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9aWlX/VVtX/11b + VP9qW07/ZVZK/19cUP9GW1X/QHZ6/2rD0v9k0ez/U9P5/0nT/f9L0/f/RdTr/0TW6f9F2uz/RtPk/0e9 + zNc9qLYvR5unB////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFEoK8rQbjJr0XU5vlF2ev/RNfp/0nW6v9U1O7/SdTu/0Xc + 9f9g1ev/dqm7/1ZoeP9JVlf/U1NN/2VYUP9tXFL/bFtS/2RVUf9hV1X/YlpX/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2FYUP9hWE//X1hO/15ZUv9eW1X/WVRP/15UUf+CdG//5t/Y////////////3eLk/4+X + mv+mpKH/ycG//+Tc3f/28PH//f36//////+/zM//Y290/1ZNTv9hS0P/t6qa///78f/4+///usXR/1hm + e/9JTlP/XlpP/19bUf9dWFP/XlhU/2BYWP9fWFn/XldX/2BYV/9gV1f/YFhX/2FaV/9iWlT/X1hO/2Ba + Tf9gWU7/XlRL/2RYTf+yqJP/8u/l///////y9PX/5+DX//n37///////0uHr/3iGo/9VUlz/ZFFL/2Nc + Uv9WXFT/YVdO/2hRR//Esqf///7z/////P/8/v7//////+Xo6/+UmJ7/TU5R/1lZVP9eW1L/Y1tS/15S + Sv9eTkv/jHp2/+Hb1f/+/v7/+P////b8/f/C0tv/cHqE/09KTv9jVVD/a1tQ/2NXTP9XUUf/WldP/3dz + a/+noJj/1MrB/+Td1//g3tz/39vb/9rW1v/Fw8P/l5WV/2VkZP9NTU3/VVRU/1dVVP9YVFP/WVVT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/19Z + VP9hW1X/YV1R/1pVSv9bWlL/UFRS/0paYf9li5v/hMbd/17X9P890/P/R9Xz/0jV7v9G1+r/Rdfp/0Xa + 7P9E0+T3Pqy6r0eapyn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFElKIDSKa0XU7P4PFG1+n/RNjp/0fW6f9S0+z/XtPx/0jV + 7/9F5P3/SMTc/0V+kv9AVGT/R1dY/1hbVP9oWlL/bFpQ/2xaUP9mV1P/ZFhX/2NaV/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9iWU7/YVpN/15aTf9bW1T/V1lW/1tXWP9eUlL/aFVN/7+tov/38ez///////X8 + +//q7/D/8vLx//n49//+/f3////////+/f//////tcTI/1pka/9WTlD/W0c+/7Kfj//78+n//v7//9La + 6f9peJL/T09Z/19STf9kWFT/Y1lV/2BaVv9dWVX/WVhV/1lZVv9bW1T/WVpT/1pZVP9fWVX/YltV/2RZ + VP9mWlL/ZllT/2BWT/9cUkf/g3Rg/9jPxP///////v7+//38+P/9/vz//v///8bU3f9mboX/XFRc/2pU + Uf9hW1T/U1xW/2FXU/9nT0z/sJ6S//Lu3v////7/+f78//7////N1Nz/eXqD/0dEQ/9dXFP/W1lO/1xZ + UP9iWFT/Z1NQ/2RNSf+ekIb/5uTe////////////6fT9/4ySnP9TT1L/XlNN/2dbUf9jWVH/XVdP/1xX + UP9gWVP/aV5V/3NoXf9zamT/bGlo/2pmaP9kYmL/Xlxc/1FPT/9FQ0P/Q0FB/0lHR/9SUE//XFdV/2Ba + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9cVlP/XVhR/2JeU/9gW0//WlpR/1ZcWv9JW2L/NV9v/2Kpwf9T0e//Ptj5/0bV9f9H0e7/S9Xs/0jY + 6f9E2ev/Rtbo/0nF1PFMoa5bTJSfA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BRqSyNUO7y7tK2ev/Rdfp/0TX6f9F1en/T9Tu/13V + 8/9g2O7/ZtHj/1aZqP9EVmP/UE9W/2JaWv9qXFn/aVhT/2ZXUf9kVlD/YlpU/19bVf9eWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YlpP/2JbTv9eXU7/WVtV/1ZYV/9bWVv/YlZW/2RQSP+Hb2P/3NDF//// + ///9/////f////7//////////////////f////7/+////6S0vP9NWGP/U0xS/1hFQP+ymIb/+eze//// + ///s8vv/fYun/01OXv9WS0v/ZFlZ/2FYV/9eWVT/XFhR/1xZUf9dXFP/XFxP/11eUv9bWVD/U05I/01H + Q/9YT07/X1RW/2JXV/9iWFL/YVhN/1lPQf+pnJL/9O/q////////////+v////r///++ydD/W1pn/11T + Wv9oVFf/XlpW/1NbVP9gWFX/Y05O/5yJfP/j3c3///////v//v/4////pq+6/11cZv9VTkv/XltQ/11Z + T/9YWFL/X1hX/2xXVf9jTUf/a1pL/6uil//o5OP/6+rr/8bM1P97f4f/VFJT/15XUf9iWFH/XlZS/1xW + Uv9bVlP/WFFO/1FIQP9NQzn/RD45/zs5Of87OTr/RUND/1VTU/9lY2P/dnNz/4mIh/+WlJX/pKKh/4mF + gv9oYl7/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9mW1b/Y1VQ/1tTS/9dXVP/YV9Y/2BaVf9gWFf/V1Zb/0VUXP9WdYX/Zr3P/17h9P9K0en/SdLv/07X + 8f9J2Oz/RNbo/0bX6f9I1uf/QrHBuUebpzP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BUZ+pD0u2xINE0+T7RNnr/0XX6f9E1un/Q9Xr/0zW + 8P9b2PX/aNjs/12ruP9Oa3b/U0hS/2ZVVv9yWln/cVdW/2lVVP9lV1T/YFVS/2BcVf9cXFP/XFlQ/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JaUf9iW0//Xl1P/1haVf9VWFj/WlhZ/2JYV/9oVk3/ZU1B/6uZ + iv/w7uT///////j+/v/m9Pv/wMPK/8a/vP/69e7///////D4+/+Soq7/RlNg/1NOV/9cS0f/n4Jw/+jZ + xv//////+v///7C+1P9jaHv/SkNJ/1lSVf9dWVj/XFlT/19aUP9jXFD/Y15P/2BcTf9XU0X/XVhM/3Rv + aP+Ef33/ZWBj/1dSXP9aVFn/YlhS/2RbUv9RTEb/dGhe/8i8r/////z//v/+//j////w/v7/sry//1lP + U/9eUlj/ZFRd/1tYVv9UWlD/XllW/19MTv+Ld2n/18/B////////////5/H7/4GKmP9JSFD/YllU/19a + T/9eWlL/WFlW/1xYV/9rWFb/blpS/2FPPv91Z1n/mZGP/5mYmv9xdnv/VFZb/05NTP9WUkz/WVFL/1RO + TP9UTk7/VVFR/1tWVv9mX1r/cWpi/3h1cf9/fn7/i4qK/5uZmf+trKz/v76+/9DPzv/g397/6urq//Px + 8f+7uLX/cW1o/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/altV/2xXUP9gVEz/VllQ/1xdWf9jWVj/ZVNT/2FSVf9eWl3/TVBc/1WXoP9c1d7/U9fq/0/W + 8/9L1PH/SdXs/0fX6P9E1+n/RNrs/z/I2/tJqreBVJihD////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AU6jrktMwtHLSdzv/0XX6f9F1+n/R9fs/0jV + 7v9P1vH/W9fx/2TE2P9Ago//N1Nd/1dTWv9pXV3/aldV/2hSUP9nVVP/ZlpX/2FYVP9eXFX/WltT/1ta + Uf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9iWlH/YVtQ/11cT/9YWVX/VlhY/1hXWP9gVlX/allQ/2NN + Qf95ZVb/wbiu//39+///////3+32/36FjP9/d3P/8Ong///////f5u3/gZGf/0RQX/9XU1z/Y1JQ/3th + UP/FtqD//v77//3//f/s9v//n6a1/1pbZP9NTVD/VlRU/1hWUP9fWU3/ZFlM/2RZSf9gVkb/V08+/3t0 + aP/Bvbj/6+fm/6elqf9tcHz/V1de/11VTv9gV1D/XFpa/1VLQv+WhXH/+O/c///+/v/8////4vb5/6Ss + rP9eUEr/YlRY/2FUX/9ZV1j/VltP/15ZVf9bS03/e2la/8m/sf/8/Pv/+Pj5/8HI2P9ob37/R0ZJ/2Jb + U/9hW1H/XlpS/1ZaV/9ZV1j/ZlRT/2hXTv9nV0T/XU8//1RJR/9QTlH/REVJ/0xNT/9YV1X/YFxX/2pl + YP9uamn/dXBz/356ff+MiIv/o5+c/7u3sv/Qzcz/5eTl//f39v/+/f3///////////////////////// + ////////0tDO/4J8d/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2RXUf9sWlL/Z1tT/1VWTv9XWFP/YVdV/2VVVf9iVVb/XVpc/0lOV/8ya3P/RK23/2Xg + 8v9Q1/H/R9Ds/0vT7P9M2O3/RNfp/0XX6v9I2uz/TLvJy1CbpEn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFJu8mTR9Dh+UTZ6/9F1+n/SNfr/1DV + 8v9V1PT/Utfv/1TQ3/99mKr/aWJr/1ZTTv9iX1T/a2BY/2VWT/9lUk//ZVZV/19cWP9ZXFf/Ul1S/1Be + Uf9WXVP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlS/19ZUv9dWlL/W1lU/1paVf9cWlf/YVlV/2ha + Uf9kVUj/XlBC/5eMgP/t6OD///7+//X///+7wsP/s6ql//Hp4f//////ztbg/259jf88R1b/WFRa/2RV + Uv9iTj//n5B6//Lt2////////v///+Ps8v+bqa7/VF5g/0pMTP9STkj/W09F/2NQRP9mUUL/XUk6/4Nx + Yv/Mwbn//fz7//7+/v/9/f3/o7W+/1pjav9WTEj/YFVP/1RXWv9VTkb/gGlS/8m0n//+/fz//v///9fp + 7v+ZnZ3/ZlZH/2JWVv9bUl//W1ha/11eUf9dWFL/V0xM/2xcUP+upJT/4eHb/8bJzP+Hj5v/WF1n/1NQ + UP9hWlP/YVpS/15aU/9VV1b/UlFU/1pPTv9cT0b/WU47/1pPPf9fVE7/aGFj/29qbf98enn/i4qH/5yb + lv+xsav/yMfE/97b3//w7fP/+/r8//z8/P/9/fv//f38//7+/v/+/v7///////////////////////// + /////////////9bU0v+TjYj/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9iVk7/bFtR/2peVv9aVVP/WFRR/2FVU/9qWln/aVtY/2BUTv9mXFT/Sk9M/12A + hf+A1N7/R9Lg/0fT7P9R1fT/Udbz/0fW6v9F1+n/Rdrt/0TJ2flGrruR////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUansglHo65JSsnX0Uja7P9E1+n/Rdfp/0nT + 7P9OzvD/U9L0/03a8f9DyNb/UGp9/19UXv9fWlX/W1lO/2dcVf9nVlD/bFVT/2dXV/9bWVX/WF1X/05a + T/9MXE7/VV1T/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YU/9eWFT/XllU/11ZU/9bWFL/XFdS/2Ba + VP9oXlX/YFdM/1dMQf93aF3/v7Sp////+P/9////7fDs/+zm4P/79vH//////7/K1P9lcn7/QkdN/2JZ + Wf9nWVX/W01D/25iUf+yqpf/+fnz///////9////5u3v/7zDxf+Wl5b/enZy/3RrY/+BcWj/koB4/6eY + kP/a0Mn/+Pb0////////////6e/v/4iZn/9PVVv/Wk9O/2NYVf9RVlj/WVZL/2lWPv+Pe2j/6OXl//// + ///f5+z/iIuM/11PQf9hVlX/XlZf/11ZWv9fXFH/XVpS/2BZVP9lWU//cGVZ/3Nvav9gYWX/UFRc/0tP + VP9PTEv/UUpC/01GQP9KRUL/TExO/11dX/93cW3/h350/5eQf/+knpH/sKun/7+6vf/Qzc//4uDh/+no + 6P/t7ev/8vLx//j39//9/P3///////////////////////////////////////////////////////// + ///08O7/5ePh/9jW1P+urKf/hYB6/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/ZVlR/2taUP9mWlL/XFdV/11ZVv9nWlj/aFZV/2NTUv9nWlX/ZVlS/1NU + Uv9EaGz/Q52n/0jb6f9L3PX/TdPz/0/R8P9N1u3/Rtfp/0TZ6v9F1uj/ScHQz0yfq0lKo64J////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFJqrgLRbjFpUfS4vdH2uz/Rdfp/0fX + 6v9M0e3/Ts/w/2XZ+P9qzeP/R5Sj/09XYv9fUlP/ZFtS/2FZSv9mW07/XVpQ/1tbVP9dWVb/XVdV/1xZ + V/9VWlH/UlxP/1hcUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFT/XVhU/19ZVP9gWFP/YFhS/19Z + Uv9fWlL/X1pS/2FcU/9dVU3/X1FH/4x6bP/r49X///36//////////z///79//n///+tu8f/YGlz/0xK + SP9oWFP/ZllT/15VUv9YUEb/dGpZ/7iyp//08vH////////////8////5+fn/9HQzf/JxcH/0cnG/9/W + 1f/u6eb/////////////////4OLj/5Ocnf9VY2b/S09T/2FWV/9lWVn/UldX/1tbUP9lVj7/b15K/6CY + mf/Cwsb/oaav/2ttbv9gVEn/YFdU/1hSVf9WUE//V1JJ/1ZSSv9UUkj/WFBH/1JIQv9EPz//OztA/0RG + Sv9aXF3/c29r/4R8dP+QiIT/nJaW/6ilqf+4uLf/zMrC/9nWzP/l4tv/7Ovn//Lw8P/49/j///////// + ////////////////////////////////////////////////////////8/Hx/+Ph4f/V09T/xsXE/7m4 + tf+uq6f/oZuZ/5KNiv+Cfnr/b2tm/2ZiXP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2VaUv9nWVD/Y1hS/19YVv9fWVj/YVpY/2BXVP9fVlD/ZlxS/2RZ + T/9dWlH/T1dX/0pwe/9gwtD/XtXr/13V9f9W0fX/SdLu/0bX6/9F2On/Rtvt/0bO3vdEqrelTqGvCf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFMprYJSq29QUXR4OdE1+n/RNfp/0bX + 6f9L1uz/T9Lv/1HW9f9r1/T/bK7E/0FicP9hVlz/Z1VP/2ZYSv9pXUr/ZlxK/1NeUP9KXlP/VFpV/2FX + V/9fVlf/WltT/1ddUP9aW1L/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhW/11YV/9gV1b/Y1hT/2VZ + Uv9jXFH/XVtQ/1ZXT/9aXVb/XVtW/1tNRP9yWUn/vKWT//by5P/////////9//z////l+///laq7/1ph + Z/9YTUL/cFdL/2ZZUv9ZWV3/UVNS/1hTRP93aln/uaqe/+rg2v/8+fX///////////////////////// + //////////////7////v8/X/z9LV/4+SlP9XWFn/SUtL/1dUVf9kWFz/Y1db/1RZVf9cXk//aF5H/2dY + Rv9jVVb/ZGJq/1NYYv9LTU//WFJH/1hSSv9YUEz/WlBO/1tWT/9fW1L/YWFT/3BrZP98dXb/g3+E/42L + kP+XmZn/q6uo/8LAuf/X0sv/5+Lg//fz9P///f////////////////////////////////////////// + //////////////7//P/7/Pn/+vn3//Px8v/p5ej/3dvc/9HR0P/FyML/ubm1/6mlpP+UkI//g39+/3Bt + av9gXFj/WFNQ/1lTUP9VT0z/UEtH/1FNSP9WUk3/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jWVL/ZVlQ/2NYU/9iV1f/XlhX/1tZVv9aWVT/XltR/2Rb + TP9lW0z/Y1tN/2VST/9hW2X/VJKf/2PI2v9p2Pj/WdL4/0fR8f9D1u3/RNfq/0bZ6/9D1eb/QcHR5VGh + sT9UmqsJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BS6e3KUqywqtH1uf9Rdnr/0TX + 6f9H1+r/T9Xw/1HT8f9Y2/n/W8Hd/0qGnf8xVGP/XFZc/2ZXUv9jWEv/Zl1L/2VcS/9VXVD/T11T/1Za + Vf9gV1f/X1dX/1xbU/9ZXFD/W1tS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xXWP9cV1n/YFZZ/2VZ + U/9nWk//ZFtN/11cTv9WW1T/T1hT/1ZYVP9kVU3/clVH/4hoVv/c1Lz//f31/////P/4/v//0+79/4CX + rf9UWFz/YlE//3ZbSf9nW1L/UFZe/0xXW/9aWU7/aFdG/3BUPf+giHX/0MS4/+fi2v/19PD/+Pf3//j4 + +P/19/j/7fb2/+T09f/V5Of/qra7/3F4ff9OTE//WVFQ/2RYUv9lWFf/YFJa/11TWf9UWE//Wl1J/2Fd + SP9hV0j/XU5P/09JT/9HSlH/TFFQ/1hZTv9nYFj/e3Bn/4Z6dv+KhIH/lJOJ/6Sklf+1tbH/y8nN/+Xg + 5v/8+P3///////////////////////////////////////////////7//f////j+/v/4/Pz/+vr6//j4 + +P/39vf/8PLt/+Tn3v/Y2tH/zs7H/8fDv/+1ra//m5WZ/4J/gP9ra2f/V1tS/1JRTP9UT07/VVBN/1VQ + TP9XUk7/WFNP/1dSTv9XUk7/WlVQ/11YU/9gW1b/XlpV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1lS/2RZUP9jWFP/YVdX/15YV/9cWVb/WllU/15a + Uf9kW03/ZFtM/2RdUP9jVlP/UlRc/y5pdv9btcj/Z9Px/1jR8/9O1/b/Q9Tv/0PW6v9F1+n/Rdns/0jU + 5v1QqLipUpysJ////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUqywkNKzN3rRdfo/0XY + 6f9F1+n/S9Xt/1fT8f9Z1e7/Zt7w/2imuP9bW27/TlBY/1hYVf9eXFP/X1xQ/2BcTv9fXE7/WVxQ/1Zb + U/9ZWVX/XlhV/2NXVf9pV1P/a1dS/2dYU/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWFb/XFhW/15Y + V/9iWVT/YllR/2FaUP9gW1L/XFxW/1tbWP9cWlf/Y1lS/2lWTP9qVUn/qpuG/+zo2///////+/3+/9nn + 8f95h5X/TlFV/15TSf9qWEr/YVZO/1xZWf9aW1r/XlpR/2VaT/9qWk7/ZVVK/3BhWP+QhHz/rqeg/7az + r/+1tbT/r7Kz/6arrv+aoKP/eH+B/1pfYP9SU1P/W1dV/11XU/9hWlP/YFhV/1lQVf9UTVL/UFFN/01N + Q/9NSj7/V1FJ/2pgYf90cHP/gYKF/5KUlP+mpZ//urWx/87Hwv/g2tf/7uvq//f39v/4+Pf/+fn5//v7 + +//9/f3///7////9/P///vr////8/////v///////////////////////////////f/v8u//3N7c/83L + yv++u7z/s66x/6Cem/+Li4P/eHlw/2pnYP9dWVX/WlRS/11WVf9dV1f/WVdS/1lYUf9bWFP/XFdV/15Z + Vf9dWlX/XlhU/19ZVP9eWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9fWVL/X1lT/19YVf9gWFX/WllV/1Zb + U/9aXFD/Y1tO/2NbTv9iWk7/Y1hQ/15UVf9PU17/d4ma/3rD1f9j3PD/Vdfx/0rW9P9G1u7/Rdbp/0XY + 6v9F1uj/SrzO6UymtkH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUmhsCFJtcWRSdrr/0XX + 6f9E1+j/Rtfr/0zT7f9Uz+//W9v1/03P4P9IhZb/UEhc/1lWX/9XWFT/XFtS/19dUP9fXE3/X1xN/1hc + UP9WW1P/WFlV/15YVf9kV1X/a1dT/25XUv9pWFP/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XFlV/1xZ + Vf9dWVX/XVlU/11ZU/9fWVb/YVpX/2BZVv9fWFX/X1hV/2BZVf9dVVL/V09J/3hmVf/Ow7P///////// + ///k5en/eHp//0tKT/9cWFf/YltT/2VaUf9mWlH/ZFlR/2BYUv9dWFX/WldX/1pTTv9dUkr/YlhR/2hf + WP9qYlr/Z2BZ/2NcVf9fWFL/W1VP/1ROSf9PSUP/T0lC/1BLQ/9PSkP/TkpB/1RQS/9gXl3/b21u/4OC + gf+XlJP/p6Sj/7Szsv/DwcH/0s/Q/+Df4P/o6Oj/7u7t//Tz8v/59/f//v38//////////////////// + ////////////////////////////////////////9vTz/+Ti4P/Qzs3/vbq6/66qqv+jnpv/l5KN/4iC + ff93cWz/a2Vh/2ZgXP9iXFf/XVhT/1tVUP9ZVE7/WlRQ/1tVUP9cVlL/XVdS/15YU/9dWVP/XllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/X1lS/19ZU/9eWFX/YFhV/1lZ + Vf9UW1P/WVxQ/2NbTv9kW07/YVhM/2NXUP9lWFn/V1Vg/1NfcP9gqbv/YuDz/1DV8P9K1vb/RdXx/0TW + 6/9F1+j/Rdfp/0jT5f9Mrb2PTJqoIf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFJrbtVSMXV30bb + 7f9F1+n/Q9bo/0jX7v9M1O3/VNDm/3ja7v9XpLL/RWRu/1NOVv9cWlz/W1pU/1tZUf9cWlD/XltR/19b + Uf9eWlL/XlpT/11ZVf9dWFX/YFhV/2lXVP9tVlP/aFhU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + U/9fWVP/X1lT/15ZU/9eWVP/YFlW/2BYV/9fV1P/X1dU/2FaVv9hW1f/XVlW/1hTUP9ZSjr/nY59/+3p + 4P/+////0tHS/2xrbf9HR0r/WVla/15YVf9mXFP/aFxP/2ZaT/9hWVT/XFlZ/1ZWWv9ZVlT/WVJM/1BJ + RP9HPzr/Qzw2/0U8Nf9JQDn/TUM8/05HP/9YUUr/Z2BZ/3Zwaf+Dfnf/kY2G/56blP+rqqX/urm3/8jH + xv/Y1tb/5+Xn//Lx8//5+fr//f79//////////////////////////////////////////////////// + //////7/+/v4//Lw7v/k4+H/1dPR/8bEw/+5trX/rain/5+amP+Qi4n/f3t4/29qaP9jXVz/XVdU/1xV + Uf9bVE//WFFM/1dRS/9YUkz/WlNO/1tVUP9dV1L/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlU/1xZU/9eWVT/YVhV/2FY + Vf9eWVT/XFpT/15bUf9hWlD/YVtQ/11ZTv9dWVD/YVtX/15XW/9RTFb/XIiV/2vM2/9j1+z/S9Ds/0rV + 8P9J1+7/Rdbp/0XX6f9G3O7/RbvL30WgrlP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFLn6sNSr3LkUfX + 6f9F1+n/Rdfp/0PV6/9H1e//Ttfu/1vX5P9/x9T/X3iD/1NQU/9gWVT/XVpU/19dVP9cWVH/WlhR/1xZ + VP9eWVT/ZFhU/2dYVP9jWFT/W1lU/1tZVP9nV1X/bVVV/2hXVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9iWVL/YllS/2JZUv9iWVL/YllS/2JZU/9gWFT/XldS/15YVP9gWlb/YVtW/2FbVf9hWlT/Wk5A/3Jl + VP+mn5f/xMPD/5SWmf9bXWH/Sk1O/1dZV/9dV1P/YFhQ/2FYTf9dVUz/WFJN/1VRUP9TUVL/V1NT/1pW + U/9cWFT/XllX/2JcWv9uaWf/fnp3/4uHhP+Vko7/npyZ/6yqqP/Avrz/1tTS/+vn5P/9+/f///////// + ///////////////////////////////////////////////////8+/v/+Pj3//Tz8//u7u3/5+fl/9zc + 2f/S0Mz/xcK+/7azrv+joJz/kI2J/315dv9pZmL/W1ZT/1NOS/9STEr/VE5M/1ROS/9STUr/Uk1K/1dS + Tv9dV1P/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tZVf9ZWVX/XFlV/2NY + VP9jWFT/Y1lT/2RZUv9jWVL/X1lS/1xaUv9bXFP/WFxR/1dXT/9kVlL/a09U/1xocf9ip7H/dtrp/1LO + 5/9Q1O//Tdbw/0XW6/9F1+n/Rdnr/0LN3/9Ar72PQZijDf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BS6GtSUrD + 0stH3O7/Rdfp/0XX6f9G1vD/R9Pv/1Da8P9f2uj/XqOx/0plcP9NT1L/XVhU/1xZVP9dXFT/XVtT/1xZ + U/9dWVT/YFlU/2NYVP9kWFT/YlhU/1xZVP9cWVT/ZldV/2pVVf9mV1X/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YllS/2JZUv9iWVL/YVlS/2FZUv9iWVP/YllU/2BZVP9eWFP/XVdS/11XUv9dWFP/YVtV/2pf + Uv9hV0j/WlRM/15cW/9QUlX/UlRY/1VXWf9YWVj/XVpW/1xWT/9eVk3/W1RM/1dSTf9WU1L/Wltb/2xq + av9/e3r/jouJ/52amf+rqKf/v728/9TS0P/l4+L/+fbz//////////////////////////////////// + ///////////+/////f/+/vz//f37//v7+//6+vr/+fn5//b19P/r5+b/2dXU/8nGxP+5t7X/pqOh/5KP + jf+DgHz/dXFs/19bV/9QTUn/Uk5K/1hUT/9aVVH/WlVR/1tVUf9bVlL/XFZS/15YVf9fWlb/XlhV/11Y + VP9eWVT/XlhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9bWVX/WVlV/1xZ + Vf9jWFT/ZFhU/2RZU/9kWVL/YllS/15ZUv9cWVL/Xl5V/1lcUv9VVEz/Y1hU/2xXW/9EVFz/P4SP/3HS + 4v9a2O//T9Pw/0vT7v9J1+7/Rdfp/0XX6f9I2+3/Rr3NyUGZpEf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUy2 + wY1J0N/xRNrt/0XW6f9F0+n/UtP5/1bT9f9Q2+r/V8/X/310iP94VmH/X1VP/1NaS/9aX1H/VlpP/1Vc + Vf9iWlj/b1RY/21VWP9dWFb/V1tT/11bUf9jWlH/Y1pR/1haVf9SWVj/V1pW/2BZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2NZUv9jWVL/Y1lS/2JZUv9hWVL/YVlS/2FYUv9fV1L/YFpV/2NcV/9iXFb/XVdS/11W + UP9iWEv/XlZJ/1dQS/9PTk//SUtQ/0lMUP9KTU//S0pM/1BMS/9iXVf/eXJr/46IgP+gnJb/sK2t/7y8 + vP/Iycn/2dna/+jo6f/z8/P/9fX1//j39//6+vr//fz8/////v////////////////////////////// + ////////////////////////9/Hv/+Dc2f/IxsT/t7Ox/6ikof+ZlJH/iIOA/3hzcP9taGX/Yl1Z/1tW + Uv9YVFL/WVZR/1pWUf9bV1L/W1ZS/1xXUv9eWFT/XllU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/V1lX/1JZ + Wf9YWVb/Z1hS/2tXUv9uVlL/b1ZS/2lWU/9XWFf/VlhX/1xcWf9dWlT/WVdP/2FgV/9dXVP/R1BM/1Zq + cv9/sL//Yd7s/1DV8P9RzvP/UtT2/0bV6v9F1+n/Rtvt/0PI1/FDp7KJ////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUea + oBtPxtPDStjq/0PX6v9F1+r/TdTw/1bM+f9W0vn/QNfo/zW2vv93WG//fkhU/2hZUP9XYk//V15N/09W + S/9PWlP/YlpZ/3VSWf9yU1n/W1hX/1NbU/9cW1H/ZVpQ/2VaUP9TW1X/SVtZ/1JaVv9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9jWlT/Y1pU/2NZU/9jWlT/YltU/19ZU/9bVVH/WFJO/1dRTf9STkj/T0pF/09K + Rv9UUEr/WFFH/1hSR/9YVU//X2Be/2xvcf99goT/kpWX/6inqP+6ubb/x8S//9bSzf/i4Nv/6+rn//Lx + 8f/29vb/+fr6//7+//////////////////////////////////////////////////////////3+//Pw + 8f/g3d//zcvK/725tv+uqqX/n5qV/5SNif+HgXz/d3Ju/2xnYv9jXVj/X1pV/15YU/9aVVD/VU9L/1hS + Tf9bVlH/XFdS/1xXUv9cV1L/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZVP9gWFX/YFlU/2BZVP9fWlP/X1pT/19aU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/1ZZ + V/9PWVr/V1lW/2hYUv9uV1L/cVVS/3NVUv9rVVP/VVhZ/1RYWf9bWFj/XlpU/1xbUf9ZXVH/VF1N/0xW + T/9RXGT/XYWW/07T4f9P2vf/VM/5/1TO9v9M1PD/Rdfq/0TZ6/9G0uT/SrnHwVKZoRtSmKAD////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AT2r + tQ88qbRrSc/f50na7f9E1+n/Rtbq/0nS8f9Izvf/bdv3/2rHz/81hIn/V1dh/15NU/9dWVT/XGBW/1pZ + Uf9XVk7/WFhS/2FYVf9qVlX/aFZV/1xZVP9YW1P/XFtS/2FaUv9jWVL/XFlV/1lZVv9bWVX/YFlU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XlZS/11VUf9ZUE3/VU5K/1FLRf9PS0f/VE9N/1pVUv9dWFX/X1xY/2Zj + YP90cW7/g4F8/5OPhv+jnpX/r62o/7m6uf/FyMf/1NbX/+Tm5//29vb///////////////////////// + ///////////////////////////////////+/v3/+Pj4//Px8f/r6ur/4d/f/9bU1P/GxMT/trKz/6ql + pf+blpf/jIaI/3x3dv9vaWT/YltW/1ZQS/9VT0n/VU9K/1RNSP9UTkn/VE5J/1hSTP9cV1D/YFhR/19X + Uf9gWlT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dWlL/WVxR/1paVP9bWVb/XldY/2BWWv9gVln/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9bWVb/WFlX/1tZVf9kWFP/ZlhT/2lXUv9rV1L/ZldT/1hZVf9WWVX/V1lU/1haVP9aWlT/XVZR/19Z + U/9cWVn/TlVc/0Znc/9bvMP/Zdji/13U8v9Qzvn/TtPz/0fX6v9E1+n/R9rs/0jI2edEnqtpRKCsD/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wE1vMwfNsPUv0HU5vlF2ev/SNfp/0rV6/9B0vD/ONb4/4Dd6/+ar6v/Sltb/0BeWv9CWlj/T1hY/1tX + WP9eVVf/ZFhV/2VXU/9hWFH/XVpR/11ZUf9dWlL/XlpS/11aU/9cWVT/YVhU/2dXVP9qV1T/ZlhU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tVU/9dV1T/Y1ta/2BaWP9hXVr/aWVk/3l2df+KhoX/l5SS/6Wk + ov+1tLP/xsXE/9TT0P/o5+D///z2//////////////////////////////////////////////////// + //////7/+/r6//b29v/x8fD/7e3s/+no5//d29n/z83L/7+8u/+vq6r/oJyb/42KiP9/e3n/bmhm/1xV + U/9PSUf/TEVE/09JSP9UTkz/V1FM/1lTTf9aVE//W1VQ/11XUv9eWFP/X1lU/19ZVP9gWlT/YVpT/2FY + Uv9iWFT/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWFX/WVxQ/1BgS/9SW1T/VVhZ/11TXv9iUGP/YVJg/19ZVf9fWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YVhU/2NYU/9hWFT/XllU/15ZVP9hWVP/Y1lS/2BZUv9aW1H/V1tR/1RcUv9RWlX/VlhY/2hV + WP9uVVz/aFZc/1RSWP9IW2D/Z5uZ/3rPw/9k2uj/Ss/8/0/T9v9I1uv/Rdfp/0bb7f9D0OP5Oa7AvTqo + uR////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BQLK9LUXR4elF1+n/RNjp/0rW6f9R1O3/R9X1/zzW+v9qyNj/d5eV/0JcXP9CW1n/SFhY/1Na + Wf9cWlj/XVVV/2NZVf9kWFT/YVhS/19ZUv9fWVL/XVpS/11aUv9dWlP/XVlU/2FYVP9lV1T/Z1dU/2RY + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9kX17/cGtq/5iTkv+loaH/uba2/8rIyP/W1tb/5eTk//Lz + 8//+/v7//////////////////////////v////////////////////////////7+/v/+/v7//v7+//7+ + /v/8+/n/7+3p/9bV0f/Bwb//q6qo/5uZlf+QjYj/gn96/3Vwbf9lYFz/VlFO/09KR/9RTUr/VU9M/1pT + T/9dVlL/X1dU/19YVf9fWFX/X1hV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFhV/1pcUP9SX0z/VFtU/1ZYWP9dVF3/YlFh/2FTX/9fWVX/X1lT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BYVP9hWFT/YFhU/19ZVP9fWVT/YllT/2RZUv9hWVL/WltS/1ZbUv9WXVT/U1tW/1ZY + V/9qWVr/aVNX/2NUWf9VVFr/Qlhd/zt0c/9sw7v/Zdvr/0jL+P9V1v3/StXs/0XW6P9F2ev/RdTm/0bE + 1edIqLMr////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BP6ewHT+wvIFF1uj9Rdjq/0TX6P9J1ur/U9Tu/1XU8f9Y2/z/arPD/2d1dP9IVFT/TFdW/1NY + WP9dW1n/Y1lW/2BTUv9mWlb/ZVlV/2JXUv9gWVL/XVpS/1xaUv9cWlL/XFpT/1xZVP9fWVT/Y1hV/2VX + Vf9iWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/dXBw/5OOjv/q5uf/8fDx//X19f/4+Pj/+vr6//39 + /f////////////////////////////////////////////////////////////Tx7//e29j/ycbD/7Wz + sf+fnZn/jYqH/4F/ev95dXL/cG1p/2ZiXf9fWlP/XFhR/1tWUP9cVlD/WlVP/1pUUP9dV1L/XVdT/15Y + U/9eWFT/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWlL/YVtQ/2NZUv9kV1X/YlZX/2FWWf9hVlj/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/XllU/15ZVP9dWVT/XFlU/2FZU/9kWVL/Y1lS/2BZUv9dWlL/W1xT/1da + VP9ZV1X/a1lY/2lUV/9kVVf/XVZZ/05VWf87V1f/ca2n/27W5f9O0PT/Wdf3/07R7P9G1en/RNjp/0XX + 6f9F1OX7R6q1gUifphv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUCqtT1KwMzPRdfq/0TY6v9F1uj/Ttbs/1nT8f9T0Oz/Wdv8/1edrv9OWVj/SFJS/01W + Vf9UWFj/X1tZ/2RZVv9fUlD/ZlpW/2VZVf9iV1L/YFlS/11aUv9cWlL/XFpS/1xaU/9cWVT/X1lU/2JY + Vf9kV1X/YlhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/3dycf+alZT///v9//////////////////// + ////////////////////////+vn5//X09P/r6+r/3t3c/87Myf+7uLT/qaej/5mWkv+MioX/gX55/3Vx + bv9rZ2P/YV5a/1tXUv9XVE//V1NP/1ZRTf9WUEr/VlBJ/1ZRSf9ZU0z/WlRN/1xXUP9eWFP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVpT/2ZaUf9oWFL/aVdU/2NXVv9gV1f/YFdX/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/11ZVP9dWVT/XFlU/1tZVP9hWVP/ZFlS/2NZUv9hWVL/XlpS/1pb + Uv9YWlL/WldU/2dVVP9sWFr/Z1ZY/11WWP9UV1z/P1VV/1OMhf9bxdP/VNj9/1PQ7/9T0u7/S9bq/0XX + 6f9E2Or/Rdjq/0i0v89Jn6k7////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFAr71hT9Pi+UXX6f9E2Or/Rtbq/0zV7v9V0/L/W8/q/1zH4v9QhJD/Sk1L/1JU + VP9VV1b/WVdX/2JYWP9mWFb/YVJQ/2daVv9mWVT/YldS/2BZUv9dWlL/W1pT/1taU/9bWlP/W1lU/15Z + VP9hWFX/Y1dV/2FYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9qZmP/ioWD/+3q6f///////v79//X0 + 8//u7ez/5+bl/9/e3v/V0tP/xcHC/7Sxsf+mo6P/lpST/4eFhP97d3T/bWdj/15ZVP9QS0b/TEhD/05K + Rv9QS0j/VVFM/1pVUf9cV1L/XFdT/11YU/9dV1L/XlhS/19ZU/9fWVP/X1lT/15YUv9eWFP/X1lT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9iWVT/Y1hT/2RYU/9kWFP/ZVhT/2RY + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9dWVT/XFlU/1tZVP9aWVT/X1lT/2NZUv9jWVL/Y1lS/2FZ + Uv9dWVH/W1pS/11YU/9jVFL/a1lb/2ZXWP9dVFX/W1lc/1BdXP9DZWD/VKmy/2Lf+/9SzOn/WdPx/1HW + 7v9H1+r/RNjq/0XX6f9IxdT5SqS0X////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wE3m6kPQLbHj0nc7v9F1+n/Rdfp/0XW6/9D1O//S9Pw/23S7P9fpLf/VGpw/1lP + Tf9hV1j/YlZW/2NVVv9nVVb/aFZV/2VSUf9pWlX/Z1lT/2NXUf9gWVL/XVpS/1paVP9aWlT/WlpU/1pZ + Vf9dWFX/YFhV/2JYVf9gWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1pW/3dybv/Fwb3/49/d/9XQ + zv+8t7P/q6ai/5mUkf+Jg4L/fHd1/29paP9fWVj/UU1L/0dERP9IR0X/UUxJ/1hRTf9dV1H/X1lT/2BY + U/9eWFT/X1lW/19ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFb/X1dZ/19ZVP9dWlL/ZVpO/21a + S/9qWk3/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVX/XFlV/1tZVf9YWlT/V1pU/1xZU/9hWVL/ZFlS/2ZY + Uv9oWFL/ZFlS/2FZUv9iWVL/ZFhU/2VXV/9iVlb/YlVU/2RYV/9gW1r/UExL/1yQk/9p2un/W9Dp/1zQ + 8f9U0/H/Sdbr/0TY6f9F1+n/R9Xo/0quwI9LlqQP////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BQ628TUTA0MlF2+3/Rdfp/0bX6f9H1u3/RdTw/03U8f9v1/D/PYeb/z1Y + Xv9eVlT/Ylla/2JYWP9iVlf/ZVVV/2dVVP9mVFP/Z1hT/2ZYUv9jWFH/YFlS/11aUv9aWlT/WlpU/1pa + VP9aWVX/XVhV/2BYVf9iWFX/YFhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2NcVv9oYVv/eHFr/4B4 + cv93bmj/amJb/2BYU/9XUEz/Vk5L/1lRTv9aUk//W1NR/11WU/9bVlb/XFlY/19aV/9fV1L/X1ZQ/2JZ + U/9hWVP/XlhR/15YVP9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hW/19XWP9fWVT/XlpS/2Va + T/9sWkz/aVpO/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlV/1xZVf9bWVX/WFpU/1daVP9cWVP/YVlS/2RZ + Uv9mWFL/Z1hS/2NZUv9gWFH/YVlS/2hcWP9hU1P/YVRV/2VZWf9jWFf/WFRT/05QTf9Jgob/UsTV/2LY + 8v9Zz+//U9Dv/0vV7f9F1+j/Rdfp/0Xc7v9Ht8fJSJyrTf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUa0xHdCzuL1Rdnr/0XX6f9H1+r/Stbu/0nX8v9T1O7/e8TX/1Bv + gP9MT1P/ZFlU/2RYV/9kWFf/Y1dW/2RWVP9mVlP/Z1dU/2VZUv9iWVL/XllS/11ZVP9cWVT/WlpU/1pa + VP9bWlT/XFlV/19YVf9iV1b/ZFdX/2JYVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jXFb/Z2Ba/3Rt + Z/97c23/cmlj/2dfWP9dVVD/VE1J/1RNSf9XT0z/WVFO/1tTUP9dVlP/W1ZW/11ZWf9fWlf/X1dS/19W + UP9iWVP/YVlT/15YUf9eWFT/XlhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/2BYVv9eVln/WllV/1lb + U/9gXE7/Z1xK/2RcTP9fWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15YVf9dWFX/W1lV/1ZaVP9VWlT/WlpT/19a + Uv9lWFL/aVdS/2pXUv9nWFP/YVhS/19YUf9hX1f/WVdQ/1tYU/9jXFn/ZFhV/2FSUP9qVFT/WW1x/1Sj + q/9y2ev/XNDw/0/P8v9I1O//RNfq/0XX6f9F2+3/Q8LW9UeltHf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AVORlgVKu8ufRNru/0XX6f9F1+n/R9bq/0vW7/9L2vb/TdDp/2Gj + tP9SY3P/WFBV/2VZU/9jVVP/ZlhW/2VYV/9lVlT/Z1ZT/2laV/9kWFL/YVlS/11aVP9cWVT/XFlU/1pa + VP9aWlT/W1pU/1xZVf9fWFX/YldW/2RXV/9iWFb/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9jWVP/Y1lT/2JZU/9gWVT/X1lU/19ZVP9fWVX/X1lU/19ZU/9fWVP/X1lT/15aU/9eWVT/XllU/15Z + VP9gWVT/YVlU/2BZVP9fWlP/X1pU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9gWVT/X1lV/11YU/9dWFP/XllT/19a + U/9fWlP/YFlT/2JaU/9jWlX/XlVR/1tOSf9gTkj/aFRO/2VZUv9gWlP/YFlT/2BZVP9gWVT/X1lU/15Z + VP9fWlT/X1lU/19ZVP9gWVT/YFlV/2BZVf9gWFX/X1pU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9gWFb/XVZZ/1ZZ + Vf9UXFP/X1xN/2hcSf9kXEv/X1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFX/XVhV/1tZVf9VWlT/VFpU/1la + U/9fWlL/ZVhS/2tXUv9sV1L/aVlU/2NZU/9eWFH/W1xT/1tcUv9cW1T/X1hV/2RWUv9qV1T/c1NV/05V + WP8+hIj/btPi/2HU9f9Q0vb/RNTv/0HX6v9F1+n/Rdnr/0TP5f9KssCfU5eYBf///wH///8B////Af// + /wH///8B////Af///wH///8B////AU+irANPnKQ1SsTTx0bd8P9F1+n/Rdfp/0vW7P9O1e7/U9v1/1XK + 4P9PfY3/UFtn/1tVV/9jWFP/YFVS/2NYVf9jWFb/Y1hU/2RYVP9mWlb/YVhT/19ZU/9dWlT/W1lU/1tZ + VP9aWlT/W1pU/1xaVP9cWVX/YFhV/2JXVv9kV1b/YlhW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZ + VP9aWFT/TlVU/09XVf9VWFX/W1lU/15aVP9fWVP/XllS/15ZVP9eWFb/X1lX/2BYVv9hV1f/YllV/2NZ + VP9hWVT/W1pT/1laU/9cWVT/X1dW/15XVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FYVP9gWFT/YFhU/2BYVP9gWVT/YFlU/2BZVP9gWVT/YFlU/2BY + VP9hWFT/YFhU/19ZVP9fWVT/YFhV/2FYVf9gWFX/YFlU/2BZU/9eWlP/XVpT/15aUv9gWFL/YlpW/2Fa + V/9fV1b/XldW/1taWP9VV1b/UlVR/2BkXv9seXT/Wnl5/z9iYv9HVVX/WlZV/1xZVv9dW1X/XVlT/19Y + VP9hWFX/YFdU/15YVP9eWFX/XVlU/11aUv9dWVL/XVlS/15cU/9fW1T/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/YVhW/2JW + Wf9dWFb/XVlU/11bUP9eXUz/XVxO/19ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhV/15YVf9cWVX/V1pU/1da + VP9aWlP/XlpT/2RYU/9pV1L/aVdS/2dZU/9kWVP/XllR/1ZaUf9ZXlT/WVtT/1lXUf9gV1H/bVpW/29T + Uv9KTEz/OnF0/2W9yf9h1PH/Vdb3/0nS8P9E1Ov/Rdfp/0XX6f9G2u7/Sr7MxU6anTNOn6QD////Af// + /wH///8B////Af///wH///8B////Af///wFJsL4HTLG+f0fM3OdE2+3/Rdfp/0bX6v9R1+7/VdTt/13X + 7v9nv9H/XmJx/1tSV/9cVlP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1xZVP9cWVT/W1lU/1pa + VP9aWlT/WlpU/1xaVP9dWVT/XVhV/2FYVf9jV1X/ZVdV/2NYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9jWFL/VVtZ/zphZ/86Ymf/Qlta/1JZU/9eW1T/XVhP/15aT/9dWFT/XVdb/2BYXv9jVVz/Z1Ne/2lY + WP9sWlP/ZllT/1BdUv9KXVD/VVlU/19UWv9dVFf/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jV1X/Y1dV/2NXVf9jV1X/YVhV/2FYVf9hWFX/YVhV/2FY + Vf9jV1X/ZFdV/2FXVf9fWFX/X1hV/2JXV/9kV1f/YldW/2FYVP9hWVL/XFtQ/1hdUP9cW0//Y1lR/2db + Wv9jWFz/YVJd/11TX/9PWmH/QVVc/zVOTP9ng3j/kcvG/1LK1f8Nk5//JmRv/1RUXP9UWVr/VVxV/1dZ + Uv9hWFb/Z1ZZ/2FUVf9cV1f/W1dY/1pZU/9ZW07/WFpO/1daTf9bXlH/XVxT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2RY + Vv9tVlj/aVZX/2tVV/9aWlT/SV5R/1BdUv9eWVT/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVf9fWFX/XllV/1pa + VP9aWlT/W1lU/11ZVP9hWVT/ZlhS/2ZYUv9lWFL/ZFhS/15aUv9QXFL/T1xS/1BcUv9UXFL/XFtS/2xX + Uv9xVlH/YVVP/1VoZ/9fnKL/WtDl/1fZ9/9T0fP/TNDw/0bW6v9F1+n/RNzw/0bH1edJo6h9SaWrBf// + /wH///8B////Af///wH///8B////Af///wH///8BPJ2oCVG8yatM0uP7Q9nr/0XX6f9I1uv/UdXu/1fX + 8f9U0Oj/T6u+/1Zfbv9aU1n/XVdU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWVT/XFlU/1tZ + VP9aWlT/WlpU/1paVP9cWlT/XVlU/11YVf9hWFX/Y1dV/2VXVf9jWFX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVNN/2ZraP93m5//ao2S/09iYf9TVU7/ZF1W/1dSSP9iXlP/X1pW/1tVWf9fV1z/ZFVb/2ZT + XP9nVVb/aVdQ/2RYUf9RXVL/TF5R/1ZaVv9fVVr/XVVY/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1dV/2NXVf9jV1X/Y1dV/2FYVf9hWFX/YVhV/2FY + Vf9hWFX/Y1dV/2RXVf9hV1X/X1hV/19YVf9iV1f/ZFdX/2JXVv9hWFT/YVlS/1xbUP9YXE//XVxQ/2NZ + Uf9cUE//Wk5T/2RVX/9jWmX/TFVd/0pcYv8/U1D/d42B/6ba0/9f0dr/Xt3n/22krv9qY2v/VVRV/05U + TP9XWFD/Zl1b/2tbXv9jVlf/X1pZ/11aWv9cXFb/Wl1Q/1lbT/9XWk7/WFpO/1taUP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9jV1X/a1VX/2hWV/9rVVj/WlpU/0teUf9RXVL/XllU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFX/X1hV/15Z + Vf9aWlT/WlpU/1tZVP9dWVT/YVlU/2ZYUv9mWFL/ZVhS/2RYUv9eWlL/UVxS/1BcUv9RXFL/VFxS/11b + Uv9sV1L/cldS/2BVUP9IX1//RYaN/1XN5P9W2fj/UtH0/0/S8/9I1Oz/Rdfp/0Tb7f9HzNr7Tayzq02b + pAf///8B////Af///wH///8B////Af///wH///8B////ATmZpA1Nx9fNS9jq/0TY6f9G1+r/StXt/1TV + 7P9m3O//ZcbV/1WNmP9dWGD/YFNV/15YVf9dWVT/XllU/11ZVP9dWVT/XFlU/1taVP9bWlT/W1pU/1ta + VP9aWlT/W1pU/1xZVP9cWVT/XllU/2BYVP9gWFT/YVhU/2JYVP9kWFT/YlhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15TTf9faWf/ZaKn/3u+xf9utLj/Mnt//xxNUv9eVFr/al1e/2BSU/9fUFP/Zlxa/1pb + Vf9WWlP/X1hP/2lXTP9kWE//U1tV/05cVv9eWVb/blRW/2pVVv9gWVT/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FYVP9hWFT/YFhU/2BYVP9dWVT/XVlU/11Z + VP9eWVT/XllU/19YVP9fWFT/XlhV/15YVv9eWFb/YFlT/2FZU/9eWVL/XFpS/1xaU/9dWVX/X1hX/2FX + VP9jV1L/altX/2lYU/9nVU7/YlRR/1VXWf9CVV3/HmBs/z+bqf992en/bdbr/2jU6f9uz+H/VbG8/yt8 + g/85VFr/UlVb/19XWP9fU1D/YlRQ/2NZUf9kWlL/YVtS/11bUv9eW1T/YllT/2JWUf9gV1L/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/YlhU/2pWVv9tVVb/cFRX/15YV/9PW1b/VFpW/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhV/2BY + Vf9fWFX/XllU/15ZVP9cWVT/XFlU/11ZVP9hWVP/Y1hT/2RYU/9lWFL/YVlS/1RcUv9RXFL/UF1S/1Bd + Uv9UXFL/ZlhS/2tXUv9jWFH/U1lS/0xtav9nx9P/Ytfw/1rP8/9Y0vf/S9Lu/0bW6v9E2uv/RtLi/0q7 + x8tOmaIL////Af///wH///8B////Af///wH///8B////AT6dqAk/oq1FR8/g5Ufa7f9E1+n/Rtfq/0zV + 7/9W1er/bN/v/2K6xf9Hb3f/X1JW/2VUVP9gWFX/W1lU/11ZVP9cWVT/XFlU/1pZVP9ZWlT/WVpU/1pa + VP9aWlT/WlpU/1taVP9dWVT/XVlU/19YVP9hWFT/YVhU/2FYVP9iWFT/ZFhU/2JYVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9iVU//UF9c/zmHjP9/1Nr/h+Pp/1a+xP89g4z/a1Nh/2tRV/9mUFP/aFRV/2hb + Vv9UXlP/T19Q/11bTv9sWUz/ZlpP/1VaV/9PW1j/YldW/3VUVf9wVVX/YVlU/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWFT/YFlU/19ZVP9fWVT/XFlU/1xZ + VP9cWVT/XVlU/11ZVP9dWVT/XFlU/11ZVf9dWFj/XVhY/19aUf9gWlD/XFtQ/1lcUP9ZWlT/XVhY/2NV + W/9kVVj/Y1ZV/25dWP9uWlD/bVdH/2pWSf9gVlX/QkxV/y2BlP9Dv9j/atjy/2/S7P9pyeT/Ztnu/1Td + 6f9EucH/ZYOO/1tVYv9YSk7/YFRO/2dZU/9mWE7/aFlO/2NaT/9cWVH/X1pU/2laV/9rWFX/ZVdU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllU/2JYVP9rVlX/cVRV/3RTV/9gV1j/T1pZ/1RZWf9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BY + Vf9hWFX/YFhV/19ZVP9fWVT/XVlU/1tZVP9cWVT/X1lU/2JYVP9kWFP/ZVhS/2JZUv9UXFL/UFxS/09d + Uv9NXVL/UF1S/2RYUv9oV1L/ZlpT/1lYTv9LXlf/Xra9/13P5/9dzfP/XdD4/1HS8v9G1ur/RNjp/0XZ + 6/9HydnjTZ6nRU2Zown///8B////Af///wH///8B////Af///wFCsL4dQrK/lUTS5PNF2uz/RNfp/0fW + 6v9P1O//Vtbs/2/c6/9frLT/Olth/1tRU/9kVlb/YVpW/11ZVP9eWVT/XFlU/1xZVP9cWVT/W1pU/1ta + VP9bWlT/W1pU/1taVP9cWlT/XllU/15ZVP9gWFT/YVhU/2FYU/9hWFP/YVhT/2NYU/9hWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/ZFhS/01WVP8uaG//e8TO/33d6P9z4u//dcvY/22Cjv9RW2H/WlRZ/2dX + W/9gV1T/VlxS/1RdUP9gXE7/a1xN/2ZcT/9WW1j/T1pZ/2BXVf9zVlT/b1dV/2FZVP9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhU/19ZVP9eWVP/XllT/1xZ + U/9cWVP/XFlT/11ZU/9dWVP/XVlT/11ZU/9cWlT/XFlV/1xZVf9eWlL/X1lS/15ZU/9cWlP/XFlV/11Z + Vv9fWFf/YldV/2VXU/9pWVP/aFhR/2RWTv9bWFT/TmNn/0l0gP9Vs8j/Ytr1/2XW8f9i0Ov/ZtLu/13R + 6v9Z2e3/ad3s/4O/zP9afIj/Tldb/15XU/9kXlf/YVtR/2VcUf9kW1H/YVdR/2BWU/9jWVf/ZFpY/2Ja + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9hWFT/Z1dU/2tWVP9uVVb/YVdY/1VZWP9YWFj/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWFX/YFhV/2BYVf9gWVT/YFlU/11ZVP9aWVT/W1lU/15ZVP9gWFT/ZFhT/2ZYU/9jWFP/WFtT/1Rb + U/9SXFP/T1xT/1JcU/9jWFP/ZldT/2NZU/9ZV07/TFtU/02Yn/9dw9n/YtH0/1jP9/9U0/f/SNbs/0TX + 6P9F2+7/RdHi80alsZVGoq4d////Af///wH///8B////Af///wH///8BP73PKz7B08dE1Ob5Rdnq/0bX + 6v9M1ez/VdPv/1bY8P91093/cZmb/0pSU/9aVFH/YVlW/2FbV/9fWVT/X1lU/11ZVP9dWVT/XVlU/1xZ + VP9cWVT/XVlU/11ZVP9eWVT/X1lU/19ZVP9hWFT/YVhU/2FYU/9hWVL/YVlS/2BZUv9fWVL/X1lT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JZU/9VVFP/Rlxo/2yktv9Zzun/Q9b1/07W8P9i2eb/OI+Y/0dh + bP9bVFz/VlNT/1laUP9bW0v/YV5J/2ZgSf9jX03/VFla/05WW/9fVlT/c1dQ/3BZU/9hWVT/XllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9cWlP/XFpS/1xa + Uv9cWlL/XFpS/1xaUv9cWlL/XFpS/1xaUv9cWlL/W1tR/1pcUP9aXFD/W1pT/11YVv9hV1f/Y1dX/2NX + V/9cWlL/WFxR/11ZUP9mVU7/a1pT/2ddWf9SVVv/OmBt/zWOmv9Txdn/Wtn6/1LV+f9OzvL/UtT1/1XW + 9/9N0fP/StH1/1LY+f9U1uz/R8TQ/0uIjf9VWFn/U1pS/1RgU/9bYFP/Z1xV/25VVv9oUVX/VlVW/1RY + WP9aWVf/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllT/1xaUv9fWlP/YllV/2RXV/9lVVj/Y1VX/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWVT/Y1hU/2RYVP9dWVT/WVpU/1paVP9aWlT/W1lU/2RYVP9qV1T/Z1dU/19Z + VP9dWVT/V1pU/1FbVP9UW1T/YFhU/2JYVf9eV1H/XVZM/19cVP9Pd3r/b7jH/3DY9v9Qz/n/T9L5/0nX + 7v9G2On/Rdrs/0TR4vk+rbzFPqi3K////wH///8B////Af///wH///8B////AU+suDNGzeDpRdbp/0TY + 6f9H1uv/TdTu/1TS7v9Y2vL/ZMTP/1uHi/9IUlT/XVZT/2JaV/9hWlb/XllU/15ZVP9dWVT/XVlU/11Z + VP9cWVT/XFlU/11ZVP9dWVT/XllU/19ZVP9fWVT/YVhU/2FYVP9hWFP/YVlS/2FZUv9gWVL/X1lS/19Z + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9iWVP/VlVU/0BaZ/9QkKD/S8Lc/0jY9/9Q1e7/X9Dd/4TU + 3f+ElZ//aFZe/1RMSv9YWk7/WltK/2BcSP9nXkj/ZF5M/1NZWv9MVlv/X1ZU/3VXUP9xWVP/YVlU/15Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/XFlT/1xa + Uv9cWlL/XFpS/1xaUv9cWlL/XFpS/1xaUv9cWlL/XFpS/1tbUf9aXFD/WlxQ/1paU/9cWFb/YVdX/2RX + V/9kV1f/XFpS/1dcUf9fWlD/a1ZO/2xVTf9kUUz/bmhs/36dp/980Nr/Z9Xo/1PR8f9MzfL/Tc3x/0/Q + 8v9Oz/D/TtHy/03S9f9P0/P/Vtfs/2Xe6f+Gu7//gnt6/1NRSf9OWUr/VFpL/2dZUf9zV1j/blRZ/1ZV + Vv9QVlb/WFhW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9cWlL/YFpT/2RZVf9kV1f/ZFVY/2JVV/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFlU/2NYVP9kWFT/XVlU/1laVP9aWlT/WlpU/1tZVP9kWFT/aldU/2dX + VP9eWVT/XFlU/1daVP9RW1T/VFtU/2BYVP9iWFX/XldR/19XTv9gXVX/NWFl/2Svv/903fz/UtD6/0rN + 9P9J1u3/R9jq/0XZ6/9F0+T/QrrJ506hrTH///8B////Af///wH///8B////Af///wFRqLNNRtXo/UXX + 6v9E1+n/Sdbq/1LT7f9V0+z/V970/16utv9ab23/T1dV/1VYU/9fW1b/ZFlV/2RYVP9kWFT/YVhU/2FY + VP9gWFT/X1hU/19YVP9hWFT/YVhU/2FYVP9iWFT/YlhU/2JZU/9iWVP/YllS/2BZUv9eWlL/XVpS/1ta + Uv9cWlP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/15WVf9dVmH/amJ6/1iyz/9M3vz/TtXv/1HW + 5f9k4Oz/aMzX/0iSn/8yXmj/XVld/19YVf9VXEv/T2BG/1NfS/9dWFn/XFRa/19XVP9kWlD/ZFtS/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWlP/XVpT/11Z + Uv9eWVL/XllS/19ZUv9fWVL/X1lS/19ZUv9fWVL/XllS/15ZUv9dWlH/W1xQ/1tcUP9hWVT/ZFdV/2JY + Vv9eWFX/X1hV/1xaUv9dWlH/WFxU/0VcV/8qTE7/RIKK/2Szxf9yx+H/cNby/2XU8/9Qze3/TNHv/1TX + 9v9O0PH/UtP2/0/W+v9E0PT/Qsnt/1rV9f9l3vT/cNnl/1m4uv8vhYH/Ultd/1ZPUf9SVFT/U1tc/1hf + X/9dV1n/YFVV/2BXVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFP/YFhR/1xbUv9dW1L/YVpV/2VXVv9iV1X/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/XFlU/19ZVP9kWFT/ZVhU/1xZVf9YWVX/WVlV/1lZVf9YWVX/ZVdV/21V + Vf9rVlX/ZldV/2RXVf9cWVT/VFpU/1daVP9fWVT/YFlV/19ZUf9hW07/YV9T/z5TV/9tnqz/cdby/0TS + +/9BzPL/RtXq/0bY6P9F2Ov/Rdbo/0TL3P1Soq5L////Af///wH///8B////Af///wFXnKQTUa66gUTZ + 6/9F2Or/RNfp/0vW6v9W0+z/VdPr/1bi+f9Tm6D/UltV/1NbWP9OWVH/W1pU/2VYVf9oV1T/Z1dU/2RY + VP9kWFT/Y1hU/2JYVP9iWFT/ZFhU/2RYVP9kWFT/ZVhU/2VYVP9kWVL/ZFlS/2RZUv9gWVL/XFpS/1pb + Uv9YW1L/WlpT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15aU/9iWFX/blJd/3ZDYP9UocH/Q937/0vX + 8f9H2uv/Qtvn/0zh7P9OzNr/TpOi/2hXY/9rVVr/Ul1O/z5iRP9IYUr/ZVha/2hTW/9fV1T/WVtP/1xc + Uf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVpS/11a + Uv9eWVL/X1lS/19ZUv9hWVL/YVlS/2FZUv9hWVL/YVlS/19ZUv9fWVL/XlpR/1pdUP9aXE//ZVhV/2tV + Vv9kWFX/XFlU/15aU/9gWlH/YlRK/1dZT/9Hb2v/SoiO/1TAz/9c2/X/YNX4/1/N9f9gzfX/UtHv/03W + 7/9S2PT/T9L0/1HT+P9M1fv/QtL5/0PN8/9VzvT/WtXw/1bd7f9D3uD/OcG9/25uef9oUFv/SFFV/zlb + W/9HY2D/YFda/2pSVP9kVlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVhT/2JWUf9aW1H/WlxR/2BbVP9lWVT/YllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XVlU/1pZVP9eWVT/ZFhU/2ZYVP9cWVX/VllV/1dZVf9XWVX/VVlV/2ZX + Vf9xU1X/b1RV/2xVVf9qVVX/X1lU/1ZaVP9ZWlT/XllU/19ZVf9gW1L/YV5O/19cTv9HT1L/Zoya/2HH + 4/871f3/QNH3/0XW6f9G2Ob/Rdfp/0XY6v9F1un/Uam2f1eWohP///8B////Af///wH///8BVqu1OVG3 + xLlE2ev/Rdjq/0XX6f9O1ez/WNPu/1bS6v9a3fL/S42T/0hQTP9XW1f/VVlR/11ZUv9jWFT/ZVdU/2VX + VP9iWFT/YlhU/2FYVP9hWFT/YVhU/2JYVP9iWFT/YlhU/2NYVP9jWFT/YllS/2JZUv9iWVL/YFlS/11a + Uv9cW1L/WltS/1xaU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWlP/YVhV/2dTWv9nRVv/S46o/0fN + 6P9V2PD/S9bn/0vZ5/9R2er/Z9zx/3bG2f9ofIr/U2Fm/0tcUP9LYEf/T15M/2FXWP9lVlv/YVlW/1xb + UP9dWlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/11a + Uv9eWlL/X1lS/2BZUv9hWVL/YllS/2JYUf9iWFL/YlhS/2JZU/9hWlP/YFlT/19ZUf9dWlH/YV1U/2JY + U/9kV1P/YVlV/1tZVP9ZWFT/UFdS/1JcWf9Yc3H/YZ6g/4nU3v9w2uv/W9Ts/13T8f9d0fP/WM/w/1XU + 9P9R1fL/TtHv/1LU9P9P0PL/StH0/0jW+f9N1vn/UMrt/1fQ7P9V1en/UN7o/1nZ3f95m6j/Ymx3/0dU + W/9FVFj/Tl1c/15WV/9kU1L/YldT/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JYU/9jWFH/WFxR/1hcUf9fWlT/ZVlW/2NZ + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9cWVT/XllU/2NYVP9kWFT/XVlV/1lZVf9ZWVX/WVlV/1hZ + Vf9kV1X/bFVV/2pWVf9oV1X/ZldV/15ZVP9YWlT/WlpU/15ZVP9fWVX/X1pS/19cTf9cWU3/S1JT/194 + g/9Zs83/Qtj9/0nW+f9J1+v/SNfn/0bX6P9F2Or/Rdrs/06wvblSn6s5////Af///wH///8B////AU66 + yVFLw9PdRdjq/0TY6f9H1+r/T9Xv/1jT8f9c0Of/YcrX/1Z/iP9TS07/X1dS/2dcVP9lWVH/YVhS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYU/9jVlT/aFVa/195 + gf9mtMT/bdru/1bT5f9R0uj/UtT2/1DU/f9P0fb/Vs/q/xWBkf8zWlr/ZVtQ/1xYUf9aU1D/X1hV/2Nc + WP9hW1b/XlhT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/1xa + Uv9dWlL/YFlS/2NaU/9lWlP/ZlhS/2dXUf9nVlD/ZVVR/2VWU/9nWFX/ZltX/2RaVv9iVFH/Z1RU/3Jg + X/9dWE//VVpM/1ddUv9WWlb/TlVY/y1XYP81gJH/ULnR/1PY8f9O1e3/T9Xt/07V7f9L1u3/SNbt/0fW + 7/9R0vP/WM/1/1bR8/9V0+//VtPv/0/U7/9I1e//TNXv/1fS8P9a0PL/UNLz/0bV9P9J1PL/VtXt/zKa + rP88Xm//YUtZ/2BXWv9dWVL/XFpR/19aUv9jWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9kWVL/ZVpQ/1FeUP9OXVH/W1lV/2VW + WP9jV1f/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlV/1xYUf9aWU7/Xl1T/1xY + U/95YWX/baCy/0ve+/9T2PP/T9Tv/0vU7P9H1+r/Rdjq/0XY6/9ItcLdSaayT////wH///8B////Af// + /wFKsL5jTs7f+0XY6v9E1+n/SNbr/1DU7/9X0vD/XdHp/1K9yf9Nd4D/VUxQ/2BYU/9oXFT/ZFhQ/2BY + Uf9fWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/ZFZV/2ZR + V/9IYmz/VKS1/2/e9P9Y1uj/UtTq/07S8/9K0Pn/TdH1/1zU7/9Qusn/Vnl2/2FRQ/9fWlH/X1pX/11Y + Vf9eWVX/X1lU/1xWUf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1xa + Uv9cWlL/XVpS/2BZUv9kW1T/ZVpT/2JVT/9nV1H/bV1X/2xcWP9nV1T/ZFRR/2NWUv9mW1X/aFlX/2lU + VP9lUVH/ZmBW/1hdTf9VV0r/YFtV/19cXf9vkZj/dLrJ/2TM4/9R1/H/Tdbt/0/V7f9P1e3/S9bt/0fW + 7f9G1u//UdLz/1nP9f9X0fP/VtPv/1fT7/9P1O//R9Xv/0vV7/9X0vD/WtDy/0/S8/9D1fP/R9Xz/1jZ + 8P9XvM7/W3qL/2JMWf9hWFr/XltU/1taUv9hWlP/Z1tT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/ZVlS/2ZaUP9PXlD/TF5R/1pZ + Vf9lVlj/Y1dX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVP/W1pQ/11c + Uv9cV1L/c1ld/2WYqv9I3Pn/UNbx/1DV8f9N1e7/Sdbq/0TY6f9F2Or/SsDO+0ulr2H///8B////Af// + /wH///8BR7C9bU7X6f9F1+n/RNfp/0rW7P9P0u//VdHv/2PT6f9Op7T/Smpy/1ZPUP9gWFT/Z1xU/2RY + T/9gWFH/X1lV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFpU/15b + VP9ZVlH/N1JO/1KSlP9/3eb/Ydjo/1nU7v9Tzvb/UMz8/1DO+v9U1Pb/W972/1Wirv9OYmT/V1dW/2lX + U/9tV1L/Y1ZS/1pXU/9dWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1xa + U/9cWlL/XFpS/15ZUv9hWVL/Y1lS/2haU/9rWlX/aVdR/2dUUP9oWFb/aVta/2RYWP9bVVP/WlVU/2Fa + WP9kWlb/XFJP/1hXVf9MVlb/O1pg/zt2gP9ZobH/aMfc/2rY8f9f2PL/UtTv/1LU7/9L1u3/Rtfs/0fX + 7P9J1u3/StXv/1HR9P9Wz/f/VNH0/1DV7P9Q1ez/UNXs/1HV7P9T1e3/WdLv/1vQ8v9V0Pb/T9D4/1HQ + 9/9X0/L/YOHz/2eZqf9pSVf/ZVdY/2NbVP9eWlH/WlpS/1lcVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19aU/9fW1H/XFxR/1ta + Uv9fWFX/Y1dW/2JYVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1tU/11c + Uv9bWlD/WlZQ/2dRU/9djJz/S9Xv/1LT7f9U1vD/UdXv/0rV6v9E2On/Rdfq/0nM2/9LqbNr////Af// + /wH///8BQZWeCUW2xIdJ3O//Rdfp/0TX6f9M1u7/T9Hv/1TR7v9n1er/Q5Cd/0RdZP9YUlL/YFhU/2Zb + U/9kWE//YFhR/19ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15a + VP9ZXVL/VF9R/zRRQf9KgHf/d8rM/2ra5v9f0+//WM36/1XL//9Szf//StP6/0be/P9bx9z/YImW/1JT + Vv9vUk3/fFZQ/2lWUv9WV1P/X1xY/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9fWVT/XllU/1xZ + VP9cWlP/XFpS/1xaUv9fWVL/YllS/2NXUP9pWFL/cFxX/2tXUv9nUU//ZlRT/2ZaWf9iV1n/V1RU/1lX + WP9fW1j/X1pT/15YUv9PTE//WF9q/1aFl/9Jr8P/W9jy/07a+f9K2Pj/Udf1/1TT8f9V0/H/R9bt/z/a + 6/9E2ev/Stbt/03V7/9R0fT/VM/5/1LR9f9M2On/S9jp/1HW6f9Z1en/WdXq/1vS7/9c0PL/Wc35/1jM + /f9XzPr/UMzy/1Dr/v9fobD/bkNT/2lVVf9mWlP/X1pQ/1ZbUv9WW1b/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9bWlP/WltR/2Va + Uf9lWFP/Y1hV/2FYVf9hWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19b + VP9eXVL/W1lP/1lWT/9fS0z/U3+O/0bL4/9U0uv/Vtbv/1PV7/9L1ev/RNjp/0XX6v9G1+n/SbK+hUuU + mwn///8B////AUGcpy1Cu8qzRd3w/0XX6f9E1+j/Tdbu/0/R8P9V0e//bNTo/zV/i/8+VVz/XFVW/2BY + U/9lWlL/ZFhQ/2FYUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVP/W1pR/1xhVf9BWEz/QG9o/1mprP9j2uj/WNTv/1fN+P9azf3/Vs78/0nQ9f9A0u7/cdrv/3uq + uf9OV17/bVZR/3dZUv9mV1L/V1dT/15bV/9fWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVf9iWFX/YFhV/1xZ + VP9cWVT/XFpT/1xaUv9cWlL/X1lS/2JZUv9lWVL/Z1dR/2hVUf9qWFT/bVlY/2ZXVv9cU1L/WlJU/1hY + V/9bXV3/WVtZ/1VXUv9YXFn/UmRo/3CNmf+FwdP/eNvx/2LX8v9U1fP/TdHv/07Q7f9U0+//VNPv/0nW + 7f9D2O3/Rtft/0rV7v9M1fD/UdH0/1TQ9/9S0vP/Tdfq/0zX6v9R1uv/V9Tr/1jU7P9Z0vD/WdDy/1fO + 9/9Wzvr/Vc74/1TN7v9M1Ob/V42c/2dDUf9mVlf/Y1lS/19bUP9cW1P/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFpT/1tb + Uv9kWlH/ZFhT/2JYVf9hWFX/YVhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fW1P/XVxR/11aUP9aV1D/X0pM/0x2hP88vdT/V9Ps/1XW7/9T1O//TdTs/0TX6f9F1+n/RN7x/0i5 + x7FKmKAr////Af///wE7pbNTQMDPz0bc7v9F1+n/Rtbp/0vU7/9J0vL/VtLu/37L3f9Acnz/RFFX/15X + WP9eVlL/Y1pR/2RaUf9hWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lT/2BYUf9jWlP/XVtV/1dfV/9Sion/SNrv/0LX8f9YzfD/bMvz/2TP8/9O0e//T9j0/2Le + +f9VstD/OmmC/2hhXf9pWlH/X1hS/1lXUv9ZVlH/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFX/YlhV/2BY + Vf9dWVT/XVlU/1xaU/9cWlL/XFpS/19ZUv9hWVL/aFxV/2dZVP9gUU//ZllX/2hbXf9aVVb/TVJT/1Jc + X/9YZWT/QlZX/zhTVf89XmH/OGhv/0qruf9Z0Oj/V9T3/0zP9/9JzPP/WNX3/1rU8v9S0uv/Udbq/1HW + 6v9Q1e7/T9Py/07S9P9M0vT/S9L0/1DS8v9U0/D/UtXu/0/W7P9O1uz/VNTu/1nR8f9X0PP/UdH0/1DR + 9P9S0fP/U9Lx/1jU7/9s2ev/ZLXA/1pzfv9cTFX/Ylpa/2BYUv9iWlP/YltV/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/1pa + VP9YWlX/aFdU/2lXVP9kWFP/YFlS/2FZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVX/X1hR/2BZUP9jXFP/XVdQ/2NOUf9Qbnr/Qay+/2DU6/9V1e3/U9Pv/0/U7v9G1un/Rdfp/0Xc + 7/9GvMnNR52mUf///wH///8BQ7G/c0TF1udF2+z/Rdfp/0fW6v9L0+7/S9T0/1XS7v9wvtD/N2t1/0NR + WP9fWFr/XVVR/2RbUv9lW1L/YVpT/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19aVP9hW1P/XlZO/15dVv9RV07/PXd2/znW6v892fH/Wszx/3PI8/9pzvX/T9Py/0/a + 9v9b2fT/Yr3b/1+KpP9hWFT/ZFRL/2FZVP9bWVX/WldS/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhV/2JY + Vf9gWFX/XVlU/11ZVP9cWlP/XFpS/1xaUv9fWVL/YllS/2ZaU/9oWlX/ZlhW/2NWVP9gUlP/WVNU/1RY + Wf9SW17/T1pZ/zlOT/9AVlf/bIKD/5C5vv9v0t//VtXu/03Q9P9K0Pv/TNH6/1LO8v9Z0/L/V9jw/0/X + 6P9Q1+n/UNXu/1DT8v9O0vX/TNL1/0vS9f9Q0vL/VNPw/1HW7f9M1+z/Stfs/1XU7f9e0PD/WtDy/1DR + 9P9O0vT/UtHz/1XR8f9a0/H/cuHz/0ycqP9HX2v/YlNd/2NbWv9gV1H/YlpR/2JaU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9ZWlT/V1pV/2lXVP9qV1T/ZFhT/2BZUv9hWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lV/11XUP9fWE7/ZV5V/15ZUf9nUlX/SGVy/y+arf9f1Oz/VdTt/1PT7/9R1PD/R9Xq/0XX + 6f9F3O7/Rr/N50elr3H///8B////AUPAz41Ey9v5Rdnr/0XX6f9J1uv/StPu/0nW9v9Vz+r/bqq4/0Zl + bP9OUlb/YFhZ/15VUf9kW1P/ZFtS/2FaU/9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9iWlX/a1pX/2ZUUv9kWVf/VFJM/0dobP9QtNf/VM/x/1HW7/9O1er/Utft/1nW + 7P9W1On/VdLv/1jP8/9Xr83/RVdU/1VTSv9gW1X/X1tT/19bVP9fWlT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FY + Vf9jV1X/YVdV/11ZVP9dWVT/XFpT/1xaUv9cWlL/XlpS/2FaUv9iV1D/ZVhT/2ZaWP9dVFP/W1RV/1xd + Xf9RXV3/PE5R/zxQUf9SbWz/XJmj/2HB1v901+7/Ydnv/1TT6/9Q0ez/UdXy/1bX9P9Szu3/WM/v/1zV + 9P9X0u//WNLv/1LT8P9O1PH/T9Py/07T8f9N0/H/UNPx/1XS8f9a0vD/XtLu/2DR7v9O0vL/PtP3/0XS + 9/9Vz/f/WM73/1HS8v9J2Or/Udrl/3rd4v9Kh4v/RFNZ/2ZYXf9hWVn/XVZS/11XU/9eWFT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVf9fWVX/X1lU/19ZVP9eWVP/XlpT/15a + U/9fWVT/XllV/15YVv9kWFX/ZVhV/2JZU/9fWVL/YFlS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVf9eV1D/YVhP/2ZeVf9hWVP/Z1VW/0VcZf8wiJf/Z9Pp/1bU7/9S0/D/UdTw/0jV + 6v9F1+n/Rdvu/0TD0vlEr7yL////Af///wFCxNOfQ9Lj/0XZ6/9F1+n/Stbr/0rT7v9I1/b/VMzm/2uX + ov9UYGX/WFRV/2FYWP9fVVL/Y1tU/2JaUv9gWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YlhU/3BVWP9yVlv/a1VY/11RTf9UX2f/VIa6/2DA7f9H3+//L+Pi/z3e + 4/9f1eL/Y9Pi/1bT8P9G1///QcTl/0Zsaf9TWlL/XVpT/2BaUP9iXVP/X1pU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9iWFX/ZFdV/2JXVf9dWVT/XVlU/1xaU/9cWlL/XFpS/11aUv9gWlL/YVhR/2JXUf9hVlT/XVdW/15c + XP9YXl3/SVhW/0BXV/9ac3L/jKmk/3jV5v883v//O9H5/0nT8v9R1ez/Utbp/1LZ6f9X1+n/VdHt/1rP + 8P9ezvX/X871/2HO9v9U0vH/TtTv/0/V7/9P1e7/T9Xu/1DT8P9X0PH/Y87y/2/N8f92zO//R9H3/yDW + /v8w0/z/Wcz7/2DL+v9Q0/H/Pt/k/0bg2f9zzsX/THp1/0hPUP9kWFr/XVVX/1tVVP9bV1b/XVhV/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9dWlL/XVpS/15aU/9fWVT/YVdW/2NX + V/9jVlj/X1lU/2FZVP9lVlj/YFhV/2BYVf9gWVP/X1lS/19ZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVX/YVhR/2RZUf9mXFP/YllU/2NUVP9CU1n/NXuH/23R5f9Z1fH/UdPx/1HU + 7/9L1ez/Rdfp/0Xa7P9Dydn/Q7PBnf///wH///8BRr7Mq0XZ6/9F2Or/Rdfp/0vW7P9K0u3/Sdj3/1HI + 4v9fipT/UV5i/1hVV/9hWFj/X1VS/2JbVP9hWVH/X1hS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVP9pUlT/clpc/2hWV/9fVFD/Tlpi/zNslf9Zud3/UN3w/zvf + 5/9B2uX/V9Li/2Tb7P9Y1/T/R9L6/03F5/9kjIv/WGVd/1dWT/9fWE//X1pQ/19ZU/9fWVP/X1lT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/X1lT/2BZVP9gWVT/YFlU/19Z + VP9fWVX/YlhV/2NXVf9iV1X/XVlU/11ZVP9cWlP/XFpS/1xaUv9dWlL/YFlS/2VbVP9lWlX/YFRU/19a + Wf9XWVr/R1RV/0dhYv9lh4z/kbW6/6rT1v961+j/O9D1/0nW9/9Q1vL/U9Xu/1PV6/9S1ev/U9Lp/1fT + 7/9a0/P/W9Dz/1vQ9P9bz/L/UtLx/0/U8f9P0/D/T9Pv/1DT8P9Q0/D/VdLx/17P8P9nzu//bc7v/0rR + 9f8t1fv/OdP6/1fO+f9dzfj/UNPx/0Te6f9K2tv/YLSx/0dxbv9KUVH/YlZV/1xUU/9eV1f/XVhY/15Y + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVf9eWlL/Wl1O/1pdTv9bW1D/X1hV/2VU + Wv9sUF//bU9h/2JYU/9eW1D/ZFZY/2FYVf9hWFX/YFlT/19ZUv9fWVL/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZUv9kWlH/ZFtS/2JZVP9hUlL/PU9U/y91gf9rzOD/Wtbx/1LT + 8f9R0+//TNbt/0XX6f9F2ev/Q9Di/0ezwKn///8BSZahB0XC0rVE3O//Rdfp/0XX6f9P0+z/T9Pv/0vb + +v9SxNv/Z3h7/2FeYP9fVVX/Y1VW/2NYVv9cV1L/XVlU/19aVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhU/2NbUf9kXFj/YlRY/1JQVf9AYmX/fb68/3TX + 6v9V0fL/TNPv/0TS7P9J2PH/SNPx/1HS9/9dze//UKOt/zJsaP9IVU7/allS/2JYTv9jW07/ZFxN/2Bc + Tv9cW1L/XVlU/19XV/9fV1j/YFdY/2FXV/9hWFT/XlpR/1xbUP9dW0//X1xO/2NbTv9lWVH/ZldT/2VW + Vv9jVVn/Y1Va/19VU/9fV1L/YllW/15ZVv9eWVb/XVlW/1tYVf9cWFT/YVxV/2JZUf9iV1L/ZllX/2Vb + W/9OV1n/LU5V/ydlc/9Cm6//Xsjl/2HQ9P9Yzvb/TdTt/0fc5v9H2eX/UdTs/1rR8v9c0fP/XM/z/1rN + 8f9V0e3/T9Xt/07Y7/9M1+//Q8/l/03T9f9T1fz/Uc70/1LM8v9UzfT/VNby/1DX7P9L0Of/TtLp/1DU + 7/9U0/D/VtLy/1bU8/9T1fH/UNLv/1PU8P9X2fb/Xsrm/2iIlv9kZmj/X1lP/2FYRv9kXE7/YVle/1tT + X/9bVFj/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVX/XlpS/1pdTv9aXU7/W1tQ/19Y + Vf9lVFr/bFFe/21QYP9hWFP/YFtQ/2VWWP9dWFf/XVhY/1xZVP9cWlH/XFpS/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9hWVP/ZVlR/2RZUf9gVlH/XlVV/0ZTVf9Bcnj/cr7N/1vT + 7f9S1fT/UtPv/03U7f9F1+n/Rdjq/0TX6v9IvMqzTpWfB0qbpjFGxdXFRN3v/0TX6f9F1+n/UNPs/0/U + 7/9K3Pr/T8HY/2Bvcf9eWlz/X1RV/2NVVv9jWVn/W1hT/1xZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eW0//YVtX/2ZVXP9YUlj/PV5a/2Sl + m/9syt3/XdL4/0/U8v9G1/L/QdTv/0XS8f9U1Pn/Y9H0/2e+yf82dXH/RFNL/2xaUv9lWk//ZFxM/2Zc + S/9gXE3/WlxS/1xZVP9fV1j/X1dZ/2FXWf9iV1f/YlhU/15aUP9cW0//XVtO/2BcTf9kW03/Z1lR/2lX + U/9mVlb/YlVa/2JUWv9jWFf/YllU/15VUv9ZVFH/WFNR/1xZVv9dXFn/WVdT/1dRSv9kXFL/aVtV/2pW + Uv9mU1H/Tk1O/1p2fv9wrr3/b87k/1nN7v9c0v7/UtH//0bT8P9F29//St/m/1LW7f9Xze7/W83x/2HT + +P9i1Pn/WNPw/0zT6f9I1ev/Sdnw/0jY7f9Jz/P/Tc33/1XQ+f9a1Pz/UMny/1HS7v9S2ez/T9br/03W + 6v9N1u//VdPw/1rQ7/9Y0vD/UNTu/1DV7v9T1fH/Wdb3/1zE5v9YcIL/XFhb/15XS/9fWEP/ZF1M/2BX + X/9cU2L/XVVb/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15aU/9bXE//W1xP/19a + Uf9jV1X/ZFVZ/2VUXP9mU13/X1lS/2BaUP9mVlj/XVhX/11YWP9cWVT/XFpR/1xaUv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVhS/2RYUP9kWVH/YVdS/19WVv9GUlX/Pm50/2q2 + xP9Y0Or/UtXz/1PT8P9O1O3/Rdfp/0XX6f9E3O//SMPTw0+aozFLoa1dR8fY1UTd7/9E1+n/R9fp/1LT + 6/9T1O//T9z7/1G91P9eZ2X/XVZU/2BUUv9mV1X/ZlpZ/1xYU/9bWVT/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XldN/2BXVP9jWFv/WVha/0Zb + W/9Senv/Y7zM/2Ld+v9R1fH/Tdf1/0bR7/9K0fH/VtP3/2LR9P901+P/OoaG/z9VUP9pVlH/ZFpU/15b + UP9dW1D/YFtR/2NZU/9iWFT/YVhV/19YVf9dWFb/W1hW/1xZVP9dWVP/XVpS/1xaUv9cW1H/XlpR/15Z + Uv9eWFP/YFdV/2dWVv9oVVb/Y1hV/2BaVv9fWVT/W1hR/1lWT/9eWVP/Y11W/2BaVP9bVE//ZFZW/1VW + WP9BVFj/PmBo/0yIkf9suMb/edTm/23Y7v9d1O//U9Tx/07V8/9K1+7/Sdrn/07a6/9T1PH/Wc/0/1zM + 9f9ezfb/Xs31/1PS8P9O1+//Stjt/0XV6f9O3vH/SdPw/0bO8P9S0/b/ZNf9/1fJ8P9P0O3/Tdnv/0/Y + 8P9P1u//Utbx/1fT8P9a0O7/V9Du/0/S7v9Q1fD/VNbx/1fS7/9XutT/SWNv/1RRUP9iV0v/aFpJ/2hb + Tf9bVlr/WVZe/1xYWf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWlP/XFxQ/1tc + UP9hWVL/ZVdV/2RWWP9jVVv/ZFRc/15aUv9fWk//YldX/11YVv9dWFf/XFlU/1xZU/9cWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BXUv9jV1D/ZVlS/2JaVf9eV1b/SVJS/0dp + bP9tq7X/V8zm/1DV8/9U0/D/UNTt/0bX6f9F1+n/RN3w/0jH19NQn6pdS6ezf0fJ2t9E3O7/Rdfp/0rX + 6v9U0+r/WNTw/1Pa+/9SuM//XV5X/2BTTv9jVFH/Z1dV/2haWP9cWFP/W1lU/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lT/19UTP9gVVH/XVlX/1ZZ + Wf9TWVr/TFtj/12vvP9i4vj/UtLv/07S9P9M0fL/T9Dy/1XO8v9ez/H/b+Dt/0Sgo/9FYl//Y1BN/2JZ + Vv9YWlT/VFpV/19ZVf9tVlT/aldU/2RZUv9fWlL/WVpT/1NaVP9UWlT/W1hV/15YVf9bWFX/V1lW/1ZZ + Vv9VWlT/UVpU/1pZU/9uV1L/b1dS/2BVUv9bV1b/YFxX/1xcUf9cXVH/YVtR/2VaT/9mW1L/aVxZ/2VM + Vv9JU17/NXB8/0GZq/9V0eL/W9zw/1TR5/9V0Ob/Xt3x/0nZ6f9C1+X/SNjp/0/Z7v9R0+z/VdH1/1zR + /P9fzPn/W8bz/1vG8/9P0fH/S9nw/0na7P9F2ef/Rtvp/0ra7/9G1/D/TNLw/2XQ8/9kzfL/UdPw/0XX + 8P9I1u//TNTx/1PU8f9b0/D/XtHu/1rQ7f9O0u7/TtXx/1XY8/9Sy+P/RKK2/0JdZf9WUk7/a1pP/3Nd + T/9vW07/WFdV/1RYWf9aWVj/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlpT/1xc + UP9bXFD/YllS/2dXVf9kVlj/YVZa/2JVW/9dW1L/XFtP/15YVv9cWVX/XFlV/11YVf9dWFX/XVhV/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gV1L/Y1ZQ/2VZU/9iW1b/XFpW/05S + UP9SY2P/b56k/1bI4f9P1fX/VNPw/1DU7f9I1+r/Rdfp/0Tc7/9Ix9ffUKKwf02suZtHytvpRNvu/0bX + 6f9L1ur/VdTr/1fU8P9Q1/j/TLLJ/1dZUv9eU03/Y1VS/2dXVv9mWVf/XFhT/1tZVP9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hVU3/X1ZR/1pX + Vv9WV1f/U1pa/0NTWv9Soa//XNrv/1HQ7v9Kz/D/UNX3/1DS9P9SzPD/Xc7v/2rY5v9fvL7/WHd1/11M + Sf9iWVb/WVpU/1daVP9fWVT/aVdU/2dXVP9iWVL/X1pS/1paU/9WWlT/V1pU/1tYVf9eWFX/W1hV/1hZ + Vf9YWVX/WFpU/1VaVP9bWVP/a1dS/2xXUv9fVlP/WlZU/1tXU/9ZV03/XFxS/2JcU/9hWE//XlZO/2Fc + Wf9iVV3/XW95/26ptf+G2uz/aNrr/1rS5/9b0+r/Xdbt/1PS5/9N2u3/SNnq/0XU5/9J1Oj/Utbv/1bT + 9/9Yzvj/Wsn1/13M9/9i0Pz/Vdb1/0bS6P9I1Of/UeDw/0LQ3/9J2O3/S9r1/0rP7v9ayOz/ZtL3/1TW + 8/9E1e3/R9Tt/0vT7/9Q0u//WtPw/2DT8P9b0u//UNTw/03T8P9Z2vX/S8Ha/yeDlv9DXGP/WlZS/2xc + Uf9yXlD/bVxP/1dWVf9TVlf/WlhX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15a + U/9cW1H/W1tR/2ZYUf9tVlP/ZlZW/1pYWP9aWFn/WFxR/1tcUP9fWFb/XFlV/1xZVf9dWFX/XVhV/11Y + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVhS/2RXUf9kWFL/YltV/11a + V/9PU1H/TWFh/2OTmf9Uxt//Udf2/1TU8f9R0+3/Sdbr/0bX6f9E3O7/SMjY6U6lsptNsb+vR8zd8UTb + 7f9G1+n/TNbq/1jV7P9b1fH/UdH0/0uqwf9ZWUz/YFZI/2ZYU/9qVlf/ZVZV/1hXU/9XWVX/XFlV/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/allR/15b + Uv9UXFH/V1lS/2NXXf9fSFn/WYmU/1vL1P9c1ez/Tc3x/1XX/f9W0vj/V87v/1zS7P9b0+f/V9Pe/0yN + k/9LTFD/Wldc/19WWv9hVlj/XFhX/1RaVP9WW1L/WVxP/15cTv9jWlD/ZVlS/2RXVP9eV1f/W1ZZ/1xW + Wv9cVlr/YFZa/2FXV/9kV1T/XlpQ/1RfTP9UX0v/V11Q/1pYUf9gV1P/al1Z/2NWVP9hVlX/W1NW/0VP + WP8kWWH/OI+a/0nAzv9M0+f/T9Tu/1fY9P9W1fL/UNXw/03Z8f9N2u7/TNbn/0/Z6P9M1er/SdDv/1DT + +P9Pz/f/TMr0/0zM9P9O0/j/TdT2/1bT7P9k1uz/ctft/3TQ5P9nwtX/UdDi/0jX7P9K0ev/Ts7s/1jW + 9v9R0/D/TdHt/0/T8f9M0fL/StDy/1XT7/9e1e3/WtXu/1DW8v9H0u//Ztv0/2a3yv80aHP/UlpZ/11W + UP9iWU//ZltQ/2NaUP9RWk7/T1pQ/1VbU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWlP/XFtR/1tbUf9mWFH/bVZT/2ZWVv9aWFj/WlhZ/1hbUf9aXE7/XlpT/19ZUv9fWFT/X1dX/19X + WP9fV1j/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZU/9jWVH/YlhR/19b + U/9YW1X/T1ZR/1ZgW/9viIn/WMXd/1HZ+P9U1PH/UtTu/0rW6/9G1+n/RNzu/0jJ2vFOqLavT7jGw0jO + 3/dD2uz/Rtfp/0zV6v9Z1ez/Xdby/03M7/9Dobj/W1pM/2NZSv9oWVP/alZW/2VVVP9XV1T/VllV/1xZ + Vf9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/2xZ + Uv9dW1L/VF5R/1pcVP9lVl3/ZEVZ/0Fvef9Dtr3/Yt30/1HO9f9S0fn/VtD2/1vR8f9e1e3/WtPo/17g + 6/9an6X/VVNZ/1hTWf9gVFz/ZFRa/1pYWP9NXFT/UF1S/1deTv9eXEz/ZVpP/2lZUv9oV1T/XldX/1pW + W/9bVlz/XVZc/2FVXP9kVlf/aFZU/19aUP9MYUr/TGJK/1JeTf9dXFP/ZltW/2hWUv9uWVj/ZlFQ/19L + UP9iZHD/ZaGp/1zGz/9L2ef/QNvw/0PV8f9R1fT/UtHx/0nT7/9E2O//SNrt/0rU4/9Q2OT/U9vu/0/U + 9v9Jy/T/Ts33/1LP/P9N0Pr/Qs/0/0HT9P9S2vL/ZNzx/13A1v9MnrL/cr/U/1nT5P9G1+r/S9Ts/03T + 8P9O1PL/UNPw/1LS7v9Q0vH/TdL0/0rR8/9U0+//XtTs/1rU7v9P1vL/R9Tx/2HX8f9Zq7z/KFlj/1Na + WP9dV1H/X1dP/2ZZT/9lW1H/U11P/0tdUP9ZWlP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlpT/1tbUv9aW1L/ZVhS/21WVP9nV1X/XFlV/1tZVv9XXFD/WFxP/11aUv9eWVL/XlhU/19X + V/9gV1n/YFdY/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9iWlT/ZFlS/2FX + UP9dWlL/V1pU/09YUf9WX1n/aX5+/1fE3P9S2vn/VdTx/1PV7/9L1uz/Rtfq/0Tb7f9Hytr3Tay6w1C+ + zdNI0OH9Q9nr/0bX6f9O1er/WtXr/2DW8v9Jxen/O5at/11dTf9lW0r/aVlT/2tWVv9lVVP/WFlU/1Za + Vf9cWVX/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9mWFL/XFpQ/1JfT/9bXlT/Z1Vb/2ZIWf88WWL/Rp2i/3Hc7f9S0vb/S870/1HP8f9a0/H/WtXv/1fU + 6/9a4PH/W7C9/1Rpdf9MUVn/XVVa/2NWWP9eWFb/WVpU/1paU/9bXFD/XlxP/2FaUP9iWlL/YlhU/2BX + V/9fVln/X1ZZ/2BWWf9iVVn/YVdW/2JYVP9fWlD/V15M/1hfTP9WWkz/WltU/15cWv9WUlP/UE1T/0hb + Yv9Wfoj/b6q7/3TR4f9l2uz/Vtrw/07X8P9L0e7/S9Dt/0/T8f9O1PD/S9Pu/03U7v9T2PD/UNXt/1DW + 8f9P1Pb/RMnv/0vT9/9R2/v/T9bz/1DP6f9k1u//fNLo/22wxv87gZb/I3eK/2jG2v9d3PD/Sdju/07T + 7v9c0vL/Wc7v/1PT8f9O1e//TdLv/03S9v9M0ff/UtPv/1jV6f9W1ev/UNTu/0zZ9f9mx+D/Y4+g/zpT + W/9bW1b/YlpR/11ZUP9bXFP/XV1U/1VfUP9TXk7/YVhT/2dVV/9kVFb/YFhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15aU/9aW1L/WVtS/2VYU/9uVlT/Z1dU/11ZVP9aWlX/VlxQ/1lcT/9iWlH/Y1lS/2RX + VP9fV1f/XFdZ/11XWP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/YlpU/2RZ + Uv9hV1D/XFpR/1daVP9SWFP/V11X/2Rzc/9Wwtr/Utv6/1XU8f9T1fD/Tdbs/0bX6v9E2+3/R8vc/Uyw + v9NQw9PhSNHj/0PZ6/9H1+n/UNXp/1vU6P9j1/P/SMDl/zWMpf9dYEz/ZVtG/2pZUv9sVVb/ZVVT/1da + Vf9VW1b/W1pV/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1pcT/9PYUz/WV9Q/2tTWP9vT13/SE5W/1GFh/930Nn/T9T1/0jQ9P9P0O//V9Tv/1TU + 8P9O0+v/Ttz1/1fC2P9ShZf/QVFe/1tWWP9jV1b/ZFdU/2RYVP9lWFT/X1pS/11bUf9cW1H/W1tR/1tZ + VP9jV1b/ZlZX/2VWV/9lVlf/ZVZX/19YVf9bWlP/XltQ/2NcTf9jXE3/XlpO/1VXUv9PVlf/Tlhg/0RW + Zv9Dhpf/VMfZ/1zj+v9B0Ov/SNTz/1fY+P9b1PT/Us/u/0jQ7P9L1/L/VNfz/1jS8f9W0PP/Wtb5/1LR + 9/9LzfT/Ss70/0fQ9P9E2PT/QN7w/0vd6f9k1eD/esnX/4yit/9qaX//OVRo/zKClP9hzuH/Wd70/0nX + 8P9S0e//as/y/2rL8P9W0/H/Sdfv/0rS7v9L0Pf/TNH7/1DU7/9S1ub/Utbp/1HS6v9S3/n/bbLJ/3Ru + ff9cU1f/ZVxS/2hbUP9ZW1L/S15W/05dVf9SXU3/XV5K/2paUv9yUVr/bk5Z/2FZWP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWlP/WltS/1lbUv9kWFP/bFZU/2ZXVP9eWVP/XVpU/1dcUP9dXE7/aVlQ/2lY + Uv9rVlT/YFZX/1dXWv9bV1j/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2Ja + VP9kWVL/YVdQ/1taUf9YXFX/VVlU/1paVf9la2n/VsHY/1Hb+v9U1PD/U9Xw/03V7P9G1+r/RNvt/0fM + 3v9MtMXhUcfX6UnS5P9D2ev/R9fp/1DV6f9a0+j/ZNn1/0W94v8vhp7/XmBN/2RaRv9pWFH/bFVW/2VV + U/9YW1b/VVtW/1taVf9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9YXlD/UmFN/1dcT/9pU1j/clNh/0RNVf8/d3j/Yr3H/0/T9f9N1fj/UdLx/1bT + 7v9V1O//TdHp/0/b8/9p0eb/apmq/0VVYf9bVln/Y1dV/2NXVP9jWFT/Y1hU/15aUv9dW1H/XVtR/1xb + Uf9cWVT/YldW/2VWV/9kVlf/ZFZX/2RWV/9fWFX/XFpT/15bUP9hXE3/YVxM/2FfU/9VWFP/TFNU/1tm + bv+GmKf/isjY/2/Y6v9W0un/TdXv/0zU8f9Nzu3/U8/u/1vZ+P9R2fX/SNLt/1DT7/9b1/X/VdH0/0zJ + 6/9Q0PT/T9L3/0vQ9f9R2f3/QtPw/zvU6P9M2+n/Xc3Z/0eYqP8/XXH/PUVb/0lrf/9dsML/ZtLl/1LW + 7P9F0+z/UtLw/2nQ8/9r0PT/VdLv/0jV7f9M1PD/Ss/1/03S+v9Q1O//U9bn/1TW6v9Q0er/VuP9/1uk + u/9aWmn/WlZa/2FZUP9lWU7/WltR/0xcVP9NWlL/UFpK/1tdSv9qW1T/c1Jb/25PWv9dZWT/X1lV/19Z + VP9fWVT/X1lU/19ZVP9gWVT/XVlU/1haVP9XWlT/YFlU/2VYVP9kWFP/ZFlR/2VZUf9cWlH/XVtQ/2da + UP9oWFL/alZU/2BWV/9YV1r/W1dY/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9hWVP/Y1hR/2FXUP9cW1L/WV1W/1ZaVf9YWVT/X2Zl/1S/1v9S2/r/VNTw/1PV8P9O1Oz/R9bq/0Ta + 7P9Hzt//S7nJ6U7L2/FH1OX/RNjq/0bX6v9K1ez/TdXu/17b9v9Su9j/Qn6R/19aUf9fV0z/YlpT/2Na + VP9fV1H/XllV/11ZVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xc + UP9bXU7/W1tQ/11ZVP9iV1f/aFNb/2pRXv9lVlf/XVxN/11bT/9fWlP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/VVpN/09cSf9WXU//Zltc/2JUWf9WUlX/Xmdo/2yZof9T1vL/S9Ty/03T + 7f9P1u3/TtTt/0/S8v9O0fL/Ytn2/1izyf8rX2v/WlxW/2JVS/9nWFH/b11Z/2VSUf9eUVH/YlhX/2Nd + Wv9eW1X/WVZR/1tZUv9cWlH/W1pR/1tcU/9cXlT/VFVO/1dWUv9gWlj/ZVdV/2hUWP9DS1H/Mlpk/0KF + k/9MsLz/Y83e/2XZ7v9Z1vD/UtDx/1LS8/9S0vT/VdP0/1fU8v9a0vP/W9Dv/13O7v9X0fD/TtPx/0fQ + 8f9EzvL/SNT4/0rT9/9M0fH/XNjx/2/X5/+H2uL/fLq5/1iAev9QZWT/VVpd/1REU/9Nb4H/SdPf/03S + 6f9M0PH/StD2/1XQ9/9qzvb/a830/1bT7v9J1+r/TNXu/0zR9/9N0fn/TdTx/1HY6v9Y2Ov/UtDl/13f + 8/9ikKH/ZEZP/2laWP9nW1L/Y1hN/1xaU/9VXFr/VVlW/2VXUP9wWE//ZldW/01QXP86UF//SoeW/2J6 + fP9fWVT/X1lU/19ZVP9fWVT/YFlU/11ZVP9YWlT/V1pU/2BZVP9lWFT/ZFhT/2RZUf9lWVH/XFpR/1ta + Uf9gWVP/YVlU/2FYVP9fWFX/XllV/15ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWVT/W1pS/1dbUP9aXFL/YFpR/2NaVP9gWFP/XlRR/2RdX/9Xu9H/VN36/1LV8/9M0/D/TNbu/0bX + 6v9E2ev/R9Dg/0q+zvFMzt73R9Xm/0TY6v9G1+r/SdXu/0nV8P9b3PX/VbrU/0h7jf9fWVL/XVZP/19a + U/9gW1P/XVhR/2BYVf9gWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9bXU//Wl5M/1lcTv9cWVT/Y1ZY/2xRXv9vTmH/Z1RZ/1xdS/9dXE7/X1pT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1ZaTf9PXEj/Vl1O/2RcXP9cUlX/VlBT/1tXWP9dgIb/TNLv/0vW + 9P9N1O7/TNbs/0vT7P9R1PX/T8/z/1/a+v9cwdj/PXeC/1xfVv9kV0n/a1hP/3JaVv9tVVX/ZVNV/2RX + Wf9hW1n/W1pV/1pZVP9ZW1L/VlpO/1VaTv9YXlL/WV9S/11gVv9bWVX/YVVU/3BXWP9nREz/X19p/2ON + mv9mtsf/WNnj/1bb7f9Q1Oz/Ts/u/1TR9v9X0/j/VND1/1PQ8f9Y0/H/YdX1/2fS8v9pzu7/W9Hw/0rW + 9P9E1Pb/QNH2/0DR+f9A0Pb/Sdb0/2Lk+v9my9n/X6ar/055df9FWE7/U1ZR/1xWVP9rS1n/Yn6Q/0Pf + 6P9H1Ov/S9D1/0rR+f9V0Pn/bsv3/2/K9P9X0u3/SNfq/0vV7v9M0ff/S9D4/0vU8f9Q2ev/V9fq/1TU + 6P9M0OT/WH+R/2tCS/9uW1j/bV9V/2JWS/9ZV1H/Vl1c/1VZV/9tVlH/dlZO/2dVU/9SWWX/UG5+/22x + wv92usf/dpOb/3B8gf9fWVT/X1lU/19ZVP9eWVT/WVpU/1laVP9eWVT/Y1hU/2RYU/9kWlD/ZFpQ/2BZ + Uv9eWVT/XllU/15ZVP9eWVT/X1lU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlU/1laUv9TXFD/V15S/2FaUf9mWVT/Y1dT/2FTUP9lWl3/WLnP/1Td+v9Q1fP/SdPw/0vW + 8P9G1+v/RNnq/0bR4v9JwtP3StDh+0fV5v9E2Or/Rtfq/0vV7v9K1e//XNz1/1O40/9GeYz/X1lS/19W + Tv9gWlP/YFpT/15YUf9eWFX/XlhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/W11P/1peTv9cW1D/YFhU/2NWWP9oU1z/alFf/2RWV/9cXUz/XVxO/19aU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9ZXFD/VV1M/1dcTv9gW1f/W1ZU/1hQUP9YTE7/V2x0/1DB + 2f9W1/H/Utjw/0rV7P9L0+3/UtT1/1LS9f9b1/b/Xcvj/0+bqv9ZYVr/Y1hL/2FaUf9dV1H/ZFxa/2NZ + Wv9hV1j/YFVV/2JXVP9lW1f/XllS/11bUf9cW1L/VlhO/1RZT/9bYVz/Ultb/0ZRVP9QWV//Xmp2/2+e + sP93xdv/ctLp/2Xd8P9c1+3/T9Ho/0vQ6v9R0/L/Vdb1/1LS8v9Nzu//T9Hx/1bW9v9Y1fX/VdDx/1TR + 8P9V1fP/UtX0/0/S8v9N0/L/W9j0/2rU7f9kvtD/W5Of/0Vpa/89Vk//SVlL/1FaT/9LU07/XWFr/2Sc + rP9M3er/TtXw/1LS+P9S0Pr/VND4/1rO9f9bzvL/UNPs/0vX6v9O1e7/TdH2/0zP9f9P1PL/Utfs/1fV + 6P9g2Or/RrXE/05wev9mS07/aFlX/2RZUf9lW1H/YVlU/1pVVf9bVFX/a1hW/3BVUv9VVFb/RWx5/2mo + uP911Oj/btnw/2zE1/9rssD/Vn+A/2BdWf9fWVT/XllU/1paVP9aWlT/XFlU/2BYVP9kWFP/ZVpQ/2Ra + T/9iWVP/YFhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZVP9aWlL/VVxQ/1ldUv9hWlH/ZVlU/2JXU/9gU1D/ZFpd/1a5zv9S2/j/UNXy/0rT + 8P9L1fD/Rtfr/0TZ6v9G0uT/ScbZ+0rT5P1G1uf/RNjp/0fX6v9M1e7/S9Xv/1zb9f9UtNH/R3WI/2BY + Uf9gVk7/YFpT/2BaU/9eWFH/XVhV/11YVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1xcUP9bXU//YFpS/2ZXVf9kVlf/Y1Va/2NUXf9gWFb/W11N/1xcTv9eWlP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVxS/1tcUP9ZW0//W15R/1peU/9jWVL/akxO/2Nb + Zv9TpLL/YNHm/1fc8v9I1Ov/S9Pu/1PV9v9V0vX/VtPz/1PU7/9MvM//WWdh/2BYTP9SXFL/RFhR/01e + Wv9XWlr/XlZY/2VTVv9vVFX/cFdV/2VWUP9nXlX/Zl9W/1dUTP9PVE7/S1VW/0BaYP8zYWv/OXSD/2O2 + yv9a1PP/Tdj9/1XW+P9e1vb/X9by/1PW7v9J1uv/S9Xq/07V7P9Q1O7/TNT0/0XT9P8/0fH/PdPz/zrU + 9f9L0fL/YM7t/2HR6/9i1Oz/YNno/3XV5P9/ssT/WnOA/2dWXP9uU0//a1xP/2JhTP9TXEf/PVZK/0Z8 + ff9WusX/U9vw/1LU9v9Z0fr/Xc/6/1PQ+P8+1PP/PdXx/0fV7P9R1uv/U9Xu/0/R9P9Rz/P/U9Pz/1XU + 7/9c0+j/bNnn/0qXnv9KYWD/YFVN/2FYVP9YUUv/Z19X/21bWf9nTVH/aU5V/2pXXP9oUVj/R1xn/zGQ + nP9c1uf/Ttfy/0fU8/9L1/H/TtPk/0y+yf9nfnz/YF9a/15ZVP9bWlT/W1pU/11ZVP9hWFT/Y1hT/2Na + UP9jWk//YllT/2FYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWVT/W1lS/1ZbUf9aXFP/YllS/2VaU/9iWFL/YFNQ/2NZXP9VuM3/Udn3/0/U + 8f9L0/D/TNXw/0fX6/9E2Or/RtPl/0jL3f1J1OX/Rtbo/0TX6f9H1+r/TNXu/0vV7/9c2vX/UrPP/0Ny + hf9gWFH/YVdP/2BZUv9gWlP/X1lS/1xXVP9cWFX/XllV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9cXFD/W11P/2BaUv9lV1X/ZFZX/2NVWv9kVF3/YFhW/1tdTf9cXE7/XlpT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xbUf9ZW0//WVtP/1pcUP9cX1X/Z15X/3BU + Vf9dV2P/L4WV/1TJ3v9Y3fT/SNTr/0zU7/9T1fb/U9Dz/1TR8f9Z2PP/YMve/2h0bv9jW07/VFpR/0la + U/9MWlb/VVdW/15WWP9oV1n/b1ZX/2tUUv9lV1D/YlpR/2JcU/9fXFP/VVpU/0xTVP9JYGX/ZY2W/47D + 0P+Ez+H/YtPx/03Q9P9QzO7/Vs7s/1zT7v9W2fD/Tdnv/0zV6/9N0+v/T9Tu/03U9P9G0/T/QtHx/0LV + 9f9B2fn/T9T0/1/P7f9g0u3/XdPr/1bS4/9Apbb/MGp+/z1ebP9hWF//aFRR/2JYS/9hYU7/WWNP/0FX + Tf9ZiYr/a8nU/1Da7v9R0/T/V9D4/1vO+f9Tz/f/QtT0/0LV8v9J1u7/Udjt/1PW7/9P0fT/UtH1/1LS + 8v9V1O//Xdbq/2TU4v8xg4z/PldW/2RXUf9hWFT/YVtU/1tUTP9mVVL/clpe/29XXf9lUFT/YkpQ/2h6 + gv9rws//Ytbn/0zQ6v9L1PL/Utjy/1jV5f9k1eD/e7zA/2eDhf9fWVT/X1lU/19ZVP9gWFT/YlhU/2BZ + U/9cXFD/W11P/2NXVv9kVlj/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFlU/1xaU/9XW1L/WVtS/2JZUv9lWlP/YVhS/19ST/9iWFv/VLfM/1DY + 9v9O0/D/S9Pw/0vU8P9G1uv/RNjp/0bU5v9HzuD/SNXm/0bW6P9E1+n/R9bq/03U7/9N1PD/Xdr1/1Ky + zv9CcYT/YllS/2NYUP9hWVL/X1lS/15ZUv9bWFT/W1lV/15ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XFtR/1pcUf9iWVH/alZT/2lWVf9eV1j/XFda/1taVP9ZXk3/WV1O/15a + U/9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWVP/WllR/1taTv9fW0r/Yl5L/2Zd + U/9pVlj/W1Rd/ztncP9zu8r/a9vz/0vV8P9Q1O//UtXy/0/R7v9R0+//Vtr2/1XQ6P9Zk5D/SWJc/0VW + VP9PXFv/UVdX/1VYVf9bWFb/ZFpY/2haV/9kVlL/Z1pW/2ZWV/9bVFf/Rlda/yxSWf83dX//T6a0/1/I + 2/9h0+j/Ydbx/1TS9P9N0PT/UdH0/1TR8P9T0O7/UNHt/1LV7v9S1/H/TNbw/0nU7/9F0e7/RtHw/0vU + 8f9O2fX/TdXu/1LT5f9n2Ob/hNzp/4jG0v9ukZv/Vl1n/1ZMVf9kV1z/YVtV/1hXTP9ZWk7/X2FV/1Va + U/8oUFH/T5ul/3Pf8/9O1e//UNPy/1XR8/9Zz/P/U9Hy/0jV8P9I1fD/S9bw/0zX8P9P1vH/VNPy/1fU + 8/9S0vD/T9Xy/13V7/9/wM7/Tm9z/0ZSTP9dXFL/X1pT/2NcWf9dU1T/XVNU/2VaXP9jWl//OVBW/z5p + df9Zqrr/ZN3x/1XU7v9S1PP/T9X2/0nX9f9D2e//QtXn/1vU4/9itsX/aIWL/19ZVP9fWVT/YFhU/2JY + VP9gWVP/XVxQ/1xdT/9jV1b/ZFZY/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/WlpS/1taUv9hWFH/ZFpS/2JZU/9fUlH/YVdc/1K1 + y/9O1/T/TtLw/03T8f9M0/D/R9br/0TY6f9F1ef/RtHi/0bW6P9F1+n/RNfp/0fW6v9P1O//TtTw/1/a + 9f9RsMz/QW6B/2NZUv9lWFD/YFlR/15ZUv9fWVP/W1hU/1tZVf9eWVX/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1xbUf9aXFH/YllR/21WU/9rVlX/W1hY/1hYWf9YWlT/WF5N/1hd + Tv9eWlP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XFhT/1xaU/9eXFD/YVtI/2Fb + R/9kW0//Z1ZY/1xSWv87WV7/b6m2/2nW7v9O2PT/UdTv/1HU7/9O0ev/UtXv/1Pa9v9Q0ev/a7ay/0lu + av88UVH/Ul5d/1VYWv9UXFj/VllV/11YVf9jWlb/ZVlV/2dVUv9sUFX/YU9Y/0tcYv9Sfon/XKy4/2TT + 4v9b3vP/SdXs/07V8v9P0vX/UNH3/1PU+P9V1PT/UdHw/0/Q7P9S0+3/Utbw/0jX8f9G1u//RtXw/0rV + 8/9M1PL/RdHs/03U6/9Z4e7/Xtrh/1yyuf9TgYj/Wllh/2xLUv96T1b/d1NX/2JbUf9YXE//VVxP/1Nb + T/9TWlX/Omds/1quu/9v4Pb/TtLv/1DT8f9W0vH/Wc/x/1PS8f9K1e//SdXv/0jV7/9G1u//Stbw/1bU + 8f9Z1fL/UtLv/07V8/9a0e3/caWz/1NkZv9LU0v/Wl9S/11bUf9jW1r/XlVY/1hRU/9dU1b/Y1he/z1b + Y/9amab/bdTm/1ng9v9N0e//UNP0/0rR8v890u//NNjv/zTb7v9M3e//atLj/4W0wf94fID/YlhU/2JY + VP9kV1T/X1lT/1VdUP9TXk//YlZX/2dUWf9eWlP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/1taUv9cWlL/YVhR/2RaUv9jWVP/X1JR/2FV + W/9StMr/Ttf0/07S8P9N0/H/TNLw/0fW6/9E2On/Rdbo/0bU5f9G1uj/Rdfp/0TX6f9H1ur/UNTv/0/U + 7/9h3Pf/UrDM/0Bsf/9kWVL/ZlhR/2FYUf9eWVL/X1pT/1tYVP9bWVX/XllV/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cW1H/WVxR/2JZUv9sVlP/alZV/11YV/9aWFj/WVpT/1de + Tf9XXU7/XlpT/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVf9dW1X/YF1R/2Zd + Sf9mXEb/YVpO/2BXWf9YVVz/Pldd/2aNmv9mxt7/U9v4/1HU7/9O0+3/TdLs/1HW8P9R1/T/U9Hr/4PN + 0v9XfX3/OlFT/01cXP9WWVn/YFxY/2FXUv9gVFD/Y1hT/2JbVv9QUk//TFVY/1Frcv9akZj/d77M/3TU + 5P9l2Oz/Wdbx/1XX8v9Pz+//TtLw/0zU8f9O0/H/U9Px/1fS8/9X0vT/VtHy/1LQ8P9K0vH/TNXz/0/X + 9v9O1vL/TtPs/1bU6/9n2ev/ac7a/1Omrf81cHX/L09V/0pOU/9lWFr/bFpZ/2ZXVP9aW1D/WGBT/1lc + Uv9bUU7/XlNZ/1SFkP9gv8//Y9jv/07T7/9Q0/H/U9Tv/1TT7v9S1O7/TdXt/07V7v9O0/D/TtHx/1DS + 8P9X1PD/V9Xw/0/T7/9K1/b/Ucnk/2KEkP9WXV7/VFdQ/11eUf9dWlD/X1ZX/2BVWv9bVFf/U1RU/05d + Xv9MjZL/bcjU/3Hd8/9V0u7/VNLx/1LT9P9L0fD/RdDu/0bU8f9K2vT/UdXs/2nX7P+AzuH/ebG//1hy + dP9gX13/ZVdU/15ZU/9MX1D/SWBP/2FWWf9rUlv/XlpT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9cWlL/XFpS/2FYUf9lWlT/Y1lU/19S + UP9fVVv/UbTK/07X9P9O0/D/TdPx/0zS8P9H1uv/RNjp/0XW6P9G1uj/Rdfp/0XX6f9E1+j/SNbq/1HU + 7/9Q1O//Yt34/1Sxzf9Ba3//ZVlT/2dYUv9iV1H/XlhR/15bU/9bWFT/W1lV/15ZVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/W1tS/1hcUv9hWVP/bFdU/2pXVP9fWVT/W1lV/1hb + Uv9VXU3/Vl1O/11aU/9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWFj/XVlX/2Jc + UP9xXkf/c15E/19bUP9QWVz/UVhe/1FZXf9xa3T/bq7G/1rc/v9S1PD/StTr/0zX7f9N1/D/TdPx/1jS + 7v+D1er/X42X/z1aX/9EWVz/VldX/3JXU/93VE//b1NN/2VYUf9XWVP/O2Fd/yl2d/84pqz/Wdrm/1jd + 8P9S2vP/TNPz/1DQ9v9b1fz/Ucry/0nT6v9D2uT/RtXm/1DR7P9b0vX/YND8/1/M/f9Zyvj/Us33/1TP + +v9U0vb/UNPr/1fU5P973On/g8nQ/2yNk/9TV1z/UE9P/2JdXf9gXFr/VFhO/01cSf9QYE//Tl9O/0th + Uf9eW1b/eExc/3JDXv9Zk6z/Vs3l/1nX8/9O1PD/T9Tx/03X6v9L2eb/T9jn/1bW6f9Y1ev/XNDz/13M + +P9czvT/WdTu/1LV6/9M1fH/Qdn6/0W+2/9wZW7/a1ZV/2RbUv9iXVD/X1lP/1xQVv9lVV3/YFpe/0lg + XP82eXD/QtDO/0fk8P9L0Oz/Vcft/1/U9/9b2Pj/Vdb0/1vT9P9p0Pj/Zc31/1TM7v9Q0fD/Vtfy/1fQ + 4/9GprH/Vm9w/2VXVP9gWVP/Ul1Q/09eT/9gV1f/Z1RZ/15aU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVP/XVpS/11aUv9hWFH/ZlpW/2RZ + Vv9fU1H/XVdc/0+1y/9N2PX/T9Tx/03U8P9M0+//R9bq/0TX6f9F1+n/Rdfo/0XX6f9F1+n/RNfo/0jW + 6v9R1O//T9Tv/2Pe+P9Usc3/QGp+/2ZaVP9nWVL/YVdQ/11YUP9eW1P/W1hU/1xaVv9eWlX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tbUv9YXFL/YVlT/2xXVP9qV1T/X1lU/1pZ + Vf9XW1L/VV1N/1ZdTv9dWlP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhY/1lX + Vf9eWEz/bltE/3NdQ/9gW1D/T1db/1BWXP9QWl7/VVRd/1uft/9b3v//UtTx/0rV7P9O2vD/TNbv/0rR + 7v9b1PH/jNnt/3Oapf9MZmv/Q1pd/1RWVv9vVlH/eVZR/3VYUv9qWFD/VVBJ/2GAe/9zuLf/ctjc/2Hc + 5v9U1Of/T9Ts/0/U9P9Q0PX/Ucvy/1nS+/9N2O7/Rt3n/03c7f9V1vD/WM7w/1rK9v9eyvz/X8/+/1bQ + +/9PzPj/Ts/0/1Ta9P9W2ev/SbPB/zF/hv8zXGP/TFdd/1dbXP9YVlf/WlZW/1dbUf9SX03/UmFQ/05f + Tv9HXk3/XFlW/35RYP95SWL/dq3F/2fb8v9W0+7/TdTw/07U8f9M1ur/S9fm/07X5/9W1uj/Wdbr/1zR + 9P9ezvn/XND1/1jT7f9Q0un/TNfz/0Dc/f88udX/XFNd/2ZSUP9lXVT/YltQ/19ZT/9jVlz/Z1Ze/1hP + Uv9aamX/e7es/1Xd2f9D3Ob/T9Lt/1/R9/9az/P/VtPy/07R7v9Vzu//Zs/2/2XP9f9Vze//VNTy/1vY + 8/9g1Of/btTg/15jY/9iWFX/Z1dV/2pXVP9tVlT/WFtS/1JcUv9hWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlpT/1xaUv9cWVH/YVhQ/2Za + Vv9kWVb/X1NR/11XXP9Ptcv/Tdj1/0/U8f9N1PD/S9Lu/0bW6v9E1+n/Rdfp/0XX6P9G1uj/Rdfp/0TX + 6P9I1+v/Utbx/0/T7/9i3Pf/VLHN/0Jtgf9lWlP/ZlhR/2BYUf9eWFH/X1pT/1xZVf9dWlb/XllV/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9aWlP/V1tT/15ZVP9nWFT/ZlhU/2JZ + Uv9iWVL/XlpR/1hcUP9ZXFD/XllT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RY + VP9mWFL/ZVlO/2RbS/9iXUv/WVxP/1FaVf9WV1r/Y1Vf/2ZGWv9akKP/VNbo/1vU7P9a1e3/V9Xw/07R + 8P9K0vH/Utb0/2Dd7f8/wsb/P3+C/1xNU/9cVFb/Y1dX/2NVUv9FUlP/LmZu/0uYpf9audL/YdDu/1zY + 9v9T1vT/TdHz/0/S8f9W0/H/WdLy/1nR7v9b0/D/VNDw/1PQ8v9W0/X/UtL0/1HR9P9O0PL/T9Py/1LX + 8f9W1+3/YNXp/3rc7/9/y9r/Ypik/1duef9PWGD/VVFX/2FVV/9kWVf/WFxU/1FbUP9WV1D/X1ZV/2Jb + Wf9fXlD/WlpJ/1tYUP9dXWX/Umd5/1a60v9U3fn/U9Xw/1fT7v9X0+7/U9Xr/0/W6f9N1uz/StTx/0rU + 8v9Y0fP/Yc/z/13R8/9X1vL/UdTt/17X8v9gxuX/VJSv/15UZf9kV1v/YF1Q/1pcRP9dX0r/X2JX/01R + Uf88ZHD/SZ+z/2jQ6v9S1fP/StP3/07S8f9S1Or/VdTr/1XP7/9WzPH/VtH0/1bV+P9S0PP/UtT0/1LT + 8P9Y1Or/aNjm/3/W4P9lcXj/XUxP/2VXVf9wVVT/dFRU/1dcUf9OXlD/YVlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BaVf9eWlT/XVhS/2FX + Uv9mWlb/Y1hV/1xSUP9eXGD/TLfL/03Y9v9R1PL/TtPv/07V8f9H1+v/RNfo/0XW6P9G1uj/Rtbo/0XX + 6f9E1+j/SNfr/1LW8P9Q0+//Ydv2/1ezz/9GcYT/ZFpT/2RYUP9gWFH/X1hS/19ZU/9dWlb/XVpW/15Z + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WVpU/1ZaVP9dWVT/ZVhU/2NY + VP9kWVH/ZllR/2FaUf9ZW1H/WltR/15ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9oWFL/bVhQ/2laT/9gW07/Wl1O/1VeTv9RXFL/WFhZ/21RX/91Ql3/S3yN/z3Ezv9h2O7/YNLs/1zR + 8f9R0fP/SdLz/0vV8/9D2uf/L+Pi/0aamf9vR03/Z1VX/15RUv9gU1D/XHR4/1Kquv9ZzOT/VNP8/0zR + //9H0Pv/R9H6/0bQ+f9O0PP/WdHw/1/T7/9f1e7/XNLp/1/R9v9fzfz/Wsz3/1PR+f9N0fX/R9Px/0PW + 7f9F2un/Ut/r/2Pe5v9owsv/W46Y/05gaf9eS1b/bVBZ/3FVWv9uU1T/alVR/1dgVP9NYVD/WFhT/2dS + Wv9nVVv/ZlxQ/2VbSP9bV0z/TmFm/1OHlf9Iw9z/Rtv4/1HW8P9c0+z/XNPs/1jU7P9S1uv/TNXv/0TT + 9f9B0/X/VtHy/2TP8P9d0PH/VNPx/1HU7f9r3Pj/a7jW/09xjf9eVWv/X1Ve/1tbTP9bYUL/YGNH/1NX + Qf9aYFv/WJSk/1HJ6v9U0f//Tc38/0/P//9P1Pb/TNfk/1LW6P9Yz/D/X872/1fR9v9I0vT/StL0/0zS + 8/9Q0/D/Wtnu/2DX4v9Vq7P/Vmlz/2BOU/9lV1X/aFZU/2hWVP9WXFH/U11R/2FZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWlX/X1pV/15Y + U/9hV1P/ZlpW/2JYVP9bUlD/Xl5i/0u5zf9N2vb/UtTy/07T7/9Q1/L/SNfr/0TX6P9F1uj/RtTl/0fU + 5/9G1uj/RNfp/0jX6v9Q1e//TtPu/2Dc9v9YttL/SHWH/2RaU/9kWFD/YVlS/19ZUv9fWVP/XVpW/1xY + Vv9dWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1laVP9XWlT/XVlU/2RY + VP9kWFT/ZFlR/2VZUf9hWlH/W1pS/1xaUv9eWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/ZlhT/2pYUv9nWVD/X1tQ/1xcUP9XXFD/VVtT/1lYV/9nU1z/b0pd/z1mdP81qLL/a93w/1bR + 5f9X1PD/UtT1/0zS8v9N0fH/StXp/0zn8f9bqrP/YVRh/1NWXf9SYGT/aH19/321uf934u//Xdnt/1bS + 9f9S0Pb/T9D1/03Q8/9Nz/L/TdDv/1LT7f9Y1O7/W9Tu/1rT7v9a0/b/WdD5/1bP9f9S0/b/TNLx/0zT + 7v9U1+z/XNfm/13N2v9duML/QoKL/y9VX/8/UVj/VlJZ/2RZXv9nWVz/ZFVU/2NWUv9dXFX/Wl5U/2Ba + V/9lVlv/YVNX/2JZTv9nXEz/V1dO/0hjaP9upbP/V83o/0nY9f9Q0+//W9Pu/1vT7v9U1Oz/T9br/0zV + 7v9H0/T/RtP0/1XR8v9g0fH/WtHw/07R7P9M1Oz/bd/3/2OxyP85XnT/W1Bf/19RV/9fW1H/XWJM/1Ne + S/84VUj/ZYqM/3vE1v9l1/X/Vc70/03P9v9N0Pv/UNX0/1HZ6P9S1ej/WNLz/1rQ9v9Sz/L/SNDw/03T + 8/9Kz+z/Vdfw/2ja7f9nvMn/MnJ6/0dVX/9gVVf/YVhV/2NXVf9dWFX/VVxS/1dcUv9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWlX/YVdT/2RYVP9hWFT/XFNQ/1tbX/9Nu8//Ttz4/1DU8f9O0+//Udbx/0jX6/9E2On/RdXn/0bR + 4v9I0+X/Rtbo/0TY6f9H1+r/TNXu/0nT7f9c2vT/V7fT/0l5jP9iWlP/Y1lR/2FaU/9fWlL/X1lS/15Z + Vv9cV1X/XVhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9bWlT/WVpU/1xa + VP9gWVT/Y1hU/2RaUf9kWk//Y1lS/2FYVf9hWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2RYVf9nV1X/Y1dV/1pZVf9aWVX/W1lU/11ZVP9gWVT/YVhV/2ZVWf9EV1n/SY+R/3fd + 5P9M1t//TNrr/1HW9P9S0PT/VdD0/1fT9v9e1/r/Xq/O/0pxjP8tXnT/QZKf/2LR2P9P4ej/JtTg/zzj + 9f9Q2fT/WtLx/1zS7v9c0uv/XdLr/03W6v9E2en/Stfr/1TU7/9V1PL/R8rr/0bM7v9P1vb/S9Pt/0zY + 7P9Z2Of/c9fi/4PI0v9umKH/W2hv/1hRV/9cUVT/W1VV/1dcWP9YX1r/Vl1Y/1RaVv9aWlb/bVhX/3BU + VP9oVVb/YVda/15TVf9iWFH/bFxQ/09XUf8ybXH/cMTP/1zX8f9M1fT/UdLw/1nS8P9Z0vD/TtXu/0jX + 7P9K1e7/TNPz/07S8/9T0vL/VtLw/1PU7/9K1u3/Rdnt/2nW5f9koKv/PFVc/19OTv9qU1L/aFxb/1VZ + V/82WVf/I4KF/0W8yP9h2fP/Xdf4/1LR8P9Q1fP/S9Hw/03T6/9V2ej/U9fo/1LV8/9Mz/H/TNDw/1HY + 9P9N1e7/Udbp/1vd6/90xNL/g4OV/1BRXv9MUFf/VFpZ/1VaVf9iV1X/XlhV/1VcUv9XXFL/YFlU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Y + U/9fWVT/YVtW/2BXU/9hV1P/X1hT/1pVUv9XW1//Tr3S/07d+f9P1PD/T9Pv/1LU8P9I1uv/RNjp/0bU + 5v9Hzt//SdLj/UbV5/9E2On/R9fq/0zV7v9K1O7/W9nz/1m51f9PfZH/YllS/2JXUP9hWlP/X1lS/15Y + Uv9eWVb/XFdV/11YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/W1pU/1la + VP9cWlT/YFlU/2NYVP9lWlH/ZVpP/2NZUv9hWFX/YVhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9kWFX/aFdV/2VXVf9bWVX/XFlV/1tZVP9cWVT/X1lU/19WVP9oVlv/PFJX/zWC + hP9k0df/T9ni/0zZ6/9N0/D/UM/0/1bS9v9UzvH/Ydn6/3G+3P94lrD/dJ+0/37J1f9z4OT/Td/j/yva + 5P8w1+n/TNXw/1vS8f9c0e7/XdPs/1/V7v9P2e3/Rdrq/0nW6v9U0u3/VdHw/1TV9/9K0PT/Q8vt/0nW + 8P9K3fD/WuHw/1fD0P8+i5b/OGhy/0BQWf9UUFf/Ylhd/15ZWv9UWlf/T1hT/09XUv9SWVT/W1xY/29Y + WP9xU1P/Z1RV/2BWWf9hVVj/ZVtT/2xbT/9UW1T/Q3l9/3/P2v9d1/H/StPz/1LT8f9Z0vD/WdLw/07V + 7v9I1+z/StXu/0vT8/9N0vP/U9Ly/1fS8P9V1O//Tdnw/0bb8P9Wxtb/S4yY/zhVW/9nV1b/bFVV/2RU + U/9YV1T/VHFs/2C7uv9k1+D/XtPr/1bN7v9X1PP/Utf1/0fO7v9Kz+j/Vtrp/1PX6P9P0fD/UNH1/03R + 8f9J0e3/Vd33/1Pb8f9N1ub/S6Sz/1BUZ/9SVmT/Ulde/1NZV/9VWlX/VVpX/1RaV/9YWVX/XllU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWFP/X1lU/2JcV/9gWFT/YFZS/19YU/9cV1T/WFxg/1G/1P9O3fn/TtPw/1DU8P9R1O//SNbq/0TZ + 6v9G0+X/SMrc/UnP3/tG1Ob/RNjq/0bX6v9K1e7/SdXv/1jY8v9XvNj/UISX/11ZUf9fVk//YFlS/19Z + Uv9eWFL/X1lW/11XVf9eWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15Z + VP9dWVT/X1lU/2FYVP9iWFT/YFtR/15cT/9hWVP/ZVVY/2RWWP9gWFX/XllU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFhW/11YV/9UWlf/TlpX/0xaV/9cWFX/Z1hT/2RYUf9iV07/ZVhR/1BV + Tv9UcG//b660/1Te3/9L3On/T9Ds/1jN9P9a0Pj/Tc/0/0/U+P9bzvD/acjm/3LS7f9w2O//YtLn/1HW + 6/9E3/X/PNPr/0XT7f9J1O3/T9Tr/1vU6f9b1ev/VNfq/0zW6/9H0u3/RdHy/0fS9f9M2PX/UNjt/1zW + 6f902e3/fdXl/2mptf9Pd4D/R15k/01aWv9XWFX/XVZR/2FYUf9lW1P/YlpQ/19VTv9eVE//YFdT/2FY + V/9iV1j/Y1dZ/2FXWP9gV1b/YVlY/2JaVf9mVE3/TmRh/zqYnP9q1uL/WdXy/07R9P9T0vP/VdHy/1bR + 8v9L1O//Rdfu/0rV7/9T0vH/VNLx/1DT8P9O1O//TtXu/03Y7P9Q3/D/X7S+/1t3ev9LVlf/YFdU/2ta + Vf9DUFD/MGlx/1uuvf9p0+3/W9bz/0rP7v9H0fH/Tdn2/1DX7/9M0en/UNXq/1fb7v9R1er/TNPv/0vU + 8v9L0+//StPn/1TZ6f974e//bLK9/01rdv9YTVj/YlZd/11YWf9YWVb/WVlV/1JaV/9RWlf/WVlV/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVhT/15ZVP9hXFf/X1lU/19XUv9dWFP/XFhV/1xhZP9Uw9f/Tt76/0/S7/9R0/D/UdPu/0jW + 6v9E2ev/RtLk/0nG1/tJy9v3RtTk/0TY6v9G1+r/SNXu/0nV8P9W2PH/V8Db/1OMnv9aWVH/XVZO/2BZ + Uv9fWVL/XlhS/2BZVv9fV1X/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZVP9hWFT/YVhU/11bUf9bXU//YFlT/2dUWv9mVVn/YFhV/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YV/9VWFn/SVxZ/0VbWf9CW1n/XFhX/29WU/9pWFD/ZllM/2JZ + Sv9fWUv/YmNe/2KJjf9R3dn/S+Lq/1PS7f9fy/T/Xc74/0fP9v9D0fj/StX6/1LZ+v9Z2fn/WdPy/1nM + 6/9T0fD/S9r4/0bU8P9B1O3/Pdfr/0bX6f9Y1ef/V9Xo/1XU5v9Q0+v/RtLy/z3T+P8+1fz/PNTv/03d + 6/9o4er/dMXV/2Oaqf9PZnH/TkxU/11SVP9lW1X/Z1xT/2NZTP9iWkr/alxP/25bT/9tWE//bVhT/2tX + Vv9lVVf/WlVY/1lXW/9eWVn/YFlV/2BaV/9cVVP/YExJ/1VycP9Gur7/W9fk/1bT8/9R0PX/U9D0/1PR + 8/9U0fP/SdTw/0LX7/9K1e//WNLw/1jS8P9N1O//SNbw/0jU7f9I1Ob/V+b1/1ykqP9WXVn/VVRQ/2JZ + U/9jTkb/Tmhp/0qltP9h1fD/XdL7/07O+P9C0fX/QNj2/0HX8/9O1en/VNfp/1XZ7P9U2Oz/UNTs/0vV + 7/9J1vL/Stfw/0zZ6f9U3ef/a8PM/1+Aif9UT1j/a1Na/2pTV/9iVlX/W1lV/1pZVf9TWlf/UlpX/1tZ + Vf9hWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/11YU/9cWVT/YFxX/15ZVP9eWFL/XFhT/11aV/9jaW3/VsXZ/07e+v9P0u//UdPw/1DT + 7v9I1ur/RNnr/0bQ4v9JwdL3ScfY8UbT5P9E2er/Rtbq/0jV7f9J1vD/Vtjy/1zE3/9akqT/W1lR/11W + Tv9gWVL/X1lS/11XUf9gWVb/X1hW/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlU/2BZVP9hWVT/YlhU/2FYVP9bW1H/WF5P/19ZU/9oU1v/Z1Ra/2BYVf9eWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9gWFb/WFhX/05bV/9KW1f/R1tX/1tZVf9qWFL/Z1pQ/2Zc + UP9iWEz/YVpP/1tZV/9QbnX/T87O/1Lh7P9X1vP/Ws31/1jP9v9Iz/P/RtL1/0zT9f9Q0vD/UM7r/1rS + 7/9h1PH/VNLw/0PR7v9K1fL/SNXw/0fW7/9P1u3/WtXr/1nT6f9S1Oj/TtTs/0vV8/9H1fj/SdT6/1PW + 7/9e0+D/XL3H/0mOnv8qW2n/NU5X/1FUWv9dWFn/YVpU/2BXT/9iWE3/ZVxP/2hbT/9qW0//allR/2xb + Vv9pWlj/YldX/1tWV/9ZVln/XlhY/2JZVv9gWVX/V1JP/1tOTf9ehIT/XNPX/1vW5f9W0/L/UtD1/1LQ + 8/9S0fP/U9Hz/0vU8P9F1u//S9Xv/1fS8P9X0vD/TtTv/0nW8P9K1O3/TNLl/1/g7/9Rj5b/RkpL/1JU + U/9UWlb/VlpV/3Kcn/+A2uv/ZNTw/1fN8/9Ozfb/S9P3/0rX9f9F0e7/TdTq/1Ta7f9R1+3/TdLp/1DV + 7/9M1e//S9fx/1HZ7/9a2ur/YNXg/0SJk/9AWmL/VlZc/2VWWf9jVFb/X1dU/1xZVf9cWVX/U1pX/1Fa + V/9eWFb/ZFdU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9dWFP/XFlU/19bVv9eWFP/X1hU/1tYU/9eW1n/bXN2/1fG2v9M3fn/T9Lv/1HT + 8P9P0+3/R9bq/0Ta6/9Hz+D/Sr3O8UnD0+lG0eP/Rdnr/0XW6v9G1ez/R9fw/1XZ8v9gyOP/Xpip/1pb + Uv9bV07/X1pS/19ZUv9dV1H/YFlW/19YVv9fWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2NYVP9kWFT/ZFhU/2RYVP9jWFT/Ul1R/0tgTv9ZWVX/bVFd/2pSXP9hWFb/XlpT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jWFT/X1hV/1xYVf9YWlX/UVxU/1BcVP9YW1L/YFtP/2Fc + Uf9iXlP/YltQ/2hXUf9wTlT/bVxt/1uyvP9g1uf/WNn2/0zS9v9N0vT/Tdbu/0fR5/9I1Ov/TNvy/0vZ + 8P9X0+//X9Tz/1jR8v9PzO7/WNT2/1jR9P9c0fX/YNP1/1/T8f9d0O//UNLv/0vW8v9R1/P/V9Ly/17J + 7f+R2On/jrK3/1Vpcf89T1f/VF1j/11bXv9eVFT/Y1ZS/2ZaUP9nW1H/Z1tQ/2VZTf9iV0v/X1ZJ/2FW + Tf9jWVH/YlpU/19aV/9aWlj/V1lY/11ZVv9lWVT/YldT/1RUUf9RWWD/UJaf/03g5/9S1uz/VNHz/1bP + 9f9T0fT/TdL0/03S9P9N0/H/TNTw/1DU8P9Y0+//WdPv/0/V7v9H1u3/Ttft/2DW5/9swc//YXR//15J + U/9bWmP/JVla/0yjo/9mz9r/YNHt/1jR9v9S0fz/Tc/7/1TO9f9dz+7/Ws/s/0/W7f9O2e3/S9Pv/0fM + 8/9N0vf/TdXv/0zW5v9f2eb/eNDd/2ykrP9jXmf/Z0tP/2ZaVv9ZW1H/WlxS/19aUv9jWFP/ZFdV/1Na + V/9RWlf/XlhW/2RXVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/11ZVP9dWVT/XFhT/15ZVv9ZVlX/XVxa/3N8fP9Vx9r/Stz4/0/T + 8P9R0/D/TtPs/0fW6v9E2uz/R87f/0y5yelHwNDhRtHi/0Xa6/9F1un/RNXr/0bX7/9X2/T/Zsvl/2Sb + qv9bXVP/XFhP/2BbVP9gWlH/XVdR/2JaWP9gWFf/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9kWFT/ZVhU/2VYVP9kWFT/Y1hU/09eUf9HYU3/WFlV/3FQXv9tUV3/YlhW/15a + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9iWFT/Y1lU/19YVv9cWFX/WFlV/1BcVf9PXFX/V1tS/15b + UP9gXFD/XltP/2JcT/9pVU7/dEtR/3JYaP9Im6X/Vcra/1fX8/9L0fX/TNL0/0vW7/9M2O7/SNbs/0XU + 6/9H1ez/V9Pv/2DU8/9Y0fL/UMvu/1fS9f9Xz/L/Xc/z/2HS9f9f0vD/XM/u/07S7/9H1/P/Stf1/07S + 8/9azvX/S5iq/0Nrb/9GW2T/P1Ja/0tVW/9cWVz/Zlpa/2ZXU/9mWU7/aFtQ/2hbT/9nW07/ZltN/2dd + T/9oW1L/ZFlR/2BWUP9dV1X/WFpZ/1ZbWf9cWVf/Y1dS/2FWUv9cWlb/YGRr/1ufqP9O4+r/Utfs/1LP + 8f9X0PX/VdP3/0zS9P9N0vT/TNPx/0rU8P9P1PD/WdPv/1rT7/9P1e7/R9ft/0zX7f9X0uP/Vqy6/19s + d/9hRE3/XVRc/2mWlv90ysj/cdrl/2LT7v9X0Pb/UtH+/0vM+v9SzPT/YNHx/1/V8v9P1u3/S9fp/0zU + 7/9N0fj/StD0/0fR7P9O2+z/Wtvp/1e4xf80b3f/XFRe/3FRV/9kVlL/VltQ/1pdU/9fW1L/ZFhT/2VX + Vf9bWFX/WlhV/2RWVf9mV1X/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19aVf9dWlX/XFhT/1tYUv9dWlf/WlZV/2JdWf99gH7/Vsfb/0jc + +P9O1PD/UdPu/03U7P9H1ur/Q9vs/0jN3v9OtsXhTLfH1UfO3/1E2+z/Rtfq/0nW7P9O1e7/V9fy/13U + 8v9cqr//WFdR/1pVTv9dWlX/XVxV/1taVP9cWFL/X1hT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lV/19ZVf9gWVX/YlhV/2VXVf9hWVP/YVpR/15ZU/9ZWVX/WVlV/15Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/ZlpY/19UUf9cVVH/XltU/11eVf9XW0//VVtO/2Bb + Uf9oWlH/ZVdQ/19WU/9hXF3/VVNZ/0JGVP84WGz/OZus/1DJ4P9V1vX/TNL0/0/S9P9b1u//Ytjv/1PW + 7P9C0uj/RNLo/1XU7f9c1vL/WNTz/1LR8P9S0/T/UND0/1HP9P9T0PP/V9Dw/2HS8v9e1e//a93z/3fT + 6f9pscX/WYme/09fZv9VUU//XVhY/1RYWP9SV1X/V1lX/1tbWP9cWVX/YVhU/2RZVP9lWVT/ZVlU/2RZ + VP9dXFT/XFtV/1paU/9YWVH/WllT/19ZVP9hWVX/YFdS/2NWUf9nWlj/RVNW/1V6hf9hucf/Tt7s/07T + 7P9U0vP/V9H0/1HP8/9M0vT/TNL0/1PR8/9X0vH/VdPv/1TU7v9U1O7/UNTu/0nV8P9X1u7/e9Dg/02R + oP8rV2b/OVRl/12Km/9py9b/Zdnm/2HY7v9b1PL/VNHy/0/S9P9K0PP/Vc/v/2bR7/9n1/T/TdXs/0XT + 7P9J0vT/TND6/0rN9f9S0ur/cuHt/3e/yf9XdID/Q1Zd/1pXV/9lW1b/XllP/1tXS/9gXFD/YFxR/19Z + U/9gWFT/XVhV/1xYVf9mVlX/Z1dV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9dWlP/W1tT/1xaUv9kWlP/aVhU/1RUU/9GZGX/X5CX/1fH + 2/9U2fb/VNT2/1LS9P9N1O7/R9bq/0Tb7P9HzN39TbHB1VCvv8NIy933Q9vt/0bX6v9M1uz/VNLu/1bS + 8P9V2fv/VrbQ/1lVUf9bVE//WlpV/1ldV/9ZW1X/V1ZN/15ZUf9hWlT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/1tZVf9bWVX/XFlV/2BYVf9mV1X/b1VU/3ZUVf9iWVL/RmFP/0lf + T/9aWlP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlV/2RXVv9hVFL/XVdR/11cUf9dXE//W1pL/1pb + S/9oXFD/cFlR/2tVUf9lVFf/WlNd/0tQYf8/XnP/P4ad/0u1zP9Y0+7/Vtj3/03S9P9Q0vP/ZNHq/2/S + 6v9d1+z/Rdjs/0bW6v9T1uz/VtXv/1TT7/9S0/D/T9L0/03T+P9L0Pj/Ss/0/1HQ8/9g0/X/a9v0/27N + 4P9mpLX/WnWC/1RQWf9uTk3/flVP/3NWUP9iWVP/WltU/1RaVP9QWlT/UlpV/15XWP9iV1j/ZFdY/2VW + WP9iVlj/U1pV/1BaVf9RW1T/Ul1S/1hcUv9lWFH/aVhR/2RWUP9jVlH/aVtZ/zdPVf9Ujp7/atHk/07c + 7v9M0e7/VtX0/1jR9P9QzvL/TNL0/0vS9P9Y0PT/YdDy/1rS7/9R1e3/UNXt/1DU7v9K1PH/XtXu/5XK + 2v86b3//FlRn/0iIn/93yOD/UNvt/0jW7P9R0/H/V9P0/1LQ7/9L0u3/Stbw/1jS7f9qzur/adPv/0vU + 7P9E0/H/SNH5/0jQ/f9K0Pz/XNnv/2vK0f9riZH/YkhV/2FUWv9bWlP/V15Q/1tcT/9kWkz/ZVpN/19c + T/9bWlP/XFlU/2BYVf9fWFX/ZVdV/2VXVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFpS/1lcUf9cXVL/a1tT/3JWUP9QU1H/MWlu/0uf + rf9aydz/Xdb0/1nT+f9T0vj/S9Pv/0bW6v9E2+3/R8rb902svMNPq7uvSMrc8UTb7f9G1+n/Stbr/1PT + 7v9W0/D/V9n6/1u40f9eXVn/XlhT/1tbVf9YWlT/WFlT/1pXT/9fWlP/YVpU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWVX/XFlV/15ZVf9iWFX/ZldV/2tWVP9vVVT/YFlS/0tf + UP9OXlD/W1pT/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1pU/15XU/9eU1D/ZllX/2NcVv9cWU//W1dM/11a + Tf9dXE//ZVtQ/2lYUv9kVlT/X1VZ/09SXP9RZ3f/bJqt/3/K4f9j0un/Wtfy/1PW9f9O0fP/UNLy/1vO + 5/9j0On/Wdfu/0nb8f9L2vD/Vdbu/1bR7P9Rz+v/T9Dt/1DT8/9O1Pb/S9P2/1DT9P9c0/L/Yczq/2PI + 3/9Im6z/K2Nw/zNOV/9RVFr/aFdU/3FXUf9sWFL/YFlT/1paVP9XWlX/VVlV/1dZVf9dV1f/YFdX/2FX + WP9iV1j/YFdY/1ZaVv9VWlX/VlpU/1dbUv9bW1L/ZFhS/2dYUv9lWFH/ZFdR/2NXVv88WmD/YZ+v/3Tb + 7/9R3fD/T9Pv/1XU8f9Y0vT/U9L1/0vS9P9L0vT/V9D0/1/Q8v9Z0u//UNXt/1DV7f9Q1O7/TdXz/1rR + 6/95usr/KWZ1/zl+kf97xNr/iNrz/1DS5/9K0ej/UNTv/1DU8v9M0e7/TNLt/0zW8P9Z1O7/Zs/r/2DO + 6v9J0+z/SNj0/0zV+f9Q0Pv/WdP9/2PQ5f8/k5r/OVlh/19RXf9cVlv/WllU/1haT/9dXFD/Z19S/2Na + Tf9eW0//XFpT/11ZVP9nV1T/Z1dU/2VYVP9iWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11aU/9aXFL/XFxS/2laUv9wVlH/UFJR/zdp + bf9bqLT/XM3g/1fV8/9W0vb/U9L3/0rT7v9F1ur/RNzu/0jJ2vFOqLevTqW1m0jI2ulE3O7/Rdfp/0nW + 6v9R1PD/U9Pw/1ja+v9dvdb/WGVk/1lbWP9XWlX/WFhS/1xYU/9eWFH/YVpT/2BaVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9iWFT/Z1dV/2ZXVf9kV1X/YFhV/1hb + U/9SXVH/U11R/1xaU/9gWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWlX/YlxX/2JYVP9jV1L/ZlpU/2hc + Vv9nW1X/ZVdU/15UVP9UVFj/SVNe/0BUZP9GdIv/S6/E/0/W6/9T1vL/Utn0/0bO6/9Jzuv/UdTy/1DU + 8v9Q1vH/T9Xx/0vT8P9F0vH/R9Py/1nQ8f9e0O//WNPt/1TX7v9V3PL/R9Xo/0HW6P9X2u7/d9Ho/3q7 + 0f9Xf4z/Tlte/2BcU/9pYUr/ZVpD/11cSP9ZXk3/XVxP/2NaUP9jWVH/YlhU/2NWVv9hVlj/WVhY/1ZX + Wv9UV1v/U1hb/1VYW/9bV1n/YFdY/2VXVv9oV1P/Z1hR/2ZaUP9mWlD/ZlpQ/2JXUv9aU1j/LW52/021 + yP9o3/z/U9Xz/1PS8f9U0u//VdPv/1LT8f9L0/P/S9Pz/1nR8v9iz/H/W9Hw/0zV7f9M1e3/T9Tw/1bW + 9v9Vx+X/SJ2v/0iYqP9OwNT/UNz2/07R8v9M0PT/UtL4/0bY9/802/D/N9jq/1HX6v9U1Ob/V9bp/17Z + 7/9Z1O7/Qc7p/0PZ8/9T2PT/aMvt/4bL8f95orD/UmJk/0hJTf9gW17/WlVV/11ZVv9fW1T/YFpQ/2Fb + UP9gWk//X1pQ/19aU/9fWVT/ZldU/2ZXVP9lWFT/YlhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eW1P/XFxR/11bUf9mWVL/b1ZT/01P + UP84aW//aLTC/1bR5f9P1fL/UdH0/1HS9P9I1Ov/Rdbp/0Tc7v9Jx9jpUaOym02gsH9Hx9nfRNzv/0XX + 6f9J1+n/Udbx/1PS8P9Y2fr/YcHa/2Rvbf9dXlz/V1lU/1dYUv9cWVT/X1lS/19ZUv9fWVP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/YlhU/2dXVf9mV1X/ZVdV/2BY + Vf9YW1P/UV1R/1JdUf9cWlP/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlV/2JaVv9kV1T/ZVdS/2NW + UP9iVk7/ZFZO/2pYU/9pWVf/WVFU/1VWYf94g5T/h7DI/23V6v9P3vL/TNTv/03Y9f9J1vH/R87q/03O + 7P9X2vf/Utj0/07T8P9I0e//Q9Px/0bV8/9b0fP/YdDw/1jR7P9O0un/StPq/0ne8v9D5fb/QdDl/0Oj + u/8yd43/N15q/05XWf9kWU7/bF5E/25gRv9gX0j/WF9L/1xcT/9kWlD/ZFlR/2RYVP9lVlb/YlZZ/1hY + WP9TV1v/UVdc/1BYXP9SWFz/W1da/2JXWP9oV1b/a1dT/2lYUf9mWlD/ZlpQ/2ZbUP9jVlL/WlJX/0mI + jv9cw9f/Ytr3/1DP7/9U0/L/VdLx/1XS7v9R0fD/S9Pz/0vT8/9a0fL/Y8/x/1zR8P9M1e3/TNXt/0/U + 8P9V1fX/V8jm/1Wnuf96xNX/Ytbq/0PX8P9J0/T/TND3/07O9/9C1vb/Mt7z/zbb7P9S1+n/V9Xm/1nY + 6v9b2O3/U9Hq/0fX8v851O//TNb0/2jQ8/9cocv/RW18/0VSVf9WVVj/Yl1f/1xVVP9dWlf/Xl1V/19a + T/9fWEz/YltP/2BbUf9fWVL/X1lU/2ZYUv9nWFL/YVlS/15ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlpT/1tbUf9dW1H/ZlhS/3BX + VP9NT0//O2tx/3S/zf9Z0+n/T9Xz/1LR9f9S0/T/R9Xq/0XX6f9E3e//ScbX31Ggr39OnKpdSMbX1UTd + 7/9F1+n/Rtfp/1DW8P9R0u//Vtn4/13F3f9efYD/VmFg/1RWVP9ZV1P/YFpV/2NbVP9hWVH/X1hS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVP/YVhT/2RYU/9nV1X/ZlZW/11Y + Vv9YWVb/V1pV/1hbU/9YW1P/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlV/1xYU/9VWFD/W11V/2BY + U/9iU1L/YVVX/11YXP9MTlX/PVNc/0Fuev9Ymar/esPX/33X7/9g2vH/R9Xr/0rT7v9V1PL/Xdn2/0/T + 8P9E0Oz/TNn1/0jY8v9D1e7/SdLx/1PS9v9T0/b/U9Hz/1PS8P9U1e7/V9nq/1vY5v9w3ej/aMXQ/1GU + o/9EaHn/Nk9d/0lVXP9ZWVj/XVdL/15dQ/9fYUb/WV9L/1VdT/9YXFH/XltR/19aUv9iWVP/ZFdV/2NX + Vv9dWFb/W1hX/1lYWP9YWFj/WVhY/1xYV/9eWFb/YVhV/2RYVP9lWFP/ZllR/2dZUf9mW1P/XldU/09V + Wv9Op7L/VtDo/1fT8/9Q0PL/U9Lz/1TU8P9U1O3/UdPu/03U8f9N0/L/VtLx/1zR8f9X0vD/TdXt/0zV + 7P9R0/H/VdH1/1fP7/9ayd7/atbq/1jU7P9L0e//VNj4/07S9P9N0vT/QtTv/znX7P9A2+//Stfs/07U + 6v9W1u7/XNXv/1jM6f9Y2fH/V9zu/2fT5P9vsMP/Tm+E/0tUWv9bVFP/XlpY/1FZVv9VW1j/YVhX/2dW + VP9iV1L/XFpT/11aU/9fWlL/YVlS/2BZU/9mWVH/aFlR/2BaUf9dWlP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZUv9cWlH/XltS/2RY + Uv9tVlX/Sk9S/ztxeP95ydj/Vdbs/0nV8v9O0/T/TdTy/0bX6f9F1+n/RN7w/0rG19NUnKldUJilMUjE + 1cVE3e7/Rdfp/0XX6f9N1e3/T9Pv/1PY9f9ayOD/Xo6W/1BjZP9SU1P/XVZU/2RaVf9lW1T/Y1lR/2BY + Uv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVlS/2RYUv9lWFP/Z1dV/2ZW + V/9VWVf/UFpX/1daVv9fWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZVf9ZWFL/S1pO/05f + U/9eWlf/aVVa/2RTX/9XVWX/Rldp/z5zh/9Kqb7/W9ju/1zf9v9O2vH/Rtbt/0TV7f9H0+7/XM/u/2XR + 8f9W2PT/QNjz/zrT7f881/D/ONjv/0vU8/9iz/n/Xc/3/0vQ8v9H1PL/T9vx/1ne6P9g19v/aba4/2aF + iv9eW2T/X0lT/2NQV/9lVFf/YlZS/1tZSv9UYUP/UmRF/1JgTf9RXFL/UlxS/1lbUv9bWlL/YVlT/2RY + VP9jWFT/YlhV/2JYVf9gWFX/XlhV/15YVf9cWVX/W1lV/1xZVf9fWVT/Y1hU/2dYUv9oWFH/ZVpU/1pa + WP9KX2T/S77N/0zZ8/9S0fP/VdX5/1DQ9P9S1O7/VNbs/1LW7f9P1O//T9Px/1PS8f9W0vH/U9Pw/03V + 7f9M1ez/UtLx/1bO9f9V0/X/Udz0/0jV7P9O0e7/VtLz/1TU8/9N0/H/Ttn3/0PT7P890eb/R9rx/0TY + 8P9F0+3/UdPw/2DT8/9lz/D/Ytbs/2fe6f9musD/W3d9/1VTVP9uVlL/dldR/15VTf9DWVD/S2Bb/2RV + Vf9xT1P/aFVW/1lcWf9WWVb/XllT/2NZUv9iWVL/ZVpR/2ZaUf9fW1H/XFpT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVL/XFpR/15b + U/9jWVP/aVRW/0tTWP9BeoP/e87f/1LY7/9E1/L/SdTy/0nU7v9F1+n/Rdfp/0Pb7/9Kw9LDV5ikMVCW + owlHvs+1Q9nr/0XY6f9F1+n/TNXt/0/U7/9S1/T/Xcvj/3Ghqf9SZmf/T1JR/11XVf9jWVX/ZFpT/2NY + Uf9gWFL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZUv9jWFL/ZVhT/2dX + Vf9mVlf/VllX/1FaV/9XWlb/X1lU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFpU/1Nc + Uv9PWk//XltX/2RYXP9aU13/U1xq/22GmP+FvdD/ftru/2PX7f9X0uj/Ss7m/0zZ8P9N3fX/SNPu/1fO + 7P9Zyen/VdTy/0na9/8+0Oz/Qtjw/z7Y7/9K0/H/XM73/1jO9f9O0vL/Ttf1/1HW7f9OyNP/RK+1/y11 + eP82WV7/TVRb/1hOWP9iWGD/XlRY/2BWU/9hXVD/WGBH/1tnTP9XYFD/U1xS/1VcU/9bW1L/XFpS/2FZ + U/9kWFT/Y1hU/2FYVP9hWFT/X1hU/15YVP9eWFT/XFlV/1xZVf9dWVX/YFlU/2JYVP9lWFL/ZlhS/2FY + Uv9bXVr/XHB1/1bG1v9R2/b/U9P0/1fX+/9OzvL/UNLs/1TW6/9T1u7/T9Tv/0/T8f9S0vH/VdLx/1LT + 8P9N1e3/TNXs/1LS8f9Wz/X/VNHz/07V7v9N1e3/Vtj0/1fT8v9My+n/UNPw/1LY9f9H1O7/QNTp/0fa + 8f9H1/H/SdXv/1DT8P9d1PP/aNf3/2fT6f9Tv8v/OYiO/zRUWP9RVVb/aVpW/2xVTv9dVU3/T11W/05b + Vv9iVFX/b1NW/2dXWP9ZWlf/V1hU/15ZUv9hWVL/YFlS/2FbUP9iW1D/W1xQ/1pbUv9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhS/1tZ + UP9eW1P/Y1lU/2hTVP9SWmD/TYeR/3zR4v9U2PD/Rdfz/0rU8f9J1O3/Rdfp/0XY6v9C1ej/SbrIs1eW + oQn///8BSLfHq0TU5v9F2ev/Rdfp/0vW7f9P1vD/T9by/1jO5/9ts8D/QGtx/0VSU/9fV1b/ZFdU/2VX + Uf9nWFH/YllT/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jWVL/Y1lS/2NZ + U/9kWFX/Y1dX/1VaV/9QW1f/WllW/2VXVf9jV1X/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/2Fa + VP9qXFP/bF1S/0ZRTP8nUFT/Mm16/1Ggtf9exuD/XtLy/1TS8/9L0vH/SNbx/0jW8v9D0ur/R9js/1Tg + 9f9T1u3/XNbx/1vQ8P9ZzvD/XtT0/1fW6P9S1uP/T9Xr/0/T9v9Q1PX/VNf2/1TZ9/9cxNz/YZah/05m + bP9dV1X/ZlNO/2FVUv9ZWlX/VVNS/2JdX/9kW17/YFRV/2RVVf9kVlb/Y1ZX/2FXV/9iV1f/YFdX/2FY + Vf9hWFP/YVpR/2FbUP9jW0//Y1tP/2NbT/9iW0//YltP/2FbUP9eWlL/W1tS/1tbU/9bWVX/WVlV/1pY + Vv9TVFP/VGJg/22Okf9Oyt//Q9v5/0rV9/9P0/n/TM70/1DT6/9T1uj/UtXr/1PU7v9U0/D/S9Tw/0bV + 8P9K1e//UdXt/1HV7P9R0vP/Us/4/1DR9/9I1Pf/Q9Ly/03Q7P9c0uz/Ytbt/1/S6P9dzeL/VtXp/1Hb + 8/9Q1fP/T8/1/1XU/P9T0/r/Ss/y/1DP7P+Zwdr/cnuK/0xYUP9aZE3/XF9L/1ZYRf9YWUn/Zl1U/3Fd + WP9oUlL/X1RY/15YXf9gV1z/X1VY/2BVV/9ZWFb/VltT/1dbUv9hW1D/YltQ/1tcUP9aW1L/YFlU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11Z + Uv9cWlH/X1xU/2JXU/9mT1X/VGBr/0uWov9p1eb/U9fy/0rU8v9K0+7/R9Xq/0XX6f9F2uz/RM/h/0uw + vqn///8B////AUO5yp9Dzd7/Rdrs/0XX6f9L1+3/T9fw/07V8f9Z0On/eL/N/0Ftc/9DUVL/XldV/2NW + U/9kVU//Z1hR/2NZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/ZFlS/2NZ + Uv9jWVP/ZVhV/2RXV/9UWlf/T1tX/1lZVv9mV1X/ZFdV/2BZVP9gWVP/YFlU/2FYVv9gWFX/X1lU/11a + U/9kW1H/clpN/2tNQP9VWFD/WYCC/3Cvu/90yuD/Y9Xx/1fV9/9N0fT/R9Ly/0XY9P9E1fL/QtTs/0TW + 6f9L1+z/Utfs/1nV7/9g0vH/Yc/w/2DP7v9a1uT/WNrh/1PX7P9L0fb/StDy/1DT8v9T2Pb/XsDY/2OH + lP9PUlr/aFFO/3VWT/9pWVL/WVxV/1hZVv9bVln/YFVb/2RVW/9nVVn/ZVNX/2VUWf9lVVn/ZFVZ/2BX + WP9fWFX/YFhT/2FaUP9iW0//ZVtN/2VbTf9kW03/Y1tN/2JbTf9hXFD/XVtT/1pbUv9aW1P/WllV/1dZ + Vv9XWFj/T1JQ/19nY/+Rrq7/UdDk/z3b+v9H1Pf/SMzz/0/R9/9Y2/H/Vtnp/1LT5v9V1O7/VtPw/0rU + 8P9C1fD/R9Xv/1DV7f9Q1uv/UdLz/1PQ+f9Oz/b/P87z/0fZ+v9O0+//Ws/n/2bX7P9k0eT/a9Tn/13W + 6v9M1e3/T9Hx/1LP+v9Qzvv/TNL8/0PV+v83xuP/ZIWg/19aav9QUkr/VV1B/15iSv9XXUf/WmFO/2Zd + Uv9wU1D/dFZW/19TWf9WU1r/X1dd/2VZXf9jVVr/WFhW/1NbU/9UW1L/YFpT/2BaU/9eWlP/XVpT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVP/XVtS/19cVP9iVlH/Zk1U/1tkcf9Vnqv/adjo/1Ta8/9I0/D/R9Hs/0fW6/9F1+n/Rdvt/0XH + 2P9Hr7+d////Af///wFAssGNQ8XV+UXb7f9F1+n/Sdfr/03V7v9N1PD/WdXu/3XN3f85c33/QFBU/19V + Vf9jV1X/Y1ZR/2ZYU/9iWVT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FZ + Uv9hWVL/YVlT/2FYVf9gWFb/WVlW/1VaVv9dWFb/Z1dV/2ZXVf9gWVT/XVhW/1tZU/9XXEz/W2BQ/11Z + U/9hVVr/V1BZ/0NPU/9SZ27/WZWb/2jBzP9y1en/Z9Xx/1jV8/9S0/T/UNL0/07T8/9N1PD/TtTx/03Y + 8f9I2O3/SNPp/1PS7f9Z0fD/VtDy/1DP9P9R0PP/VNbx/1TV7/9R0+7/TdPw/1DU8P9P0e7/U9Py/2HK + 4v9foKr/NFdb/1VWVP9oWVb/Y1hV/11ZV/9fWVr/WFVR/1pYUf9iWlf/Z1ZZ/2ZUWP9iVlb/XlhV/2JX + Vf9oV1b/aFdV/2VXVP9hWVP/XlpS/11bUP9cW1D/YVpP/2ZaT/9nW1D/YlhO/2JYT/9fXFL/WlxU/1hY + U/9aWFP/XlZU/0hTVv9GdH3/hMbT/1zU6v9M1/T/TNPz/0nN8P9P0/f/VNn2/1DW8P9L0uz/TNXv/0zU + 8P9K1PD/StXw/0/U7/9V1O7/VtPv/1HS9P9O0fj/TtD1/0nN7v9R1/b/Vtfz/1jT7f9Y0uv/UtHn/1za + 7/9U2O//SdLs/1DT8P9V0vT/W9Dy/23U9f9pw+D/QIqi/0lTZv9aUVv/X1xT/1tbRP9hX0r/Xl1O/19f + VP9hWlL/Y1RP/2paV/9fVlb/WlVW/19YWP9jW1r/YVdX/1xYVf9aWlP/WlpT/19ZVP9fWVT/X1lU/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XVlT/1taUv9dWlT/X1lW/19KU/9Xb3z/VbXC/2PW6P9U0/D/TdHy/0vT7/9G1uv/Rdfp/0Xb + 7f9HwdH5SKu5i////wH///8BQKWxc0O/zudF3O7/Rdfp/0fW6v9L0+z/TdPv/1bY8v9q1+j/M3+N/0BU + Wv9hVFX/Y1hY/2VZVf9lWFT/YVlU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVL/X1lS/15ZU/9cWVT/XFlU/15YVf9dWFX/YldV/2lWVf9pVlX/YVhU/1lXWv9WWlP/TWNC/1Bl + Rv9cWlL/ZU1g/1NMaf81ZXv/VJ67/1bR6P9M4PX/RdXy/0TS8/9J1fb/StP0/07S9P9T0/P/VtHt/1vV + 8P9S1vD/SNft/0vV7f9Z0/L/W8/y/0rO9P89z/j/Q9L6/07V//9Ozfv/Tc/x/1HY6v9X2e//UtLs/1bQ + 7/9o1+7/Yr7E/yVkZf9EWVj/WlhY/15VWP9iVlr/Y1Zb/1paT/9XX0r/XVxR/2ZVWP9nVFn/X1hU/1hb + UP9gWVH/cVZU/3RWVP9qVlX/YVdV/1pZVf9UW1L/UltS/15ZUP9rWVD/bFxU/2VVTP9oVUz/ZFxS/1te + Vf9YWFL/XVhR/2RTT/9FWmP/MYef/2XQ6/9l1O3/XNPt/1LT7v9N0/H/TdT2/0rS9f9I0PX/Q9T0/0HW + 8P8/1vD/SdXv/1HV7/9X0+//W9Lw/1zP8/9R0fX/SdH3/07R9f9a0u//W9Hv/1nU8f9U1fD/TNLt/0PU + 7v9D1+//SNjy/0zW8f9P0u7/VdTt/27Y8v97wNn/bIme/1RSY/9fSlT/aVNV/2xeUv9qYEr/ZlxH/2FZ + Uv9fWFX/XllU/15aVf9dWVT/X1pU/2BaVP9fWVP/XllT/19ZU/9gWVT/YFlU/2BZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/11ZVP9aWFT/WldT/1xaW/9aR1P/U3yK/1LO2v9d1Or/Vszt/1XQ9P9P1vP/Rdbq/0XX + 6f9E3O7/SL7M50yirHH///8B////AT+hq1NCvczPRdzv/0XX6f9G1+n/Tdbu/03T8P9U1e7/a9Xm/0KN + m/9JXmT/YFNU/2JXV/9lWVX/ZVhU/2FYVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lS/19ZUv9eWVP/XVlU/11ZVP9dWFX/XFhV/2FXVf9pVlX/aFZV/2FYVP9aV1n/WVxV/1Nm + Sf9MXkH/WlpT/19NXf9lZX7/eam8/3u/2f9k1ur/T9ns/0nS7f9K0/P/S9T0/0vS8/9O0fL/UtLz/1fU + 8P9X0+//S9Dq/0LQ5v9K1Oz/Xtn2/1rQ8f9Oz/X/RNL4/0PN9P9O0/v/T834/0/R8v9S2e3/U9Xs/1HQ + 6/9Y0/L/bNvx/2zFzP8+e3z/Sltb/1pWVf9hWFr/Ylda/2NXW/9bWlH/V15L/11bUf9oVln/Z1VZ/19Y + VP9ZW1H/YFlS/25WVP9wVlT/aVZV/2FXVf9bWVX/VltS/1RbUv9fWVD/a1lQ/2xdVP9nWE//aFdO/2Jb + Uf9bXlX/W1tV/19aVP9hUU3/T2Vt/0mcsv9q0On/YdPs/1jT7f9S0/D/TtPy/07U9v9K0PL/StHz/0jV + 9P9E1vD/Qtbw/0nV7/9Q1e//VdPv/1rS8P9b0PL/UdH1/0nR9/9P0vX/W9Xz/1vV8/9Rzer/Tc3o/1PY + 8v9N2vP/RdPr/0jV7/9P1/H/Tc7p/1nS7P9q0ev/Ro6n/ydMYf9PWWn/ZVZh/2ZUV/9kWE3/Zl5I/2Vc + SP9gWlL/X1lV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWlX/XVpV/1pXUv9ZVlb/W0lU/1uEkv9c1eH/YNfs/1nR8v9U0PT/TNTw/0XX + 6f9F1+n/RN3v/0i7yM1MnKRR////Af///wFJm6MtR7vJs0Te8f9F1+n/RNfo/03X7v9Q0+//UNHs/13T + 6f86pLb/R2l0/19QUv9fWVf/YFlU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1xZVP9cWVT/XFlU/1xZVP9cWVT/Y1dU/2VXVP9kV1T/ZVhU/2VYVP9gWVT/XE9T/11T + Uv9dXlD/W2NT/0BQUP9AYW//Vpyx/1/S6f9g1/D/Wdfu/0/U6v9K0+r/Sdnw/0jY8v9R0u//Ws7u/1jP + 8P9Q0e//VNXz/1TV8v9R0u7/UNLt/0vR6f9S2/D/VNXp/1rR5P9n3/T/XtHx/13N7/9c0vL/V9jy/1PR + 7f9S0O3/U9Ty/1/b8v9gztn/QJie/09eZv9cUFT/YFlZ/19ZWP9eWVX/XVtS/1tbTv9eWlH/ZVhZ/2VX + WP9aWlP/U11Q/1ZcUf9aWlL/XVlU/15YVv9fWFf/YVdX/2JXVv9iV1b/YVZT/2NWU/9lW1f/XlxT/1pa + UP9ZWVD/W1xT/1xdVP9fWlL/YU1H/0x2fP89u9L/WdTt/1TU7P9R1O7/VNPy/1fR9P9c0vX/Wczv/17O + 8P9d0vL/VNPt/1DV7f9M1uz/TNbs/03W7P9P1e3/UtPw/1PS8v9S0vL/UtPz/0/W9P9Gzuv/S9Pw/1DY + 9/9P1vX/VNTy/1nS8/9Vzuv/W9Xo/3be7P+Mzdz/XYON/0VZXv9RWlz/UldV/1FUUf9XWVT/YVxW/2dZ + VP9iVlH/X1hU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1pV/19aVv9bV1X/UVRV/01SXv9NkqH/Ud3q/1fX8f9b0vb/Ws/0/0/S + 7v9E2Oj/Rdfp/0Tf8f9KusexUZieLf///wH///8BS5SdCUm0wYlF2Ov/Rdfp/0TX6f9M1+3/T9Tv/1DS + 7f9a0uj/TLvP/1Bzf/9bTE3/X1lX/19YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9cWVT/XFlU/1xZVP9cWVT/W1lU/2RXVP9oV1T/ZVdU/2VYVP9kWFT/YFlU/15P + U/9dUFD/W1hK/2BlVv9JVlb/Y4mW/3jM4f9U2PD/VNju/1LU6v9O0un/Tdbr/0vb8P9I2fH/U9Lt/17O + 7f9c0PL/UdTy/03R7/9S0/D/V9Xy/1TU8v9L1e3/RNXp/1Xc7f9c1+f/RcLU/0e82/9byuz/X9T0/1XU + 8P9U0u7/VdTx/1LT8f9Y1u7/Y9Tf/163vf9bZ3D/XE1R/15XWP9dWFj/XFlU/15cU/9bW0//XVpR/2Za + Wv9mV1j/WFpT/09dUP9SXFH/U1xS/1dZVP9bWFb/X1hX/2NXV/9mVlf/ZlZX/2NVVf9iVVT/YldV/1pc + U/9XW1H/V1pQ/1pbUf9dXVP/XVZO/2dNRf9choz/TNTq/1fW7/9P1ez/TtTu/1LS8f9ZzvP/YNL2/17K + 7f9kzO//ZNLy/1nT7f9T1e3/Tdbs/0rW7P9L1uz/TNXt/0/T8P9T0vH/VNLx/1HS8P9G0e7/RtPt/03X + 9v9P2fr/S9P0/1HO7v9e0fX/W9b0/1XY6v9Zx9P/Uo2a/0VeZv9KUVP/VlhV/1RXUv9XYFj/U1tT/1lW + Uf9lV1b/ZVlX/2BZVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVX/XVlY/1BUVf9ZX23/WqOw/07h7f9S0+7/XNH1/1vQ + 9P9O0+7/RNjp/0XY6v9F0+b/TrC9h1WVmwn///8B////Af///wFKq7dtSc7f/0XX6f9E1+n/Stbr/1DW + 7/9U1fD/VtHp/1TP5P9TfYr/V0hL/11aWP9bWFL/XFlU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XFlU/1xZVP9cWVT/XVlT/15ZU/9kWFP/Z1hT/2RYU/9hWVP/YVlT/2BZ + VP9rWF7/ZlZZ/1ZUTv9NWVH/UH6A/3C6yP933fP/U9Lv/1PT7v9Q0+z/T9Pr/0zX7P9E2u7/QNnt/03T + 7P9a0e//WtTz/1PT8v9Oz+7/UdLv/1XU8f9U0+7/U9bo/13d6f9y1N//Za24/zOCjv84kan/YcPe/2fZ + 9f9S0O3/VdPw/1TW8/9P0vH/UtPt/13W6f9k0Nz/XHaD/1hOVv9ZVVT/XVlS/11ZUf9iXFP/YFtR/19Y + Uv9jWln/YldX/11aU/9aXFD/WltR/1paUv9bWVT/XFhW/11YV/9fV1f/YVZX/2FWV/9hWFb/YVhV/19W + U/9dWlP/XltU/1xaVP9ZWVP/V1tV/1JVTv9dWVP/Xpqg/1Lf9/9S1vD/U9Tv/1TT7/9U0O//WM7x/17U + 9f9Xze7/Wc7v/1vT8f9V1O3/UtXt/0/W7P9N1uv/Ttbr/0/V7f9Q0/D/VdLw/1fS7/9U0vH/StPz/0nT + 8/9L0/T/TNX1/0zT8f9NzOj/XtXv/3rY7v91usv/S4OM/zpWW/9PWFr/WFxY/1RZUP9cYVf/WF5U/1NY + Uf9bVlP/ZldX/2ZXV/9hWFX/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFL/XlhU/19aWv9KUlX/XHN+/1+0wv9O3u3/T9Ht/1bQ + 8/9U0vP/TNXt/0TY6f9F2Or/R8fY/1CnsWv///8B////Af///wH///8BTKeyZUvB0ftF2Or/RNjp/0fV + 6f9R1+//WNjz/0/R6v9N3PL/VYiX/1tLUP9ZWln/VVhS/1ZaU/9cWlT/YFlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/11YVf9dWFX/XVlU/15aUv9hWVL/ZVlR/2dZUf9jWVH/W1pS/1xa + Uv9fWVT/d15m/3BaYv9XU1n/RVlZ/1axtv9b3Ov/U9Xv/1LT9v9T1Pb/Udb0/1HV8P9K1uz/Odnq/zba + 6v9I1uv/VtPv/1TV8v9T0vH/VdPz/1PU8f9S0+7/U9Pp/1bT3f9m1df/dKen/2dpav9GVVf/NGl0/2a4 + yf9y3fb/VNDu/1TT8v9P1PL/TNPx/03T8f9P1/L/U9ru/1+Jnf9bVmP/VVNQ/11bS/9eWUv/ZVxS/2Za + Vf9hV1T/XVlV/1xYVv9jWVL/Z1pP/2VaUP9gWVL/XVlV/1tZVf9ZWVb/WVhY/1tXWP9bVlj/XlpZ/19b + Vv9dVlP/YFhV/2VbWP9iWln/WVhY/09aV/9FVVH/V3Fp/1mwtv9H3/r/Stbx/1XT8/9a0fH/Wc/v/1jP + 7/9d1PT/UtLv/03R7v9Q1O7/UdXs/1HV7P9R1uv/Udbq/1HW6v9R1ez/UNTv/1jT7v9d0u3/WdPy/07W + +/9J0ff/R9Dy/0nS8f9M0+7/T9Pp/1fW4v+At8T/iXqJ/19MUP9jTkn/bFlO/2RfUP9ZYk7/X2ZT/1FV + SP9TV0//YVpa/2pWXP9jUlb/YFdU/19aVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlhS/19YVP9gWlr/QVBU/1WGkP9bw9P/S9nu/0/T + 8f9P0PP/TtPw/0nW6/9E2On/Rdjq/0q+zPtRpK1h////Af///wH///8B////AUqotFNJtsTfRdnr/0XY + 6v9F1ej/UNjv/1nZ9P9Q0er/Ut/2/2WXpf9oWF3/WFhX/1ZYUv9XWlP/XFpU/2BZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWFX/XVhV/11ZVP9eWlL/YVlS/2VZUf9nWVH/Y1lR/1xa + Uv9dWlL/X1lU/29XX/9oU1r/W1hc/2p8fP91ys7/ZuDu/1PQ6/9T1Pb/VNX2/1LW9P9R1e//StXr/zvZ + 6/862+z/TNnu/1bU7/9T0vD/V9b1/1bV9P9S0/D/VNXv/1nX7f9V0Nz/IpGW/yVeYP9IU1T/RFte/x1X + Y/9Vqrv/cd31/1jU8v9T0vH/TNHv/03U8v9Q1vT/UNbw/1TX6v93obT/amZy/1NRTv9dW0z/XllM/2Rc + Uv9mW1X/YVdU/1xXVP9cWFX/YllS/2VaT/9jWlD/X1lS/11ZVf9bWVX/WllW/1pYWP9cV1j/XFZY/15a + Wf9eWlb/XFVS/19XVP9kWlf/YlpY/1hYV/9PWVb/R1VR/2+Fff9swMf/Rdv1/0rV8P9U0/L/WdHx/1nP + 7/9Zz/D/XNPz/1PS8P9P0u//UNPu/1HV7P9R1ez/Udbr/1HW6v9R1ur/UdXs/1DU7/9X0+7/XNPu/1bR + 8f9Hz/P/T9f8/0/Y+v9I0fD/StDr/1zd8/9GwtD/O3eF/0lGVf9eVVr/Z1lV/2laUf9hXVD/V19N/1JY + R/9cYFT/VltS/1pUU/9oVVr/ZlVZ/2BYVf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZU/9gWFT/X1hY/0NRVf9mlJ7/ac/e/0vZ + 7v9T1/X/UtL1/03T7/9H1ur/RNjq/0XY6/9LtcLdTqayUf///wH///8B////Af///wFQoKs7TbG9u0Xa + 6/9F2Or/RNbo/07X7v9V2PL/StPt/0fd+P9xqbn/eGtv/1JXVP9TWVP/VFxU/1pbVf9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hV/19YVf9gWFT/YllS/2NZUv9iW1D/Y1tQ/19b + UP9YXFD/WVxQ/15aU/9mTVr/WExY/0Zkbf9wrbn/WNLg/0nd8f9Q1vP/Vszw/1bN8f9V0fH/U9Pw/1TS + 7/9X1O7/W9bw/1HZ8v9H1vD/RdLs/0vU7P9T0ej/atnv/3zU5/93sL//YnaD/09ZX/9UVFH/YllR/19b + VP8+UlD/Y5ab/3LQ4f9a2PT/UdPx/0vQ7v9M0/P/S9X2/0fT8v9H0vD/bL3V/1h8iv9KUlD/aFxK/2RY + SP9kWVL/ZFlX/15ZVf9YV1L/W1pV/1xbVP9bWlP/XllT/2lXVP9oV1T/aFdT/2lXU/9lWFP/VltS/1Vb + Uv9WXVP/VFxR/1RYT/9lVlL/alZW/2VVWP9bVFn/UVZc/0BWWv9pmZz/as/d/0TX8/9L1fH/WtHw/1/P + 8P9b0PD/VNLw/07U8P9B1vD/PNjw/0HX8P9L1u7/UtTu/1jT7v9b0+7/WNPu/1PU7v9Q1O//TtXv/03V + 8P9N0/H/TtDy/1bQ9P9X0u3/YNnq/3bU4f+Krrr/YHl+/0laV/9SVk//XVpT/2NaUf9nWlD/ZVpQ/2FX + T/9eU03/aVxX/2pdWP9fVFH/V1JO/2VeW/9gW1b/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9hWVT/ZVhV/2BYWP86W13/Y6au/27Z + 6P9O1+7/UtX2/0/T9v9I1O//RNfo/0XY6v9F2uz/SrG8uUygqjn///8B////Af///wH///8BVZihE0+r + t4FC1+v/RNjq/0TX6P9L1uv/UdXu/0nW7v892/X/grjG/5J8fv9SVFH/U1xV/1FcVf9ZWlX/YVlU/19Z + VP9fWVT/X1lU/15ZVP9eWVT/XllU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19YVf9fWFX/YlhU/2RZUv9kWVL/YVtQ/2Jb + UP9dW1D/VlxP/1dcT/9eWlP/a1Ff/11RXv9PcXz/gcfW/1TZ6v872e7/TdTz/17O8v9ezvP/V9Hy/1LV + 8v9X0/L/XtDu/2PR7v9R2PL/Qdfx/z/U7f9E2vD/Utzx/1bK3/9Mn7H/R217/11NXP9oTVb/a1hT/2pc + UP9mWk//TFRN/1aChP9eu8v/V9bz/1HU8v9P0/L/TNT0/0jT9f9D0fP/RNP1/3zX8P9hi5r/SU9P/25e + S/9nWEb/Y1dR/2NZWP9fWlb/VVZQ/1xcVv9aW1X/VlpU/11aVP9vVlT/b1VU/21WU/9vVlL/alhS/1Nd + Uf9QXFH/UVxQ/1BdUf9VXlL/aVlV/2tVVv9lU1f/XVRa/1ZaYf9DV1z/eKqw/3Xe7/9D1fH/TNbz/1vO + 7/9hze//X9Ly/1XV8f9H0+3/Otjw/zTb8f872fD/SNfv/1HU7/9b0u//YNLv/1zS8P9U1O//UdPu/0zV + 7/9I1vH/SdPx/03P8/9X0Pf/XNv3/1bW4/9Vrrb/am96/1pSVf9UWE//WWJU/1taT/9hWU7/Z1tQ/2lb + Uf9mV1H/ZlZT/2hVU/9sV1X/ZllW/1taVP9cWlT/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/2BZVP9gWVT/X1lU/19Z + VP9fWVT/XllU/15ZVP9fWVT/X1lU/19ZVP9gWVT/YFlU/2BZVP9fWVT/YllU/2dYVf9kWVn/RGVl/3G1 + vP924/D/Tdbs/0vQ8P9L0vT/R9bu/0TY6P9E1+n/QtTm/0qqtIFNmaET////Af///wH///8B////Af// + /wFRpbBNQ8zh/UTW6P9E2On/Rtbp/0rU7f9M1fX/SdT3/4DK4P97kZf/P1FQ/1hcU/9aXVP/XFpU/15Z + Vf9eWVX/X1hV/2BYVf9iWFX/Y1hV/2NYVf9hWVT/YFlU/19ZVP9eWlP/XlpT/19aU/9gWlP/YFlT/2BZ + VP9gWFT/XllV/1xZVf9dWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWFX/X1hV/2BYVP9iWVP/YllT/2Ba + Uf9hWlH/XlpR/1pbUf9aW1H/XlpT/2hSYf9dXWv/T5Cc/3XO4P9Z2u//Qtbu/0fT8P9T1PT/T9Hx/1vU + 9f9g1PX/XNDx/13Q7/9dz+//T9Lt/0XW7v9S2vD/a9Pp/2W90f9Jj6H/MGFv/zNNVv9XU1r/YVha/2Zb + VP9qWk//ZVhO/1ZZUv9LZmb/U6Ov/17b9P9U1PL/T9Xy/03U9f9K0vb/SND1/0rU9/974vr/XKGv/0Re + Xf9sW0v/ZlpL/2NYU/9hV1j/XVlV/1hZUv9bW1T/XVtW/1tZVv9aVlP/YVZT/2JZVf9pWlT/bFhS/2ZY + UP9aW07/W1xP/1ddTv9RXU7/V15S/25bV/9xVlj/aFFa/1xRXP9RV2X/QGpz/3C6xP9v4/b/Q9Xw/0rW + 8v9Wz+//Xc/v/1rT8f9S1vL/SdLu/0LW8P8/2PL/RNbw/1DU8P9X1PH/W9Px/1vR7/9W0e7/T9Xw/0/X + 8v9J1O7/RtLt/07U8P9a1e7/bdfx/3TL4P9Yoq//Nm51/0dRV/9QVFP/V1tT/1xcUf9fWlD/XVlP/2Fb + Uv9lWlT/ZlhU/2dYVv9jVFH/ZlRS/2ZbV/9iXlj/WlVQ/11YU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVX/YFhV/2BYVf9fWVT/XlpT/11aU/9cWlP/XVpT/15a + U/9fWVP/YFlT/2JZVP9hWFX/YFhV/2BYVf9eWVX/XFlV/11ZVf9dWVT/XFlU/19ZVf9jVlT/XlhZ/0F/ + gf9pxM//cN70/1DP7f9T0PT/StPx/0XW6/9F2Or/RdXn/0TH1/1Lo6xL////Af///wH///8B////Af// + /wH///8BUKSwM0e9z+lF1OX/Rdnq/0PX6P9C1e//TtH//17K//9s2fz/S6u2/yhWWP9eWk3/Z11N/19b + U/9YWFb/W1hY/2BWWP9jVlj/aFZY/2xVV/9rVVf/ZlhU/2JYVP9fWVP/W1tR/1xbUf9eW1D/YltQ/2Na + Uf9jWVP/Y1dV/1tYV/9VWVf/WllW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWVT/YFlU/19ZVP9bTF3/UGh3/z23xf9R0er/UtTy/0zU8v9C1/L/Odfw/zLT + 6v9f0/X/dc72/2fK8P9hzvP/XND1/1LO7P9L1ur/YNXl/4yswP9ydYj/W09a/1xNUP9jXVn/XFxW/1Za + UP9iWVD/b1hR/2pWTv9nWlP/U01H/1iOkf9m4PL/V9Tw/03T7/9N0/T/T9L5/07Q+f9Nz/j/W9z2/0S9 + yf9Bfn3/aFNI/2dbUP9jWVf/XFVX/1lXVP9dXlX/WFpQ/15ZV/9iVln/WFRV/0tXVP9MXVX/YF5V/2tb + Uv9lWkz/ZlpJ/2tdS/9gX0z/UV9K/1ZaS/9yV1L/elRa/3FPX/9dSl//SVFr/0OSpf9Ryt3/Udzz/0PV + 8P9F1fD/UtPv/1bT7/9R0+//S9Tw/03U8P9N1PD/S9Tw/1HR8P9dzvD/YtT2/1zS9P9Uz+//TtDv/0fX + 8v9I2fT/RdXv/0XS7f9U1u3/a9rj/3nKzP+Ckpr/b1tm/09KTf9VWVT/VWBU/1pYTf9jVEr/ZlxT/1hb + Uv9VWlT/XFdW/2VWV/9kVlf/ZFdV/2VXVf9iWFT/X1lR/19ZUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhW/2FXWP9hV1b/X1lU/11bUf9YXFD/VlxQ/1hc + UP9cXFD/XlpS/2NYUv9oWFP/Z1dW/2NXV/9hV1f/W1hX/1ZZV/9XWVf/V1lV/1ZZVf9aWlf/XVNT/1VX + Wf8zpqn/TNLl/17S9f9byPP/Ztb+/0rV7/9C1uj/Rdnr/0bT5P9LuMfnTKKrMf///wH///8B////Af// + /wH///8B////AUasvStGscPJRdLj+UXa6/9E2Oj/Rdbv/0zQ//9Yx/7/b9f4/2G3wv9Dbm7/XFhM/2Na + TP9fXFP/WVhW/1tYWP9gVlj/Y1ZY/2dWWP9sVVf/a1VX/2VYVP9iWFT/X1lT/1tbUf9cW1H/XltQ/2Jb + UP9jWlH/Y1lT/2NXVf9bWFf/VllX/1pZVv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YVBi/1xxgP9SxNL/WdXt/1LU8f9I0/H/Qdbx/zzX + 8P882/P/Wc3v/3DJ8P9rzfT/X8zw/17S9v9e3fr/S9ru/zm0xf9EbYL/SVRo/1FOWv9bU1j/XlpY/1ZW + Uf9UWE7/ZFxS/3NdVf9tWlL/Y1hR/1BOSP9Jg4f/UMvf/1PR7f9P1PD/S9Hy/0zQ9/9P0vr/TM/4/1jW + 8P9azdn/XpeV/2hTR/9nWk7/YlhV/15YWf9dW1f/WltS/1tdU/9YU1D/X1VX/2NfYP9SXVr/R1ZP/1lW + Tv9rXFP/a19S/2hdTP9nW0r/X2BN/1ViT/9WW0z/bVJM/3ZPVP9xTl3/Y0xh/1hbdP9uuMn/XtHj/0jR + 6P9E1vL/RdXw/1LT7/9Y0+//UtPv/0zU8P9N1PD/TNTw/0rV8P9P0e7/Wczt/2TX+P9Yzu//Vc7u/1TV + 9P9G1/H/Ocvm/0rb9f9T4/7/T9Xt/1PJ0/82jJL/QFhi/1dMWP9aXF//VFtX/09bUf9eXVL/bF5T/2Ra + UP9YW1L/VVpU/11XVv9lVlf/ZVZX/2VXVf9mV1X/YlhU/19ZUv9fWVL/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVv9hV1j/YVdW/19ZVP9dW1H/WVxQ/1dc + UP9ZXFD/XFxQ/15aUv9jWFL/Z1hT/2ZXVv9jV1f/YVdX/1tYV/9XWVf/WFlX/1hZVf9YWVX/WVhV/15T + U/9eX2D/Tbu9/1XX6f9e0vT/Xsz3/1/P+P9K1e3/Q9fp/0Xa7P9G0eL5Sq26x0qotSv///8B////Af// + /wH///8B////Af///wFIpLEdSKe0l0XS4/NF2u3/RNfo/0bW7P9M0Pb/UMj0/2LW+P9Xx9n/P4uQ/1dT + T/9iVE//YFtV/1pZVf9cWVb/XldW/19XVv9gV1b/YldW/2JXVv9fWVT/XllU/15ZU/9cWlL/XVpS/15a + Uf9hWlH/Y1lS/2NYVP9jWFT/XlhW/1pYVv9dWFX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1pXZP9SfYz/Q9fs/0nY8f9S0vH/VdDw/1HS + 8P9N1e//S9fx/0bT7/9G0e//StXz/0/W8f9Y1fH/fNnz/324zv9YeYz/SFRg/1VRWP9lWFf/bVxW/2dc + VP9VWE3/U1tO/1xeVP9hXFf/XlhS/2FYUf9gUkn/V3Fx/1atuv9m1Oj/VNXv/03R8v9R0ff/VdL6/1PP + 9/9O0e3/UOHs/1Oys/9SVlX/WVtZ/1pVVf9cV1b/XltW/1pZUf9cW1L/WldU/1tYWP9hWlv/aVhX/2hW + Vv9oWVX/ZVlS/1xXTf9WV0r/W1xP/19dUf9iWlP/YlpZ/1hXWf82SVD/LVto/0CKm/9Sscf/T8fg/1XZ + 9P9V2/X/UdPv/1HU7/9P1O//TtTv/07U7/9M1e//TNXv/1PT7/9W0vH/VtDz/1jP8f9YzvH/TM7t/0zX + 8/9T3vb/Udfr/1bO5f9s1u3/etHo/3Wtvf9mf3r/Tl5W/0ZTTf9PW1j/WWJh/11VV/9eU1X/X1xa/1pd + Wv9TVFD/YVdT/2NZU/9hWlL/XVpS/1taUv9aWlL/WFpU/15YVv9jVVf/Y1ZX/2BYVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFX/YlhW/2BYVf9eWVT/XVpT/1tb + Uv9bW1H/W1tR/1xbUf9eWVL/YlhT/2VYVP9kWFX/YlhW/2FYVv9fWFb/XVhW/11YVv9dWVT/X1lU/1hY + VP9QVln/T2t2/1fM0/9X2+//WNLz/1rS+P9UzvH/SdXr/0XY6f9E3O7/RtLj80qlsJVKoq4d////Af// + /wH///8B////Af///wH///8BSZiiCUmcp0dIy9zlRtns/0TY6f9G1+r/S9Lx/0/L8v9a0/X/WNLm/0+n + rP9dVlL/ZFNQ/2BaV/9aWVX/W1lV/11YVf9dWFX/XlhV/19YVf9fWFX/XVlU/11ZVP9dWVP/XVpS/11a + Uv9eWVL/YVlS/2NZU/9jWFT/Y1hU/19YVf9cWFX/XlhV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9bXmn/UoaV/z7j+v9B2fL/UtLx/1vP + 8f9Z0vH/VtXv/03S6/8/1/H/Ntnz/zjX8v9F2vP/Udfw/27A2v9thZ//VVBk/1VTXv9jV1n/bFxU/29b + UP9pWk//VVxO/1NeT/9WXVP/WFlV/1lXUv9hWFH/bVlP/1NhYP9Bjpr/a9jo/1TV7v9P0/P/VdL4/1fP + +P9Wz/f/TdLv/0jn8f9SwML/Xmhq/1teX/9WU1T/WFRT/11bVf9cWlL/W1lQ/1pYVv9XWVr/XldX/3FS + U/9zUVL/a1RR/2JYUf9cWlH/Vl1Q/1hfUf9gWEz/alBM/2pRVf9VU1f/VHV9/1Sfqv9Sw9H/V93x/1Db + 9/9L1vT/UNPv/1fT7/9W0+//TdXv/0rV7/9L1e//TNXv/0zV7/9W0+//W9Dy/1rQ9P9Z0PT/Wc7y/0vT + 8v9D2PP/Rtnw/07W6v9r4Pb/Z8jg/1WZsf9TbXv/YlRI/2VWSf9UXlH/RmBX/05cWf9lVVr/aFJZ/1lV + V/9LWFf/UlhY/2dWVf9sV1L/Y1tP/1hdT/9WXU//U1xR/1BcVP9aWFf/ZlNa/2RVWv9gWFX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhV/2JYVf9gWFX/XVlU/11Z + VP9cWlP/XFpS/1xaUv9cWlL/XllS/2JYU/9lWFT/Y1hU/2FYVf9hWFX/YFhV/19YVf9fWFX/X1lU/2BZ + VP9YVlL/VV5h/1+Ekf9a0Nn/Vtvv/1fS9P9W0vf/TdDu/0fV6v9F2er/RNfp/0bG1+NNnadFTZmjCf// + /wH///8B////Af///wH///8B////Af///wFIlqENTLzKzUjT5f9E2uv/Rtfq/0vV7v9U0fT/VtHy/1bX + 7P9bvMf/XWNl/19WVf9fWVX/XllU/15ZVP9dWVT/XFlU/1xZVP9cWVX/XFlV/1tZVP9cWVT/XVlU/15Z + U/9eWVP/X1lT/2FZU/9iWVP/YlhU/2JYVP9gWFX/XlhV/19YVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YmZw/1qLmv9F4fv/Q9Xx/1PT + 8f9a0fD/V9Px/1PW8/9K0Oz/Q9Tw/0PY8v9H2PD/T9fs/1zR5v9VnLD/Rl9y/0RLV/9UWV7/X1pZ/2ZY + Uf9pVk3/ZlhO/1tdUf9XXFH/VllR/1dYU/9cWVX/X1dR/2tdVf9LV1X/OnV//3XN3v9Y0+z/UNT0/1PS + 9v9SzfT/U8/1/1HW8v9J4O3/VsbL/2uJjv9PYGT/VFFU/1xUU/9fW1X/X1xV/1xZUf9aV1P/WVhW/11X + VP9nVFP/Z1NS/2RSUf9kVlX/Y1xa/1xeWv9QV1P/R1JO/0xaWv9YcXX/VoOH/3m6w/992OX/ZNbn/1fX + 7v9X4Pz/RtLv/0jM6f9Z0/D/V9Lv/0/V7/9L1e//TNXv/0zV7/9M1e//U9Pw/1bS8v9V0fL/VdHy/1nV + 9v9T1/T/TNPr/1PR5f9l0+X/a8XX/0+Vp/80YnP/O01X/11WS/9nXlL/Wl1T/0tXUf9PVVL/Y1pd/2NX + W/9WUlP/U1RT/19dXf9hWlT/YllS/19bUP9cXFD/XFtQ/1xaUf9bWlT/X1dX/2NVWP9jVlj/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVf9hWFX/YFhV/15Z + VP9eWVT/XVlT/11ZU/9dWVP/XVpT/15ZU/9hWFP/YlhU/2FYVP9gWFX/YVhV/2FYVf9hWFX/YVhV/2FZ + U/9jWVL/UlNR/1Npcf9zpbX/Vc/b/1HZ7v9V0/T/UNHy/0vS7f9G1ur/RNrs/0XP4f9ItMPLTpmiC/// + /wH///8B////Af///wH///8B////Af///wH///8BSJiiCU+tt6tJzNz7Q9vt/0bX6f9M1uv/WNfy/0/T + 7/9F2PP/Tcnj/1h2iP9WWWD/XVRS/2ZZUf9jWVL/XlpS/1tbUv9XW1P/UltU/1NbVP9VWlX/WFlV/11Y + Vf9iWFX/YVhV/2FYVP9hWFT/YFhU/19ZVP9fWVT/YlhU/2RYVP9iWFT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2dvdv9dkJ7/R9v6/0fS + 8P9V1PD/WtPu/1XT8P9N1ff/TdP2/0fP7f9P1ev/Xdvs/2TU3v9swMn/VHyC/0hRVP9RWVb/TllQ/1da + UP9jWU//aVhP/2dYT/9kW1L/XlhS/1dWUv9WWFb/W1xa/1pWUv9gW1X/VFNP/1dlaf+IscH/YtLo/1HV + 8v9Q0PD/T9Dx/0/Q8f9T2PL/S9nq/1TQ3f9grr3/LWBq/09RVf9nV1b/Y1tX/2FbVv9fWVX/XllR/19Y + T/9eWVH/W1tX/1tdW/9jWF7/Z1Je/2FPXf9XUGD/RVBh/y1ebP8ohY//PLrB/0zg5/9N4O3/Sdjp/0jU + 6f9I0e3/Qc/t/0PU9P9S1vX/YNDw/17R8P9Q1O//TNXv/03V7/9M1e//TNXv/07T8f9P0/H/TdPx/0zU + 7/9N1vL/V9jv/2PR4/9zyNX/grrE/1t6gf9NUFX/W05P/2tcV/9sXlL/aVtN/2JUS/9gUk7/X1dV/1lc + XP9VW1v/XVZX/2lUVf9nWFj/VF1S/1BdUf9XXFH/YltQ/2daUP9rWFH/bVZU/2VXVv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BYVP9hWFT/YVhU/19ZVP9fWVT/XVlU/1tZVP9cWVT/X1lU/2JYVP9lV1T/ZldU/2ZX + VP9mWFL/bVhP/0lRU/8/dYb/cMTa/03S5f9J1/D/TNTy/0jS7v9I1ev/Rdfp/0Tb7f9Gytr7Sqi0q06b + pAf///8B////Af///wH///8B////Af///wH///8B////AUqirQdMoauBR8bW50Td7/9F1+n/SNbp/1bX + 8f9Q0+7/R9nz/1bQ6f93kKD/Xl1j/1pRTv9lWlH/Y1lS/15aUv9bW1L/V1tT/1NbVP9UW1T/VVpV/1hZ + Vf9dWFX/YlhV/2FYVf9hWFT/YVhU/2BYVP9fWVT/X1lU/2JYVP9kWFT/YlhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9ocXj/XpGg/0Xb + +v9H0/H/VdTw/1zT7/9T0e//S9Lz/07U9v9K0vD/TdTr/1rb6/9k2eT/Rp+q/zpkbf9GUFX/Ulta/09c + VP9aX1b/aV9V/25bUv9pWVD/ZFtS/19bVP9aWlb/VllX/1ZZV/9aV1L/X1hT/1RUUP9PYmX/ZJSk/1/Q + 5v9T1/T/T8/v/1TU9/9R0fP/T9Xv/0nZ6f9h3en/fMTS/zNgaf9QUVb/aVpZ/2NbV/9cV1L/YFpV/1tW + Tv9iXFP/Z2Nc/1lYVP9TUlH/Zldc/2tRXf9dRFL/W0xb/3Bzgv9+qLT/dMzU/13V2v9N3OD/S9vn/07a + 6/9Q2u7/Ttfz/0LQ7/9E1vX/U9f2/2DQ7/9e0fD/UNTv/0zV7/9N1e//S9Xv/0zV7/9O0/H/UNPy/03S + 7/9Hz+v/TNTx/1fc8v9h1ef/S6a1/x9faf81WmP/Tlde/2BWWv9lV1T/YlRG/2hYSv9pXFL/aFtX/2BY + Vv9UV1j/VVpb/2JbXP9rVVj/YVJT/1RcUf9RXlH/WFxR/2JbUP9mWlD/alhR/2tWVP9nV1X/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWFT/YVhU/2FYVP9fWVT/X1lU/11ZVP9bWVT/XFlU/19ZVP9iWFT/ZVdU/2ZX + VP9mV1T/ZlhS/2tWTv9NVFX/TX+P/4TS6P9X2uz/SNXu/0rS7/9K1O//Rtfq/0XX6f9E3fD/R8fW50ui + rH9LpK8F////Af///wH///8B////Af///wH///8B////Af///wFNnqQDTpidNUnAzcdG2+3/Rdfp/0XX + 6f9N1u7/StPu/0bW8/9R0+//bq/I/0Zqe/9PUVL/aVhQ/2VYUv9iWVL/X1pS/1haUv9TXFP/VFxT/1Va + VP9YWVb/XldW/2RXVv9jV1b/Y1dW/2FXVv9fWFX/XVlU/11ZVP9iWFP/ZVhT/2NYU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/ZGtv/2KN + mv9d2f3/VNHz/1LU7v9S1uz/UNPv/0zN9/9Mzvf/UtX2/1bW7P9l1OD/fMzT/0R5ev9AWFT/VFZQ/15W + UP9kWVH/aVpS/2FaUf9WWE//VlVQ/11YVP9kWln/Z1ta/2VZV/9hVlT/V1lV/1RaVP9ZWFT/ZFtf/21x + fv9gxtz/UNn1/0zS7/9Q2PT/Ttby/1DT6/9Y1er/a97x/2zQ4v8leYr/T1ld/25XVP9kWFb/XFRQ/2BY + Vf9jXlP/YFxL/1tXSf9bW1P/U1dX/zdPUv8mVV7/NHaC/0mhrv9bus3/aMvj/23Y8P9n2/T/VtLq/17Z + 8/9U1vH/R9Hu/0/X9v9O0PH/T9Dy/1HT8v9S0vD/UtLx/07U8P9M1PD/TtTw/1HU8P9R1PD/TtTw/0zU + 8f9O1fD/U9bw/1nU7v9qy+H/V5ms/z5gb/9MUVn/WldY/2JbUf9nXEv/aFtP/2NaWv9iWVr/XVZV/1tU + Uf9dVVH/YFtU/2BbVP9hWlL/ZFlS/2JaU/9bW1P/W1pT/11aU/9gWlP/YVlT/2JZU/9jWFT/YVhU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15a + U/9eWlP/XlpT/15aU/9dWFT/YVdW/2RXVv9jV1b/YFhV/15YVf9aWVT/V1pU/1laVP9eWlP/YllT/2dX + U/9pV1T/aVdU/2VYU/9iVE3/TGRq/0qZsP9r2PD/Udv0/0TU7/9H0u7/Stfu/0XX6f9F2Or/RNfq/0m7 + ysVQmaAzT56nA////wH///8B////Af///wH///8B////Af///wH///8B////AVGUmAVFtL+fQdHk/0bZ + 6/9F1+n/R9br/0nV8P9F1fP/TdPw/3bL6v9Eeo//TFJV/21XTv9nWFL/ZFlR/2FZUv9ZWlL/Ul1S/1Nc + Uf9UWVL/WFlW/15XWP9lVlf/ZFZX/2RXV/9hV1f/XlhW/1xZVP9cWVT/YlhT/2VYUv9jWFP/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1df + Yf9ghZT/btv//1zP9f9O0er/Ttjp/1HY8v9Ozfz/TMz6/1TT+P9e1+z/aM3X/26ws/8/Y13/RlZK/19c + Uf9pVU7/cVhR/3FVTv9cWE//TVpT/1JZVv9aWFf/Y1ZY/2pXV/9tV1b/aVZV/1VaVv9QXVf/XFpX/2tR + Vv9sVWD/VbnP/0zc9/9J1fD/RtTs/0rX8P9U1u3/YdPp/2rX7P9i0Ob/PJ+1/1pnav9tUUv/ZVZU/2FX + VP9gV1X/aWBR/2ddRf9dUD3/XFNI/2BdW/9Nc3T/Qpeb/0q+x/9H2uT/TN3y/1TV8v9e0fP/ZNT4/1/O + 8/9hz/P/U9Dy/0TS8/9L1fb/U87x/1nP8/9U0vP/StPx/0vT8f9M1PD/S9Tx/0/U8P9W0/D/VdPw/07U + 8P9I1PD/Ttbx/1ra8v9h1+3/V6nA/zxmfP9BRVX/c1Zd/3BVUv9wXkn/b2FC/2hbSP9fWGL/W1Vg/1hU + Wf9aV1T/X1hS/2RaT/9kWk7/YVpO/2JdUf9iXVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWlP/XVpS/11aUv9dWlL/XFhU/2JXV/9lVlf/ZFZX/2FYVf9eWFX/V1lU/1VaVP9XWlT/XVpS/2JZ + Uv9pV1P/bFdU/2tXVP9mWFT/XE9G/118gv9hvdf/WNbw/0fV8v9D1PH/R9Tv/0nX7P9F1+n/Rdrs/0TL + 3v9KrbqfU5abBf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQaiydz/F + 1fVG2+3/Rdfp/0bW6v9L1/D/SNXz/1DU8f981/T/VJGo/1FfZf9mVE3/ZFZS/2VZU/9jWVP/WlhR/1Vb + Uf9XXVP/V1xU/1hZVv9eV1b/ZlZX/2VWV/9kV1f/YVdX/11YVv9aWVX/WllU/2JYU/9lWFL/Y1hT/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9RVlv/Wn6M/2jb+P9Y0fH/TtLt/07X7v9R1vT/U9D6/1DP9/9R0vL/Wdzu/13I0v9WiI//QVxb/01Y + UP9hXlT/aFhQ/2xaUP9sV03/XVtP/1NfVf9ZX1f/XlpX/2BUVP9iU1P/Z1ZV/2ZXVv9XW1b/UltV/1ta + V/9kUVf/XU5c/0yhtv9T0uz/Utbx/0fO6v9N1fD/VtXv/1/S7P9g1Or/WNPm/0/D1P9fdHr/ZUxN/2FV + U/9jW1j/YFdU/1RWTP9QXlD/U2dd/1FsaP9jg4f/ebO7/4Ha5v9x3+//U9bn/1LV7v9W1PH/V9Lw/1bR + 7/9a0/H/Vcrp/1PP7f9T2Pb/UNPy/07O7/9U0/X/U9b1/03U8f9O0/H/TtTv/07V7v9P1O//UdPx/1DS + 8P9O0+//TdTv/1LU7/9Z1u//Ytfv/0OJm/83VmP/TVVf/2RWWf9hUk//aV1P/2xgTP9jWEr/WlNY/1pT + Wf9eWVr/Y15b/2NcVv9fV07/YFhP/2NbUv9jXFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlpT/11aUv9dWlL/XVpS/1xYVf9iV1f/ZVZX/2RWV/9hWFX/XlhV/1laVf9VW1T/VlpT/11a + Uv9iWVL/ZldT/2lWVP9oV1X/YVhU/1VRSf9qk5z/dtj0/1bS7f9E0e3/RdTx/0jX8P9G1un/Rdfp/0Xc + 7v9FwND1SqSud////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUWi + qk9FusfLRdzu/0XX6f9F1+n/Sdbt/0zW8f9R1/P/WNHu/1Sz1v9SeIj/Vk9N/11RUf9pWlj/aVhW/19U + T/9bVk//YV9X/19gV/9YWlT/XlZT/2pWVv9oVVj/ZFZY/2FWWP9bWFj/VVlX/1VaVP9gWlL/ZVpQ/2Ja + Uv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/VVdi/1V6g/9W0tn/Vtbp/1HX+f9I0fn/Ss3y/1nQ8v9X0Oz/Utjs/0rm8P9Qw8n/ZmJz/19V + Xf9fWFf/YVpR/2FYSv9kXEv/ZlxL/1teS/9RX0z/VV5O/2BaUf9iWFP/YFdW/19XV/9fV1f/WVxX/1BW + Tv9ZWFf/Zlpl/11SZv9TfI//ZbrP/2fX8/9V0fL/V9Ly/1fM7f9h0PP/V9r2/zbf6/8q3eD/T4CQ/15M + XP9YU1X/XFdU/2NYVP81VFb/Gmly/yqVof9AvMn/UtHj/1jW8v9W0/X/UdHz/1LQ8/9R0PT/RdTy/zzY + 7/8/2O3/Sdfq/1LW6v9d1Or/Z9Lr/2PR7f9K1PH/QtXx/0nW8v9P1vP/UNTy/1PW7P9V1+j/T9Xs/0bS + 9P9G0fL/UNLt/1nT7P9c0+3/XdLr/2PP7f9heX7/XkxD/11XUv9bXVf/V1pT/1hXVP9eWFj/YVlY/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWlT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15aU/9dWlL/XVpS/1xZVP9bWFf/Y1dX/2dWV/9mVlf/Y1dV/2BXVf9bXVb/U11T/1NZ + T/9fWlP/ZFtT/2FWUf9hU1P/Y1dZ/1RWVf9OZGP/XKi4/2He//9M0e//RtPw/0bV8f9H1+3/Rtfo/0XX + 6f9E3O//SbnFyU2hqU3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFDmaAPRLO9kUXW5/9F1+n/Rdfp/0fW6/9I0+3/TdPv/13V8f9uy+7/YoOT/1dLSP9lWFj/aVpW/2ta + V/9kWVT/XVlR/1taUv9XWE//V1lT/2FYVv9pVVX/aFVY/2RWWP9hVlj/W1hY/1VZV/9VWlT/YFpS/2Va + UP9iWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/1FUX/9Jcnr/PcDH/0/T5v9M0/b/SND6/07R9v9a0fP/WdLt/1HY7P9F4uz/R7vC/1xb + a/9bUlv/XFdW/2BZUf9jW0z/ZF1K/2ZdSv9aX0r/UGBL/1RfTf9fWlD/YVhT/2BXVv9gVlj/XlZY/1ZZ + Vv9UW1X/WFdY/11QXf9ZS2H/OWN3/1myyP9s3vz/WNL0/1jR8f9d0PH/YM7x/03Q7P8t2+X/L+bn/2uX + pf9vVGL/VkhJ/2hVUf91XVj/d4yO/2uzu/9fxM//Xtfi/17a7P9Y1vH/UdDw/07O8P9R0PP/UdH1/0bV + 8/872O//P9jt/0rX6v9T1ur/XtTq/2fS6v9j0e3/SdTx/0LV8f9I1fH/TtXy/0/T8f9S1er/Vdbn/0/V + 7f9H1Pb/R9P1/1LU7/9c1O3/YNbv/1rS6/9GttX/V3B1/2JPRv9cWFL/V1pU/1ZZU/9YWFX/XldY/2BY + WP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWlP/XVpS/11aUv9cWVT/W1hX/2NXV/9nVlf/ZlZX/2NXVf9hWFX/V1tT/1Fc + Uf9UW1H/XVhR/2ZdVf9iVlH/Y1RT/2lbXP9TUlH/b4F+/3K6yv9Z1vf/TtPx/0XU8P9G1vD/Rtfs/0XY + 6f9F1+n/Q8/i/0qtuI9OmJ8P////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUaosWFKx9P5Rdfp/0XY6v9G1+r/RdTq/0fS7f9X1vP/btn9/16esf9JYGH/Vlhc/2FV + WP9kVVb/ZVhU/2VbVP9hWFL/VlZN/1daUf9hWlX/aFVV/2dWV/9lVlj/YlZY/1xXWP9VWVf/VlpU/15a + Uv9iWlD/YFpS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9YUl3/UWJt/06cqf9y0eX/Vdjx/0XV8/9P1Pb/WtH0/1rS9P9Y1/D/Sdvm/0av + t/9eUWL/YFJZ/19UU/9iVlH/Z1pT/2VZUf9nWFL/X1lT/1laU/9cWlT/ZFhT/2dXU/9gWVT/WVtT/1tb + Uf9eXUv/Y2NN/2BeTv9aV1L/WVpg/z1XYP9nnq7/cNbp/0bV6f9O1PD/UtLy/1jQ9P9S0vL/SNfu/03f + 8f9Yqb//QG2B/ylnc/9ElZn/XbG0/2jN1P9k2+b/XNvq/1bc7v9P2O7/VNDt/1rL7/9ZzPP/Wc/1/1fR + 9/9M1PT/Qtbw/0XX7v9J1uz/TNbs/1jU7P9k0e3/YNDv/03T8v9H1PL/TNTy/1DU8f9Q0/H/UdXs/1LV + 6f9Q1e7/T9T1/1DV9P9S1fH/UdXt/17Z8P9r0Oj/QpGq/1JiaP9iVU//X1lU/1tXUP9dWVL/XVlU/19Y + Vv9gWFb/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lT/15ZUv9eWVL/W1pU/1pYV/9iV1f/ZlZX/2VWVv9jWFT/Y1hU/1ha + Uv9RXFH/V1xS/19YUf9lW1b/X1ZU/1pVV/9VWl//N1ZX/2yip/9v0OT/TtLz/1HW9P9L1PH/SNXt/0bX + 6v9F2Or/Rdfp/0i+z/lMo6xf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFJoKc9S7S+z0XZ6/9F2Ov/Rtfo/0XW6v9H1e7/UNTy/2HV+/9pvNL/WoSH/0hQ + Vv9gVFv/YFFW/2JVUv9qW1T/aFpU/1xbUf9YW1D/X1lS/2dWVf9mVlf/ZVZY/2NWWP9dV1j/VVlX/1Za + VP9dWlL/X1pQ/19aUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YVRf/1RWYv9Keov/gczh/1vd8f9B2PD/TNLy/1rP8/9b0Pf/X9jz/0vW + 4v9ApKz/Ykxe/2dSWv9lU1P/ZlRS/2lYV/9mVlX/Z1VX/2NVWf9gVln/YlZZ/2lVVf9sV1P/YFpS/1Re + UP9XXkz/YmBD/2plRP9jYUX/VltJ/1FdWP9CUlT/ZIiU/2fJ1v9A3+r/RNXt/0rS8f9S0vX/VdHz/1TQ + 8P9a1fP/XMTf/0unv/87q7z/Ptbd/0bm7P9G4+v/Rd7q/0fc7P9F1+z/QNXs/1TP7v9lzPP/ZM34/2DO + +P9Zzvf/TtHz/0bV8P9I1u//R9bt/0fW7f9U1O3/YtHu/17Q8P9Q0/P/S9P0/0/T8v9R0/H/UdPx/1HV + 7f9R1ev/UdXu/1LT8v9T1PL/UdXx/0rV7P9b2vD/cMvj/zdxh/9NWF3/ZFpV/2JbVf9eVk//YllR/2FZ + Vf9fWFX/XldU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9fWVL/XllS/1paVP9ZWFf/YVdX/2VWV/9kVlb/Y1hU/2RX + VP9bW1P/Ul5S/1ZcUf9hWVL/YVdT/19YV/9WVlr/RVZd/zhpbP9uucT/a931/0nU9P9R1fP/TtTw/0jV + 6/9F1+j/Rdjr/0XZ6/9Nsb/PT56oO////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BSp6jHUmqsoNG1Ob9Rdfq/0XX6P9G2Ov/Stjw/07T8P9ZzfH/edDl/3Cj + p/9AUVj/XVhg/2FTWf9jVFT/aVlT/2hZU/9gYFX/V1xR/1xYT/9mWFX/ZlZX/2VWWP9jVlj/XVdY/1VZ + V/9WWlT/XVpS/2BaUP9fWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2NYYf9RUlz/OmRz/3e1yv9f2Ov/Rtnu/0jP7v9V0PT/VM/1/1za + 9P9J09//PZ2k/19PXf9kVVr/Y1hU/2JXUf9kWVT/ZldU/2dWVv9hVlj/XVdY/19XWP9lVlX/Z1dT/2Ba + Uv9YXVH/Wl1N/2BeQ/9kYEP/YF9G/1ZZS/9NU1D/RVFU/1lxf/9htcT/Uebz/0bT6/9M0/H/UNLz/07O + 7/9My+r/VdLv/3PY9f+A2PL/c9ru/13h7f9N1+H/SdXi/0rW5v9K1un/SNXs/0XV7v9X0vL/ZdH4/2LR + +f9b0Pf/Us7z/0zQ8v9K1fD/S9Xv/0rW7f9L1u3/VtTt/2LR7v9e0PD/TtPz/0nT9P9N0/L/UdLw/1HT + 8f9R1e7/UdXs/1HU7f9R0u//UtPw/1DU8P9K1u7/Wtfu/2y+1f8vY3j/S1RZ/2RbV/9jWlX/YVhQ/2JZ + UP9jWlb/X1hW/11WU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVP/YFlS/15ZUv9ZWlT/WFhX/2BXV/9lVlf/ZFZW/2NY + VP9kV1T/W1xT/1JeUf9VW0//YlpT/19VUf9gWVr/VFZc/0FXYP9TjZH/d8fS/2vd9P9N1fX/T9Lw/0vU + 7f9G1ur/RNfp/0XX6f9F0uP7T6m1gVKeqRv///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFKp7AtScPU60bU5v9E2er/Rdjq/0jY7v9N1fH/WNLy/2Xa + 8P9Tt8H/L2x1/0ZZZf9dVmH/a1hc/2xVU/9mU07/W19T/1ReUP9YWk7/YVpS/2NYVP9kVlb/ZVZX/2BX + Vv9XWVX/WFlV/11aUv9gWlD/X1pS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9mWFz/XlFY/1xUYv+Hh5v/ccfN/1Xe5P9K1u3/RdP5/0LQ + 9v9R2/T/Us/Z/02Ym/9YV1b/WVlS/1heUP9VXk7/WFxO/2RYUv9mV1T/XldX/1lXWv9aV1n/WlhX/1lZ + Vf9eWlL/ZFpP/2NcTP9jX0f/Yl5D/2NgSv9kYFX/Y1xZ/2ZVW/90UWP/c42g/17d6f9T1+v/Stnw/0XY + 9f9L1Pf/WND3/1vN9f9by/H/XMrw/1rL8P9Wze3/XNPz/1vT9f9b0vX/WdP2/1LU9/9Q0/b/V9L3/17R + +P9Z0vf/StX0/0XU8/9Q0vH/WtLw/1jS8P9V0+//VNPv/1nT7/9f0e//XNDx/0jT9P9C1fX/StLy/1PQ + 7/9U0/L/UtXz/0/U8/9S0u//WdHr/1rT7f9P1e//Rdr1/1zP5/97p7f/UF1r/1JTWv9eV1j/ZVdS/2pc + UP9oWUz/ZltU/2FYV/9eVVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YllT/2VZUv9gWVP/VVpV/1VaVf9dWVX/Y1dV/2RX + VP9kWFL/ZVlR/1xbTv9VXEz/WVxN/2FaUf9iVlb/WlVc/0RTX/80ZXT/ULfC/1zX5f9Z2fD/U9Px/1HR + 7v9L1Or/Rtfp/0Ta7P9F0uT/SLrK6U+lsSv///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BQam4H0GvwL9D0OL5RNvt/0XX6f9G1+z/S9Tv/1zV + 9f9m2/H/ZMjR/1eRmv9BU1//WFBa/2xZXP9sVlP/ZlJN/1ldUf9UXlD/WVxQ/2FZUv9jWFT/ZFZW/2VW + V/9gV1b/V1lV/1hZVf9dWlL/YFpQ/19aUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1VZ/19SWv9aUmH/YF90/1SutP9S4ef/UeD4/0XT + +f9Az/b/Tdny/07N1/9LmJr/VldV/1ZXT/9YX1H/V2BQ/1dbTf9lWFL/Z1dU/11XV/9XV1r/WFdZ/1hZ + V/9WWlX/XltR/2ZaTv9lXEz/ZmNH/2NhQv9iX0X/ZV1P/2dZVf9nTVL/bz1Q/2h1iv9X0t7/Vtns/0jX + 7v8/0/D/SNL1/1rS+f9ezvj/Xczz/2PQ9/9i0Pf/V8rr/1/S8/9a0PP/V8/y/1fR9P9Q0vX/TtH0/1XO + 9P9bzfb/V8/2/0nV9f9I1/b/UdTz/1nR8P9Y0vD/V9Pv/1bT7/9b0+//YNHv/13Q8f9H0/T/QNX1/0nS + 8v9U0O//VNPy/1LV8/9O1PL/U9Pv/1vS7f9c0+7/T9bw/0fe+f9Rxt//XYuc/01baf9SVFv/W1RV/2NV + UP9rXFD/aVpN/2VaU/9hWFf/X1ZT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JZU/9lWVL/YFlT/1VaVf9VWlX/XVlV/2NX + Vf9kV1T/ZFhS/2VaUf9aWkz/VV1N/1tfUP9fWE//Zlpa/1VQV/9DUl7/S3yL/2nP2/9i3Ov/VdPr/1HR + 7/9R1PD/Sdbq/0XX6f9E3O7/RdDi+Uiqub9JprQd////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUegrxFHn61rS8nb50ja7f9E1+n/Rdfq/0jU + 7P9U1vH/W9rw/1/Y5f9dusT/Pl9t/09NWf9mVFn/bFZU/2hWUP9WXE//Ul9P/1ddUP9eWlH/YllT/2VX + Vf9mV1b/YlhV/1lZVf9aWVX/X1pS/2FaUP9gWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2NVV/9kVlr/ZlVe/1pKWf9ViY7/Y8vL/2Hg + 7v9G1fj/QtH1/07X7v9dztn/YJ2j/1tUV/9aVE//W19R/1lhT/9XXEz/XltQ/2JZUv9iWFX/Y1ZY/2RV + WP9kVVj/ZVVX/19XVv9ZWVX/WlpU/2VaVv9pVlX/WFRT/z9RUv8zTlT/OFFd/0VhdP9NnK7/S9ro/0jW + 6v9G1ev/SdPu/1DT8v9X0/T/V9Dy/1bP8P9d1vb/Wdn4/0XR7P9H1O7/UdDz/1fN9f9Vz/b/TtH2/03S + 9f9U0PP/W8/y/1fQ8P9L1e//Sdbw/1XT7/9g0e3/XNLu/07V7f9K1e7/UdTv/1jT7/9W0vH/TNLz/0nT + 9P9M0vL/UNHv/1LU8v9R1PX/UNL2/1TT8f9Z1uv/XNbt/1XW7/9Q3fj/U7nN/1hvdv9VWGH/WlRZ/19U + V/9jVVL/ZltO/2dcTv9iWFH/YFdU/2FYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9jWFT/ZlhT/2BZVP9UWlX/VFpV/1ta + Vf9hWFX/ZFdU/2RZUf9lW1D/W1pL/1deTf9dX1H/X1hP/2daWf9STVb/Sl9u/2Cgsf9c2ej/UNvt/0zS + 6/9R0u//UdXu/0fX6f9E2Or/Rdfq/0jE1udOnq1pTp+tD////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BUJimG1C3ysNJ0eT/RNrr/0XX + 6f9H1ur/S9Xs/1DY7f9V4O7/WdLb/1R+jv9XVmX/YU5W/2tUVf9rWlP/Vl5Q/09fTf9TXU7/W1xQ/2FZ + Uf9lV1T/Z1dV/2RYVf9cWVX/XVlV/2FaUv9iWlD/YFpS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9mV1j/aFdZ/21TWP9qSlT/UGVo/1ej + nv9c1Nv/Qtj5/0PW+P9P1uz/btPf/3unrv9hT1X/YVNO/19fT/9bYUz/WF1K/1teTP9hW07/aVhS/29U + Vf9wU1f/cFJY/3RRWf9iVFn/T1hY/1RVV/9oTlz/a0Na/1pOYf9EZnL/PnSC/06Kmv9Tp7r/Ssvb/0Dg + 7/8/1ez/SNfs/1PW7/9W0/D/VNHu/1TT7/9T0+//UtTw/0jW8P822O7/Ntru/0vS9v9Zzfr/U874/07Q + +P9N0fb/VtLz/17R8f9Y0+7/TNXs/0bV7P9W1Oz/ZtPu/2HV7v9F2Oz/QNju/0nV7/9R1O//UNPx/1DS + 8/9Q0vP/T9Ly/07S8P9Q1PL/T9L2/1DP+P9T0fH/V9np/1vY7P9X1Ov/Utn0/1Ktv/9XWlr/WlNY/2FW + Wf9lV1v/ZFZW/2FYSv9nXk//YVdP/15VUv9jWlX/YFlU/2JYVP9gWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1hU/2VYVP9gWVT/VFpV/1Ra + Vf9ZWlX/YFhV/2RXVP9kWVH/ZVtO/15dTf9ZXk3/W11N/2BZUP9jVVX/Vk1Y/2N3iP98xtj/Rtnq/zza + 7P9K1u//VNbw/03U6/9G1+n/RNvt/0XO4f9KscLBU5qoG1OZpwP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFLobONR8XY8UTc + 7f9F1+n/R9fq/0vU7P9O1e3/U9rt/17U4v90p7f/X2p3/1tOU/9qVFH/a1tT/1leT/9SXU3/Vl1P/1xa + Uv9hWVP/ZVdU/2dXVf9jWFX/W1lV/1xZVf9gWlL/YlpQ/2BaUv9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Zlla/2VWV/9mUFX/bFJb/zxT + Vf8zenb/SbO8/03T8/9O2Pf/Utbr/23a5P96tLv/WFhf/1hVVP9WW1H/U1xO/1JaTf9VXE//WVpS/15Y + VP9iVVf/Y1RZ/2NTWv9lUVn/WFRZ/0paXP9QXWH/Y19s/2FWaf9kcID/c6Gt/4C+zf+R0+P/hNfr/1zW + 6P8+2On/Rtnv/03Y7/9T1vD/U9Hv/0/Q7P9W1fL/Vtbz/1DQ7f9Ezun/P9ju/0Ld8v9Q1Pb/V834/1HN + 9f9Jz/T/SdHy/1PU8f9c0+//WNTu/1DY7f9N2O3/W9Xs/2bP6f9dzef/Stbr/0XW7v9M1e//UtTv/1HT + 8f9P0vL/T9Ly/0/T8v9P1PH/T9Ty/07Q9f9Qzvf/VNLx/1bY6P9Z1+v/VdPp/07Q6v9KoLD/TFJS/1dR + Vf9iV1r/aFle/2VXV/9fV0n/aGBR/2BXT/9dVFH/YVpW/2ZXVf9nV1X/YlhU/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RYVP9oWFT/YVlU/1Ja + Vv9SWlb/WVpV/2BYVP9kV1T/ZFlR/2RaT/9iX1H/Wl5O/1dYSv9iXFP/XFFR/1hbZP9zlqf/jNrv/0rX + 6v9B1+3/Ttjy/1LY8P9H1en/Rdfp/0Tc7v9Gw9XxS5+wi////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTpilSUu+ + zstH2+3/Rdfp/0XX6f9J1e7/StD2/0fN+v9KzPT/atTl/zeAhf89UEr/bVpO/2tfU/9dVEr/YldP/2NZ + V/9eVln/X1ZZ/2NWWP9mVlj/YFdX/1daVP9YWlT/XVlU/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/X1dV/2BY + Vf9YWVX/RlVO/1N4e/99wdb/ddPk/1/X4/9b4Oj/VsjS/zV9jP8rW27/ME1e/zhPXf84VF//NFZd/zZZ + YP8yWWD/L1he/zBYYP8zV2P/MFFf/ytWYv8saXb/NYOU/0afu/9Nt9L/VMzk/1jX7/9S1e3/TdLr/0zT + 7f9M1vD/Stfx/0jT7v9T0u//WdLw/1LT8P9I1u//Sdbv/07V7v9R1O3/U9Tt/1XU7P9V1uz/U8/v/1PO + 8/9N0vL/PtXr/0Lc7v9I3+r/Tdrj/1HU3/9a2uT/aN3o/3LU5P9nutD/UqrE/1nO5v9W0+//U9Tw/1LW + 8f9R1O//UdLt/1PT7v9R1vD/S9fx/0nT8P9PzPL/WdH8/1jW9v9O1uX/U9ro/2Dc7f9bvNL/UYKP/1RX + T/9gWFP/Z1ZX/2pUWf9lV1b/XFxO/11cTf9dWlL/YFlV/19ZVP9fWVT/YFlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9rV1P/dVVR/2ZX + Vf9HWVz/R1lc/1ZaVP9hW07/YVpR/2FYVP9gV1T/Zl1X/2RaU/9bU0z/XV1X/05WUf9GgIn/T7zT/13U + 8/9T1Pb/StDz/0fR7v9H1ur/Rdfp/0XY6v9F1uj/SrnHy1CYo0f///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVGX + pQ1IsL+RQ87g/0XZ6/9F1+n/R9br/0nR9v9Hzv//TND7/2rZ6/9Un6H/V2dd/2xVRv9oW07/ZlpP/2VX + T/9iVVT/X1Zb/15WWv9jVln/ZlZY/19XV/9VWlT/V1pU/11ZVP9hWVT/YFlU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/X1lU/2FY + Vf9gWFX/WllV/0tXUP84W17/NHiO/16/z/9e3Of/U+Dn/1zW3/94wtL/gq7D/4acrv+EkJ//d4qV/2SB + h/9ig4n/XYGH/1d9g/9egon/cJCb/4GdrP+Dqrb/eLbB/26/0f9iw+H/WdDs/1XZ8v9S2/L/StXt/0LS + 7P9E0+3/SNbw/0vX8v9I1O//UtLv/1jR8P9R1PD/RNfv/0XX7/9M1e3/UtTt/1bU7f9Y1Ov/WNTq/1nS + 8/9X0Pj/TdHz/z3b8P832+3/N9nj/0Xg5/9V6PH/T93l/zm7w/8iipn/KX2T/0qhuv9ZzOX/W9bx/1bU + 8P9S1e//VNXw/1TV8P9T0+7/TtPt/0nV7/9L1fL/Uc70/1bM+P9T0/P/Ttfm/0/Y5v9j4vL/SqzC/zlp + d/9XWFD/YlhT/2dWV/9qVFn/ZVdW/11cTv9cXEz/XlpT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/b1dT/3pU + UP9oV1X/Q1ld/0JZX/9VWlT/YVtN/2FaUf9hWFT/YFhV/2FXUv9jWFD/YllR/1pZUv9MUUr/XZqh/2ja + 9P9W0vL/UdH1/07S9/9K1fL/Rtfq/0XX6f9F2uz/RcfZ/0uquI9QmaEN////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BQZ+uVUG7zOFG3e//Rdfp/0XX6P9K1PH/T9D7/1LR+f9f1uv/XMrP/1OIhf9TUEn/XVpS/15b + Uv9gWFH/YFdU/2BXWP9hV1f/ZVdX/2ZXV/9jV1b/XllT/11aU/9bWlP/WlpT/1xaVP9gWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WlpU/1la + VP9WWlT/VlpU/2BYVP9jWVT/TlNT/zZRXP9NgIr/a7zG/3Hc5v9o3On/bNns/3nX8v9+0e7/dsbi/2y8 + 1f9ut87/b7rQ/2m6zf9iu8r/ZL/O/23J2P931OT/f9nq/33Z6/9z2O//aNXz/17U8v9S0+//SdPt/0nT + 7f9O0u//UNLw/0/T7/9P0/D/TdLv/1TR7/9Z0PD/V9Hw/1LS7/9T0/D/T9Tw/07U7/9P1O//UNTv/1DU + 7/9R1fD/T9Xv/0/X7P9Y3+7/Y93q/3DZ4f94zdT/cLS//1WRnf9CdIP/Gk9i/ydmff9nuND/YtHr/1nX + 8v9M0+3/RtLs/03X8f9X2PL/V9Tu/03S7P9G1e//TNn1/1TR9v9Uy/T/U9Dw/1TZ6v9O1uT/duDx/1GY + qf8yU1n/XFpR/2JZUv9mV1X/aVVX/2NYVf9YW1D/WVtQ/11aU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JZ + VP9lWFP/X1lV/1JaV/9UWVj/W1pU/2FaUf9jWVP/Y1hT/2NYU/9jWFP/Y1hU/1xXVf9KWFj/UnN2/2C5 + wf9e4vP/UNLu/1HT9v9Q0vX/StXu/0XY6f9F1+n/Rdvt/0m4yd9Nn61V////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AT2XpiFBrLyRRtXn/0XX6f9E2Oj/Sdbs/1HQ9P9UzPX/VNbt/1Po7v9Pqqv/T11d/1RZ + Vv9TWFL/XFpU/2FaVv9gWFX/ZFdV/2ZXVf9mV1X/ZldU/2ZYUv9jWVL/WFtS/1JbUv9YWlP/YFlU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/1da + VP9UW1T/TFxU/0tcVP9nWFP/eFVR/3JVUf9jU1P/SlBV/1iAif9nuMP/XNLk/0DW7v9B1Pj/RdT//0LT + //9G0fz/X9T+/2HU+/9a2Pf/Ut71/03g9/9F3/L/Pd3t/0jW6/9X1Oz/WNXx/1rV9f9Y0vL/S9Du/0PS + 7/9J1fP/WNT0/1rS8/9W0PD/U9Dw/1TR8f9Z0PD/XM/w/17P8P9ez/D/YM/x/1HT8f9K1PH/StTx/0jU + 8f9I1PL/Rdfs/0Lc5/9M3+b/ZNvi/3TL0v+Atrr/fpKX/29mcv9dSFj/Y0db/0dFXP9SepL/i9Ts/2rV + 7/9U1fD/RNPt/z7U7v9F2PH/Vtjx/1jU7f9M0+v/RNfw/0rZ9v9V0/b/Vs70/1bS8v9X2e7/T9Xj/3rR + 4v9YhZL/OEtJ/19bUP9iWlH/ZVhU/2hWVv9iWFT/VFtS/1VbUv9bWlP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9WWlX/UVtV/1daVP9gWlH/ZFlR/2BZU/9gWVX/ZFhU/2VYUv9lWFH/ZlpV/2JXVv9VU1f/RWFn/2qk + sv9c1Nz/Qtzl/0zW7f9R0/b/TtDw/0fU6f9E2On/Rdfp/0PP4f9LrbyRT5yrIf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BQKa1Q0O/0OtF1uj/Rdjq/0fW6v9L0e//Us30/1TV6/9X5e3/asTG/22B + gv9MVVP/VllU/19bVf9hWlb/XlhV/2JXVf9mV1X/ZldV/2VXVP9jWFL/YllS/1lbUv9VW1L/WVpT/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9YWlT/VVtU/05cVP9NXFT/ZlhT/3NVUf9tVlP/YFdY/0tWW/8sVF3/LXaC/0iwwf9U2O//VNb3/0zP + 9v9K0fj/Vdb+/2TT+f9gzvL/WM/r/1PV6/9R2e//Stjs/0PW5/9N0uf/W9Pr/1zW8P9W0O//Us3t/0vP + 7f9F1PD/S9f0/1bV9P9Y0vL/U9Dw/1DR7/9T0/L/V9Lx/1vQ8f9c0PH/XtDx/17Q8f9R0/H/S9Tx/0vU + 8f9L1PH/StTx/0/W7f9N1eT/Ss3X/067xP9Dl57/Nm1y/zdSV/9IS1X/VU9d/1tOX/9LWW7/XZOp/4nY + 8f9j0uv/UtLt/0zX8/9J2vX/SNbx/1XV7/9X0uv/TtPr/0XX8P9H1vH/VNL1/1jQ9v9X0/P/V9jt/1TX + 5v9gt8f/SHeD/z5RUP9gW1D/YlpR/2VYVP9nVlb/YlhU/1VbUv9WW1L/XFpT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/WFpV/1RaVf9YWlT/XlpR/2FZUf9fWVP/YFlU/2RYVP9kWFL/ZFhS/2BWUf9cUlH/WVhd/1Z1 + fP+Cvsv/aN3m/0Ta5f9Q2fH/S8/w/0rS7v9H1+r/RNnq/0XV5/9EuMnpS6W0Qf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUierilIqrqrR9Xm/UXZ6/9E1+j/SNft/03X8/9J1O//RNTr/1nZ + 6v9Vsb3/JFpk/1pYYf9kVlj/W1hR/1ZcUf9XW1H/ZlhS/2xWUv9mWFL/XVpS/15aUv9dW1H/XFtR/11a + Uv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlhV/1pZVf9SW1T/UltU/2VYU/9vVlL/alhS/2ZZVP9jWVP/YlNU/2dQXf9uan7/baG0/33L + 4v9a2O3/PtTr/0TR7/9J0vD/S9Lw/1LR8P9X0PD/U9Hw/0jS7v9H1O//UNXz/1TT8/9Q0fH/UNLv/1HU + 8P9M1fD/Rdfw/0bW8P9N0/D/UdLv/0zT8P9G1/H/Sdjy/0jX8v9L1PL/VtPz/2PQ9P9j0PT/VtHz/0/S + 8/9Q0vP/UtHz/1DT9f9+yeX/jKi5/2l+hv9SYWn/U1ld/1lXVf9bV1P/XldW/19bXf9ZUVv/OHB6/zer + tv9d0+j/U8/q/1LP8P9X1ff/WNb4/1PO8P9gz+7/atHw/1rV8P9E1u7/RdPs/1HS8P9b0fL/W9Hx/17U + 7/9r1+7/XZyl/1NnaP9ZVVP/ZldT/2ZZUf9jW1D/YFtQ/11aUv9bV1f/W1dX/15YVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlU/1VZV/9PWVn/VVpU/2JdSv9kXUr/ZVlR/2ZWVv9kWFT/XlpS/1tbUf9bWlf/WFBa/1Bc + cf9LmbT/WMfg/1Pe7v9H4Oj/Rtnn/0nV7v9H1uv/Rdjp/0XY6v9F0eL9Tai3qU+erCn///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFKna4JSaS0QUTH1udE1uf/RNjq/0bY6/9J2O7/RNLu/z7Q + 6v9X4PL/Zs3a/0uBjP9bVF//YU9R/1xaUv9UXVH/VVxR/2dYUv9vVVL/Z1hS/1xaUv9dWlL/XFtR/1xb + Uf9dWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19YVf9aWVX/UltU/1JbVP9mWFP/cFdS/2xXUv9oWFL/ZlZO/3FVV/96Tl3/aE5m/ztl + ev86iKH/P8vf/z/o//882Pf/P9Pz/0bV8/9U1PX/XNH1/1bR8v9J0vD/SNTx/07U8/9S0/T/UNHy/0/V + 8P9R1/L/S9fw/0HX7/9B1e3/StPu/1DU8f9M1/L/Qtjx/0LW8P9D1/L/SNXz/1bT9P9m0PX/Zc/0/1fQ + 9P9Q0fT/UtH0/1TQ9P9W2Pz/W5e2/2FleP9cWmT/T0xV/1dPU/9lWlj/aF1b/19XVf9VUlL/TkhQ/0uI + kP9Rzdf/WtXp/1fV8f9Sz/D/VdDz/1nS9f9YzPD/aM3u/3PS8v9g1fL/Q9bu/0XU7f9S1PH/XNHz/1zQ + 8P9e0+//btjv/0qGjv9HWFf/XldU/2ZXVP9lWVH/Y1tQ/2BcT/9cWlL/XFdY/1xXWP9eWFX/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZVP9UWVf/S1lb/1RaVP9jXUj/ZV5I/2dZUf9pVVf/ZVhU/11aUv9aXFD/WllU/2JV + X/9qcYn/bb/e/1nR7P9L2+r/Q93k/z/V4P9H2Oz/Rtfq/0Xa6/9E0+X/Q73M5U6isEFQnawJ////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUeirgtErbinRs7f90bb7f9F1+n/Rtfq/0fS + 7f9L1PL/U9jx/1zU5/9bucj/TmJw/1VRVv9aXFX/V11R/1lcUf9iWVL/ZlhS/2FZUv9bWlL/W1pS/2Fa + Uf9kWlD/YllS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9hWFX/X1hV/1pZVP9YWlT/YlhT/2ZYU/9iWVP/X1lS/1xXT/9mWlb/aVRW/1pN + VP9EV1z/Nlhg/0OGjP9etcD/bszd/2vc7P9f3u//Vtnu/1LU7f9R0u//T9Xx/07U8v9N0fP/UND0/1DS + 9P9Q0u7/U9Pu/1HU7/9L0+7/TNPu/1LT7/9X1vP/Vdfz/03U8P9K0Oz/SdXv/0rV8P9R1PH/WdLx/1jR + 8f9R0/D/TdTw/07U8P9R0/D/V9n5/0uZrf9CXWX/SFFV/1VWWv9gWlj/ZVlT/2daUv9mW1T/WlVT/1JK + Uv9Um6L/VuPr/1TV6v9a1/f/VM/z/1LO8/9V0/f/U9L2/1bS8f9W0u7/T9Tv/0nW7/9M1e//VNfz/1rT + 8v9e0fD/YtDu/2nF4/9GeHz/R1JM/2FVU/9rV1T/a1dS/2FbUP9bXk3/W1tR/11WWf9fVln/X1hW/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWVT/WllX/1dYWf9aWlT/YF1J/2FeSv9iW0//Y1hU/2BYVP9bWlP/WFpW/0dP + U/9TZXT/cp+5/2zT8v9V0fD/S9fr/0nc6P9D1uT/Rdjq/0bX6v9F2u3/Rsvb90qotKVPoq4J////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHoKgJR5ylSUfC0NFG2On/RNnq/0XX + 6f9K0+z/Vtb4/07R9P9A1PD/SNnu/1iIm/9UXWj/UldT/1lcUP9dW1H/W1tR/1tbUf9aW1H/WVtS/1hb + Uv9oWVH/cFhP/2lYUf9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/ZVdV/2VXVf9lV1X/YFhV/11ZVP9aWVT/WFxV/1ZdVP9SWVD/WV1R/1pY + Sv9cVkj/b2BT/2pWSP9fTUL/bWZi/4Ocm/91wsD/Y9TW/1Hd4/9H2+r/SdTt/1HW8f9S1PX/TtD3/0vP + 9v9N0fb/UM/t/1TQ6/9Y0e//WdHx/1nS8f9Y0/H/WdTy/1jT8v9Y0vL/VtHw/07W8f9J1/H/SdXw/0nU + 7f9J1O3/SdXs/0nX7P9J1+z/Tdbs/1bX8v9lwsv/VoN+/0NPS/9cWlj/Z15W/2NUSP9mVEb/cF9T/2Vc + V/9nXGP/VKuv/0Lo6/9H1On/WNT6/1fP9/9T0Pf/UdP6/0vW+v8/1vL/N9Tt/z/U7v9O1vD/UdPu/1LW + 8f9Y1e//YdTx/2PK6/9Yo8z/SnBw/1JVSv9mVFH/cVZU/3NVVP9fXE//VGFK/1lcUP9fVVz/ZFVc/2FY + V/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FYVv9kVlj/YVlU/1xdSv9cXUv/XF1L/1xbUf9cWVX/WFlV/1RW + XP88UF3/TYKW/3DL6P9P0vT/SM/z/03V8P9P3O3/Sdnr/0XX6f9F2ev/Q9Tl/0i9ys9ToKlJUqKsCf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFCsLqVQ8ra+UXa + 7f9F1+n/RtXq/0/U8v9R1fb/SNjz/0rT6P+Htsn/Z3F7/0tRTf9aXFD/XFtR/1xbUf9cW1H/W1tR/1pb + Uv9ZW1L/Z1lR/25YT/9oWFH/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2RXVf9kV1X/Y1dV/19YVf9eWVT/W1lU/1tdVv9bYFf/TlRL/1lZ + T/9mYlb/ZV5T/15USv9qXlT/YFxT/09VU/8+XmH/KHZ3/zejqP9JzdX/T9vq/07T7P9R0u3/VdPz/1PS + 9v9P0fX/UNH1/1XT8P9Y0+7/WtTw/1vU8f9a0/D/WNHv/1fP7f9Wzuz/WdHu/1vS8P9M0Or/R8/o/0nR + 6v9K0uz/S9Pt/0rU7P9J1uz/Stbt/07V7f9V1vL/ddHc/2WSkf9BT03/WVdW/2NaU/9mWE3/a1pN/2lb + UP9YUU3/eHB5/2S6v/9E5er/S9bs/1jU+f9Y0fj/Us71/03O9P9I0fX/QdTv/0LZ8v9I2fP/TNXv/07R + 7P9P0+3/VtPv/2LW8/9fxeX/O4it/0Jpaf9VWk//Z1VT/3BWVP9xVVT/X1xP/1VgS/9ZXFD/X1Vb/2NV + W/9gWFf/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFb/YlZY/2BZVP9dXUr/XV1L/11dTP9dW1H/XFlV/1hZ + Vf9RU1f/VWp3/3Omuv+B1/L/UM/w/1DV+P9N1u//RtXm/0bX6f9F1+n/Rdvu/0PG1PlHqbOT////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BTZ2kS0y+ + ystJ2+7/Rdfp/0XX6f9I1+7/SdT0/0fR9v9N0fT/cNbu/02Vo/9FXWL/YlVU/11WVP9TWlP/TVxT/1hb + VP9mWFT/XlJO/2daUv9rXFL/ZlpS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/YFlU/2BZVP9fWVT/X1lU/15ZVP9eWlT/XFtT/1pZ + Uf9dWVH/YltT/2RaUv9mV1D/aFlS/2ZYU/9iVVT/XlZX/1JcW/9OYmL/UHFz/12Kj/9yqK//iMXM/5Pa + 4/+R4er/h93m/3/Y5f982u7/etjx/3na5v993t3/hd/i/5Hc7/+X1O//kcPW/4Ktsv9tm5z/S356/06A + dv9crKz/V9zu/1fV7v9W0e//WNPy/1bU8f9S0e7/U9Tt/2rg9f9Hpbj/J1Zl/2lXWf9rWFH/ZllL/2Bd + SP9RXEr/PFRW/1+Nmv9dxd3/TNj4/07S8/9P0vT/TtPy/0/U7/9R1O7/T9Tu/03T8P9N1PH/T9Tx/1HU + 8P9T1fH/UtH1/0vO9f9o2Pb/f8vb/zxye/9GXlD/Wl1I/2NdTv9lWFH/ZVdU/15YV/9aWFj/XFhW/19Y + U/9gWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/ZFpW/2VWVP9kVFH/Z1hT/2dXU/9dW0//VGBP/09f + U/9JV1z/PEpb/02Tqv9f0uv/WdLu/0nP7P9R1/X/Ttfv/0fV6P9F1+n/Rdjq/0TU5v9IuMPLTp2jSf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVGb + oQ9IrbiFQMrd+0Ta7P9F1+n/Rtjq/0bU7/9G0PX/TdH4/2Xa8v9twtH/aoCH/2RMTf9iVlb/UVpS/0hd + U/9XXFb/a1lW/2VVU/9oW1L/aVxQ/2VaUf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllT/11a + Uf9eWlL/X1lS/2JYUv9lWVL/alhS/2lYUv9oV1P/aVdW/2dVV/9dU1L/UlFQ/0tTVP9JYGL/Sm9y/0x+ + f/9JiYz/SpWW/06eoP9Npar/Raa3/0anv/9HrbX/SK6j/0einv9LkqL/ToSe/1V6i/9Yc3L/Tm5m/zlc + Tv9BX0z/UZeP/1Dc6/9W1O3/WdHx/1vR8v9Z0vH/VtLv/1bV7/9j3vb/SrPM/zlugv9rU1X/bVVO/2lc + TP9fYkn/TWBL/zxYW/9tpbX/ZtHv/0rS+f9P0fX/TNLz/0vT8P9P1u3/Utbt/1HV7P9Q0/D/UNPx/1DT + 8P9Q0+//UNPw/1LQ9v9Kzff/YtLy/3a+yf8zZ2j/RVtI/1teRf9iXkz/YlpR/2JXVP9eV1n/W1Zb/11X + V/9eWVH/XllR/19ZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2JYU/9mVVL/a1dU/25cWf9pVFL/XVtQ/09g + S/9HWUv/TFZe/2VugP9gssr/Vdz2/1PV8P9K0Oz/Ttby/0vW7f9G1ej/Rdfp/0Tb7v9BxNb7SKizg0+d + og////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BSJunNUSyw7tK1+r/Rdfp/0XY6P9G1ev/R9Hw/0zP8/9g1/H/etzv/3SotP9XYGf/UFVZ/1Fc + Wv9PW1X/WldT/2taV/9qW1j/YFhQ/19aT/9hXFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11Z + U/9ZWlP/WVpT/1tZU/9eWVP/YVlT/2RYU/9lWFP/ZVdT/2ZXVP9kV1b/YFhV/1pXVv9UWFj/SlhZ/z5U + V/80UFP/Kk9T/ylVWf8wYGT/Nmlx/zZneP86aYD/PXB7/ztwbP81Y2T/MVNi/zNKYP8+S1r/S1JU/0xW + U/9HV07/RFdJ/0+Ef/9dzNz/XdHp/1nS8v9Vz/L/UtHw/1LU8f9S1vH/Wdfv/1bE3f9SkaP/Xk9U/2VU + UP9mXU//Y19N/1NgUf81Zmf/brvI/23a9/9P0Pb/UNH0/03S8/9M0/L/T9Tv/1PV7f9S1e3/T9Pw/03T + 8f9Q0/D/VNLv/1HQ7f9R0vX/StP5/1vI5v9poK7/O15i/0paSv9cXkj/Yl1M/2JaUf9iV1T/X1dY/1xX + Wv9fV1f/YllS/2JZUv9gWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dVlD/YlhS/2lbWP9qWFn/Z1VW/15Z + Uv9OWUv/P1hO/z9lbv91pbn/a8fj/1fU8/9X2/j/RtHr/0jV7f9H1+v/Rdfp/0XX6f9H0uT/R7C9u0yc + pDP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AVGRnwNSoa9dT8bY8UbW6P9E2Or/Rtbp/0jT6/9Lzu7/V9j2/17b9f9ixNn/WZGg/z9Z + ZP9OXGL/V1VY/19RUP9qWlf/allW/1ZVTv9TWlD/XF5W/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZ + VP9cWVT/UlpV/1NaVf9UWlT/V1pU/1paVP9cWVT/X1hU/2NYU/9kWFH/ZVlS/2lcVv9nWFX/ZFdU/2JX + Vf9hV1j/YVhY/15WWf9YVFn/VlNY/1lTW/9kTV3/aExg/2hRXf9oVFf/Z1NX/2lQXf9tUGH/cVNe/3JT + Vv9vUVL/bFdT/1dSRv9Wb2v/bbLA/2rO5P9d0/X/Uc/1/0vR8v9L1vP/R9Tv/07W7/9Z1u//Xq7B/1lT + Xf9dVlX/XlpS/2JXTP9ZX1f/L4KB/1rK0/9p2/j/Ws71/1LR9P9N0vP/TNL0/1DT8P9U1Oz/U9Tt/07T + 8P9L0/H/UtPx/1vS8P9Wz+3/Udb1/0nc/P9UvNn/Y36Q/01WXP9TWUv/XV9K/2FdTf9hWlL/YVhU/2BX + V/9eV1n/YVdX/2lYUv9pWFL/Y1lT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WlhR/1tcUv9fWlb/Yk9X/2hU + Xf9iVlf/UlZP/0FlYP85iJb/Xsni/2TU9/9a0ff/T9r5/0DU6P9D1+n/Rtjq/0XZ6/9G1ef/S7vL8VOf + qFtVlpwD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BTZmnK0SrvLFF1Ob5Rdrs/0TX6P9G1+v/TdXw/1PT8P9Z0+z/edXp/4m6 + yf9acnz/TFpe/1RUVv9jV1X/aFhV/2ZWU/9YV0//VlxS/11dVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9gWVT/XFlU/1NaVf9UWlX/VVpU/1haVP9bWlT/XVlU/2BYVP9jWFP/ZVhS/2RYUf9hVU//YFNQ/19U + Uf9dVVT/XFZX/1xXWP9ZVln/VVZa/1RYXP9VVl//XE5e/19NYP9gUl3/YFZX/19UV/9iUF3/ZlBi/2xU + X/9vVln/blZW/25fWv9ZVkv/RWJe/0yVo/9mzOL/XtT2/1LR9v9O0vT/TNbz/0XR7P9P1u//Yd31/2y5 + zP9qY2z/YFlY/1tXTv9cU0b/XWRb/1Oiov9hzdf/Y9Xy/1nP9v9S0fT/TdLz/0zS9P9Q0/D/VNTs/1PU + 7f9O0/D/S9Px/1LT8f9a0vD/V9Hv/1PX9/9N3v//SLLO/0hnd/9JVlv/VVxN/15gSv9hXU3/YVpS/2FY + VP9gV1f/XldZ/2FXV/9oWFL/aFhS/2JZU/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19cVP9bW1H/XVdT/2ZU + W/9kUFj/Y1dX/1dcU/9Wd3L/abPA/2vP6P9n1Pb/V8/0/0fQ7v9H2u3/Rdjq/0XX6f9E2ez/RtLk90+p + uK9TmqMr////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AU+ZqAdGqLozScLR2UbV5f9E2ev/Rdfp/0nW7P9R0vH/WtDz/2nY + 9/9p0Of/SqW1/y9hbv9EU1v/YFxe/2JXU/9hV1T/XVtX/1pbVv9aWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllU/2BYVf9iVlf/YlZX/2FXVv9hWFX/YlhV/2JYVP9iWFT/YllS/2JaUf9iWlH/YlpQ/2Ra + Uv9mW1P/ZlpU/2ZXUv9iVU//YVJO/2NTT/9nVlP/aVlX/1tYVP9bW1X/XV1Y/11bV/9ZWVX/V1VQ/1ZW + Uf9dV1L/aFhU/2lbVv9oXlj/WlVO/0dUUv9Md4D/gMXX/2XS9P9Qz/f/UtL2/1DU9f9L0e//TtPv/1Lb + 9v9Yxdn/X4CM/01cYv9OUlH/WFBN/1dqaf9Jx8f/TNfi/1jR8f9gzfj/W8/2/0/S9P9L0/L/UdPw/1bT + 7v9V0+//TtPx/0vT8v9R0u//WdHs/1nS7f9Z2PH/Ttz2/1Chu/9dT2P/WlRb/1taT/9cXkv/Xl1O/15b + Uf9eWVT/XldW/2BXWP9lV1b/bVZU/21WVP9kWFT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9cWlT/W1xU/11c + V/9fWVv/XVNb/0tPV/9EZ27/Tp2n/1HV4f9P2O//XNLz/2HL8f9Vze3/S9jr/0bX6f9E2+3/RdHj/0i3 + yNdPpbQxVJujB////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUCosoVEy9vtRdzu/0XX6f9G1+n/TdPv/1jO + 9P9d0PT/W9Tv/13O3/9Si5v/Tlxo/1ZQVP9gV1L/Y1tY/1xaVv9XWFT/WllV/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9hWFX/Z1VY/2dVWP9mVlb/ZVdV/2VXVf9jWFT/Y1hU/2JZUv9hWlH/YlpR/2Jc + Uf9lW1D/ZVlQ/2hZUv9tWlP/bVpT/29aUv9xV1H/clVR/25VUP9ZWk//VVxP/1dcUf9WWVT/V1tU/1hd + Uv9ZYFP/Xl5T/2ZZU/9jWFH/YFlR/1tWUf9JUU//QmRr/3q3yf9jz/L/Ts/5/1HP9f9R0vb/UNLy/0vP + 7P9J2PP/WdHm/3ahrv9NXmf/Sk1P/19UU/9hdXb/StjY/0je6v9X0vH/Y834/17O9v9P0vT/S9Py/1HT + 8P9W0+//VdPv/07T8f9K0/L/UtLu/1vR6/9c1O7/W9jx/z3Q6f8/jqf/Y0NZ/2JWXv9dWk//W11L/11d + Tv9dW1H/XVlU/15XVv9gV1j/ZldW/3BWVP9wVlT/ZVhU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/WllU/1td + Vv9dXVj/WFZX/1dQWf9NUFv/YISR/2zI1/9E3un/Qdvw/1nQ8v9ky/L/VtHu/0jX6f9G2Or/Qtjq/0TD + 1O1MorGF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////ATihqgU2nKUpRLfGsUnS5P1F2uz/Rdfp/0fW + 6/9R0fL/Vs7z/1jS8f9n2vD/csPS/09/hv9DT1H/ZFVS/2dcW/9bVFL/WlVT/2FbV/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/YVhV/2hVWP9oVVj/Z1ZW/2VXVf9kV1X/Y1hU/2NYVP9hWVL/X1pR/15a + Uf9eW1D/X1pP/15YT/9gWVD/ZFtS/2ZbU/9oXFP/aVtU/2hYU/9lV1H/WlxP/1dcTf9XWU//V1dT/1lZ + VP9YXlH/WGJS/19fUv9lWVP/YVZQ/11WT/9fWVT/UlZU/0VfYv9unar/Zcjo/1PS+f9PzvH/UNP0/0/U + 8v9Izuv/SNXx/1/Z8f+Bvsz/R2x2/zxOU/9dXWL/bIuQ/0nY2/9H3+z/VdTy/2DN9/9czvb/T9L0/0vT + 8v9R0/H/VdPv/1TT7/9P0/H/TdPy/1LT7/9Z1Oz/W9bu/2Da8f9AutD/PHeN/2FGWf9lV17/YVtR/15c + Tf9dXE//XFtR/1xaU/9dWFX/YFdX/2ZXVv9uVlT/blZU/2RYVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15a + Vf9cWlb/W1hV/1lWVv9UT1T/UXJ7/2qxwP913O3/TNvq/0jX7v9X0fH/WdHx/0vW7P9E1+n/Rdzu/0TM + 3f1IsL+xTZ2sKUuhrwX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUqfrF9LvM3XQ9vt/0XX + 6f9E1uj/Sdbx/03W+v9N0/r/T9Tz/2Dj8P9EsbL/QW5s/2pSU/9mV1j/YFFT/2RUV/9mWVn/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2JYVf9tVVf/bFVX/2xWVv9oVlX/ZVdV/2RYVP9iWFT/X1pS/1xb + Uf9YW1H/V1xR/1hdUv9YXVL/V1xQ/1VZTv9UVkz/VFZM/1dZT/9ZXFP/XV9V/19hTv9fYUv/Xl1R/11Z + V/9bWFT/UltI/0xdQ/9VW0n/YllS/2JZVf9eWFT/YlpX/19YWP9YXVz/ant//2q91/9b1vn/T9Du/1LW + 8/9L1PH/R9Lv/0fV8/9V2fT/b9Dg/zmDkf8mUmH/U2d4/3aot/8+1t//O9zs/07U8/9dzvf/Wc/2/07S + 8/9M0vP/UNLy/1TT8P9T0/D/UdPx/1HT8v9R1PD/Utfs/1bY6v9o3O//UaOy/0xhcP9oTVv/aFVZ/2Za + U/9iW1D/XVtQ/1pcUP9aW1L/W1lU/2BXVf9mV1X/a1ZU/2tWVP9jWFT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9iWlb/X1ZW/1tTVP9dXFn/YmFf/06osf9J1+v/VNju/1XY8P9R0+3/TtXv/0nY7P9D1+j/Rdfp/0Pa + 7P9Ku8rXT56qXf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFQk6EHRKy7ezvO + 3/9F2Or/Rdjp/0XW6/9I1PH/TNL2/0zR7/9a1+X/b9XW/3abmf9qUFH/YlFR/2hZWv9nWFn/YVVU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9iWFX/bVVX/2xVV/9sVlb/aVZV/2ZXVf9lWFT/YlhU/19a + Uv9cW1H/WVtR/1dbUP9YXFH/WFxR/1hcUP9XXFD/WlxR/1pcUf9bXFL/WltR/1lbUP9aXkv/WV5I/1la + Tf9aV1X/W1lV/1ZgTf9TZEr/WV9O/2JZUv9gV1P/YFpV/2BYVf9cV1f/VFtb/0leY/9ess7/Xdn9/1DR + 8P9U2Pb/StHv/03W8/9H1PL/T9Ps/3jW5P9PlKL/MFdm/2BxgP+Twc//Qtri/zvc7P9P0/P/Xs73/1rP + 9v9O0vP/TNLz/1DS8v9U0/D/U9Pw/1HT8f9R0/L/UdTv/1HV6/9U1Oj/Zt3w/zyUpf86UmL/bVBe/2NS + Vv9jWFH/YFpO/1taTv9aXFD/WltS/1tZVP9gV1X/ZldV/2xWVP9rVlT/ZFhU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9eWVT/XllU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/X1lU/2BZ + VP9gWVT/XFRQ/2NbWv9iWlv/W1VS/5GLif92ytD/Vt/w/1PU6f9Q1Or/Udbw/0vX7f9F1un/Rdjp/0XZ + 6/8/w9r/SKO1eVKUngf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUia + qDdGtMS7TNjq/0bY6v9D1+n/SNXr/1LT7/9Y0vH/S9Po/1Tg7v9exdH/UoGL/zlVXP9SUVb/YldZ/15Y + V/9bV1X/XlpY/15YVv9dVVP/XFZU/11cV/9bW1f/X1dS/2VYUv9nW1X/Y1pR/2NaUf9fWlH/XFtR/11b + Uf9dWlL/XFpT/19YVf9hWFb/YFhW/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1xZVf9cWVX/XVlV/1xZVP9cWVT/XVpT/1xa + U/9cWlL/XFpS/1taUv9bWlP/XFpT/1xaU/9cWlP/XFpT/1xaVP9cWlT/XFpV/1tZVv9cWFX/aFlP/2pa + Tf9oV1L/Z1NZ/2ZVWP9fXU//XV9M/2BcT/9jWFP/Y1dU/2NXV/9jV1b/YVZW/11ZVv9VVlT/YKCv/2DS + 6v9W1+//Ttrx/0rU8P9M1fT/TdPz/1DP7v9e1ej/TrfK/xtoe/9Bd4v/jtjr/1LZ6v9I1uz/TNHx/1HR + 9v9Q0fX/TdPz/0vT8/9P0/L/VNPw/1PT8P9S0vH/U9Ly/1HT7/9N1ur/T9fj/3zJ2f9fgo//Qk5W/1dS + V/9iWVf/Z1tU/2ZYUP9eV0//WFxR/1hcUf9cWlL/YFhT/2BYVf9hV1X/ZFhU/2BZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9aWVb/WVlW/1tZ + Vf9eWVT/YFhU/2NZUv9mWFL/Z1hS/2hYUv9nWFL/W1pQ/1haUv9bWlX/XVlW/2BYVP9lV1T/aVdU/2FZ + U/9SWlL/U1pR/1dYUf9iV1b/UVth/zJ0ev9uwM3/YNXw/03T9/9R0vX/TM7w/0/U8P9J1+z/RNfp/0bX + 6P9I0N//SbC9u02ZpDf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFNlqQLSqSyVUbB0eVF1uj/RNrr/0bW6f9P1uv/WdTw/0fW7v873fD/Udnq/2m2xf9Hcnv/WFZc/2NW + WP9fWVn/WVZW/11aWf9eWFj/YFZX/15YWP9XWlf/U1hV/2FYU/9rWFL/aVhS/2VaT/9mWk//X1xP/1pd + T/9bXU//W1tQ/1paU/9fWFb/Y1ZY/2JWWP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/11ZVP9UWlT/VFpU/1VaVP9WWlT/VlpU/1lb + Uv9ZW1L/WlpS/1taUv9bWlL/XVlU/11ZVP9dWVT/XVlU/11ZVP9bWVX/W1lV/1xZVv9bWFn/XVhY/3BX + Uf90WU//clVU/29RWv9tU1n/ZFtP/2JdTP9kW0//ZVhT/2VXVf9lVlf/ZFVX/2NVVf9gV1P/XFRO/06I + kv9UxNn/Wdzy/0fW6v9K1vH/TNb1/1DS9f9S0PD/UtXq/1bQ5P8wi6D/So+l/4jc8f9X1+v/T9Xv/03S + 8/9M0vX/TNL0/0zT8/9L0/P/T9Py/1TT8P9T0/D/U9Lx/1TR8v9S1PD/Tdrs/0za4v9vrrz/YnB8/0lQ + Vf9PVVf/YlpY/2dZU/9pV1H/YllS/1ZcUf9WXFH/XVtR/2BZUv9eWVX/XFhV/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/V1lY/1VZ + WP9aWVb/YFlU/2NYVP9mWVD/alhQ/2xYUP9tWFD/bFhQ/1hZTf9XXVT/W15Z/1pZVv9eVlP/aldU/3RZ + WP9jWVP/R1dM/1FhVf9ZWFD/ZlBP/2Vvdv9UtL//WdPn/0/U+P9N0f7/UdP9/0rO8v9J1O3/Rtfp/0Tb + 7f9G1ef/S7jD40+kq1VQmKEL////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AUahsA89rLx7Rszd50bZ6v9D2Or/Rtfp/07W7f9O1/D/RdLr/1vW6/9+1OP/Zqiy/1du + dv9TVFn/WVZX/2BaWP9fWVf/XVZV/2BZWP9iXFr/WlhT/1VUT/9gWVT/ZFpU/2BXUf9iWlH/Y1lR/2Ba + Uf9dW1H/XltR/11aUv9cWlP/XllV/19YVv9fWFb/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9dWVT/VVtT/1VbU/9XWlP/WVpT/1la + U/9bW1L/XFpS/11ZUv9eWVP/X1lT/19YVP9fWFT/X1hV/19YVf9fWFX/XlhW/15YVv9dWFf/XFhY/15Y + V/9pWFL/a1lQ/2lXVf9nU1v/ZVVa/19bUP9dXE3/X1tQ/2FZVP9iV1b/YlhY/2BUVv9gVFT/YFhT/1tT + Tv87b3X/ULPE/2Xg8/9F0ef/Tdbx/0/W9P9S0vT/U9Lw/1LV6/9b2O3/VLXM/2Szyv951ev/VdPp/1TV + 8P9Q1PT/S9Pz/0zT8/9L0/L/S9Py/0/T8v9U0/D/U9Pw/1PS8f9T0fH/VNXx/1Tc7v9T2OD/X5Ge/1lf + af9PVVf/UltZ/1paVf9hVVD/aFhT/2VcVf9YXFH/WFxR/11bUf9fWlL/X1lU/15YVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XllU/1pZ + Vv9aWVb/WVlW/1laVP9dWVT/ZFhS/2lYUv9pWFL/aVhS/2dYUv9aWVD/Wl5W/19eWf9eWFT/YFVS/2da + Vv9sWlf/YFhS/1BYUP9YX1b/RlRP/1VlaP91oKn/d9rn/17T5v9T0/X/UNP7/07S9f9K1O7/Rdbp/0TZ + 6/9F1+n/R8bW50yosXlOoqkN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUm4xqVIzt75RNrs/0XX6f9G1+v/VNDt/1/J8P9hz/H/XNzt/1fb + 5/9Ak5//OVtm/05SVv9pXFf/ZlpW/1pVUP9YV1L/YFxV/2VaU/9hVE3/V1lS/1NdVv9VXFX/XFlV/15Y + Vf9iV1X/ZFdV/2NXVf9hWFT/XllU/1paU/9WW1L/WFtS/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XFpT/1NcUv9UXFL/VltS/1pa + Uv9cWlL/XVpS/2BZUv9iWFP/ZFhU/2ZXVP9mV1X/ZldV/2ZWVv9mVlf/ZlZX/2NWWP9jVlj/YVZY/19X + WP9fV1j/XFlU/1xZU/9aWFf/V1dc/1dXW/9VWlT/VVtR/1VbU/9YWlX/XFhX/15ZWv9cVlj/XlZU/2Nb + U/9iVk//PVpX/1ygpP943uz/S9Dp/1LW8v9U0/H/VtHx/1TT8f9J0+3/Ttr0/1fT7/9dzur/XtHs/1zQ + 6/9e0vD/UdTy/0bU8f9I1PH/StTx/0zT8f9Q0/H/VNPw/1PT8P9T0/D/UtPw/1bV8P9b2er/XdHY/252 + gf9rUFf/WVhT/01gVP9LXVL/XVVR/2lWVv9mW1f/W1tR/1xbUf9dW1H/XVtR/11aUv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YVlU/1daVf9LW1X/T1tV/2NXVf9oV1X/ZVdV/2JXVf9eWFX/XFtV/1lbVP9eV1L/Z1ZT/2dX + VP9iXVj/V1ZR/1pXUf9mYFv/WU9N/yhaW/82nKX/WdPi/0/N4f9b3PP/Vdf3/0nM7v9Ezef/SNfr/0bX + 6f9E2u3/SMfY+UuotaP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wE5m6U/Qr7Nw0fZ6/9F2Or/Rdfp/0nR6f9h1ff/aNf3/1XT + 4/9T1d//gc7Y/3CKk/9QTVH/YFNN/2dZVf9hWlX/WlZR/1xWUf9mW1T/ZlpT/1ZYUf9OWlP/V15W/1xZ + Vf9fWFX/Y1dV/2VXVf9kV1X/YlhU/19ZVP9aWlP/VltS/1dbUv9eWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/1xaU/9TXFL/VFxS/1Zb + Uv9aWlL/XFpS/1xaUv9gWVL/YlhT/2RYVP9mV1T/ZldV/2ZXVf9mVlb/ZlZX/2ZWV/9kVlj/ZFZY/2FW + WP9fV1j/X1dY/1xZVP9cWVP/WlhX/1dXXP9XV1v/VVpU/1VbUf9VW1P/WFpV/1xYV/9dWFr/XFZY/2BX + Vv9kW1T/ZlpS/zNTUP9FjZL/adPh/0/W7/9Q1PD/UM/u/1bS8f9X1vT/SdPt/0jU7v9c1/H/aNXv/1/Q + 6/9e0u3/XdHv/0/S8P9F1PH/SNTx/0rU8f9M0/H/UNPx/1TT8P9T0/D/U9Pw/1TT8f9V1O//U9Tl/07H + zf9hbHj/Z05V/1lZVP9JXlH/TF5T/15YU/9pVVX/ZFlU/1pbUf9cW1H/XVtR/11bUf9dW1L/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2FZVP9WWlX/SltV/05bVf9jV1X/aVdV/2ZXVf9iV1X/X1hV/11cVv9XWFH/WlVQ/2hY + Vf9qW1j/X1tW/1dXUf9dWVP/Z11Y/15NS/9bhoX/YsHI/2TZ6P9b2On/VNTs/07R8P9L0fD/SNbs/0XX + 6f9E2+v/Sc7h/06ywcNOmaQ/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BNJehB0OksWtNxNThStzu/0XX6f9E1ef/UNjx/1PU + 8/9NzOj/VNLr/3Lg9f9jwND/S32G/1ROUf9XVVT/VmBc/01fWP9NWE7/XllQ/2lfV/9iWVL/XlVP/19Y + VP9YWVb/WFhY/1tXWP9cV1j/XFdY/1tZVv9ZWlX/XVpS/2BaUP9fWlH/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/W1pT/1ta + U/9cWlP/XVpT/19ZU/9jWFP/ZFhT/2RYVP9kWFT/ZVhU/2RYVP9kWFT/Y1dV/2NXVf9jV1X/X1hV/19Y + Vf9eWFX/XlhV/15YVf9kWFT/ZlhU/2FXVv9cV1n/XVdY/19YVf9gWFT/X1lU/15aUv9fWVP/YFZW/2FW + WP9hV1X/YFhR/2VcVP9HUk3/VHh1/2y4wf9d2ff/U9Dv/1DQ7f9T1fH/Vtfz/1HU8f9N0O3/U9Lv/1nU + 8f9X0/D/Wdbz/1XS8P9O0+//S9Xw/0vV8P9L1fD/S9Tw/1HU8P9Y0vD/VtLw/1DU7/9M1PD/V9fx/2TO + 4v9dqrb/Y2Zq/2ZRUP9dWVH/UVxP/1RdUv9iWlf/ZlRY/2FVU/9gWlH/YVpR/2BbUP9eW1D/XVtR/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YFlU/2RZUv9kWVL/YVlT/11YVf9eWFb/X1dY/19XWP9gV1j/YVdX/19XV/9ZXFT/VFxS/1ta + Uv9mWlT/Z1pV/19TUv9oV1r/WVhZ/zVZVv9Denv/V7XG/2HV8P9c2PH/Vtbv/1LS7f9N0+7/Sdbs/0XX + 6v9F1+n/R9fp/0i6y+FLn6tpT5ejB////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wFGm6YbS628g0PK3PVE2uv/RNnp/0TX + 6v9F0+3/TM/w/1jS8/9V1PD/WNrt/2u3w/96bnb/WldX/0VZVP88X1b/Rl1Q/1tYTf9pX1b/a1pS/2lU + T/9kVVP/VFlX/1NYWv9WV1n/V1dZ/1dXWf9WWVf/VVpV/15aUv9mWk//ZFpQ/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/ZFhU/2dXVP9lWFT/ZFhU/2RYVP9jWFT/Y1hU/2JYVP9hWFT/YVhU/1xZ + VP9cWVT/XFlU/1xZVP9dWVT/aVdU/2xXVP9mVlX/YFdX/2FXV/9lV1X/Z1dV/2VYVP9iWlH/YlpR/2FW + VP9lV1n/YldV/1xUTf9jWlP/WVdR/1RmXv9cmqD/Ydj5/1bS8P9T1PD/UdXv/1LU8P9V1fT/U9Ly/07P + 7v9N0e//UtXz/1TW8/9S0vD/TtPv/03V7/9N1e//TNXv/0vV7/9S1O//WtLw/1fS8P9O1e//SNXv/1vc + 9f9qyt//UoeX/2FdX/9nU07/YFlQ/1ddUP9YXVH/Y1pY/2RUWf9iVFT/ZFpR/2NaUf9iW1D/X1tQ/11b + Uf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/2BZVP9nWVH/ZllR/2hYUv9pVVX/aFVX/1xXWf9ZV1n/XFda/2FXWf9gVln/VFpS/1Jf + VP9aXlX/YVlR/2NYUP9kUFH/b05W/11XXP87dnL/WLW2/1bQ6v9U1vv/U9Tz/0/Q7/9Q0+//S9bs/0XY + 6f9E2Or/Rdnr/0XA0vVEp7WDSJulG////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUWltSU5s8WhStLk90fX + 6f9D2Oj/Rdfq/0zW7/9V1fL/Tc3o/1nW7f9/1OT/k6uz/1hxc/9BVFT/Q1VS/09eVv9bWlH/YltS/2da + Uv9qWFH/ZVdU/1lZVv9XWFj/V1dZ/1dXWf9XV1n/W1hX/1pZVf9fWlL/Y1pP/2NaUP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9kWFT/ZFhU/2NYVP9jWFT/YlhU/2JYVP9hWFT/YVhU/2BZ + U/9dWlP/XllT/15ZU/9eWlP/X1pT/2ZYU/9oWFP/YlhU/1xYVv9dWFb/YldV/2RXVv9iWFT/YFtQ/2Ba + UP9hWFX/ZVlZ/2JYVf9cVU7/YVlS/1xcVf9OW1L/TYKI/1zN7/9Z1PP/Vdfz/07U7f9N0Oz/V9Py/1vV + 9v9T0/L/TtDv/0/S8f9O1PH/TdPv/03T7/9P1e//T9Xv/0zV7/9L1e//UtTv/1vS8P9Y0vD/TdXv/0bW + 7/9e3PX/aL/V/zlse/9WV1f/ZFRN/2FaUf9dX1L/XFxQ/2JYV/9lVVn/ZFZW/2RaUf9kWlH/Y1tQ/19b + UP9eWlL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9gWVT/ZllR/2dZUf9mWFL/ZFdV/2RWV/9dV1n/XFdZ/1xXWf9dWFf/XVhX/1Za + Uf9WXlL/XFtT/2BVT/9jVVL/YVda/1hNVf9XaXD/Z6+v/3jX3f9g1fD/UtD1/1HR8v9N0e3/S9Xs/0bX + 6f9E2Or/Rdfp/0bM3vdAqbmhQqCtI////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BPrHDIVm2 + ysNK0eP5Q9rr/0XX6f9F1+v/SNjx/0nY9v9H0fP/T9Xw/1ja5f82par/UWl3/2NPX/9aV1z/V1tW/1NZ + Uf9hWVD/bFtR/2lbUv9jWFT/XlhW/1ZZWP9RWVj/VVlY/2VWV/9nVlX/Y1lS/2FcT/9hW1D/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9cXFD/XVxO/2BbTv9iW07/Y1xN/2NcTf9gWlH/XlpR/1hcUf9TXVD/VF1Q/19YVv9iVlj/YFlU/11d + Tf9dXE7/YFlS/2NZVv9hWlb/XVlU/15aVf9fWlP/Y1VH/2FwdP9YtN7/XM/1/1HY8/9F1uv/StHp/1/O + 7v9m0vb/XNP3/0/Q8/9H0PH/Qtfy/z3W7v9L1O3/WdTt/1XU7f9O1e//S9Xv/1TU7/9e0u//W9Lv/0nV + 7/8/2fH/XtTu/3Gowv9AWWr/TlhR/1tZS/9kWk//aV1R/2ZaTv9kVlb/Y1Vb/2VXWP9mWFH/ZlpQ/2Vb + Tv9gWlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/YFlU/2dYUf9pWFH/ZFlS/15ZVf9fV1f/X1dY/2BXWP9aWFf/U1tU/1Rc + Uv9aXFD/X1pO/2NXTv9lVVH/ZlNZ/1BdZ/84Z3T/P5in/13c6/9Z2O//WNL6/1TN/P9O0Pf/Stjw/0bX + 6v9F1+n/Rdrt/0bO3/lKrLrBQqa2H////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AU2Z + rQVSmq9DQsPVzUDY6f9F2ev/Rdfp/0TW6/9E1u//SNL0/07U8P9W2OH/adja/4iWo/98W2v/WlBU/1Rb + VP9PWU//YlpR/21aUP9nV0//Y1hU/11YVv9UWVj/T1lZ/1RZWf9mVVf/aFVV/2NZUv9hXE//YVtQ/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlpT/11cTv9gW03/YltN/2RcTP9jXEz/YFpR/11aUf9XXFH/Ul5P/1NeT/9fWFb/YlZZ/2BZ + VP9dXUz/XFxO/19XUf9fVVL/YFlU/2FdWP9dWlT/XFVO/2NSQv9caW7/QqPR/0/J8v9N1/P/Sdnt/0/W + 7v9ezOz/ZM7y/13T+P9Q0fT/RtDx/0Xc9v892vD/S9bs/1rV7P9V1Oz/TdXv/0rV7/9U1O//X9Lv/1zS + 7/9J1e//Qdvz/1PM5/9Zl7T/NlJl/1BdVP9eXU7/Y1hM/2haTv9nWk7/ZVZW/2JUXP9lVlf/Z1hR/2Za + UP9iWlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2BZVP9oV1H/a1hR/2VZUv9eWVX/X1ZX/2BXWf9iV1n/WlhY/1Fb + VP9SXFL/Wl5R/15aTv9mWVD/bllW/2tQVv9PUlz/aY+c/3vR3v9e4Oz/UtLn/1fP+P9Uzfv/Sc/x/0fW + 6/9F1+n/Rdzu/0HR4v9BtcTNSpyoQUmapwX///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BT5OoA0aisWVKxdTbS9rs/0TY6v9E1un/Rtbr/0vU8v9Q0vP/UtXu/17a8f91zeL/UpWk/zNd + Zv9dUlj/W1NT/1xZUf9dXFD/XlpQ/2NYUP9mXFX/YVtV/1tYU/9cV1T/Y1pY/2NbV/9iWlP/YllQ/2Ja + Uf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWlL/X1pQ/2BaUv9hWlH/YVpR/2JYU/9iWFP/XVpT/1pbUv9bW1L/XllU/19Y + VP9eWlP/X1tQ/2FaUP9iV1L/Y1dT/2FXVP9eWFb/XFlZ/1VYVv9OVlH/R15h/0mAkf+Eytj/ZNrw/0XW + 7/9P1u//WdDu/1nP7f9V0vH/UdLz/07R9P9N1ff/TNP1/1HR8v9W0PL/VtHz/1LT8f9S1PD/VdXv/1fU + 7f9V0+z/TNfv/0Tg+P9cu8z/cXuB/1ZdYP9YWVP/XlpR/2FaU/9jW1P/YFhQ/19WU/9hWFf/YllX/2JZ + U/9iWVL/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9fWlT/X1xT/1xYUP9ZV1D/W1pV/15cWf9ZWlX/VlhT/1la + U/9dXVT/XltR/2NXTv9xXFb/ZltX/0hUVP88W2P/Q5Kc/2HI2P9r2vb/WNH1/1XM8/9O0Pj/SdT0/0bV + 6/9F1+n/Rdrs/0nU5v9JucfZR52oY0qYowP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFMkp8RSam1eUfK2udE2uz/RNjp/0bY6v9L1e3/TNHx/0rQ9P9J0vj/U+H6/0bP + 3f9Jk6D/eFdm/3BSWP9aWFD/T15P/1dcUP9mWU7/alxR/2hbUf9lV1D/ZFdT/15aVf9eXFf/YVtV/2RY + Uv9iWFH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZU/9fWVb/X1lV/19ZVf9jV1X/ZVdV/2JYVf9gWVT/YFlU/11a + Uv9dWlH/XVpS/2BZU/9kWVL/ZFhS/2ZYVP9iVlX/WlNV/1tZXP9QW1z/QFpb/zpXWf9Qamb/ocK+/3Da + 6/9B1fH/TtTu/1bU8P9U0ez/UdPu/1HT8/9T0fX/Us33/1fN+P9Xzff/Vs73/1jQ+f9V0fL/VtLw/1XV + 7f9T1er/U9Xr/0zY7f9A4/v/XKy1/39hVv9qYFn/XFVQ/1xWUv9gW1b/YFpW/11XU/9dWFP/X1pU/19a + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XVpU/1RbUv9UXFL/VVxU/1dbVf9XW1T/UVtQ/09c + Uf9YXlL/Yl1R/2RZTv9xV1D/fVZT/2VSUv9CX2H/SY2W/0jN1/9K4PP/UtP4/1nL//9Wyfv/RtH1/0HY + 7f9F2en/RNjq/0HW6P9Jvc7nUKKteU2Xng////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AT2ZpR87rr2NSdDh80fX6f9F2On/Rtbp/0bS6v9Ize3/UtX5/1HS + 7v9k4fH/f9Dd/4CBj/9hZGn/V1pW/1ZaUf9aW1H/ZFpR/2JYTv9iWE//ZVpT/2RaVf9aVlD/WFZQ/2BZ + U/9lWlT/YlhS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/Y1dV/2RXVf9hWFX/X1lU/19Z + VP9dWlL/XVpS/11aUv9gWVL/Y1lS/2RYUv9lWFT/YlZV/11VVv9cWVv/UVhY/0ZYWP9AWFr/TGhp/4Wq + qv9p0eL/Stj1/07U7v9V1PD/VtTw/1TU8f9S0/P/UdDz/07Q9f9S0Pb/VND1/1bR9v9Y0vb/VNHx/1TR + 7/9S0uz/UNXr/1LW7v9O1u3/Sdv0/1afqf9mU0v/XVdS/1xWUf9dV1L/X1lU/19ZVP9fWVT/YFpV/19Z + VP9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/11ZU/9TV0//WV5V/15gWf9bWlT/VFNO/1Va + UP9ZX1b/W15T/15XTf9jV0//bFtV/2JPTf9VWlr/Xo6R/33K0/9X1uH/SNXr/1TU+P9a0/7/T8z0/0XS + 7f9D1+n/Rdjp/0bU5v9CxNTzSai2i0+apB////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BP6KwK1GsvKVQ0uL1SNjq/0PY6f9H1+v/T9Ty/1LO + 9/9Oz/b/T9fz/1Xc7v9PzNn/GI6S/0Vfav9uUVv/YlhY/1pbV/9WWlL/W1pQ/2FbUv9gXFP/VllO/1BU + TP9YU0//ZVhW/2ldW/9gWlX/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FYVf9iWFX/X1hV/11Z + VP9dWVT/XFpS/1xaUv9dWlL/YFlS/2NZUv9mWFL/ZldT/2RWVP9jVlX/Y1dZ/1hVVv9QVlf/TFha/1Jh + Yf97jY3/ccLV/1vZ+P9R0/D/S9Pw/03W8/9T1fL/VtLw/1LS7v9F1uz/RNju/0nW7f9R1e3/WNbv/1bS + 8P9W0O//TNHt/0LV7v9I1/D/XNTu/3PF4v9tiJX/Wk1F/11XUv9gWlX/YVtW/19ZVP9eWFP/YFpV/2Fb + Vv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XltX/1hWUv9gVlP/aldU/2RU + Uf9kWlT/Zl1V/2FUTv9jT07/bFle/0lSVP8vWl//NJKY/0nU2v9Q3uz/R93v/z/U8f9Az/X/RdH3/0jV + 8f9G1+v/RNjq/0fW6P9MyNn1T6q4o06griv///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUCjsgVQpbQxRbHBsUfR5PlG3e//RNfp/0jX + 7P9O0/H/Ss7y/0bQ7v9L2ev/Vdzn/1LR0v97jZf/hVRf/2RNTP9ZWVP/Wl5U/15bUf9fVk7/XlhP/1xg + VP9YXVb/W1dT/2NVUv9lWVf/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWFX/YlhV/19Y + Vf9dWVT/XVlU/1xaUv9cWlL/XVpS/2BZUv9jWVL/ZllS/2VWUv9kVVT/Y1dW/2NXWf9WVVX/T1dZ/01Z + W/9MXFv/YHJz/2a2yv9e2vr/UNTx/0fS7v9L1vL/U9Tx/1jR7/9T0+//RNbs/0PY7/9I1u7/T9Pt/1fU + 7f9Y0vH/WdHw/07T7/9A1/D/Qtfv/17Y8f9frs3/W3KB/15SSv9gWlX/Y11Y/2JcV/9eWFP/XFZR/19Z + VP9hW1b/YFpV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/XlhT/1ZUUP9fX1v/ZFpX/2ZQ + Tv9oVlL/aF1W/2FaUP9mWFH/b1VT/2lMUP9XV1j/apGV/2jJzf9K3eD/SNzq/0La7P8/1vT/QNL3/0LS + 7/9F1+v/Rdjq/0Ta7f9Gytz5TKe4r1Cjsi9Ooa8F////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUCltjdFucavStHh/Ufb + 7f9E1+n/R9fr/0vS7f9T0O3/WtPt/13a8P9j3fD/eMja/1iUoP8pYGT/SU9X/1NXV/9XXVj/WFxV/1ha + U/9cXVX/Xl1W/19ZVf9fVFT/X1VU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/2FY + Vf9eWFX/XFlU/1xZVP9bW1L/W1tS/1xbUv9fWlL/YllS/2RZUv9lVlH/ZlZS/2dYVP9mVlf/XVRT/1pY + WP9ZWlv/U1dW/1dcW/9cqbf/X9v0/1vV8/9T0O//U9Py/1DT8P9P0e//T9Tv/0fY6P9H2en/Stfo/07V + 6P9Q1On/UdXy/1HU8v9P1fH/UdTx/1vP7f942fT/VJiw/0leZ/9hVk7/X1lU/2FbVv9gWlX/XlhT/1xW + Uf9eWFP/YVtW/2BaVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYU/9iVlP/aFpX/2NZ + Vf9fVlH/ZFpV/2hZVv9nU1T/YFVY/1BYXv8/WWT/To+Y/2fF0/9h2+3/Rtjp/0TV7P8/0uj/RtXv/0rX + 8v9D1er/Rdfp/0fb7f9Iydn9Say6r0qdrjX///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BRamzP0i7 + yLNH0+T7Rtns/0PX6f9K1ur/WNTt/2DR8P9Y0fH/V9Dy/1nf+f8409//JJ2l/1tgc/9WVF7/TFhV/05e + V/9VX1n/WFZS/1pUT/9eV1T/YFhZ/15WV/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XlhV/1xZVP9cWVT/WltS/1pbUv9bW1L/XlpS/2FZUv9jWFL/ZldR/2hXUf9qWlP/alZV/2RU + Uv9kWFf/Ylpb/1pVVP9XUE//TJii/1TU6P9l1/b/YM/x/1vR8v9O0u//R9Pv/0vW7/9J2eT/Sdrk/03a + 5f9O2OX/TNbn/0rW8f9H1fL/T9by/1/S8f9xye3/htHu/02Fmf8/Ulf/ZFlS/1xWUf9dV1L/X1lU/19Z + VP9dV1L/XVdS/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9hWVT/cFlY/25T + Uv9jVlP/WltV/1tXUv9sVVf/c05Y/1pLWP9CYm//TJKj/07I1/9K2/L/RNj1/0HV8/9D1vL/Q9Lr/0rV + 6v9M2ev/RNjp/0XZ6/9Gzt77Sa+7s0yapz////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFBsLs9P7zNv0fV5/tG1+n/RNfp/0jW6f9P0uv/T83q/1vW9v9Szur/Utrp/2rZ4/+CmKj/XGtz/0JU + Uf9IVlD/WF9a/1pWUv9ZUk3/X1dV/2RbXP9hWVn/X1lV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9cWVT/XFlU/1pbUv9aW1L/W1tS/15aUv9hWVL/Y1hS/2ZXUf9oWFL/alpU/2lW + Vf9kVVT/YlhY/2BZWf9aVlX/Vk9P/z2DjP9Jv9T/Ztj0/1zS8v9X0vL/TtLv/0vT8f9O1/D/Sdfk/0ra + 5f9P2+f/UNno/0/W6v9K0/H/SNPy/07U8f9c0/H/a8zs/3LA2v9Bd4n/QFBV/2ZbVf9cVlH/XFZR/2Ba + Vf9hW1b/X1lU/11XUv9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWVT/YFlU/2hX + VP9qV1T/ZFhV/1pXUv9YU1D/ZllZ/2ZTWf9YWWT/YYmV/4rQ4f9m1Of/VNjx/0vX9f9D1PH/SNr0/0jZ + 7/9G1+r/Rdfp/0bW6P9G0eL7QbK+v0airD3///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BQrTABT60wztDusfJStbn/Ufa7P9E1+j/R9fr/0rW8f9M0/f/Ss/2/03R8/9V1/H/Xtbj/zih + qf8ubG7/QlNU/1pXVf9pWlf/bVtX/2hcWv9gWFj/W1NT/19YVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/XFlU/1xZVP9aW1L/WltS/1tbUv9dWlL/X1lS/2BZUv9iWFL/ZllT/2ha + VP9lV1H/ZFdT/2VZVf9lWVX/YVdT/19UT/9NaWz/XqGv/3DU5/9M2O3/StXx/0zR8f9S0fT/V9T0/1LT + 5v9V1uf/Vdjp/1LY7P9T1fH/Ts/3/07O+P9PzvX/WNPx/2XT5/9mp7T/UWxw/1JVUv9kXFf/XlhT/15Y + U/9hW1b/YVtW/19ZVP9eWFP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFlU/11Z + VP9UWlD/VFxS/1dYUP9jWFX/Z2Fh/zVZVv8mZGb/RaGq/2Xa6f9f0e3/Wcnz/1zN/f9V0f3/RdDz/0fV + 8P9F1+r/RNjp/0fZ6/9L0OH9S6+7x0OqtDtFp7EF////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wE/tMMFQbPAOzu7y71E0uX/R9zv/0TX6f9G1+z/R9bx/0nS9f9L0PX/UNTv/1Xb + 5f9j2Nv/ca6v/2txcf9cTUr/a1JN/3FYU/9nWFb/XlVW/19XV/9fWVX/XllU/19ZVP9gWVX/YVlV/2BY + VP9gWFT/YFlV/19ZVf9eWVT/XllU/15ZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVT/XVlU/15Z + VP9fWVT/XllU/15ZVP9eWVT/XllU/15ZVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9eWVT/X1lU/15ZVP9cWVT/WltS/1pbUv9bW1L/XVpS/19ZUv9gWVL/Y1hS/2ZY + Uv9oWVP/ZVZQ/2VXU/9lWFT/ZFdT/2NXU/9mWlT/OVJV/0eMmf9t1+v/Q9ft/0PU8P9Kz/D/VNHz/1nU + 9P9U0+X/WNjo/1TY6P9Q1+r/VNfz/0/P9/9Rz/r/UM31/1jT8v9n1+r/SY2b/0VgZP9VVVL/YVpU/11X + Uv9eWFP/X1lU/15YU/9cVlH/X1lU/2FbVv9gWlX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVlU/1tZVP9cWVT/XllU/2BZ + VP9gWVT/YVlT/2FZU/9gWVP/X1lT/19ZU/9eWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9gWVX/YFlU/2BZ + VP9eWVT/UlxR/1JfU/9cW1L/ZFFN/19RT/9Oc2r/ZKio/2/V2/9i4Oz/Ws/s/1/L/P9dy///UdD3/0bU + 7v9G1ur/Rdjp/0Xb7v9Gzd//S7DAvUuosztDqbQF////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wEzsMBBQbzNs0zR4vtJ2+3/RNfo/0bX6/9I1e7/StLx/03R + 8P9T1e3/ZOD0/3TU5f9vr7v/Vn6G/z9SWf9OUVX/VVRX/1dVVv9hWlr/X1ZU/2NZVv9hW1X/WllS/1hZ + Uf9bXVT/W11U/1paUv9eWFH/Y1pV/2NZVP9kWFT/YlhW/19YVv9fWFb/X1hW/11YVv9gWFb/ZldV/2ZX + Vf9jWFT/YVlT/2FZU/9iWVP/YllT/2JZU/9hWVP/YVlT/2BZU/9gWVP/X1lT/15ZU/9eWVP/XllU/15Z + VP9fWVT/X1lU/2FYVP9hWFT/YlhU/2BZVP9fWVT/XVlU/1taU/9bWlP/W1pS/11aUv9eWVL/X1lS/2BZ + Uv9hWVL/YllS/2BYUf9hWFP/YVhT/2BYUv9gWFP/YltU/0hUU/9KaXH/ZKOy/2jc7f9Y1/D/TdDv/1DT + 8/9V1fT/U9Lo/1nW7P9Z1u7/V9Pv/1bR9P9Izfb/SM76/0zQ9/9Y1/H/ZtLe/0pydf9PV1T/XFpV/19Z + U/9eWFP/XlhT/15YU/9eWFP/XVdS/19ZVP9gWlX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVX/YFhV/2BYVf9gWVT/YFlU/19ZVP9fWVT/X1lU/19Z + U/9fWVP/X1lT/19ZU/9fWVP/YFlT/2BZU/9gWVP/YVlT/2FZU/9hWVT/YFlU/2ZYVP9uV1L/bldS/2RZ + U/9cWVT/WVlV/1dZVv9XWVb/W1lW/19YVv9gWFf/YllW/2BXVf9dVlL/XVlU/15bVv9cWlP/WVhR/1xZ + Uv9gWlT/XlpU/1hcVP9SW1L/RlZR/0FZW/9OdHv/ZLC5/3HU5P9h2e//S9Hs/0/S9P9V0vr/U9H1/0vT + 7f9F1+r/Rdjp/0jb7P9GzNr7RrPAsUqks0H///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AUOuvD1Ku8mxR9Hj9UXZ6/9F1+n/Rdfp/0fU + 7P9J0/L/TNP2/0jR+P9M1vb/XNjx/2LD1v9FhJb/RV9s/0tUWv9TVlf/XlZX/2RVV/9pWVj/YFxT/1Ja + Tv9QWk7/U19R/1FfUP9SW03/XFlN/2dbVP9pWFT/a1VW/2ZVWf9eV1n/X1dZ/15XWf9bV1n/YlVZ/3FU + V/9xVFf/aVdU/2RYUf9lWFL/Z1hS/2dYUv9mWVH/ZVlR/2VZUf9hWlH/YVpR/19aUv9dWlL/XVpS/11Z + VP9dWVT/XllU/2BYVf9kV1X/ZVdV/2ZXVf9iWFX/XllU/19ZVP9dWVT/XFlU/1xZU/9cWlL/XFpS/11a + Uv9cWlL/XFpS/1xaUv9cWlL/XllS/19ZUv9eWVL/XVpS/1xaUf9fWlX/WVFT/1hpdP9lvcr/ZNbt/1LW + 8/9I0/L/UNXz/1PP7f9a0u//X9Lz/2DP9v9azfb/Rc75/0LQ/f9J1Pv/UNbs/1TAxf9ZZVz/X1RJ/2Bc + Vf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhW/2FXWP9hV1j/YVhV/2FYVf9gWVT/X1lU/19Z + VP9fWVL/X1lS/19ZUv9fWVL/X1lS/2JZUv9iWVL/Y1lS/2RZUv9kWVL/ZFhU/2NYVf9xVlP/hVRP/4RU + T/9rWFD/WFpT/1FaV/9MWVr/S1la/1RYWv9eVVr/YlVa/2RXWP9kVlj/YFhV/1paVP9YWlP/VltR/1db + Uf9bWlL/XltS/15bU/9cWFL/VFdR/0NiYP9DhYz/XLbJ/2Xc9/9R2fv/PM31/znO+P9B1fr/Rtbx/0jW + 6v9H1+j/RNjp/0TX6P9FzNz1RLG7sUajrD3///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BQ627Mzq1xbFH1OX3R9fo/0XX + 6f9G2Or/RtXs/0TP6v9P1/n/UdTy/1/R6f991un/ltTk/2+Omf9VZGr/U1td/1ZRUv9nWlv/Z1hV/1xX + T/9VW0//VVxR/1JZTv9PWU3/VFlO/19aUf9kWFL/Z1dT/2hWVv9lVlf/XldX/19XV/9eV1j/W1dY/2BW + WP9sVVf/bFVX/2ZXVP9iWFH/Y1hS/2VYUv9lWFL/ZVlR/2RZUf9kWVH/YVpR/2FaUf9fWlL/XVpS/11a + Uv9dWVT/XVlU/15ZVP9gWFX/Y1dV/2RXVf9lV1X/YlhV/15ZVP9fWVT/X1lU/11ZVP9cWVP/XFpS/1xa + Uv9dWlL/XVpS/11aUv9dWlL/XVpS/15ZUv9fWVL/XllS/11aUv9eW1L/U1FM/1dVV/9OZW//IXeE/1bB + 2P9Z1/P/StLv/07T7/9Sz+v/V9Ht/1vR8f9d0PX/W9D5/0zV/v9I1f//Ttf9/0zM4/89o6r/Wmhg/11T + Sv9bVlD/YFlV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVv9hV1f/YVdX/2FYVf9hWFX/YFlU/19Z + VP9fWVT/X1lS/19ZUv9fWVL/X1lS/19ZUv9hWVL/YVlS/2JZUv9iWVL/YllS/2JYVP9hWFX/bFZT/3xV + Uf97VVH/aFhR/1laU/9UWlb/UFlY/09ZWP9XWFj/XlZY/2JWWP9iVlb/aFtb/2ZeXP9bWlT/U1NN/1ZZ + Uf9eYFj/Xl1V/11ZUf9cWlP/UldS/1hkYP9vkpH/g8PK/4LW6P9k1u3/Vdf2/0nV+v9A0ff/QdPw/0XV + 7P9G1+n/Rdjq/0XV5/9Fy9z1Oqy4sT6jrDP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUKxvwU8rLsxTq68pVPQ + 4PNK2uz/RNjq/0XX6f9F1ur/R9jw/1LX9v9Yz/L/V8vr/2DV6v9cz97/RaWz/y5xfv8zV1v/WVNM/2VX + Tf9kWlL/Y1tW/2JZV/9qVVr/bVZd/21XXP9qVVn/Z1JT/2JYUv9fW1D/X1xO/11cTv9dXE7/XVtQ/1ta + Uv9WWlX/T1pX/09aV/9SWlb/VVtU/1daVf9YWlX/W1lV/1xZVP9eWVT/YFhU/19YVP9fWFT/XllU/11Z + VP9dWVT/XVlU/11ZVP9dWVT/XVlU/15ZVP9hWVL/YllS/2BZU/9fWVT/X1lU/19ZVP9fWVT/XllU/1xZ + VP9cWVT/WltS/1pbUv9aW1L/WltS/1pbUv9bW1L/W1tS/1tbUv9aW1L/W1tS/1tXT/9hWFL/X1xa/1Ba + Zv9zhJr/gMTZ/27f9P9X0+r/T9Xq/1DV7/9T0/P/VM/0/1DM9P9EzPL/P831/1/Z+v9twtf/S36H/2Ni + V/9mV0j/YVhO/19ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9eWlP/XlpT/15aU/9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/11YVf9dWFX/W1lV/1tZVf9ZWVX/WFpV/1haVf9WWlX/WFpU/1JZ + Vv9JWlr/Slpa/1dZVf9iWVH/ZVtN/2dcTP9nXEz/Y1xM/2FcTf9kW1D/ZltV/2BTVP9XTVH/XVRY/2de + Y/9fWl7/VlFV/1tVV/9iVlT/UFJT/x9rdf9HprT/Z8zc/2nV6P9k2O7/UNDs/0XL6P9Fz+r/R9bu/0TW + 6v9F1+n/RNrs/0fW6P9MxNXxTqa1ozyksC89p7AF////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AU+k + sitHrb2LRczd50Xd7/9E2er/Rdfp/0TX6v9L1u7/UdDx/1LN8P9S1Or/WeHu/2PV4/9nr73/YoOG/2lX + TP9uVUb/bFpQ/2hXU/9kVVX/b1Jc/3RTYP9yU1//b1Jb/21TV/9iWFP/XVxO/11eTP9cXkz/XF5M/1xd + Tv9bW1H/UltU/0dbWP9HW1j/TFtX/1FcVf9TWlX/VFpV/1dZVf9ZWVX/W1lV/15YVf9eWFX/XlhV/11Z + VP9cWVT/XVlU/11ZVP9dWVT/XVlU/11ZVP9dWVT/YVlS/2FZUv9gWVP/X1lU/19ZVP9fWVT/X1lU/19Z + VP9eWVT/XFlU/1lbUv9ZW1L/WVtS/1pbUv9aW1L/WVtS/1lbUv9ZW1L/WVtS/1lbUv9gW1T/ZFpQ/19W + Uv9aU2H/VlRr/1SSqP9XzeH/Vtnv/0vZ7f9K1fD/UdL0/1jS+P9W0fv/RMz0/zrL9P9e2vr/a7zQ/zlm + b/9dWU7/aVlH/2RbT/9eWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XlpT/11aUv9dWlL/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/11ZVP9cWFX/XFhV/1hZVf9YWVX/VllV/1RaVf9UWlX/UlpV/1Ra + VP9KWlj/Olte/ztbXf9SWVf/ZVlR/2tbS/9tXUj/bl1I/2deSP9jXkr/ZFtO/2VaU/9fUVT/XlBY/19U + Xf9hV13/X1Vb/1tPVP9fTE7/eFlW/4Z7e/9asrz/YNDf/2XX6f9i1un/Xdbs/07S7v9I0uz/RtXq/0bX + 6P9F1+n/RNvt/0DV5/9Cv9HnSqe3i1Ccqyv///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BPZ6uIUKuvHtMyNjZS9nq/0bZ6/9E1+n/Rdbo/0nU7P9S0/H/W9Tv/2DU7v9m2vH/bNnq/2zD + zP9omJn/UHBu/0FVVf9JUFL/XFlc/2RVWf9kUlX/YlRV/2RaWP9kW1f/X1pS/19aUf9hWlD/YlpQ/2Ja + UP9fWlH/XFtR/1dcUf9QXFL/UFxS/1RbVP9YWlX/WllW/1tZVv9dWFb/YFhW/2JYVv9jV1b/Y1dW/2NX + Vv9hV1X/YFhV/15YVf9dWVT/XVlU/11ZVP9dWVP/XVlT/19aUv9fWlL/X1lT/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/11ZVP9bWlP/W1pT/1taU/9bWlP/W1pT/1taU/9bWlP/W1pT/1taU/9bWlP/YVxV/2Na + Uv9fVVD/WlRa/09JWP9CYXD/T5al/2vH1/9q2On/YNnu/0/S7P9K0fD/U9j5/0/W9f9Q0fT/a9Ht/2up + uf88WWD/XFdM/2hZSv9kW1D/XllV/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11aU/9aW1H/W1tR/11a + U/9eWVT/X1lU/19ZVP9hWFT/YVhV/2JYVf9hWFX/YVdW/2FXVv9eWFb/XlhW/11YVf9bWVX/W1lV/1lZ + Vf9bWVT/VlpW/05bV/9PW1f/WFlU/2BZUf9jW0//ZVtO/2VbTv9hXE3/X11M/2BcTv9hXFH/X1lT/2Ba + V/9gWFn/WVJX/0tOVf9CUlv/RWty/2KSmP9/t8T/b9bv/2LX8/9c1PH/WNTv/1LU6/9M1u3/Stjt/0bY + 6/9E2On/Rdrs/0nS4/9JvMvZRaWzeUacqyH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wFGmqYNT6eyZ0vG181D0+X5RNfp/0XY6v9E1+n/Stbt/1rV8/9gyfD/Tc7v/zre + 8v9F5PT/WNzs/0SquP8ydID/PFxm/1NbY/9ZWFT/WVZN/1ZaTv9TYVL/U2BR/1lcUf9hWVT/ZlZV/2pW + Vf9qVlX/Y1hT/11bUf9bXU3/WV9J/1lfSP9bW1D/X1hW/2FXV/9iV1f/ZFZX/2hWV/9pVlf/aVZX/2lV + WP9pVVj/Z1VX/2RWV/9gV1f/XVhV/11YVf9dWVT/XFpS/1xaUv9bW1H/W1tR/11aUv9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XVlU/11ZVP9dWVT/XFlU/1xZVP9dWVT/XVlU/11ZVP9dWVT/XVlU/2Bb + VP9iWlP/Y1hQ/2JUUf9oU1j/XE5U/1pkav9umKH/esLP/3HY5f9P2On/OtLo/0XX7P9V2u//b9n0/3jA + 1v9niZb/UFVb/2RaUP9oWkz/Y1pQ/15ZVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BZVP9bW1L/VlxP/1dc + UP9ZW1H/XFlU/15ZU/9gWFP/ZFdV/2RXV/9mVlf/Z1ZX/2dWV/9nVlf/ZVZX/2VWV/9lVlb/ZFdV/2RX + Vf9iWFX/YlhV/2NZVP9kWlD/ZFpQ/15aUv9aWlL/W1pU/1xZVf9bWVX/W1tR/1xcTf9bXU3/WV1M/1xi + Tv9cXUz/XldO/1xWWf9KWmL/QXOA/zuquP9A1ef/TNn3/0zN+/9Mzv3/TNP+/0nV+P9E0+z/R9fp/0XX + 6P9F2Or/Rdfq/0TQ4PlLt8bNVKGrZU6cpg3///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AUSapgMzoLBDPMPUw0PU5vdG2ev/Rdfp/0XX6f9I1er/Uc7q/07U + 8P9A2u//P9Ti/17X5P+B3un/hsTO/2uLlP9RW2L/V1ZU/2FdVv9dYFX/UVtO/1BZTP9ZW1D/YFpT/2VX + VP9oV1T/aFdU/2JYU/9dW1H/W11O/1heS/9YXkr/WltR/15YVv9gV1f/YVdX/2NWV/9nVlf/aFZX/2hW + V/9oVVj/aFVY/2ZVV/9jVlf/YFdX/11YVf9dWFX/XVlU/1xaUv9cWlL/XFtR/1xbUf9dWlL/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/11ZVP9dWVT/XVlU/1xZVP9cWVT/XVlU/11ZVP9dWVT/XVlU/11Z + VP9fWlP/YVpS/2RZU/9mWVf/Z1Vb/1xVXf9GWWD/Omlz/0iTn/9cwtH/W9/y/0jd9P9A0Ob/TdPp/2/d + +f9ns8r/S298/05WXP9mXVP/aVtN/2JYT/9eWVX/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWVT/W1tS/1dc + T/9YXFD/WltR/1xZVP9eWVP/YFhT/2NXVf9jV1f/ZVZX/2ZWV/9mVlf/ZlZX/2RWV/9kVlf/ZFZW/2NX + Vf9jV1X/YVhV/2FYVf9hWVT/YVpR/2FaUf9dWlL/W1pS/1xaU/9dWVT/XVlU/1xbUP9dXU7/WlpM/1JV + Rf9YXEv/XV5Q/1tWT/9eXF//c4WO/4u6x/9y1uP/VNrq/1XW8v9U0fv/Ts37/0bM8v9D0Or/Rtbq/0XX + 6f9F1+n/Rtns/0TP4fc/ssHBRJqoQU+apAP///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BMaCwCTzD1CFRuMqfVcrd+Uvd7/9E1+n/Rdfp/0bV + 6f9L1+z/U9fw/1bV7/9Q0+7/U9Xu/1zV7f9dyN7/S6W3/zZ1hf8vVmL/Q1BY/1lYW/9XXFX/VV5Q/1Vd + Tv9WXU//V15O/1hdTv9gWlH/ZFlS/2VXVf9lVlb/ZVZX/2NZU/9hWlH/YllS/2NZUv9kWFX/ZVhV/2VX + Vf9lVlf/YldX/2JXV/9gV1f/XlhX/15YV/9cWVX/XFlV/1xaVP9dWlL/XllS/2BaUf9gWlH/X1pS/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1hV/2JXVf9gWFX/YFhV/2BYVf9gWFX/YVhV/2JX + Vf9iV1X/XlVS/19WU/9hWVX/XFpS/1hZUf9VWlL/T1lT/0pWVv9PWGH/hYWY/4TF1v9h4/D/Utzl/0na + 4f9O6/H/X6u3/2VYZ/9bU1r/YVdU/2FXUP9eVlH/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/15a + Uv9eWlH/XlpR/15ZUv9eWVL/X1lT/19ZVP9gWVT/YFhV/2BYVf9hWFX/YlhV/2JYVf9jWFX/Y1hV/2NY + VP9kWVL/ZFlS/2VaUf9mWlD/YlpS/1pZVP9bWVT/YFhT/2NYUv9iWVH/YFtR/2BbUf9fW1D/XllS/1xa + Wf9ZYF//PU9V/yVRWP8udYD/TKm4/1bM2v9Z1en/WNbu/1XT7v9Rz+//UdX6/0rS9P9F0+v/RNbp/0XX + 6f9F2ev/Sdrs/0vE1fdGrbydP7LBIUSaqAn///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BV7LFKU+vw4VBx9rhRtzv/0PZ + 6/9D2On/R9fp/07W6/9S1e//TNby/0bT8f9K1PH/Vdjv/2LU6P9ruc7/Y46e/11jb/9eTlX/WVVO/1dc + S/9UX0v/UmBM/1FhS/9TX0v/X1xP/2dYUf9oVVb/aVNa/2lUXP9mWFX/Y1tQ/2VaUf9mWVH/ZVhU/2VX + VP9lVlX/ZVVY/2JXWP9iV1f/YFhX/15YV/9eWFf/XVlV/1xZVf9cWlT/XVpS/19ZUv9hWlH/YFpR/2Ba + Uv9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hWFX/YVhV/2JYVf9iWFX/YlhV/2NY + Vf9kV1X/ZFdV/2NZV/9hV1X/XVdS/1xfVP9TW07/UFtO/1NcUf9WWVX/WlBZ/3JSaP9JfI//Mb3I/1Pp + 8f8/5Oj/Luvs/0Wapf9lR1j/Y1Ve/2JXVf9hVlL/X1dT/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWlL/X1pR/19aUf9fWVL/X1lS/19ZU/9fWVT/X1lU/19YVf9gWFX/YVhV/2JYVf9iWFX/ZVhU/2RY + VP9kWFP/ZVlR/2VZUf9oWlD/aVpP/2NaUv9YWVb/WVlV/2FYUv9mWFL/ZFpR/2FcTv9iXE7/ZFxP/2NY + Uf9cUVH/Uk5S/1djbv9bjZj/XrjH/1vV5/9I4O3/Qtnt/0/T7/9X0vD/UNLw/0nU8P9G1ev/Rdfo/0XZ + 6v9E2uz/Q9Tn/0C+z+FGqbiDSKe1Kf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFGpbkVOau9bUvD + 08NJ0OD3R9jp/0TZ6/9E1uj/Rtbq/0nY7f9K1vH/TNHu/1TP6/9n2PP/gN73/37L3v9uprT/XH+K/0Zk + Z/8/WFT/RlZQ/1JZUv9WW1H/WFtR/15aU/9kWFX/Z1dY/2pUWf9pUlj/Y1lT/15cTv9eWU7/X1hP/2Fa + U/9iW1T/YVpV/19XVf9bWFT/XFhW/1tZVv9ZWVb/WVlW/1pZVf9bWVX/XFpU/15ZU/9hWFP/ZFlS/2VZ + Uv9iWVP/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVf9gWFX/YFhV/2BY + Vf9hWFX/YlhV/2JYVf9kW1j/YlhW/15WUv9gXlb/WlpS/1daUf9YW1T/W1xZ/15aXf9YSVP/ME9Y/yx7 + gP9dsrX/bcvL/1/IyP9ThIj/V0lQ/19ZW/9bV1P/XlpV/2BbVv9fWFT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/YVlT/2NZUv9iWVL/YVlT/2BZU/9fWVP/XllU/11ZVP9cWVX/W1lV/1tZVP9cWVT/XVpU/15a + U/9eWVP/XllR/19ZT/9hWlD/YltP/2NcTv9gWlD/W1hU/1xYVf9jWVb/Y1VT/2BUUf9hWVT/X1hV/1FT + Uf9JVVf/SWRq/0t5gv9noK//fM3d/3ne8/9i1u//UNLp/0/S7P9S0+//Udbv/0vX7v9F1en/RNfo/0Xa + 7P9H2On/Scnb90e2x8M7obFtQZ+uE////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFQnqhBUsHPpUnQ4edE1+n9Rdjq/0TX6f9E1+j/Rdbs/0vU7/9S0PL/Us/0/1HR8/9R2fT/W+H2/13P + 4f9FmKr/N29//0RbaP9YVV//XFBY/2BUWP9gWFr/YFla/2VWWf9tU1f/blFX/2BaUf9XXkz/VltM/1da + Tv9ZXVD/WV5R/1heUv9WXFL/U11S/1NbVP9TWlX/UlpV/1JaVf9VWlX/WFlV/1xZVf9gWFX/ZFdV/2pX + VP9tV1T/ZVhU/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFhU/2FYVP9hWFT/YVdU/2JYVP9hWVT/YFlU/2BZU/9dWVP/XVpT/19X + UP9gUUv/alxW/56Riv+ekIn/c25m/1JXT/9ZXFX/UVdQ/1VbVf9cXFf/X1hU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/XllU/2RYVP9qV1T/aVdU/2RYVP9iWFT/X1hU/1xZVP9ZWlT/V1pU/1RbVP9SW1L/UFtR/1Jd + Uv9SXlL/VF1R/1VcTv9XXEz/WltN/1hdTP9aXkv/XVtO/19XU/9iVlf/Z1la/2NSVv9eT1P/Y1Rc/2FU + Yv9HVWX/PGt8/0ecr/9S0OL/Vdbu/1XZ9f9U1fb/U87y/1rL8P9bzvH/UNXv/0XY6/9E1+j/Rdjp/0XX + 6f9E1uj9Scrb51CywaVQlqQ/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BT6KuA1LE0gdEvcx7RMjZ40na7P9E1+n/Rdfp/0XX6f9G1+r/TNbu/1LW8/9OzOv/UNDq/1nV + 6v9s1ub/htPj/4i8yf99kZz/aWVt/1xPVv9iVVj/ZFxc/19XWP9fTlH/ak9T/3dbYP9hWlL/WF5N/2Bk + Vf9eYVX/V1lN/1FVSP9VWU7/XGBX/1liWP9VXFb/U1lV/1NaVf9TWlX/VlpV/1hZVf9cWVX/YFhV/2RX + Vf9pV1T/bFdU/2VYVP9eWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVP9hWFT/YVhU/2FYVP9hWFT/YFlU/19ZVP9fWVT/XVlU/11Z + VP9fW1b/XFlU/1dUT/9jY13/YWFb/1dYUv9VWFL/X2Fb/1hcVv9PVE7/VVVP/2FaVf9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/15ZVP9kWFT/aVdU/2hXVP9kWFT/YlhU/19YVP9cWVT/WlpU/1haVP9VW1T/U1xT/1Jc + Uf9RWlD/UVtQ/1ZeU/9bYVT/XGBR/1tbTf9XWkr/WVtK/15cT/9iW1f/ZVlZ/2RVVv9pWFr/a1pe/2dY + Xv9rXWn/e4ST/4u0xP+D0eL/ZNnp/1jR6P9U0ez/VtP0/1bS9P9W0/D/T9Xt/0fX6v9E1+n/Rdfp/0XY + 6/9G1uf/Qb3M40OuvXlQt8YHT5uoA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BRb/PFUKvvldOuMa7Vtbn/0ja7P9F2ev/Rdfp/0bX6v9I1+v/StTp/1PX + 7f9X1/D/WNPw/2DU8/9g0vH/XMnp/1Gxz/9AiqT/LWN6/ylNXP89TlX/VVlY/1tdVf9dVU3/YFZR/2NY + U/9jWVT/ZVpU/2ZbVv9lXFX/ZFpS/2FXUf9fWFH/X1pT/1xaVP9aWlP/W1pT/1tZVP9cWVT/XllU/2BY + Vf9jV1X/ZVdV/2dXVf9jWFX/XllU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9gWFT/YVhU/2FYVP9hWFT/YVhU/2BZVP9fWVT/X1lU/11Z + VP9dWVT/XFhT/1xZVP9cWVT/V1VQ/1RSTP9WVE//WFpU/1xcVv9dXlj/WlxW/1xaVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9eWVT/YldW/2ZWVv9lVlb/Y1dV/2NXVf9hWFT/YFhU/19YVP9dWVL/XVlS/11b + U/9dW1P/W1lR/1xXUv9dWFP/X1hT/2BXUv9eVVD/X1ZR/2RbVv9lXFf/XlZW/11VVv9FTlT/L0xW/ype + bf88iJn/WrHJ/2XM5/9j1vH/W9Tv/1TR6/9a1/H/T9bs/0fV6f9K1+z/Sdbr/0fX6v9F1+n/RNvs/0fZ + 6/9Oydn/T7K9uUSos1dCsL8V////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFDqrgDS5+tO0yxwns/w9bXQtbq/0Xc7v9D2Or/RNfo/0bY + 6f9L2ez/Tdbu/0vS8P9M0fX/TNX8/0fY//9M0/r/WcLl/1ymxv9XhZr/WGdx/1dYVP9TWEf/X1dI/2lW + UP9rVlT/aVZT/2tXU/9rWFT/aVhT/2dXUP9lVU//ZFZQ/2RaUv9fWlL/XFpS/11aUv9dWVT/XVlU/15Z + VP9gWFX/ZFdV/2VXVf9mV1X/YlhV/15ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/YFhU/2FYVP9hWFT/YVhU/2FYVP9gWVT/X1lU/19Z + VP9dWVT/XVlU/1pWUf9cWlX/Y2Bb/1pWUf9YVVD/XVtW/11eV/9YWFL/WltU/1tcVv9eW1b/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/XllU/2JXVv9mVlf/ZFZX/2NXVf9jV1X/YlhU/2FYVP9hWFT/X1lS/19Z + Uv9fWVL/YFlS/2JbU/9lWVX/ZVhU/2VXVP9nV1T/aFdU/2lYVv9qWVb/aVdT/2RRT/9fTEz/Ymhv/2OJ + mP9bpbj/Ur/W/1nX9v9O2vv/Rtb2/0rT8/9P0O7/U9fw/0rY6/9C1+f/RNjo/0TX6P9E2uv/RNrt/0HR + 5v9Bu9DVT6izeVOepDlGpK4D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BNbHGX0LC0rNLzdvrSdXm/0bZ + 6/9F2Or/RNfo/0XV6f9J1ev/TdTx/0/U9P9N0fT/U9Lz/2bY8/952vL/fMzd/2+rtf9Yhoj/R29s/01l + ZP9RVlj/VlFV/1tVWP9cV1n/XVZX/15VVP9iV1T/ZVlW/2VZVf9jWVP/YVlS/19aUv9gWlL/X1lT/19Z + U/9fWVP/X1hU/2FYVf9hWFX/YVhV/2BYVf9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/2BYVP9gWFT/YFhU/2BYVP9gWFT/YFlU/19Z + VP9fWVT/XllU/15ZVP9cWFP/XlpV/2JeWf9cWFP/XFlU/2BdWP9eXlf/WVhS/1hXUf9YV1L/XFhT/2BZ + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9gV1b/YldX/2JXV/9iV1X/Y1dV/2NYVP9jWFT/Y1hU/2FY + U/9hWFP/X1dR/15XUf9fWVX/YFpY/11ZWP9bWFn/Wlha/1lYW/9YWFr/UVFU/1BaX/9Xcnn/Xn2F/3Ok + r/+Gzdz/g+Dw/2vc7/9X1Oz/Ss7p/0jQ7P9P1vH/T9Xv/0nV6v9H1+n/Rdjq/0XY6/9G2ez/R9Lk/0nH + 1+lDt8uzPKO7X////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFHqLEnVrC3iVLP + 3tlF1OX3Rdbo/0XX6f9F1+n/Rdfp/0bW6v9J0+r/VNTu/1HW7v9A1+j/PNbj/0be6v9T6PP/T9ro/zyx + w/8shJv/NWd7/0NZav9FVWX/QlNh/0tXY/9XWmP/X1xg/2JaXP9kV1j/ZFVT/2ZXUf9nWVH/Z1lR/2RZ + Uf9iWlH/YFpR/15ZU/9cWVX/WVlV/1hZVf9cWVX/YFlU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/YFpV/2BaVf9cVlH/XFhT/11ZVP9dWVT/XVhT/1xYU/9cV1L/W1hT/11Y + U/9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/XVhW/1pYV/9bWFf/X1hV/2JXVf9lV1T/ZldU/2ZX + VP9nV1T/aFdU/2VWU/9gVVT/WlVW/1NVWP9NVVv/RlRe/z9VYf87V2b/Q15s/0Rfcf8+e5P/PbHM/1PT + 7P9Q2ez/SNXl/0jX5v9O2+v/Sdbl/07X6f9O2Oz/Sdbq/0XW6v9E1+n/Rdfp/0XX6f9E1uj/RdPl90rB + 0NdSpa+HS6CuJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BR6q0A1a0 + vQ1OyNczPLXFsUPQ4vFF2uz/RNnr/0XX6f9F1+n/Rdfp/0nW6v9J1uv/Rdjp/0bb6P9I3Ob/S9rk/1HW + 4f9hz97/esrf/4+6y/+Ilqb/ZWx8/0ZQXf9FS1b/UlFY/1xVWv9fVFb/YVNT/2ZVVP9oWFL/Z1lR/2ZZ + Uf9kWVH/YlpR/2BaUf9eWVP/XFlV/1pZVf9ZWVX/XFlV/2BZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/2FbVv9fWVT/W1ZR/2FdWP9iXln/XFhT/1lVUP9dWVT/X1tW/2Bd + WP9hXFf/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/11YVv9bWFf/XFhX/19YVf9iV1X/ZVdU/2ZX + VP9mV1T/ZldU/2dWU/9pWlf/aFxb/19ZWv9YVlr/UVVa/0lRWv9GVWH/UGVy/3aJlv+htMX/lMvh/2DM + 5f9e1u3/V9rr/1Lb6v9Q2un/Stbm/0jW5/9K1+r/SNjr/0XX6f9F1+n/Rdfp/0Tb7f9D1+r/P8XY8Tus + va9HuckxUqu1DUqisQP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////ATqvvytKqbddULjFuVDQ4f9N3e//Rtnr/0XY6f9F1+n/Rdfp/0XX6f9I1+z/TtTs/1XR + 8P9a0/T/X9f3/2jX+v9p0uz/Zcvd/12+zv9QpbX/QIiV/zBpc/8sVFv/NE9S/0NUVP9VXFf/XlxU/2Ba + UP9hWlH/YlpQ/2JbUP9fW1D/XVpR/11aU/9aWlT/WVpU/1xaVP9gWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9hW1b/X1lU/1tWUf9iXln/Yl5Z/1xYU/9ZVVD/XVlU/19b + Vv9hXln/YVxX/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9dWVX/W1lW/1xZVv9fWVT/YlhU/2RY + U/9lWFP/ZVhT/2JYU/9eWVT/WVhV/0lUU/80T1H/K1FW/zFlbv9BhZD/UaSy/1i5yv9eytr/Z9bp/2fa + 8v9c1vT/U9Dw/1LS8v9Q1fH/Tdbu/0jW6v9G1+n/Rtfp/0XX6f9F2Or/Rtvt/0ra7P9Nx9f/UK6+t0yj + sV05pbYr////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AViqtTtPvcyFQcDPy0LO3vlE2ev/Q9vt/0TY6v9F1+n/RtXr/0rT + 7P9R0vH/VdL2/1LT+f9Q0fn/S9Tz/0ve8f9T4vH/X9jp/1/F0v9crbf/WpSa/1l/gP9UbGn/UlpS/1hT + Rv9gVEf/YldL/2ZaTf9nW07/YltO/19bTv9eWlH/W1pU/1laVP9bWlT/X1lU/15ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19ZVP9fWVT/X1lU/19Z + VP9fWVT/X1lU/19ZVP9fWVT/X1lU/15ZVP9eWVT/XllU/19ZVP9fWlT/XVlV/1xZVf9dWVT/YVlT/2ZY + U/9qWFL/aldP/2hVTP9iU0n/WU5G/1hVT/9ZZ2P/V3p7/12Qk/9hqLD/Y8HM/2LV4v9a4vP/SeP1/zva + 7v9B0+3/UdT0/03Q8v9M0fL/SdTv/0fV7P9G1uv/Rdfp/0TY6/9E2+7/Q9bp/0HG2PlFu8zLTrDAg1ed + qzv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////ATCgrE0+wtGVRcrZ0UnP4PNI1uf/Rtnr/0XY + 6f9D2On/Rtfp/0nV6/9K0+3/S9Hw/1HV8P9S2O3/VNbp/2DV6f9v2uv/gd7t/4nX4/9/wcr/aqCn/1mC + hv9VcnL/VWln/1FgXv9PWVX/UldS/1RYUv9WWVL/WVhS/1dZU/9aWlX/X1pV/2FYVf9gWFT/YFhU/2BY + VP9gWFP/YFlT/2BZVP9gWlP/YFpT/2BaU/9gWlP/YFpT/2BaU/9gWVT/YFlU/2BZVP9gWFT/YFhV/2BZ + Vf9gWVX/X1lU/19ZVP9eWVP/XllT/15ZU/9fWVP/X1lU/19ZVP9fWVT/X1lT/2BZVP9gWVT/X1lU/19Z + VP9fWVP/XllT/15ZU/9eWVP/XllT/15ZU/9gWVT/YFhU/2BYVP9gWFT/X1hT/2BYU/9gWVP/YFlT/19Z + U/9fWVP/YFpU/2BaVP9fWVP/YFlT/2BZU/9hWVT/YVlV/2FZVf9gWFT/X1dT/1xYVP9YWlb/WFpX/1hZ + Vf9UVVP/UFRT/1BXVv9VXmD/WGhp/1Zscf9ffoT/cJ2l/3+7xv+N1eL/id7t/3ba6/9i1eb/WNbq/0/Y + 7P9I1ev/R9Lq/0vS7f9M1u//R9bs/0TX6f9E2On/Rdjq/0bZ6/9H1OX/R83d80PB09E7sMKTPZytTf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AUqqs0dVtL+nUs7e50jV + 6PtF1uj/Rdfp/0XX6f9F1+n/Rdfp/0PX6v9K1+z/Utbt/1LV7v9O1PD/S9Tw/0nV8v9I1vL/Sdfz/07X + 8/9a2Pb/VMTh/0KjvP81hJn/KWp7/zBebf89XWf/R1xg/1BXVv9PV1L/XFpW/2ZZWP9mVVf/ZVVW/2NX + U/9jV1P/Y1dS/2JYUf9jWVL/ZFtR/2RbUf9jW1H/YlxR/2JcUf9jXFH/ZFpU/2RZVP9jWVL/YlZT/2JW + Vv9kV1j/Y1hX/11aUv9dWlL/XFlR/1xZUf9dWlL/X1lS/2BaU/9hWlP/YVlS/2BYUf9hWVL/YVlS/2BZ + Uv9fWVL/XlhR/1xZUf9cWVH/XFlR/1xZUf9cWVH/Y1hV/2RXVv9jV1T/YldT/2FWUv9iV1H/Y1lS/2NZ + Uv9hWlH/YVpR/2NcU/9iW1L/YVlR/2JYUf9jWVL/ZVpV/2daV/9mWVb/Y1ZU/2NTUf9ZVlL/UFxX/01f + Xf9HXl//NVpg/yZaZ/8maHv/NIOd/0ahwP9XveH/W87z/1bS+P9Q0vb/TdL0/03S9P9M0vP/TtPu/1LU + 7f9U1ev/UdXq/0rX6v9E2On/Rdfp/0XX6f9F1+n/Rdfp/0XW6P1H1eb7TcbU50+qtKdHoKtH////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFKqrQJVrnEF07B + z0E9r76rRsXX60jY6f9F3O3/RNjq/0TX6f9E1+n/Rtfp/0jX6v9K1ur/StXs/0vW7/9L1vH/SNTw/0jU + 7/9M0+//XNbz/2TQ6/9vyuH/f8fb/4a+zv+Hrbr/e5Oc/2x3ev9lYmD/WVdQ/1lNR/9jTUv/a1JT/2pT + U/9rV1P/bFpV/2paVP9oWlL/ZllR/2VYTv9jWEz/YlhN/2BZTf9hWk//YlpP/2NYUv9jV1P/Y1hR/2JV + U/9iVVX/Y1ZY/2JXVv9dWlL/XVpS/11aUv9dWlL/XltT/2BaU/9gWlP/YVpT/2FZUv9gWFH/YFhR/2BY + Uf9gWFH/X1lS/19ZUf9eW1P/XltT/15bU/9fXFT/X1xU/2VaV/9mWFf/ZFhW/2RZVf9kWVX/ZFpT/2Ra + U/9kWlP/Y1tS/2NbUv9fVk3/X1ZM/2VaUP9pW1P/aVtS/2lXUf9oVVD/aFNP/2lUUf9uVlP/XlFL/1BS + Sv9WX1v/ZnRx/3SQlf+BrLf/hL3Q/3vC3P9xxeP/aMjt/2HO9f9b0vr/VNL3/0/S9f9O0fT/TdLx/0zV + 7f9M1uv/Stfp/0jX6f9G1+n/Rdfp/0TX6f9E2ev/Rtzu/0XU5v9Cvs3pPau3qUq4xUFQr7oXR6GsCf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BOqa0K0bE1UdIucqRS73O3U/Q4v9L3O7/Rtvs/0XY6v9F1+n/Rdfp/0bW6f9H1+v/SNbr/0nV + 7P9I1e//SdTv/0zU8f9R1fH/Wtjy/2Pc9f9n2vH/Z9Hl/2TG1/9ivMv/YbO+/1Kmrv9Hl57/QICI/z1q + c/85Ymj/LVVb/ypOU/8wTlL/OlNV/0RXWf9KV1j/TlVU/1NWU/9ZWVb/XVlU/15ZU/9gWVP/YFpV/2Bb + U/9gW1X/X1tV/15bVP9dWlP/XFdS/1xXUv9dV1L/XlhT/2BZVP9iWlX/YlpV/2NZVf9jV1T/YldT/2RZ + Vf9kWVX/Y1lV/2FZVf9hWVX/X1lV/15YVP9dWFP/XlhT/15YU/9fWFX/X1hW/2BYVf9hWVT/YVlU/2BZ + Uv9gWFH/XlhR/1taUf9YWlP/VVlU/1BaVv9HWVX/PVVV/zNRUf8rTlD/KFFX/zBeZP8/bnT/RniB/0eO + nf9JoLP/Uaq8/167zf9myt7/atTo/2bZ7P9e2Ov/WNfr/1ba7/9R2O7/S9bs/0vV7f9L1Oz/StTt/0nU + 7P9H1ur/R9fq/0XX6f9F1+n/Rdnr/0fc7v9K2u3/Ssrc/0i3yNtFtMSRQbvJRzuhrSv///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BR6e3G0+svV1TwtSRSMDRy0fJ2+9F1uj/Q9zu/0Ta7P9E2Or/RNfp/0XW + 6P9H1+r/R9ft/0bX7v9D1e7/QdXw/0HX8/9A1/T/P9jz/0LY8P9K2/H/VeH1/1vj9f9T3e3/StTg/0y/ + yv9UqbT/U5+n/0WPmP8/gYr/QXZ+/0Rvdv9HaG3/SV5j/0pVWP9PUlL/VlFS/1xRT/9eUkz/XlNM/19W + Tf9gV03/YVlP/19aTv9dWkz/XllO/2RXVP9kV1T/Y1dT/2NWU/9kV1T/ZlhU/2VXVP9mVlP/ZlRR/2VU + Uf9pV1X/aVdV/2dXVP9lV1T/ZlhU/2NXU/9jV1P/YlZS/2JWUv9iVlP/YFRR/2BVUf9iVVH/Y1ZQ/2JV + T/9hU0v/YFJI/15SR/9ZVEn/VVRM/1NYUv9QXlv/S2dm/0hxc/9HeX3/RYOK/0SPmf9Lnar/WKy3/1az + w/9Nx+P/Stj8/1Dc/f9S4P//S935/0TY8f9A2ev/QNvq/0Hd6f9E3ur/Qtrn/0HX5f9F1+f/Rtfn/0bX + 6P9G1+n/RNjp/0TZ6/9F2+3/Q9ru/0LR5P9DxdbvSL3Py0y5ypFKo7NdRaKwG////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AT+brElIs8eNSMPWw0fM3udI0OL5R9Tm/0bY + 6v9F2Or/Rdjp/0XX6f9F1+n/Rdbq/0TV6/9E1e3/RdXu/0fW7v9M1+7/U9fu/1fW7v9b1uz/Wtbr/1vX + 6f9r2er/gtvr/4fa6f+F1+b/g87c/3q9yv9tqLT/Y5Wh/1uGkP9afYX/WHR7/1VrcP9ZaW3/V2Zn/1Rj + Y/9TYWD/UWBc/09eWv9LXFf/R1lT/0pYUv9UWVj/VFhY/1NXVv9RVVT/UFVU/1JVVP9SVFT/U1RT/1RT + U/9TU1P/VVVV/1VVVf9TVVT/UlRU/1NVVf9RVVX/UlZV/1JWVv9SV1b/U1dX/05YVv9MW1n/UV5b/1Vh + Xv9WYmH/V2Ri/1pmZf9bamr/Wm9v/1hxdP9aeHz/XoOJ/2SUnP9vqbL/ervG/4PL2P+E1+X/g9vr/4Lc + 6/962+z/ZNbv/1bU8f9Y1vL/VdXw/07S7f9K0+z/Sdjt/0rc7v9I2+v/Q9bm/0LV5f9E1uj/Rtfp/0XX + 6f9F2Or/Rdnq/0bX6f9G0+X/R9Dh+UTJ3OdAu83DPae5jUCaqkn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AU6ktRtSnK1rU7PGv1HI + 2etI1ef9Rdjq/0XX6f9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0bW6f9J1ev/TdXu/1HT8f9Tz/P/U8z0/1TN + 9f9V0vn/UdP5/03S9/9Q1fr/U9n7/1bY+/9V1Pf/U9Dy/1PO8P9Wz+7/YNTw/17N6P9PvNX/ULbO/0is + w/9AoLT/OZOm/y+Jmv8ogI//HXaE/xhvfP8daHL/JF1m/yZbZf8mWmT/JVpk/yVaZP8mW2X/J1xm/ype + aP8sX2n/LF9p/yteaP8rXmj/KV1n/ydcZv8nXGb/J1xm/ydcZv8nXWf/KF9o/yhfaP8db3T/G3l8/yOA + g/8tiJD/M5Cf/zubrf9Epr7/TLHP/1K83P9WweP/X9D0/2DV+v9X0fX/UM/y/0zN8P9Jzu//SM/v/0nR + 8P9J0/D/R9Tv/1XU7P9f0+n/WtLo/1fS7P9W1O//T9Xx/0nU7/9I1O3/Rtbq/0XX6f9F1+n/Rdfp/0XX + 6f9F1+n/Rdfp/0XY6v9H0+T9TMLR6Uuuur9QnaZrSqKuG////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BUpqrEVS0 + xyNRx9gtP6+/gz2yxM1Dytz9Rtvt/0Tc7v9E2u3/RNjr/0XX6f9F1+n/Rtfp/0fX6v9H1uv/SdXs/0zU + 7/9P0/L/TtHz/0zR9v9J0ff/SM71/0bN8f9KzfL/UdH1/1fW+v9a1/r/W9b3/13T7/9h0u3/ZtTu/2vR + 6f9pzuT/asrd/2zG1/9rxdX/bcXS/2rCz/9rwc3/dr7H/4i7w/+Jt8D/hbO8/4Cvt/98qrP/eKev/3ak + rf90oqr/daCp/3Sgqf9zoKj/dKGp/3Wiq/92pa3/eqix/3+ttv+Dsrr/h7e//4y7w/+NvcX/c8PF/2rH + x/9syMj/bsfO/2vH1f9pydr/acvj/2nO7f9o0vT/aNX4/1/R9/9Y0Pf/V9T5/1XV+/9T1vz/T9f6/03W + +P9K1PX/SNTy/0bV8P9S1Ov/WdTp/1PV6f9O1ev/Stbr/0fX6/9G1ur/Rtbq/0XX6f9F1+r/Rdns/0Xb + 7v9E3O//RNbq/0LF2P0/scLNQq6+gUzB0C1LrrojUJykEf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////ATyishk6q71BRLXFYUuvu49KusjLSsPT80vS4v9K3O7/Rtzv/0bb7P9F2er/RNjp/0XY + 6f9G1+r/SNfs/0fU6/9I1O3/SdTu/0nT7P9K0ur/TdLr/1LT7v9U1PD/VtPy/1fS8f9Yz+//W9Dw/1/T + 8/9h0/H/YdPw/2TT8P9o1PD/a9bw/27Y8f9v2vL/cdvy/3Tc8f903fD/c9ru/3LY6/9v1en/bdPm/2vS + 5f9q0eT/ac/j/2nO4v9pzuL/a9Hk/2vQ5P9r0eX/bNPm/27U5/9v1un/ctfr/3La7f903O//dN3w/23b + 8v9p3PP/aNvx/2bY8P9j1vH/YdXu/1/V7/9e1O//XNXw/1/W8f9X0ez/VtDr/1rU7/9a1fD/WdXw/1bV + 8P9S1e//UNXu/0zV7f9J1uz/Stbq/0vW6f9J1+r/R9fq/0XX6f9E2On/Rtnr/0bb7f9G3e//SNrs/0jO + 3f9Iwc3zSrrGy0uvuo9EscFhPae6QUGjshn///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wFPjpYRT6GrT1C0wntLvcufRcDQx0DH2edBzN37QtTm/0Ta + 7P9E2+3/RNrr/0PZ6v9E2On/Rdjo/0fY6P9I2ej/S9rp/03Z6v9N1+r/StTo/0zT6v9O0uz/UdLw/1HR + 8v9Pz/H/UdDy/1HQ8/9U0PX/V9D1/1jR8/9Y0fP/WNHz/1nS8v9T0/P/Qtfy/0HW8v9D1vH/RNby/0TX + 8v9G2PT/R9r1/0fa9f9H2vX/Rtn1/0fb9v9H2vX/R9r1/0fa9v9H2fX/Rtj0/0XX8v9C1vL/P9bx/z/U + 8P9J0fj/TND7/0vQ+f9L0Pf/S9D2/03S8/9N0/D/TdPt/0zT6f9P0+n/Udbo/1PX6f9T1uj/U9Xo/1HU + 5v9P0+f/TdTn/0zW6P9K1+n/SNfp/0TY6f9D2Or/Q9nr/0Ta7P9F2+3/Q9nr/0HS4/9Aytr5QcjW50bA + zMdJuMOfS6+4eU6hp01Qk5cR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATiVozc3prV/OLXFrULA + 0c1Gy9zlRtHi80bS4/lG1OX/Rtbo/0XY6v9F2Or/Rdjq/0TX6f9E1+n/RNfp/0TX6f9G2Or/SNfr/0nW + 6/9L1O3/TNTu/1DU8P9S1PL/VtT0/1jT8/9Y0/H/WNLx/1fR8P9Y0e//VdLv/0zW8P9L1e//TNXv/03V + 7/9N1e//TtXw/07V8P9O1fD/TdTv/0zT7v9K0u3/StLt/0vT7f9M0+7/TdXv/07V8P9O1e//TNXv/0rV + 7/9K1O7/TdHz/07Q9P9O0PT/TtLz/07S8/9Q1PL/Udbw/0/W7f9N1ev/TNXq/0zX6v9L1+r/SNbp/0bW + 6f9D1+n/RNjp/0TY6f9E2Or/Rdjq/0XY6v9F1+n/RtXn/0bT5P9G0eL5R9Lj80XK2uU+vMvNN7C9qzil + rX8+mp83////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wE5mqgDOKq5Bzi6 + yglOoa0NU5mkR0yms5dNsb/JT7/M6UzN3f9H1+j/Rdrs/0bZ6/9F2Or/Rdjq/0XX6f9F1+n/Rdfp/0XX + 6f9F1+n/Rdfp/0XX6f9G1+n/Rtfp/0bX6/9H1+v/SNbs/0nV7f9N1O3/T9Tv/1DU8P9Q1O//UdTv/1DT + 7/9Q0+//UdPw/1DS7/9R0e//UtHw/1LS8f9T0vH/VdTz/1XU8/9U1PL/UtPx/1HT8P9Q0u//UNLv/1DU + 7/9R1O//UNTv/07U7f9M1ez/S9Xs/0jV6/9H1uz/R9br/0bX6v9F1+n/Rdfp/0XX6f9F1+n/Rdfp/0XX + 6f9F1+n/Rdfp/0XX6f9F2Or/Rdjq/0bZ6/9F2uz/SNbo/0zK2v9NucjpS626x0ylspVRm6ZHSaGtDTe2 + xAk5qbMHP56kA////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AVWUngdMoq4fTa27LVDAzjVKsb5NP6e1gTiwwLs6t8jfPr/Q+0DN3/9C2ez/RN7x/0Td + 7/9E3O//RNvu/0Ta7P9E2ev/RNjq/0TX6f9E1+n/RNfp/0XX6f9F1+r/Rtbq/0fW6v9H1uv/SNbq/0jW + 6v9I1ur/SNbq/0jW6/9I1ur/SNXq/0jV6/9I1uv/Sdbr/0nW7P9J1uz/Sdbr/0jW6/9I1uv/SNbq/0jW + 6v9I1ur/SNbq/0jW6v9H1ur/R9fp/0bX6f9F1+n/Rdfp/0XX6f9E1+n/RNfp/0TY6v9E2ez/RNrt/0Tb + 7v9E3O//RNzw/0Te8f9B2Or/Psrc/z29zfs5tsXfOa++u0WotIFPr71NTbrJNUuptytMoa0dU5ahB/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////ATuUoBUznq47Nam6UTq4yWNGs8BxTbC8iUy5 + xrNMvMnPSr7N5UjC0flIx9f/Sc/f/0jX6f9G3O//Rd3w/0bc7/9G3O7/Rtvu/0bb7f9G2+3/Rdrs/0Xa + 6/9F2uv/Rdnq/0XZ6v9E2On/RNjp/0TY6f9E2On/RNjo/0TX6P9E1+j/RNfo/0TY6P9E2On/RNjp/0TY + 6v9F2er/Rdnq/0Xa6/9F2uv/Rdrs/0Xb7f9F2+3/Rtvu/0Xc7v9F3O//Rd3w/0Xc7/9G1+j/SM3d/0jG + 1f9Iws/5Sr/M5Uu9yc1MusezTLG8h0Sxv3E4tcVjNKi2UTSdqztElZ8V////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFTlp4vU52mU1CjrnNMrLeNTLjEn07D0K1Kvsy1RcTTxUTI19VDydfhQsnY6UHK2vFBzNv3Qc3c/UHO + 3v9Cz+H/Q9Di/0PR4/9E0+X/RNTm/0TV5/9F1uj/Rdbo/0XX6f9F1+n/Rdfp/0XX6f9F1uj/Rdbo/0TV + 5/9E1Ob/RNPk/0PR4/9C0OL/Qs/h/0LO3/9DzN39Q8vc90PK2vFDydjpRMjX4UXI19VGxNLFSb7KtUzA + zatLtcCfTKyzjVClq3NSn6VTU5mgL////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BR5ylCUObojFAoqpdPaatfzqosJs4rLWvN7C5wze1 + vtU5ucXhO7zN6T3A0vE+xNb3QMnb+0LN3/1D0OH/RNLk/0XU5v9F1uj/Rdfp/0XX6f9F1uj/RdTm/0TS + 5P9D0OH/Qc3e/UDI2fs+xNX3O8DR8Tq7zOk7t8bhPbPA0z6vu8M9q7avP6ewm0KlrX9FoqldR5ugMUmc + ogf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.Designer.cs new file mode 100644 index 0000000..9aa0502 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.Designer.cs @@ -0,0 +1,319 @@ +namespace MaterialSkinExample.LoginRegister +{ + partial class RegisterForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SubmitButton = new MaterialSkin.Controls.MaterialRaisedButton(); + this.tf_register_name = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_register_class = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_register_pwcmp = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_register_pw = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_register_id = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.materialRaisedButton1 = new MaterialSkin.Controls.MaterialRaisedButton(); + this.materialLabel1 = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel2 = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel3 = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel4 = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel5 = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel6 = new MaterialSkin.Controls.MaterialLabel(); + this.SuspendLayout(); + // + // SubmitButton + // + this.SubmitButton.AutoSize = true; + this.SubmitButton.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.SubmitButton.Depth = 0; + this.SubmitButton.Font = new System.Drawing.Font("돋움", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.SubmitButton.Icon = null; + this.SubmitButton.Location = new System.Drawing.Point(221, 314); + this.SubmitButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.SubmitButton.MouseState = MaterialSkin.MouseState.HOVER; + this.SubmitButton.Name = "SubmitButton"; + this.SubmitButton.Primary = true; + this.SubmitButton.Size = new System.Drawing.Size(51, 36); + this.SubmitButton.TabIndex = 11; + this.SubmitButton.Text = "가입"; + this.SubmitButton.UseVisualStyleBackColor = true; + this.SubmitButton.Click += new System.EventHandler(this.SubmitButton_Click); + // + // tf_register_name + // + this.tf_register_name.Depth = 0; + this.tf_register_name.Hint = "이름"; + this.tf_register_name.Location = new System.Drawing.Point(12, 116); + this.tf_register_name.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_register_name.MaxLength = 32767; + this.tf_register_name.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_register_name.Name = "tf_register_name"; + this.tf_register_name.PasswordChar = '\0'; + this.tf_register_name.SelectedText = ""; + this.tf_register_name.SelectionLength = 0; + this.tf_register_name.SelectionStart = 0; + this.tf_register_name.Size = new System.Drawing.Size(260, 23); + this.tf_register_name.TabIndex = 7; + this.tf_register_name.TabStop = false; + this.tf_register_name.UseSystemPasswordChar = false; + this.tf_register_name.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_register_name_KeyDown); + // + // tf_register_class + // + this.tf_register_class.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.tf_register_class.Depth = 0; + this.tf_register_class.Hint = "학급명"; + this.tf_register_class.Location = new System.Drawing.Point(12, 254); + this.tf_register_class.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_register_class.MaxLength = 32767; + this.tf_register_class.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_register_class.Name = "tf_register_class"; + this.tf_register_class.PasswordChar = '\0'; + this.tf_register_class.SelectedText = ""; + this.tf_register_class.SelectionLength = 0; + this.tf_register_class.SelectionStart = 0; + this.tf_register_class.Size = new System.Drawing.Size(260, 23); + this.tf_register_class.TabIndex = 10; + this.tf_register_class.TabStop = false; + this.tf_register_class.UseSystemPasswordChar = false; + this.tf_register_class.Click += new System.EventHandler(this.tf_register_class_Click); + this.tf_register_class.Enter += new System.EventHandler(this.tf_register_class_Enter); + this.tf_register_class.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_register_class_KeyDown); + this.tf_register_class.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tf_register_class_KeyPress); + this.tf_register_class.Leave += new System.EventHandler(this.tf_register_class_Leave); + // + // tf_register_pwcmp + // + this.tf_register_pwcmp.Depth = 0; + this.tf_register_pwcmp.Hint = "비밀번호확인"; + this.tf_register_pwcmp.Location = new System.Drawing.Point(12, 208); + this.tf_register_pwcmp.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_register_pwcmp.MaxLength = 32767; + this.tf_register_pwcmp.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_register_pwcmp.Name = "tf_register_pwcmp"; + this.tf_register_pwcmp.PasswordChar = '*'; + this.tf_register_pwcmp.SelectedText = ""; + this.tf_register_pwcmp.SelectionLength = 0; + this.tf_register_pwcmp.SelectionStart = 0; + this.tf_register_pwcmp.Size = new System.Drawing.Size(260, 23); + this.tf_register_pwcmp.TabIndex = 9; + this.tf_register_pwcmp.TabStop = false; + this.tf_register_pwcmp.UseSystemPasswordChar = false; + this.tf_register_pwcmp.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_register_pwcmp_KeyDown); + this.tf_register_pwcmp.KeyUp += new System.Windows.Forms.KeyEventHandler(this.tf_register_pwcmp_KeyUp); + this.tf_register_pwcmp.Leave += new System.EventHandler(this.tf_register_pwcmp_Leave); + // + // tf_register_pw + // + this.tf_register_pw.Depth = 0; + this.tf_register_pw.Hint = "비밀번호"; + this.tf_register_pw.Location = new System.Drawing.Point(12, 162); + this.tf_register_pw.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_register_pw.MaxLength = 32767; + this.tf_register_pw.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_register_pw.Name = "tf_register_pw"; + this.tf_register_pw.PasswordChar = '*'; + this.tf_register_pw.SelectedText = ""; + this.tf_register_pw.SelectionLength = 0; + this.tf_register_pw.SelectionStart = 0; + this.tf_register_pw.Size = new System.Drawing.Size(260, 23); + this.tf_register_pw.TabIndex = 8; + this.tf_register_pw.TabStop = false; + this.tf_register_pw.UseSystemPasswordChar = false; + this.tf_register_pw.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_register_pw_KeyDown); + this.tf_register_pw.KeyUp += new System.Windows.Forms.KeyEventHandler(this.tf_register_pw_KeyUp); + // + // tf_register_id + // + this.tf_register_id.Depth = 0; + this.tf_register_id.Hint = "아이디"; + this.tf_register_id.Location = new System.Drawing.Point(12, 70); + this.tf_register_id.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tf_register_id.MaxLength = 32767; + this.tf_register_id.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_register_id.Name = "tf_register_id"; + this.tf_register_id.PasswordChar = '\0'; + this.tf_register_id.SelectedText = ""; + this.tf_register_id.SelectionLength = 0; + this.tf_register_id.SelectionStart = 0; + this.tf_register_id.Size = new System.Drawing.Size(260, 23); + this.tf_register_id.TabIndex = 6; + this.tf_register_id.TabStop = false; + this.tf_register_id.UseSystemPasswordChar = false; + this.tf_register_id.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tf_register_id_KeyDown); + this.tf_register_id.KeyUp += new System.Windows.Forms.KeyEventHandler(this.tf_register_id_KeyUp); + this.tf_register_id.Leave += new System.EventHandler(this.tf_register_id_Leave); + // + // materialRaisedButton1 + // + this.materialRaisedButton1.AutoSize = true; + this.materialRaisedButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.materialRaisedButton1.Depth = 0; + this.materialRaisedButton1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.materialRaisedButton1.Icon = null; + this.materialRaisedButton1.Location = new System.Drawing.Point(164, 314); + this.materialRaisedButton1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.materialRaisedButton1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialRaisedButton1.Name = "materialRaisedButton1"; + this.materialRaisedButton1.Primary = true; + this.materialRaisedButton1.Size = new System.Drawing.Size(51, 36); + this.materialRaisedButton1.TabIndex = 12; + this.materialRaisedButton1.Text = "취소"; + this.materialRaisedButton1.UseVisualStyleBackColor = true; + this.materialRaisedButton1.Click += new System.EventHandler(this.materialRaisedButton1_Click); + // + // materialLabel1 + // + this.materialLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel1.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel1.Depth = 0; + this.materialLabel1.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel1.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel1.Location = new System.Drawing.Point(12, 95); + this.materialLabel1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel1.Name = "materialLabel1"; + this.materialLabel1.Size = new System.Drawing.Size(260, 19); + this.materialLabel1.TabIndex = 13; + this.materialLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // materialLabel2 + // + this.materialLabel2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel2.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel2.Depth = 0; + this.materialLabel2.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel2.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel2.Location = new System.Drawing.Point(12, 141); + this.materialLabel2.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel2.Name = "materialLabel2"; + this.materialLabel2.Size = new System.Drawing.Size(260, 19); + this.materialLabel2.TabIndex = 14; + this.materialLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // materialLabel3 + // + this.materialLabel3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel3.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel3.Depth = 0; + this.materialLabel3.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel3.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel3.Location = new System.Drawing.Point(8, 187); + this.materialLabel3.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel3.Name = "materialLabel3"; + this.materialLabel3.Size = new System.Drawing.Size(260, 19); + this.materialLabel3.TabIndex = 15; + this.materialLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // materialLabel4 + // + this.materialLabel4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel4.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel4.Depth = 0; + this.materialLabel4.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel4.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel4.Location = new System.Drawing.Point(8, 233); + this.materialLabel4.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel4.Name = "materialLabel4"; + this.materialLabel4.Size = new System.Drawing.Size(260, 19); + this.materialLabel4.TabIndex = 16; + this.materialLabel4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // materialLabel5 + // + this.materialLabel5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel5.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel5.Depth = 0; + this.materialLabel5.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel5.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel5.Location = new System.Drawing.Point(12, 279); + this.materialLabel5.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel5.Name = "materialLabel5"; + this.materialLabel5.Size = new System.Drawing.Size(260, 19); + this.materialLabel5.TabIndex = 17; + this.materialLabel5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // materialLabel6 + // + this.materialLabel6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialLabel6.BackColor = System.Drawing.SystemColors.Window; + this.materialLabel6.Depth = 0; + this.materialLabel6.FlatStyle = System.Windows.Forms.FlatStyle.Popup; + this.materialLabel6.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel6.Location = new System.Drawing.Point(12, 314); + this.materialLabel6.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel6.Name = "materialLabel6"; + this.materialLabel6.Size = new System.Drawing.Size(146, 36); + this.materialLabel6.TabIndex = 18; + this.materialLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // RegisterForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 361); + this.Controls.Add(this.materialLabel6); + this.Controls.Add(this.materialLabel5); + this.Controls.Add(this.materialLabel4); + this.Controls.Add(this.materialLabel3); + this.Controls.Add(this.materialLabel2); + this.Controls.Add(this.materialLabel1); + this.Controls.Add(this.materialRaisedButton1); + this.Controls.Add(this.SubmitButton); + this.Controls.Add(this.tf_register_name); + this.Controls.Add(this.tf_register_class); + this.Controls.Add(this.tf_register_pwcmp); + this.Controls.Add(this.tf_register_pw); + this.Controls.Add(this.tf_register_id); + this.Name = "RegisterForm"; + this.Text = "회원가입"; + this.Load += new System.EventHandler(this.RegisterForm_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MaterialSkin.Controls.MaterialRaisedButton SubmitButton; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_register_name; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_register_class; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_register_pwcmp; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_register_pw; + private MaterialSkin.Controls.MaterialSingleLineTextField tf_register_id; + private MaterialSkin.Controls.MaterialRaisedButton materialRaisedButton1; + private MaterialSkin.Controls.MaterialLabel materialLabel1; + private MaterialSkin.Controls.MaterialLabel materialLabel2; + private MaterialSkin.Controls.MaterialLabel materialLabel3; + private MaterialSkin.Controls.MaterialLabel materialLabel4; + private MaterialSkin.Controls.MaterialLabel materialLabel5; + private MaterialSkin.Controls.MaterialLabel materialLabel6; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.cs new file mode 100644 index 0000000..3ec0102 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; +using RestSharp; +using MaterialSkinExample.Encrypter; +using System.Web; +using Refit; + +using System.Net; +using System.Net.Http; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Xunit; +using RichardSzalay.MockHttp; + +using Refit.Tests; + +namespace MaterialSkinExample.LoginRegister +{ + public partial class RegisterForm : MaterialForm + { + public bool id_check_result = false; + public bool pw_check_result = false; + public bool pwcmp_check_result = false; + public bool name_check_result = false; + public bool class_check_result = false; + + public int class_id = -1; + + public class InputCheck + { + public bool flag { get; set; } + public string err_msg { get; set; } + } + + public RegisterForm() + { + InitializeComponent(); + } + + private void RegisterForm_Load(object sender, EventArgs e) + { + + } + + private void SubmitButton_Click(object sender, EventArgs e) + { + if (!id_check_result) materialLabel6.Text = "아이디 중복 오류"; + else + { + if (!pw_check_result) materialLabel6.Text = "패스워드 오류"; + else + { + if (!pwcmp_check_result) materialLabel6.Text = "패스워드 확인 오류"; + else + { + if (!name_check_result) materialLabel6.Text = "이름 오류"; + else + { + if (!class_check_result) materialLabel6.Text = "학급명 오류"; + else + { + register_process(); + } + } + } + } + } + } + + private void tf_register_id_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + else id_check_process(); + } + + private void tf_register_id_KeyUp(object sender, KeyEventArgs e) + { + id_check_process(); + } + + private void tf_register_id_Leave(object sender, EventArgs e) + { + id_check_process(); + } + + private void tf_register_pw_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + else pw_check_process(); + } + + private void tf_register_pw_KeyUp(object sender, KeyEventArgs e) + { + pw_check_process(); + } + + private void tf_register_pwcmp_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + else pwcmp_check_process(); + } + + private void tf_register_pwcmp_KeyUp(object sender, KeyEventArgs e) + { + pwcmp_check_process(); + } + + private void tf_register_pwcmp_Leave(object sender, EventArgs e) + { + pwcmp_check_process(); + } + + private void tf_register_name_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + else name_check_process(); + } + + private void materialRaisedButton1_Click(object sender, EventArgs e) + { + this.Close(); + } + + private async void id_check_process() + { + id_check_result = false; + InputCheck check = register_id_check(tf_register_id.Text); + if (check.flag) + { + materialLabel1.Text = ""; + var settings = new RefitSettings + { + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + var service = RestService.For("http://127.0.0.1:5013", settings); + var result = await service.IDCheck(tf_register_id.Text); + + if (result.flag) materialLabel1.Text = "중복된 아이디입니다."; + else + { + materialLabel1.Text = "사용가능한 아이디입니다."; + id_check_result = true; + } + } + else materialLabel1.Text = check.err_msg; + } + + private void pw_check_process() + { + pw_check_result = false; + InputCheck check = register_pw_check(tf_register_pw.Text); + if (check.flag) + { + materialLabel3.Text = "사용가능한 비밀번호입니다."; + pw_check_result = true; + } + else materialLabel3.Text = check.err_msg; + } + + private void pwcmp_check_process() + { + pwcmp_check_result = false; + if (tf_register_pwcmp.Text.Equals(tf_register_pw.Text)) + { + materialLabel4.Text = "비밀번호가 일치합니다."; + pwcmp_check_result = true; + } + else materialLabel4.Text = "비밀번호가 일치하지 않습니다."; + } + + private void name_check_process() + { + name_check_result = false; + materialLabel2.Text = "사용가능한 이름입니다."; + name_check_result = true; + } + + private void class_check_process() + { + class_check_result = false; + if (tf_register_class.Text.Length != 0 && class_id != -1) class_check_result = true; + } + + private async void register_process() + { + var settings = new RefitSettings + { + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + var service = RestService.For("http://127.0.0.1:5013", settings); + + var result1 = await service.IDCheck(tf_register_id.Text); + + if (!result1.flag) + { + var register = new RegisterData + { + id = tf_register_id.Text, + password = SHA256_Encryptor.SHA256Hash(tf_register_pw.Text), + academy_class = class_id, + name = tf_register_name.Text + }; + + var result = await service.Register(register); + + if (result.flag == true) + { + this.Close(); + } + else materialLabel6.Text = "회원가입 실패[REGISTER_ERROR]"; + } + else materialLabel6.Text = "회원가입 실패[ID_CHECK_ERROR]"; + } + + private InputCheck register_id_check(string id) + { + bool flag = false; + string msg = ""; + + if (id.Length < 4) msg = "아이디는 4글자 이상이어야 합니다."; + else if (id.Length >= 16) msg = "아이디는 16글자 미만이어야 합니다."; + else + { + foreach (char chr in id) + { + if (!((chr >= '0' && chr <= '9') || (chr >= 'a' && chr <= 'z') || (chr >= 'A' && chr <= 'Z'))) msg = "아이디는 특수문자를 포함할 수 없습니다."; + } + } + if (msg.Length == 0) flag = true; + + return new InputCheck { flag = flag, err_msg = msg }; + } + + private InputCheck register_pw_check(string pw) + { + bool flag = false; + string msg = "사용가능한 비밀번호 입니다."; + + if (pw.Length < 8) msg = "비밀번호는 8글자 이상이어야 합니다."; + else if (pw.Length >= 16) msg = "비밀번호는 16글자 미만이어야 합니다."; + else flag = true; + + return new InputCheck { flag = flag, err_msg = msg }; + } + + private void tf_register_class_KeyPress(object sender, KeyPressEventArgs e) + { + e.Handled = true; + } + + private void tf_register_class_Enter(object sender, EventArgs e) + { + show_class_select_form(); + } + + private void tf_register_class_Click(object sender, EventArgs e) + { + show_class_select_form(); + } + + private void tf_register_class_Leave(object sender, EventArgs e) + { + class_check_process(); + } + + private void show_class_select_form() + { + SelectClassForm selectclassForm = new SelectClassForm(this, tf_register_class); + selectclassForm.ShowDialog(); + } + + private void tf_register_class_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) SubmitButton.PerformClick(); + } + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.resx b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/RegisterForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.Designer.cs new file mode 100644 index 0000000..b278174 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.Designer.cs @@ -0,0 +1,111 @@ +namespace MaterialSkinExample.LoginRegister +{ + partial class SelectClassForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.materialListView1 = new MaterialSkin.Controls.MaterialListView(); + this.Header_ID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.Header_CLASS_NAME = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.materialRaisedButton1 = new MaterialSkin.Controls.MaterialRaisedButton(); + this.SuspendLayout(); + // + // materialListView1 + // + this.materialListView1.Activation = System.Windows.Forms.ItemActivation.OneClick; + this.materialListView1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.materialListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.Header_ID, + this.Header_CLASS_NAME}); + this.materialListView1.Depth = 0; + this.materialListView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F); + this.materialListView1.FullRowSelect = true; + this.materialListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.materialListView1.Location = new System.Drawing.Point(12, 77); + this.materialListView1.MouseLocation = new System.Drawing.Point(-1, -1); + this.materialListView1.MouseState = MaterialSkin.MouseState.OUT; + this.materialListView1.MultiSelect = false; + this.materialListView1.Name = "materialListView1"; + this.materialListView1.OwnerDraw = true; + this.materialListView1.Size = new System.Drawing.Size(361, 260); + this.materialListView1.Sorting = System.Windows.Forms.SortOrder.Ascending; + this.materialListView1.TabIndex = 2; + this.materialListView1.UseCompatibleStateImageBehavior = false; + this.materialListView1.View = System.Windows.Forms.View.Details; + this.materialListView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.materialListView1_KeyDown); + // + // Header_ID + // + this.Header_ID.Text = "ID"; + // + // Header_CLASS_NAME + // + this.Header_CLASS_NAME.Text = "CLASS NAME"; + this.Header_CLASS_NAME.Width = 300; + // + // materialRaisedButton1 + // + this.materialRaisedButton1.AutoSize = true; + this.materialRaisedButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.materialRaisedButton1.Depth = 0; + this.materialRaisedButton1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.materialRaisedButton1.Font = new System.Drawing.Font("굴림", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129))); + this.materialRaisedButton1.Icon = null; + this.materialRaisedButton1.Location = new System.Drawing.Point(0, 351); + this.materialRaisedButton1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialRaisedButton1.Name = "materialRaisedButton1"; + this.materialRaisedButton1.Primary = true; + this.materialRaisedButton1.Size = new System.Drawing.Size(385, 36); + this.materialRaisedButton1.TabIndex = 3; + this.materialRaisedButton1.Text = "선택"; + this.materialRaisedButton1.UseVisualStyleBackColor = true; + this.materialRaisedButton1.Click += new System.EventHandler(this.materialRaisedButton1_Click); + // + // SelectClassForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(385, 387); + this.Controls.Add(this.materialRaisedButton1); + this.Controls.Add(this.materialListView1); + this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.Name = "SelectClassForm"; + this.Text = "학급목록"; + this.Load += new System.EventHandler(this.SelectClassForm_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MaterialSkin.Controls.MaterialListView materialListView1; + private System.Windows.Forms.ColumnHeader Header_CLASS_NAME; + private MaterialSkin.Controls.MaterialRaisedButton materialRaisedButton1; + private System.Windows.Forms.ColumnHeader Header_ID; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.cs b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.cs new file mode 100644 index 0000000..67c01c7 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; +using RestSharp; +using MaterialSkinExample.Encrypter; +using System.Web; +using Refit; + +using System.Net; +using System.Net.Http; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Xunit; +using RichardSzalay.MockHttp; + +using Refit.Tests; + +namespace MaterialSkinExample.LoginRegister +{ + public partial class SelectClassForm : MaterialForm + { + RegisterForm registerForm = null; + MaterialSingleLineTextField tf = null; + + public SelectClassForm() + { + InitializeComponent(); + } + + public SelectClassForm(MaterialSingleLineTextField tf) : this() + { + this.tf = tf; + } + + public SelectClassForm(RegisterForm registerForm) : this() + { + this.registerForm = registerForm; + } + + public SelectClassForm(RegisterForm registerForm, MaterialSingleLineTextField tf) : this() + { + this.registerForm = registerForm; + this.tf = tf; + } + + private void SelectClassForm_Load(object sender, EventArgs e) + { + InitializationListView(); + } + + private async void InitializationListView() + { + var settings = new RefitSettings + { + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + var service = RestService.For("http://127.0.0.1:5013", settings); + var result = await service.GetClassList(); + + if (result.flag) + { + foreach (ClassListSubData class_list_data in result.data) + { + var data = new[] { class_list_data.id.ToString() ,class_list_data.name }; + var item = new ListViewItem(data); + materialListView1.Items.Add(item); + } + } + else + { + var data = new[] { "NULL", "NULL" }; + var item = new ListViewItem(data); + materialListView1.Items.Add(item); + } + } + + private async void materialRaisedButton1_Click(object sender, EventArgs e) + { + if (materialListView1.SelectedItems.Count > 0) + { + var settings = new RefitSettings + { + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + var service = RestService.For("http://127.0.0.1:5013", settings); + var result = await service.GetClassName(Int32.Parse(materialListView1.SelectedItems[0].Text)); + if (result.flag) + { + if (registerForm != null) registerForm.class_id = Int32.Parse(materialListView1.SelectedItems[0].Text); + if (tf != null) tf.Text = result.data.name; + this.Close(); + } + } + } + + private void materialListView1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) materialRaisedButton1.PerformClick(); + } + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.resx b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/LoginRegister/SelectClassForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.Designer.cs similarity index 97% rename from client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.Designer.cs rename to client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.Designer.cs index 9188ff3..cf36b94 100644 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.Designer.cs +++ b/client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.Designer.cs @@ -52,6 +52,7 @@ private void InitializeComponent() this.materialTabSelector1 = new MaterialSkin.Controls.MaterialTabSelector(); this.materialTabControl1 = new MaterialSkin.Controls.MaterialTabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); + this.materialRaisedButton3 = new MaterialSkin.Controls.MaterialRaisedButton(); this.materialSingleLineTextField3 = new MaterialSkin.Controls.MaterialSingleLineTextField(); this.materialRaisedButton1 = new MaterialSkin.Controls.MaterialRaisedButton(); this.tabPage2 = new System.Windows.Forms.TabPage(); @@ -150,7 +151,7 @@ private void InitializeComponent() this.materialRadioButton4.MouseState = MaterialSkin.MouseState.HOVER; this.materialRadioButton4.Name = "materialRadioButton4"; this.materialRadioButton4.Ripple = true; - this.materialRadioButton4.Size = new System.Drawing.Size(162, 30); + this.materialRadioButton4.Size = new System.Drawing.Size(163, 30); this.materialRadioButton4.TabIndex = 15; this.materialRadioButton4.TabStop = true; this.materialRadioButton4.Text = "materialRadioButton4"; @@ -182,7 +183,7 @@ private void InitializeComponent() this.materialRadioButton3.MouseState = MaterialSkin.MouseState.HOVER; this.materialRadioButton3.Name = "materialRadioButton3"; this.materialRadioButton3.Ripple = true; - this.materialRadioButton3.Size = new System.Drawing.Size(162, 30); + this.materialRadioButton3.Size = new System.Drawing.Size(163, 30); this.materialRadioButton3.TabIndex = 11; this.materialRadioButton3.Text = "materialRadioButton3"; this.materialRadioButton3.UseVisualStyleBackColor = true; @@ -199,7 +200,7 @@ private void InitializeComponent() this.materialRadioButton2.MouseState = MaterialSkin.MouseState.HOVER; this.materialRadioButton2.Name = "materialRadioButton2"; this.materialRadioButton2.Ripple = true; - this.materialRadioButton2.Size = new System.Drawing.Size(162, 30); + this.materialRadioButton2.Size = new System.Drawing.Size(163, 30); this.materialRadioButton2.TabIndex = 10; this.materialRadioButton2.Text = "materialRadioButton2"; this.materialRadioButton2.UseVisualStyleBackColor = true; @@ -341,7 +342,7 @@ private void InitializeComponent() this.materialRadioButton1.MouseState = MaterialSkin.MouseState.HOVER; this.materialRadioButton1.Name = "materialRadioButton1"; this.materialRadioButton1.Ripple = true; - this.materialRadioButton1.Size = new System.Drawing.Size(162, 30); + this.materialRadioButton1.Size = new System.Drawing.Size(163, 30); this.materialRadioButton1.TabIndex = 9; this.materialRadioButton1.Text = "materialRadioButton1"; this.materialRadioButton1.UseVisualStyleBackColor = true; @@ -380,6 +381,7 @@ private void InitializeComponent() // tabPage1 // this.tabPage1.BackColor = System.Drawing.Color.White; + this.tabPage1.Controls.Add(this.materialRaisedButton3); this.tabPage1.Controls.Add(this.materialSingleLineTextField3); this.tabPage1.Controls.Add(this.materialRaisedButton1); this.tabPage1.Controls.Add(this.materialSingleLineTextField1); @@ -393,6 +395,23 @@ private void InitializeComponent() this.tabPage1.TabIndex = 0; this.tabPage1.Text = "tabPage1"; // + // materialRaisedButton3 + // + this.materialRaisedButton3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.materialRaisedButton3.AutoSize = true; + this.materialRaisedButton3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.materialRaisedButton3.Depth = 0; + this.materialRaisedButton3.Icon = null; + this.materialRaisedButton3.Location = new System.Drawing.Point(181, 168); + this.materialRaisedButton3.MouseState = MaterialSkin.MouseState.HOVER; + this.materialRaisedButton3.Name = "materialRaisedButton3"; + this.materialRaisedButton3.Primary = true; + this.materialRaisedButton3.Size = new System.Drawing.Size(125, 36); + this.materialRaisedButton3.TabIndex = 22; + this.materialRaisedButton3.Text = "Change Theme"; + this.materialRaisedButton3.UseVisualStyleBackColor = true; + this.materialRaisedButton3.Click += new System.EventHandler(this.materialRaisedButton3_Click); + // // materialSingleLineTextField3 // this.materialSingleLineTextField3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -788,5 +807,6 @@ private void InitializeComponent() private MaterialFlatButton materialFlatButton3; private MaterialFlatButton materialFlatButton4; private MaterialLabel materialLabel2; + private MaterialRaisedButton materialRaisedButton3; } } \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.cs b/client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.cs similarity index 87% rename from client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.cs rename to client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.cs index 126e354..b59ffcf 100644 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.cs +++ b/client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.cs @@ -2,6 +2,16 @@ using System.Windows.Forms; using MaterialSkin; using MaterialSkin.Controls; +using Retrofit.Net; + +using System.Collections.Generic; +using System.Net; +using FluentAssertions; +using NSubstitute; +using NUnit.Framework; +using RestSharp; +using Retrofit.Net.Attributes.Methods; +using Retrofit.Net.Attributes.Parameters; namespace MaterialSkinExample { @@ -81,8 +91,12 @@ private void materialFlatButton4_Click(object sender, EventArgs e) private void materialFlatButton2_Click(object sender, EventArgs e) { - Form form1 = new Form1(); - form1.ShowDialog(); + //Form form1 = new Form1(); + //form1.ShowDialog(); + } + + private void materialRaisedButton3_Click(object sender, EventArgs e) + { } } } diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.resx b/client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.resx similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/MainForm.resx rename to client/c#/AcademyMG/MaterialSkinExample/Main/MainForm.resx diff --git a/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.cs b/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.cs new file mode 100644 index 0000000..69188c1 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.cs @@ -0,0 +1,44 @@ +using System; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; + +namespace MaterialSkinExample +{ + public partial class MainForm : MaterialForm + { + private readonly MaterialSkinManager materialSkinManager; + public MainForm() + { + InitializeComponent(); + + // Initialize MaterialSkinManager + materialSkinManager = MaterialSkinManager.Instance; + materialSkinManager.AddFormToManage(this); + materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT; + materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE); + + } + + private void MainForm_Load(object sender, EventArgs e) + { + + } + + private void lb_addstudent_sex_Click(object sender, EventArgs e) + { + if(lb_addstudent_sex.Text=="남") + lb_addstudent_sex.Text="여"; + else + lb_addstudent_sex.Text="남"; + } + + private void lb_renewstudent_sex_Click(object sender, EventArgs e) + { + if (lb_addstudent_sex.Text == "남") + lb_addstudent_sex.Text = "여"; + else + lb_addstudent_sex.Text = "남"; + } + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.designer.cs b/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.designer.cs new file mode 100644 index 0000000..64e9450 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.designer.cs @@ -0,0 +1,1099 @@ +using System.Drawing; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; + +namespace MaterialSkinExample +{ + partial class MainForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lb_mainpage_sex = new MaterialSkin.Controls.MaterialDivider(); + this.materialTabSelector1 = new MaterialSkin.Controls.MaterialTabSelector(); + this.rb_attend_submit = new MaterialSkin.Controls.MaterialTabControl(); + this.mainpage = new System.Windows.Forms.TabPage(); + this.lb_mainpage_birthday = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_lecture = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_outdate = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_rejoindate = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_join = new MaterialSkin.Controls.MaterialLabel(); + this.rb_mainpage_ban = new MaterialSkin.Controls.MaterialRaisedButton(); + this.tf_mainpage_search = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.lb_mainpage_shoolclass = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_grade = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_school = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_address = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_phone = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_name = new MaterialSkin.Controls.MaterialLabel(); + this.materialLabel1 = new MaterialSkin.Controls.MaterialLabel(); + this.lb_mainpage_id = new MaterialSkin.Controls.MaterialLabel(); + this.dv_mainpage_image = new MaterialSkin.Controls.MaterialDivider(); + this.addstudentpage = new System.Windows.Forms.TabPage(); + this.tf_addstudent_birthday = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_lecture = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_outdate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_schoolclass = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_grade = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_schoolname = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_address = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_rejoindate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_joindate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_phone = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_addstudent_name = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.rb_addstudent_submit = new MaterialSkin.Controls.MaterialRaisedButton(); + this.lb_addstudent_sex = new MaterialSkin.Controls.MaterialLabel(); + this.dv_addstudent_image = new MaterialSkin.Controls.MaterialDivider(); + this.renewstudentpage = new System.Windows.Forms.TabPage(); + this.tf_renewstudent_birthday = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_lecture = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_outdate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_schoolclass = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_grade = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_schoolName = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_address = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_rejoindate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_joindate = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_phone = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.tf_renewstudent_name = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.rb_renewstudent_submit = new MaterialSkin.Controls.MaterialRaisedButton(); + this.tf_renewstudent_search = new MaterialSkin.Controls.MaterialSingleLineTextField(); + this.lb_renewstudent_sex = new MaterialSkin.Controls.MaterialLabel(); + this.dv_renewstudent_image = new MaterialSkin.Controls.MaterialDivider(); + this.checkpage = new System.Windows.Forms.TabPage(); + this.rb_ = new MaterialSkin.Controls.MaterialRaisedButton(); + this.materialContextMenuStrip1 = new MaterialSkin.Controls.MaterialContextMenuStrip(); + this.item1ToolStripMenuItem = new MaterialSkin.Controls.MaterialToolStripMenuItem(); + this.subItem1ToolStripMenuItem = new MaterialSkin.Controls.MaterialToolStripMenuItem(); + this.subItem2ToolStripMenuItem = new MaterialSkin.Controls.MaterialToolStripMenuItem(); + this.disabledItemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.item2ToolStripMenuItem = new MaterialSkin.Controls.MaterialToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.item3ToolStripMenuItem = new MaterialSkin.Controls.MaterialToolStripMenuItem(); + this.rb_attend_submit.SuspendLayout(); + this.mainpage.SuspendLayout(); + this.addstudentpage.SuspendLayout(); + this.renewstudentpage.SuspendLayout(); + this.checkpage.SuspendLayout(); + this.materialContextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // lb_mainpage_sex + // + this.lb_mainpage_sex.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lb_mainpage_sex.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_sex.Depth = 0; + this.lb_mainpage_sex.Location = new System.Drawing.Point(0, 438); + this.lb_mainpage_sex.Margin = new System.Windows.Forms.Padding(0); + this.lb_mainpage_sex.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_sex.Name = "lb_mainpage_sex"; + this.lb_mainpage_sex.Size = new System.Drawing.Size(833, 1); + this.lb_mainpage_sex.TabIndex = 16; + this.lb_mainpage_sex.Text = "materialDivider1"; + // + // materialTabSelector1 + // + this.materialTabSelector1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.materialTabSelector1.BaseTabControl = this.rb_attend_submit; + this.materialTabSelector1.Depth = 0; + this.materialTabSelector1.Location = new System.Drawing.Point(0, 74); + this.materialTabSelector1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.materialTabSelector1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialTabSelector1.Name = "materialTabSelector1"; + this.materialTabSelector1.Size = new System.Drawing.Size(833, 55); + this.materialTabSelector1.TabIndex = 17; + this.materialTabSelector1.Text = "materialTabSelector1"; + // + // rb_attend_submit + // + this.rb_attend_submit.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.rb_attend_submit.Controls.Add(this.mainpage); + this.rb_attend_submit.Controls.Add(this.addstudentpage); + this.rb_attend_submit.Controls.Add(this.renewstudentpage); + this.rb_attend_submit.Controls.Add(this.checkpage); + this.rb_attend_submit.Depth = 0; + this.rb_attend_submit.Location = new System.Drawing.Point(18, 128); + this.rb_attend_submit.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.rb_attend_submit.MouseState = MaterialSkin.MouseState.HOVER; + this.rb_attend_submit.Name = "rb_attend_submit"; + this.rb_attend_submit.SelectedIndex = 0; + this.rb_attend_submit.Size = new System.Drawing.Size(787, 295); + this.rb_attend_submit.TabIndex = 18; + // + // mainpage + // + this.mainpage.BackColor = System.Drawing.Color.White; + this.mainpage.Controls.Add(this.lb_mainpage_birthday); + this.mainpage.Controls.Add(this.lb_mainpage_lecture); + this.mainpage.Controls.Add(this.lb_mainpage_outdate); + this.mainpage.Controls.Add(this.lb_mainpage_rejoindate); + this.mainpage.Controls.Add(this.lb_mainpage_join); + this.mainpage.Controls.Add(this.rb_mainpage_ban); + this.mainpage.Controls.Add(this.tf_mainpage_search); + this.mainpage.Controls.Add(this.lb_mainpage_shoolclass); + this.mainpage.Controls.Add(this.lb_mainpage_grade); + this.mainpage.Controls.Add(this.lb_mainpage_school); + this.mainpage.Controls.Add(this.lb_mainpage_address); + this.mainpage.Controls.Add(this.lb_mainpage_phone); + this.mainpage.Controls.Add(this.lb_mainpage_name); + this.mainpage.Controls.Add(this.materialLabel1); + this.mainpage.Controls.Add(this.lb_mainpage_id); + this.mainpage.Controls.Add(this.dv_mainpage_image); + this.mainpage.Location = new System.Drawing.Point(4, 25); + this.mainpage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.mainpage.Name = "mainpage"; + this.mainpage.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.mainpage.Size = new System.Drawing.Size(779, 266); + this.mainpage.TabIndex = 0; + this.mainpage.Text = "메인화면"; + // + // lb_mainpage_birthday + // + this.lb_mainpage_birthday.AutoSize = true; + this.lb_mainpage_birthday.Depth = 0; + this.lb_mainpage_birthday.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_birthday.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_birthday.Location = new System.Drawing.Point(451, 130); + this.lb_mainpage_birthday.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_birthday.Name = "lb_mainpage_birthday"; + this.lb_mainpage_birthday.Size = new System.Drawing.Size(40, 24); + this.lb_mainpage_birthday.TabIndex = 16; + this.lb_mainpage_birthday.Text = "생일"; + // + // lb_mainpage_lecture + // + this.lb_mainpage_lecture.AutoSize = true; + this.lb_mainpage_lecture.Depth = 0; + this.lb_mainpage_lecture.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_lecture.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_lecture.Location = new System.Drawing.Point(451, 106); + this.lb_mainpage_lecture.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_lecture.Name = "lb_mainpage_lecture"; + this.lb_mainpage_lecture.Size = new System.Drawing.Size(70, 24); + this.lb_mainpage_lecture.TabIndex = 15; + this.lb_mainpage_lecture.Text = "수강강좌"; + // + // lb_mainpage_outdate + // + this.lb_mainpage_outdate.AutoSize = true; + this.lb_mainpage_outdate.Depth = 0; + this.lb_mainpage_outdate.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_outdate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_outdate.Location = new System.Drawing.Point(451, 73); + this.lb_mainpage_outdate.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_outdate.Name = "lb_mainpage_outdate"; + this.lb_mainpage_outdate.Size = new System.Drawing.Size(70, 24); + this.lb_mainpage_outdate.TabIndex = 14; + this.lb_mainpage_outdate.Text = "퇴소일자"; + // + // lb_mainpage_rejoindate + // + this.lb_mainpage_rejoindate.AutoSize = true; + this.lb_mainpage_rejoindate.Depth = 0; + this.lb_mainpage_rejoindate.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_rejoindate.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_rejoindate.Location = new System.Drawing.Point(451, 40); + this.lb_mainpage_rejoindate.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_rejoindate.Name = "lb_mainpage_rejoindate"; + this.lb_mainpage_rejoindate.Size = new System.Drawing.Size(85, 24); + this.lb_mainpage_rejoindate.TabIndex = 13; + this.lb_mainpage_rejoindate.Text = "재입학일자"; + // + // lb_mainpage_join + // + this.lb_mainpage_join.AutoSize = true; + this.lb_mainpage_join.Depth = 0; + this.lb_mainpage_join.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_join.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_join.Location = new System.Drawing.Point(451, 8); + this.lb_mainpage_join.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_join.Name = "lb_mainpage_join"; + this.lb_mainpage_join.Size = new System.Drawing.Size(70, 24); + this.lb_mainpage_join.TabIndex = 12; + this.lb_mainpage_join.Text = "입학일자"; + // + // rb_mainpage_ban + // + this.rb_mainpage_ban.AutoSize = true; + this.rb_mainpage_ban.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.rb_mainpage_ban.Depth = 0; + this.rb_mainpage_ban.Icon = null; + this.rb_mainpage_ban.Location = new System.Drawing.Point(675, 223); + this.rb_mainpage_ban.MouseState = MaterialSkin.MouseState.HOVER; + this.rb_mainpage_ban.Name = "rb_mainpage_ban"; + this.rb_mainpage_ban.Primary = true; + this.rb_mainpage_ban.Size = new System.Drawing.Size(98, 36); + this.rb_mainpage_ban.TabIndex = 11; + this.rb_mainpage_ban.Text = "퇴소처리"; + this.rb_mainpage_ban.UseVisualStyleBackColor = true; + // + // tf_mainpage_search + // + this.tf_mainpage_search.Depth = 0; + this.tf_mainpage_search.Hint = "검색"; + this.tf_mainpage_search.Location = new System.Drawing.Point(11, 223); + this.tf_mainpage_search.MaxLength = 32767; + this.tf_mainpage_search.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_mainpage_search.Name = "tf_mainpage_search"; + this.tf_mainpage_search.PasswordChar = '\0'; + this.tf_mainpage_search.SelectedText = ""; + this.tf_mainpage_search.SelectionLength = 0; + this.tf_mainpage_search.SelectionStart = 0; + this.tf_mainpage_search.Size = new System.Drawing.Size(610, 28); + this.tf_mainpage_search.TabIndex = 10; + this.tf_mainpage_search.TabStop = false; + this.tf_mainpage_search.UseSystemPasswordChar = false; + // + // lb_mainpage_shoolclass + // + this.lb_mainpage_shoolclass.AutoSize = true; + this.lb_mainpage_shoolclass.Depth = 0; + this.lb_mainpage_shoolclass.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_shoolclass.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_shoolclass.Location = new System.Drawing.Point(143, 122); + this.lb_mainpage_shoolclass.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_shoolclass.Name = "lb_mainpage_shoolclass"; + this.lb_mainpage_shoolclass.Size = new System.Drawing.Size(55, 24); + this.lb_mainpage_shoolclass.TabIndex = 9; + this.lb_mainpage_shoolclass.Text = "class"; + // + // lb_mainpage_grade + // + this.lb_mainpage_grade.AutoSize = true; + this.lb_mainpage_grade.Depth = 0; + this.lb_mainpage_grade.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_grade.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_grade.Location = new System.Drawing.Point(144, 92); + this.lb_mainpage_grade.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_grade.Name = "lb_mainpage_grade"; + this.lb_mainpage_grade.Size = new System.Drawing.Size(58, 24); + this.lb_mainpage_grade.TabIndex = 8; + this.lb_mainpage_grade.Text = "grade"; + // + // lb_mainpage_school + // + this.lb_mainpage_school.AutoSize = true; + this.lb_mainpage_school.Depth = 0; + this.lb_mainpage_school.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_school.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_school.Location = new System.Drawing.Point(139, 64); + this.lb_mainpage_school.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_school.Name = "lb_mainpage_school"; + this.lb_mainpage_school.Size = new System.Drawing.Size(114, 24); + this.lb_mainpage_school.TabIndex = 7; + this.lb_mainpage_school.Text = "schoolname"; + // + // lb_mainpage_address + // + this.lb_mainpage_address.AutoSize = true; + this.lb_mainpage_address.Depth = 0; + this.lb_mainpage_address.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_address.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_address.Location = new System.Drawing.Point(140, 40); + this.lb_mainpage_address.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_address.Name = "lb_mainpage_address"; + this.lb_mainpage_address.Size = new System.Drawing.Size(78, 24); + this.lb_mainpage_address.TabIndex = 6; + this.lb_mainpage_address.Text = "address"; + // + // lb_mainpage_phone + // + this.lb_mainpage_phone.AutoSize = true; + this.lb_mainpage_phone.Depth = 0; + this.lb_mainpage_phone.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_phone.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_phone.Location = new System.Drawing.Point(140, 8); + this.lb_mainpage_phone.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_phone.Name = "lb_mainpage_phone"; + this.lb_mainpage_phone.Size = new System.Drawing.Size(62, 24); + this.lb_mainpage_phone.TabIndex = 5; + this.lb_mainpage_phone.Text = "phone"; + // + // lb_mainpage_name + // + this.lb_mainpage_name.AutoSize = true; + this.lb_mainpage_name.Depth = 0; + this.lb_mainpage_name.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_name.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_name.Location = new System.Drawing.Point(7, 151); + this.lb_mainpage_name.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_name.Name = "lb_mainpage_name"; + this.lb_mainpage_name.Size = new System.Drawing.Size(40, 24); + this.lb_mainpage_name.TabIndex = 4; + this.lb_mainpage_name.Text = "이름"; + // + // materialLabel1 + // + this.materialLabel1.AutoSize = true; + this.materialLabel1.Depth = 0; + this.materialLabel1.Font = new System.Drawing.Font("Roboto", 11F); + this.materialLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.materialLabel1.Location = new System.Drawing.Point(108, 106); + this.materialLabel1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialLabel1.Name = "materialLabel1"; + this.materialLabel1.Size = new System.Drawing.Size(25, 24); + this.materialLabel1.TabIndex = 3; + this.materialLabel1.Text = "남"; + // + // lb_mainpage_id + // + this.lb_mainpage_id.AutoSize = true; + this.lb_mainpage_id.Depth = 0; + this.lb_mainpage_id.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_mainpage_id.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_mainpage_id.Location = new System.Drawing.Point(6, 106); + this.lb_mainpage_id.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_mainpage_id.Name = "lb_mainpage_id"; + this.lb_mainpage_id.Size = new System.Drawing.Size(70, 24); + this.lb_mainpage_id.TabIndex = 2; + this.lb_mainpage_id.Text = "학생번호"; + // + // dv_mainpage_image + // + this.dv_mainpage_image.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.dv_mainpage_image.Depth = 0; + this.dv_mainpage_image.Location = new System.Drawing.Point(6, 7); + this.dv_mainpage_image.MouseState = MaterialSkin.MouseState.HOVER; + this.dv_mainpage_image.Name = "dv_mainpage_image"; + this.dv_mainpage_image.Size = new System.Drawing.Size(127, 123); + this.dv_mainpage_image.TabIndex = 1; + this.dv_mainpage_image.Text = "materialDivider2"; + // + // addstudentpage + // + this.addstudentpage.BackColor = System.Drawing.Color.White; + this.addstudentpage.Controls.Add(this.tf_addstudent_birthday); + this.addstudentpage.Controls.Add(this.tf_addstudent_lecture); + this.addstudentpage.Controls.Add(this.tf_addstudent_outdate); + this.addstudentpage.Controls.Add(this.tf_addstudent_schoolclass); + this.addstudentpage.Controls.Add(this.tf_addstudent_grade); + this.addstudentpage.Controls.Add(this.tf_addstudent_schoolname); + this.addstudentpage.Controls.Add(this.tf_addstudent_address); + this.addstudentpage.Controls.Add(this.tf_addstudent_rejoindate); + this.addstudentpage.Controls.Add(this.tf_addstudent_joindate); + this.addstudentpage.Controls.Add(this.tf_addstudent_phone); + this.addstudentpage.Controls.Add(this.tf_addstudent_name); + this.addstudentpage.Controls.Add(this.rb_addstudent_submit); + this.addstudentpage.Controls.Add(this.lb_addstudent_sex); + this.addstudentpage.Controls.Add(this.dv_addstudent_image); + this.addstudentpage.Location = new System.Drawing.Point(4, 25); + this.addstudentpage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.addstudentpage.Name = "addstudentpage"; + this.addstudentpage.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.addstudentpage.Size = new System.Drawing.Size(779, 266); + this.addstudentpage.TabIndex = 1; + this.addstudentpage.Text = "원생추가"; + // + // tf_addstudent_birthday + // + this.tf_addstudent_birthday.Depth = 0; + this.tf_addstudent_birthday.Hint = "생일"; + this.tf_addstudent_birthday.Location = new System.Drawing.Point(421, 146); + this.tf_addstudent_birthday.MaxLength = 32767; + this.tf_addstudent_birthday.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_birthday.Name = "tf_addstudent_birthday"; + this.tf_addstudent_birthday.PasswordChar = '\0'; + this.tf_addstudent_birthday.SelectedText = ""; + this.tf_addstudent_birthday.SelectionLength = 0; + this.tf_addstudent_birthday.SelectionStart = 0; + this.tf_addstudent_birthday.Size = new System.Drawing.Size(352, 28); + this.tf_addstudent_birthday.TabIndex = 14; + this.tf_addstudent_birthday.TabStop = false; + this.tf_addstudent_birthday.UseSystemPasswordChar = false; + // + // tf_addstudent_lecture + // + this.tf_addstudent_lecture.Depth = 0; + this.tf_addstudent_lecture.Hint = "강좌"; + this.tf_addstudent_lecture.Location = new System.Drawing.Point(421, 111); + this.tf_addstudent_lecture.MaxLength = 32767; + this.tf_addstudent_lecture.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_lecture.Name = "tf_addstudent_lecture"; + this.tf_addstudent_lecture.PasswordChar = '\0'; + this.tf_addstudent_lecture.SelectedText = ""; + this.tf_addstudent_lecture.SelectionLength = 0; + this.tf_addstudent_lecture.SelectionStart = 0; + this.tf_addstudent_lecture.Size = new System.Drawing.Size(352, 28); + this.tf_addstudent_lecture.TabIndex = 13; + this.tf_addstudent_lecture.TabStop = false; + this.tf_addstudent_lecture.UseSystemPasswordChar = false; + // + // tf_addstudent_outdate + // + this.tf_addstudent_outdate.Depth = 0; + this.tf_addstudent_outdate.Hint = "퇴소일자"; + this.tf_addstudent_outdate.Location = new System.Drawing.Point(421, 76); + this.tf_addstudent_outdate.MaxLength = 32767; + this.tf_addstudent_outdate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_outdate.Name = "tf_addstudent_outdate"; + this.tf_addstudent_outdate.PasswordChar = '\0'; + this.tf_addstudent_outdate.SelectedText = ""; + this.tf_addstudent_outdate.SelectionLength = 0; + this.tf_addstudent_outdate.SelectionStart = 0; + this.tf_addstudent_outdate.Size = new System.Drawing.Size(352, 28); + this.tf_addstudent_outdate.TabIndex = 12; + this.tf_addstudent_outdate.TabStop = false; + this.tf_addstudent_outdate.UseSystemPasswordChar = false; + // + // tf_addstudent_schoolclass + // + this.tf_addstudent_schoolclass.Depth = 0; + this.tf_addstudent_schoolclass.Hint = "학교반"; + this.tf_addstudent_schoolclass.Location = new System.Drawing.Point(145, 146); + this.tf_addstudent_schoolclass.MaxLength = 32767; + this.tf_addstudent_schoolclass.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_schoolclass.Name = "tf_addstudent_schoolclass"; + this.tf_addstudent_schoolclass.PasswordChar = '\0'; + this.tf_addstudent_schoolclass.SelectedText = ""; + this.tf_addstudent_schoolclass.SelectionLength = 0; + this.tf_addstudent_schoolclass.SelectionStart = 0; + this.tf_addstudent_schoolclass.Size = new System.Drawing.Size(269, 28); + this.tf_addstudent_schoolclass.TabIndex = 11; + this.tf_addstudent_schoolclass.TabStop = false; + this.tf_addstudent_schoolclass.UseSystemPasswordChar = false; + // + // tf_addstudent_grade + // + this.tf_addstudent_grade.Depth = 0; + this.tf_addstudent_grade.Hint = "학년"; + this.tf_addstudent_grade.Location = new System.Drawing.Point(146, 111); + this.tf_addstudent_grade.MaxLength = 32767; + this.tf_addstudent_grade.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_grade.Name = "tf_addstudent_grade"; + this.tf_addstudent_grade.PasswordChar = '\0'; + this.tf_addstudent_grade.SelectedText = ""; + this.tf_addstudent_grade.SelectionLength = 0; + this.tf_addstudent_grade.SelectionStart = 0; + this.tf_addstudent_grade.Size = new System.Drawing.Size(268, 28); + this.tf_addstudent_grade.TabIndex = 10; + this.tf_addstudent_grade.TabStop = false; + this.tf_addstudent_grade.UseSystemPasswordChar = false; + // + // tf_addstudent_schoolname + // + this.tf_addstudent_schoolname.Depth = 0; + this.tf_addstudent_schoolname.Hint = "학교이름"; + this.tf_addstudent_schoolname.Location = new System.Drawing.Point(146, 76); + this.tf_addstudent_schoolname.MaxLength = 32767; + this.tf_addstudent_schoolname.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_schoolname.Name = "tf_addstudent_schoolname"; + this.tf_addstudent_schoolname.PasswordChar = '\0'; + this.tf_addstudent_schoolname.SelectedText = ""; + this.tf_addstudent_schoolname.SelectionLength = 0; + this.tf_addstudent_schoolname.SelectionStart = 0; + this.tf_addstudent_schoolname.Size = new System.Drawing.Size(268, 28); + this.tf_addstudent_schoolname.TabIndex = 9; + this.tf_addstudent_schoolname.TabStop = false; + this.tf_addstudent_schoolname.UseSystemPasswordChar = false; + // + // tf_addstudent_address + // + this.tf_addstudent_address.Depth = 0; + this.tf_addstudent_address.Hint = "주소"; + this.tf_addstudent_address.Location = new System.Drawing.Point(145, 41); + this.tf_addstudent_address.MaxLength = 32767; + this.tf_addstudent_address.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_address.Name = "tf_addstudent_address"; + this.tf_addstudent_address.PasswordChar = '\0'; + this.tf_addstudent_address.SelectedText = ""; + this.tf_addstudent_address.SelectionLength = 0; + this.tf_addstudent_address.SelectionStart = 0; + this.tf_addstudent_address.Size = new System.Drawing.Size(269, 28); + this.tf_addstudent_address.TabIndex = 8; + this.tf_addstudent_address.TabStop = false; + this.tf_addstudent_address.UseSystemPasswordChar = false; + // + // tf_addstudent_rejoindate + // + this.tf_addstudent_rejoindate.Depth = 0; + this.tf_addstudent_rejoindate.Hint = "재입학일자"; + this.tf_addstudent_rejoindate.Location = new System.Drawing.Point(420, 41); + this.tf_addstudent_rejoindate.MaxLength = 32767; + this.tf_addstudent_rejoindate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_rejoindate.Name = "tf_addstudent_rejoindate"; + this.tf_addstudent_rejoindate.PasswordChar = '\0'; + this.tf_addstudent_rejoindate.SelectedText = ""; + this.tf_addstudent_rejoindate.SelectionLength = 0; + this.tf_addstudent_rejoindate.SelectionStart = 0; + this.tf_addstudent_rejoindate.Size = new System.Drawing.Size(353, 28); + this.tf_addstudent_rejoindate.TabIndex = 7; + this.tf_addstudent_rejoindate.TabStop = false; + this.tf_addstudent_rejoindate.UseSystemPasswordChar = false; + // + // tf_addstudent_joindate + // + this.tf_addstudent_joindate.Depth = 0; + this.tf_addstudent_joindate.Hint = "입학일자"; + this.tf_addstudent_joindate.Location = new System.Drawing.Point(420, 7); + this.tf_addstudent_joindate.MaxLength = 32767; + this.tf_addstudent_joindate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_joindate.Name = "tf_addstudent_joindate"; + this.tf_addstudent_joindate.PasswordChar = '\0'; + this.tf_addstudent_joindate.SelectedText = ""; + this.tf_addstudent_joindate.SelectionLength = 0; + this.tf_addstudent_joindate.SelectionStart = 0; + this.tf_addstudent_joindate.Size = new System.Drawing.Size(353, 28); + this.tf_addstudent_joindate.TabIndex = 6; + this.tf_addstudent_joindate.TabStop = false; + this.tf_addstudent_joindate.UseSystemPasswordChar = false; + // + // tf_addstudent_phone + // + this.tf_addstudent_phone.Depth = 0; + this.tf_addstudent_phone.Hint = "전화번호"; + this.tf_addstudent_phone.Location = new System.Drawing.Point(145, 7); + this.tf_addstudent_phone.MaxLength = 32767; + this.tf_addstudent_phone.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_phone.Name = "tf_addstudent_phone"; + this.tf_addstudent_phone.PasswordChar = '\0'; + this.tf_addstudent_phone.SelectedText = ""; + this.tf_addstudent_phone.SelectionLength = 0; + this.tf_addstudent_phone.SelectionStart = 0; + this.tf_addstudent_phone.Size = new System.Drawing.Size(269, 28); + this.tf_addstudent_phone.TabIndex = 5; + this.tf_addstudent_phone.TabStop = false; + this.tf_addstudent_phone.UseSystemPasswordChar = false; + // + // tf_addstudent_name + // + this.tf_addstudent_name.Depth = 0; + this.tf_addstudent_name.Hint = "이름"; + this.tf_addstudent_name.Location = new System.Drawing.Point(6, 160); + this.tf_addstudent_name.MaxLength = 32767; + this.tf_addstudent_name.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_addstudent_name.Name = "tf_addstudent_name"; + this.tf_addstudent_name.PasswordChar = '\0'; + this.tf_addstudent_name.SelectedText = ""; + this.tf_addstudent_name.SelectionLength = 0; + this.tf_addstudent_name.SelectionStart = 0; + this.tf_addstudent_name.Size = new System.Drawing.Size(133, 28); + this.tf_addstudent_name.TabIndex = 4; + this.tf_addstudent_name.TabStop = false; + this.tf_addstudent_name.UseSystemPasswordChar = false; + // + // rb_addstudent_submit + // + this.rb_addstudent_submit.AutoSize = true; + this.rb_addstudent_submit.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.rb_addstudent_submit.Depth = 0; + this.rb_addstudent_submit.Icon = null; + this.rb_addstudent_submit.Location = new System.Drawing.Point(675, 223); + this.rb_addstudent_submit.MouseState = MaterialSkin.MouseState.HOVER; + this.rb_addstudent_submit.Name = "rb_addstudent_submit"; + this.rb_addstudent_submit.Primary = true; + this.rb_addstudent_submit.Size = new System.Drawing.Size(98, 36); + this.rb_addstudent_submit.TabIndex = 3; + this.rb_addstudent_submit.Text = "원생추가"; + this.rb_addstudent_submit.UseVisualStyleBackColor = true; + // + // lb_addstudent_sex + // + this.lb_addstudent_sex.AutoSize = true; + this.lb_addstudent_sex.Depth = 0; + this.lb_addstudent_sex.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_addstudent_sex.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_addstudent_sex.Location = new System.Drawing.Point(114, 130); + this.lb_addstudent_sex.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_addstudent_sex.Name = "lb_addstudent_sex"; + this.lb_addstudent_sex.Size = new System.Drawing.Size(25, 24); + this.lb_addstudent_sex.TabIndex = 0; + this.lb_addstudent_sex.Text = "남"; + this.lb_addstudent_sex.Click += new System.EventHandler(this.lb_addstudent_sex_Click); + // + // dv_addstudent_image + // + this.dv_addstudent_image.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.dv_addstudent_image.Depth = 0; + this.dv_addstudent_image.Location = new System.Drawing.Point(6, 7); + this.dv_addstudent_image.MouseState = MaterialSkin.MouseState.HOVER; + this.dv_addstudent_image.Name = "dv_addstudent_image"; + this.dv_addstudent_image.Size = new System.Drawing.Size(133, 147); + this.dv_addstudent_image.TabIndex = 2; + this.dv_addstudent_image.Text = "materialDivider2"; + // + // renewstudentpage + // + this.renewstudentpage.BackColor = System.Drawing.Color.White; + this.renewstudentpage.Controls.Add(this.tf_renewstudent_birthday); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_lecture); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_outdate); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_schoolclass); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_grade); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_schoolName); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_address); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_rejoindate); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_joindate); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_phone); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_name); + this.renewstudentpage.Controls.Add(this.rb_renewstudent_submit); + this.renewstudentpage.Controls.Add(this.tf_renewstudent_search); + this.renewstudentpage.Controls.Add(this.lb_renewstudent_sex); + this.renewstudentpage.Controls.Add(this.dv_renewstudent_image); + this.renewstudentpage.Location = new System.Drawing.Point(4, 25); + this.renewstudentpage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.renewstudentpage.Name = "renewstudentpage"; + this.renewstudentpage.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.renewstudentpage.Size = new System.Drawing.Size(779, 266); + this.renewstudentpage.TabIndex = 2; + this.renewstudentpage.Text = "원생재갱신"; + // + // tf_renewstudent_birthday + // + this.tf_renewstudent_birthday.Depth = 0; + this.tf_renewstudent_birthday.Hint = "생일"; + this.tf_renewstudent_birthday.Location = new System.Drawing.Point(421, 154); + this.tf_renewstudent_birthday.MaxLength = 32767; + this.tf_renewstudent_birthday.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_birthday.Name = "tf_renewstudent_birthday"; + this.tf_renewstudent_birthday.PasswordChar = '\0'; + this.tf_renewstudent_birthday.SelectedText = ""; + this.tf_renewstudent_birthday.SelectionLength = 0; + this.tf_renewstudent_birthday.SelectionStart = 0; + this.tf_renewstudent_birthday.Size = new System.Drawing.Size(352, 28); + this.tf_renewstudent_birthday.TabIndex = 28; + this.tf_renewstudent_birthday.TabStop = false; + this.tf_renewstudent_birthday.UseSystemPasswordChar = false; + // + // tf_renewstudent_lecture + // + this.tf_renewstudent_lecture.Depth = 0; + this.tf_renewstudent_lecture.Hint = "강좌"; + this.tf_renewstudent_lecture.Location = new System.Drawing.Point(421, 119); + this.tf_renewstudent_lecture.MaxLength = 32767; + this.tf_renewstudent_lecture.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_lecture.Name = "tf_renewstudent_lecture"; + this.tf_renewstudent_lecture.PasswordChar = '\0'; + this.tf_renewstudent_lecture.SelectedText = ""; + this.tf_renewstudent_lecture.SelectionLength = 0; + this.tf_renewstudent_lecture.SelectionStart = 0; + this.tf_renewstudent_lecture.Size = new System.Drawing.Size(352, 28); + this.tf_renewstudent_lecture.TabIndex = 27; + this.tf_renewstudent_lecture.TabStop = false; + this.tf_renewstudent_lecture.UseSystemPasswordChar = false; + // + // tf_renewstudent_outdate + // + this.tf_renewstudent_outdate.Depth = 0; + this.tf_renewstudent_outdate.Hint = "퇴소일자"; + this.tf_renewstudent_outdate.Location = new System.Drawing.Point(421, 84); + this.tf_renewstudent_outdate.MaxLength = 32767; + this.tf_renewstudent_outdate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_outdate.Name = "tf_renewstudent_outdate"; + this.tf_renewstudent_outdate.PasswordChar = '\0'; + this.tf_renewstudent_outdate.SelectedText = ""; + this.tf_renewstudent_outdate.SelectionLength = 0; + this.tf_renewstudent_outdate.SelectionStart = 0; + this.tf_renewstudent_outdate.Size = new System.Drawing.Size(352, 28); + this.tf_renewstudent_outdate.TabIndex = 26; + this.tf_renewstudent_outdate.TabStop = false; + this.tf_renewstudent_outdate.UseSystemPasswordChar = false; + // + // tf_renewstudent_schoolclass + // + this.tf_renewstudent_schoolclass.Depth = 0; + this.tf_renewstudent_schoolclass.Hint = "학교반"; + this.tf_renewstudent_schoolclass.Location = new System.Drawing.Point(145, 154); + this.tf_renewstudent_schoolclass.MaxLength = 32767; + this.tf_renewstudent_schoolclass.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_schoolclass.Name = "tf_renewstudent_schoolclass"; + this.tf_renewstudent_schoolclass.PasswordChar = '\0'; + this.tf_renewstudent_schoolclass.SelectedText = ""; + this.tf_renewstudent_schoolclass.SelectionLength = 0; + this.tf_renewstudent_schoolclass.SelectionStart = 0; + this.tf_renewstudent_schoolclass.Size = new System.Drawing.Size(269, 28); + this.tf_renewstudent_schoolclass.TabIndex = 25; + this.tf_renewstudent_schoolclass.TabStop = false; + this.tf_renewstudent_schoolclass.UseSystemPasswordChar = false; + // + // tf_renewstudent_grade + // + this.tf_renewstudent_grade.Depth = 0; + this.tf_renewstudent_grade.Hint = "학년"; + this.tf_renewstudent_grade.Location = new System.Drawing.Point(146, 119); + this.tf_renewstudent_grade.MaxLength = 32767; + this.tf_renewstudent_grade.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_grade.Name = "tf_renewstudent_grade"; + this.tf_renewstudent_grade.PasswordChar = '\0'; + this.tf_renewstudent_grade.SelectedText = ""; + this.tf_renewstudent_grade.SelectionLength = 0; + this.tf_renewstudent_grade.SelectionStart = 0; + this.tf_renewstudent_grade.Size = new System.Drawing.Size(268, 28); + this.tf_renewstudent_grade.TabIndex = 24; + this.tf_renewstudent_grade.TabStop = false; + this.tf_renewstudent_grade.UseSystemPasswordChar = false; + // + // tf_renewstudent_schoolName + // + this.tf_renewstudent_schoolName.Depth = 0; + this.tf_renewstudent_schoolName.Hint = "학교이름"; + this.tf_renewstudent_schoolName.Location = new System.Drawing.Point(146, 84); + this.tf_renewstudent_schoolName.MaxLength = 32767; + this.tf_renewstudent_schoolName.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_schoolName.Name = "tf_renewstudent_schoolName"; + this.tf_renewstudent_schoolName.PasswordChar = '\0'; + this.tf_renewstudent_schoolName.SelectedText = ""; + this.tf_renewstudent_schoolName.SelectionLength = 0; + this.tf_renewstudent_schoolName.SelectionStart = 0; + this.tf_renewstudent_schoolName.Size = new System.Drawing.Size(268, 28); + this.tf_renewstudent_schoolName.TabIndex = 23; + this.tf_renewstudent_schoolName.TabStop = false; + this.tf_renewstudent_schoolName.UseSystemPasswordChar = false; + // + // tf_renewstudent_address + // + this.tf_renewstudent_address.Depth = 0; + this.tf_renewstudent_address.Hint = "주소"; + this.tf_renewstudent_address.Location = new System.Drawing.Point(145, 49); + this.tf_renewstudent_address.MaxLength = 32767; + this.tf_renewstudent_address.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_address.Name = "tf_renewstudent_address"; + this.tf_renewstudent_address.PasswordChar = '\0'; + this.tf_renewstudent_address.SelectedText = ""; + this.tf_renewstudent_address.SelectionLength = 0; + this.tf_renewstudent_address.SelectionStart = 0; + this.tf_renewstudent_address.Size = new System.Drawing.Size(269, 28); + this.tf_renewstudent_address.TabIndex = 22; + this.tf_renewstudent_address.TabStop = false; + this.tf_renewstudent_address.UseSystemPasswordChar = false; + // + // tf_renewstudent_rejoindate + // + this.tf_renewstudent_rejoindate.Depth = 0; + this.tf_renewstudent_rejoindate.Hint = "재입학일자"; + this.tf_renewstudent_rejoindate.Location = new System.Drawing.Point(420, 49); + this.tf_renewstudent_rejoindate.MaxLength = 32767; + this.tf_renewstudent_rejoindate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_rejoindate.Name = "tf_renewstudent_rejoindate"; + this.tf_renewstudent_rejoindate.PasswordChar = '\0'; + this.tf_renewstudent_rejoindate.SelectedText = ""; + this.tf_renewstudent_rejoindate.SelectionLength = 0; + this.tf_renewstudent_rejoindate.SelectionStart = 0; + this.tf_renewstudent_rejoindate.Size = new System.Drawing.Size(353, 28); + this.tf_renewstudent_rejoindate.TabIndex = 21; + this.tf_renewstudent_rejoindate.TabStop = false; + this.tf_renewstudent_rejoindate.UseSystemPasswordChar = false; + // + // tf_renewstudent_joindate + // + this.tf_renewstudent_joindate.Depth = 0; + this.tf_renewstudent_joindate.Hint = "입학일자"; + this.tf_renewstudent_joindate.Location = new System.Drawing.Point(420, 15); + this.tf_renewstudent_joindate.MaxLength = 32767; + this.tf_renewstudent_joindate.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_joindate.Name = "tf_renewstudent_joindate"; + this.tf_renewstudent_joindate.PasswordChar = '\0'; + this.tf_renewstudent_joindate.SelectedText = ""; + this.tf_renewstudent_joindate.SelectionLength = 0; + this.tf_renewstudent_joindate.SelectionStart = 0; + this.tf_renewstudent_joindate.Size = new System.Drawing.Size(353, 28); + this.tf_renewstudent_joindate.TabIndex = 20; + this.tf_renewstudent_joindate.TabStop = false; + this.tf_renewstudent_joindate.UseSystemPasswordChar = false; + // + // tf_renewstudent_phone + // + this.tf_renewstudent_phone.Depth = 0; + this.tf_renewstudent_phone.Hint = "전화번호"; + this.tf_renewstudent_phone.Location = new System.Drawing.Point(145, 15); + this.tf_renewstudent_phone.MaxLength = 32767; + this.tf_renewstudent_phone.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_phone.Name = "tf_renewstudent_phone"; + this.tf_renewstudent_phone.PasswordChar = '\0'; + this.tf_renewstudent_phone.SelectedText = ""; + this.tf_renewstudent_phone.SelectionLength = 0; + this.tf_renewstudent_phone.SelectionStart = 0; + this.tf_renewstudent_phone.Size = new System.Drawing.Size(269, 28); + this.tf_renewstudent_phone.TabIndex = 19; + this.tf_renewstudent_phone.TabStop = false; + this.tf_renewstudent_phone.UseSystemPasswordChar = false; + // + // tf_renewstudent_name + // + this.tf_renewstudent_name.Depth = 0; + this.tf_renewstudent_name.Hint = "이름"; + this.tf_renewstudent_name.Location = new System.Drawing.Point(3, 152); + this.tf_renewstudent_name.MaxLength = 32767; + this.tf_renewstudent_name.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_name.Name = "tf_renewstudent_name"; + this.tf_renewstudent_name.PasswordChar = '\0'; + this.tf_renewstudent_name.SelectedText = ""; + this.tf_renewstudent_name.SelectionLength = 0; + this.tf_renewstudent_name.SelectionStart = 0; + this.tf_renewstudent_name.Size = new System.Drawing.Size(122, 28); + this.tf_renewstudent_name.TabIndex = 5; + this.tf_renewstudent_name.TabStop = false; + this.tf_renewstudent_name.UseSystemPasswordChar = false; + // + // rb_renewstudent_submit + // + this.rb_renewstudent_submit.AutoSize = true; + this.rb_renewstudent_submit.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.rb_renewstudent_submit.Depth = 0; + this.rb_renewstudent_submit.Icon = null; + this.rb_renewstudent_submit.Location = new System.Drawing.Point(652, 227); + this.rb_renewstudent_submit.MouseState = MaterialSkin.MouseState.HOVER; + this.rb_renewstudent_submit.Name = "rb_renewstudent_submit"; + this.rb_renewstudent_submit.Primary = true; + this.rb_renewstudent_submit.Size = new System.Drawing.Size(121, 36); + this.rb_renewstudent_submit.TabIndex = 4; + this.rb_renewstudent_submit.Text = "원생 재갱신"; + this.rb_renewstudent_submit.UseVisualStyleBackColor = true; + // + // tf_renewstudent_search + // + this.tf_renewstudent_search.Depth = 0; + this.tf_renewstudent_search.Hint = "검색"; + this.tf_renewstudent_search.Location = new System.Drawing.Point(6, 231); + this.tf_renewstudent_search.MaxLength = 32767; + this.tf_renewstudent_search.MouseState = MaterialSkin.MouseState.HOVER; + this.tf_renewstudent_search.Name = "tf_renewstudent_search"; + this.tf_renewstudent_search.PasswordChar = '\0'; + this.tf_renewstudent_search.SelectedText = ""; + this.tf_renewstudent_search.SelectionLength = 0; + this.tf_renewstudent_search.SelectionStart = 0; + this.tf_renewstudent_search.Size = new System.Drawing.Size(592, 28); + this.tf_renewstudent_search.TabIndex = 3; + this.tf_renewstudent_search.TabStop = false; + this.tf_renewstudent_search.UseSystemPasswordChar = false; + // + // lb_renewstudent_sex + // + this.lb_renewstudent_sex.AutoSize = true; + this.lb_renewstudent_sex.Depth = 0; + this.lb_renewstudent_sex.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_renewstudent_sex.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_renewstudent_sex.Location = new System.Drawing.Point(100, 122); + this.lb_renewstudent_sex.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_renewstudent_sex.Name = "lb_renewstudent_sex"; + this.lb_renewstudent_sex.Size = new System.Drawing.Size(25, 24); + this.lb_renewstudent_sex.TabIndex = 1; + this.lb_renewstudent_sex.Text = "남"; + this.lb_renewstudent_sex.Click += new System.EventHandler(this.lb_renewstudent_sex_Click); + // + // dv_renewstudent_image + // + this.dv_renewstudent_image.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.dv_renewstudent_image.Depth = 0; + this.dv_renewstudent_image.Location = new System.Drawing.Point(6, 7); + this.dv_renewstudent_image.MouseState = MaterialSkin.MouseState.HOVER; + this.dv_renewstudent_image.Name = "dv_renewstudent_image"; + this.dv_renewstudent_image.Size = new System.Drawing.Size(119, 139); + this.dv_renewstudent_image.TabIndex = 0; + this.dv_renewstudent_image.Text = "materialDivider3"; + // + // checkpage + // + this.checkpage.Controls.Add(this.rb_); + this.checkpage.Location = new System.Drawing.Point(4, 25); + this.checkpage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.checkpage.Name = "checkpage"; + this.checkpage.Padding = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.checkpage.Size = new System.Drawing.Size(779, 266); + this.checkpage.TabIndex = 3; + this.checkpage.Text = "출석체크"; + this.checkpage.UseVisualStyleBackColor = true; + // + // rb_ + // + this.rb_.AutoSize = true; + this.rb_.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.rb_.Depth = 0; + this.rb_.Icon = null; + this.rb_.Location = new System.Drawing.Point(675, 223); + this.rb_.MouseState = MaterialSkin.MouseState.HOVER; + this.rb_.Name = "rb_"; + this.rb_.Primary = true; + this.rb_.Size = new System.Drawing.Size(98, 36); + this.rb_.TabIndex = 0; + this.rb_.Text = "출석체크"; + this.rb_.UseVisualStyleBackColor = true; + // + // materialContextMenuStrip1 + // + this.materialContextMenuStrip1.BackColor = System.Drawing.Color.White; + this.materialContextMenuStrip1.Depth = 0; + this.materialContextMenuStrip1.Font = new System.Drawing.Font("Microsoft Sans Serif", 11F); + this.materialContextMenuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20); + this.materialContextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.item1ToolStripMenuItem, + this.disabledItemToolStripMenuItem, + this.item2ToolStripMenuItem, + this.toolStripSeparator1, + this.item3ToolStripMenuItem}); + this.materialContextMenuStrip1.Margin = new System.Windows.Forms.Padding(16, 8, 16, 8); + this.materialContextMenuStrip1.MouseState = MaterialSkin.MouseState.HOVER; + this.materialContextMenuStrip1.Name = "materialContextMenuStrip1"; + this.materialContextMenuStrip1.Size = new System.Drawing.Size(200, 130); + // + // item1ToolStripMenuItem + // + this.item1ToolStripMenuItem.AutoSize = false; + this.item1ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.subItem1ToolStripMenuItem, + this.subItem2ToolStripMenuItem}); + this.item1ToolStripMenuItem.Name = "item1ToolStripMenuItem"; + this.item1ToolStripMenuItem.Size = new System.Drawing.Size(170, 30); + this.item1ToolStripMenuItem.Text = "Item 1"; + // + // subItem1ToolStripMenuItem + // + this.subItem1ToolStripMenuItem.AutoSize = false; + this.subItem1ToolStripMenuItem.Name = "subItem1ToolStripMenuItem"; + this.subItem1ToolStripMenuItem.Size = new System.Drawing.Size(152, 30); + this.subItem1ToolStripMenuItem.Text = "SubItem 1"; + // + // subItem2ToolStripMenuItem + // + this.subItem2ToolStripMenuItem.AutoSize = false; + this.subItem2ToolStripMenuItem.Name = "subItem2ToolStripMenuItem"; + this.subItem2ToolStripMenuItem.Size = new System.Drawing.Size(152, 30); + this.subItem2ToolStripMenuItem.Text = "SubItem 2"; + // + // disabledItemToolStripMenuItem + // + this.disabledItemToolStripMenuItem.AutoSize = false; + this.disabledItemToolStripMenuItem.Enabled = false; + this.disabledItemToolStripMenuItem.Name = "disabledItemToolStripMenuItem"; + this.disabledItemToolStripMenuItem.Size = new System.Drawing.Size(170, 30); + this.disabledItemToolStripMenuItem.Text = "Disabled item"; + // + // item2ToolStripMenuItem + // + this.item2ToolStripMenuItem.AutoSize = false; + this.item2ToolStripMenuItem.Name = "item2ToolStripMenuItem"; + this.item2ToolStripMenuItem.Size = new System.Drawing.Size(170, 30); + this.item2ToolStripMenuItem.Text = "Item 2"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(196, 6); + // + // item3ToolStripMenuItem + // + this.item3ToolStripMenuItem.AutoSize = false; + this.item3ToolStripMenuItem.Name = "item3ToolStripMenuItem"; + this.item3ToolStripMenuItem.Size = new System.Drawing.Size(170, 30); + this.item3ToolStripMenuItem.Text = "Item 3"; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(823, 495); + this.ContextMenuStrip = this.materialContextMenuStrip1; + this.Controls.Add(this.materialTabSelector1); + this.Controls.Add(this.rb_attend_submit); + this.Controls.Add(this.lb_mainpage_sex); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "MainForm"; + this.Text = "관리"; + this.Load += new System.EventHandler(this.MainForm_Load); + this.rb_attend_submit.ResumeLayout(false); + this.mainpage.ResumeLayout(false); + this.mainpage.PerformLayout(); + this.addstudentpage.ResumeLayout(false); + this.addstudentpage.PerformLayout(); + this.renewstudentpage.ResumeLayout(false); + this.renewstudentpage.PerformLayout(); + this.checkpage.ResumeLayout(false); + this.checkpage.PerformLayout(); + this.materialContextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private MaterialDivider lb_mainpage_sex; + private MaterialTabSelector materialTabSelector1; + private MaterialTabControl rb_attend_submit; + private System.Windows.Forms.TabPage mainpage; + private System.Windows.Forms.TabPage addstudentpage; + private System.Windows.Forms.TabPage renewstudentpage; + private MaterialContextMenuStrip materialContextMenuStrip1; + private MaterialSkin.Controls.MaterialToolStripMenuItem item1ToolStripMenuItem; + private MaterialSkin.Controls.MaterialToolStripMenuItem subItem1ToolStripMenuItem; + private MaterialSkin.Controls.MaterialToolStripMenuItem subItem2ToolStripMenuItem; + private MaterialSkin.Controls.MaterialToolStripMenuItem item2ToolStripMenuItem; + private MaterialSkin.Controls.MaterialToolStripMenuItem item3ToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem disabledItemToolStripMenuItem; + private TabPage checkpage; + private MaterialLabel lb_addstudent_sex; + private MaterialDivider dv_addstudent_image; + private MaterialRaisedButton rb_addstudent_submit; + private MaterialSingleLineTextField tf_addstudent_name; + private MaterialLabel lb_renewstudent_sex; + private MaterialDivider dv_renewstudent_image; + private MaterialRaisedButton rb_renewstudent_submit; + private MaterialSingleLineTextField tf_renewstudent_search; + private MaterialSingleLineTextField tf_renewstudent_name; + private MaterialRaisedButton rb_; + private MaterialSingleLineTextField tf_addstudent_lecture; + private MaterialSingleLineTextField tf_addstudent_outdate; + private MaterialSingleLineTextField tf_addstudent_schoolclass; + private MaterialSingleLineTextField tf_addstudent_grade; + private MaterialSingleLineTextField tf_addstudent_schoolname; + private MaterialSingleLineTextField tf_addstudent_address; + private MaterialSingleLineTextField tf_addstudent_rejoindate; + private MaterialSingleLineTextField tf_addstudent_joindate; + private MaterialSingleLineTextField tf_addstudent_phone; + private MaterialSingleLineTextField tf_addstudent_birthday; + private MaterialLabel materialLabel1; + private MaterialLabel lb_mainpage_id; + private MaterialDivider dv_mainpage_image; + private MaterialSingleLineTextField tf_renewstudent_birthday; + private MaterialSingleLineTextField tf_renewstudent_lecture; + private MaterialSingleLineTextField tf_renewstudent_outdate; + private MaterialSingleLineTextField tf_renewstudent_schoolclass; + private MaterialSingleLineTextField tf_renewstudent_grade; + private MaterialSingleLineTextField tf_renewstudent_schoolName; + private MaterialSingleLineTextField tf_renewstudent_address; + private MaterialSingleLineTextField tf_renewstudent_rejoindate; + private MaterialSingleLineTextField tf_renewstudent_joindate; + private MaterialSingleLineTextField tf_renewstudent_phone; + private MaterialLabel lb_mainpage_join; + private MaterialRaisedButton rb_mainpage_ban; + private MaterialSingleLineTextField tf_mainpage_search; + private MaterialLabel lb_mainpage_shoolclass; + private MaterialLabel lb_mainpage_grade; + private MaterialLabel lb_mainpage_school; + private MaterialLabel lb_mainpage_address; + private MaterialLabel lb_mainpage_phone; + private MaterialLabel lb_mainpage_name; + private MaterialLabel lb_mainpage_outdate; + private MaterialLabel lb_mainpage_rejoindate; + private MaterialLabel lb_mainpage_birthday; + private MaterialLabel lb_mainpage_lecture; + } +} \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.resx b/client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.resx similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Form1.resx rename to client/c#/AcademyMG/MaterialSkinExample/MainForm/MainForm.resx diff --git a/client/c#/AcademyMG/MaterialSkinExample/MaterialSkinExample.csproj b/client/c#/AcademyMG/MaterialSkinExample/MaterialSkinExample.csproj new file mode 100644 index 0000000..ba45ba4 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/MaterialSkinExample.csproj @@ -0,0 +1,250 @@ + + + + + Debug + AnyCPU + {47409AA5-62AE-4189-8E83-C471502DF5E9} + WinExe + Properties + MaterialSkinExample + MaterialSkinExample + v4.5 + 512 + 게시\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + icon.ico + + + + ..\packages\Castle.Core.3.2.1\lib\net45\Castle.Core.dll + + + ..\packages\FluentAssertions.2.1.0.0\lib\net45\FluentAssertions.dll + + + False + bin\Debug\Newtonsoft.Json.dll + + + ..\packages\NSubstitute.1.6.1.0\lib\NET40\NSubstitute.dll + + + ..\packages\NUnit.2.6.3\lib\nunit.framework.dll + + + ..\packages\RestSharp.104.3.3\lib\net4\RestSharp.dll + + + ..\Refit-Tests\bin\Debug\RichardSzalay.MockHttp.dll + + + + + + + + + + + + + + + + + + + + False + bin\Debug\xunit.abstractions.dll + + + False + bin\Debug\xunit.assert.dll + + + False + bin\Debug\xunit.core.dll + + + False + bin\Debug\xunit.execution.desktop.dll + + + + + + Form + + + AdminForm.cs + + + Form + + + MainForm.cs + + + Form + + + RegisterForm.cs + + + Form + + + LoginForm.cs + + + Form + + + SelectClassForm.cs + + + + + Form + + + Notification.cs + + + + + Form + + + ShowDialogForm.cs + + + + AdminForm.cs + + + LoginForm.cs + + + SelectClassForm.cs + + + MainForm.cs + + + RegisterForm.cs + + + Notification.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + ShowDialogForm.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {8eb7611b-68cd-4b8b-987a-11717e2b250c} + MaterialSkin + + + {5f52e5c6-9a0b-48b3-ae05-d8cb0b9cc605} + Refit-Tests-Net45 + + + {252ce1ca-19fa-4445-a3c2-e4d6c80a935a} + Refit-Net45 + + + + + + + + + + + False + Microsoft .NET Framework 4.5%28x86 및 x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/Notification/FormAnimator.cs b/client/c#/AcademyMG/MaterialSkinExample/Notification/FormAnimator.cs new file mode 100644 index 0000000..f0638a2 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Notification/FormAnimator.cs @@ -0,0 +1,317 @@ +// =====COPYRIGHT===== +// Code originally retrieved from http://www.vbforums.com/showthread.php?t=547778 - no license information supplied +// =====COPYRIGHT===== +using System; +using System.ComponentModel; +using System.Windows.Forms; + +namespace ToastNotifications +{ + /// + /// Animates a form when it is shown, hidden or closed + /// + /// + /// MDI child forms do not support the Fade method and only support other methods while being displayed for the first time and when closing + /// + public sealed class FormAnimator + { +#region Types + + /// + /// The methods of animation available. + /// + public enum AnimationMethod + { + /// + /// Rolls out from edge when showing and into edge when hiding + /// + /// + /// This is the default animation method and requires a direction + /// + Roll = 0x0, + /// + /// Expands out from center when showing and collapses into center when hiding + /// + Center = 0x10, + /// + /// Slides out from edge when showing and slides into edge when hiding + /// + /// + /// Requires a direction + /// + Slide = 0x40000, + /// + /// Fades from transaprent to opaque when showing and from opaque to transparent when hiding + /// + Fade = 0x80000 + } + + /// + /// The directions in which the Roll and Slide animations can be shown + /// + /// + /// Horizontal and vertical directions can be combined to create diagonal animations + /// + [Flags] + public enum AnimationDirection + { + /// + /// From left to right + /// + Right = 0x1, + /// + /// From right to left + /// + Left = 0x2, + /// + /// From top to bottom + /// + Down = 0x4, + /// + /// From bottom to top + /// + Up = 0x8 + } + +#endregion // Types + +#region Constants + + /// + /// Hide the form + /// + private const int AwHide = 0x10000; + /// + /// Activate the form + /// + private const int AwActivate = 0x20000; + /// + /// The number of milliseconds over which the animation occurs if no value is specified + /// + private const int DefaultDuration = 250; + +#endregion // Constants + +#region Variables + + /// + /// The form to be animated + /// + private readonly Form _form; + /// + /// The animation method used to show and hide the form + /// + private AnimationMethod _method; + /// + /// The direction in which to Roll or Slide the form + /// + private AnimationDirection _direction; + /// + /// The number of milliseconds over which the animation is played + /// + private int _duration; + +#endregion // Variables + +#region Properties + + /// + /// Gets or sets the animation method used to show and hide the form + /// + /// + /// The animation method used to show and hide the form + /// + /// + /// Roll is used by default if no method is specified + /// + public AnimationMethod Method + { + get + { + return _method; + } + set + { + _method = value; + } + } + + /// + /// Gets or Sets the direction in which the animation is performed + /// + /// + /// The direction in which the animation is performed + /// + /// + /// The direction is only applicable to the Roll and Slide methods + /// + public AnimationDirection Direction + { + get + { + return _direction; + } + set + { + _direction = value; + } + } + + /// + /// Gets or Sets the number of milliseconds over which the animation is played + /// + /// + /// The number of milliseconds over which the animation is played + /// + public int Duration + { + get + { + return _duration; + } + set + { + _duration = value; + } + } + + /// + /// Gets the form to be animated + /// + /// + /// The form to be animated + /// + public Form Form + { + get + { + return _form; + } + } + +#endregion // Properties + +#region Constructors + + /// + /// Creates a new FormAnimator object for the specified form + /// + /// + /// The form to be animated + /// + /// + /// No animation will be used unless the Method and/or Direction properties are set independently. The Duration is set to quarter of a second by default. + /// + public FormAnimator(Form form) + { + _form = form; + + _form.Load += Form_Load; + _form.VisibleChanged += Form_VisibleChanged; + _form.Closing += Form_Closing; + + _duration = DefaultDuration; + } + + /// + /// Creates a new FormAnimator object for the specified form using the specified method over the specified duration + /// + /// + /// The form to be animated + /// + /// + /// The animation method used to show and hide the form + /// + /// + /// The number of milliseconds over which the animation is played + /// + /// + /// No animation will be used for the Roll or Slide methods unless the Direction property is set independently + /// + public FormAnimator(Form form, AnimationMethod method, int duration) : this(form) + { + _method = method; + _duration = duration; + } + + /// + /// Creates a new FormAnimator object for the specified form using the specified method in the specified direction over the specified duration + /// + /// + /// The form to be animated + /// + /// + /// The animation method used to show and hide the form + /// + /// + /// The direction in which to animate the form + /// + /// + /// The number of milliseconds over which the animation is played + /// + /// + /// The direction argument will have no effect if the Center or Fade method is + /// specified + /// + public FormAnimator(Form form, AnimationMethod method, AnimationDirection direction, int duration) : this(form, method, duration) + { + _direction = direction; + } + +#endregion // Constructors + +#region Event Handlers + + /// + /// Animates the form automatically when it is loaded + /// + private void Form_Load(object sender, EventArgs e) + { + // MDI child forms do not support transparency so do not try to use the Fade method + if (_form.MdiParent == null || _method != AnimationMethod.Fade) + { + NativeMethods.AnimateWindow(_form.Handle, _duration, AwActivate | (int)_method | (int)_direction); + } + } + + /// + /// Animates the form automatically when it is shown or hidden + /// + private void Form_VisibleChanged(object sender, EventArgs e) + { + // Do not attempt to animate MDI child forms while showing or hiding as they do not behave as expected + if (_form.MdiParent == null) + { + int flags = (int)_method | (int)_direction; + + if (_form.Visible) + { + flags = flags | AwActivate; + } + else + { + flags = flags | AwHide; + } + + NativeMethods.AnimateWindow(_form.Handle, _duration, flags); + } + } + + /// + /// Animates the form automatically when it closes + /// + private void Form_Closing(object sender, CancelEventArgs e) + { + if (!e.Cancel) + { + // MDI child forms do not support transparency so do not try to use the Fade method. + if (_form.MdiParent == null || _method != AnimationMethod.Fade) + { + NativeMethods.AnimateWindow(_form.Handle, _duration, AwHide | (int)_method | (int)_direction); + } + } + } + +#endregion // Event Handlers + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/Notification/NativeMethods.cs b/client/c#/AcademyMG/MaterialSkinExample/Notification/NativeMethods.cs new file mode 100644 index 0000000..36cce8a --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Notification/NativeMethods.cs @@ -0,0 +1,46 @@ +using System; +using System.Runtime.InteropServices; + +namespace ToastNotifications +{ + internal static class NativeMethods + { + /// + /// Gets the handle of the window that currently has focus. + /// + /// + /// The handle of the window that currently has focus. + /// + [DllImport("user32")] + internal static extern IntPtr GetForegroundWindow(); + + /// + /// Activates the specified window. + /// + /// + /// The handle of the window to be focused. + /// + /// + /// True if the window was focused; False otherwise. + /// + [DllImport("user32")] + internal static extern bool SetForegroundWindow(IntPtr hWnd); + + /// + /// Windows API function to animate a window. + /// + [DllImport("user32")] + internal extern static bool AnimateWindow(IntPtr hWnd, int dwTime, int dwFlags); + + [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] + internal static extern IntPtr CreateRoundRectRgn + ( + int nLeftRect, // x-coordinate of upper-left corner + int nTopRect, // y-coordinate of upper-left corner + int nRightRect, // x-coordinate of lower-right corner + int nBottomRect, // y-coordinate of lower-right corner + int nWidthEllipse, // width of ellipse + int nHeightEllipse // height of ellipse + ); + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.cs b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.cs new file mode 100644 index 0000000..d9e2f6a --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.cs @@ -0,0 +1,138 @@ +// =====COPYRIGHT===== +// Code originally retrieved from http://www.vbforums.com/showthread.php?t=547778 - no license information supplied +// =====COPYRIGHT===== +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; + +namespace ToastNotifications +{ + public partial class Notification : Form + { + private static readonly List OpenNotifications = new List(); + private bool _allowFocus; + private readonly FormAnimator _animator; + private IntPtr _currentForegroundWindow; + + /// + /// + /// + /// + /// + /// + /// + /// + public Notification(string title, string body, int duration, FormAnimator.AnimationMethod animation, FormAnimator.AnimationDirection direction) + { + InitializeComponent(); + + if (duration < 0) + duration = int.MaxValue; + else + duration = duration * 1000; + + lifeTimer.Interval = duration; + labelTitle.Text = title; + labelBody.Text = body; + + _animator = new FormAnimator(this, animation, direction, 500); + + Region = Region.FromHrgn(NativeMethods.CreateRoundRectRgn(0, 0, Width - 5, Height - 5, 20, 20)); + } + + #region Methods + + /// + /// Displays the form + /// + /// + /// Required to allow the form to determine the current foreground window before being displayed + /// + public new void Show() + { + // Determine the current foreground window so it can be reactivated each time this form tries to get the focus + _currentForegroundWindow = NativeMethods.GetForegroundWindow(); + + base.Show(); + } + + #endregion // Methods + + #region Event Handlers + + private void Notification_Load(object sender, EventArgs e) + { + // Display the form just above the system tray. + Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - Width, + Screen.PrimaryScreen.WorkingArea.Height - Height); + + // Move each open form upwards to make room for this one + foreach (Notification openForm in OpenNotifications) + { + openForm.Top -= Height; + } + + OpenNotifications.Add(this); + lifeTimer.Start(); + } + + private void Notification_Activated(object sender, EventArgs e) + { + // Prevent the form taking focus when it is initially shown + if (!_allowFocus) + { + // Activate the window that previously had focus + NativeMethods.SetForegroundWindow(_currentForegroundWindow); + } + } + + private void Notification_Shown(object sender, EventArgs e) + { + // Once the animation has completed the form can receive focus + _allowFocus = true; + + // Close the form by sliding down. + _animator.Duration = 0; + _animator.Direction = FormAnimator.AnimationDirection.Down; + } + + private void Notification_FormClosed(object sender, FormClosedEventArgs e) + { + // Move down any open forms above this one + foreach (Notification openForm in OpenNotifications) + { + if (openForm == this) + { + // Remaining forms are below this one + break; + } + openForm.Top += Height; + } + + OpenNotifications.Remove(this); + } + + private void lifeTimer_Tick(object sender, EventArgs e) + { + Close(); + } + + private void Notification_Click(object sender, EventArgs e) + { + Close(); + } + + private void labelTitle_Click(object sender, EventArgs e) + { + Close(); + } + + private void labelRO_Click(object sender, EventArgs e) + { + Close(); + } + + #endregion // Event Handlers + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.designer.cs b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.designer.cs new file mode 100644 index 0000000..5e360ac --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.designer.cs @@ -0,0 +1,105 @@ +namespace ToastNotifications +{ + partial class Notification + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Notification)); + this.lifeTimer = new System.Windows.Forms.Timer(this.components); + this.labelBody = new System.Windows.Forms.Label(); + this.labelTitle = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lifeTimer + // + this.lifeTimer.Tick += new System.EventHandler(this.lifeTimer_Tick); + // + // labelBody + // + this.labelBody.Anchor = System.Windows.Forms.AnchorStyles.None; + this.labelBody.BackColor = System.Drawing.Color.Transparent; + this.labelBody.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelBody.ForeColor = System.Drawing.Color.Black; + this.labelBody.Location = new System.Drawing.Point(12, 83); + this.labelBody.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelBody.Name = "labelBody"; + this.labelBody.Size = new System.Drawing.Size(315, 48); + this.labelBody.TabIndex = 0; + this.labelBody.Text = "Body goes here and here and here and here and here"; + this.labelBody.TextAlign = System.Drawing.ContentAlignment.TopCenter; + this.labelBody.Click += new System.EventHandler(this.labelRO_Click); + // + // labelTitle + // + this.labelTitle.BackColor = System.Drawing.Color.Transparent; + this.labelTitle.Font = new System.Drawing.Font("Calibri", 12.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelTitle.ForeColor = System.Drawing.Color.Gainsboro; + this.labelTitle.Location = new System.Drawing.Point(4, 1); + this.labelTitle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.labelTitle.Name = "labelTitle"; + this.labelTitle.Size = new System.Drawing.Size(337, 27); + this.labelTitle.TabIndex = 0; + this.labelTitle.Text = "title goes here"; + this.labelTitle.Click += new System.EventHandler(this.labelTitle_Click); + // + // Notification + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.ClientSize = new System.Drawing.Size(340, 199); + this.ControlBox = false; + this.Controls.Add(this.labelBody); + this.Controls.Add(this.labelTitle); + this.DoubleBuffered = true; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); + this.Name = "Notification"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.Text = "EDGE Shop Flag Notification"; + this.TopMost = true; + this.Activated += new System.EventHandler(this.Notification_Activated); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Notification_FormClosed); + this.Load += new System.EventHandler(this.Notification_Load); + this.Shown += new System.EventHandler(this.Notification_Shown); + this.Click += new System.EventHandler(this.Notification_Click); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Timer lifeTimer; + private System.Windows.Forms.Label labelBody; + private System.Windows.Forms.Label labelTitle; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.resx b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.resx new file mode 100644 index 0000000..4577872 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Notification/Notification.resx @@ -0,0 +1,1337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAABIAAAAKICAYAAAAIK4ENAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAASdAAAEnQB3mYfeAAAE85JREFUeF7t3N+KVWUA + h+F9O3YcRIUFJXSidJDeTnQQSJYhlfTnaoIKqoPqIClLnRFnRhxnZGxmtD2z93y5R02kbmC/PA+8rG/B + uoIffGvy0ltvD0mSJEmSJHUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmS + JMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmS + JEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUz + AEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmS + JMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmS + JEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUz + AEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmS + JMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmS + JEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUz + AEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmS + JMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmS + JEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUz + AEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmS + JMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmS + JEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMUzAEmSJEmSJMWbvHjqzHjWaUmSJEmSJMWavPDq + qfG0E6+8+aQ3xomXJUmSJEmSVGhy8vTZ8bh3xskzj56LTp8br505N14/7uyTnr5LkiRJkiRpmZq8e/7i + WPTehY/H+xc/GecvXR4ffPr5uPDZF+PDy1+Oi5e/Ou6jR2dJkiRJkiQtX5Ovv/luLPr2+x/Gjz/9PH75 + 9cq4cvXq+O3Pa+P3a9fHH9dXjrt67YYkSZIkSZKWsMmNGytj0dra2ri7dXf8tbs7ptPpODw8HLP5bMyP + jh43lyRJkiRJ0jI2WV1ZGYs21tfH1vbW2NvfGweHh+NwNhuz+fzZACRJkiRJkqSlbLJ269ZYtHnnzrh/ + f2dMp38PAAAAADomN2/eHItu37497t27Nx48eDBms9k4Ojp68gkAAAAAy2yyuro6Fm1sbIzt7e2xv79/ + /P+f+XxuBAIAAAAIMAABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYg + AAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4 + AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAA + QJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgA + AAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4A + BAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYg + AAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4 + AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAA + QJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgA + AAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4A + BAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYg + AAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4 + AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAA + QJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgA + AAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4A + BAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYg + AAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4 + AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAA + QJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgA + AAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4A + BAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYg + AAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4 + AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAA + QJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgA + AAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4A + BAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQ + ZwACAAAAiDMAAQAAAMQZgAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAA + AIgzAAEAAADEGYAAAAAA4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwAB + AAAAxBmAAAAAAOIMQAAAAABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMQZ + gAAAAADiDEAAAAAAcQYgAAAAgDgDEAAAAECcAQgAAAAgzgAEAAAAEGcAAgAAAIgzAAEAAADEGYAAAAAA + 4gxAAAAAAHEGIAAAAIA4AxAAAABAnAEIAAAAIM4ABAAAABBnAAIAAACIMwABAAAAxBmAAAAAAOIMQAAA + AABxBiAAAACAOAMQAAAAQJwBCAAAACDOAAQAAAAQZwACAAAAiDMAAQAAAMT97wA0m82MPwAAAAAR/xmA + 9vb2DEAAAAAAIc8NQFtbW2N3d3dMp9PnroEtWpwlSZIkSZK0fP07AK2vr4/Nzc2xs7NzfA3s4cOHx0PQ + wcHBcYuzJEmSJEmSlq3p+Af4RMr9DVyHwAAAAABJRU5ErkJggg== + + + + + AAABAAoAICAQAAEABADoAgAApgAAABAQEAABAAQAKAEAAI4DAAAwMAAAAQAIAKgOAAC2BAAAICAAAAEA + CACoCAAAXhMAABAQAAABAAgAaAUAAAYcAAAAAAAAAQAgAD1dAABuIQAAQEAAAAEAIAAoQgAAq34AADAw + AAABACAAqCUAANPAAAAgIAAAAQAgAKgQAAB75gAAEBAAAAEAIABoBAAAI/cAACgAAAAgAAAAQAAAAAEA + BAAAAAAAgAIAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDA + wAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8Adxc1NTU1NxcXFxNTU1Nxd3d4eIeIh4eIeIeIh4eI + eHdXiHiHh4iHiHiIeHiHiHh3d4eIh4iHh4h4eHiIeIeId3eHh4eHiHh4h4h4eIeHiHd3eIeIeIeIiHiH + iHiHiIeBN4eIeIePh4eHiHh4eHh4d3eIeHh4f4eHiHh4eIeIeHd3eHh4eH+IeHh4eHh4eHh3d3h4h4eP + iHh4eHh4eHh4dxh4d4eHj4eHh4eHh4eHh3d3d4h4eH+IeHeHiHh4eHh3d4d4eHh/iHiIh3h4eHeHd3d3 + h4eHj4eHibmId4d4eHd3h4d3h3iJiIm7m3eHh4d3d3h4iIiHm4uZuJiIh4eHd3eIiIiHiLm4t5ubuIiH + iHd3iHh4h4i7i5e3uHiIiIh3d4iIh4iJibu5uXuYeIeId3eHh4iIiLi4m5i7eIh4iHd3h4eHiPm5uLm4 + mDh4eHh3d3eHh3/7t7uTe5t4eHeHd3eHh4d/+YuLt3h7eHeHh3d3d3d3f4c7m5d3d3d3d3d3B3d3d3d3 + d3c3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3A3d3d3d3d3d3d3d3d3d3d3B3d3d2d2d2d2d2d2d3dwdwRx + Z3F3dTd1c3V3NXd3d3B3d3d3d3d3d3d3d3d3cHcAB3d3d3d3d3d3d3d3d3dwAHdwdwdwdwdwdwdwdwdw + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA + AAMAAAAHAAAAHygAAAAQAAAAIAAAAAEABAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAACAAACA + AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AeHd3d3h3 + h3d4eIeIeHiHh3h4iHiHh4iHeHh4iHiIeHd4eIiHh3h4h3h4eIh4iHh3d4eIiIl4d4d4eHiYm3iHh3iI + iLi5t4iHeIeIm5uIh4d3h4i4ubeHh3d3h7M3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3dwd3d3d3d3 + dwAAAHd3AAB3dwAAd3cAAHd3AAB3dwAAd3cAAHd3AAB3dwAAd3cAAHd3AAB3dwAAd3cAAHd3AAB3dwAB + d3cAA3d3KAAAADAAAABgAAAAAQAIAAAAAACACgAAAAAAAAAAAAAAAQAAAAAAAAAAAABQT1AAU1NUAFxc + XQBjY2MAZ2dpAGlpagBramwAbW1tAG5ucABwb3AAb3BxAHBwcQBycnQAc3R2AHR1dgB2d3gAd3h6AHp6 + egB6enwAe3x9AH5+fgB+foAAfoCCAHeCjwB8g4sAc4GRAHyHkwB8iZYAeIubAFiHrwBbjbIAW4u4AGiF + ogBlh6gAYIivAGqPqQBxjKQAd4+oAHmRpQBzkaoAepKsAHqXrQBhkLAAbZK1AGeTuwBilLsAa5O9AGiX + vAB4k7AAfJuxAHGYugA5hdIAM4nSAC2S3AAcgusAGIfqABmD7gAVie4AGYjqAB2Z7gAZhPAAHZ3xACSC + 4wAkhOYAI4jhACiI7QAyi+MAP4/iADON7QAll+kAOpHuACaK9gAqjfcAKY34ACCf8QA4lvcAP5jxAD2d + 9wAxkvoAM5T9ADSU/QA4lfgAN5j+ADmc/QA6qeUAPqXtADSs7gAgoPMAOa72ADak/QA6o/wAOqz+AC61 + +QA6tfQAMLf5ADq1/gAyufoAOr3+AEKHxABPi8oAVo3FAFyNwABcjsUAXZjFAFGWygBTkM4AVp3MAFqc + ywBKjtMAUY/QAEqS3ABIn9gATp7aAFWX1ABVnNQAYpHEAGmYwQBgm84AaZ3MAFeg0ABaotMAUaPdAGSg + 1gBgqdcAaqvSAGSh2ABjotwARprjAEKe6QBFqOQAQqbuAFSj7QBCsOcARKX0AE2j8wBBrvIAQKb6AGGk + 4gB9ufQAOcH9AIKChACDhIgAhoaIAIaJjQCJiYoAioqMAIuMjgCMjI4AgoqTAIqNkQCNjpAAhY6aAI+Q + kgCOkJUAhZGbAJCRkgCRkpQAk5SXAJSUlgCSlZkAlZaYAJeYmwCTmJ4AlZmdAJiZmgCZmp0Am5yeAJyc + ngCAkqYAh5WkAImYpQCHmagAjJusAJKYoACVmqAAlpyiAJGbpgCYm6AAmZygAJ2eoQCRnKgAgJ+1AIif + sgCfoKIAnaGlAJijrwCHorcAjqG1AIOiuACFobsAhaS6AIimvQCKqb8Al6OwAJqmsACdqbMAmaq5AKCg + ogChoqUAo6SnAKSlpgChpKkApaapAKinqQCmqKoApqisAKmpqgCoqawAqqytAKysrgCqrrEArq6wAK+z + twCwsLEAsbK0ALSztQCztLUAtLS1ALW2uQC4t7kAt7q+ALm5ugCEpsQAjafAAIyrwQCQrMcAkrHPAI20 + 2gCIuuwAkLrkAIa88gC9wMMAvcHFAK/B0ADAwMEAwsPFAMTExADDx8wAzc3NAMrP1ADJ09sA0dHRANTU + 1ADR1twA2dnZAMrY5gDZ3+UAyt3yANnj7gDk5ecA5+vuAOnp6QDs7OwA5+vwAP///wAAnBUVFhYWFhYW + FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVFhYVkgCcCQkTFxcXFxcXFxcXFxcXFxcXFxcX + FxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQPCZIVCI+0y8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL + y8vLy8vLy8vLy8ehDxYUDZ3I0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDH + FBYUDp7IztDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M7IFhUUDp7IztDO0NDQ + 0M7O0M7Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IFhYUDp7HzM3Ozc7Nzs3Mzc3NzczNzc3N + zc7Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3HFRUUDp3Hy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL + y8vLy8vLy8vLy8vHFBYUDZ3Hy8vLy8vLy8vLy8vL0tfTzcvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vH + FBUUDZzGyMjIyMjIyMjIyMjI7PPt1sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMi4FBYUDZm4yMjIyMjI + yMjIyMfJ7/zy2MfHyMjIyMjIyMjIyMfIyMjIyMjIyMjIyMe4FBUUDZm4yMjIyMjIyMjIyMfL7/3z2sbH + yMjIyMjIyMjIyMjIx8jIyMjIyMjIyMi4ExUUDZe0x8fHx8fHx8fHx8fL7/3z2LjGx8fHx8fHx8fHx8fH + x8fHx8fHx8fHx8e0EhUUDZe0xsbGxsbGxsbGxsfP8v3z2sbGxsfGx8bHxsfGx8bHuMfGx8bHxsfGx8a0 + ExUUDJeoxsbGxsbGxsbGxsfU8/3z2sfGxri4uLi4uLi4ubi4uLi4uLi4uLi4uLinEhUUDJenuLi4uLi4 + uLi4uMfS8/3z28a4uLi4uLi4uLi4uLi4ubi4uLi4uLi4uLinERUUDJSmtLS0tLS0tLS0tMbR8/3z28a0 + tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSmERUUDJSmtLS0tLS0tLS0qMbR8/3z2sa0tLS0tLSotKi0tLS0 + tLS0tLS0tLS0tLSmERUUCpOiqKioqKioqKeoqKjM8v3z2riotLOosq+ur7Cys6enp6enp6enp6enqKei + EBUUCpKip6enp6enp6enpabJ7/zy2LSop6eyMWZndC8xqqOnpqenp6enp6enp6eiERUUCpKhp6anp6en + p6iopqXH6PHqxbWwtLi1ZT9CRURqLTKrr6enp6enpqenp6eiEBUTCZGhpqemp6iotMbGtKa0ut9+djO3 + w8S+bTdIUFJNgXEwrLSnp6empqampqahEBUUCZGhp7jHy83R0tTUzMbGrXWAgXp8fX1zQzlKUVNUWoNs + u9DPy8nHuKimpaWhEBUVDJeoyczS1trc3t7e1szNvHeGXGBeXldGOz1KUVNUXIh+4d3b2dbSzMfGqKih + EBWNEqXR1tjY2tzc3Nzc1MzT4H6GXGBijGFYOj1KUVRUXIh54dvc3NvY2NbU0cmoERWRFsbW2tra2tra + 2trY1NLV4n+GXGCMjGJYOj1KUVNUXIh54dXa29ra2trY1tLJjY6UjsbS1tbX1tbW1tbW0tTd44qGXGBi + jGFYOj1KUVNUXIh5wNPW1tbW1tbW1tbSkZKSjajP1NTU1NLU1NTU1Nrs5ISJXGBijGFYOj1JUVRUXIh5 + v9LU0tTU1NTU1NTPkZSRFaXMz8/Pz8/Pz8/P1t7u5oSJXGBijGFYOj1KUVRUXIh4vc7Pz8/Pz8/Pz8/J + kZKPEqHGzMnMyczJzMnM2O3w5oeJXGCMjGFYOj1PUVRUXIh4tsrLycvJzMnLzMnHjZGPEp20xsfGx8bH + xsfH2u/05U5cXGBijGE+Oj1JU1NbXIh4MrnHxsfGx8bHxseoF4+NEJemtLS0qLS0tKi03vX351RaXGBi + jGE+O0BFR0xUXIh4MrO0qLS0tLS0tLSlFY+NDZKhpaampaWlpaWm6/r551taYGBijF8+QTRkbm+Ag4Js + KqSlpaWlpaWlpqahEo0VCo+doaGhoaGhoZ+l7f74i05bXGBijF08NSApqSksaGsuqaChoaGhoaGhoaGd + EI0VCI6XnZydnZ2dnZyf7fv25HKAVllijF08NSObnZqYJygnm52dnZ2cnJycnZ2XDhUSBheSl5eXl5eX + l5Sc2vPswiUgaXCChVU2YyKVl5eXlpaWl5eXl5eXl5eXl5eSDBUSBRSPkZGSkpKSkpGSn6ilmZUcHSUk + Kx8eIRuQkpKSkpKSkpKSkpGRkZGRkZKPCBMQBBGNj4+Pj4+Pj4+Pjo+Oj4+Pj44ZGBoaGY+Pj4+Pj4+P + j4+Pj4+Pj4+Pj4+NBxIPBA4WF40XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXjReNFxcU + BBANAwwTFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBILAxIMAwkPERERERER + ERERERERERERERERERERERERERERERERERERERERERERDggDBJIKAgcMDg4ODQ4ODg4ODg4ODg4ODg4O + Dg4ODg4ODg4ODg4ODg4ODg4ODg0LBQMDFQAJAgQICQoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK + CgoKCgoKCgcEAwQXAAAHAQQGBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBgQDBI0A + AAAHAQQHCgoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCQgHBAMEjQAAAAAKAgQPEhQUFBQU + FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIKBAWNAAAAAACRBAQGCAgICAgICAgICAgICAgICAgI + CAgICAgICAgICAgICAgICAcFD58AAAAAAAAAlxQSEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIS + EhISEhIVxgAAAAAAAACAAAAAAAEUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAA + FBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAA + AAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAA + FBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAA + AAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAAA + FBIAAAAAAAAUEgAAAAAAABQSAAAAAAAAFBIAAAAAAAAUEgAAAAAAABQSAAAAAAABFBIAAAAAAAMUEgAA + AAAABxQSAAAAAAAPFBIAAAAAAB8UEgAAAAAAPxQSgAAAAAB/FBIoAAAAIAAAAEAAAAABAAgAAAAAAIAE + AAAAAAAAAAAAAAABAAAAAAAAAAAAAD8+PwBCQkMAQ0NEAEZGRgBJSUoAS0tMAE1NTgBRUVEAVFRUAFhY + WABdXV0AY2NjAGNiZABlZWYAZ2doAGlpagBrbG0Abm1vAG5ucABycnIAdHR1AHp6ewB6e30Afn5+AH9/ + gQAPfewAE3vlABF+7QAUf+4AdoWVAHCGnQBRg7YAXIayAFuKugBfkr4AZYKgAHiNpAB1kq4AZJG2AHaZ + uwAngNwAGo3nABWA7wASje0AFJHuABeU7wAYlu8AGpnwADOL6QA2juwANJTpACKI9QAqkvkALpD6ADCR + +wAwkvwAN5f/ADiX/wA1mv0AOZ7/ADag6gAvpvoAMa7xADWg/QA5oP8AOab/ADmo/wA0tPwAOrL/ADq1 + /wA0uPwAO7//AE+PxwBXlsEAWJfDAFqZxQBcmscAUpbKAF6cyQBJi9AAYZ/LAGed0gBto9gAT57rAFKh + 7gA2wfwAO8D/ADjF/QCBgYMAhISEAIeHiQCIiIoAioqMAIyNjgCOjpAAj5CRAIqRmgCSkpIAkZKVAJOU + lwCUlJUAlZWYAJiYmgCZmpwAm5yeAJ2dnQCdnqAAn6CjAJKhsACgoKIAoaKlAKOkpwCnp6cApaapAKeo + rACpqakAqamtAKysrQCxsbIAsrO0ALS0tgC3trgAubq7ALy8vgCGo8EAu9f0AMTExQDKysoAzMzMANDQ + 0ADW1tYA4uLiAOjo6ADt7e0A8/PzAPX19QD7+/sA/91RAP/kcQD/6pEA//CxAP/20QD///8AAAAAAC8U + AABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/SsQD/5dEA////AAAA + AAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+XkQD/trEA/9TRAP// + /wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9xnAD/kbIA/7HIAP/R + 3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9RxwD/cdEA/5HcAP+x + 5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx/wD0Uf8A9nH/APeR + /wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR/wCmMf8AtFH/AMJx + /wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA8AA+Ef8AWDH/AHFR + /wCMcf8AppH/AL+x/wDa0f8A////AGUJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkYCRl2dXZ1 + dnV2dXZ1dnZ1dnZ2dnV1dXV1dXV1dXV1ZgkJZHV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1CQlj + c3Nzc3Nzc3Nzc3Vzc3Nzc3Nzc3Nzc3Nzc3Nzc3MJCWNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Ny + cgkJYHJycnJycnJycm9wcnJycnJycnJycnJycnJycnJyCQlgcHBwcHBwcHBriH9scHBwcHBwcHBwcHBw + cHBwcHAJCV9wb3BwcHBwcG6JgWlwb29vb29vb29vb29vb29vbwkJX29vb29vb29va4mBaG9vb29vb29v + b29vb29vb29vCQlebGxsbGxsbGx2iYFrbGxsbGxsbGxsbGxsbGxsbGwJCV5sbGxsbGxsbHSJgWxsbGxs + bGxsbGxsbGxsbGxsbAkJXWtra2tra2trdomBa2tra2tra2tra25ra2tra2trCQldaWlpaWlpaWhviYFp + aWlpaGdoaWtpaWlpaWlpaWkJCVxpaWlpaWhpZW+Hf2loaWkbNDEiYWlpaWlpaWlpaQkJXGhoaGhoa3Bn + aiYzI214fRo2Ojw+J2loaGhoaGhoCQlbZ3B2eXx8fHF0KEJFRD8qHDg5PEVRfHt3dWtnZ2cJC2l6enp6 + enp6cHlSQkVXWDAcODo8Rk96enp6enl1awkQbnd4eHh4d3h0fFNDRVdYMBw3OUFGT3h3eHh4d3h3Dg9o + dnZ2dnZ2dneBVENFV1gvHTg6QUZNdnZ2dnZ2dnYPDGZxcXFxcXJyfINVQ0ZXWC4rODpBRk1xcXFycXJx + cgwLYG5sbmxubmuAhDVDRldYLis4OkFGS25sbm5ubm5uCwtdaGhoaWhpZYWGNUNGV1YtKVAyQEZLaGho + aWhpaGgLCltkZGRkZGZgiX47Q0ZXViwhZGQlTidkZGRkZmRkZAoJGV9fX19fX16Igh9JPUdWLCBfX19f + X19fX19fX19fCQgXXFxcXFxcXFtbXFxcHiQkXFxcXFxcXFxcXFxcXFwIBxVZWVlZWVlZWVlZWVlZWVlZ + WVlZWVlZWVlZWVlZWQcFExcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcRBQQQFRUVFRUVFRUVFRUV + FRUVFRUVFRUVFRUVFRUVDgRfAg0SEhISEhISEhISEhISEhISEhISEhISEhISEwsGYgABCw8PDw8PDw8P + Dw8PDw8PDw8PDw8PDw8PDw8LCGIAAAMOWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaFAliAAAAYgkJCQkJ + CQkJCQkJCQkJCQkJCQkJCQkJCQkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAHAAAAHygAAAAQAAAAIAAAAAEACAAAAAAAQAEAAAAA + AAAAAAAAAAEAAAAAAAAAAAAAaGdpAGpqawBubW8Ab25wAHFxcgB2dngAenl6AH19fQB0hJMAe4aQAHCI + mQB+jqAAdpKpAHmVswB/mLAAeJ23AH6lvwAdkvEAJZHpADmQ4AAvkfkAMJP7ADGT/AA6sO4APqb4AD+t + +gA5rv4APK79ADW6/ABEj8oAZJLEAFik3gBkqtMAQJHmAEei4QBDoO4AQ6TuAIGBggCDg4UAg4SHAISF + hgCGh4gAhomMAImJigCKiowAjI2OAI+PkQCDkZ0AkZGSAJKSlACUk5QAk5SWAJSUlgCZmZoAmpqcAJuc + ngCcnJ4AlpuhAJqdoQCdnqEAn6CiAIWkvACMo7gAoKGjAKGipQCjpKcApaapAKeoqQCnqKwAqamrAKip + rACsrK4Arq6wAKy0vACwsLIAsrK0ALS0tQC3t7kAt7i6ALq7vACFq8YAiavKAI+z1gCKtd0Aib7vAL7B + wwDCwsMAysrLAD3/MQBb/1EAef9xAJj/kQC1/7EA1P/RAP///wAAAAAAFC8AACJQAAAwcAAAPZAAAEyw + AABZzwAAZ/AAAHj/EQCK/zEAnP9RAK7/cQDA/5EA0v+xAOT/0QD///8AAAAAACYvAABAUAAAWnAAAHSQ + AACOsAAAqc8AAMLwAADR/xEA2P8xAN7/UQDj/3EA6f+RAO//sQD2/9EA////AAAAAAAvJgAAUEEAAHBb + AACQdAAAsI4AAM+pAADwwwAA/9IRAP/YMQD/3VEA/+RxAP/qkQD/8LEA//bRAP///wAAAAAALxQAAFAi + AABwMAAAkD4AALBNAADPWwAA8GkAAP95EQD/ijEA/51RAP+vcQD/wZEA/9KxAP/l0QD///8AAAAAAC8D + AABQBAAAcAYAAJAJAACwCgAAzwwAAPAOAAD/IBIA/z4xAP9cUQD/enEA/5eRAP+2sQD/1NEA////AAAA + AAAvAA4AUAAXAHAAIQCQACsAsAA2AM8AQADwAEkA/xFaAP8xcAD/UYYA/3GcAP+RsgD/scgA/9HfAP// + /wAAAAAALwAgAFAANgBwAEwAkABiALAAeADPAI4A8ACkAP8RswD/Mb4A/1HHAP9x0QD/kdwA/7HlAP/R + 8AD///8AAAAAACwALwBLAFAAaQBwAIcAkAClALAAxADPAOEA8ADwEf8A8jH/APRR/wD2cf8A95H/APmx + /wD70f8A////AAAAAAAbAC8ALQBQAD8AcABSAJAAYwCwAHYAzwCIAPAAmRH/AKYx/wC0Uf8AwnH/AM+R + /wDcsf8A69H/AP///wAAAAAACAAvAA4AUAAVAHAAGwCQACEAsAAmAM8ALADwAD4R/wBYMf8AcVH/AIxx + /wCmkf8Av7H/ANrR/wD///8AMjI0NDQ0NDQ0NDQ0NDQyNS1DR0dHR0dHR0dHR0dHRTItQkNDQ0dHQ0ND + Q0NDRUMyLEBCQkFXT0JCQkJCQkJCMSw9QEFBWFBAQUFAQEBBQC8qODw8PVhQPDw8PDw8PDwuKjc4ODhW + SjsOHw86ODg4Lio5Q0hEPyAhFBUkPkRBOS4zSUxNS1IaHRIWGVFNTEg1M0RGRk1UHB0SFxkRRkZGNi04 + PDxQVRsdEyIlEDw8OTEmLzIxT1MjGB4MDTAyMjEsBykpKS0rCgsJKCkpKikpCAUGBgcGBwYHBgcGBwYG + BCYCAwQEBAQEBAQEBAQEAQcAKQcICAgICAgICAgICCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAACJUE5HDQoaCgAAAA1JSERSAAABAAAA + AQAIBgAAAFxyqGYAAF0ESURBVHja7Z1JkyPLcecjMhOoqu5+lLiIIimaPoCOcx8z7ZQoGsXVaKTRZBrJ + ZDIe5zSnOWgOcxgbG34P6VPwK+imky6zkO+R7/VaBSCXGF8jPHJBobq2LiD8vexcgEIBWfBf/N3DI8J/ + 97vf/Q9VVT0PITxzzl147y9kfw7XzuB4jRucr+B8Bcc1bBWcV3DuXbFiJ27gCwP4Qg+HPRzv4HgL+w3s + L2H/Dvzrsu97PL6E51zB9Q2cb+D6tq7rLZzvPve5z7WvX7/uvvCFL3SfffbZ8M///M8DPD/c+3v//ve/ + /x9h/wK2j+AXPh+G4TkcP4M3dwHHCAKEgIJgBecNvOEaAYA//9g3v1ixD8AGx87fwn4H25Vsb3GD62/A + Z97B/q2CADYEwRX42EYhANZ+/vOfb8/OznqEwB/8wR+Ef/qnf7IQuHMg+O9973vfgDfxW/CGPgdO/xEc + v0AQ4AaPqxqwSqBxRgU89p0vVuyxDZwXW+sO9i3st45b+Utx/NfgV6/Br944hsFbOH4HG4EAIbBarTZN + 02zREALwWN91XX91ddV/+ctfJqcfweDOQOD/+q//+jug5T/v6vq3EQLwhj4H119gWAD7Zx4hAOEAPEYA + gI3CgAqd3wAAHn/sv0OxYg9u4C+462XD1h8BgI6Ncv81bnMQAAfH/SWGB6oE1uv1BkOIy8vLDo4RKP3b + t2+H3//93x/+7d/+LfzhH/7hcNcQ8N/5znd+DLLki/BGPg/bbyMA4E18BA7+Arz6meQEzuGxtUcAeB/z + AGj0IuL8YwgUKBQ7FhNHX7rWSw4gAgBbeGcAYPZvYU8gAPdBJfDOpZDhCsMBuNaiPX/+HBVFD9d6gMLw + 8ccfDwYCdwOAb3/72/8J3tDvwC/6Amyfh43CAdheeFQAAAAMATwCAFQAhgCw1R5DAPgE6OS00av54vTF + jt7U8c2eFACGAM4AAM4xBxCdHx1fnR8e1/zAO3Dwd6AIriRZSMlBxzDZQRjQPXv2rMXfgTC4awj4v/qr + v/oZvPCXoSn/UgAAoAqQfADmARAA51UCwAquN15af8wBwHUXIbCgBIoVOxabcX7KAcDWwSnKdnTeDTj4 + lQDgjTj+W91rKAAbtv5RCQg0UAXgz28wN4AhATy+g1CgswnCf/mXf8HE4+0B8M1vfvM/+xC+DI78O7B9 + Aa4RAGoAQIWtf12f1ej8VbWCfQNvpiYFUJEAoCigUgAIDOKLFxAUOxKzIYA4fbwGzkrdgAgBUQHkwOjQ + Rgm8g9adHF5bfycAcKIEsKdAk4Nw7Qr3+DoQDeBr7QAAu1//+tcdJgd/8YtfoOq4PQD+4i/+4r/AL/oK + qgAJAwgATV1T6w/7NUCgIecHNCEAMAEIh/iPJwAoBIwaoBcvACh2JDZp+YfBDQIB9n8CAEEAnVU2rAVQ + EFwJDNC5IwycKABRBniMSuGdbG8xPIDtcrfbbSEU2Gy32xZrBb761a/2EAYMt/1c/hvf+MZ/hf1XoVn/ + MnjyFysEQFV9BJ6OtQBnddOg89do+G9DDKjI+WsBQC0Q8LKnFy75gGJHZLbFD8nxLQAGMcoFgIMTCGCP + hUEbLf5BiY+1APAy5OQutf7aQ0B7eM4bPJauRITClXQZbr/yla+0//qv/9qPegXord30c/k///M//29u + cF8DYf+7HgGAIUBdIwAuwMHX5P/o+wABOPYVc8A3DAAHJxEAeDzOBxQrdixmpb+FAAJAtggBNMzmKwhk + 2woMSBE4DgGiEhAIvMEcAXYbwvkr8DHsPnwNCoBCA+0qfPPmTXsXdQL+T//0T/87uOrvgRP/LjThX4LG + HRXAC3DwC3gTAJwVtv+VODxSAJ3fIQTgGPeLACgQKHYsNhP3WwAQBMDZoxIg/0fvJxT0mMXHAp9WIIDh + wJXHVh1af8cQQMdHBaDdha9ke4kwaNuWwgFJElLBENYK3LZOAAHwP+BFCQDg+F/CEAAcOQKgaVYeRADJ + fVQA6PC6pw0hQABANcC5AFcAUOzIbBICaA4A9n1SAY4gAAfg+EFBIGqgC33o+sAhAajuTfAk62048EY2 + cn4/+Je961/KuYYIpALAtndRJ+D/5E/+5H8Cib7uff0VX/sv1pgDgBAAAIDFPw0oAMwBOoRAQy1+g0BI + zh8VQAFAseM1cn50eDeTA+h7ggHsQ2/UAD7edR3uew0LUAlgVyEqAXgpygnAniAAUHgLULAK4CX4EALg + JV6TnMClJgVRCdy2TsD/8R//8f8CNwUAVF/xlf+SAAAVwDnm/EABoPNLq08gcGlvcwAFAMWO1+YAoCrA + gsAAgK73DAAEA2IA5QGHAyHQqEFSA8FxPiC4d/DTFAY4BMDgXsI5QQDUwOvBD2/A52hAEYLj7Ozs6rZ1 + Av6P/uiPfl4BAJwCoKp+G5z5RS0AWK2a6PCiAFyU/+DweB67Aqu8K7C4f7FjMXX8CQTy3oC0CQwIBJIb + gLAAn9gNWC8wgBJwCQLo0D74S1c5LRh6DR70Cp6Drf+rKlQIAFIBmAvAwqG7qBPwIBd+Dr/o6+C8X/GU + BAQA1NVEAajjR/mPrb8k/mI3oNYC4H/o/UUBFDsWE8d3o67AmR4BOu5zEJAKCLgLA8YGeKmDVwEQuB38 + 9JZA4CgnYHsFcBARhQI6oMhJL4E8fus6gQgAKgaaUQDY6o8BgHJfFQD1/XutA/AcAhQAFDs2U8eX47jX + zUlxkFEDBAIOBQJXCgTyfYzXMSoICAMsHx44L+AwJ5AggCHBGzgnCIA6eI35AR1ViF2Dd1EnkAPA+1kF + oC2+goCKf0gBeI79YxWgyxVAsWJHZFYB8KFRA44BMA4LUAkwGAKrgKBlQwSAgZ8y4DgCDAdQDWwcDyeO + 3YPSNaj7V6oG8BhBgLUC71snMA+AqprkAFLczy0/Ob4AQGN+ygFYBVCs2BHaPhCg46OBa8O5VQTk+i4E + rRoMogmCKIIBxxC0Ggo4nFRkAAh4DgdQDcDxa4WAM3UCCAENB25aJ3A9ADDxZ0IAjf0p7q95TpAIAFIC + BQDFjtiCNp9hdC3sLRfWkmE550vcOxDHEcBPIQB2QyAVQL0D8DTOCQTYPNUCWAC8lO1V13VvQK5P6gQ+ + /vjj/mtf+9pincB7KQCb9a+8Sf55VxRAsdOxoDszUEhgQP+j0wcLgKAKwEk0QDDo02jCPjAEKCkIr4E5 + AawRuBQAaA/BGACkAiD+fwMguDw/P99bJ/CLX/xCuwjDLABqBUCT5wAoD5ABoJqU/paRgMVO1VQF0LHA + AAEQYWDVAAcCaSxBUgE4dgAclnICWzgHCLhLeMKlhgMyuUgGAAwNNCGocw1inQC0/LuPPvposU4gAwC0 + 6KIA6mtDgNjv7y0EigIodsIWZtQAJQi1cChYADgLAB1DgL0CgAOCADxpF7yTYiEpG8aMv0w26hECVfVS + E4Pwa19Di409BDTL0CF1Av6PAADgrV+vfKoDmFMAzWwIUBRAsWJqISUI4rkFAc8fMEQYDJQkjLkB7Sik + smE44oKhMOwclQ4DCNxw5XDosEwoAi8bISAKgLoIwUdjnQDOO3BxcZHVCfz7v/97961vfYvqBDIAVFW1 + qACaWQVQAFCsmNocAKTLgDoNDgAA1wgxALBgAIcUdgF7B3DsAE4ugjMF4WQh2kWISUHvXykARAm80ZBA + k4O2TkC7CDEXIKXA1ddBtccQoFYANAiAVQFAsWIH2BgA9tq+ysEhWAhwmWBgCFDlII0k5LEDOrnIJQLA + CwQCTzyqTv9KQYAFRHN1Ap988skOVAFBwP8JAAA8+euVc6QAvCiAxoQAzZ4cQFVyAMWKkYX4z/g6jyEY + uFrIBZMUZAAMsVeg12KhfpDCwW6QBCGqgBZ+dDvgCEJs0RkCb8HZ3josFOLiIIIA/KZXmigUIOBaBO8A + AFfv3r3bnp+fYxdhNwuAGymAqiiAYsXI9gy9mVMAEQIIhRQKOB40GGQUYa89hQqBXcBJRyUxiCogMAAQ + BG8sAGB7CU7/UsYTvJHJSC+32+3mxYsX281m0xIAwOm/DhvnAHBCEKMASghQrNjtLRUJhagAguQAQsoF + CARk/ADnCXBo8ZBBQOoEEAIepxfj+QR0pmEMBWLrDz+LAHgpoQDNJwAAwOfj2IMtTgjyc2+SgDgrMDyR + FEDDRsOACwCKFXt/Gzs/Hg+xWzABAI9pJCGFAGk0oQJA8gGt5AMoMRi4uy9CQAYKaZkwAQBAQOMJcD4B + nZMQw4EpACQEmCiAxlQDZgCoCgCKFbvGLAByFTCjBMjxJTeQADCIEsAaASkWkvkE0kIkCoFYMowAEBi8 + lu0Ndg2C879DJeD/TADgJASoZU7AQxVAVXIAxYpda8FkCBMEdHMjCOiGQwX78YSjUQn0qAZwtmGEAE42 + yqsS03oCjkFAEMAZhVAV4DmGAVJOTGsQTAFQ179d+epgBTAXBqAVABQrlmwOAHw8TgpaCEwAEHh+UZlj + kCYZ67FgiOoEBplZyJlJRk04QACQ6caiGvB/9md/RgDw0gtQIQB4WvBcARQAFCv23hZm+gjHIwdn6wN0 + bkGz9oBMOCooICSQEoA9Lii6sTMN6xoDqgCkTuCV1Ai8IgBUqAAkBxAVQHMYALyfhgFoBQDFiiVTZ8+v + 0b/x8TROQLoFRxONYu8ApgEUAjSKcOgwFsCiobaXdQccLTWOlX+Oy4axmxCcX9UA/I6X4MefwWt8Ng+A + AxQATwpSkoDFit3Wpl2Emgw0U47LmgNmT2GBgKCXDCECgFUArkuY5wS0RgAHD2Fi8FPY/8Z/AwBAhUBV + RcOBb6oASghQrNjtLQsDXIgKIJhqQZxUOE45Do7fYX6gH2JeoE/FQrFOgMqGZaJRSQii9P8M9r/xw/AJ + Lg7K04JbAIgCWKH7r1YFAMWK3bNNi4RspWC2AlHsGkQQyCY5AVmBaIgzC21lhWIAAE4c6nROwU/hl/0a + APBxBoDKAqBpogJYWQDguICqLgAoVuwObVonICMIdU5BWy0YE4OUExAA9LTuANUJ9FwngIuP6FqE8IR3 + A48UfCkA+AT2H/u/BABgCKAzAh2qAGwOoCQBixW7nY27CTUUcHHyEIVA2jgkYAWgycHURdh3cLHr+oFG + EIJewFDgNfzYS3jip/DKH8MP/zIDQI1Tgh2oAAoAihW7O5svFDJlw+PFR0xIoMlAyQ9wSlBCgr6jOoFt + 6LvLHguAhoBFQb9BAPgQ/p//y7/8y597WhpsCgBVAAUAxYrdr43rBCwELADCeMwAjxugEYS9rkiMaxDz + WqRD1xESdgCAqw5XFAo0QOg34KC/gtf7v/6bAACcEYgUQJwRKAdAKgcuOYBixe7PxoVCfG28FqFdlJTy + ApQUpDCA8wHo+BQBEABg67B78ArOsSfgJTz+68G5X1XO/Z+DADCvAOro/GMIoBUAFCt2E5ufTCBLCjoX + AaBlwzpwqE+hgOy7gEuTty2BoAVAXIEyeAvgeBkEAPACDAAsBPJ1Tb0AhwOghADFij2ETZTAMKSCISoW + 4h6BQRQAOL7rGAAOAdCh9d0GHuMcAIQAAIBf+hD+t//WN78Zk4AWAKvV6pz9fz4EKAAoVuzhTBWAE8cf + Ty+uS5HT1vWOWv+udbtd68j/EQBD/7bvBkwC/hp+9pfwcyMAYCnwPgVguwIFADQnoKwKXABQrNj9WA4A + rRnQWoFeJxEhAIgCgNafAQB7OO02HQAAnkMAAHD80ikA4pRgN1IAJQdQrNjDWTCTjoasVkB7BrgwCAEA + W9syAHiPImADG84WhL0AuQKwcwLWujDItQpAegJkXcCiAD4UC3sf9Tf+yfJ3/DBsCgC9mgGgEwUA267d + RQWgAMA5AkkBDAMD4Nvf+tbPg/dZCIAAaOYUQAHAB2LLTu4PfN715hdeofxdH8fCZNrxNJ/AMAkBWtx2 + O7eFTQEA/74NAIAOewFAAVASEAGQzQiEAMApwUQBLANgnAOojgwA4YAr8+ZvcPU278c+5idPyZ/vD3qd + sdPLuV96/0/9b/yUbAoAGwqk8uCenL8j+c8KYLfbsQJo21wB7AOAlgIrAFYzIUBN6wKoCkiJQLSnDICl + BR5uZf4O3WX0BnO3DbPOvtSez73RMNqn47v+IMUOtRD2PTanAFp1/gQACQH6rhsBoK5pPoBsUtBrFUAJ + AR7S5qS9N06fnYeQObyfOH6Y+HCODXF6b53fx+vplYt9CDanALgHgJwfwwDqBcAQAPakAPoIgG9/mwuB + LACahmcEWq2adQFAutEHPu8+Pvm4VfdZi8/dQj4qgwSA7HnXSRvvzU9WGQj4XN+JLwD4gGwfALbb7VQB + YA4AAOBmAVDXWS8AKYBxNeAJASB+0cMNv/J6H+7ofUxlvrhj0ONBnhfomj5H4ZAAoD8//pws7aPTg8MP + 0fFh8wqAauEVij2WHQoAVQA95gD6ngHwHQCATgkWC4Hq+iAFkOcAqiPLARiHx8+ihRgH2Ownx3tzi/c0 + bcmH6NyVACDBIDm/DwqGYfI643fMTs0t/+Cr6PzpmIHASmHxkxZ7YLMA0C7ACAAJAbq2zRQAhgDwozMA + uIECOFYAZDfXpa/5YQCQJaKjArDnN+1pnybxkusJAAK5qFMgqALQxxkAVg3I64QcAIQNzwAYAsr+mhx/ + cDVtwQAhzALgOP7eT9HmALC7RgH0qAAIAN/5TpoSTAEwVgCnBgAr381xmPlc2XTPohJ8/Jdb65C5S6zg + iMfjWzUXYZMD+yTlo4PbfVi6hmYVgn0f+l6tnsBWvxbnb1yPzo/ngfeKk7ynwI0Y8IT//k/MrgOAKgAL + gJABwI4FsArAhADaG3CsOYDsfYtcj8cq381eb7wcxJFaUqydHpctgSE9nifynPSw5bDw0beStK+iCw7J + 2T07ewwHnCiDkCuDlA8wc9AFqxHwp7jl7wkCK9cjCHzj+NVrkxvQXoH5kKAkCh/GrssBzAFgiCHAHABO + UAFkjq9jHHCDz6nHznw+e/Pt5sxILeyfdTJ2m71scM4k6GzKLebfvWlbvel887Zld+TwlW3pFQA+jJRA + yhWQApD6cQoNdGAJ7X3CBrT0PTg8OT4AoCPn53MGAENC8wWpu1DvTekleEh7HwUQAfA9AIBXANT1vAI4 + EQDEDT8b7EnlyFZbNWAUwGSFV5qvrZdx271sPIWT083IcXbeBIHKJyHOvzJE+a+Pa4uvAKh8cnQ6DqII + shwAX3cWRoMoAD7kZ6Hzh4ocHh2/DwyAXpUAXOfwQMOBlBxUEDhXegke0m4KgEGSgIEA8L3v8dqAMwog + A8BMCPDUAaCtlMp9HdlYyefLej/0s1ZV1isQBjtTKzv70HcyV1vnAh0zCOAEPK0XWc6bRNzk4JU6uA/G + ueU8XtfjQSBgzuX1vLyeAiYqjoEhoErFRWDpqQKgdh0CgFr9NR/7NV3v/SqGB8FJWDBKEOZqoNh9214A + bDYEgNYCIAROAmI3oAVAbQBgFcBkSLDZ7HBg3aN9qACYdPHxm2W5r84vpc+0rdfx89s5EO2N19lY0OFp + 1Zauhetw3OG2YwjABg/wBiDwsGm0ja12JU5fe3beWpy4FuemfSURugKhMgCorBoIIwCgiQLQkAT3Pa9B + B56Np/A5BACDACA0riUArAgAHagBBEBPiUEOCyhRKEpAuwttFWGx+7f4PZQJQVoZCrwdK4C2fduNAfB9 + AUCF6wJoCHCKCoDWOqgJcPp5z87OaFvDFsdCVDz4SQdhyDJNsFeHb2nr2h05f4/7dgvPacHD2ggBHzpx + eBbWteetwnPPjkzn1RDPaasECnKdVEFlVUEeNth8A3k5KoB+ICUSejxGYAUSJgMAACHQDer84Phh7XYE + AQEB7NH58ZjUgOYHYK8FQ4NC4LH/wCdiN1EAg+kGpBDAAqAyADg5BQDvvRHZj60+Ov45bhcX7uz83K3h + moYC+FyV/zT4QpyfnL5F59/K8ca1u40bdlt4fAvOthMItK4CANQUVfcEgcYLDHBfDXy9kmNVCPGc1UBd + KQAcQYAAUFkA6Ccexf3Y8sP7Dh3sOwQAqheEGQKggs9TuxZae97OCACtOyPnbwkAq7jnkGDFisBLL0Es + Fnq/78DdoON0AHQTBdBPAPD97zMAzNJgOhowA4BC4IgAEBWAAkC6O9HZ0ekvYHv27Jm7AAioCmga+MxV + LSu2DOz42Oq32PWypRa/27Hj0357CQDYEAwCQMAhBCIAeGsQANWQQGAA0FQ9OX4jAGAISKtfGec3MPA+ + 9SCk+l+R/Sr9OwbA0PK+BxXQd6wA2h5af1QAA7f+O4AAAkC3jgBwBk6vEFjHXoMg9QPXA+Cw4co3cePp + 75sbuPRhfi9vY3sBYBWAAkBCAJoP4IcCABwLQNOCzwDAhgCnAAB0/nN0fnD858+fEwTwGj62ol6BKs7O + ypJrR+OvO2jpebsCx7+C/aVrN5fg87ghADYAgC2pgCq04vwCAFEA6PDk+AqAWpRBlQDQiMPXNbfyyKNK + AOBZffOxmSQgaAiAUrETBQDOP+gGAOgAAF2PW+N2Q8OtP4QA23AenX9HAIBjzAnQ8dqAAAGQEoNTZwvZ + Lg1syi5OBiTb+oj5v6k3Lz3qivRLvRIf5vfzfexGANDBQKgADgXAKSgAzfrH1h+dHxz/xYsXBAAEAiUE + Gy6ActL1R46PANhxy08btPoEgO07AMA78HnYAAqhu3IOVcCwc/XAAKh9UgCNAKCSY5T+BIBK8gI1t/4k + /WvZkwJwrADkXHosTetPa8uM5L84/q6DPXx5cCMAVKwABoQAOz8qgJ3nfesFBp5BQMlBf5YAIInBMFIA + 8yVCc8OW85GM+djDOQiMy6mmw5dnqxYXXu0p2u0BUNfcC4A5ADMhyKkCAON+BMALBMBHH5EKOL84d+vV + mpOBdcUFP6QAdhTvU9y/3ZCjo+zvwPEZAG/cgBAAFcAA2CwCAB09hgA+KYBKrlXo9Hhci+PXIvkFAi4C + QFp/nz41zx1HqX5WAF2XALBjAKgCaDsEwAqc/4ycniDgEADn5PikBAAEnUCg9xwWUCLQ267BpVkH0khG + l7nreDBTXiMxVgH5T45fpRoh5HiHMx8KAJwRqNMpwbAOoO8BAD/8IQ8HFgBUFgDrdQTA0YYAWDSDPQAY + Akj8jwDAVh8VwEcIAFABFwCAs/UYAD3H/BT7IwCuCADd5i05fw97AsD2LWzvDAC2rkIA+C6P+wUErACG + lPSLcf+QYn+V/ejwtQAgCwH4XAcxKAA0+TcAAMJuBIAW43/JASAABnZ+BUCLe1EAEQDVmVEADfUKhDh4 + aAEAo1GLzg5eMnUMeaHTdHKT7FVC7vR2JKPLrh9fncI+AGwQANttBgAtBBpIAYwBACFAs08BCAS0WKYy + jq8ltLGO/gOzzPnN8F5VAKsRAF5Ay88AeE6KAAGwbuoIAOw7U+fHJF9PALgkx+/B6Xtw/p4A8EYAcEkA + 8KAAMAdQuS7G95rtrzXR523CLzl+zP6LAsAuSS8hADm+yQGk0Dhkff9Dp/E/OP82hQARAB3K/xVsCoAL + VgCykQpAEAgEUAH0VQKAjh7Mhb86Oh976ZXQakV1/EoLpLypkTCFTXnnbV7CrK8gFRXZuIY0ilGHPDt3 + LHkAC4BOAaBDgUUB7GQ4MNUBdF0CwI8AAHF58HEIcIIKgLr/MAdgAPDCKID1CrsCPRfYYLEP9vELAIbd + O3CoS3L+YYOt/msAwCsXAAKhfedcCwqgv6IQABUA9vlr/350dO3X1+M6xGsa55PslwSgr9JGIUAan8Of + 0DupWtT4X7v+tPUfKwDOAez6VZT/KQS4iAqgnSiA9SQEcLMKwDi+GcFYuT4CAI+1RiKDwCgMSLqBhzCr + o/cyaEkHMSkQFA7hyMKAgxWAACAOB8ZpwScAKApgqgCeP48AOEMA1PCZpax36Nj5Azj3AK0/tvTY4gds + 9TevwfkBAAACB3BwqAAUAKGD+yQAkK68lMlPx5V1em8SfdrqqwLAFl99bpQAxCrAEA4HQCcA2IYlBZDi + f92GkQJwWQig0n+QtzfEsQlYEemN0/O+lwIp3iskY2Ujp/ddphtCmruAX6mhisVYrajDmp1WKx7PeIWb + KgCaECQC4Ec/ovkAdDBQFgLMKYBjA8ABCoBCAOwaPOMQoEEAiAJAAAwCgICJPlQB4PiOIPCKAOBgHwHQ + XcGXfitf/F7KeG1fvsnoe47vo+N76/gS5wsAbPzP8xZwDYB+xriopO0BmAkBqBdAQgDMAeysAnAX0g14 + bnoBOARQAEwVwDjDH8ywZfj8CIXQS+lzL+6ruRE5lx6RcQhAw6qCYCOI84c6jmLUkuUIAp9UwDHlAfYB + wCqAVkMA6QUYsBCIAGCGA4OD88IgJwoAUgBjAIgCOKcQIAHACwCwwIcBAE6+e0utvyMIvAQAvHSeAPCW + AOBJAWxZQcAXW526GsXx6vDOtvYmxteMPwHAJvwq+bBSBhwB4Ga6ACcAcFwFCNuuX1M3oAVAKwqA6wA0 + +8/yfwyAUTdEPlFJMMOXw7TlzwDgkwrQn+fPxGc4cpEcPqjzN1ReRcOYnY5dYBgkANQxDDgGOwQAYwWA + vQBDVACnDAB5r1YB4KYAwPj/xYs8BGhoDQQGAJb3YoEPAoBaedhQ8nuU/ZvPYP8S9gCB3RsBwGUMAZzU + 7qMTp248L06vDu/ZmWOL76KjS4I7k/3eR4VMn5gW9Qg2BFgGAFYp2xBAAUAbFQLlNQB9rAFgAFC8rUOE + caEYvb9O22uNwPuUsqNQSIW7AkDKo6sulkcrABhqPib/sHQZAdARABoBAA9fjmMXnJYr1ykheMIKIAPA + j3/845/Da8Q5AU8OAAsK4FyqAD8CADx//iz2AhAAQAGQJA29AGDLCb6WFYBDAID099vPGAIEALjWvctD + AHgNZwFQO55zwDq2ZvVH52lvFIAJAXIFcD0AhqgAKlIALQAAuwJ3UggUS4GpFmDNmX8EQMWVgIEAwJWA + Ib7hcTlOmqkoZvtt7G/ifu4d6UcAECVDfzaU/awAcOASAqATALS0P4ujGFkBSI5CJjU5NQDszKSgnV0Y + BAFg5wMgANQIgNX5GpOAMhz2qAEgM//EQiAFgFQCZknANSuAWmbowdp+GuRDAIAWngDwimS/33wq22cM + AAAEKgA/bGk0YHRaAoCPxy4DgL8WAM6GADcEQDBJwJ4A4AkAXA7Mg4F40wFBWv2nJcAKAE4AOpkzME2r + lspw7HwFsZtPsv/k5E6dvcuKoTQJqPE/jmCmZ+PAJQAAOnw3MADQ6XEQUy8jGClUyQDQnCYAdjueD2AJ + AEkB4IxAoyTgWlRAnBWIi2EYAJUBgM6f5z9MAIy6/xQCGgLUIwBoT4AFwJoAgIrBSSKw5QE+7YaTfAAA + TwoAWv3Nb1wFm7/6VADwdgSAQRye7x1842cUgF9wfHcPAOARgQqAloYFr2lQkI4E7IJW/YHsJxCsaI8A + CJSxVADgW/Sx5U6On+Y08NLVh49rK18Zp6+lLFonQ9HPg11+lClAAIDjt7Rxy68A6OLoRemijHkABUB1 + nADQ+QCxG3C7nSoACAFaC4Cf/OQn0xDgxBUAbhdaDUgA4LEAlB/A+1AzALhPu+chvv0GHJwBUJECAABc + ofP/mlUAnFet5AECA0CLdfDFvFEA8fhGAHAjCKQKeR4ItK8XoJc8AA8I6mlAUE3zApDzY4saVnFOgF6G + Ag8IgmrNTqUAkGQFfw9SW1uZ2YvGk6DoPAdaD4G9AZUUPCEANCEqs5ex9B8YADt1fgIAhy08j8EZAQu7 + LOn9yjwG2i14ygogywEoAODLL1OCVSelAMhGCkABcCHlwDwkGOcEAACsFQAce3uqB+hokI/HUt9WAICy + H5y/QgAgCBAILeYBVAG00nfPLb+nYgD3yADgAUE0LwABAJ0MnHxYxcRaH9bSvcYAiMm/iuW/JwCo9Hep + /EYAUJtZjXjGI5n5yAxxppmOvFY6DqZ7k9OA+L4w9t/1FY9axF4LylcwsBIAOHHJCmAdFcBw4gqgGwOg + yhYG0UpAowCOGAC68IcqAFsMpCMCeTQgzwzE06TzbEiVDlPFGX5wmC8m+EgBvKYEoL/6xFWXn7AKQAWA + YQCFAJssBPAyyxCFAA8MAA4BcEwDnuOcAE4AwDF2Dw5GmyTYOKPOAAg6IxDG/gQA7prgvz/3ttfq+KoA + FAAyi1Gc6gz5J5WPvjK1EXWINKGsP2wdKQDsqqzdlvYNb6QA1rTvqMcCYXBhALA6WQCAItjs5gDw05/+ + lBQAOHOuAFYNAGCdhQCr1XEDIKsGNIlABAGer7EQaLVmANQyBZrjajbMA2Afv9+9MwoAAfAxq4DtZ7En + gBSAEwVAsxA/PgDwHEMAnBeAAQCtLUIAHH8Yaim0gWMBAXf5oQLgvn8anUQKgJv/KgOATGumCiDOaWgB + 4FMxVK1hGb5AiJ+xl5Rhp/IfAQCOvzUA4K7LdVIA/kKmMVMArE4uB7DRbkCZECSOBsQcwCwAjlQBxBvG + d20eADIlGMX8sD0X+X92ZgHAn7+qfCptJQBsRAFwFyC2/ggABAGdRwBsUg6A6vp5bsXHBgB1BwoABoXA + wEU2g1TaIQCCFNUoAHg4YgIAz7AcqFezjoN6gsxtmMY20MfM5jRwcZwD3Yea6yECTsHmOfPfkQKoKPG3 + 62q3Eeff9jqASeYwjJOYXHCtwqkrAADAbgkA8PeCEKCWsQAzCuBIAGCX8bJqgPxIZgRWtaMlwToZCE0O + SvfCAkBVQAJA1b4zAPg4KYDNp/CYBUDKAXxoAKAJQgkCjgAQhioCIMTFQdDxGwOABj5PlQGARI26mx+i + w9dSsFTFMQ5pSDM7vRMw0gsAAHiWYSmeBufPAcAqYJUAgD0XAIBOFUAGgNXJAcAqADsWwADA71UA63Ve + DHTMAIjTgmlFoMh/PF5JgpBzALJoiE5YgaP7FAA7DgEqCgF+lQAACqBSALhHBoAMBiIAtAkAPD8gdm54 + WcKgEgBU0fmDzP3nTPIPFQABgLZUzqDSPwJAwOBty28BoAVRogAYAJUAQBQAOn8EAIQB3YoAsB1WcR7D + VhRApwpA6gFOCgDg/FcLCgB+5pc9TggyBQBPCbbaowCaupFVcypyBE+lsVW+us5TBYBMC64tPlUAnqUE + YFIAdVwngPq6cZ4/rPEHANQo9dHhAQA1KYAUAjwFAMjSBQQARwDwVHmXYudammoGAE2SGgHg41Jq3L8v + Q29ozkMX4aBde5W29jqrUVQAkhPJAADObxTAVhVAJ6MXZQ4DBUAXRy5KVyDWLjgtV66PEgDjdQEzBbDb + kQLIAPA3f/M3AIDwde9NCHCkCiDeML5rGRAqcejGLAiylqnBrfwfr49AySt0C5znXwCACqDavnS1UQBV + FgJsaUKQWwOAPcuMB5grBtL1//IZgfMQoIsThAYKAYIBgI8AEG9kAJDD1wwAzzMlJwWgjYBjN/Mu9grw + MGcfJzCNE5jUPp1bBVAxAIYsBBAFAK3/pqu59bcKwHQBFgWQKwAaDajTgmMIMAXA8SqAeMP4rs0DwKwN + QMlA4/xrMy+CXSGZWrkIgEtXtxYAH8MeewE+pUIgVQAfOgAcASAQAFwEAHmjcwYAThTAEgD0LTIAvLT8 + Pg5cSoOfzOCmOwIAOn9RALkCaOcBwCGAN+sCgMMvKoBjBoCuDqStPcX+Iv1zFTQDgLAD54cQAFp6BsCv + YeMkYIUhgAWADQHetw7gNgDIQoAcALSJCuBB9zz6zisAPDs/AaBeAkCVAcBlxz61/HYfk38uhQAVJwGv + A8BSCNB5owBODQBGAexMCKCrA1MdAAIAZCz1AmgOAL7gEALUUQEcCwCsw4/P47qAAgGN9RUAjRkVmS2P + Rj8DPw+Bcx22ru4uydFrBMDm15wDwDEBGQBAKcDXlGWwF/lbxczZYwLAdVwL4HqGACsA53hcccUQcOrs + sB8DoDIQcFItKd+FKuYqfIRCHORUewkF9LN5UQI3A0A7nMnQZU0AigI4YQCoAugAADujAK4BQGMUwDor + BHqqABjfNGuVrHOoax6qw+tnz6ZEm6yRiPUqogA6DAEQAK9gQwB8wgDYfUbXq+4yKQAnlYC1jgZUBeAe + FQC0ZBgtZhyoWHEMAO84ZV9R7D8PgEqXU9eRgTT4x+cAqPLPZ1XA3QHghBUAhABXV1epFHgOAH/7t387 + KgQ6XgUwvmnWIgAUAuLouiZgozmQBQVQ47RWCID+igGAiUBwfMwD1NvfcEgQAaAKQNbyE9nvZ+cDeEgA + DFhoTwBwMQQQFRCkRRcAsKOzAqj8nAKopCJQ3qMTJaDnUQH4/PPcFgA6fNmfFwUwVgBtSzmAbDAQAgD+ + ZpQEnCiA9bo5kyTg+kQAUCkEBADxM9MowHoZADiWHZf7IgC8JQDU2085D4AAwPORAqh0SrBanKN2cYqw + BwNAy4VAtJ8AgAbew/vVF5RCH1dLz48AoFoGQOwRov+nAHC3BoBWAq64AGhGAfTViQNgs2EFcAgAGgTA + ajVSANMhwSqVq/GQ4KcMAPkclQFA3AQA9VIIMAZA+xoc/zMGwA5rAF7S9QSAHdcP+FQQo9N+6aSfHwIA + bAjgDQC8hgCSA6j2AMA9CgC05b+ICmCgOQxWMmvx8QEAhwJ3o5WBMQQYVwLqhCAEgL/7u7+L8wHoykCn + oADGpvMZWAWAx/qZtUpw4vwRAIOEAFvYuBgIHb/efMpKgIqAQAH0l66mOoAdl7WMZgNOEHDswO9bCES3 + XxYHiQAIXAjUy6rAbZcg0PJiIbxkOCcBEwSEKAoBL87vuRoS8wBREYwBEBcqnA8BZj8flxDGLsEEAB4G + 3OpYAHB8qgTcGwIUBbCkAKgbcAyABhcGOQEFMLZYwWYUgBYGWQDUZr8XAJQHeMkAwD3mBLq3BgBbbs+q + Ic3/Hyf/DAUAtwbARVEA1yiACAAcDAR/sBEArAJY5wrgiAHgZYCPBUAtMyDNtv4KABztFgEgPQHtK9ds + PiMAYBVgjQqggxBBQwBUAJQI5NFyLs7//4AAaGWNQEoEDgKA4QkB4LoQ4FlUACcLAFEAswD4+7//+1wB + YCHQbAiwPioAjHMAOp2ZfhZbGBQBIDmAxRDAYQ5gxwDo3kgi8CUrAAIAKgABQMAcQJtWvfFDcv4CgPcH + wEQBPMtDAJ0PgLtcHvtreGffZQuA3agbcAyALAl4CABOKQRQBaAAqMznrJc2UQANJgEHBYBJBEoPQN1b + AGxpeXDuCRiiEigAcPcGgKIAFgBgpwSbVwCnEQLoF1YBoGsGjtXAcgigALhyTQTASwoFEADNCAC6Ao7X + lW+iAhgKAG4BAJ4ODABQFQAsASAWAv3DP/xDPiuwAGClAJBS2PX6uEKAielsxqOVjsfhwCwI4Ava4HBX + dOgxAED+N7gnBfAuSwLWTlcI1jUCh4cDQGeTgDMA6J4GANKUYOukANxYAWBPQALAqYQAGxwMBAC4AgDQ + nIAjBUA5AAuAQ0IArIar7dTgpoDmKQOA3q1573aq88ps9Sgk4MlBvIQAXawGTAB4xQDAnED3DpzfAqAz + ABgKAO4YANQDUD1zw1gB2AVMjsAiALouDgfG1n9OAcA2BUC2MMiJKwA3+gzq+H4MgT0KoBmuKA+Ajt9o + ApBCgHcxBKipF6DNQoBKnf/QHMCkEMhFCAQ91wlB4urAg4QAxvF32g3IRUKTEABLggO/qA8+AUALgKpG + QqZqDwD8PAC8H30eFwuAFAQ4ABEBwHMCVrQMGE0IEp1fRgIuhgBFAagC0JWB4nBgC4CiAFJLNU4KZgC4 + RgHkAHglPQAAAFIAqRuwznIAfQHAHQMAHb8ogPluwAiAf/zHf/w5HEwAYBXA2o6HP1IAoEUIaD5Aju1n + m80DiAJonAwIAidvMgC8YQBQ/M8hAHx9JyFA7A58CAB0AoCsEMgAoHsaAIgJwGFfCDBSAL45TgUgACAF + gK3/Qg4AAQCh4C97BYAuDgqt/pdqLAQSBXA2EwIcMwCiKQDwePS55hVAJSFAHxUAA0CKgQgAbykEUAVQ + RwXQFQDcMQAw+TdRALAdNQBkWbAYAggAogLQEACTgKgAQkgKYA4Ap6YAsndr3rvtHlwGgIQAEQAbbu0x + 7kcVQD0AqgCuMgWQANDLdNlaFOQKAO4MAEkBhBMIARYVAM4IJGsDZiGAnRXY5gDOTggAY8N3zyPqdKJT + F3MCk8IgCgESAOqAALgix2+61zw6EBUAyP8mhgA7rhz0CoFhVBXoCgDeBwDuLE4F1oPzn4wCsADY7TIF + MNcNGAHws5/9LOsGnFUAphCIpsQ6VgDoVOH4/nX14FFi0JYKMwAqCQFCHBLcCAAo7lf5TwC4ijmAxm0z + ANTaFai9AVV4GADYJCB2AbZPEACyIIhWAc4pgAEVAKmAIwXAKATYqgK4vCQA7G4CABoOvFotKoDxpJjV + kQAgGx0wBoAcLwEghQAtzQ3IAEDHl+x/BMAVhQgYAjQRANwdyCvl9gUAdwiAvtYQ4DyGAMcIgB6HA2MP + gFEAVzcBwDgEOGkFYM7jsakUtN2BGgLUstQ1KQCU+JQHeJfLf0wMIgQCKwD4+hoI4NwAfZ4I3FsApHtb + VOOmBUH6iWgW5OtCgD4WAsVJQbogMwM7dn4EQVYIZCYEsTMDy/dh7PjzEHAJZHaT2YEJANUYAA1NCqJD + gfeHACeqAHA+AAwBrq4YADorsHQD9nsBcMoKQB3fAgBNFICfAQC22o0AgMqBNRGIFYGgABIANhQioAJY + RQAIBKo+Dg4qAHB3AoCTUQDg/DQhyBgAVgEcCoClEGA9UgBHB4CF5cN1+TA0vwcArAA6cHIGAI8KfMdK + QFp/BUDjNqQAVgKABiFQmYFBDwWALAToJwOCngQArg0BnkUF8NQAMA5Ll763GQB0IJCGAKAAtqM6gMUQ + QCcFxRAAnF8AMLc82AwAzJj6pwaArMVX51cAmBsfxwnY3gANARwDgIuBtpzxp/j/UnoALAA4DEAANH4n + CqAb1QO4AoCbAmBBAWBPwIcEgDA5CYf9zAwEFACdAQDlAFQBGAD0bUtrA5ICwNGACACsBNynAOaGBDMA + zDLZx6QArgFA3h2ICUCe/hpDAFwhqBEAUJ8/KYBLSf4xAFYCgJXmAaICKAC4HwA8PQUw5+xhwfkXFcAM + ADoZDARhwC/hTzpfCKQAOFcFQM6fVEBcIFSq4JbCgKdm1uEpY27P5ear81NZcAwFvKxkZRWAjAnopvJ/ + JSHAikKAHSmARnoCqCioKgC4HQBE/n/ACiD/3snfaHw9PRi/n+PjJQBsJAdwCQDYGADgaED42/+6wxAA + AaCDgaICaBoOATIFcCbOLwuFCgCwCg7/8KoCdEmoqnp6AKARs4EjfsqqRgjg2hhD9txlAPQCAE0EXrH8 + RwAEAcBgAOAtADraHhQAcWrw3iQB+2xI8FMBAM4FGAHg5xTAObwOAKD6MACQfHm+VR8f79vHEGC8KtBI + AehwYAwBBlUAOiPQ9QDI8wBzAEgKoHpyAFDHZxAMEwBYSi8CgEasd2lqsAwAG1YBpAC2BIA1KgBfAHB/ + AHjuBgRAbRXAWgCgv+RxvmvZ2UgBjAEwdnb7HDslOG4U/48BoL0A2y0vDaYzAs1NCroSANgQgABwxmEA + K4AV18AbCFgAPHUFoM4/yM21Nx4tmzSEioDcKARoJQm4oco/Kgu28T9CAHMAnrsCV5gDqLQeYJCuQB0Q + 5PIimSUAzBQDxYKgGQDoEuF2UpBxCEArAyEIdHEQhICT9QFlcdDDAeATAPgm3hAAFfx6nBQEnB8AgBDY + DU0KAcK+EOBpKAALApuHuu4cNzsUeF8I0NkkYN/PrAtgFMASANZRAUx7A+xsOk/LkgIYZBUdC4Bh0A7B + PQCQNqrZBwDs/gtb2qsCuBMA3FgB9EYBpDoA1x0TAD5cBbAPAEtObgGA30vdXwsAUQBbWwcwDAyA8eKg + CABwfhMCnLvzs2UAWAWAocAyAN4TCH7fT94dZNLNDdHxdbMAoJoAMy4gB8A4BGAArHoT/1sAeAMA2gQA + 1XsCYI8CCBMFAE6PTm4WB50UAlE58NMAQJwNeDYEsArgJgAIy1ev77Xb+1oWAMnx09/Kfiev23QgkA0B + JgDYbjkJaNYFIADg8uDjJOBKFgZhBYAAQMfX7kANAaYKgAFQmRBg3kETG/Y78FRE+AOfe3MwZDc0GOcf + 9DwlCONEIQsA0CQgK4ArVgAhJQBX0gW4xs0ogPcCQKylDxkAgtyCvSEAqoBdNxv/xxWCRAHQGoHhqQBg + rACuDwEOc+pwg+eHPc8JBwNAW/qlY/2eahJwkgPA+QAgBNiYJGA2LfhPf/rTCAAaDFTXUQHkIcBZTAKi + Ekg5AFsLUGcKYM7R+drUQZeu5wrAz1y/KxVgAWAUAMrlEQCyIcIGANVEAWxFAWwSABwnAVfi/GvMAxAA + OkkE9ocBwE/PgwGAMwAINwSAWwgB/FEA4BAFYCtCD7ku35+Dnp8n8fSY/0bm/AbbeDowqwA0CQhA2EDr + HwEQpwX/yU9+EnsBFACYA1hjCDCnAFYNdQfm6+QtAcDPOvdNzyfOPgOFQ1XFovsvKIBZAMgvjMODRwCo + B60FYAWQA8C2/tsUBggAqCtxHwAyxw/RkYJ+l3U0oM4I7J2pbGSnzgAg8b8bK4B+GgLw6mWV9AJ8oAAQ + +T8cDICbOHu4wfn45/PHJgm/awCApuGoHut+ogDMWAANATAJiIuD7qQOAHMAHYYAP/7xj0kBgCNnAJgo + gDg5qAJg2guQQgCrAHzm0PuuzR8nj/czxxksbqEKlgCAN5aPU37AKwAcKwD6KuECnzxxNTh9S0t/NVIN + 2PQc92sRkALgTBTAuuIQYLUPAAuJPpwym745EQDG+fERHyQCmFEAOEX4jkEwBoDrdZHQIcr/mAP44ACA + CcA1rwe4oABCPQ+AaS4uLDvtDY6TQ48GlhmZn8rOcyjsywHMXd8HAJ0SzCqALAeAAHCSBKRKQBwNWNdG + AYx6AQAADVYD1nMKYAwAdeQcBjY/MAbCLAC8z5wu7ic/Nz6+OQC0C7AfKQA8dyEHgH42CwAfAWCHBRsA + UPafVQAC4IwAgAqgjSHAjQCgn7XS+QvSly7J/yUASBKQACCzAfU5APwwkwN4KgCon4PjP7+hAphz6KX9 + Ic8x5eQzTh+/e3sUgL22BIZrAYAKYA4AP/rRj+LSYGMFoL0AZxj7r1MOINUBaALQDgpaWiPAOmsOgiUI + KCfI3ecg4PUL6fSJ96oAyIHMEGFWADqBKAAgSKlK4PUBqkGmBxsk868bOT9u3BNw5hkAKxkSXMdiIOPw + lZH7EQByzYXRBCDc8tN3zpsvHwFNQoC+T7UAseWXbsCeAcBTg6sCCHkOoJJioLqRv78CQCcG4YKwKQD0 + b3UAALIJQSraei0ECg0BgMuArw8BrlcAo5Gg2iLPOvS+x1xsKCaDy7KfN6+xoACWHF+Pda/f1awSEPMA + CwoAuwEHHQ6MAHCiADIAjEcDno0WCJWBQHZAkPYA5BWBbgIBe32sCiZgsACYOZ597o17F5YVwBgAw2hA + RvoeMwB8BEArANhOAYDO7xgApAKqbQRAIwDwYwCYzSb7ggCAjukGqOPnAKAvzAQAsj5ALwqg72PrH7eB + AUCbk3v+AQEgywGYLsDDAaCO5EyLHqKMT45+s+MEgFRdml4zPW+fArCOPnZ6u58AwCgA2ZYB8MMf/jDm + ALAbEDbuBYgzAqkCmJ8PYDonQF4RSG1GtQyAfRCwcnHi/N5HAPjk/fJduokC8DdSAPqHxTehXYL82wcB + QE8AqEgBtAYAO04ARgWwERWwdeeV1gOwAmgiAHwEQMgA4E2yz8W4P8LAcd5O27RBqxyxS1NDALtIaN8R + AJxcc6gEBu4N8PiZhsCbUwUg06I9NABGIcB2WOUKQEYCtgoACgGWkoBK15FzTRx6n7MvPzYMUwBMn2/C + sxEAxu9r37EFQNehAmiTAtjItODb3X4ATEIAMyWYDge2MwLhZhfMnKsExD2aLQyy18cjB+fOnXF2Z8Cg + 55Udd5CpgsMcP9n1OQA7QlD/CBYAnkIAcN6hoxwAdQXq3ADi+LkCAOfH44rzAI1LCqDSfn2MgTPHl72T + BB+CyJlcgIv5Ose6hAHAIQB/MVni9wQBBYDvGArk/D1+hl4AAMc9qptAr6YKgJTeQwCgchEA/WwIsCYQ + 2MlAUhLwmeQAAAioALytA8gVQNqZ2Dvc4nwI2WNZTG+edx0A0ndzdGUEA80BxGnBxyGAyQFkAPj+97// + c3DiCIBKhgPvA8CSAhh3AS7NETAGwj4IzDm9PU/PT449BsBijcHohgb9w1gAqBJQALhcgo0BQApAAMAK + QAGwmwDgXFTAOYYApAB6mhOgjvMBeMryo8MHcZKgmzNQcF4Sfur06DBMBbo+6OeSTRQA0I27AFEBiOOT + 8yMQ8Bo8Dz8LJgIrDAUwzFEE3CcAtHFGCIICGKICYAC0oxzA1swGlHIA51kpcCAFsE4KgJw/fSdy2X9L + 559x+EEUwOzPZd49VyQ0+42V72DKA+QAwBBgexgAskIgBEAWAuybExAdH4/zuH8uBHDOT2CQJwWnSUI3 + cXgXM8l6XPlxEnBZAVynDKwCiMVA2EqGsAcAmosLEQB+AoDd4QCQNQJoVmCnAKikla8SEMSJ0CkUBHot + qOMLDOjcSQgwcC6AFMAg9f/R4bHV52MP7913HX2GaugJACzCHacB7wsA1vml9Q8GAHE0YEDHtwDAOQHP + RQGc07JgcSAQAYDl/4AAoMVBxwogJQGTc04z+Ic+Noyv2++OaWwSAGyL7mbOr/nejtYF0BAg5gBuBAAz + I5D2/1MNQNNIDqCmJGAKAbzL5wOoZpw9/fFzILi9xykJ6GYh4A8AwJwCGD8nJlTGANBN/4g2QaOvHUQB + kMupAmAnOggAfivDgnuzPkCQ1p6TX3jMe9kIDhW3ZOL8QabiDpLd5scYAPoZgwEAKgDK/PdtbPV9h8cM + LzymRGbPn4d7ObjdrO8DANrbUUlIk4UAsjw4KYCGti0lAddxQtAddQMqAM7NZCAYAshAIA0BRM/YrjgL + gCUHT338Yf9zRw4/LDxvGQCHG4UA8LfsIwDa9wfAXAiwXwFMQwBN+tl+4GVn33ctefBc658Sfum5czUG + c04/pwbyRGAw4wEgBBhTXF8n7gdaTIQUQBCHEQBUEQC7KQAkF7CiHEACACf2Kun/ruEL7al+nbPhNTs3 + AaBOUMD6dgJALVCoMkUg2UAGwKAA6FixgLMjCKp+BwBAp4f33W0pfMFrtUCtEreBP/39AcCz0/O6CE5C + gBEABl4PYEs5AAEAKYAzqgcgAJDzP6P4n1p+XBmoWhkF4LN8zr5+/Uk//jXPGT9/WPh53dkcgIXB4QAY + 7gYAt1MA6shV5vRLTjpx9LmCIPleRAiMgeCmamHq+NeDIGsBtMUPIYYAs8UZ+tqjEIAkMyoAWiSEIdDI + hgCg6j8EgEs9AaQAnEwLzpJCur3Q+RuOf9Hx8ZhAUAsQeJ27IQKAr3PCsDbZbn6jpAAos8+JPkwAstNz + a+87dH50epzMZMvTmfU7SWgiBHqGgIRftCBI1eSFQFISHieGGfX2OG8AoH+amPAMqcy5ku5MBABKf7wf + gXMAOwkBUAEwAM5oo2Igz8nAXlr/npJ/Z+z8lADcrwAWHXWP80+eM3Hy/cVEuUPfyP/35wBGvQA6H8Aw + dL/s+3sHwJxTWwdcquAbVfPNOX92vO+1p85ury8BgBJpJvM/mD/qrAIgAEgIEKQrUABAVYERAFL+6zap + FgAnB8UBQVRJKPIffz85Py4h2kgGvCGH1y1UOAPBivZB4BABUCkMREdrD2EQUAXJ9KP8H7jlr8jx0ek3 + PJNRdyUAwGrGLauZgEgKMv7h/QAQZgEgPRyqAKIaCDIbEFVYRAWwMwpgowDAWYHQ+aUeAFUAJwNlYdCK + Fwa9TgFYR77N8RgA8897ggDQcQApBNgHgKlD5/J7XLq7UMprHX9yfh1c9NyPnjOfC1BHnwOA/WPa96AA + 4K/oQI6CoQAu/MEAaCUEkFBAW/+wISDQAiECABaEXocWwbaKSqD3IwjIJJdDxS2bqxQE6PQNhQle8gTe + jQAQGACU6LPOj8OXCQA4o/FbAgHPZyAqANF0IACcCQM1BNBkpf6BtIdDW3zu7QgRCNijYRXALuYAVqQA + NjEEYOdXCDAAzkQBrGhVIA6frgfA2Fnnzq97ztJx/twpAG5q8yHAowJg1JV3nXPvue68c/MPeTfPiakC + mFMCUxikLpfY0psJQcbZ//F74O9vIAeuY4dVT337qAZo/n/YVggDHQ3oWAkgFHi1YAYA/z5u8QgAgSoE + wAEwFFAIrBIAKoaBqxp2enF8R9ekqD6+1wSAKnAPACf6AAC0mAkvaLJC54dt1b1xq/4dqwAc2xAYVDwF + GvzNtRQcw489CiAObIjdmdJ74Uxtg7T8wQBgiApAawAqvpOzOQB0fBwTsKYwYPDs/IPE/oPMA0AAkJSt + daKJY8047V1dX3ru+9gHC4Blx85c9oDnJC+77qnLAOBjfU4eDuiNTDc06765BgD8esEMChroK1ZLVr8R + EDROQWB6BKRAiLoNARTOqeLwHO86rnpjt+NX4pzASlr9lUCgpn1SADUBIdiFOuWrR6GKAoCSewwAGr6M + rT3J/rdu1cLWvXZrAIDOaqQA4DCA10WYKgD9nVw1EOR+Bxm3EaRXI/ZeaPel52Sfk32ICiBNCJp6ASQH + MEgvADo+7AkAHhUTOv+anL+XacAGyZ8oqq8DwPs47CHPu0vn1/f+gQJg7JR3YNdAYFl1zL+n/Pna8idH + 5+zt4KJCdOnLEj+nN3MC0BJhuE4gTxLaVLxmYON7AUBHrT22+rQoiJQJe9wwJg8y/0Bw3NoNCQIdaYsm + ywUEpwoAHX7FcX8lAKBrogCqXAFQn77kAao4eYkCAB3+rVu30Pp3rwAAAIK4riGGAb0shuolBJhXAC6G + AKl70kUAJCccRBFwV6eXvYv7BIA66wbERCB3Aa4ICFgLgADo6S6vxPlXcUFQK/+1sNmN/qazDsZPuL2j + 3tHrTF73QwfAvEPej+0HgL22/CbGCkDDgzD9ZZQNp32Fbsb7hjZPXWWrOhAEVgQFbcNTzwB1s8GGPQbY + GmvYgd2OLXz7OwSAgIABwO3v4OQLbRa6yB1f9tISZ+FKLFse6HfiwCV+HxuevgwAsAbpzxsCAPa6uEng + PEDjQ1wqnRVAFbsAXQYAcTazpx4L/O3i2INLdQ691j7gu8QuUG+LgPizMxBX0h24IgCQtgorcn5F7SDq + KN0rdf6bAeA2dl9OP/6+PiEA3LUdmldY7nGYu6FLANBkekxq4bGuDQB7dn7Y1x7uV+XWIAXweF3x0mEU + Fsi8gVRsg84P8tvBMXbJYXUezfE+BBqf0/YevtgIAk+KYAiaZpSuQMeJP1IAkvwL0fF5n5JxziXRzRBw + GAoMOm5hQwk/jPnJ6QkAL90Z7lEVEAC2jvslEgBY/s8DICbbxImd1PPje5R0KfVwaJenHfXHx54+W69d + ovLbMS/S0n4VcyR9WMUQiVSS43wI77VmQrv//Gzq7SEc9q7tXgCA8wHEQiAzEvDDA8B1NpcDGB/rjUw3 + VPe2V0BHAcZX82bgU12R4+M9WcH9WcO2WvF+3VQEAwoHnPQUAACo1e+24IM72Fo3wKYLPPT9AM6PW3Ay + Wzd80X3MDQxOqwAlptUuv+j4Pu2dHykALkqJSiCbw1AAAE5/BvH/GQKgTwDAnAUrgEEA4GUquNrE/nWU + /iFCQB2f6xm4ixOz+tzVSZuTMEefo47vWfF08nMaCrHTyx4dPmjNRC1Oz88PWjiVOf+H8v28vVkAtLhl + 8wFoIdB207Xd27bDCUH6NCHIaQFg37VlAIwVQGxNowRmx8cBUg0BoKHJU85og+NVQxCgsMCzK7jAFXgD + AGDoduz8XRspTiu9IgBABrSgBro+xDk6qJo3SMmv1rSr87tp7B0r71xq9xgCUr482BWNN1EBnBEEGABn + mAcYAUC7AsnxzWxAweyT5GZoDSNn1xad6x1q7umQ2of4XGrRk3MrEHpn92mLju/y3++8j9K/AOCkAZA9 + mm6kGWHl4oitvIordmu5HACNTI+2opa/oRGUZ2drmlCVYIBTqeH9IgCw9EbJ3wMA+nZHzt/RBs7ftgwA + muCBQdD1A4UFPQ3ocSLi0ZLETo4+s4+fN33aqAQwqRd46DJ29zEA3rLjRwAYBSBtbiU5EA0BUriRYBTL + lqOsr0XKN7FnQx2/izBIXZ7U6mNW35vW3dexlR9iKw+/IyQlNDgd7KO5B2/i/nn5/1StAOAa07bvOuin + lp/+jc5vawRs7O80BpZh0ZQj0dYfnf/8HDYeTo1qgABA2fjAQ3EHdPadbC3vZVYX3stGY71hk4lJeHKS + NOY/d3Qf5wvQ8/k/RTCFQb1ULPJEppjxZwC8hf0rdy5JwGUAmG4/yeY7USaDaYF7cd7OVDhqLI/nrdQ6 + aAyPGXyW/SspguIsfiyDzuS9jlKYkfqZ8ztXAHCSADBHC29tCoDxfG0GAGarSPrXNFkqyf31mlZTOr+4 + cBcCgfVaJlKllXx0fj508B39wRAAdNwyFMjxQRG0u5b+qJ3kBXAb4qCk9LkCv7nRJ55Cz08/NBcvScly + TQC4oph/PbzlPMDA3YCrQYuWRLx7mwdh5/OxyMcqACmPimMbNJvPMXwrrT5l9ylrL9WPCgPp8uxV3ttq + Pj/q1jMjIvkv50efWjtDj8cKABbMH/JolgS8OQAqAUAtPSQMgDNq/S8QALCRCoD7yFOoV/QrBwEAjt1m + x2/pD5ftdTN5gaE31YkhuLGoH9VLX3M/JB9AiUCZyxBLlSkRCCpggA0LgQZp/bUOQNJwHM740ci/pAB4 + iLIBgIQAKfbXUKBJisBZBZBqHlT+Z115MdlZZQpo2uLv+/RP3x4VAPUHDIAb38h4Q/nMAiA+aIp/vAkB + kgIA+Q8Of34GAHj2zD17dkEwYAA0tKQ4ms43GAGwa+OUzp3s9XrboUJABdCJAuhNeLJge0CQf1rHYxgi + AHg684Yc/ooLgtT58brTAUGDlu9nRT/epXkJXAYAkwR0KZuvIOg00Scw6GPBE494HGRAFI18dFpfwMOO + U7LT5SA4ERsDYFcA8J43Mt5QOQtmfIA8Npm6zACAFAAl/0QBEACegQo4p7UVaB7FuqafzwAgDp9gsKO+ + 3AgAyQ2wApAFPczgpNsatZdBRtvTjMZbgQBIfmr9t3FaMwoVuEOPB9TawT7ZIB+Nv7XLUmsBTCgg9QwK + gpQg1G7CJsvqDyav4GzS08sck2ns+GN/lR7U7hYAtU4IAgA4AwDIkmBxTQCZFnx+RuCnDQA3DgGcu14B + TEIAVADnBIBnAoBMAcwAYCeSPx6bczrG3oG2EwXQj0KA21uayGQQFdDFSUxqmdKcFzvhPH0sJU63xKVa + g5R4S70TLnUFSnw+SFIw9g4YMISIGJnnIO5NZaG8tv3d8m5ODgI8KehA348YAmzTpKBXsjx4O7c6cAFA + difNzh7vUQAHAADzADcFgA0NSAFgcvBeATCYwqAuTmxaa6s/8FAcGj8Qpz9LOYhUH5GkeN7t5k1VoCkB + FpRwKy9w8KluQH8udefZhJ+V/c78bnN8AvaoAKiPCAD7QoBoSwrAhgB7AKD3abySiwVBa88FBPcZAugI + Qa0uqGSuAB4x2MZzXfeAew70+bE4Ot4fOZCdrr5jknNRBbAjq+PbAULZXIeTLj19/by19/k/J2NjAOwK + AG57Q+lfc2zM1AAcogCeP38+CQH2AcAqgMUQ4M4BwJ/XRxDIFOe0dVK4NESloM8NQcdG5L0RWcerN1V3 + Jk8QRg6dV+q59Ph4bxxc8ZN+3dP9zt3GCgDu/IbSv+bY2Ogz+rtWAKOQICoAGwLcCwBcatVlAkvnNDdg + z4fpzDnxfczUHcSEoJP8wBQK/NNVdG5TrOyss9t3eupOb60A4K5v6OKJyxWA9H/XIwCspRfgzhTAAwGA + PpZ+4Pjag2ntGQLpKTFocouOaAdPRQDob0pViul4XKU3Ltx5ut+r+7LHBcBoZaBjAICbUwCxwfLS3TQX + AjS0kOptFMA8ANI4gftIAo4+OMv6kK4pAOJzYmI03aOlSgM/AoC9l3o/w/jxyTsa2bU1DqdlujQYbtni + oFcFAO95R+M/0y+n16nOq2sBgI4/VgAfNgDG92B6H+xJmKiFGbsOAPZRfzzVeQ9pdwwAWRx01ZyD8zc4 + qAUhsFqvYjHQSYYAcwrggBBAFQBeH3cD7ssB7ExBkI4NuN8k4J57kF0IYzbYKxPzM97upyfjw2I3sH0h + wKWuDWiWBy8AuO6GzlybVQDXAMAqgCcPgJkHww3b6zkFkD9e7H3scQFwKiHApABoOQQYK4DbA6ClrsD+ + QwkBFp87Y9d8DbKRmk/4K/OYti8EKAC49d2VfeyCNgCwCmAGAKgAxqXAlRkM9EEDYOk+2O6/G77E7NjE + I/maPKYVADyAZQpgLgewBwA2B/BkAbDPbqEAit3eCgAewObGAKgSqE4dAMUe1R4IADokGJcHX9HwV3L+ + OiUBqyMGwLQEOIUANB04Lpt+jwDoCgCKLdgcADYFAHdsBQDFPlC7cwCszIQgOLfd+ozntDvpEID+0fjf + 3SgEuHEvgA4DluNOpgUrACg2ZxMA7CQE2FwRAK6ueEKQti0AeG8rACj2odoDAeDEQwCXRrY9NgBoRuE4 + Qq/YqdscADYFAHdvUwDwoiDX5QDuAgBdUQDFFqwA4IEsBwAnAXVprAKAYo9lBQAPZAoAH4uAkgo4pBdA + cyZoBQDF7soKAB7AbCGQmxQCVbTqTxMHA61pXYDzAoBiD2AFAA9g8wCo0uKgSwoAVwYqACh2j3ZvADg7 + 44VBaHGQVZoUhL7sEQD1SQAAbSkEuE4B2BzAoYVA+ZyABgDo/LSw6GjirOO73cUONAUAzhqNjcWWhgNv + cSIQd3WJE4JcddvtbrPDCUEKAN7fpgCwCqAmZRQBcH4RFcBZAUCxe7QCgAew9HmWALAcAhQAFLtPKwB4 + AIufR6oBJwDQxUFNCEBrAxYAFLtnKwB4AFsCAM8ItJwDeA4QuFsASCVgAUAxsQKAB7A5AGA4oJ+93qMA + zi8QAGeH9wLMAIDnA+hpaXDqBRhkjn6dYvO4bnexG9gjAaCZ6QasjhgA6cDrcthxTkABQKPLg3MS0CoA + vIc3AQB2/0UA7GZCgKBz+M8B4LjufbH9tgyAqwKAu7IxAHQZq0MAoArgppOCFgAUO8TuHgArAcD6rDk/ + P6MJQfCLjdOCrRopBjqxEGA8gf14dSAOAZo0LfiZmRV4tDKQ/tGWFgbZ7bbk9NeHAPJ2vE/vyZVw4NTM + AkC/TwQAmRDk6uqKJwQBAOwKAN7X5lawOAwAF88uSAGgeioAKHbX9kgAOK0QIDNeEzsLA5YAQAuDXGAO + 4DwLAQ4FwE4XB5UQYKAegOsAcMT3vtjElgFwVQBwrzde9vTZay4G4hzAGVcCIgBEAdwUANnagAs5AF1i + qwDgtK0A4LFuvOxjLcAIAKoA4urAEAK8LwAmIUABQDGxAoCHNJX/tDJecrh9ANAk4Oo+ABC7JfXNFQCc + mj0sAHBIMHYD6sSgZnHQ8cSgx2jB/KPHNDMQdQOOQgBZHFRDgHsDgExZng1ZLnYyFgEA3w/8nuxwYdAC + gHu62eafDAAVA2AVAZCSgAUAxe7T7gwAjS4Mslq9WMdCoHPHi4Os6ct96iFAXCs3vH8OAO/MsBcApiBo + qRfAFAKVHMBp23wIsJFuwEsCwAYBsONCoLYA4BY3W/8tACj2gdjDAqCEACkESAS4FgDrGyUBDwNACQGK + oc2HAAUA93OzzT8xB2AAEHMAMhow5gDWhymANCcgrwtYAFDsOisAeMibbf6ZBcAqJQEvbhkCtC1DYAyA + QACIv7wA4MStAOAhb7b5ZwKAmhXAetwLYAGgE4LMAIBb/zYLAWgcgABg6LgHYAjjQiB+bwUAp2kFAA95 + s80/hwBA1wVYVABx+G87av3bDADYBdj3+0MAC4Nip2MFAA95s80/ewEAmw0BaEqwAwCgKqCT/RwAlkKA + AoDTtDsHADi5TAgihUBxYRABwOo0ARCS98vCHHLuTSEQ3B+bA5gogHEIYADQmn1r9vi8ri8hQLF5SwDA + kLJz2902lgK/u0yFQLt29xYgUADw/jea/o03fQkAVgHYpcGWcgDj2J+cHs9lPwZACEYBFACcvBUAPNiN + pn/jTZ8AAO6HAoBUwHhtQLxneI+cAAALN7Tbr+1Syy+Or60/lQHjkmAIgFBCgGK5FQA82I2mf+NNtzmA + 8doADABcHESWBsPWf6QAelUAprXXc32MWn9ZE1DXA1hSAAUAp2kFAA92o+lfOTFlwTI9eF2bAUG4nfPa + AOdaBQj3rfYGAFK6GVt6dXjj+Or8DIBhbwhQAHCaVgDwYHfaHobMCRUAuK1kJeX1OVcEchkw3q98UlD+ + o7X0R8scXjbr/L1k/xEATtWHAsC+xyO87cX226MBoKEJQXMIHDMAgv03hAwIGALgfahlkVC6T9R9epZW + BcL7JfcFf5QcWx1fjvUPOcjgjkEAgIohaBfgCD6ZAnjsm1TswS0HAE8Lzt2ABQB3e6PNv+MQgCYGlbkB + saWnWgmtm0D53+B9quN9wT8atubcwqPjD6m1F7lPji97TjqGCAALH1cAcNJ2dwBodGEQAMB6Bb5/RoVA + GMPiclclBLCHYwWQFgvVUACz/giC6Pw4dNolBcBVfT05Px2Lw4+33PldCQGKZTYbAmw0BEiFQLQwyG5X + APD+d3ruNMnwuFiohAOVOH4taycQJAwAghT16DTf6uzR6enxIOFGMD0PYfk9HuFtL7bfHg0Apx4CZBY/ + N4OAFknBcMDz8uGsEHzWXpOzB3X2kFp6cXjr/Pp8/tUlBCiWbDYE2GwKAO71po8IkNYLTACgAiHczzi/ + /uF4YhFJ6tlWXh+nc1mFxLT8iyFAsZOzAoAPxRQACgOzkGgcuZcJCNuy+xTbZ44urb33+6V/sZO1AoAP + xfQjq8PSygE+nepjxgI9LT0vdi94Ny/zCwOKjexBAHC2lAS0i4OeOgDiX0T24sThAK/NcgMCjtETihWb + tQkAtqYb8F0BwCP8RXQXFh+LtnCbCgCKHWp3CIAmLgwCzh4LgSgEoIq2VSxsKSHAwh9jpq/wpgpALux/ + vFgxMewtGgQAOqwcQwBcFOQSQoBLAsCGJgTBhUEAEgUA92XXOvuBCsBNnnaa97PY9fYgADibAUAJARZs + XwhwoJUQoNihNgGAhAAEgHcFAI9rdgjxXisOX+z9rACgWLETtgKAYsVO2B4NAJQErEsSsFixx7QxALYF + AMWKnY7dAwB4YRBw/gantEIIrGWeuxICFCv2Ydk0BNi6zWYr3YDvYJNCoN2uAKBYsWOzRwNACQGKFXt8 + m4YABQDFip2MFQAUK3bCVgBQrNgJWwFAsWInbAUAxYqdsN0pAFYAgAYBsMaFQc6bC1oY5JwmBCkAKFbs + wzMFQBsnBNnG4cDvqBDosgMgvB8AsApwnwLQJa8LAIoVe3gLMn38sgJ4TwCsYghwiALAgqACgGLFHsrs + 7NH7FAAB4P1yAE0WArACQOc38wLaEED2BQDFit2/BTNFvC41j8vK72RW4O0oBNhudzcAQNNICJArAJoU + FCCwXggBsCy4AKBYsfs16/w2BGizUuDRlGAQAoDjHwCAqspXB0bpv6gAeOHLZmE8QLFixe7WrPTXVaR0 + BWmU/+1IAYD8JwBsJQQASCwDALYvNZgDAAWA04KfrRkAa1QA2PLTEuGSA8C9AYAdFFRUQLFid2tpXUiX + lpCzAMD43+YAtrw4KALgapMrgG5pWnAEgIYADeYA1rguwFrmApgqgFWzEgDoEtgFAMWK3YeNATCY5eKx + 9Z9TAFeoAgQAmAPYCwBw3BgCNAQAVADrBjP/a5oQhJ1fFQDmAlaNLhGGe7MMdgFAsWJ3asHKfgsATADC + XhcFiQAgBcCLgwAIKARAAGgIAM7/S/jZ/+1/8IMf/C8EAGwxBIA9KYD1KgEAHN+T88cwoIndgQiCmAxE + CBQAFCt2p6ZyP0p/cHqU/toDoCGArgvACoDCgLDdbTMFAM9PAAAF8D9VAYDjfxFDAIDAR+DQAAAQ+ej4 + 7PSepwRbEwgAENwbYHIBtXYFqgp47LtWrNiRmJX+Tlr9IADoFACoABACu13QWgBQAQCAXQfXYhIQAQDO + H0OA/wHO+nsAgN/VHAAA4AW05Bfg4NC4NwgADwdeYYDHDSYFGwZBAUCxYvdrWeuPIBAA9AMqgE5zAEEA + gF2BATw+YEUgnLcIAHj8DcACQ4DfIADgNf4PAuC/g/P/Hrw+AaDCHAAAABTABTg6AqACp68QBHC9ghDA + rzHuXwEQmrw7MPYE+IqXwy4hQLFid2Oa8UcFgI5vwgAqAuJCoAD7AP4OTr8FFbDD1n9AAIARAEA55AD4 + wQ9+8N/gdb8GLfbvgvNSCACtOIYAF+D04OtNDRRAAICP177hY1ADAISGE4HU8sdeAISAxv8FAMWK3Y2F + kQLArU85AHB8TAQiANpdO7RdiyAYQAkM5P5tewWPv0UAYAgAzv8rVQD/FZz1q7B9GXMAsFcAPIP9Gewb + cX7aagQAgABOUAF4yv5XDIBYDITOTyFAAUCxYndh1P5TDgBPOPanJKCAAAHQdx0ogAG2bujaDlt+dP4e + oLDrGABvBAC/QQAASP4vAuC/wEt+RQDwBQQAOPHn4PgZbOfgzGsiALg+XCcIVPA/XPFwyTdmLAC2/NoN + SMtbFv8vVuxOLMgak5wDHKIK4D0CYICIoB9QAcCuBwUwtC2cgde3CICuuwSnfwPOTwCAn/sYXpAA8J/R + +eHkd8B5v4A5gMq5z4F3PwfHvgDHPvMIgbpewWMEAdm8sIBi/qrW2F/kvy9LWhcrdlfGCiBXAgYE6Pyw + wf9gvRgcgveDBBiGLaDgMvT9m8G5l3AdFcDHWAzkv/e97/0MnBkB8CVw3M+rAoD9c9g/AwVwDvsz2NZw + beUBAuT98B/+r5LfZwVA+JaL+xcrdlemdYC5EghaIISeHwL5f0DHBw0Ayj+EFva4beCYFABsCIBP4Wc+ + IQD84Ac/+E9wQK0/XPw87H8L9p+D/QsEABxfgFOfYSgATr5GFQDnNTg5XEIS+Lzyr7T8xYrdm00HAwkR + sPUHAsA1AgDsOzho4XgHxxvYv0MAgI++AnHwGfwM1gL8CkOAH8PBF7X1hw1b/49gewGbAuAcwwDZVgQA + 57DJJwXAPX4j5/fxn2LFit3agsoAOQvpUiAdQAEA7Hs474AEHVxtQfbvQPZv4FnvQAm8heuv4RgB8Bvw + 2U8wBPgOOPHn4cnk/PAAbi8gvn8O157BtQvYn0sIsIbHVrARAEgA4BuQbJ89Llas2H1ZGPGApAA6P/i6 + o9YfN4cAQAWAAPD+Elr+d/A4AuAV+PJn8JzfIAC+ASe/hc4PFz6CB7Hlfw573C6chACwR/m/huc0DgEA + rb9DCODvn3H66rHvUbFiR2bDwnXwxcAiAFp/qhViAHgEgPc7EAZbuH4FGwLgLTz2GnwZQ4FPMQT4j3Dx + BWwo+5/Dk59r7O/E+eEHCAAo/y0A4Jgo4Kri7sWKPZYpADAL6BgCvccwwLkOjneyYRhwCc+5hP1b+BlW + At/97nf/Azg8yX3HDq+Of66O75LzU/wP+0oB8NgfvlixUzcEgONMQABfxiQggqCD6x12BcI1VAE72CME + UAkoBN7+f/ILeSquZ6X1AAAAAElFTkSuQmCCKAAAAEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAA + AAAAAAAAAFNTU1ZTU1SEVFRUpVVVVbVXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dX + V1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dX + V1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dX + V1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dXV1e3V1dXt1dXV7dX + V1e3V1dXt1ZWVrZWVlarVFRUk1VVVWVUVFSEWFhYwl1dX+RjY2T1aWlq92xtbvdtbW73bW1u921tbvdt + bW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdt + bW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdt + bW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdtbW73bW1u921tbvdt + bW73bW1u921tbvdtbW73bG1u92trbPdnZ2j2YWFi61paWtFUVFSTVVVVpF1dXeRsbG33e3t9/omKjP+R + kpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+S + kpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+S + kpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+S + kpX/kpKV/5KSlf+SkpX/kpKV/5KSlf+SkpX/kpKV/5GSlf+OjpH/hYaI/nd3efphYmPrVlZWq1VVVbVh + YWL1d3d5/oyMj/+dnqH/pqer/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+mp6v/o6Sn/5qanv+F + hYj+Z2do9lZWVrZWVla3ZGRl935/gf+TlJf/oaKm/6iprf+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+p + qq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+p + qq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+p + qq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+pqq7/qaqu/6mqrv+p + qq7/qKmt/6eorP+hoqb/jI2Q/2prbPdXV1e3VlZWt2ZmZ/eBgoT/lpea/6Kjp/+nqKz/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/pKWp/5CQk/9sbG33V1dXt1ZWVrdmZmf3gYKE/5aXmv+h + oqb/pqer/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6Slqf+QkJP/bGxt91dXV7dW + Vla3ZmZn94GChP+Wl5r/oaKl/6anqv+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+n + qKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+n + qKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+n + qKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+nqKv/p6ir/6eoq/+k + paj/kJCT/2xsbfdXV1e3VlZWt2ZmZ/eBgYP/lZaZ/6Chpf+lpqr/pqer/6anq/+mp6v/pqer/6anq/+m + p6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anqv+mp6r/pqeq/6anq/+m + p6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+m + p6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+mp6v/pqer/6anq/+m + p6v/pqer/6anq/+mp6v/o6So/4+Qkv9rbG33V1dXt1ZWVrdmZmf3gYGD/5WWmP+goKT/paWp/6amqv+m + pqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6Wmqv+l + pqn/paap/6Wmqf+lpqr/paaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+m + pqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6amqv+m + pqr/pqaq/6amqv+mpqr/pqaq/6amqv+mpqr/pqaq/6Ojp/+Pj5L/a2xt91dXV7dWVla3ZWZm94CAgv+U + lZj/n6Cj/6SlqP+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paWp/6Wlqf+lpan/paap/6Wlqf+lpqn/paap/6Wlqf+lpan/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+io6b/jo+R/2trbPdX + V1e3VlZWt2VmZveAgIL/lJWX/56fov+jpKf/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+k + paj/pKWo/6SlqP+kpaj/pKWo/6SkqP+kpKj/qamt/7Kztf+1tbj/sLCz/6urrv+mpqn/pKSo/6SlqP+k + paj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+k + paj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+kpaj/pKWo/6SlqP+k + paj/oqKl/46Okf9ra2z3V1dXt1ZWVrdlZWb3f4CB/5OUlv+enqL/o6On/6SkqP+kpKj/pKSo/6SkqP+k + pKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+jo6b/o6Om/7GxtP/Ky8z/0tLT/8TExf+1 + tbf/qKis/6Ojpv+jpKf/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+k + pKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+kpKj/pKSo/6SkqP+k + pKj/pKSo/6SkqP+kpKj/pKSo/6Gipf+NjpD/a2ts91dXV7dWVla3ZWVm93+Agf+TlJb/nZ6h/6Kjpv+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/oqKl/6Kjpf+3 + t7n/2trb/+Tk5P/R0dL/vLy9/6qqrP+hoaT/oqOm/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+hoqT/jY6Q/2trbPdXV1e3VlZWt2VlZvd+ + f4H/kpOV/5ydoP+hoqX/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Gipf+jo6b/ubm6/97e3//p6en/1tbW/7+/wP+pqqz/oKCj/6Gipf+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oKGj/4yNj/9q + a2v3V1dXt1ZWVrdlZWb3fn+B/5KTlf+cnZ//oaGk/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+i + oqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+hoaT/o6Ol/7m6u//g4OH/6+vr/9jY2P/AwMH/qaqr/5+fov+g + oaT/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+i + oqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+ioqX/oqKl/6Kipf+i + oqX/oqKl/6Cgo/+MjI//amtr91dXV7dWVla3ZGVl935+gP+RkpT/m5yf/6ChpP+hoqX/oaKl/6Gipf+h + oqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oKGk/6Ojpf+5urv/3+Dg/+vr6//Y + 2Nj/v8DA/6ipqv+enqH/n6Cj/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+h + oqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+h + oqX/oaKl/6Gipf+hoqX/oaKl/6Gipf+foKL/i4yO/2pqa/dXV1e3VlZWt2RlZfd+foD/kZKU/5ucnv+f + oKP/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6GhpP+l + paf/u7y9/+Dh4f/r6+v/2NjY/8DAwP+pqqv/n5+h/5+fov+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+g + oaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+g + oaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/oKGk/6ChpP+goaT/np+i/4uLjv9qamv3V1dXt1ZWVrdk + ZGX3fX5//5CRk/+am53/n5+i/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+g + oKP/oKCj/6Cgo/+io6X/qamr/8DAwf/j4+P/6+vr/9jY2P/AwcH/qqqs/5+fov+fn6L/oKCj/6Cgo/+g + oKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+g + oKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/56eof+K + i43/aWpr91dXV7dWVla3ZGRl931+f/+QkZP/mpud/56fov+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/oqOl/6urrP/CwsL/4+Pj/+vr6//Y2Nj/wcHB/6urrf+g + oKP/n5+i/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+dnqH/iouN/2lqa/dXV1e3VlZWt2RkZfd9fX7/j5CS/5manP+dnqH/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/6Kjpf+pqar/wMDA/+Pj4//r + 6+v/2NjY/8HBwv+rrK7/n6Cj/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+en6L/nJ2g/4mKjP9paWr3V1dXt1ZWVrdkZGX3fH1+/4+Qkv+Z + mpz/nZ6g/56fof+en6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+h + oqT/qamp/8DAwP/i4uL/6+vr/9jY2P/BwcL/q6yt/5+gov+en6H/np+h/56fof+en6H/np+h/56fof+e + n6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+e + n6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/56fof+en6H/np+h/5ydn/+Jioz/aWlq91dXV7dW + Vla3ZGRk93x8fv+Oj5H/mJmb/5ydoP+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+d + nqH/nZ6h/52eof+dnqD/oaKj/6mpqv/AwMD/4+Pj/+vr6//Y2Nj/wMHB/6qrrf+en6L/nZ6h/52eof+d + nqH/nZ6h/52eof+dnqH/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6h/52eof+dnqH/nZ6h/52eof+d + nqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+b + nJ//iImL/2lpavdXV1e3VlZWt2RkZPd7fH7/jY6R/5eYm/+bnJ//nJ2g/5ydoP+cnaD/nJ2g/5ydoP+c + naD/nJ2g/5ydoP+cnaD/nJ2g/5ydoP+cnaD/nJ2f/6Cgov+oqKj/v7+//+Li4v/r6+v/2NjY/8DBwf+q + q6z/np+h/5ydoP+cnaD/nJ2g/5ydoP+cnaD/nJ2g/5ydn/+cnZ//m5ye/5ucnv+cnJ//nJ2f/5ydoP+c + naD/nJ2g/5ydoP+cnaD/nJ2g/5ydoP+cnaD/nJ2g/5ydoP+cnaD/nJ2g/5ydoP+cnaD/nJ2g/5ydoP+c + naD/nJ2g/5ydoP+cnaD/mpue/4iJi/9paWr3V1dXt1ZWVrdjZGT3e3t9/42OkP+XmJr/m5ye/5ydn/+c + nZ//nJ2f/5ydn/+cnZ//nJ2f/5ydn/+cnZ//nJ2f/5ydn/+cnZ//m5ye/5ubnv+dnp//pKSl/729vf/h + 4eH/6+vr/9jY2P/AwMH/qaqs/52eoP+cnZ//nJ2f/5ydn/+cnZ//m52f/5qcn/+Ymp//lpqf/5WYnv+V + mZ7/lpmf/5eboP+Zm6D/mpyg/5ucn/+bnJ//m5yf/5ydn/+cnZ//nJ2f/5ydn/+cnZ//nJ2f/5ydn/+c + nZ//nJ2f/5ydn/+cnZ//nJ2f/5ydn/+cnZ//nJ2f/5qbnf+HiIr/aGlp91dXV7dWVla3Y2Rk93t7ff+M + jY//lpeZ/5qbnf+bnJ7/m5ye/5ucnv+bnJ7/m5ye/5ucnv+bnJ7/m5ye/5ucnv+bnJ7/m5ye/5qbnf+Z + mZz/m5ud/6Kio/+6urr/39/f/+np6f/W1tb/vr+//6ipq/+cnZ//m5ye/5ucnv+bnJ7/m5ye/5qcn/+Q + maP/f5Ss/3aSsf91krL/d5Oz/3uUsv+Alq//hpep/4yYpP+TmKD/l5qe/5qbnv+bnJ7/m5ye/5ucnv+b + nJ7/m5ye/5ucnv+bnJ7/m5ye/5ucnv+bnJ7/m5ye/5ucnv+bnJ7/m5ye/5ucnv+Zmpz/h4iJ/2hpafdX + V1e3VlZWt2NjZPd7e3z/jIyP/5WWmf+Zmp3/mpue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+a + m57/mpue/5ubnv+Zmpz/l5ea/5mZm/+hoaH/uLi4/9rb2//i4+X/z9HT/7i7vv+kp6r/mpyf/5qbnv+a + nJ7/m5ye/5ucnv+Xm6D/f5Wt/1SKw/8+h9L/QIrY/0aN2f9NjtX/V5DL/2WQvf90ka//g5Ol/46Xn/+V + mZ7/mZue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+a + m57/mJmc/4aHif9oaGn3V1dXt1ZWVrdjY2T3e3t8/4yMjv+Vlpj/mZqc/5qbnf+am53/mpud/5qbnf+a + m53/mpud/5qbnf+am53/m5ye/5ucnv+cnZ//mpud/5iYmv+ZmZr/n6Cg/62wsv/ByM7/wM3a/6vA0/+Y + sMT/j6Gy/46apv+UnKT/mp6j/56go/+doKT/lJ2o/3GUuP86htT/H4Ln/ySH7/8si/H/NI7u/z+P5P9M + kNX/W5LH/2mVu/93mLH/hJio/4+Zo/+Wmp//mpud/5qbnf+am53/mpud/5qbnf+am53/mpud/5qbnf+a + m53/mpud/5qbnf+am53/mpud/5iZm/+Gh4j/aGhp91dXV7dWVla3Y2Nk93p6e/+Li43/lJWX/5iZm/+a + mpz/mpud/5qbnf+am53/mpud/5qbnf+am53/m5ye/52dn/+fn6H/oKCi/56fof+bm5z/mpqb/52env+d + o6n/mKm5/4iqyf9vpdb/ZJ/T/2uawv94mbX/iJ2w/5ajrv+gp67/naix/42it/9ol8b/Mofc/xuD7f8k + ifT/LY/4/zOS+f85lPX/P5fv/0Sa6f9InuH/VJ3S/2mYvP99l6z/kJqk/5qcn/+bnJ7/mpud/5qbnf+a + m53/mpud/5qbnf+am53/mZqc/5manP+Zmpz/mZqc/5manP+XmJr/hoaI/2hoafdXV1e3VlZWt2NjZPd6 + env/i4uN/5SVl/+Zmpz/m5ye/5ydn/+en6H/n6Ch/6Cho/+hoqT/oqOl/6Skpv+mpqj/p6ep/6ioqv+m + pqj/oaGi/56en/+en6D/lZ6m/4KasP9pmMT/TZnd/0Sa5P9QnNj/X57N/2+jyP98qMX/hazE/4Kqxf9v + ocn/UZXU/ymG4/8ahO//Jov2/zCR+/81lf3/N5j+/zmc/f84oPz/OKX3/0Kj5/9am8v/dZu3/5Khrf+i + pKf/o6Sm/6GipP+goaP/n6Ci/56fof+dnp//m5ye/5qbnf+Zmpz/mZmb/5mZm/+ZmZv/l5eZ/4aGh/9o + aGn3V1dXt1ZWVrdjY2T3enp8/4uLjf+VlZf/m5ud/5+fof+ioqT/pqao/6ipqv+qq63/ra2v/7Cwsv+y + s7X/s7O1/7S0tv+0tLb/sLCy/6ioqf+kpKT/o6Sl/5ihqv+BnLX/ZZrK/0mf5v89o/P/Qqfw/0eq6/9M + ren/UK/l/1Kv4v9NqN//P5ve/y6P4f8chej/GoTw/yaM9/8wkvz/NZb+/zeZ//84nf//OKP//zmq/P9D + qe3/WKLU/3ejwv+brLr/r7K1/7Gxs/+vsLH/q6yt/6ipq/+mp6n/o6Sl/5+gov+dnZ//m5ud/5mZm/+Z + mZv/mZmb/5eXmf+FhYf/aGho91dXV7dZWVm3ZmZm935+gP+RkJL/nJud/6OipP+mpqj/qqmr/62tr/+v + sLH/srK0/7W0tv+3t7n/urm7/7q5u/+6ubv/ubm7/7S0tv+rq6z/qKio/6epqv+bprH/gJ+9/2Oe0v9J + o+3/O6j8/zuu/f86svz/OrX7/zi2+P83tfX/MKvw/ySb7P8bjer/FYTs/xmE8P8mjPf/MJL8/zWW/v83 + mf//OJ3//zmk//87rP3/Ra3w/1il2P94p8j/oLLA/7a4vP+4uLr/tre4/7OztP+wsLL/rq6w/6qrrP+n + p6n/pKSm/6Kho/+fn6H/np6g/5ycnv+ZmZv/hoaH/2hoafdXV1e3XV1dt2xrbPeFhYf/m5qc/6enqf+u + rrD/sLCy/7Kxs/+zsrT/tLS1/7W0tv+2trj/t7e5/7i4uv+4uLr/uLi6/7e3uf+ysrT/qqqr/6ioqf+r + rK7/nKq3/32ixv9fn9r/R6Tw/zup/v86sP//ObX//zq5/v84vf3/N737/y+z9/8iofL/GZHu/xWF7v8a + hPH/J4z3/zCS/P81lv7/N5n//zid//85pP//O639/0St8P9Ypdj/d6bH/5+wvv+1t7r/uLe5/7e2uP+1 + tbf/tLS2/7Oztf+ysrP/sbCy/6+usP+tra//qqqs/6enqf+jo6X/nZ2f/4mJiv9paWr3V1dXt2JiYrdx + cXH3i4uM/6Ggov+tra//s7O1/7W0tv+1tLb/tbS2/7W0tv+1tLb/tbW3/7W1t/+1tbf/tbW3/7W1t/+1 + tLb/sbGy/6qqq/+qqqv/r7Gz/6Cvvf99pcz/XqHf/0el8v87qf7/OrD//zq2//87vP//OsD//znC/v8x + uPr/I6X0/xmT8P8Vhu//GoTx/yeM9/8wkvz/NZb+/zeZ//84nf//OaT//zut/f9ErfD/V6TY/3alxv+d + rrz/srS4/7W1t/+1tbf/tbW2/7W0tv+1tLb/tbS2/7W0tv+0s7X/s7K0/7Cwsv+tra//qamr/6Ojpf+P + j5D/bm5v91tbXbdoaGi3dnZ294+PkP+ioaP/rayu/7Kxs/+zsrT/s7K0/7OytP+zsrT/s7K0/7OytP+z + srT/s7K0/7OytP+zsrT/srK0/7Cwsf+rq6z/ra2u/7O2uP+ks8P/gKnR/1+k4f9HpfT/O6r+/zqw//86 + tv//O7z//zrA//85wv7/MLj6/yKl9P8Yk/D/FYbu/xuE8f8ojPf/MZL8/zWW/v83mf//OJ3//zml//87 + rv3/RK3w/1ak1/91o8X/mqy6/7Cxtf+zsrT/s7K0/7OytP+zsrT/s7K0/7OytP+zsrT/srK0/7KytP+x + sbP/r6+x/66usP+qqqz/l5eY/3V1dvdkZGS3a2trt3h4ePePj5H/oaGj/6urrP+vr7D/sLCx/7Cwsf+w + sLH/sLCx/7Cwsf+wsLH/sLCx/7Cwsf+wsLH/sLCx/7Cwsf+vr7D/ra2t/7Gxsv+4u73/p7jJ/32r1/9b + pOb/Rab1/zuq/v86sP//Orb//zu8//86wP//OcL+/zC4+v8ipPT/GJLw/xWG7v8bhPH/KIz3/zGS/P81 + lv7/N5n//zid//85pf//O679/0St8P9Wo9f/c6LD/5iquP+tr7L/sLCx/7Cwsf+wsLH/sLCx/7Cwsf+w + sLH/sLCx/7Cwsf+wsLH/sLCx/6+vsf+vr7H/ra2v/5ubm/95eXr3aGhpt2lpabd2dnf3jY2P/56eoP+o + qKr/rKyu/62tr/+tra//ra2v/62tr/+tra//ra2v/62tr/+tra//ra2v/62tr/+tra//rq6v/66ur/+1 + tbX/vcDC/6e7z/92q97/U6Ps/0Kl+P86qv7/OrD//zq2//87vP//OsH+/zjB/f8vt/n/IaPz/xiR7/8V + he//G4Ty/yiN+P8xk/z/Npb+/ziZ//85nv//Oab//zuu/f9Ere//VaPW/3Khwv+XqLX/q6yw/62tr/+t + ra//ra2v/62tr/+tra//ra2v/62tr/+tra//ra2v/62tr/+tra//ra2v/6urrf+ampr/enp692lpabdo + aGi3dHR194uLjP+cnJ3/paWn/6mpq/+qqqz/qqqs/6qqrP+qqqz/qqqs/6qqrP+qqqz/qqqs/6qqrP+q + qqz/q6us/62trv+xsbH/urq6/8LFx/+qv9X/c6zk/06j8P9Apfn/Oqr+/zqw//86tv//O7z//zrB/v84 + wf3/L7f5/yGi8/8Yke//FYXv/xuE8v8ojfj/MZP8/zaW/v84mf//OZ7//zmm//87rv3/RK3v/1Wi1f9w + oMH/laaz/6iqrf+qqqz/qqqs/6qqrP+qqqz/qqqs/6qqrP+qqqz/qqqs/6qqrP+qqqz/qqqs/6qqrP+o + qKr/l5eY/3l5efdoaGi3Z2dnt3JycveIiIr/mZmb/6OjpP+np6j/qKip/6ioqf+oqKn/qKip/6ioqf+o + qKn/qKip/6ioqf+oqKn/p6ep/6ioqv+srK7/tbW2/8DAwP/Iys3/rcTa/3Su5/9OpPL/P6b6/zqr/v86 + sf//Orf//zu9//86wP7/N8H9/y62+f8gofP/F5Dv/xaG7/8chfL/KY34/zKT/P82lv7/OJr//zmf//86 + p///O6/9/0St7/9UotX/b56//5Kjsf+mp6r/qKip/6ioqf+oqKn/qKip/6ioqf+oqKn/qKip/6ioqf+o + qKn/qKip/6ioqf+oqKn/pqan/5WVlv93d3f3Z2dnt2RkZLdwcHD3hoaH/5aXmP+goKH/pKSl/6Wlpv+l + pab/paWm/6Wlpv+lpab/paWm/6Wlpv+lpab/paWm/6Skpv+lpaf/q6ut/7m5uv/Gxsb/ztDT/6/H3/9v + ruv/R6L0/z2l+/86q/7/OrH//zq3//87vf//OsD+/zfB/f8utvn/IKDz/xeP7/8Whu//HIXy/ymN+P8y + k/z/Npb+/zia//85n///Oqf//zuv/f9Ere//U6HU/22dvv+Qoa//o6Sn/6Wlpv+lpab/paWm/6Wlpv+l + pab/paWm/6Wlpv+lpab/paWm/6Wlpv+lpab/paWm/6OjpP+SkpP/dXV192RkZLdiYmK3bm5u94OEhP+U + lJX/nZ2f/6Gho/+ioqT/oqKk/6KipP+ioqT/oqKk/6KipP+ioqT/oqKk/6KipP+hoaP/oqKk/6urrf+9 + vb7/zMzM/9PW2f+vyuX/Zavw/zye+P84o/z/Oav//zqx//86t///O73//zrB/v83wf3/LrX5/x+g8v8W + j+//Fobv/x2G8v8qjvf/M5P7/zaW/f84mv//OZ///zqn//87sP3/Q63u/1Oh0/9snL3/jZ6s/6Cipf+i + oqT/oqKk/6KipP+ioqT/oqKk/6KipP+ioqT/oqKk/6KipP+ioqT/oqKk/6KipP+goKL/j4+R/3Jyc/di + YmK3YWFht2xsbPeBgoL/kZKT/5qanP+enqD/n5+h/5+fof+fn6H/n5+h/5+fof+fn6H/n5+h/5+fof+f + n6H/nZ2f/56eoP+rq6z/w8PE/9XV1f/a3eD/sM3q/2Cq9P81nPr/NaL9/zmr//86sf//Orf//zu9//86 + wf7/N8H9/y61+f8fn/L/F47t/xqG6/8ihez/L4zu/zeS8v83lPf/N5j7/zie/f85p/7/O7D9/0Ot7v9S + oNL/a5q7/4ucqv+dn6L/n5+h/5+fof+fn6H/n5+h/5+fof+fn6H/n5+h/5+fof+fn6H/n5+h/5+fof+f + n6H/nZ2f/42Njv9wcHH3YWFht15eXrdqamv3f3+A/46PkP+XmJn/m5yd/5ycnv+cnJ7/nJye/5ycnv+c + nJ7/nJye/5ycnv+cnJ7/nJye/5qanP+ampz/rKyt/8zMzP/g4OH/4eTo/7PR7v9grPX/NJz6/zWj/f85 + rP//OrL//zq4//87vv//OsH+/zbA/f8ttPn/Hp7y/xmN6v8hheT/LIXf/zuK3P9Bj+D/PJDq/zmV8v84 + nPf/Oqb7/zuv+/9ErO3/Up/R/2qZuv+Imqf/mpyf/5ycnv+cnJ7/nJye/5ycnv+cnJ7/nJye/5ycnv+c + nJ7/nJye/5ycnv+cnJ7/nJye/5qanP+Kiov/b29v915eXrddXV23aGhp9319fv+MjI3/lJWW/5iZmv+Z + mZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+Xl5n/l5eZ/62trf/T1NT/5ujq/93m7v+t + 0PL/X633/zad+/82pP3/Oaz//zqy//86uP//O77//zrB/v82wP3/LbT5/x6d8f8ejeb/LYbZ/z+Gzf9S + isb/WY/H/1SQ0P9Ok9j/Spjg/0eg5/9EqOz/Sabi/1Wcy/9rlrb/h5ek/5eZnP+ZmZv/mZmb/5mZm/+Z + mZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+Xl5n/h4eJ/21tbfddXV23W1tbt2ZmZvd6 + env/iYqL/5KSlP+Wlpj/lpaY/5aWmP+Wlpj/lpaY/5aWmP+Wlpj/lpaY/5aWmP+Wlpj/lJSW/5WVlv+t + ra7/2NnZ/+bs8f/S4vL/ocrz/16s9/86nvr/OKT8/zqr/v86sf7/Orf+/zu+//85wf7/Nr/8/yyz+P8f + nfD/JY3g/z6Iy/9ZiLn/cI6t/3ySqf96kqz/dJKy/2uTuf9glsP/VZvP/1Sbzv9dlsD/cJSw/4eVof+U + lpj/lpaY/5aWmP+Wlpj/lpaY/5aWmP+Wlpj/lpaY/5aWmP+Wlpj/lpaY/5aWmP+Wlpj/lJSW/4WFhv9q + amv3W1tbt1lZWbdkZGT3d3d5/4aHiP+Pj5H/k5OV/5OTlf+Tk5X/k5OV/5OTlf+Tk5X/k5OV/5OTlf+T + k5X/k5OV/5GRk/+Tk5T/ra2t/9ra2//n7PL/zt7u/6HE6P9op+X/R5rm/0Ge6/8+pfL/O6z3/zmz+v85 + u/3/OL/9/zW+/P8ssvj/H5zv/yeM3v9GiMT/ZYmu/4COn/+Okpf/j5KX/4qRmv+Bj5//dZCo/2qTtP9n + k7b/bJKw/3mRpv+Jkpv/kpOV/5OTlf+Tk5X/k5OV/5OTlf+Tk5X/k5OV/5OTlf+Tk5X/k5OV/5OTlf+T + k5X/k5OV/5GRk/+CgoP/aGhp91lZWrdXV1e3YWFj93V1dv+EhIX/jIyO/5CQkv+QkJL/kJCS/5CQkv+Q + kJL/kJCS/5CQkv+QkJL/kJCS/5CQkv+Pj5D/kJCR/6mpqv/W1tf/5efq/9HY3/+svdD/fZ/C/12RwP9R + lM3/Rprb/z6i5/86qvD/ObT2/ze6+f82u/n/LbD1/yGa7f8oi9z/RYfC/2SHrP9/jJv/jpCS/4+Qkv+N + j5P/io6V/4WOmP+Aj53/f5Ce/4GPnP+Gj5j/jI+U/4+Qkv+QkJL/kJCS/5CQkv+QkJL/kJCS/5CQkv+Q + kJL/kJCS/5CQkv+QkJL/kJCS/5CQkv+OjpD/f3+B/2ZmZ/dXV1e3VlZWt15eYfdycnT/gYGC/4mJi/+N + jY//jY2P/42Nj/+NjY//jY2P/42Nj/+NjY//jY2P/42Nj/+NjY//jIyO/42Njv+goKH/wcHC/83Nzv/A + wsP/qK20/4iWpf9xi6T/ZYyw/1qRvv9Sl8n/TJ7T/0mm2/9Gq9//Q6zh/zyk3/8yk9n/OonL/1KGtf9r + h6P/gIqW/4uNj/+MjY//jIyP/4yMj/+LjI//i4yQ/4uNkP+LjJD/i4yP/4yMj/+MjY//jY2P/42Nj/+N + jY//jY2P/42Nj/+NjY//jY2P/42Nj/+NjY//jY2P/42Nj/+NjY//i4uN/319fv9kZGX3VlZWt1NTU7dd + XV33cHBx/35+gP+FhYf/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+K + iov/kJCS/52dnv+ioqL/nZ2e/5SWmP+IjJP/f4mT/3qJmP92i53/co2i/22QqP9okq7/YZOz/1yTt/9W + j7j/U4m1/1uGrP9thp7/fIeU/4WJj/+JiYz/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+J + iYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4eHif96 + env/YmJj91NTVLdSUlK3W1tb921tbv97e33/goKE/4aGiP+Ghoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+G + hoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+IiIn/iIiJ/4eHiP+Hh4j/hYaI/4WGif+Fhor/hIaK/4OHi/+A + ho3/e4aR/3SFlf9vhJn/bIOb/2uCmv9yg5b/fYWO/4SGiv+Ghon/hoaI/4aGiP+Ghoj/hoaI/4aGiP+G + hoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+Ghoj/hoaI/4aGiP+G + hoj/hoaI/4aGiP+EhIb/d3d4/2BgYfdSUlO3UFBQt1lZWvdra2z/eHh6/39/gf+Dg4X/g4OF/4ODhf+D + g4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Cg4X/goOE/4KChP+CgoT/goOE/4KDhf+D + g4X/g4OF/4ODhf+Cg4X/gYOG/3+Ch/99gon/eoGK/3mBi/95gYv/fIKJ/4CChv+Cg4X/g4OF/4ODhf+D + g4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+D + g4X/g4OF/4ODhf+Dg4X/g4OF/4ODhf+Dg4X/gICC/3N0df9cXF33UFBQt05OTrdXV1j3aGhp/3V1d/98 + fH7/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agf9/ + f4H/f3+B/3+Agf9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/f4L/f3+C/35/gv9+f4L/fn+C/35/gv9/ + f4L/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/ + gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/f4CC/3+Agv9/gIL/fn6A/3p7fP9ubnD/WVla905OT7dM + TEy3VFRV92VlZ/9ycnT/eXl7/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98 + fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98 + fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98 + fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/fHx+/3x8fv98fH7/e3x+/3h5e/9y + cnT/ZWZn/lVVVvVMTE21SUlJt1JSU/djY2T/b29x/3Z2eP95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95 + eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95 + eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95 + eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/95eXv/eXl7/3l5e/94 + eXv/d3h6/3V2d/9vcHH/ZmZn/ltcXfdQUVLkTExMpEhISLdQUFH3YGBi/2xsbv9zcnT/dnZ4/3Z2eP92 + dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92 + dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92 + dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92dnj/dnZ4/3Z2eP92 + dnj/dnZ4/3Z2eP91dnj/dHV3/3FydP9sbG3/Y2Nj/ldYWPtQUVHoTU1Nw0tLS4RFRUe3Tk5P915dX/9p + aWv/cG9x/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9z + cnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9z + cnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/c3J0/3NydP9z + cnT/c3J0/3NydP9zcnT/c3J0/3NydP9zcnT/cXFz/25ucP9paWv/YWFi/lhYWfdQUFDoSkpKxklJSZFL + S0tYREREt0xMTfdbW1z/ZmZn/2xsbv9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9v + b3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9v + b3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9v + b3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/29vcf9vb3H/b29x/2xsbv9mZmj/X15g/ldWWPtS + UlLoTk5OxU1NTZFKSkpSTU1NJEJCQrdKSkv3WVhZ/2NjZP9paWr/bGxt/2xsbf9sbG3/bGxt/2xsbf9s + bG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9s + bG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9s + bG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/a2ts/2ppa/9m + ZWf/X15f/ldXWPdSUVPoTk5Pxk9PT5FQUFBZS0tLJUhISAdBQUG3SEhJ91dWV/9hYGH/Z2Zo/2pqa/9q + amv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9q + amv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9q + amv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9qamv/ampr/2pqa/9q + aWv/aWlq/2dnaP9jY2T/Xl5f/lhXWPtUU1ToUlFSxVBQUJFQUFBSVFRUJE5OTg3///8BQUFBt0lJSfdX + Vlf/Y2Jj/2tra/9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9v + b3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9v + b3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9v + b3D/b29w/29vcP9vb3D/bm5v/2trbP9mZmf/Xl5f/llZWfdUVFToUlJSxlJSUpFTU1NZUlJSJW1tbQcA + AAABAAAAAENDRbVKSkv1Wlla/mhnaP9zc3T/enp6/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96 + env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96 + env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96env/enp7/3p6e/96 + env/enp7/3p6e/96env/enp7/3p6e/96env/enp6/3d3d/9xcXH/Z2dn/l1dXflWVlfnU1NTxFJSUpFT + U1NSVFRUJE5OTg3///8BAAAAAAAAAABHR0mkTk5O5FlZWvdlZWX+b29v/3V1df92dnb/dnZ2/3Z2dv92 + dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92 + dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92 + dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3Z2dv92dnb/dnZ2/3V1df9ycnL/a2tr/mRkZPJa + WlvcVFRUulNTU4xUVFRYUlJSJW1tbQcAAAABAAAAAAAAAAAAAAAATU1NhFBQUcJWVlfkWlpb9V5eXvdi + YmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdi + YmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdi + YmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdiYmL3YmJi92JiYvdi + YmL3YGBg915eXvRaWlrYV1dXplZWVnNUVFRFUFBQI05OTg3///8BAAAAAAAAAAAAAAAAAAAAAFNTU1ZT + U1OEU1NTpVRUVLVWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdW + Vla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdW + Vla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdW + Vla3VlZWt1ZWVrdWVla3VlZWt1ZWVrdUVFS0VVVVmFRUVGdXV1c6VVVVGFVVVQYAAAABAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAAHAAAAAAAAAA8AAAAAAAAAHygAAAAwAAAAYAAAAAEAIAAA + AAAAgCUAAAAAAAAAAAAAAAAAAAAAAABTU1NoVVVVpFZWVsJZWVnFWlpaxVpaWsVaWlrFWlpaxVpaWsVa + WlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVa + WlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVaWlrFWlpaxVpaWsVa + WlrFWlpaxVpaWsVaWlrFWlpaxVlZWsVYWFjDVlZWrlVVVXdWVlajYGBg521tbvx6enz/fn+B/35/gf9+ + f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+ + f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+ + f4H/fn+B/35/gf9+f4H/fn+B/35/gf9+f4H/fn+B/3x8fv9zdHX9ZGRl7lZWVq5XV1fDa2ts/IaHif+d + naH/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Gipv+UlZj/c3R1/VhZWcJY + WFjHcnJ0/5GSlf+io6f/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6eorP+g + oaX/e3x9/1paWsVYWFjHdHR2/5OUl/+io6f/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+io6f/fX6A/1paWsVYWFjHc3R2/5OUl/+io6f/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+io6f/fX1//1paWsVYWFjHc3N1/5KTlv+hoqX/pqeq/6anqv+m + p6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+m + p6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+m + p6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+hoqX/fH1+/1laWsVYWFjHc3N1/5KSlf+g + oaT/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paWp/6SlqP+l + pan/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+l + pqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+lpqn/paap/6Wmqf+goaT/fH1+/1laWsVY + WFjHcnN0/5KSlf+goaT/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6SlqP+l + pan/rKyv/7GxtP+srLD/p6er/6WlqP+kpaj/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+l + pan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+g + oKT/fHx+/1lZWsVYWFjHcnJz/5CRk/+foKL/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Ojp/+kpKj/wcHD/9bW1//ExMX/r6+x/6Ojpv+jo6f/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Okp/+fn6L/e3t9/1lZWsVYWFjHcnJz/4+Qkv+en6H/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kipf+lpaf/zMzN/+jo6P/Q0ND/srO0/6GipP+hoqX/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+en6H/e3t9/1lZWsVYWFjHcXJz/4+Qkv+en6H/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kipf+lpqf/zs7P/+vr6//U1NT/s7S1/5+gov+g + oaT/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+en6H/ent8/1lZWcVYWFjHcXFy/46Pkf+d + naD/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+lpqf/zs7P/+vr6//U + 1NT/s7O0/56fof+foKP/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+h + oaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+dnZ//enp7/1lZWcVY + WFjHcXFy/42OkP+cnJ//oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6GipP+p + qqv/0dHS/+vr6//U1NT/tLS1/5+gov+foKL/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+g + oKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+goKP/oKCj/6Cgo/+c + nJ//enp7/1lZWcVYWFjHcHFy/42OkP+bnJ//n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/6Gipf+trq//1NTV/+zs7P/U1NT/tbW2/6GhpP+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+bnJ//eXl7/1lZWcVYWFjHcHBx/42Nj/+am57/np+i/56fov+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/6ChpP+rrKz/09PT/+zs7P/U1NT/tbW3/6ChpP+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+am57/eHl6/1lZWcVYWFjHcHBx/4yMjv+Zmp3/nZ6h/52eof+d + nqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/6Chov+rrKz/09PT/+zs7P/U1NT/tLW2/6Cgo/+d + nqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+d + nqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/nZ6h/52eof+Zmp3/eHl6/1lZWcVYWFjHb3Bx/4uMjv+Z + mpz/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nJ2f/5+gof+qq6v/09PT/+zs7P/U + 1NT/tLW2/6Cgov+dnqD/nZ6g/52eoP+dnqD/nJ2g/5ydn/+cnZ//nJ2f/5ydn/+dnaD/nZ6g/52eoP+d + nqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+Zmpz/eHh5/1lZWcVX + WFjHb29w/4qLjf+XmJv/m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5ud/5ycn/+m + p6f/0NDQ/+zs7P/U1NT/s7S1/56fof+bnJ//m5yf/5ucn/+bnJ//l5ug/5OZof+SmKD/k5mh/5Waof+Y + m6D/mZyg/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+X + mJv/d3d5/1lZWcVXWFjHb29w/4qKjP+Wl5r/mpue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+a + m57/mZmb/5manP+kpKX/zc3N/+jo6P/R0dH/sbKz/52eoP+am57/mpue/5qbnv+Xm6D/eJOw/1yNwP9c + jsX/YpHE/2uTvf95k7D/h5Wk/5OYnv+Zm57/mpue/5qbnv+am57/mpue/5qbnv+am57/mpue/5qbnv+a + m57/mpue/5qbnv+Wl5r/d3d5/1lZWcVXV1jHb29w/4qKjP+Wl5n/mpud/5qbnf+am53/mpud/5qbnf+a + m53/mpud/5ucnv+cnJ7/mZmb/5iZmv+hoaP/vcDD/8nT2/+vwdD/maq5/5Gbpv+WnKL/nJ6i/52fov+R + nKj/Vo3F/ySC4/8oiO3/M43t/z+P4v9TkM7/Z5O7/3qXrv+JmKX/lJqg/5qbnv+am53/mpud/5qbnf+a + m53/mpud/5qbnf+am53/mpud/5qbnf+Wl5n/dnd4/1lZWcVXV1jHbm5v/4mJi/+Vlpj/mZqc/5qbnf+a + m53/mpud/5ucnv+bnJ7/nZ2f/5+gov+hoaP/nZ2f/5qam/+dnZ//mKOv/4SmxP9kodj/YJvO/3GYuv+I + n7L/mqaw/52ps/+Fobv/So7T/xyC6/8mivb/MZL6/ziV+P8/mPH/Q57q/06e2v9ol7z/h5mo/5qdoP+b + nJ7/m5ye/5qbnf+am53/mpud/5manP+Zmpz/mZqc/5manP+Vlpj/dnZ3/1lZWcVXV1jHbm5v/4iIiv+V + lZf/m5ye/56fof+hoqT/pKWm/6anqf+pqqz/rKyu/62tr/+urrD/p6eo/6Ghof+foaP/jJus/2mYwf9G + m+X/Qp/p/1Gj3f9gqdf/a63T/2qq0v9VnNT/MIvg/xqD7v8ojPf/M5T9/zeY//84nf//N6X9/z+n7/9c + nc3/h6K3/6eqrv+pqqv/pqep/6Slpv+hoqT/np+g/5ucnf+Zmpv/mJmb/5iZm/+UlZf/dnZ3/1lZWcVZ + WVnHcXFy/42Nj/+bm53/o6Ol/6inqf+srK7/sLCx/7O0tf+3t7n/ubm7/7m5u/+4uLr/r6+w/6enp/+m + qKr/jqG1/2mdzP9Go/D/O6v9/zyx+/87tPn/OrX0/zSs7v8ll+n/GIfq/xiD7/8ojfj/M5T9/zeY//85 + nv//Oqn//0Kt8/9dpNX/jazC/7O3u/+3t7n/s7S1/7Cwsf+srK7/p6ep/6KjpP+foKH/nZ2f/5ycnv+W + lpj/dnZ3/1lZWcVgYGDHeXl6/5mYmv+qqqz/sbCy/7KytP+0s7X/tbS2/7a2t/+3t7n/uLe5/7i3uf+3 + trj/rq2v/6ioqP+qrbD/jafA/2Sg1v9EpfT/Oq3//zq0//86u/7/OL/8/zG3+P8gn/H/Foru/xiE8P8p + jfj/M5T9/zeY//85nv//Oqn//0Ku8/9co9X/jKvB/7O2uv+3t7j/tra3/7W0tv+0s7X/srKz/7Cwsv+u + rrD/qqqs/6Wlp/+bm53/eHh5/1paWsVnZ2fHgICB/5+eoP+vr7H/tLS2/7S0tv+0tLb/tLS2/7S0tv+0 + tLb/tLS2/7S0tv+0s7X/rayu/6urq/+ws7b/kKzH/2Oi3P9EpvX/Oq3//zq1//87vf//OsL+/zK7+/8h + ofP/Fovu/xiE8P8pjfj/M5T9/zeY//85nv//Oqn//0Ku8/9bo9T/iqm//6+zt/+0tLb/tLS2/7S0tv+0 + tLb/tLS2/7S0tv+zs7X/sLCy/6ysrv+kpKb/gYGC/2FhYsVsbGzHhISF/5+fof+srK7/sLCy/7Cwsv+w + sLL/sLCy/7Cwsv+wsLL/sLCy/7Cwsv+wsLH/ra2u/6+vsP+3ur7/krHP/2Gk4v9Dp/f/Oq3//zq1//87 + vf//OsL+/zK7+/8goPP/FYvu/xmE8P8qjfj/NJT9/zeY//85nv//Oqr//0Ku8/9ao9P/iKa9/6uvs/+w + sLL/sLCy/7Cwsv+wsLL/sLCy/7Cwsv+wsLL/sLCy/6+vsf+rq63/iYmK/2hoasVra2vHgoKD/5ycnv+p + qar/ra2u/62trv+tra7/ra2u/62trv+tra7/ra2u/62trv+tra7/rq6u/7S0tP+9wcX/jrTY/1aj6/9A + pvr/Oq3//zq1//87vf//OcL+/zG5+v8fn/L/FYru/xqE8f8qjvn/NJX+/ziZ//85n///Oqv//0Ku8v9Z + odL/haS6/6msr/+tra7/ra2u/62trv+tra7/ra2u/62trv+tra7/ra2u/62trv+pqar/iYmJ/2trbMVp + aWnHf3+A/5mZmv+lpaf/qamr/6mpq/+pqav/qamr/6mpq/+pqav/qamr/6mpq/+qqqv/sLCw/7u7u//D + x8z/j7fe/1Kj7/8+pvv/Oq3//zq1//87vf//OcL+/zG4+v8fnvL/FYnu/xqE8f8qjvn/NJX+/ziZ//85 + n///Oqv//0Ku8v9YoNH/g6K4/6WorP+pqav/qamr/6mpq/+pqav/qamr/6mpq/+pqav/qamr/6mpq/+l + paf/h4eH/2pqasVmZmbHe3t8/5WVlv+hoaP/paWn/6Wlp/+lpaf/paWn/6Wlp/+lpaf/paWn/6Wlp/+m + pqj/srKz/8PDxP/Kz9T/kLrk/02j8/89pvz/Oq7//zq2//87vv//OcL+/zC4+v8enfL/FYnu/xuE8f8r + jvn/NZX+/ziZ//85oP//Oqz//0Ku8v9XoND/gJ+1/6Gkqf+lpaf/paWn/6Wlp/+lpaf/paWn/6Wlp/+l + paf/paWn/6Wlp/+hoaP/g4OE/2dnZ8VjY2PHeHl5/5GSk/+dnZ//oaGj/6Gho/+hoaP/oaGj/6Gho/+h + oaP/oaGj/6Gho/+ioqT/tLS1/8zMzP/R1tz/iLrs/z2d9/84pf3/Oq7//zq2//87vv//OcL+/zC4+v8d + nPH/FYnu/xyF8P8sjvf/NpX8/ziZ/v85oP//Oqz//0Gv8f9Wn87/fp2z/52hpf+hoaP/oaGj/6Gho/+h + oaP/oaGj/6Gho/+hoaP/oaGj/6Gho/+dnZ//gICB/2RkZMVhYWHHdXZ2/46PkP+Zmpv/nZ2f/52dn/+d + nZ//nZ2f/52dn/+dnZ//nZ2f/52dnv+enp//ubm6/9nZ2f/Z3+X/h7zw/zec+f82pP7/Oq7//zq2//87 + vv//OcL+/zC3+v8cm/D/GYjq/ySE5v81jOf/OpHu/ziW9/84n/z/Oaz+/0Gu8f9Wns3/e5qw/5mdof+d + nZ//nZ2f/52dn/+dnZ//nZ2f/52dn/+dnZ//nZ2f/52dn/+ampv/fX1+/2JiYsVeXl7HcnNz/4qLjP+V + lpf/mZmb/5mZm/+ZmZv/mZmb/5mZm/+ZmZv/mZmb/5iYmf+ampv/wMDA/+Tl5//Z4+7/hr30/zme+/82 + pf7/Oq///zq3//86vv//OML+/y+3+v8dmu//I4jh/zmF0v9Pi8r/UY/Q/0qS3P9Gmub/Qqbu/0ao5/9Y + m8n/epes/5WZnf+ZmZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+ZmZv/mZmb/5mZm/+Wlpf/enp6/19fX8Vc + XFzHcHBw/4eHiP+SkpP/lZWX/5WVl/+VlZf/lZWX/5WVl/+VlZf/lZWX/5SUlv+Xl5j/xMTE/+fr8P/K + 3fL/fbn0/z+f+P85pPv/Oq79/zq2/v86vf//OMH9/y61+f8eme7/MonU/1iIuf93j6j/gJKm/3qSrP9t + krX/XZjF/1aay/9ilLv/fJSn/5KVmf+VlZf/lZWX/5WVl/+VlZf/lZWX/5WVl/+VlZf/lZWX/5WVl/+S + kpT/d3d4/11dXcVZWVnHbW1t/4ODhf+OjpD/kZGT/5GRk/+RkZP/kZGT/5GRk/+RkZP/kZGT/5CQkv+U + lJX/xMTE/+fr7v/K2Ob/i7HY/1WX1P9GmuD/PqTs/zmu9v83ufz/N7/8/y60+f8emO3/NYnQ/2CIr/+F + j5r/kZGT/46Qlf+Fjpr/eZCk/3ORqv94kKX/hZGb/5CRlP+RkZP/kZGT/5GRk/+RkZP/kZGT/5GRk/+R + kZP/kZGT/5GRk/+OjpD/dHR1/1paWsVXV1fHaWlq/39/gf+Kioz/jY2P/42Nj/+NjY//jY2P/42Nj/+N + jY//jY2P/4yMjv+QkJH/tbW1/9LT0//Bw8b/l6Ow/3GMp/9fjrj/UZbK/0if2P9EqeL/QrDn/zqp5f8t + ktz/QofE/2WHqP+Di5X/jY2P/42Nj/+MjZD/io2R/4qNkv+KjZH/jI2Q/42Nj/+NjY//jY2P/42Nj/+N + jY//jY2P/42Nj/+NjY//jY2P/42Nj/+Kioz/cHBx/1hYWMVUVFXHZ2dn/3x8ff+Ghoj/iYmL/4mJi/+J + iYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+Kioz/lJSV/5ycnf+Xl5n/jI+T/4KJkf98iZb/eIub/3KNof9q + j6n/YZCw/1uNsv9Yh6//aIWi/3yHk/+GiY3/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+J + iYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+JiYv/iYmL/4mJi/+Ghoj/bW1u/1VVVsVSUlPHZGRk/3h4ef+C + goT/hYWH/4WFh/+FhYf/hYWH/4WFh/+FhYf/hYWH/4WFh/+FhYf/hISG/4SEhf+EhIX/hISG/4WFh/+F + hYf/hYWH/4OEiP99g4v/d4KP/3OBkf90gZH/fIOM/4SFh/+FhYf/hYWH/4WFh/+FhYf/hYWH/4WFh/+F + hYf/hYWH/4WFh/+FhYf/hYWH/4WFh/+FhYf/hYWH/4WFh/+FhYf/hYWH/4WFh/+CgoT/ampr/1JSVMVP + T1DHYGBh/3R0df99fX//gICC/4CAgv+AgIL/gICC/4CAgv+AgIL/gICC/4CAgv+AgIL/gICC/4CAgv+A + gIL/gICC/4CAgv+AgIL/gICC/4CAgv9/gIP/foCD/36Ag/9+gIP/f4CD/4CAgv+AgIL/gICC/4CAgv+A + gIL/gICC/4CAgv+AgIL/gICC/4CAgv+AgIL/gICC/4CAgv+AgIL/gICC/4CAgv+AgIL/gICC/39/gf96 + e33/ZGRl/05OUMVMTE7HXV1e/3Bwcv94eXv/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97 + fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97 + fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97fH7/e3x+/3t8fv97 + fH7/e3t9/3h5ev9ub3H/XFxd/ExMTcFKSkvHWlpb/2xsbv90dXf/d3h6/3d4ev93eHr/d3h6/3d4ev93 + eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93 + eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93eHr/d3h6/3d4ev93 + eHr/d3h6/3d4ev93d3n/c3N1/2trbP9cXV79UlJS50tLTKNHR0nHVlZX/2hoav9wcHL/c3N1/3Nzdf9z + c3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9z + c3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9zc3X/c3N1/3Nzdf9z + c3X/c3N1/3Nzdf9zc3X/c3N1/3JydP9vb3H/Z2dp/1tbW/pPT0/pSkpKtUpKSmpFRUbHVFNV/2VkZv9t + bG7/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9v + bnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/29ucP9v + bnD/b25w/29ucP9vbnD/b25w/29ucP9vbnD/b25w/2trbf9kZGX/WVla/FJSUuhOTk+2TExMZ1BQUCNC + QkPHUVBR/2FgYv9paGr/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9r + amz/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9r + amz/a2ps/2tqbP9ramz/a2ps/2tqbP9ramz/a2ps/2tqbP9qamv/aGhp/2NiZP9aWVr9U1JT51BQULVO + TlBoUlJSKGZmZgVCQULHUE9Q/2FgYf9ra2v/bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/25ub/9u + bm//bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/25ub/9u + bm//bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/25ub/9ubm//bm5v/21tbv9qaWr/Y2Nk/1paW/pV + VFXpU1FTtVJSUmxQUFAjPz8/BAAAAAFFQ0XDUlJT/GVlZv91dXb/e3t7/3t7e/97e3v/e3t7/3t7e/97 + e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97 + e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3t7e/97e3v/e3t7/3h4eP9v + b2//YmJi+1ZWVuZTU1O1VFRUZ1dXVyM/Pz8IAAAAAAAAAABKSkulU1NU6F5eXv1paWn/bGxs/2xsbP9s + bGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9s + bGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9sbGz/bGxs/2xsbP9s + bGz/bGxs/2pqav9kZGT7XV1d11RUVJ9UVFRhUlJSKGZmZgUAAAAAAAAAAAAAAABQUFBpU1NTpVRUVMNX + V1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dX + V1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dX + V1fHV1dXx1dXV8dXV1fHV1dXx1dXV8dWVlbAV1dXjFdXV0lRUVEZPz8/BAAAAAEAAAAAAAAAAAAAAAAA + AAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAA + AFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cA + AAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAA + AFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cA + AAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAA + AFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cAAAAAAABXVwAAAAAAAFdXAAAAAAAAV1cA + AAAAAANXVwAAAAAAB1dXAAAAAAAHV1coAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAA + AAAAU1NTn1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9U + VFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9U + VFT/VFRU/1RUVL9UVFT/f3+B/6qrr/+qq6//qquv/6qrr/+qq6//qquv/6qrr/+qq6//qquv/6qrr/+q + q6//qquv/6qrr/+qq6//qquv/6qrr/+qq6//qquv/6qrr/+qq6//qquv/6qrr/+qq6//qquv/6qrr/+q + q6//qquv/6qrr/+UlZj/VFRU/1RUVP+TlJf/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6iprf+oqa3/qKmt/6iprf9UVFT/VFRU/5KTlv+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/6eorP+n + qKz/p6is/6eorP+nqKz/p6is/6eorP+nqKz/p6is/1RUVP9UVFT/kZKV/6anqv+mp6r/pqeq/6anqv+m + p6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+m + p6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/pqeq/6anqv+mp6r/VFRU/1RUVP+QkZP/paWp/6Wlqf+l + pan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/oaKl/6Ojp/+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+l + pan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf+lpan/paWp/6Wlqf9UVFT/VFRU/4+Qkv+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/56eof/09PT/xMTF/6Cgo/+jpKf/o6Sn/6Okp/+j + pKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/6Okp/+jpKf/o6Sn/1RUVP9U + VFT/jo+R/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oKCi//v7+//MzMz/m5ye/6Kjpv+i + o6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+io6b/oqOm/6Kjpv+i + o6b/VFRU/1RUVP+NjpD/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+en6D/+/v7/8zMzP+a + m53/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+hoaT/oaGk/6GhpP+h + oaT/oaGk/6GhpP9UVFT/VFRU/4yNj/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/66ur//7 + +/v/zMzM/56eof+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+foKP/n6Cj/5+go/+f + oKP/n6Cj/5+go/+foKP/n6Cj/1RUVP9UVFT/jIyO/56fov+en6L/np+i/56fov+en6L/np+i/56fov+e + n6L/qKio//v7+//MzMz/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+en6L/np+i/56fov+e + n6L/np+i/56fov+en6L/np+i/56fov+en6L/VFRU/1RUVP+Ki43/nZ6g/52eoP+dnqD/nZ6g/52eoP+d + nqD/nZ6g/52eoP+rq6v/+/v7/8zMzP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+d + nqD/nZ6g/52eoP+dnqD/nZ6g/52eoP+dnqD/nZ6g/52eoP9UVFT/VFRU/4mKjP+bnJ//m5yf/5ucn/+b + nJ//m5yf/5ucn/+bnJ//mZmc/6Kiov/7+/v/zMzM/5ucn/+bnJ//m5yf/5ucn/+amp3/lpaZ/5mZnP+b + nJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/5ucn/+bnJ//m5yf/1RUVP9UVFT/iYmL/5qbnf+a + m53/mpud/5qbnf+am53/mpud/5qbnf+UlJb/oqKi//Pz8//FxcX/mpud/5qbnf+am53/mpud/xN75f8i + iPX/M4vp/1uKuv+KkZr/mpud/5qbnf+am53/mpud/5qbnf+am53/mpud/5qbnf+am53/VFRU/1RUVP+I + iIr/mZqc/5manP+Zmpz/mZqc/5manP+enqD/o6Ol/5mZmv+dnZ3/dZKu/zSU6f9fkr7/kqGw/7Gxsv+G + o8H/D33s/y6Q+v83l///OZ3//y+m+v9kkbb/m5ye/5manP+Zmpz/mZqc/5manP+Zmpz/mZqc/5manP9U + VFT/VFRU/4eHif+YmJr/o6Ol/6ysrv+ys7T/vLy+/7y8vv+8vL7/p6en/6ioqP92mbv/Oab//zqy//80 + tPz/Ma7x/xqN5/8Qfuz/LpH7/zeX//85nv//OrP//2Gfy/+8vL7/ubq7/7Cxsv+pqqv/np+g/5iYmv+Y + mJr/mJia/1RUVP9dXV3/m5qc/7e2uP+3trj/t7a4/7e2uP+3trj/t7a4/7e2uP+jo6T/s7Oz/2ed0v85 + pv//OrP//zu///85xv7/G5rx/xF+7f8vkfv/N5f//zme//86tP//X53K/7e2uP+3trj/t7a4/7e2uP+3 + trj/tLS2/6qqrP+enqD/VFRU/2pqav+fn6H/sbGz/7Gxs/+xsbP/sbGz/7Gxs/+xsbP/sbGz/6mpqv+/ + v7//baPY/zmn//86s///O7///znF/v8ZmPD/En7t/zCR+/83l///OZ///zq1//9dnMj/sbGz/7Gxs/+x + sbP/sbGz/7Gxs/+xsbP/sbGz/7Gxs/9lZWb/Z2dn/5qanP+srK3/rKyt/6ysrf+srK3/rKyt/6ysrf+s + rK3/r6+v/8vLy/9Pnuv/Oaf//zqz//87wP//OMT9/xiW7/8Tfu7/MJL8/ziX//85oP//OrX//1yax/+s + rK3/rKyt/6ysrf+srK3/rKyt/6ysrf+srK3/rKyt/2dnZ/9jY2P/lZWW/6amqP+mpqj/pqao/6amqP+m + pqj/pqao/6amqP+9vb3/1tbW/1Kh7v85qP//OrT//zvA//83w/3/F5Tv/xR/7v8xkvz/OJf//zmh//87 + tv//WpnF/6amqP+mpqj/pqao/6amqP+mpqj/pqao/6amqP+mpqj/Y2Nj/19fX/+PkJH/oKCi/6Cgov+g + oKL/oKCi/6Cgov+goKL/np6g/8rKyv/i4uL/KpL5/zmo//86tP//O8H//zfD/f8Vku7/FYDv/zGT/P84 + l///OaH//zu3//9Yl8P/oKCi/6Cgov+goKL/oKCi/6Cgov+goKL/oKCi/6Cgov9fX1//XFxc/4qLjP+a + mpz/mpqc/5qanP+ampz/mpqc/5qanP+UlJX/6Ojo/+3t7f8qk/n/Oan//zq1//87wf//NsL9/xSQ7v8n + gNz/SYvQ/zaO7P81oP3/O7f//1eWwf+ampz/mpqc/5qanP+ampz/mpqc/5qanP+ampz/mpqc/1xcXP9Y + WFj/hYWG/5SUlv+UlJb/lJSW/5SUlv+UlJb/lJSW/4+PkP/7+/v/u9f0/zWa/f85qf//OrX//zvB//81 + wfz/E47t/1yGsv+UlJb/lJSW/3iNpP9Slsr/ZJG2/5SUlv+UlJb/lJSW/5SUlv+UlJb/lJSW/5SUlv+U + lJb/WFhY/1RUVf9/f4H/jo6Q/46OkP+OjpD/jo6Q/46OkP+OjpD/i4uM//f39//Q0ND/cIad/0+Px/82 + oOr/NLj8/zXA/P8SjO3/UYO2/46OkP+OjpD/jo6Q/46OkP+OjpD/jo6Q/46OkP+OjpD/jo6Q/46OkP+O + jpD/jo6Q/46OkP9UVFX/UVFR/3p6e/+IiIr/iIiK/4iIiv+IiIr/iIiK/4iIiv+IiIr/hoaH/4aGh/+I + iIr/iIiK/4iIiv92hZX/ZYKg/2WCoP+IiIr/iIiK/4iIiv+IiIr/iIiK/4iIiv+IiIr/iIiK/4iIiv+I + iIr/iIiK/4iIiv+IiIr/iIiK/1FRUf9NTU7/dHR1/4GBg/+BgYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+B + gYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+B + gYP/gYGD/4GBg/+BgYP/gYGD/4GBg/+BgYP/TU1O/0lJSv9ubnD/ent9/3p7ff96e33/ent9/3p7ff96 + e33/ent9/3p7ff96e33/ent9/3p7ff96e33/ent9/3p7ff96e33/ent9/3p7ff96e33/ent9/3p7ff96 + e33/ent9/3p7ff96e33/ent9/3p7ff96e33/ent9/2tsbf9JSUr/RkZG/2hoav90dHb/dHR2/3R0dv90 + dHb/dHR2/3R0dv90dHb/dHR2/3R0dv90dHb/dHR2/3R0dv90dHb/dHR2/3R0dv90dHb/dHR2/3R0dv90 + dHb/dHR2/3R0dv90dHb/dHR2/3R0dv90dHb/dHR2/3R0dv9jY2T/R0dH/0tLS59CQkP/Y2Jk/25tb/9u + bW//bm1v/25tb/9ubW//bm1v/25tb/9ubW//bm1v/25tb/9ubW//bm1v/25tb/9ubW//bm1v/25tb/9u + bW//bm1v/25tb/9ubW//bm1v/25tb/9ubW//bm1v/25tb/9ubW//Xl1f/0tLTP9RUVGfAAAAAD8+P/9d + XF3/Z2do/2dnaP9nZ2j/Z2do/2dnaP9nZ2j/Z2do/2dnaP9nZ2j/Z2do/2dnaP9nZ2j/Z2do/2dnaP9n + Z2j/Z2do/2dnaP9nZ2j/Z2do/2dnaP9nZ2j/Z2do/2dnaP9nZ2j/Z2do/11dXv9SUVL/U1NTnwAAAAAA + AAAAQ0NE/2RkZf+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+E + hIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP9ycnL/VFRU/1NTU58A + AAAAAAAAAAAAAABTU1OfVFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9U + VFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9UVFT/VFRU/1RUVP9V + VVVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAPKAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAA + AAAAAAAAAGdpabaCg4TfhIWI34SFiN+EhYjfhIWI34SFiN+EhYjfhIWI34SFiN+EhYjfhIWI34SFiN+E + hYjfg4SG321tb7p6enzfpKWp/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+oqa3/qKmt/6iprf+o + qa3/qKmt/6eorP+Dg4Xfenp736Okp/+lpqr/paaq/6Wmqf+pqq3/qKis/6Wmqv+lpqr/paaq/6Wmqv+l + pqr/paaq/6Wmqv+lpqr/goOF33l5et+hoaT/o6On/6Ojp/+io6b/wsLD/7e3uf+io6b/o6On/6Ojp/+j + o6f/o6On/6Ojp/+jo6f/o6On/4GBg994eHnfnp+i/6ChpP+goaT/oaKl/8rKy/+7u7z/oKCj/6ChpP+g + oaT/oKGk/6ChpP+goaT/oKGk/6ChpP+AgILfdXZ435ucn/+dnqH/nZ6h/5+gov/Ly8v/uru8/52eof+d + nqH/nZ6h/52eof+dnqH/nZ6h/52eof+dnqH/fX6A33R1dt+Zmpz/m5ye/5ucnv+bnJ3/vsHD/6y0vP+a + naH/eZWz/2SSxP9/mLD/lpuh/5ucnv+bnJ7/m5ye/3x9ft91dXbfnZ2f/6WmqP+rq63/p6eo/4yjuP9Y + pN7/ZKrT/zmQ4P8vkfn/Q6Du/4WkvP+nqKn/oaKj/5ycnv98fH3fhYSF366usP+ysrT/tLS1/7Cwsf+J + q8r/P636/zW6/P8dkvH/MJP7/z6m+P+Fq8b/s7O1/7Gxs/+srK7/hoaJ34SEhd+np6n/qamr/6mpq/+z + s7T/irXd/zyu/f81u/z/HZLy/zGT/P8+p/j/fqW//6mpq/+pqav/qamr/4uLjN97e3vfm5ud/52dn/+d + nZ//u7u8/4m+7/85rv7/Nbr8/yWR6f9Akeb/Q6Tu/3idt/+dnZ//nZ2f/52dn/+CgoPfcXFy34+Pkf+R + kZP/kZGT/7e4uv+Ps9b/R6Lh/zqw7v9Ej8r/fo6g/3aSqf+DkZ3/kZGT/5GRk/+RkZP/eHh532hoad+D + g4X/hIWH/4SFh/+Kioz/homM/3uGkP9wiJn/dIST/4OEh/+EhYf/hIWH/4SFh/+EhYf/hISG/2xsbd9d + XV7fdnZ4/3d3ef93d3n/d3d5/3d3ef93d3n/d3d5/3d3ef93d3n/d3d5/3d3ef93d3n/d3d5/29vcP5Z + WVnBVVVW325tb/9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b29w/29vcP9vb3D/b25w/2hnaf5Z + WFnNUlJSQVZWVrZpaWnfa2tr32tra99ra2vfa2tr32tra99ra2vfa2tr32tra99ra2vfa2tr32pqat9f + X1+5VlZWPlVVVQMAAGtrAABrawAAa2sAAGtrAABrawAAa2sAAGtrAABrawAAa2sAAGtrAABrawAAa2sA + AGtrAABrawAAa2sAAGtr + + + \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Program.cs b/client/c#/AcademyMG/MaterialSkinExample/Program.cs similarity index 85% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Program.cs rename to client/c#/AcademyMG/MaterialSkinExample/Program.cs index e459aff..82902c4 100644 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/Program.cs +++ b/client/c#/AcademyMG/MaterialSkinExample/Program.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using System.Windows.Forms; using MaterialSkin; +using MaterialSkinExample.LoginRegister; namespace MaterialSkinExample { @@ -18,7 +19,7 @@ static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); + Application.Run(new LoginForm()); } } } diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Properties/AssemblyInfo.cs b/client/c#/AcademyMG/MaterialSkinExample/Properties/AssemblyInfo.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Properties/AssemblyInfo.cs rename to client/c#/AcademyMG/MaterialSkinExample/Properties/AssemblyInfo.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Resources.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/Properties/Resources.Designer.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Resources.Designer.cs rename to client/c#/AcademyMG/MaterialSkinExample/Properties/Resources.Designer.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Resources.resx b/client/c#/AcademyMG/MaterialSkinExample/Properties/Resources.resx similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Resources.resx rename to client/c#/AcademyMG/MaterialSkinExample/Properties/Resources.resx diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Settings.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/Properties/Settings.Designer.cs similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Settings.Designer.cs rename to client/c#/AcademyMG/MaterialSkinExample/Properties/Settings.Designer.cs diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Settings.settings b/client/c#/AcademyMG/MaterialSkinExample/Properties/Settings.settings similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Properties/Settings.settings rename to client/c#/AcademyMG/MaterialSkinExample/Properties/Settings.settings diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Resources/minus.png b/client/c#/AcademyMG/MaterialSkinExample/Resources/minus.png similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Resources/minus.png rename to client/c#/AcademyMG/MaterialSkinExample/Resources/minus.png diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Resources/plus.png b/client/c#/AcademyMG/MaterialSkinExample/Resources/plus.png similarity index 100% rename from client/c#/MaterialSkin-master/MaterialSkinExample/Resources/plus.png rename to client/c#/AcademyMG/MaterialSkinExample/Resources/plus.png diff --git a/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.Designer.cs b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.Designer.cs new file mode 100644 index 0000000..d922f1d --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.Designer.cs @@ -0,0 +1,65 @@ +namespace MaterialSkinExample.ShowDialog +{ + partial class ShowDialogForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lb_showdialog_text = new MaterialSkin.Controls.MaterialLabel(); + this.SuspendLayout(); + // + // lb_showdialog_text + // + this.lb_showdialog_text.AutoSize = true; + this.lb_showdialog_text.Depth = 0; + this.lb_showdialog_text.Font = new System.Drawing.Font("Roboto", 11F); + this.lb_showdialog_text.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + this.lb_showdialog_text.Location = new System.Drawing.Point(100, 141); + this.lb_showdialog_text.MouseState = MaterialSkin.MouseState.HOVER; + this.lb_showdialog_text.Name = "lb_showdialog_text"; + this.lb_showdialog_text.Size = new System.Drawing.Size(64, 24); + this.lb_showdialog_text.TabIndex = 0; + this.lb_showdialog_text.Text = "Empty"; + // + // ShowDialogForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(282, 253); + this.Controls.Add(this.lb_showdialog_text); + this.Name = "ShowDialogForm"; + this.Text = "ShowDialogForm"; + this.Load += new System.EventHandler(this.ShowDialogForm_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private MaterialSkin.Controls.MaterialLabel lb_showdialog_text; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.cs b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.cs new file mode 100644 index 0000000..505e4dd --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using MaterialSkin; +using MaterialSkin.Controls; + +namespace MaterialSkinExample.ShowDialog +{ + public partial class ShowDialogForm : MaterialForm + { + string DefaultTitle = "Test"; + + public ShowDialogForm() + { + InitializeComponent(); + this.Text = DefaultTitle; + } + + public ShowDialogForm(string Text) + { + InitializeComponent(); + this.Text = DefaultTitle; + lb_showdialog_text.Text = Text; + } + + public ShowDialogForm(string Title, string Text) + { + InitializeComponent(); + this.Text = Title; + lb_showdialog_text.Text = Text; + } + + public void SetTitleText(string Title, string Text) + { + this.Text = Title; + lb_showdialog_text.Text = Text; + } + + private void ShowDialogForm_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.resx b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/ShowDialog/ShowDialogForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/client/c#/AcademyMG/MaterialSkinExample/Util.cs b/client/c#/AcademyMG/MaterialSkinExample/Util.cs new file mode 100644 index 0000000..cdb172c --- /dev/null +++ b/client/c#/AcademyMG/MaterialSkinExample/Util.cs @@ -0,0 +1,32 @@ +using ToastNotifications; +using MaterialSkinExample.ShowDialog; + +namespace MaterialSkinExample +{ + public static class Util + { + public static void ShowInDialog(string Title, string Text) + { + ShowDialogForm showDialogForm = new ShowDialogForm(Title, Text); + showDialogForm.ShowDialog(); + } + + public static void ShowInDialog(string Text) + { + ShowDialogForm showDialogForm = new ShowDialogForm(Text); + showDialogForm.ShowDialog(); + } + + public static void Notification(string Name, string Text) + { + Notification NotifyForm = new Notification(Name, Text, 5, FormAnimator.AnimationMethod.Slide, FormAnimator.AnimationDirection.Up); + NotifyForm.Show(); + } + + public static void Notification(string Text) + { + Notification NotifyForm = new Notification("", Text, 5, FormAnimator.AnimationMethod.Slide, FormAnimator.AnimationDirection.Up); + NotifyForm.Show(); + } + } +} diff --git a/client/c#/AcademyMG/MaterialSkinExample/icon.ico b/client/c#/AcademyMG/MaterialSkinExample/icon.ico new file mode 100644 index 0000000..584f862 Binary files /dev/null and b/client/c#/AcademyMG/MaterialSkinExample/icon.ico differ diff --git a/client/c#/AcademyMG/README.md b/client/c#/AcademyMG/README.md new file mode 100644 index 0000000..85d00cf --- /dev/null +++ b/client/c#/AcademyMG/README.md @@ -0,0 +1,492 @@ +## Refit: The automatic type-safe REST library for .NET Core, Xamarin and .NET + +Refit is a library heavily inspired by Square's +[Retrofit](http://square.github.io/retrofit) library, and it turns your REST +API into a live interface: + +```csharp +public interface IGitHubApi +{ + [Get("/users/{user}")] + Task GetUser(string user); +} +``` + +The `RestService` class generates an implementation of `IGitHubApi` that uses +`HttpClient` to make its calls: + +```csharp +var gitHubApi = RestService.For("https://api.github.com"); + +var octocat = await gitHubApi.GetUser("octocat"); +``` + +### Where does this work? + +Refit currently supports the following platforms and any .NET Standard 1.3 target: + +* Xamarin.Android +* Xamarin.Mac +* Xamarin.iOS 64-bit (Unified API) +* Desktop .NET 4.5 +* Windows Store 8.1+ +* Windows Phone 8.1 Universal Apps +* .NET Core + +The following platforms are not supported: + +* Xamarin.iOS 32-bit - build system doesn't support targets files + +#### Note about .NET Core +For .NET Core support, you must use a `csproj` type of project to host your Refit interfaces. This is because `xproj` cannot do compile-time code generation that's not included in the project file. If you are using `xproj` for either a website, class library, or application, you can still use Refit by creating a `netstandard` `csproj` and then using a project-to-project reference from your `xproj` to your `csproj`. This workaround won't be necessary once "VS 15" and the final .NET Core tooling ships. + +### API Attributes + +Every method must have an HTTP attribute that provides the request method and +relative URL. There are five built-in annotations: Get, Post, Put, Delete, and +Head. The relative URL of the resource is specified in the annotation. + +```csharp +[Get("/users/list")] +``` + +You can also specify query parameters in the URL: + +```csharp +[Get("/users/list?sort=desc")] +``` + +A request URL can be updated dynamically using replacement blocks and +parameters on the method. A replacement block is an alphanumeric string +surrounded by { and }. + +If the name of your parameter doesn't match the name in the URL path, use the +`AliasAs` attribute. + +```csharp +[Get("/group/{id}/users")] +Task> GroupList([AliasAs("id")] int groupId); +``` + +Parameters that are not specified as a URL substitution will automatically be +used as query parameters. This is different than Retrofit, where all +parameters must be explicitly specified. + +The comparison between parameter name and URL parameter is *not* +case-sensitive, so it will work correctly if you name your parameter `groupId` +in the path `/group/{groupid}/show` for example. + +```csharp +[Get("/group/{id}/users")] +Task> GroupList([AliasAs("id")] int groupId, [AliasAs("sort")] string sortOrder); + +GroupList(4, "desc"); +>>> "/group/4/users?sort=desc" +``` + +### Body content + +One of the parameters in your method can be used as the body, by using the +Body attribute: + +```csharp +[Post("/users/new")] +Task CreateUser([Body] User user); +``` + +There are four possibilities for supplying the body data, depending on the +type of the parameter: + +* If the type is `Stream`, the content will be streamed via `StreamContent` +* If the type is `string`, the string will be used directly as the content +* If the parameter has the attribute `[Body(BodySerializationMethod.UrlEncoded)]`, + the content will be URL-encoded (see [form posts](#form-posts) below) +* For all other types, the object will be serialized as JSON. + +#### JSON content + +JSON requests and responses are serialized/deserialized using Json.NET. +By default, Refit will use the serializer settings that can be configured +by setting _Newtonsoft.Json.JsonConvert.DefaultSettings_: + +```csharp +JsonConvert.DefaultSettings = + () => new JsonSerializerSettings() { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + Converters = {new StringEnumConverter()} + }; + +// Serialized as: {"day":"Saturday"} +await PostSomeStuff(new { Day = DayOfWeek.Saturday }); +``` + +As these are global settings they will affect your entire application. It +might be beneficial to isolate the settings for calls to a particular API. +When creating a Refit generated live interface, you may optionally pass a +`RefitSettings` that will allow you to specify what serializer settings you +would like. This allows you to have different serializer settings for separate +APIs: + +```csharp +var gitHubApi = RestService.For("https://api.github.com", + new RefitSettings { + JsonSerializerSettings = new JsonSerializerSettings { + ContractResolver = new SnakeCasePropertyNamesContractResolver() + } + }); + +var otherApi = RestService.For("https://api.example.com", + new RefitSettings { + JsonSerializerSettings = new JsonSerializerSettings { + ContractResolver = new CamelCasePropertyNamesContractResolver() + } + }); +``` + +Property serialization/deserialization can be customised using Json.NET's +JsonProperty attribute: + +```csharp +public class Foo +{ + // Works like [AliasAs("b")] would in form posts (see below) + [JsonProperty(PropertyName="b")] + public string Bar { get; set; } +} +``` + +#### Form posts + +For APIs that take form posts (i.e. serialized as `application/x-www-form-urlencoded`), +initialize the Body attribute with `BodySerializationMethod.UrlEncoded`. + +The parameter can be an `IDictionary`: + +```csharp +public interface IMeasurementProtocolApi +{ + [Post("/collect")] + Task Collect([Body(BodySerializationMethod.UrlEncoded)] Dictionary data); +} + +var data = new Dictionary { + {"v", 1}, + {"tid", "UA-1234-5"}, + {"cid", new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c")}, + {"t", "event"}, +}; + +// Serialized as: v=1&tid=UA-1234-5&cid=d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c&t=event +await api.Collect(data); +``` + +Or you can just pass any object and all _public, readable_ properties will +be serialized as form fields in the request. This approach allows you to alias +property names using `[AliasAs("whatever")]` which can help if the API has +cryptic field names: + +```csharp +public interface IMeasurementProtocolApi +{ + [Post("/collect")] + Task Collect([Body(BodySerializationMethod.UrlEncoded)] Measurement measurement); +} + +public class Measurement +{ + // Properties can be read-only and [AliasAs] isn't required + public int v { get { return 1; } + + [AliasAs("tid")] + public string WebPropertyId { get; set; } + + [AliasAs("cid")] + public Guid ClientId { get;set; } + + [AliasAs("t")] + public string Type { get; set; } + + public object IgnoreMe { private get; set; } +} + +var measurement = new Measurement { + WebPropertyId = "UA-1234-5", + ClientId = new Guid("d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c"), + Type = "event" +}; + +// Serialized as: v=1&tid=UA-1234-5&cid=d1e9ea6b-2e8b-4699-93e0-0bcbd26c206c&t=event +await api.Collect(measurement); +``` + +### Setting request headers + +#### Static headers + +You can set one or more static request headers for a request applying a `Headers` +attribute to the method: + +```csharp +[Headers("User-Agent: Awesome Octocat App")] +[Get("/users/{user}")] +Task GetUser(string user); +``` + +Static headers can also be added to _every request in the API_ by applying the +`Headers` attribute to the interface: + +```csharp +[Headers("User-Agent: Awesome Octocat App")] +public interface IGitHubApi +{ + [Get("/users/{user}")] + Task GetUser(string user); + + [Post("/users/new")] + Task CreateUser([Body] User user); +} +``` + +#### Dynamic headers + +If the content of the header needs to be set at runtime, you can add a header +with a dynamic value to a request by applying a `Header` attribute to a parameter: + +```csharp +[Get("/users/{user}")] +Task GetUser(string user, [Header("Authorization")] string authorization); + +// Will add the header "Authorization: token OAUTH-TOKEN" to the request +var user = await GetUser("octocat", "token OAUTH-TOKEN"); +``` + +#### Authorization (Dynamic Headers redux) +The most common reason to use headers is for authorization. Today most API's use some flavor of oAuth with access tokens that expire and refresh tokens that are longer lived. + +One way to encapsulate these kinds of token usage, a custom `HttpClientHandler` can be inserted instead. + +For example: +```csharp +class AuthenticatedHttpClientHandler : HttpClientHandler +{ + private readonly Func> getToken; + + public AuthenticatedHttpClientHandler(Func> getToken) + { + if (getToken == null) throw new ArgumentNullException("getToken"); + this.getToken = getToken; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + // See if the request has an authorize header + var auth = request.Headers.Authorization; + if (auth != null) + { + var token = await getToken().ConfigureAwait(false); + request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token); + } + + return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); + } +} +``` + +This class is used like so (example uses the [ADAL](http://msdn.microsoft.com/en-us/library/azure/jj573266.aspx) library to manage auto-token refresh but the principal holds for Xamarin.Auth or any other library: + +```csharp +class LoginViewModel +{ + AuthenticationContext context = new AuthenticationContext(...); + private async Task GetToken() + { + // The AquireTokenAsync call will prompt with a UI if necessary + // Or otherwise silently use a refresh token to return + // a valid access token + var token = await context.AcquireTokenAsync("http://my.service.uri/app", "clientId", new Uri("callback://complete")); + + return token; + } + + public async void LoginAndCallApi() + { + var api = RestService.For(new HttpClient(new AuthenticatedHttpClientHandler(GetToken)) { BaseAddress = new Uri("https://the.end.point/") }); + + var location = await api.GetLocationOfRebelBase(); + } +} + +interface IMyRestService +{ + [Get("/getPublicInfo")] + Task SomePublicMethod(); + + [Get("/secretStuff")] + [Headers("Authorization: Bearer")] + Task GetLocationOfRebelBase(); +} + +``` + +In the above example, any time a method that requires authentication is called, the `AuthenticatedHttpClientHandler` will try to get a fresh access token. It's up to the app to provide one, checking the expiration time of an existing access token and obtaining a new one if needed. + +#### Redefining headers + +Unlike Retrofit, where headers do not overwrite each other and are all added to +the request regardless of how many times the same header is defined, Refit takes +a similar approach to the approach ASP.NET MVC takes with action filters — +**redefining a header will replace it**, in the following order of precedence: + +* `Headers` attribute on the interface _(lowest priority)_ +* `Headers` attribute on the method +* `Header` attribute on a method parameter _(highest priority)_ + +```csharp +[Headers("X-Emoji: :rocket:")] +public interface IGitHubApi +{ + [Get("/users/list")] + Task GetUsers(); + + [Get("/users/{user}")] + [Headers("X-Emoji: :smile_cat:")] + Task GetUser(string user); + + [Post("/users/new")] + [Headers("X-Emoji: :metal:")] + Task CreateUser([Body] User user, [Header("X-Emoji")] string emoji); +} + +// X-Emoji: :rocket: +var users = await GetUsers(); + +// X-Emoji: :smile_cat: +var user = await GetUser("octocat"); + +// X-Emoji: :trollface: +await CreateUser(user, ":trollface:"); +``` + +#### Removing headers + +Headers defined on an interface or method can be removed by redefining +a static header without a value (i.e. without `: `) or passing `null` for +a dynamic header. _Empty strings will be included as empty headers._ + +```csharp +[Headers("X-Emoji: :rocket:")] +public interface IGitHubApi +{ + [Get("/users/list")] + [Headers("X-Emoji")] // Remove the X-Emoji header + Task GetUsers(); + + [Get("/users/{user}")] + [Headers("X-Emoji:")] // Redefine the X-Emoji header as empty + Task GetUser(string user); + + [Post("/users/new")] + Task CreateUser([Body] User user, [Header("X-Emoji")] string emoji); +} + +// No X-Emoji header +var users = await GetUsers(); + +// X-Emoji: +var user = await GetUser("octocat"); + +// No X-Emoji header +await CreateUser(user, null); + +// X-Emoji: +await CreateUser(user, ""); +``` + +### Multipart uploads + +Methods decorated with `Multipart` attribute will be submitted with multipart content type. +At this time, multipart methods support the following parameter types: + + - string (parameter name will be used as name and string value as value) + - byte array + - Stream + - FileInfo + +For byte array and Stream parameters, use `AttachmentName` parameter attribute to specify the +name for the attachment. For `FileInfo` parameters, the file name will be used. + +```csharp +public interface ISomeApi +{ + [Multipart] + [Post("/users/{id}/photo")] + Task UploadPhoto(int id, [AttachmentName("photo.jpg")] Stream stream); +} +``` + +### Retrieving the response + +Note that in Refit unlike in Retrofit, there is no option for a synchronous +network request - all requests must be async, either via `Task` or via +`IObservable`. There is also no option to create an async method via a Callback +parameter unlike Retrofit, because we live in the async/await future. + +Similarly to how body content changes via the parameter type, the return type +will determine the content returned. + +Returning Task without a type parameter will discard the content and solely +tell you whether or not the call succeeded: + +```csharp +[Post("/users/new")] +Task CreateUser([Body] User user); + +// This will throw if the network call fails +await CreateUser(someUser); +``` + +If the type parameter is 'HttpResponseMessage' or 'string', the raw response +message or the content as a string will be returned respectively. + +```csharp +// Returns the content as a string (i.e. the JSON data) +[Get("/users/{user}")] +Task GetUser(string user); + +// Returns the raw response, as an IObservable that can be used with the +// Reactive Extensions +[Get("/users/{user}")] +IObservable GetUser(string user); +``` + +### Using generic interfaces + +When using something like ASP.NET Web API, it's a fairly common pattern to have a whole stack of CRUD REST services. Refit now supports these, allowing you to define a single API interface with a generic type: + +```csharp +public interface IReallyExcitingCrudApi where T : class +{ + [Post("")] + Task Create([Body] T paylod); + + [Get("")] + Task> ReadAll(); + + [Get("/{key}")] + Task ReadOne(TKey key); + + [Put("/{key}")] + Task Update(TKey key, [Body]T payload); + + [Delete("/{key}")] + Task Delete(TKey key); +} +``` + +Which can be used like this: + +```csharp +// The "/users" part here is kind of important if you want it to work for more +// than one type (unless you have a different domain for each type) +var api = RestService.For>("http://api.example.com/users"); +``` diff --git a/client/c#/AcademyMG/Rebracer.xml b/client/c#/AcademyMG/Rebracer.xml new file mode 100644 index 0000000..5db7ebf --- /dev/null +++ b/client/c#/AcademyMG/Rebracer.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + HACK:2 + TODO:2 + UNDONE:2 + UnresolvedMergeConflict:3 + + false + false + false + + + + + 0 + 0 + 1 + 1 + 0 + 0 + 1 + 2 + 80 + 0 + 1 + 0 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 + + + false + true + true + true + true + Implicit (Windows)|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\libhelp.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\sitetypesWindows.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\domWindows.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\underscorefilter.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\showPlainComments.js;Implicit (Web)|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\libhelp.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\sitetypesWeb.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\domWeb.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\underscorefilter.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\showPlainComments.js|~/Scripts/_references.js;Dedicated Worker|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\libhelp.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\dedicatedworker.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\underscorefilter.js|C:\Program Files (x86)\Microsoft Visual Studio 12.0\JavaScript\References\showPlainComments.js;Implicit (Windows)|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\domWindows.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js;Implicit (Windows 8.1)|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\sitetypesWindows.js|$(VSInstallDir)\JavaScript\References\domWindows_8.1.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js;Implicit (Windows Phone 8.1)|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\sitetypesWindows.js|$(VSInstallDir)\JavaScript\References\domWindowsPhone_8.1.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js;Implicit (Web)|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\sitetypesWeb.js|$(VSInstallDir)\JavaScript\References\domWeb.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js;Dedicated Worker|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\dedicatedworker.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js;Generic|$(VSInstallDir)\JavaScript\References\libhelp.js|$(VSInstallDir)\JavaScript\References\underscorefilter.js|$(VSInstallDir)\JavaScript\References\showPlainComments.js; + true + true + true + false + true + true + false + false + false + true + true + + + true + false + false + true + true + true + 1 + true + false + true + true + false + false + false + false + false + false + false + false + false + false + true + true + true + true + false + true + false + false + true + false + 1 + true + 2 + 2 + false + false + 0 + true + true + 0 + 0 + true + true + false + 0 + 0 + false + 0 + 1 + false + true + false + 2 + true + false + false + false + false + true + true + false + false + false + true + true + true + 2 + 2 + 2 + true + false + false + true + true + true + false + 1 + true + false + false + false + false + false + false + false + false + false + false + false + true + false + false + true + true + + + false + false + true + false + true + true + true + true + true + true + true + false + true + true + false + false + true + true + false + false + false + false + false + false + false + false + + + false + true + true + true + true + true + true + true + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/Assets/AboutAssets.txt b/client/c#/AcademyMG/Refit-Tests/Assets/AboutAssets.txt new file mode 100644 index 0000000..a9b0638 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with your package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/client/c#/AcademyMG/Refit-Tests/DeliminatorSeparatedPropertyNamesContractResolver.cs b/client/c#/AcademyMG/Refit-Tests/DeliminatorSeparatedPropertyNamesContractResolver.cs new file mode 100644 index 0000000..67b5bdb --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/DeliminatorSeparatedPropertyNamesContractResolver.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using System.Text; +using System; +using System.Globalization; +using Newtonsoft.Json.Serialization; + +namespace Refit.Tests +{ + public class DeliminatorSeparatedPropertyNamesContractResolver : DefaultContractResolver + { + readonly string separator; + + protected DeliminatorSeparatedPropertyNamesContractResolver(char separator) + : base(true) + { + this.separator = separator.ToString(CultureInfo.InvariantCulture); + } + + protected override string ResolvePropertyName(string propertyName) + { + var parts = new List(); + var currentWord = new StringBuilder(); + + foreach (var c in propertyName.ToCharArray()) { + if (Char.IsUpper(c) && currentWord.Length > 0) { + parts.Add(currentWord.ToString()); + currentWord.Clear(); + } + + currentWord.Append(char.ToLower(c)); + } + + if (currentWord.Length > 0) { + parts.Add(currentWord.ToString()); + } + + return String.Join(separator, parts.ToArray()); + } + } + + public class SnakeCasePropertyNamesContractResolver : DeliminatorSeparatedPropertyNamesContractResolver + { + public SnakeCasePropertyNamesContractResolver() : base('_') { } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/Entitlements.plist b/client/c#/AcademyMG/Refit-Tests/Entitlements.plist new file mode 100644 index 0000000..9ae5993 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/client/c#/AcademyMG/Refit-Tests/GitHubApi.cs b/client/c#/AcademyMG/Refit-Tests/GitHubApi.cs new file mode 100644 index 0000000..bce2bd6 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/GitHubApi.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Refit; // InterfaceStubGenerator looks for this + +namespace Refit.Tests +{ + public class User + { + public string Login { get; set; } + public int Id { get; set; } + public string AvatarUrl { get; set; } + public string GravatarId { get; set; } + public string Url { get; set; } + public string HtmlUrl { get; set; } + public string FollowersUrl { get; set; } + public string FollowingUrl { get; set; } + public string GistsUrl { get; set; } + public string StarredUrl { get; set; } + public string SubscriptionsUrl { get; set; } + public string OrganizationsUrl { get; set; } + public string ReposUrl { get; set; } + public string EventsUrl { get; set; } + public string ReceivedEventsUrl { get; set; } + public string Type { get; set; } + public string Name { get; set; } + public string Company { get; set; } + public string Blog { get; set; } + public string Location { get; set; } + public string Email { get; set; } + public bool? Hireable { get; set; } + public string Bio { get; set; } + public int PublicRepos { get; set; } + public int Followers { get; set; } + public int Following { get; set; } + public string CreatedAt { get; set; } + public string UpdatedAt { get; set; } + public int PublicGists { get; set; } + } + + public class UserSearchResult + { + public int TotalCount { get; set; } + public bool IncompleteResults { get; set; } + public IList Items { get; set; } + } + + [Headers("User-Agent: Refit Integration Tests")] + public interface IGitHubApi + { + [Get("/users/{username}")] + Task GetUser(string userName); + + [Get("/users/{username}")] + IObservable GetUserObservable(string userName); + + [Get("/users/{userName}")] + IObservable GetUserCamelCase(string userName); + + [Get("/orgs/{orgname}/members")] + Task> GetOrgMembers(string orgName); + + [Get("/search/users")] + Task FindUsers(string q); + + [Get("/")] + Task GetIndex(); + + [Get("/")] + IObservable GetIndexObservable(); + + [Get("/give-me-some-404-action")] + Task NothingToSeeHere(); + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/Info.plist b/client/c#/AcademyMG/Refit-Tests/Info.plist new file mode 100644 index 0000000..52e259f --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDisplayName + Refit-Tests-iOS + CFBundleIdentifier + com.your-company.RefitTestsiOS + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + MinimumOSVersion + 7.0 + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/client/c#/AcademyMG/Refit-Tests/IntegrationTestHelper.cs b/client/c#/AcademyMG/Refit-Tests/IntegrationTestHelper.cs new file mode 100644 index 0000000..f535078 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/IntegrationTestHelper.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +namespace Refit.Tests +{ + public static class IntegrationTestHelper + { + public static string GetPath(params string[] paths) + { + var ret = GetIntegrationTestRootDirectory(); + return (new FileInfo(paths.Aggregate(ret, Path.Combine))).FullName; + } + + public static string GetIntegrationTestRootDirectory() + { + // XXX: This is an evil hack, but it's okay for a unit test + // We can't use Assembly.Location because unit test runners love + // to move stuff to temp directories + var st = new StackFrame(true); + var di = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(st.GetFileName()))); + + return di.FullName; + } + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/InterfaceStubGenerator.cs b/client/c#/AcademyMG/Refit-Tests/InterfaceStubGenerator.cs new file mode 100644 index 0000000..56516ff --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/InterfaceStubGenerator.cs @@ -0,0 +1,166 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Xunit; +using Nustache; +using Nustache.Core; +using Refit; // InterfaceStubGenerator looks for this +using Refit.Generator; + +namespace Refit.Tests +{ + public class InterfaceStubGeneratorTests + { + [Fact] + public void GenerateInterfaceStubsSmokeTest() + { + var fixture = new InterfaceStubGenerator(); + + var result = fixture.GenerateInterfaceStubs(new[] { + IntegrationTestHelper.GetPath("RestService.cs"), + IntegrationTestHelper.GetPath("GitHubApi.cs"), + }); + + Assert.True(result.Contains("IGitHubApi")); + } + + [Fact] + public void FindInterfacesSmokeTest() + { + var input = IntegrationTestHelper.GetPath("GitHubApi.cs"); + var fixture = new InterfaceStubGenerator(); + + var result = fixture.FindInterfacesToGenerate(CSharpSyntaxTree.ParseFile(input)); + Assert.Equal(1, result.Count); + Assert.True(result.Any(x => x.Identifier.ValueText == "IGitHubApi")); + + input = IntegrationTestHelper.GetPath("InterfaceStubGenerator.cs"); + + result = fixture.FindInterfacesToGenerate(CSharpSyntaxTree.ParseFile(input)); + Assert.Equal(2, result.Count); + Assert.True(result.Any(x => x.Identifier.ValueText == "IAmARefitInterfaceButNobodyUsesMe")); + Assert.True(result.Any(x => x.Identifier.ValueText == "IBoringCrudApi")); + Assert.True(result.All(x => x.Identifier.ValueText != "IAmNotARefitInterface")); + } + + [Fact] + public void HasRefitHttpMethodAttributeSmokeTest() + { + var file = CSharpSyntaxTree.ParseFile(IntegrationTestHelper.GetPath("InterfaceStubGenerator.cs")); + var fixture = new InterfaceStubGenerator(); + + var input = file.GetRoot().DescendantNodes() + .OfType() + .SelectMany(i => i.Members.OfType()) + .ToList(); + + var result = input + .ToDictionary(m => m.Identifier.ValueText, fixture.HasRefitHttpMethodAttribute); + + Assert.True(result["RefitMethod"]); + Assert.True(result["AnotherRefitMethod"]); + Assert.False(result["NoConstantsAllowed"]); + Assert.False(result["NotARefitMethod"]); + Assert.True(result["ReadOne"]); + Assert.True(result["SpacesShouldntBreakMe"]); + } + + [Fact] + public void GenerateClassInfoForInterfaceSmokeTest() + { + var file = CSharpSyntaxTree.ParseFile(IntegrationTestHelper.GetPath("GitHubApi.cs")); + var fixture = new InterfaceStubGenerator(); + + var input = file.GetRoot().DescendantNodes() + .OfType() + .First(x => x.Identifier.ValueText == "IGitHubApi"); + + var result = fixture.GenerateClassInfoForInterface(input); + + Assert.Equal(8, result.MethodList.Count); + Assert.Equal("GetUser", result.MethodList[0].Name); + Assert.Equal("string userName", result.MethodList[0].ArgumentListWithTypes); + } + + [Fact] + public void GenerateTemplateInfoForInterfaceListSmokeTest() + { + var file = CSharpSyntaxTree.ParseFile(IntegrationTestHelper.GetPath("RestService.cs")); + var fixture = new InterfaceStubGenerator(); + + var input = file.GetRoot().DescendantNodes() + .OfType() + .ToList(); + + var result = fixture.GenerateTemplateInfoForInterfaceList(input); + Assert.Equal(7, result.ClassList.Count); + } + + [Fact] + public void RetainsAliasesInUsings() + { + var fixture = new InterfaceStubGenerator(); + + var syntaxTree = CSharpSyntaxTree.ParseFile(IntegrationTestHelper.GetPath("NamespaceCollisionApi.cs")); + var interfaceDefinition = syntaxTree.GetRoot().DescendantNodes().OfType(); + var result = fixture.GenerateTemplateInfoForInterfaceList(new List(interfaceDefinition)); + + var usingList = result.UsingList.Select(x => x.Item).ToList(); + Assert.Contains("SomeType = CollisionA.SomeType", usingList); + Assert.Contains("CollisionB", usingList); + } + } + + public static class ThisIsDumbButMightHappen + { + public const string PeopleDoWeirdStuff = "But we don't let them"; + } + + public interface IAmARefitInterfaceButNobodyUsesMe + { + [Get("whatever")] + Task RefitMethod(); + + [Refit.GetAttribute("something-else")] + Task AnotherRefitMethod(); + + [Get(ThisIsDumbButMightHappen.PeopleDoWeirdStuff)] + Task NoConstantsAllowed(); + + [Get ("spaces-shouldnt-break-me")] + Task SpacesShouldntBreakMe(); + + // We don't need an explicit test for this because if it isn't supported we can't compile + [Get("anything")] + Task ReservedWordsForParameterNames(int @int, string @string, float @long); + } + + public interface IAmNotARefitInterface + { + Task NotARefitMethod(); + } + + public interface IBoringCrudApi where T : class + { + [Post("")] + Task Create([Body] T paylod); + + [Get("")] + Task> ReadAll(); + + [Get("/{key}")] + Task ReadOne(TKey key); + + [Put("/{key}")] + Task Update(TKey key, [Body]T payload); + + [Delete("/{key}")] + Task Delete(TKey key); + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/Main.cs b/client/c#/AcademyMG/Refit-Tests/Main.cs new file mode 100644 index 0000000..12ec3ed --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Main.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace RefitTestsiOS +{ + public class Application + { + // This is the main entry point of the application. + static void Main (string[] args) + { + // if you want to use a different Application Delegate class from "UnitTestAppDelegate" + // you can specify it here. + UIApplication.Main (args, null, "UnitTestAppDelegate"); + } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/MainActivity.cs b/client/c#/AcademyMG/Refit-Tests/MainActivity.cs new file mode 100644 index 0000000..53b3755 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/MainActivity.cs @@ -0,0 +1,22 @@ +using System.Reflection; +using Android.App; +using Android.OS; +using Xamarin.Android.NUnitLite; + +namespace Refit.Tests +{ + [Activity (Label = "Refit", MainLauncher = true)] + public class MainActivity : TestSuiteActivity + { + protected override void OnCreate(Bundle bundle) + { + // tests can be inside the main assembly + AddTest(Assembly.GetExecutingAssembly()); + // or in any reference assemblies + // AddTest (typeof (Your.Library.TestClass).Assembly); + + // Once you called base.OnCreate(), you cannot add more assemblies. + base.OnCreate(bundle); + } + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/MethodOverloads.cs b/client/c#/AcademyMG/Refit-Tests/MethodOverloads.cs new file mode 100644 index 0000000..fe207ae --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/MethodOverloads.cs @@ -0,0 +1,16 @@ +using System; +using System.Threading.Tasks; +using Refit; + +namespace Refit.Tests +{ + public interface IUseOverloadedMethods + { + [Get("/")] + Task Get(); + + [Get("/{id}")] + Task Get(int id); + } +} + diff --git a/client/c#/AcademyMG/Refit-Tests/MultipartTests.cs b/client/c#/AcademyMG/Refit-Tests/MultipartTests.cs new file mode 100644 index 0000000..f3c0534 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/MultipartTests.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Reflection; +using System.Threading.Tasks; +using Xunit; +using Refit; + +namespace Refit.Tests +{ + public interface IRunscopeApi + { + [Multipart] + [Post("/")] + Task UploadStream([AttachmentName("test.pdf")] Stream stream); + + [Multipart] + [Post("/")] + Task UploadBytes([AttachmentName("test.pdf")] byte[] bytes); + + [Multipart] + [Post("/")] + Task UploadString(string someString); + + [Multipart] + [Post("/")] + Task UploadFileInfo(IEnumerable fileInfos, FileInfo anotherFile); + } + + public class MultipartTests + { + // To test: sign up for a Runscope account (it's free, despite them implying that's its only good for 30 days) + // and then insert your bucket URI here in order to run tests and verify success via the Runscope UI + const string runscopeUri = "https://.runscope.net/"; + + [Fact(Skip = "Set runscopeUri field to your Runscope key in order to test this function.")] + public async Task MultipartUploadShouldWorkWithStream() + { + using (var stream = GetTestFileStream("Test Files/Test.pdf")) { + var fixture = RestService.For(runscopeUri); + var result = await fixture.UploadStream(stream); + + Assert.True(result.IsSuccessStatusCode); + } + } + + [Fact(Skip = "Set runscopeUri field to your Runscope key in order to test this function.")] + public async Task MultipartUploadShouldWorkWithByteArray() + { + using (var stream = GetTestFileStream("Test Files/Test.pdf")) + using (var reader = new BinaryReader(stream)) { + var bytes = reader.ReadBytes((int)stream.Length); + + var fixture = RestService.For(runscopeUri); + var result = await fixture.UploadBytes(bytes); + + Assert.True(result.IsSuccessStatusCode); + } + } + + [Fact(Skip = "Set runscopeUri field to your Runscope key in order to test this function.")] + public async Task MultipartUploadShouldWorkWithFileInfo() + { + var fileName = Path.GetTempFileName(); + + try { + using (var stream = GetTestFileStream("Test Files/Test.pdf")) + using (var outStream = File.OpenWrite(fileName)) { + await stream.CopyToAsync(outStream); + await outStream.FlushAsync(); + outStream.Close(); + + var fixture = RestService.For(runscopeUri); + var result = await fixture.UploadFileInfo(new [] { new FileInfo(fileName), new FileInfo(fileName) }, new FileInfo(fileName)); + + Assert.True(result.IsSuccessStatusCode); + } + } finally { + File.Delete(fileName); + } + } + + [Fact(Skip = "Set runscopeUri field to your Runscope key in order to test this function.")] + public async Task MultipartUploadShouldWorkWithString() + { + const string text = "This is random text"; + + var fixture = RestService.For(runscopeUri); + var result = await fixture.UploadString(text); + + Assert.True(result.IsSuccessStatusCode); + } + + private static Stream GetTestFileStream(string relativeFilePath) + { + const char namespaceSeparator = '.'; + + // get calling assembly + var assembly = Assembly.GetCallingAssembly(); + + // compute resource name suffix + var relativeName = "." + relativeFilePath + .Replace('\\', namespaceSeparator) + .Replace('/', namespaceSeparator) + .Replace(' ', '_'); + + // get resource stream + var fullName = assembly + .GetManifestResourceNames() + .FirstOrDefault(name => name.EndsWith(relativeName, StringComparison.InvariantCulture)); + if (fullName == null) { + throw new Exception(string.Format("Unable to find resource for path \"{0}\". Resource with name ending on \"{1}\" was not found in assembly.", relativeFilePath, relativeName)); + } + + var stream = assembly.GetManifestResourceStream(fullName); + if (stream == null) { + throw new Exception(string.Format("Unable to find resource for path \"{0}\". Resource named \"{1}\" was not found in assembly.", relativeFilePath, fullName)); + } + + return stream; + } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/NamespaceCollisionApi.cs b/client/c#/AcademyMG/Refit-Tests/NamespaceCollisionApi.cs new file mode 100644 index 0000000..4649bf5 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/NamespaceCollisionApi.cs @@ -0,0 +1,31 @@ +using System.Threading.Tasks; +using SomeType = CollisionA.SomeType; +using CollisionB; +using Refit; // InterfaceStubGenerator looks for this + +namespace Refit.Tests +{ + public interface INamespaceCollisionApi + { + [Get("/")] + Task SomeRequest(); + } + + public static class NamespaceCollisionApi + { + public static INamespaceCollisionApi Create() + { + return RestService.For("http://somewhere.com"); + } + } +} + +namespace CollisionA +{ + public class SomeType { } +} + +namespace CollisionB +{ + public class SomeType { } +} diff --git a/client/c#/AcademyMG/Refit-Tests/Properties/AndroidManifest.xml b/client/c#/AcademyMG/Refit-Tests/Properties/AndroidManifest.xml new file mode 100644 index 0000000..006f87b --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Properties/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/Properties/AssemblyInfo.cs b/client/c#/AcademyMG/Refit-Tests/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..14d99a8 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Properties/AssemblyInfo.cs @@ -0,0 +1,22 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. +[assembly: AssemblyTitle("Refit")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("paul")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. +[assembly: AssemblyVersion("1.0.0")] +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.csproj b/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.csproj new file mode 100644 index 0000000..3b7f702 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.csproj @@ -0,0 +1,108 @@ + + + + + Debug + AnyCPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605} + Library + Properties + Refit.Tests + Refit.Tests + v4.5 + 512 + + 8.0.30703 + 2.0 + 80fbdb46 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {5694F8AD-7A15-4717-B649-1749A311300B} + InterfaceStubGenerator + + + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A} + Refit-Net45 + + + + + + + + + + + + + + + + + + + + $(IntermediateOutputPath)\RefitParams.rsp + + + + $(SolutionDir)InterfaceStubGenerator\bin\$(ConfigurationName)\InterfaceStubGenerator.exe "$(ProjectDir)RefitStubs.cs" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" + + + mono $(SolutionDir)InterfaceStubGenerator/bin/$(Configuration)/InterfaceStubGenerator.exe "$(ProjectDir)RefitStubs.cs" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.project.json b/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.project.json new file mode 100644 index 0000000..f20a0c0 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Refit-Tests-Net45.project.json @@ -0,0 +1,15 @@ +{ + "supports": {}, + "dependencies": { + "xunit": "2.1.0", + "System.Reactive": "3.0.0", + "xunit.runner.visualstudio": "2.1.0", + "RichardSzalay.MockHttp": "1.3.1" + }, + "frameworks": { + "net45": {} + }, + "runtimes": { + "win": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/RefitStubs.cs b/client/c#/AcademyMG/Refit-Tests/RefitStubs.cs new file mode 100644 index 0000000..210714f --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/RefitStubs.cs @@ -0,0 +1,563 @@ +using System; +using System.Net.Http; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Refit; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Xunit; +using Nustache; +using Nustache.Core; +using Refit.Generator; +using SomeType = CollisionA.SomeType; +using CollisionB; +using System.Net; +using System.Reactive.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using RichardSzalay.MockHttp; +using System.IO; +using System.Reflection; + +/* ******** Hey You! ********* + * + * This is a generated file, and gets rewritten every time you build the + * project. If you want to edit it, you need to edit the mustache template + * in the Refit package */ + +namespace RefitInternalGenerated +{ + [AttributeUsage (AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate)] + sealed class PreserveAttribute : Attribute + { +#pragma warning disable 0649 + // + // Fields + // + public bool AllMembers; + + public bool Conditional; +#pragma warning restore 0649 + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIGitHubApi : IGitHubApi + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIGitHubApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task GetUser(string userName) + { + var arguments = new object[] { userName }; + return (Task) methodImpls["GetUser"](Client, arguments); + } + + public virtual IObservable GetUserObservable(string userName) + { + var arguments = new object[] { userName }; + return (IObservable) methodImpls["GetUserObservable"](Client, arguments); + } + + public virtual IObservable GetUserCamelCase(string userName) + { + var arguments = new object[] { userName }; + return (IObservable) methodImpls["GetUserCamelCase"](Client, arguments); + } + + public virtual Task> GetOrgMembers(string orgName) + { + var arguments = new object[] { orgName }; + return (Task>) methodImpls["GetOrgMembers"](Client, arguments); + } + + public virtual Task FindUsers(string q) + { + var arguments = new object[] { q }; + return (Task) methodImpls["FindUsers"](Client, arguments); + } + + public virtual Task GetIndex() + { + var arguments = new object[] { }; + return (Task) methodImpls["GetIndex"](Client, arguments); + } + + public virtual IObservable GetIndexObservable() + { + var arguments = new object[] { }; + return (IObservable) methodImpls["GetIndexObservable"](Client, arguments); + } + + public virtual Task NothingToSeeHere() + { + var arguments = new object[] { }; + return (Task) methodImpls["NothingToSeeHere"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIAmARefitInterfaceButNobodyUsesMe : IAmARefitInterfaceButNobodyUsesMe + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIAmARefitInterfaceButNobodyUsesMe(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task RefitMethod() + { + var arguments = new object[] { }; + return (Task) methodImpls["RefitMethod"](Client, arguments); + } + + public virtual Task AnotherRefitMethod() + { + var arguments = new object[] { }; + return (Task) methodImpls["AnotherRefitMethod"](Client, arguments); + } + + public virtual Task NoConstantsAllowed() + { + throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); + } + + public virtual Task SpacesShouldntBreakMe() + { + var arguments = new object[] { }; + return (Task) methodImpls["SpacesShouldntBreakMe"](Client, arguments); + } + + public virtual Task ReservedWordsForParameterNames(int @int,string @string,float @long) + { + var arguments = new object[] { @int,@string,@long }; + return (Task) methodImpls["ReservedWordsForParameterNames"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIBoringCrudApi : IBoringCrudApi + where T : class + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIBoringCrudApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task Create(T paylod) + { + var arguments = new object[] { paylod }; + return (Task) methodImpls["Create"](Client, arguments); + } + + public virtual Task> ReadAll() + { + var arguments = new object[] { }; + return (Task>) methodImpls["ReadAll"](Client, arguments); + } + + public virtual Task ReadOne(TKey key) + { + var arguments = new object[] { key }; + return (Task) methodImpls["ReadOne"](Client, arguments); + } + + public virtual Task Update(TKey key,T payload) + { + var arguments = new object[] { key,payload }; + return (Task) methodImpls["Update"](Client, arguments); + } + + public virtual Task Delete(TKey key) + { + var arguments = new object[] { key }; + return (Task) methodImpls["Delete"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedINamespaceCollisionApi : INamespaceCollisionApi + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedINamespaceCollisionApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task SomeRequest() + { + var arguments = new object[] { }; + return (Task) methodImpls["SomeRequest"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedINpmJs : INpmJs + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedINpmJs(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task GetCongruence() + { + var arguments = new object[] { }; + return (Task) methodImpls["GetCongruence"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIRequestBin : IRequestBin + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIRequestBin(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task Post() + { + var arguments = new object[] { }; + return (Task) methodImpls["Post"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIAmHalfRefit : IAmHalfRefit + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIAmHalfRefit(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task Post() + { + var arguments = new object[] { }; + return (Task) methodImpls["Post"](Client, arguments); + } + + public virtual Task Get() + { + throw new NotImplementedException("Either this method has no Refit HTTP method attribute or you've used something other than a string literal for the 'path' argument."); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIHttpBinApi : IHttpBinApi + where TResponse : class + where THeader : struct + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIHttpBinApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task Get(TParam param,THeader header) + { + var arguments = new object[] { param,header }; + return (Task) methodImpls["Get"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIBrokenWebApi : IBrokenWebApi + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIBrokenWebApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task PostAValue(string derp) + { + var arguments = new object[] { derp }; + return (Task) methodImpls["PostAValue"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIHttpContentApi : IHttpContentApi + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIHttpContentApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task PostFileUpload(HttpContent content) + { + var arguments = new object[] { content }; + return (Task) methodImpls["PostFileUpload"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIUseOverloadedMethods : IUseOverloadedMethods + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIUseOverloadedMethods(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task Get() + { + var arguments = new object[] { }; + return (Task) methodImpls["Get"](Client, arguments); + } + + public virtual Task Get(int id) + { + var arguments = new object[] { id }; + return (Task) methodImpls["Get"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedIRunscopeApi : IRunscopeApi + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedIRunscopeApi(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task UploadStream(Stream stream) + { + var arguments = new object[] { stream }; + return (Task) methodImpls["UploadStream"](Client, arguments); + } + + public virtual Task UploadBytes(byte[] bytes) + { + var arguments = new object[] { bytes }; + return (Task) methodImpls["UploadBytes"](Client, arguments); + } + + public virtual Task UploadString(string someString) + { + var arguments = new object[] { someString }; + return (Task) methodImpls["UploadString"](Client, arguments); + } + + public virtual Task UploadFileInfo(IEnumerable fileInfos,FileInfo anotherFile) + { + var arguments = new object[] { fileInfos,anotherFile }; + return (Task) methodImpls["UploadFileInfo"](Client, arguments); + } + + } +} + +namespace Refit.Tests +{ + using RefitInternalGenerated; + + [Preserve] + public partial class AutoGeneratedAcademyMG_APIs : AcademyMG_APIs + { + public HttpClient Client { get; protected set; } + readonly Dictionary> methodImpls; + + public AutoGeneratedAcademyMG_APIs(HttpClient client, IRequestBuilder requestBuilder) + { + methodImpls = requestBuilder.InterfaceHttpMethods.ToDictionary(k => k, v => requestBuilder.BuildRestResultFuncForMethod(v)); + Client = client; + } + + public virtual Task IDCheck(string id) + { + var arguments = new object[] { id }; + return (Task) methodImpls["IDCheck"](Client, arguments); + } + + public virtual Task Login(LoginData login) + { + var arguments = new object[] { login }; + return (Task) methodImpls["Login"](Client, arguments); + } + + public virtual Task Register(RegisterData register) + { + var arguments = new object[] { register }; + return (Task) methodImpls["Register"](Client, arguments); + } + + public virtual Task AddStudent(AddStudentData student) + { + var arguments = new object[] { student }; + return (Task) methodImpls["AddStudent"](Client, arguments); + } + + public virtual Task SetStudent(SetStudentData student) + { + var arguments = new object[] { student }; + return (Task) methodImpls["SetStudent"](Client, arguments); + } + + public virtual Task SetTeacher(SetTeacherData teacher) + { + var arguments = new object[] { teacher }; + return (Task) methodImpls["SetTeacher"](Client, arguments); + } + + public virtual Task GetAdmissionStatus(AdmissionStatusData data) + { + var arguments = new object[] { data }; + return (Task) methodImpls["GetAdmissionStatus"](Client, arguments); + } + + public virtual Task Search(string search_query) + { + var arguments = new object[] { search_query }; + return (Task) methodImpls["Search"](Client, arguments); + } + + public virtual Task GetAccessList() + { + var arguments = new object[] { }; + return (Task) methodImpls["GetAccessList"](Client, arguments); + } + + public virtual Task GetAttendanceCheck(AttendanceCheckData acdata) + { + var arguments = new object[] { acdata }; + return (Task) methodImpls["GetAttendanceCheck"](Client, arguments); + } + + public virtual Task GetAttendanceStatus(AttendanceStatusData asdata) + { + var arguments = new object[] { asdata }; + return (Task) methodImpls["GetAttendanceStatus"](Client, arguments); + } + + public virtual Task GetClassList() + { + var arguments = new object[] { }; + return (Task) methodImpls["GetClassList"](Client, arguments); + } + + public virtual Task GetClassName(int academy_class) + { + var arguments = new object[] { academy_class }; + return (Task) methodImpls["GetClassName"](Client, arguments); + } + + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/RequestBuilder.cs b/client/c#/AcademyMG/Refit-Tests/RequestBuilder.cs new file mode 100644 index 0000000..c31be25 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/RequestBuilder.cs @@ -0,0 +1,903 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.Http; +using System.Net; +using System.Reflection; +using System.Threading.Tasks; +using System.Threading; +using Xunit; + +namespace Refit.Tests +{ + [Headers("User-Agent: RefitTestClient", "Api-Version: 1")] + public interface IRestMethodInfoTests + { + [Get("@)!@_!($_!@($\\\\|||::::")] + Task GarbagePath(); + + [Get("/foo/bar/{id}")] + Task FetchSomeStuffMissingParameters(); + + [Get("/foo/bar/{id}")] + Task FetchSomeStuff(int id); + + [Get("/foo/bar/{id}?baz=bamf")] + Task FetchSomeStuffWithHardcodedQueryParam(int id); + + [Get("/foo/bar/{id}?baz=bamf")] + Task FetchSomeStuffWithQueryParam(int id, string search); + + [Get("/foo/bar/{id}")] + Task FetchSomeStuffWithAlias([AliasAs("id")] int anId); + + [Get("/foo/bar/{width}x{height}")] + Task FetchAnImage(int width, int height); + + [Get("/foo/bar/{id}")] + IObservable FetchSomeStuffWithBody([AliasAs("id")] int anId, [Body] Dictionary theData); + + [Post("/foo/bar/{id}")] + IObservable PostSomeUrlEncodedStuff([AliasAs("id")] int anId, [Body(BodySerializationMethod.UrlEncoded)] Dictionary theData); + + [Get("/foo/bar/{id}")] + [Headers("Api-Version: 2 ")] + Task FetchSomeStuffWithHardcodedHeaders(int id); + + [Get("/foo/bar/{id}")] + Task FetchSomeStuffWithDynamicHeader(int id, [Header("Authorization")] string authorization); + + [Post("/foo/{id}")] + Task OhYeahValueTypes(int id, [Body] int whatever); + + [Post("/foo/{id}")] + Task VoidPost(int id); + + [Post("/foo/{id}")] + string AsyncOnlyBuddy(int id); + + [Patch("/foo/{id}")] + IObservable PatchSomething(int id, [Body] string someAttribute); + + + [Post("/foo")] + Task PostWithBodyDetected(Dictionary theData); + + [Get("/foo")] + Task GetWithBodyDetected(Dictionary theData); + + [Put("/foo")] + Task PutWithBodyDetected(Dictionary theData); + + [Patch("/foo")] + Task PatchWithBodyDetected(Dictionary theData); + + [Post("/foo")] + Task TooManyComplexTypes(Dictionary theData, Dictionary theData1); + + [Post("/foo")] + Task ManyComplexTypes(Dictionary theData, [Body] Dictionary theData1); + } + + public class RestMethodInfoTests + { + + [Fact] + public void TooManyComplexTypesThrows() + { + var input = typeof(IRestMethodInfoTests); + + Assert.Throws(() => { + var fixture = new RestMethodInfo( + input, + input.GetMethods().First(x => x.Name == "TooManyComplexTypes")); + }); + + } + + [Fact] + public void ManyComplexTypes() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "ManyComplexTypes")); + + Assert.Equal(1, fixture.QueryParameterMap.Count); + Assert.NotNull(fixture.BodyParameterInfo); + Assert.Equal(1, fixture.BodyParameterInfo.Item2); + } + + [Fact] + public void DefaultBodyParameterDetectedForPost() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "PostWithBodyDetected")); + + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.NotNull(fixture.BodyParameterInfo); + } + + [Fact] + public void DefaultBodyParameterDetectedForPut() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "PutWithBodyDetected")); + + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.NotNull(fixture.BodyParameterInfo); + } + + [Fact] + public void DefaultBodyParameterDetectedForPatch() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "PatchWithBodyDetected")); + + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.NotNull(fixture.BodyParameterInfo); + } + + [Fact] + public void DefaultBodyParameterNotDetectedForGet() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "GetWithBodyDetected")); + + Assert.Equal(1, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void GarbagePathsShouldThrow() + { + bool shouldDie = true; + + try { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "GarbagePath")); + } catch (ArgumentException) { + shouldDie = false; + } + + Assert.False(shouldDie); + } + + [Fact] + public void MissingParametersShouldBlowUp() + { + bool shouldDie = true; + + try { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffMissingParameters")); + } catch (ArgumentException) { + shouldDie = false; + } + + Assert.False(shouldDie); + } + + [Fact] + public void ParameterMappingSmokeTest() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuff")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void ParameterMappingWithQuerySmokeTest() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithQueryParam")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal("search", fixture.QueryParameterMap[1]); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void ParameterMappingWithHardcodedQuerySmokeTest() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithHardcodedQueryParam")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void AliasMappingShouldWork() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithAlias")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void MultipleParametersPerSegmentShouldWork() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchAnImage")); + Assert.Equal("width", fixture.ParameterMap[0]); + Assert.Equal("height", fixture.ParameterMap[1]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + } + + [Fact] + public void FindTheBodyParameter() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithBody")); + Assert.Equal("id", fixture.ParameterMap[0]); + + Assert.NotNull(fixture.BodyParameterInfo); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Equal(1, fixture.BodyParameterInfo.Item2); + } + + [Fact] + public void AllowUrlEncodedContent() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "PostSomeUrlEncodedStuff")); + Assert.Equal("id", fixture.ParameterMap[0]); + + Assert.NotNull(fixture.BodyParameterInfo); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Equal(BodySerializationMethod.UrlEncoded, fixture.BodyParameterInfo.Item1); + } + + [Fact] + public void HardcodedHeadersShouldWork() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithHardcodedHeaders")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + + Assert.True(fixture.Headers.ContainsKey("Api-Version"), "Headers include Api-Version header"); + Assert.Equal("2", fixture.Headers["Api-Version"]); + Assert.True(fixture.Headers.ContainsKey("User-Agent"), "Headers include User-Agent header"); + Assert.Equal("RefitTestClient", fixture.Headers["User-Agent"]); + Assert.Equal(2, fixture.Headers.Count); + } + + [Fact] + public void DynamicHeadersShouldWork() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "FetchSomeStuffWithDynamicHeader")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Null(fixture.BodyParameterInfo); + + Assert.Equal("Authorization", fixture.HeaderParameterMap[1]); + Assert.True(fixture.Headers.ContainsKey("User-Agent"), "Headers include User-Agent header"); + Assert.Equal("RefitTestClient", fixture.Headers["User-Agent"]); + Assert.Equal(2, fixture.Headers.Count); + } + + [Fact] + public void ValueTypesDontBlowUp() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "OhYeahValueTypes")); + Assert.Equal("id", fixture.ParameterMap[0]); + Assert.Equal(0, fixture.QueryParameterMap.Count); + Assert.Equal(BodySerializationMethod.Json, fixture.BodyParameterInfo.Item1); + Assert.Equal(1, fixture.BodyParameterInfo.Item2); + + Assert.Equal(typeof(bool), fixture.SerializedReturnType); + } + + [Fact] + public void ReturningTaskShouldWork() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "VoidPost")); + Assert.Equal("id", fixture.ParameterMap[0]); + + Assert.Equal(typeof(Task), fixture.ReturnType); + Assert.Equal(typeof(void), fixture.SerializedReturnType); + } + + [Fact] + public void SyncMethodsShouldThrow() + { + bool shouldDie = true; + + try { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "AsyncOnlyBuddy")); + } catch (ArgumentException) { + shouldDie = false; + } + + Assert.False(shouldDie); + } + + [Fact] + public void UsingThePatchAttributeSetsTheCorrectMethod() + { + var input = typeof(IRestMethodInfoTests); + var fixture = new RestMethodInfo(input, input.GetMethods().First(x => x.Name == "PatchSomething")); + + Assert.Equal("PATCH", fixture.HttpMethod.Method); + } + } + + [Headers("User-Agent: RefitTestClient", "Api-Version: 1")] + public interface IDummyHttpApi + { + [Get("/foo/bar/{id}")] + Task FetchSomeStuff(int id); + + [Get("/foo/bar/{id}?baz=bamf")] + Task FetchSomeStuffWithHardcodedQueryParameter(int id); + + [Get("/foo/bar/{id}?baz=bamf")] + Task FetchSomeStuffWithHardcodedAndOtherQueryParameters(int id, [AliasAs("search_for")] string searchQuery); + + [Get("/{id}/{width}x{height}/foo")] + Task FetchSomethingWithMultipleParametersPerSegment(int id, int width, int height); + + [Get("/foo/bar/{id}")] + [Headers("Api-Version: 2")] + Task FetchSomeStuffWithHardcodedHeader(int id); + + [Get("/foo/bar/{id}")] + [Headers("Api-Version")] + Task FetchSomeStuffWithNullHardcodedHeader(int id); + + [Get("/foo/bar/{id}")] + [Headers("Api-Version: ")] + Task FetchSomeStuffWithEmptyHardcodedHeader(int id); + + [Post("/foo/bar/{id}")] + [Headers("Content-Type: literally/anything")] + Task PostSomeStuffWithHardCodedContentTypeHeader(int id, [Body] string content); + + [Get("/foo/bar/{id}")] + [Headers("Authorization: SRSLY aHR0cDovL2kuaW1ndXIuY29tL0NGRzJaLmdpZg==")] + Task FetchSomeStuffWithDynamicHeader(int id, [Header("Authorization")] string authorization); + + [Get("/foo/bar/{id}")] + Task FetchSomeStuffWithCustomHeader(int id, [Header("X-Emoji")] string custom); + + [Post("/foo/bar/{id}")] + Task PostSomeStuffWithCustomHeader(int id, [Body] object body, [Header("X-Emoji")] string emoji); + + [Get("/string")] + Task FetchSomeStuffWithoutFullPath(); + + [Get("/void")] + Task FetchSomeStuffWithVoid(); + + [Get("/void/{id}/path")] + Task FetchSomeStuffWithVoidAndQueryAlias(string id, [AliasAs("a")] string valueA, [AliasAs("b")] string valueB); + + [Post("/foo/bar/{id}")] + Task PostSomeUrlEncodedStuff(int id, [Body(BodySerializationMethod.UrlEncoded)] object content); + + [Post("/foo/bar/{id}")] + Task PostSomeAliasedUrlEncodedStuff(int id,[Body(BodySerializationMethod.UrlEncoded)] SomeRequestData content); + + string SomeOtherMethod(); + + [Put("/foo/bar/{id}")] + Task PutSomeContentWithAuthorization(int id, [Body] object content, [Header("Authorization")] string authorization); + + [Put("/foo/bar/{id}")] + Task PutSomeStuffWithDynamicContentType(int id, [Body] string content, [Header("Content-Type")] string contentType); + + [Post("/foo/bar/{id}")] + Task PostAValueType(int id, [Body] Guid? content); + + [Patch("/foo/bar/{id}")] + IObservable PatchSomething(int id, [Body] string someAttribute); + } + + interface ICancellableMethods + { + [Get("/foo")] + Task GetWithCancellation(CancellationToken token = default (CancellationToken)); + [Get("/foo")] + Task GetWithCancellationAndReturn(CancellationToken token = default (CancellationToken)); + } + + + public class SomeRequestData + { + [AliasAs("rpn")] + public int ReadablePropertyName { get; set; } + } + + public class TestHttpMessageHandler : HttpMessageHandler + { + public HttpRequestMessage RequestMessage { get; private set; } + public int MessagesSent { get; set; } + public HttpContent Content { get; set; } + public Func ContentFactory { get; set; } + public CancellationToken CancellationToken { get; set; } + public string SendContent { get; set; } + + public TestHttpMessageHandler(string content = "test") + { + Content = new StringContent(content); + ContentFactory = () => Content; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + RequestMessage = request; + if (request.Content != null) { + SendContent = await request.Content.ReadAsStringAsync().ConfigureAwait(false); + } + + CancellationToken = cancellationToken; + MessagesSent++; + + return new HttpResponseMessage(HttpStatusCode.OK) { Content = ContentFactory() }; + } + } + + public class TestUrlParameterFormatter : IUrlParameterFormatter + { + readonly string constantParameterOutput; + + public TestUrlParameterFormatter(string constantOutput) + { + constantParameterOutput = constantOutput; + } + + public string Format(object value, ParameterInfo parameterInfo) + { + return constantParameterOutput; + } + } + + public class RequestBuilderTests + { + + [Fact] + public void MethodsShouldBeCancellableDefault() + { + var fixture = new RequestBuilderImplementation(typeof(ICancellableMethods)); + var factory = fixture.RunRequest("GetWithCancellation"); + var output = factory(new object[0]); + + var uri = new Uri(new Uri("http://api"), output.RequestMessage.RequestUri); + Assert.Equal("/foo", uri.PathAndQuery); + Assert.False(output.CancellationToken.IsCancellationRequested); + } + + [Fact] + public void MethodsShouldBeCancellableWithToken() + { + var fixture = new RequestBuilderImplementation(typeof(ICancellableMethods)); + var factory = fixture.RunRequest("GetWithCancellation"); + + var cts = new CancellationTokenSource(); + + var output = factory(new object[]{cts.Token}); + + var uri = new Uri(new Uri("http://api"), output.RequestMessage.RequestUri); + Assert.Equal("/foo", uri.PathAndQuery); + Assert.False(output.CancellationToken.IsCancellationRequested); + } + + [Fact] + public void MethodsShouldBeCancellableWithTokenDoesCancel() + { + var fixture = new RequestBuilderImplementation(typeof(ICancellableMethods)); + var factory = fixture.RunRequest("GetWithCancellation"); + + var cts = new CancellationTokenSource(); + cts.Cancel(); + + var output = factory(new object[] { cts.Token }); + Assert.True(output.CancellationToken.IsCancellationRequested); + } + + [Fact] + public void HttpContentTest() + { + var fixture = new RequestBuilderImplementation(typeof(IHttpContentApi)); + var factory = fixture.BuildRestResultFuncForMethod("PostFileUpload"); + var testHttpMessageHandler = new TestHttpMessageHandler(); + var retContent = new StreamContent(new MemoryStream()); + testHttpMessageHandler.Content = retContent; + + var mpc = new MultipartContent("foosubtype"); + + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/") }, new object[] { mpc }); + task.Wait(); + + Assert.Equal(testHttpMessageHandler.RequestMessage.Content, mpc); + Assert.Equal(retContent, task.Result); + } + + [Fact] + public void MethodsThatDontHaveAnHttpMethodShouldFail() + { + var failureMethods = new[] { + "SomeOtherMethod", + "weofjwoeijfwe", + null, + }; + + var successMethods = new[] { + "FetchSomeStuff", + }; + + foreach (var v in failureMethods) { + bool shouldDie = true; + + try { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + fixture.BuildRequestFactoryForMethod(v); + } catch (Exception) { + shouldDie = false; + } + Assert.False(shouldDie); + } + + foreach (var v in successMethods) { + bool shouldDie = false; + + try { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + fixture.BuildRequestFactoryForMethod(v); + } catch (Exception ex) { + shouldDie = true; + } + + Assert.False(shouldDie); + } + } + + [Fact] + public void HardcodedQueryParamShouldBeInUrl() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithHardcodedQueryParameter"); + var output = factory(new object[] { 6 }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/foo/bar/6?baz=bamf", uri.PathAndQuery); + } + + [Fact] + public void ParameterizedQueryParamsShouldBeInUrl() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithHardcodedAndOtherQueryParameters"); + var output = factory(new object[] { 6, "foo" }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/foo/bar/6?baz=bamf&search_for=foo", uri.PathAndQuery); + } + + [Fact] + public void ParameterizedQueryParamsShouldBeInUrlAndValuesEncoded() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithHardcodedAndOtherQueryParameters"); + var output = factory(new object[] { 6, "test@example.com" }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/foo/bar/6?baz=bamf&search_for=test%40example.com", uri.PathAndQuery); + } + + [Fact] + public void ParameterizedQueryParamsShouldBeInUrlAndValuesEncodedWhenMixedReplacementAndQuery() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithVoidAndQueryAlias"); + var output = factory(new object[] { "6", "test@example.com", "push!=pull" }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/void/6/path?a=test%40example.com&b=push!%3dpull", uri.PathAndQuery); + } + + [Fact] + public void QueryParamWithPathDelimiterShouldBeEncoded() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithVoidAndQueryAlias"); + var output = factory(new object[] { "6/6", "test@example.com", "push!=pull" }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/void/6%2F6/path?a=test%40example.com&b=push!%3dpull", uri.PathAndQuery); + } + + [Fact] + public void ParameterizedQueryParamsShouldBeInUrlAndValuesEncodedWhenMixedReplacementAndQueryBadId() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithVoidAndQueryAlias"); + var output = factory(new object[] { "6", "test@example.com", "push!=pull" }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/void/6/path?a=test%40example.com&b=push!%3dpull", uri.PathAndQuery); + } + + [Fact] + public void MultipleParametersInTheSameSegmentAreGeneratedProperly() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomethingWithMultipleParametersPerSegment"); + var output = factory(new object[] { 6, 1024, 768 }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/6/1024x768/foo", uri.PathAndQuery); + } + + [Fact] + public void HardcodedHeadersShouldBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithHardcodedHeader"); + var output = factory(new object[] { 6 }); + + Assert.True(output.Headers.Contains("User-Agent"), "Headers include User-Agent header"); + Assert.Equal("RefitTestClient", output.Headers.UserAgent.ToString()); + Assert.True(output.Headers.Contains("Api-Version"), "Headers include Api-Version header"); + Assert.Equal("2", output.Headers.GetValues("Api-Version").Single()); + } + + [Fact] + public void EmptyHardcodedHeadersShouldBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithEmptyHardcodedHeader"); + var output = factory(new object[] { 6 }); + + Assert.True(output.Headers.Contains("User-Agent"), "Headers include User-Agent header"); + Assert.Equal("RefitTestClient", output.Headers.UserAgent.ToString()); + Assert.True(output.Headers.Contains("Api-Version"), "Headers include Api-Version header"); + Assert.Equal("", output.Headers.GetValues("Api-Version").Single()); + } + [Fact] + public void NullHardcodedHeadersShouldNotBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithNullHardcodedHeader"); + var output = factory(new object[] { 6 }); + + Assert.True(output.Headers.Contains("User-Agent"), "Headers include User-Agent header"); + Assert.Equal("RefitTestClient", output.Headers.UserAgent.ToString()); + Assert.False(output.Headers.Contains("Api-Version"), "Headers include Api-Version header"); + } + + [Fact] + public void ContentHeadersCanBeHardcoded() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("PostSomeStuffWithHardCodedContentTypeHeader"); + var output = factory(new object[] { 6, "stuff" }); + + Assert.True(output.Content.Headers.Contains("Content-Type"), "Content headers include Content-Type header"); + Assert.Equal("literally/anything", output.Content.Headers.ContentType.ToString()); + } + + [Fact] + public void DynamicHeaderShouldBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithDynamicHeader"); + var output = factory(new object[] { 6, "Basic RnVjayB5ZWFoOmhlYWRlcnMh" }); + + Assert.NotNull(output.Headers.Authorization);//, "Headers include Authorization header"); + Assert.Equal("RnVjayB5ZWFoOmhlYWRlcnMh", output.Headers.Authorization.Parameter); + } + + [Fact] + public void CustomDynamicHeaderShouldBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithCustomHeader"); + var output = factory(new object[] { 6, ":joy_cat:" }); + + Assert.True(output.Headers.Contains("X-Emoji"), "Headers include X-Emoji header"); + Assert.Equal(":joy_cat:", output.Headers.GetValues("X-Emoji").First()); + } + + [Fact] + public void EmptyDynamicHeaderShouldBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithCustomHeader"); + var output = factory(new object[] { 6, "" }); + + Assert.True(output.Headers.Contains("X-Emoji"), "Headers include X-Emoji header"); + Assert.Equal("", output.Headers.GetValues("X-Emoji").First()); + } + + [Fact] + public void NullDynamicHeaderShouldNotBeInHeaders() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuffWithDynamicHeader"); + var output = factory(new object[] { 6, null }); + + Assert.Null(output.Headers.Authorization);//, "Headers include Authorization header"); + } + + [Fact] + public void AddCustomHeadersToRequestHeadersOnly() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("PostSomeStuffWithCustomHeader"); + var output = factory(new object[] { 6, new { Foo = "bar" }, ":smile_cat:" }); + + Assert.True(output.Headers.Contains("Api-Version"), "Headers include Api-Version header"); + Assert.True(output.Headers.Contains("X-Emoji"), "Headers include X-Emoji header"); + Assert.False(output.Content.Headers.Contains("Api-Version"), "Content headers include Api-Version header"); + Assert.False(output.Content.Headers.Contains("X-Emoji"), "Content headers include X-Emoji header"); + } + + [Fact] + public void HttpClientShouldPrefixedAbsolutePathToTheRequestUri() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRestResultFuncForMethod("FetchSomeStuffWithoutFullPath"); + var testHttpMessageHandler = new TestHttpMessageHandler(); + + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/foo/bar") }, new object[0]); + task.Wait(); + + Assert.Equal("http://api/foo/bar/string", testHttpMessageHandler.RequestMessage.RequestUri.ToString()); + } + + [Fact] + public void HttpClientForVoidMethodShouldPrefixedAbsolutePathToTheRequestUri() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRestResultFuncForMethod("FetchSomeStuffWithVoid"); + var testHttpMessageHandler = new TestHttpMessageHandler(); + + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/foo/bar") }, new object[0]); + task.Wait(); + + Assert.Equal("http://api/foo/bar/void", testHttpMessageHandler.RequestMessage.RequestUri.ToString()); + } + + [Fact] + public void HttpClientShouldNotPrefixEmptyAbsolutePathToTheRequestUri() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRestResultFuncForMethod("FetchSomeStuff"); + var testHttpMessageHandler = new TestHttpMessageHandler(); + + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/") }, new object[] { 42 }); + task.Wait(); + + Assert.Equal("http://api/foo/bar/42", testHttpMessageHandler.RequestMessage.RequestUri.ToString()); + } + + [Fact] + public void DontBlowUpWithDynamicAuthorizationHeaderAndContent() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("PutSomeContentWithAuthorization"); + var output = factory(new object[] { 7, new { Octocat = "Dunetocat" }, "Basic RnVjayB5ZWFoOmhlYWRlcnMh" }); + + Assert.NotNull(output.Headers.Authorization);//, "Headers include Authorization header"); + Assert.Equal("RnVjayB5ZWFoOmhlYWRlcnMh", output.Headers.Authorization.Parameter); + } + + [Fact] + public void SuchFlexibleContentTypeWow() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.BuildRequestFactoryForMethod("PutSomeStuffWithDynamicContentType"); + var output = factory(new object[] { 7, "such \"refit\" is \"amaze\" wow", "text/dson" }); + + Assert.NotNull(output.Content);//, "Request has content"); + Assert.NotNull(output.Content.Headers.ContentType);//, "Headers include Content-Type header"); + Assert.Equal("text/dson", output.Content.Headers.ContentType.MediaType);//, "Content-Type header has the expected value"); + } + + [Fact] + public void BodyContentGetsUrlEncoded() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.RunRequest("PostSomeUrlEncodedStuff"); + var output = factory( + new object[] { + 6, + new { + Foo = "Something", + Bar = 100, + Baz = default(string) + } + }); + + Assert.Equal("Foo=Something&Bar=100&Baz=", output.SendContent); + } + + [Fact] + public async Task FormFieldGetsAliased() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.RunRequest("PostSomeAliasedUrlEncodedStuff"); + var output = factory( + new object[] { + 6, + new SomeRequestData { + ReadablePropertyName = 99 + } + }); + + + + Assert.Equal("rpn=99", output.SendContent); + } + + [Fact] + public async Task CustomParmeterFormatter() + { + var settings = new RefitSettings { UrlParameterFormatter = new TestUrlParameterFormatter("custom-parameter") }; + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi), settings); + + var factory = fixture.BuildRequestFactoryForMethod("FetchSomeStuff"); + var output = factory(new object[] { 5 }); + + var uri = new Uri(new Uri("http://api"), output.RequestUri); + Assert.Equal("/foo/bar/custom-parameter", uri.PathAndQuery); + } + + [Fact] + public void ICanPostAValueTypeIfIWantYoureNotTheBossOfMe() + { + var fixture = new RequestBuilderImplementation(typeof(IDummyHttpApi)); + var factory = fixture.RunRequest("PostAValueType", "true"); + var guid = Guid.NewGuid(); + var expected = string.Format("\"{0}\"", guid); + var output = factory(new object[] { 7, guid }); + + + Assert.Equal(expected, output.SendContent); + } + } + + static class RequestBuilderTestExtensions + { + public static Func BuildRequestFactoryForMethod(this IRequestBuilder builder, string methodName) + { + var factory = builder.BuildRestResultFuncForMethod(methodName); + var testHttpMessageHandler = new TestHttpMessageHandler(); + + + return paramList => { + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/")}, paramList); + task.Wait(); + return testHttpMessageHandler.RequestMessage; + }; + } + + + public static Func RunRequest(this IRequestBuilder builder, string methodName, string returnContent = null) + { + var factory = builder.BuildRestResultFuncForMethod(methodName); + var testHttpMessageHandler = new TestHttpMessageHandler(); + if (returnContent != null) { + testHttpMessageHandler.Content = new StringContent(returnContent); + } + + return paramList => { + var task = (Task)factory(new HttpClient(testHttpMessageHandler) { BaseAddress = new Uri("http://api/") }, paramList); + task.Wait(); + return testHttpMessageHandler; + }; + } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/Resources/AboutResources.txt b/client/c#/AcademyMG/Refit-Tests/Resources/AboutResources.txt new file mode 100644 index 0000000..10f52d4 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Resources/AboutResources.txt @@ -0,0 +1,44 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.axml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable/ + icon.png + + layout/ + main.axml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called "R" +(this is an Android convention) that contains the tokens for each one of the resources +included. For example, for the above Resources layout, this is what the R class would expose: + +public class R { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main +to reference the layout/main.axml file, or R.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/client/c#/AcademyMG/Refit-Tests/Resources/Resource.designer.cs b/client/c#/AcademyMG/Refit-Tests/Resources/Resource.designer.cs new file mode 100644 index 0000000..786a3cd --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Resources/Resource.designer.cs @@ -0,0 +1,175 @@ +#pragma warning disable 1591 +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Mono Runtime Version: 4.0.30319.17020 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +[assembly: Android.Runtime.ResourceDesignerAttribute("Refit.Tests.Resource", IsApplication=true)] + +namespace Refit.Tests +{ + + + [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")] + public partial class Resource + { + + static Resource() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + public static void UpdateIdValues() + { + global::Xamarin.Android.NUnitLite.Resource.Id.OptionHostName = global::Refit.Tests.Resource.Id.OptionHostName; + global::Xamarin.Android.NUnitLite.Resource.Id.OptionPort = global::Refit.Tests.Resource.Id.OptionPort; + global::Xamarin.Android.NUnitLite.Resource.Id.OptionRemoteServer = global::Refit.Tests.Resource.Id.OptionRemoteServer; + global::Xamarin.Android.NUnitLite.Resource.Id.OptionsButton = global::Refit.Tests.Resource.Id.OptionsButton; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultFullName = global::Refit.Tests.Resource.Id.ResultFullName; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultMessage = global::Refit.Tests.Resource.Id.ResultMessage; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultResultState = global::Refit.Tests.Resource.Id.ResultResultState; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultRunSingleMethodTest = global::Refit.Tests.Resource.Id.ResultRunSingleMethodTest; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultStackTrace = global::Refit.Tests.Resource.Id.ResultStackTrace; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsFailed = global::Refit.Tests.Resource.Id.ResultsFailed; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsId = global::Refit.Tests.Resource.Id.ResultsId; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsIgnored = global::Refit.Tests.Resource.Id.ResultsIgnored; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsInconclusive = global::Refit.Tests.Resource.Id.ResultsInconclusive; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsMessage = global::Refit.Tests.Resource.Id.ResultsMessage; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsPassed = global::Refit.Tests.Resource.Id.ResultsPassed; + global::Xamarin.Android.NUnitLite.Resource.Id.ResultsResult = global::Refit.Tests.Resource.Id.ResultsResult; + global::Xamarin.Android.NUnitLite.Resource.Id.RunTestsButton = global::Refit.Tests.Resource.Id.RunTestsButton; + global::Xamarin.Android.NUnitLite.Resource.Id.TestSuiteListView = global::Refit.Tests.Resource.Id.TestSuiteListView; + global::Xamarin.Android.NUnitLite.Resource.Layout.options = global::Refit.Tests.Resource.Layout.options; + global::Xamarin.Android.NUnitLite.Resource.Layout.results = global::Refit.Tests.Resource.Layout.results; + global::Xamarin.Android.NUnitLite.Resource.Layout.test_result = global::Refit.Tests.Resource.Layout.test_result; + global::Xamarin.Android.NUnitLite.Resource.Layout.test_suite = global::Refit.Tests.Resource.Layout.test_suite; + } + + public partial class Attribute + { + + static Attribute() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Attribute() + { + } + } + + public partial class Drawable + { + + // aapt resource value: 0x7f020000 + public const int Icon = 2130837504; + + static Drawable() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Drawable() + { + } + } + + public partial class Id + { + + // aapt resource value: 0x7f040001 + public const int OptionHostName = 2130968577; + + // aapt resource value: 0x7f040002 + public const int OptionPort = 2130968578; + + // aapt resource value: 0x7f040000 + public const int OptionRemoteServer = 2130968576; + + // aapt resource value: 0x7f040010 + public const int OptionsButton = 2130968592; + + // aapt resource value: 0x7f04000b + public const int ResultFullName = 2130968587; + + // aapt resource value: 0x7f04000d + public const int ResultMessage = 2130968589; + + // aapt resource value: 0x7f04000c + public const int ResultResultState = 2130968588; + + // aapt resource value: 0x7f04000a + public const int ResultRunSingleMethodTest = 2130968586; + + // aapt resource value: 0x7f04000e + public const int ResultStackTrace = 2130968590; + + // aapt resource value: 0x7f040006 + public const int ResultsFailed = 2130968582; + + // aapt resource value: 0x7f040003 + public const int ResultsId = 2130968579; + + // aapt resource value: 0x7f040007 + public const int ResultsIgnored = 2130968583; + + // aapt resource value: 0x7f040008 + public const int ResultsInconclusive = 2130968584; + + // aapt resource value: 0x7f040009 + public const int ResultsMessage = 2130968585; + + // aapt resource value: 0x7f040005 + public const int ResultsPassed = 2130968581; + + // aapt resource value: 0x7f040004 + public const int ResultsResult = 2130968580; + + // aapt resource value: 0x7f04000f + public const int RunTestsButton = 2130968591; + + // aapt resource value: 0x7f040011 + public const int TestSuiteListView = 2130968593; + + static Id() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Id() + { + } + } + + public partial class Layout + { + + // aapt resource value: 0x7f030000 + public const int options = 2130903040; + + // aapt resource value: 0x7f030001 + public const int results = 2130903041; + + // aapt resource value: 0x7f030002 + public const int test_result = 2130903042; + + // aapt resource value: 0x7f030003 + public const int test_suite = 2130903043; + + static Layout() + { + global::Android.Runtime.ResourceIdManager.UpdateIdValues(); + } + + private Layout() + { + } + } + } +} +#pragma warning restore 1591 diff --git a/client/c#/AcademyMG/Refit-Tests/Resources/drawable/Icon.png b/client/c#/AcademyMG/Refit-Tests/Resources/drawable/Icon.png new file mode 100644 index 0000000..a07c69f Binary files /dev/null and b/client/c#/AcademyMG/Refit-Tests/Resources/drawable/Icon.png differ diff --git a/client/c#/AcademyMG/Refit-Tests/RestService.cs b/client/c#/AcademyMG/Refit-Tests/RestService.cs new file mode 100644 index 0000000..d77135c --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/RestService.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Reactive.Linq; +using System.Threading.Tasks; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Xunit; +using Refit; // InterfaceStubGenerator looks for this +using RichardSzalay.MockHttp; + + +namespace Refit.Tests +{ + public class RootObject + { + public string _id { get; set; } + public string _rev { get; set; } + public string name { get; set; } + } + + [Headers("User-Agent: Refit Integration Tests")] + public interface INpmJs + { + [Get("/congruence")] + Task GetCongruence(); + } + + public interface IRequestBin + { + [Post("/1h3a5jm1")] + Task Post(); + } + + public interface INoRefitHereBuddy + { + Task Post(); + } + + public interface IAmHalfRefit + { + [Post("/anything")] + Task Post(); + + Task Get(); + } + + public interface IHttpBinApi + where TResponse : class + where THeader : struct + { + [Get("")] + Task Get(TParam param, [Header("X-Refit")] THeader header); + } + + public interface IBrokenWebApi + { + [Post("/what-spec")] + Task PostAValue([Body] string derp); + } + + public interface IHttpContentApi + { + [Post("/blah")] + Task PostFileUpload([Body] HttpContent content); + } + + public class HttpBinGet + { + public Dictionary Args { get; set; } + public Dictionary Headers { get; set; } + public string Origin { get; set; } + public string Url { get; set; } + } + + public class RestServiceIntegrationTests + { + [Fact] + public async Task HitTheGitHubUserApi() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.Expect(HttpMethod.Get, "https://api.github.com/users/octocat") + .Respond("application/json", "{ 'login':'octocat', 'avatar_url':'http://foo/bar' }"); + + + var fixture = RestService.For("https://api.github.com", settings); + + var result = await fixture.GetUser("octocat"); + + Assert.Equal("octocat", result.Login); + Assert.False(String.IsNullOrEmpty(result.AvatarUrl)); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task HitWithCamelCaseParameter() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.Expect(HttpMethod.Get, "https://api.github.com/users/octocat") + .Respond("application/json", "{ 'login':'octocat', 'avatar_url':'http://foo/bar' }"); + + var fixture = RestService.For("https://api.github.com", settings); + + var result = await fixture.GetUserCamelCase("octocat"); + + Assert.Equal("octocat", result.Login); + Assert.False(String.IsNullOrEmpty(result.AvatarUrl)); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task HitTheGitHubOrgMembersApi() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.Expect(HttpMethod.Get, "https://api.github.com/orgs/github/members") + .Respond("application/json", "[{ 'login':'octocat', 'avatar_url':'http://foo/bar', 'type':'User'}]"); + + + var fixture = RestService.For("https://api.github.com", settings); + + var result = await fixture.GetOrgMembers("github"); + + Assert.True(result.Count > 0); + Assert.True(result.Any(member => member.Type == "User")); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task HitTheGitHubUserSearchApi() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.Expect(HttpMethod.Get, "https://api.github.com/search/users") + .WithQueryString("q", "tom repos:>42 followers:>1000") + .Respond("application/json", "{ 'total_count': 1, 'items': [{ 'login':'octocat', 'avatar_url':'http://foo/bar', 'type':'User'}]}"); + + var fixture = RestService.For("https://api.github.com", settings); + + var result = await fixture.FindUsers("tom repos:>42 followers:>1000"); + + Assert.True(result.TotalCount > 0); + Assert.True(result.Items.Any(member => member.Type == "User")); + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task HitTheGitHubUserApiAsObservable() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.Expect(HttpMethod.Get, "https://api.github.com/users/octocat") + .Respond("application/json", "{ 'login':'octocat', 'avatar_url':'http://foo/bar' }"); + + var fixture = RestService.For("https://api.github.com", settings); + + + var result = await fixture.GetUserObservable("octocat") + .Timeout(TimeSpan.FromSeconds(10)); + + Assert.Equal("octocat", result.Login); + Assert.False(String.IsNullOrEmpty(result.AvatarUrl)); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task HitTheGitHubUserApiAsObservableAndSubscribeAfterTheFact() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.When(HttpMethod.Get, "https://api.github.com/users/octocat") + .Respond("application/json", "{ 'login':'octocat', 'avatar_url':'http://foo/bar' }"); + + var fixture = RestService.For("https://api.github.com", settings); + + var obs = fixture.GetUserObservable("octocat") + .Timeout(TimeSpan.FromSeconds(10)); + + // NB: We're gonna await twice, so that the 2nd await is definitely + // after the result has completed. + await obs; + var result2 = await obs; + Assert.Equal("octocat", result2.Login); + Assert.False(String.IsNullOrEmpty(result2.AvatarUrl)); + } + + [Fact] + public async Task TwoSubscriptionsResultInTwoRequests() + { + var input = new TestHttpMessageHandler(); + + // we need to use a factory here to ensure each request gets its own httpcontent instance + input.ContentFactory = () => new StringContent("test"); + + var client = new HttpClient(input) { BaseAddress = new Uri("http://foo") }; + var fixture = RestService.For(client); + + Assert.Equal(0, input.MessagesSent); + + var obs = fixture.GetIndexObservable() + .Timeout(TimeSpan.FromSeconds(10)); + + var result1 = await obs; + Assert.Equal(1, input.MessagesSent); + + var result2 = await obs; + Assert.Equal(2, input.MessagesSent); + + // NB: TestHttpMessageHandler returns what we tell it to ('test' by default) + Assert.True(result1.Contains("test")); + Assert.True(result2.Contains("test")); + } + + [Fact] + public async Task ShouldRetHttpResponseMessage() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.When(HttpMethod.Get, "https://api.github.com/") + .Respond(HttpStatusCode.OK); + + + var fixture = RestService.For("https://api.github.com", settings); + var result = await fixture.GetIndex(); + + Assert.NotNull(result); + Assert.True(result.IsSuccessStatusCode); + } + + [Fact] + public async Task HitTheNpmJs() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp + }; + + mockHttp.Expect(HttpMethod.Get, "https://registry.npmjs.org/congruence") + .Respond("application/json", "{ '_id':'congruence', '_rev':'rev' , 'name':'name'}"); + + + + var fixture = RestService.For("https://registry.npmjs.org", settings); + var result = await fixture.GetCongruence(); + + Assert.Equal("congruence", result._id); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task PostToRequestBin() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp + }; + + mockHttp.Expect(HttpMethod.Post, "http://httpbin.org/1h3a5jm1") + .Respond(HttpStatusCode.OK); + + var fixture = RestService.For("http://httpbin.org/", settings); + + try { + await fixture.Post(); + } catch (ApiException ex) { + // we should be good but maybe a 404 occurred + } + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task CanGetDataOutOfErrorResponses() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp, + JsonSerializerSettings = new JsonSerializerSettings() { ContractResolver = new SnakeCasePropertyNamesContractResolver() } + }; + + mockHttp.When(HttpMethod.Get, "https://api.github.com/give-me-some-404-action") + .Respond(HttpStatusCode.NotFound, "application/json", "{'message': 'Not Found', 'documentation_url': 'http://foo/bar'}"); + + + var fixture = RestService.For("https://api.github.com", settings); + try { + await fixture.NothingToSeeHere(); + Assert.True(false); + } catch (ApiException exception) { + Assert.Equal(HttpStatusCode.NotFound, exception.StatusCode); + var content = exception.GetContentAs>(); + + Assert.Equal("Not Found", content["message"]); + Assert.NotNull(content["documentation_url"]); + } + } + + [Fact] + public void NonRefitInterfacesThrowMeaningfulExceptions() + { + try { + RestService.For("http://example.com"); + } catch (InvalidOperationException exception) { + Assert.StartsWith("INoRefitHereBuddy", exception.Message); + } + } + + [Fact] + public async Task NonRefitMethodsThrowMeaningfulExceptions() + { + try { + var fixture = RestService.For("http://example.com"); + await fixture.Get(); + } catch (NotImplementedException exception) { + Assert.Contains("no Refit HTTP method attribute", exception.Message); + } + } + + [Fact] + public async Task GenericsWork() + { + var mockHttp = new MockHttpMessageHandler(); + + var settings = new RefitSettings { + HttpMessageHandlerFactory = () => mockHttp + }; + + mockHttp.Expect(HttpMethod.Get, "http://httpbin.org/get") + .WithHeaders("X-Refit", "99") + .WithQueryString("param", "foo") + .Respond("application/json", "{'url': 'http://httpbin.org/get?param=foo', 'args': {'param': 'foo'}, 'headers':{'X-Refit':'99'}}"); + + + + var fixture = RestService.For>("http://httpbin.org/get", settings); + + var result = await fixture.Get("foo", 99); + + Assert.Equal("http://httpbin.org/get?param=foo", result.Url); + Assert.Equal("foo", result.Args["param"]); + Assert.Equal("99", result.Headers["X-Refit"]); + + mockHttp.VerifyNoOutstandingExpectation(); + } + + [Fact] + public async Task ValueTypesArentValidButTheyWorkAnyway() + { + var handler = new TestHttpMessageHandler("true"); + + var fixture = RestService.For(new HttpClient(handler) { BaseAddress = new Uri("http://nowhere.com") }); + + var result = await fixture.PostAValue("Does this work?"); + + Assert.Equal(true, result); + } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/Service/Academy_APIs.cs b/client/c#/AcademyMG/Refit-Tests/Service/Academy_APIs.cs new file mode 100644 index 0000000..c43931a --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/Service/Academy_APIs.cs @@ -0,0 +1,311 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Refit; + +namespace Refit.Tests +{ + #region Response + public class IDCheckResponse + { + public bool flag { get; set; } + } + + public class LoginResponse + { + public int status { get; set; } + public bool flag { get; set; } + public TeacherSubData teacher { get; set; } + } + + public class RegisterResponse + { + public bool flag { get; set; } + } + + public class AddStudentResponse + { + public bool flag { get; set; } + } + + public class SetStudentResponse + { + public bool flag { get; set; } + } + + public class SetTeacherResponse + { + public bool flag { get; set; } + } + + public class SearchResponse + { + public bool flag { get; set; } + public int count { get; set; } + public SearchSubData[] data { get; set; } + } + + public class AccessListResponse + { + public bool flag { get; set; } + public AccessListSubData[] data { get; set; } + } + + public class AttendanceCheckResponse + { + public bool flag { get; set; } + } + + public class AttendanceStatusResponse + { + public bool flag { get; set; } + public string data { get; set; } + } + + public class AdmissionStatusResponse + { + public bool flag { get; set; } + } + + public class ClassListResponse + { + public bool flag { get; set; } + public ClassListSubData[] data { get; set; } + } + + public class GetClassNameResponse + { + public bool flag { get; set; } + public GetClassNameSubData data { get; set; } + } + #endregion + + #region SendData + public class LoginData + { + [AliasAs("id")] + public string id { get; set; } + + [AliasAs("password")] + public string password { get; set; } + } + + public class RegisterData + { + [AliasAs("id")] + public string id { get; set; } + + [AliasAs("password")] + public string password { get; set; } + + [AliasAs("academy_class")] + public int academy_class { get; set; } + + [AliasAs("name")] + public string name { get; set; } + } + + public class AddStudentData + { + [AliasAs("name")] + public string name { get; set; } + + [AliasAs("sex")] + public bool sex { get; set; } + + [AliasAs("phone_num")] + public string phone_num { get; set; } + + [AliasAs("address")] + public string address { get; set; } + + [AliasAs("school_name")] + public string school_name { get; set; } + + [AliasAs("school_class")] + public int school_class { get; set; } + + [AliasAs("grade")] + public int grade { get; set; } + + [AliasAs("status_of_sign")] + public int sos { get; set; } + } + + public class SetStudentData + { + [AliasAs("id")] + public int id { get; set; } + + [AliasAs("name")] + public string name { get; set; } + + [AliasAs("sex")] + public bool sex { get; set; } + + [AliasAs("phone_num")] + public string phone_num { get; set; } + + [AliasAs("address")] + public string address { get; set; } + + [AliasAs("school_name")] + public string school_name { get; set; } + + [AliasAs("school_class")] + public int school_class { get; set; } + + [AliasAs("grade")] + public int grade { get; set; } + + [AliasAs("status_of_sign")] + public int sos { get; set; } + } + + public class SetTeacherData + { + [AliasAs("id")] + public string id { get; set; } + + [AliasAs("password")] + public string password { get; set; } + + [AliasAs("academy_class")] + public int academy_class { get; set; } + + [AliasAs("name")] + public string name { get; set; } + + [AliasAs("status")] + public int status { get; set; } + } + + public class AttendanceCheckData + { + [AliasAs("id")] + public int id { get; set; } + + [AliasAs("check")] + public bool check { get; set; } + } + + public class AttendanceStatusData + { + [AliasAs("id")] + public int id { get; set; } + } + + public class AdmissionStatusData + { + [AliasAs("id")] + public string id { get; set; } + + [AliasAs("status")] + public int status { get; set; } + } + #endregion + + #region SubData + public class TeacherSubData + { + public int academy_class { get; set; } + public string name { get; set; } + } + + public class SearchSubData + { + public int id { get; set; } + public string image { get; set; } + public string name { get; set; } + public bool sex { get; set; } + public string phone_num { get; set; } + public string address { get; set; } + public string school_name { get; set; } + public int school_class { get; set; } + public int grade { get; set; } + public int status_of_sign { get; set; } + public string date_of_admission { get; set; } + public string date_of_readdmission { get; set; } + public string date_of_exit { get; set; } + public string birthday { get; set; } + public int academy_class { get; set; } + } + + public class AccessListSubData + { + public string name { get; set; } + public string id { get; set; } + public int academy_class { get; set; } + } + + public class ClassListSubData + { + public string name { get; set; } + public int id { get; set; } + } + + public class GetClassNameSubData + { + public string name { get; set; } + public int id { get; set; } + } + #endregion + + [Headers("User-Agent: AcademyMG APIs Tests")] + public interface AcademyMG_APIs + { + //IDCheck + [Get("/api/idcheck")] + Task IDCheck(string id); + + //Login + [Post("/api/login")] + Task Login([Body(BodySerializationMethod.UrlEncoded)] LoginData login); + + //Register + [Post("/api/register")] + Task Register([Body(BodySerializationMethod.UrlEncoded)] RegisterData register); + + //AddStudent + [Post("/api/addstudent")] + Task AddStudent([Body(BodySerializationMethod.UrlEncoded)] AddStudentData student); + + //SetStudent + [Post("/api/setstudent")] + Task SetStudent([Body(BodySerializationMethod.UrlEncoded)] SetStudentData student); + + //SetTeacher + [Post("/api/setteacher")] + Task SetTeacher([Body(BodySerializationMethod.UrlEncoded)] SetTeacherData teacher); + + //Status Admission + [Post("/api/setteacher")] + Task GetAdmissionStatus([Body(BodySerializationMethod.UrlEncoded)] AdmissionStatusData data); + + //Search + [Get("/api/search")] + Task Search(string search_query); + + //AccessList + [Get("/api/accesslist")] + Task GetAccessList(); + + //AttendanceCheck + [Post("/api/attendancecheck")] + Task GetAttendanceCheck([Body(BodySerializationMethod.UrlEncoded)] AttendanceCheckData acdata); + + //AttendanceStatus + [Post("/api/attendancestatus")] + Task GetAttendanceStatus([Body(BodySerializationMethod.UrlEncoded)] AttendanceStatusData asdata); + + //ClassList + [Get("/api/classlist")] + Task GetClassList(); + + //ClassName + [Get("/api/getclassname")] + Task GetClassName(int academy_class); + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit-Tests/Test Files/Test.pdf b/client/c#/AcademyMG/Refit-Tests/Test Files/Test.pdf new file mode 100644 index 0000000..34adb8a Binary files /dev/null and b/client/c#/AcademyMG/Refit-Tests/Test Files/Test.pdf differ diff --git a/client/c#/AcademyMG/Refit-Tests/UnitTestAppDelegate.cs b/client/c#/AcademyMG/Refit-Tests/UnitTestAppDelegate.cs new file mode 100644 index 0000000..8cc4256 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/UnitTestAppDelegate.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; +using NUnit.UI; + +namespace RefitTestsiOS +{ + // The UIApplicationDelegate for the application. This class is responsible for launching the + // User Interface of the application, as well as listening (and optionally responding) to + // application events from iOS. + [Register ("UnitTestAppDelegate")] + public partial class UnitTestAppDelegate : UIApplicationDelegate + { + // class-level declarations + UIWindow window; + TouchRunner runner; + + // + // This method is invoked when the application has loaded and is ready to run. In this + // method you should instantiate the window, load the UI into it and then make the window + // visible. + // + // You have 17 seconds to return from this method, or iOS will terminate your application. + // + public override bool FinishedLaunching (UIApplication app, NSDictionary options) + { + // create a new window instance based on the screen size + window = new UIWindow (UIScreen.MainScreen.Bounds); + runner = new TouchRunner (window); + + // register every tests included in the main application/assembly + runner.Add (System.Reflection.Assembly.GetExecutingAssembly ()); + + window.RootViewController = new UINavigationController (runner.GetViewController ()); + + // make the window visible + window.MakeKeyAndVisible (); + + return true; + } + } +} diff --git a/client/c#/AcademyMG/Refit-Tests/app.config b/client/c#/AcademyMG/Refit-Tests/app.config new file mode 100644 index 0000000..d0071f8 --- /dev/null +++ b/client/c#/AcademyMG/Refit-Tests/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit.sln b/client/c#/AcademyMG/Refit.sln new file mode 100644 index 0000000..8d7b87c --- /dev/null +++ b/client/c#/AcademyMG/Refit.sln @@ -0,0 +1,166 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-NetStandard11", "Refit\Refit-NetStandard11.csproj", "{E315020F-33BC-4D85-BC6E-8346F06F1112}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-Net45", "Refit\Refit-Net45.csproj", "{252CE1CA-19FA-4445-A3C2-E4D6C80A935A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-Tests-Net45", "Refit-Tests\Refit-Tests-Net45.csproj", "{5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InterfaceStubGenerator", "InterfaceStubGenerator\InterfaceStubGenerator.csproj", "{5694F8AD-7A15-4717-B649-1749A311300B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-WPA81", "Refit\Refit-WPA81.csproj", "{200C9B4E-4881-44B2-B88D-EFE0E54193A1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4F1C8991-7097-4471-A9A6-A72005AB594D}" + ProjectSection(SolutionItems) = preProject + Rebracer.xml = Rebracer.xml + Refit\refit.nuspec = Refit\refit.nuspec + Refit\targets\refit.targets = Refit\targets\refit.targets + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-NetStandard13", "Refit\Refit-NetStandard13.csproj", "{C86EBFD7-E5AB-450B-85A3-E600570463ED}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Refit-WinRT45", "Refit\Refit-WinRT45.csproj", "{27DDD1C6-4037-419F-8682-100C71D5AD6F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{0E99249A-FB80-4C60-8FD3-13820E853FF7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkinExample", "MaterialSkinExample\MaterialSkinExample.csproj", "{47409AA5-62AE-4189-8E83-C471502DF5E9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkin", "MaterialSkin\MaterialSkin.csproj", "{8EB7611B-68CD-4B8B-987A-11717E2B250C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Debug|ARM.ActiveCfg = Debug|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Debug|x64.ActiveCfg = Debug|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Debug|x86.ActiveCfg = Debug|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Release|Any CPU.Build.0 = Release|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Release|ARM.ActiveCfg = Release|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Release|x64.ActiveCfg = Release|Any CPU + {E315020F-33BC-4D85-BC6E-8346F06F1112}.Release|x86.ActiveCfg = Release|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Debug|x64.ActiveCfg = Debug|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Debug|x86.ActiveCfg = Debug|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Release|Any CPU.Build.0 = Release|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Release|ARM.ActiveCfg = Release|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Release|x64.ActiveCfg = Release|Any CPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A}.Release|x86.ActiveCfg = Release|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Debug|x64.ActiveCfg = Debug|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Debug|x86.ActiveCfg = Debug|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Release|Any CPU.Build.0 = Release|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Release|ARM.ActiveCfg = Release|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Release|x64.ActiveCfg = Release|Any CPU + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605}.Release|x86.ActiveCfg = Release|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Debug|ARM.ActiveCfg = Debug|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Debug|x64.ActiveCfg = Debug|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Debug|x86.ActiveCfg = Debug|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Release|Any CPU.Build.0 = Release|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Release|ARM.ActiveCfg = Release|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Release|x64.ActiveCfg = Release|Any CPU + {5694F8AD-7A15-4717-B649-1749A311300B}.Release|x86.ActiveCfg = Release|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Debug|ARM.ActiveCfg = Debug|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Debug|x64.ActiveCfg = Debug|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Debug|x86.ActiveCfg = Debug|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Release|Any CPU.Build.0 = Release|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Release|ARM.ActiveCfg = Release|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Release|x64.ActiveCfg = Release|Any CPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1}.Release|x86.ActiveCfg = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|ARM.ActiveCfg = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|ARM.Build.0 = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|x64.ActiveCfg = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|x64.Build.0 = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|x86.ActiveCfg = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Debug|x86.Build.0 = Debug|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|Any CPU.Build.0 = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|ARM.ActiveCfg = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|ARM.Build.0 = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|x64.ActiveCfg = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|x64.Build.0 = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|x86.ActiveCfg = Release|Any CPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED}.Release|x86.Build.0 = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|ARM.Build.0 = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|x64.ActiveCfg = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|x64.Build.0 = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|x86.ActiveCfg = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Debug|x86.Build.0 = Debug|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|Any CPU.Build.0 = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|ARM.ActiveCfg = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|ARM.Build.0 = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|x64.ActiveCfg = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|x64.Build.0 = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|x86.ActiveCfg = Release|Any CPU + {27DDD1C6-4037-419F-8682-100C71D5AD6F}.Release|x86.Build.0 = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|ARM.ActiveCfg = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|ARM.Build.0 = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|x64.ActiveCfg = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|x64.Build.0 = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|x86.ActiveCfg = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|x86.Build.0 = Debug|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|Any CPU.Build.0 = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|ARM.ActiveCfg = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|ARM.Build.0 = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|x64.ActiveCfg = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|x64.Build.0 = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|x86.ActiveCfg = Release|Any CPU + {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|x86.Build.0 = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|ARM.ActiveCfg = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|ARM.Build.0 = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x64.ActiveCfg = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x64.Build.0 = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.ActiveCfg = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|x86.Build.0 = Debug|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.Build.0 = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|ARM.ActiveCfg = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|ARM.Build.0 = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x64.ActiveCfg = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x64.Build.0 = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.ActiveCfg = Release|Any CPU + {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5F52E5C6-9A0B-48B3-AE05-D8CB0B9CC605} = {0E99249A-FB80-4C60-8FD3-13820E853FF7} + EndGlobalSection +EndGlobal diff --git a/client/c#/AcademyMG/Refit.sln.DotSettings b/client/c#/AcademyMG/Refit.sln.DotSettings new file mode 100644 index 0000000..bf08c34 --- /dev/null +++ b/client/c#/AcademyMG/Refit.sln.DotSettings @@ -0,0 +1,36 @@ + + True + True + END_OF_LINE + END_OF_LINE + TOGETHER_SAME_LINE + False + False + SEPARATE + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + ALWAYS_ADD + False + END_OF_LINE + True + END_OF_LINE + False + False + False + ON_SINGLE_LINE + False + False + False + False + False + True + WRAP_IF_LONG + False + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + True + True + True \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Attributes.cs b/client/c#/AcademyMG/Refit/Attributes.cs new file mode 100644 index 0000000..2768b4d --- /dev/null +++ b/client/c#/AcademyMG/Refit/Attributes.cs @@ -0,0 +1,151 @@ +using System; +using System.Net.Http; + +namespace Refit +{ + public abstract class HttpMethodAttribute : Attribute + { + public abstract HttpMethod Method { get; } + + protected string path; + public virtual string Path { + get { return path; } + protected set { path = value; } + } + + public HttpMethodAttribute(string path) + { + Path = path; + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class GetAttribute : HttpMethodAttribute + { + public GetAttribute(string path) : base(path) {} + + public override HttpMethod Method { + get { return HttpMethod.Get; } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class PostAttribute : HttpMethodAttribute + { + public PostAttribute(string path) : base(path) {} + + public override HttpMethod Method { + get { return HttpMethod.Post; } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class PutAttribute : HttpMethodAttribute + { + public PutAttribute(string path) : base(path) {} + + public override HttpMethod Method { + get { return HttpMethod.Put; } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class DeleteAttribute : HttpMethodAttribute + { + public DeleteAttribute(string path) : base(path) {} + + public override HttpMethod Method { + get { return HttpMethod.Delete; } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class PatchAttribute : HttpMethodAttribute + { + public PatchAttribute(string path) : base(path) { } + + public override HttpMethod Method { + get { return new HttpMethod("PATCH"); } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class HeadAttribute : HttpMethodAttribute + { + public HeadAttribute(string path) : base(path) {} + + public override HttpMethod Method { + get { return HttpMethod.Head; } + } + } + + [AttributeUsage(AttributeTargets.Method)] + public class MultipartAttribute : Attribute { + } + + public enum BodySerializationMethod { + Json, UrlEncoded + } + + [AttributeUsage(AttributeTargets.Parameter)] + public class BodyAttribute : Attribute + { + public BodySerializationMethod SerializationMethod { get; protected set; } + + public BodyAttribute(BodySerializationMethod serializationMethod = BodySerializationMethod.Json) + { + SerializationMethod = serializationMethod; + } + } + + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)] + public class AliasAsAttribute : Attribute + { + public string Name { get; protected set; } + public AliasAsAttribute(string name) + { + this.Name = name; + } + } + + [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)] + public class AttachmentNameAttribute : Attribute + { + public string Name { get; protected set; } + public AttachmentNameAttribute(string name) + { + Name = name; + } + } + + [AttributeUsage(AttributeTargets.Interface | AttributeTargets.Method)] + public class HeadersAttribute : Attribute + { + public string[] Headers { get; private set; } + + public HeadersAttribute(params string[] headers) + { + Headers = headers ?? new string[0]; + } + } + + [AttributeUsage(AttributeTargets.Parameter)] + public class HeaderAttribute : Attribute + { + public string Header { get; private set; } + + public HeaderAttribute(string header) + { + Header = header; + } + } + + [AttributeUsage(AttributeTargets.Parameter)] + public class AuthorizeAttribute : HeaderAttribute + { + public AuthorizeAttribute(string scheme = "Bearer") + : base("Authorization: " + scheme) + { + } + } +} diff --git a/client/c#/AcademyMG/Refit/Helpers.cs b/client/c#/AcademyMG/Refit/Helpers.cs new file mode 100644 index 0000000..846f169 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Helpers.cs @@ -0,0 +1,38 @@ +// +// System.Web.Util.Helpers +// +// Authors: +// Marek Habersack (mhabersack@novell.com) +// +// (C) 2009 Novell, Inc (http://novell.com) + +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Globalization; + +namespace System.Web +{ + class Helpers + { + public static readonly CultureInfo InvariantCulture = CultureInfo.InvariantCulture; + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/HtmlEncoder.cs b/client/c#/AcademyMG/Refit/HtmlEncoder.cs new file mode 100644 index 0000000..a9d139c --- /dev/null +++ b/client/c#/AcademyMG/Refit/HtmlEncoder.cs @@ -0,0 +1,959 @@ +#define NET_4_0 + +// +// Authors: +// Patrik Torstensson (Patrik.Torstensson@labs2.com) +// Wictor Wilén (decode/encode functions) (wictor@ibizkit.se) +// Tim Coleman (tim@timcoleman.com) +// Gonzalo Paniagua Javier (gonzalo@ximian.com) + +// Marek Habersack +// +// (C) 2005-2010 Novell, Inc (http://novell.com/) +// + +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +using System; +using System.Collections.Generic; +#if !WINDOWS_APP +using System.Configuration; +#endif +using System.IO; +using System.Linq; +using System.Text; + +namespace System.Web +{ +#if NET_4_0 + public +#endif + class HttpEncoder + { + static char[] hexChars = "0123456789abcdef".ToCharArray(); + static object entitiesLock = new object(); + static List> entities; +#if NET_4_0 + static Lazy defaultEncoder; + static Lazy currentEncoderLazy; +#else + static HttpEncoder defaultEncoder; +#endif + static HttpEncoder currentEncoder; + + static List> Entities + { + get + { + lock (entitiesLock) + { + if (entities == null) + InitEntities(); + + return entities; + } + } + } + + public static HttpEncoder Current + { + get + { +#if NET_4_0 + if (currentEncoder == null) + currentEncoder = currentEncoderLazy.Value; +#endif + return currentEncoder; + } +#if NET_4_0 + set { + if (value == null) + throw new ArgumentNullException ("value"); + currentEncoder = value; + } +#endif + } + + public static HttpEncoder Default + { + get + { +#if NET_4_0 + return defaultEncoder.Value; +#else + return defaultEncoder; +#endif + } + } + + static HttpEncoder() + { +#if NET_4_0 + defaultEncoder = new Lazy (() => new HttpEncoder ()); + currentEncoderLazy = new Lazy (new Func (GetCustomEncoderFromConfig)); +#else + defaultEncoder = new HttpEncoder(); + currentEncoder = defaultEncoder; +#endif + } + + public HttpEncoder() + { + } +#if NET_4_0 + protected internal virtual +#else + internal static +#endif + void HeaderNameValueEncode(string headerName, string headerValue, out string encodedHeaderName, out string encodedHeaderValue) + { + if (String.IsNullOrEmpty(headerName)) + encodedHeaderName = headerName; + else + encodedHeaderName = EncodeHeaderString(headerName); + + if (String.IsNullOrEmpty(headerValue)) + encodedHeaderValue = headerValue; + else + encodedHeaderValue = EncodeHeaderString(headerValue); + } + + static void StringBuilderAppend(string s, ref StringBuilder sb) + { + if (sb == null) + sb = new StringBuilder(s); + else + sb.Append(s); + } + + static string EncodeHeaderString(string input) + { + StringBuilder sb = null; + char ch; + + for (int i = 0; i < input.Length; i++) + { + ch = input[i]; + + if ((ch < 32 && ch != 9) || ch == 127) + StringBuilderAppend(String.Format("%{0:x2}", (int)ch), ref sb); + } + + if (sb != null) + return sb.ToString(); + + return input; + } +#if NET_4_0 + protected internal virtual void HtmlAttributeEncode (string value, TextWriter output) + { + + if (output == null) + throw new ArgumentNullException ("output"); + + if (String.IsNullOrEmpty (value)) + return; + + output.Write (HtmlAttributeEncode (value)); + } + + protected internal virtual void HtmlDecode (string value, TextWriter output) + { + if (output == null) + throw new ArgumentNullException ("output"); + + output.Write (HtmlDecode (value)); + } + + protected internal virtual void HtmlEncode (string value, TextWriter output) + { + if (output == null) + throw new ArgumentNullException ("output"); + + output.Write (HtmlEncode (value)); + } + + protected internal virtual byte[] UrlEncode (byte[] bytes, int offset, int count) + { + return UrlEncodeToBytes (bytes, offset, count); + } + + static HttpEncoder GetCustomEncoderFromConfig () + { + return new HttpEncoder(); + } +#endif +#if NET_4_0 + protected internal virtual +#else + internal static +#endif + string UrlPathEncode(string value) + { + if (String.IsNullOrEmpty(value)) + return value; + + MemoryStream result = new MemoryStream(); + int length = value.Length; + for (int i = 0; i < length; i++) + UrlPathEncodeChar(value[i], result); + + var encodedBytes = result.ToArray(); + return Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); + } + + internal static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count) + { + if (bytes == null) + throw new ArgumentNullException("bytes"); + + int blen = bytes.Length; + if (blen == 0) + return new byte[0]; + + if (offset < 0 || offset >= blen) + throw new ArgumentOutOfRangeException("offset"); + + if (count < 0 || count > blen - offset) + throw new ArgumentOutOfRangeException("count"); + + MemoryStream result = new MemoryStream(count); + int end = offset + count; + for (int i = offset; i < end; i++) + UrlEncodeChar((char)bytes[i], result, false); + + return result.ToArray(); + } + + internal static string HtmlEncode(string s) + { + if (s == null) + return null; + + if (s.Length == 0) + return String.Empty; + + bool needEncode = false; + for (int i = 0; i < s.Length; i++) + { + char c = s[i]; + if (c == '&' || c == '"' || c == '<' || c == '>' || c > 159 +#if NET_4_0 + || c == '\'' +#endif +) + { + needEncode = true; + break; + } + } + + if (!needEncode) + return s; + + StringBuilder output = new StringBuilder(); + char ch; + int len = s.Length; + + for (int i = 0; i < len; i++) + { + switch (s[i]) + { + case '&': + output.Append("&"); + break; + case '>': + output.Append(">"); + break; + case '<': + output.Append("<"); + break; + case '"': + output.Append("""); + break; +#if NET_4_0 + case '\'': + output.Append ("'"); + break; +#endif + case '\uff1c': + output.Append("<"); + break; + + case '\uff1e': + output.Append(">"); + break; + + default: + ch = s[i]; + if (ch > 159 && ch < 256) + { + output.Append("&#"); + output.Append(((int)ch).ToString(Helpers.InvariantCulture)); + output.Append(";"); + } + else + output.Append(ch); + break; + } + } + + return output.ToString(); + } + + internal static string HtmlAttributeEncode(string s) + { +#if NET_4_0 + if (String.IsNullOrEmpty (s)) + return String.Empty; +#else + if (s == null) + return null; + + if (s.Length == 0) + return String.Empty; +#endif + bool needEncode = false; + for (int i = 0; i < s.Length; i++) + { + char c = s[i]; + if (c == '&' || c == '"' || c == '<' +#if NET_4_0 + || c == '\'' +#endif +) + { + needEncode = true; + break; + } + } + + if (!needEncode) + return s; + + StringBuilder output = new StringBuilder(); + int len = s.Length; + for (int i = 0; i < len; i++) + switch (s[i]) + { + case '&': + output.Append("&"); + break; + case '"': + output.Append("""); + break; + case '<': + output.Append("<"); + break; +#if NET_4_0 + case '\'': + output.Append ("'"); + break; +#endif + default: + output.Append(s[i]); + break; + } + + return output.ToString(); + } + + internal static string HtmlDecode(string s) + { + if (s == null) + return null; + + if (s.Length == 0) + return String.Empty; + + if (s.IndexOf('&') == -1) + return s; +#if NET_4_0 + StringBuilder rawEntity = new StringBuilder (); +#endif + StringBuilder entity = new StringBuilder(); + StringBuilder output = new StringBuilder(); + int len = s.Length; + // 0 -> nothing, + // 1 -> right after '&' + // 2 -> between '&' and ';' but no '#' + // 3 -> '#' found after '&' and getting numbers + int state = 0; + int number = 0; + bool is_hex_value = false; + bool have_trailing_digits = false; + + for (int i = 0; i < len; i++) + { + char c = s[i]; + if (state == 0) + { + if (c == '&') + { + entity.Append(c); +#if NET_4_0 + rawEntity.Append (c); +#endif + state = 1; + } + else + { + output.Append(c); + } + continue; + } + + if (c == '&') + { + state = 1; + if (have_trailing_digits) + { + entity.Append(number.ToString(Helpers.InvariantCulture)); + have_trailing_digits = false; + } + + output.Append(entity.ToString()); + entity.Length = 0; + entity.Append('&'); + continue; + } + + if (state == 1) + { + if (c == ';') + { + state = 0; + output.Append(entity.ToString()); + output.Append(c); + entity.Length = 0; + } + else + { + number = 0; + is_hex_value = false; + if (c != '#') + { + state = 2; + } + else + { + state = 3; + } + entity.Append(c); +#if NET_4_0 + rawEntity.Append (c); +#endif + } + } + else if (state == 2) + { + entity.Append(c); + if (c == ';') + { + string key = entity.ToString(); + + if (key.Length > 1) + { + string entityName = key.Substring(1, key.Length - 2); + int result = Entities.BinarySearch(new KeyValuePair(entityName, ' '), new EntityNameComparer()); + if (result >= 0) + { +#if !WINDOWS_APP + key = Entities[result].Value.ToString(Helpers.InvariantCulture); +#else + key = Entities[result].Value.ToString(); // What will this do? +#endif + } + } + + output.Append(key); + state = 0; + entity.Length = 0; +#if NET_4_0 + rawEntity.Length = 0; +#endif + } + } + else if (state == 3) + { + if (c == ';') + { +#if NET_4_0 + if (number == 0) + output.Append (rawEntity.ToString () + ";"); + else +#endif + if (number > 65535) + { + output.Append("&#"); + output.Append(number.ToString(Helpers.InvariantCulture)); + output.Append(";"); + } + else + { + output.Append((char)number); + } + state = 0; + entity.Length = 0; +#if NET_4_0 + rawEntity.Length = 0; +#endif + have_trailing_digits = false; + } + else if (is_hex_value && Uri.IsHexDigit(c)) + { + number = number * 16 + Uri.FromHex(c); + have_trailing_digits = true; +#if NET_4_0 + rawEntity.Append (c); +#endif + } + else if (Char.IsDigit(c)) + { + number = number * 10 + ((int)c - '0'); + have_trailing_digits = true; +#if NET_4_0 + rawEntity.Append (c); +#endif + } + else if (number == 0 && (c == 'x' || c == 'X')) + { + is_hex_value = true; +#if NET_4_0 + rawEntity.Append (c); +#endif + } + else + { + state = 2; + if (have_trailing_digits) + { + entity.Append(number.ToString(Helpers.InvariantCulture)); + have_trailing_digits = false; + } + entity.Append(c); + } + } + } + + if (entity.Length > 0) + { + output.Append(entity.ToString()); + } + else if (have_trailing_digits) + { + output.Append(number.ToString(Helpers.InvariantCulture)); + } + return output.ToString(); + } + + internal static bool NotEncoded(char c) + { + return (c == '!' || c == '(' || c == ')' || c == '*' || c == '-' || c == '.' || c == '_' +#if !NET_4_0 + || c == '\'' +#endif +); + } + + internal static void UrlEncodeChar(char c, Stream result, bool isUnicode) + { + if (c > 255) + { + //FIXME: what happens when there is an internal error? + //if (!isUnicode) + // throw new ArgumentOutOfRangeException ("c", c, "c must be less than 256"); + int idx; + int i = (int)c; + + result.WriteByte((byte)'%'); + result.WriteByte((byte)'u'); + idx = i >> 12; + result.WriteByte((byte)hexChars[idx]); + idx = (i >> 8) & 0x0F; + result.WriteByte((byte)hexChars[idx]); + idx = (i >> 4) & 0x0F; + result.WriteByte((byte)hexChars[idx]); + idx = i & 0x0F; + result.WriteByte((byte)hexChars[idx]); + return; + } + + if (c > ' ' && NotEncoded(c)) + { + result.WriteByte((byte)c); + return; + } + if (c == ' ') + { + result.WriteByte((byte)'+'); + return; + } + if ((c < '0') || + (c < 'A' && c > '9') || + (c > 'Z' && c < 'a') || + (c > 'z')) + { + if (isUnicode && c > 127) + { + result.WriteByte((byte)'%'); + result.WriteByte((byte)'u'); + result.WriteByte((byte)'0'); + result.WriteByte((byte)'0'); + } + else + result.WriteByte((byte)'%'); + + int idx = ((int)c) >> 4; + result.WriteByte((byte)hexChars[idx]); + idx = ((int)c) & 0x0F; + result.WriteByte((byte)hexChars[idx]); + } + else + result.WriteByte((byte)c); + } + + internal static void UrlPathEncodeChar(char c, Stream result) + { + if (c < 33 || c > 126) + { + byte[] bIn = Encoding.UTF8.GetBytes(c.ToString()); + for (int i = 0; i < bIn.Length; i++) + { + result.WriteByte((byte)'%'); + int idx = ((int)bIn[i]) >> 4; + result.WriteByte((byte)hexChars[idx]); + idx = ((int)bIn[i]) & 0x0F; + result.WriteByte((byte)hexChars[idx]); + } + } + else if (c == ' ') + { + result.WriteByte((byte)'%'); + result.WriteByte((byte)'2'); + result.WriteByte((byte)'0'); + } + else + result.WriteByte((byte)c); + } + + static void InitEntities() + { + // Build the hash table of HTML entity references. This list comes + // from the HTML 4.01 W3C recommendation. + entities = new List> + { + new KeyValuePair("nbsp", '\u00A0'), + new KeyValuePair("iexcl", '\u00A1'), + new KeyValuePair("cent", '\u00A2'), + new KeyValuePair("pound", '\u00A3'), + new KeyValuePair("curren", '\u00A4'), + new KeyValuePair("yen", '\u00A5'), + new KeyValuePair("brvbar", '\u00A6'), + new KeyValuePair("sect", '\u00A7'), + new KeyValuePair("uml", '\u00A8'), + new KeyValuePair("copy", '\u00A9'), + new KeyValuePair("ordf", '\u00AA'), + new KeyValuePair("laquo", '\u00AB'), + new KeyValuePair("not", '\u00AC'), + new KeyValuePair("shy", '\u00AD'), + new KeyValuePair("reg", '\u00AE'), + new KeyValuePair("macr", '\u00AF'), + new KeyValuePair("deg", '\u00B0'), + new KeyValuePair("plusmn", '\u00B1'), + new KeyValuePair("sup2", '\u00B2'), + new KeyValuePair("sup3", '\u00B3'), + new KeyValuePair("acute", '\u00B4'), + new KeyValuePair("micro", '\u00B5'), + new KeyValuePair("para", '\u00B6'), + new KeyValuePair("middot", '\u00B7'), + new KeyValuePair("cedil", '\u00B8'), + new KeyValuePair("sup1", '\u00B9'), + new KeyValuePair("ordm", '\u00BA'), + new KeyValuePair("raquo", '\u00BB'), + new KeyValuePair("frac14", '\u00BC'), + new KeyValuePair("frac12", '\u00BD'), + new KeyValuePair("frac34", '\u00BE'), + new KeyValuePair("iquest", '\u00BF'), + new KeyValuePair("Agrave", '\u00C0'), + new KeyValuePair("Aacute", '\u00C1'), + new KeyValuePair("Acirc", '\u00C2'), + new KeyValuePair("Atilde", '\u00C3'), + new KeyValuePair("Auml", '\u00C4'), + new KeyValuePair("Aring", '\u00C5'), + new KeyValuePair("AElig", '\u00C6'), + new KeyValuePair("Ccedil", '\u00C7'), + new KeyValuePair("Egrave", '\u00C8'), + new KeyValuePair("Eacute", '\u00C9'), + new KeyValuePair("Ecirc", '\u00CA'), + new KeyValuePair("Euml", '\u00CB'), + new KeyValuePair("Igrave", '\u00CC'), + new KeyValuePair("Iacute", '\u00CD'), + new KeyValuePair("Icirc", '\u00CE'), + new KeyValuePair("Iuml", '\u00CF'), + new KeyValuePair("ETH", '\u00D0'), + new KeyValuePair("Ntilde", '\u00D1'), + new KeyValuePair("Ograve", '\u00D2'), + new KeyValuePair("Oacute", '\u00D3'), + new KeyValuePair("Ocirc", '\u00D4'), + new KeyValuePair("Otilde", '\u00D5'), + new KeyValuePair("Ouml", '\u00D6'), + new KeyValuePair("times", '\u00D7'), + new KeyValuePair("Oslash", '\u00D8'), + new KeyValuePair("Ugrave", '\u00D9'), + new KeyValuePair("Uacute", '\u00DA'), + new KeyValuePair("Ucirc", '\u00DB'), + new KeyValuePair("Uuml", '\u00DC'), + new KeyValuePair("Yacute", '\u00DD'), + new KeyValuePair("THORN", '\u00DE'), + new KeyValuePair("szlig", '\u00DF'), + new KeyValuePair("agrave", '\u00E0'), + new KeyValuePair("aacute", '\u00E1'), + new KeyValuePair("acirc", '\u00E2'), + new KeyValuePair("atilde", '\u00E3'), + new KeyValuePair("auml", '\u00E4'), + new KeyValuePair("aring", '\u00E5'), + new KeyValuePair("aelig", '\u00E6'), + new KeyValuePair("ccedil", '\u00E7'), + new KeyValuePair("egrave", '\u00E8'), + new KeyValuePair("eacute", '\u00E9'), + new KeyValuePair("ecirc", '\u00EA'), + new KeyValuePair("euml", '\u00EB'), + new KeyValuePair("igrave", '\u00EC'), + new KeyValuePair("iacute", '\u00ED'), + new KeyValuePair("icirc", '\u00EE'), + new KeyValuePair("iuml", '\u00EF'), + new KeyValuePair("eth", '\u00F0'), + new KeyValuePair("ntilde", '\u00F1'), + new KeyValuePair("ograve", '\u00F2'), + new KeyValuePair("oacute", '\u00F3'), + new KeyValuePair("ocirc", '\u00F4'), + new KeyValuePair("otilde", '\u00F5'), + new KeyValuePair("ouml", '\u00F6'), + new KeyValuePair("divide", '\u00F7'), + new KeyValuePair("oslash", '\u00F8'), + new KeyValuePair("ugrave", '\u00F9'), + new KeyValuePair("uacute", '\u00FA'), + new KeyValuePair("ucirc", '\u00FB'), + new KeyValuePair("uuml", '\u00FC'), + new KeyValuePair("yacute", '\u00FD'), + new KeyValuePair("thorn", '\u00FE'), + new KeyValuePair("yuml", '\u00FF'), + new KeyValuePair("fnof", '\u0192'), + new KeyValuePair("Alpha", '\u0391'), + new KeyValuePair("Beta", '\u0392'), + new KeyValuePair("Gamma", '\u0393'), + new KeyValuePair("Delta", '\u0394'), + new KeyValuePair("Epsilon", '\u0395'), + new KeyValuePair("Zeta", '\u0396'), + new KeyValuePair("Eta", '\u0397'), + new KeyValuePair("Theta", '\u0398'), + new KeyValuePair("Iota", '\u0399'), + new KeyValuePair("Kappa", '\u039A'), + new KeyValuePair("Lambda", '\u039B'), + new KeyValuePair("Mu", '\u039C'), + new KeyValuePair("Nu", '\u039D'), + new KeyValuePair("Xi", '\u039E'), + new KeyValuePair("Omicron", '\u039F'), + new KeyValuePair("Pi", '\u03A0'), + new KeyValuePair("Rho", '\u03A1'), + new KeyValuePair("Sigma", '\u03A3'), + new KeyValuePair("Tau", '\u03A4'), + new KeyValuePair("Upsilon", '\u03A5'), + new KeyValuePair("Phi", '\u03A6'), + new KeyValuePair("Chi", '\u03A7'), + new KeyValuePair("Psi", '\u03A8'), + new KeyValuePair("Omega", '\u03A9'), + new KeyValuePair("alpha", '\u03B1'), + new KeyValuePair("beta", '\u03B2'), + new KeyValuePair("gamma", '\u03B3'), + new KeyValuePair("delta", '\u03B4'), + new KeyValuePair("epsilon", '\u03B5'), + new KeyValuePair("zeta", '\u03B6'), + new KeyValuePair("eta", '\u03B7'), + new KeyValuePair("theta", '\u03B8'), + new KeyValuePair("iota", '\u03B9'), + new KeyValuePair("kappa", '\u03BA'), + new KeyValuePair("lambda", '\u03BB'), + new KeyValuePair("mu", '\u03BC'), + new KeyValuePair("nu", '\u03BD'), + new KeyValuePair("xi", '\u03BE'), + new KeyValuePair("omicron", '\u03BF'), + new KeyValuePair("pi", '\u03C0'), + new KeyValuePair("rho", '\u03C1'), + new KeyValuePair("sigmaf", '\u03C2'), + new KeyValuePair("sigma", '\u03C3'), + new KeyValuePair("tau", '\u03C4'), + new KeyValuePair("upsilon", '\u03C5'), + new KeyValuePair("phi", '\u03C6'), + new KeyValuePair("chi", '\u03C7'), + new KeyValuePair("psi", '\u03C8'), + new KeyValuePair("omega", '\u03C9'), + new KeyValuePair("thetasym", '\u03D1'), + new KeyValuePair("upsih", '\u03D2'), + new KeyValuePair("piv", '\u03D6'), + new KeyValuePair("bull", '\u2022'), + new KeyValuePair("hellip", '\u2026'), + new KeyValuePair("prime", '\u2032'), + new KeyValuePair("Prime", '\u2033'), + new KeyValuePair("oline", '\u203E'), + new KeyValuePair("frasl", '\u2044'), + new KeyValuePair("weierp", '\u2118'), + new KeyValuePair("image", '\u2111'), + new KeyValuePair("real", '\u211C'), + new KeyValuePair("trade", '\u2122'), + new KeyValuePair("alefsym", '\u2135'), + new KeyValuePair("larr", '\u2190'), + new KeyValuePair("uarr", '\u2191'), + new KeyValuePair("rarr", '\u2192'), + new KeyValuePair("darr", '\u2193'), + new KeyValuePair("harr", '\u2194'), + new KeyValuePair("crarr", '\u21B5'), + new KeyValuePair("lArr", '\u21D0'), + new KeyValuePair("uArr", '\u21D1'), + new KeyValuePair("rArr", '\u21D2'), + new KeyValuePair("dArr", '\u21D3'), + new KeyValuePair("hArr", '\u21D4'), + new KeyValuePair("forall", '\u2200'), + new KeyValuePair("part", '\u2202'), + new KeyValuePair("exist", '\u2203'), + new KeyValuePair("empty", '\u2205'), + new KeyValuePair("nabla", '\u2207'), + new KeyValuePair("isin", '\u2208'), + new KeyValuePair("notin", '\u2209'), + new KeyValuePair("ni", '\u220B'), + new KeyValuePair("prod", '\u220F'), + new KeyValuePair("sum", '\u2211'), + new KeyValuePair("minus", '\u2212'), + new KeyValuePair("lowast", '\u2217'), + new KeyValuePair("radic", '\u221A'), + new KeyValuePair("prop", '\u221D'), + new KeyValuePair("infin", '\u221E'), + new KeyValuePair("ang", '\u2220'), + new KeyValuePair("and", '\u2227'), + new KeyValuePair("or", '\u2228'), + new KeyValuePair("cap", '\u2229'), + new KeyValuePair("cup", '\u222A'), + new KeyValuePair("int", '\u222B'), + new KeyValuePair("there4", '\u2234'), + new KeyValuePair("sim", '\u223C'), + new KeyValuePair("cong", '\u2245'), + new KeyValuePair("asymp", '\u2248'), + new KeyValuePair("ne", '\u2260'), + new KeyValuePair("equiv", '\u2261'), + new KeyValuePair("le", '\u2264'), + new KeyValuePair("ge", '\u2265'), + new KeyValuePair("sub", '\u2282'), + new KeyValuePair("sup", '\u2283'), + new KeyValuePair("nsub", '\u2284'), + new KeyValuePair("sube", '\u2286'), + new KeyValuePair("supe", '\u2287'), + new KeyValuePair("oplus", '\u2295'), + new KeyValuePair("otimes", '\u2297'), + new KeyValuePair("perp", '\u22A5'), + new KeyValuePair("sdot", '\u22C5'), + new KeyValuePair("lceil", '\u2308'), + new KeyValuePair("rceil", '\u2309'), + new KeyValuePair("lfloor", '\u230A'), + new KeyValuePair("rfloor", '\u230B'), + new KeyValuePair("lang", '\u2329'), + new KeyValuePair("rang", '\u232A'), + new KeyValuePair("loz", '\u25CA'), + new KeyValuePair("spades", '\u2660'), + new KeyValuePair("clubs", '\u2663'), + new KeyValuePair("hearts", '\u2665'), + new KeyValuePair("diams", '\u2666'), + new KeyValuePair("quot", '\u0022'), + new KeyValuePair("amp", '\u0026'), + new KeyValuePair("lt", '\u003C'), + new KeyValuePair("gt", '\u003E'), + new KeyValuePair("OElig", '\u0152'), + new KeyValuePair("oelig", '\u0153'), + new KeyValuePair("Scaron", '\u0160'), + new KeyValuePair("scaron", '\u0161'), + new KeyValuePair("Yuml", '\u0178'), + new KeyValuePair("circ", '\u02C6'), + new KeyValuePair("tilde", '\u02DC'), + new KeyValuePair("ensp", '\u2002'), + new KeyValuePair("emsp", '\u2003'), + new KeyValuePair("thinsp", '\u2009'), + new KeyValuePair("zwnj", '\u200C'), + new KeyValuePair("zwj", '\u200D'), + new KeyValuePair("lrm", '\u200E'), + new KeyValuePair("rlm", '\u200F'), + new KeyValuePair("ndash", '\u2013'), + new KeyValuePair("mdash", '\u2014'), + new KeyValuePair("lsquo", '\u2018'), + new KeyValuePair("rsquo", '\u2019'), + new KeyValuePair("sbquo", '\u201A'), + new KeyValuePair("ldquo", '\u201C'), + new KeyValuePair("rdquo", '\u201D'), + new KeyValuePair("bdquo", '\u201E'), + new KeyValuePair("dagger", '\u2020'), + new KeyValuePair("Dagger", '\u2021'), + new KeyValuePair("permil", '\u2030'), + new KeyValuePair("lsaquo", '\u2039'), + new KeyValuePair("rsaquo", '\u203A'), + new KeyValuePair("euro", '\u20AC') + }; + + entities = entities.OrderBy(x=>x.Key).ToList(); + } + } + + class EntityNameComparer: IComparer> + { + public int Compare(KeyValuePair x, KeyValuePair y) + { + return String.Compare(x.Key, y.Key, StringComparison.Ordinal); + } + } + +#if WINDOWS_APP + // Fine, I'll just make my own + static class Uri + { + static readonly Dictionary hexDigits; + + static Uri() + { + hexDigits = new[] { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' + }.Zip(Enumerable.Range(0, 0xf), (c, i) => new { c, i }) + .ToDictionary(k => k.c, v => v.i); + } + + public static bool IsHexDigit(char c) + { + return hexDigits.ContainsKey(Char.ToLowerInvariant(c)); + } + + public static int FromHex(char digit) + { + if(!IsHexDigit(digit)) + throw new ArgumentOutOfRangeException("digit"); + + return hexDigits[digit]; + } + } +#endif +} diff --git a/client/c#/AcademyMG/Refit/HttpUtility.NetStandard.cs b/client/c#/AcademyMG/Refit/HttpUtility.NetStandard.cs new file mode 100644 index 0000000..68f8dbd --- /dev/null +++ b/client/c#/AcademyMG/Refit/HttpUtility.NetStandard.cs @@ -0,0 +1,32 @@ +using Microsoft.AspNetCore.WebUtilities; +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Linq; +using System.Text; +using System.Text.Encodings.Web; +using System.Threading.Tasks; + +namespace System.Web +{ + class HttpUtility + { + internal static NameValueCollection ParseQueryString(string v) + { + var parsed = QueryHelpers.ParseQuery(v); + + var all = from kvp in parsed + from val in kvp.Value + select new { kvp.Key, Value = val }; + + var nvc = new NameValueCollection(); + foreach(var item in all) { + nvc.Add(item.Key, item.Value); + } + + return nvc; + } + + internal static string UrlEncode(string x) => UrlEncoder.Default.Encode(x); + } +} diff --git a/client/c#/AcademyMG/Refit/HttpUtility.cs b/client/c#/AcademyMG/Refit/HttpUtility.cs new file mode 100644 index 0000000..ba50270 --- /dev/null +++ b/client/c#/AcademyMG/Refit/HttpUtility.cs @@ -0,0 +1,779 @@ +#if !SILVERLIGHT || WINDOWS_PHONE || WINDOWS_APP +#define NET_4_0 +#endif + +// +// System.Web.HttpUtility +// +// Authors: +// Patrik Torstensson (Patrik.Torstensson@labs2.com) +// Wictor Wilén (decode/encode functions) (wictor@ibizkit.se) +// Tim Coleman (tim@timcoleman.com) +// Gonzalo Paniagua Javier (gonzalo@ximian.com) +// +// Copyright (C) 2005-2010 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Globalization; +using System.IO; +#if !WINDOWS_APP +using System.Security.Permissions; +#endif +using System.Text; + +namespace System.Web +{ + + //#if !MONOTOUCH + // // CAS - no InheritanceDemand here as the class is sealed + // [AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] + //#endif + internal sealed class HttpUtility + { + sealed class HttpQSCollection : NameValueCollection + { + public override string ToString() + { + int count = Count; + if (count == 0) + return ""; + StringBuilder sb = new StringBuilder(); + string[] keys = AllKeys; + for (int i = 0; i < count; i++) + { + sb.AppendFormat("{0}={1}&", keys[i], this[keys[i]]); + } + if (sb.Length > 0) + sb.Length--; + return sb.ToString(); + } + } + + #region Constructors + + public HttpUtility() + { + } + + #endregion // Constructors + + #region Methods + + public static void HtmlAttributeEncode(string s, TextWriter output) + { + if (output == null) + { + #if NET_4_0 + throw new ArgumentNullException ("output"); + #else + throw new NullReferenceException(".NET emulation"); + #endif + } + #if NET_4_0 + HttpEncoder.Current.HtmlAttributeEncode (s, output); + #elif SILVERLIGHT && !WINDOWS_PHONE + output.Write(Windows.Browser.HttpUtility.HtmlEncode(s)); + #else + output.Write(HttpEncoder.HtmlAttributeEncode(s)); + #endif + } + + public static string HtmlAttributeEncode(string s) + { + #if NET_4_0 + if (s == null) + return null; + + using (var sw = new StringWriter ()) { + HttpEncoder.Current.HtmlAttributeEncode (s, sw); + return sw.ToString (); + } + #elif SILVERLIGHT && !WINDOWS_PHONE + return Windows.Browser.HttpUtility.HtmlEncode(s); + #else + return HttpEncoder.HtmlAttributeEncode(s); + #endif + } + + public static string UrlDecode(string str) + { + return UrlDecode(str, Encoding.UTF8); + } + + static char[] GetChars(MemoryStream b, Encoding e) + { +#if !WINDOWS_APP + return e.GetChars(b.GetBuffer(), 0, (int)b.Length); +#else + return e.GetChars(b.ToArray(), 0, (int) b.Length); +#endif + } + + static void WriteCharBytes(IList buf, char ch, Encoding e) + { + if (ch > 255) + { + foreach (byte b in e.GetBytes(new char[] { ch })) + buf.Add(b); + } + else + buf.Add((byte)ch); + } + + public static string UrlDecode(string s, Encoding e) + { + if (null == s) + return null; + + if (s.IndexOf('%') == -1 && s.IndexOf('+') == -1) + return s; + + if (e == null) + e = Encoding.UTF8; + + long len = s.Length; + var bytes = new List(); + int xchar; + char ch; + + for (int i = 0; i < len; i++) + { + ch = s[i]; + if (ch == '%' && i + 2 < len && s[i + 1] != '%') + { + if (s[i + 1] == 'u' && i + 5 < len) + { + // unicode hex sequence + xchar = GetChar(s, i + 2, 4); + if (xchar != -1) + { + WriteCharBytes(bytes, (char)xchar, e); + i += 5; + } + else + WriteCharBytes(bytes, '%', e); + } + else if ((xchar = GetChar(s, i + 1, 2)) != -1) + { + WriteCharBytes(bytes, (char)xchar, e); + i += 2; + } + else + { + WriteCharBytes(bytes, '%', e); + } + continue; + } + + if (ch == '+') + WriteCharBytes(bytes, ' ', e); + else + WriteCharBytes(bytes, ch, e); + } + + byte[] buf = bytes.ToArray(); + bytes = null; + return e.GetString(buf, 0, buf.Length); + + } + + public static string UrlDecode(byte[] bytes, Encoding e) + { + if (bytes == null) + return null; + + return UrlDecode(bytes, 0, bytes.Length, e); + } + + static int GetInt(byte b) + { + char c = (char)b; + if (c >= '0' && c <= '9') + return c - '0'; + + if (c >= 'a' && c <= 'f') + return c - 'a' + 10; + + if (c >= 'A' && c <= 'F') + return c - 'A' + 10; + + return -1; + } + + static int GetChar(byte[] bytes, int offset, int length) + { + int value = 0; + int end = length + offset; + for (int i = offset; i < end; i++) + { + int current = GetInt(bytes[i]); + if (current == -1) + return -1; + value = (value << 4) + current; + } + + return value; + } + + static int GetChar(string str, int offset, int length) + { + int val = 0; + int end = length + offset; + for (int i = offset; i < end; i++) + { + char c = str[i]; + if (c > 127) + return -1; + + int current = GetInt((byte)c); + if (current == -1) + return -1; + val = (val << 4) + current; + } + + return val; + } + + public static string UrlDecode(byte[] bytes, int offset, int count, Encoding e) + { + if (bytes == null) + return null; + if (count == 0) + return String.Empty; + + if (bytes == null) + throw new ArgumentNullException("bytes"); + + if (offset < 0 || offset > bytes.Length) + throw new ArgumentOutOfRangeException("offset"); + + if (count < 0 || offset + count > bytes.Length) + throw new ArgumentOutOfRangeException("count"); + + StringBuilder output = new StringBuilder(); + MemoryStream acc = new MemoryStream(); + + int end = count + offset; + int xchar; + for (int i = offset; i < end; i++) + { + if (bytes[i] == '%' && i + 2 < count && bytes[i + 1] != '%') + { + if (bytes[i + 1] == (byte)'u' && i + 5 < end) + { + if (acc.Length > 0) + { + output.Append(GetChars(acc, e)); + acc.SetLength(0); + } + xchar = GetChar(bytes, i + 2, 4); + if (xchar != -1) + { + output.Append((char)xchar); + i += 5; + continue; + } + } + else if ((xchar = GetChar(bytes, i + 1, 2)) != -1) + { + acc.WriteByte((byte)xchar); + i += 2; + continue; + } + } + + if (acc.Length > 0) + { + output.Append(GetChars(acc, e)); + acc.SetLength(0); + } + + if (bytes[i] == '+') + { + output.Append(' '); + } + else + { + output.Append((char)bytes[i]); + } + } + + if (acc.Length > 0) + { + output.Append(GetChars(acc, e)); + } + + acc = null; + return output.ToString(); + } + + public static byte[] UrlDecodeToBytes(byte[] bytes) + { + if (bytes == null) + return null; + + return UrlDecodeToBytes(bytes, 0, bytes.Length); + } + + public static byte[] UrlDecodeToBytes(string str) + { + return UrlDecodeToBytes(str, Encoding.UTF8); + } + + public static byte[] UrlDecodeToBytes(string str, Encoding e) + { + if (str == null) + return null; + + if (e == null) + throw new ArgumentNullException("e"); + + return UrlDecodeToBytes(e.GetBytes(str)); + } + + public static byte[] UrlDecodeToBytes(byte[] bytes, int offset, int count) + { + if (bytes == null) + return null; + if (count == 0) + return new byte[0]; + + int len = bytes.Length; + if (offset < 0 || offset >= len) + throw new ArgumentOutOfRangeException("offset"); + + if (count < 0 || offset > len - count) + throw new ArgumentOutOfRangeException("count"); + + MemoryStream result = new MemoryStream(); + int end = offset + count; + for (int i = offset; i < end; i++) + { + char c = (char)bytes[i]; + if (c == '+') + { + c = ' '; + } + else if (c == '%' && i < end - 2) + { + int xchar = GetChar(bytes, i + 1, 2); + if (xchar != -1) + { + c = (char)xchar; + i += 2; + } + } + result.WriteByte((byte)c); + } + + return result.ToArray(); + } + + public static string UrlEncode(string str) + { + return UrlEncode(str, Encoding.UTF8); + } + + public static string UrlEncode(string s, Encoding Enc) + { + if (s == null) + return null; + + if (s == String.Empty) + return String.Empty; + + bool needEncode = false; + int len = s.Length; + for (int i = 0; i < len; i++) + { + char c = s[i]; + if ((c < '0') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a') || (c > 'z')) + { + if (HttpEncoder.NotEncoded(c)) + continue; + + needEncode = true; + break; + } + } + + if (!needEncode) + return s; + + // avoided GetByteCount call + byte[] bytes = new byte[Enc.GetMaxByteCount(s.Length)]; + int realLen = Enc.GetBytes(s, 0, s.Length, bytes, 0); + var encodedBytes = UrlEncodeToBytes(bytes, 0, realLen); + return Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); + } + + public static string UrlEncode(byte[] bytes) + { + if (bytes == null) + return null; + + if (bytes.Length == 0) + return String.Empty; + + var encodedBytes = UrlEncodeToBytes(bytes, 0, bytes.Length); + return Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); + } + + public static string UrlEncode(byte[] bytes, int offset, int count) + { + if (bytes == null) + return null; + + if (bytes.Length == 0) + return String.Empty; + + var encodedBytes = UrlEncodeToBytes(bytes, offset, count); + return Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); + } + + public static byte[] UrlEncodeToBytes(string str) + { + return UrlEncodeToBytes(str, Encoding.UTF8); + } + + public static byte[] UrlEncodeToBytes(string str, Encoding e) + { + if (str == null) + return null; + + if (str.Length == 0) + return new byte[0]; + + byte[] bytes = e.GetBytes(str); + return UrlEncodeToBytes(bytes, 0, bytes.Length); + } + + public static byte[] UrlEncodeToBytes(byte[] bytes) + { + if (bytes == null) + return null; + + if (bytes.Length == 0) + return new byte[0]; + + return UrlEncodeToBytes(bytes, 0, bytes.Length); + } + + public static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count) + { + if (bytes == null) + return null; + #if NET_4_0 + return HttpEncoder.Current.UrlEncode (bytes, offset, count); + #else + return HttpEncoder.UrlEncodeToBytes(bytes, offset, count); + #endif + } + + public static string UrlEncodeUnicode(string str) + { + if (str == null) + return null; + + var encodedBytes = UrlEncodeUnicodeToBytes(str); + return Encoding.UTF8.GetString(encodedBytes, 0, encodedBytes.Length); + } + + public static byte[] UrlEncodeUnicodeToBytes(string str) + { + if (str == null) + return null; + + if (str.Length == 0) + return new byte[0]; + + MemoryStream result = new MemoryStream(str.Length); + foreach (char c in str) + { + HttpEncoder.UrlEncodeChar(c, result, true); + } + return result.ToArray(); + } + + /// + /// Decodes an HTML-encoded string and returns the decoded string. + /// + /// The HTML string to decode. + /// The decoded text. + public static string HtmlDecode(string s) + { + #if NET_4_0 + if (s == null) + return null; + + using (var sw = new StringWriter ()) { + HttpEncoder.Current.HtmlDecode (s, sw); + return sw.ToString (); + } + #else + return HttpEncoder.HtmlDecode(s); + #endif + } + + /// + /// Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream. + /// + /// The HTML string to decode + /// The TextWriter output stream containing the decoded string. + public static void HtmlDecode(string s, TextWriter output) + { + if (output == null) + { + #if NET_4_0 + throw new ArgumentNullException ("output"); + #else + throw new NullReferenceException(".NET emulation"); + #endif + } + + if (!String.IsNullOrEmpty(s)) + { + #if NET_4_0 + HttpEncoder.Current.HtmlDecode (s, output); + #else + output.Write(HttpEncoder.HtmlDecode(s)); + #endif + } + } + + public static string HtmlEncode(string s) + { + #if NET_4_0 + if (s == null) + return null; + + using (var sw = new StringWriter ()) { + HttpEncoder.Current.HtmlEncode (s, sw); + return sw.ToString (); + } + #else + return HttpEncoder.HtmlEncode(s); + #endif + } + + /// + /// HTML-encodes a string and sends the resulting output to a TextWriter output stream. + /// + /// The string to encode. + /// The TextWriter output stream containing the encoded string. + public static void HtmlEncode(string s, TextWriter output) + { + if (output == null) + { + #if NET_4_0 + throw new ArgumentNullException ("output"); + #else + throw new NullReferenceException(".NET emulation"); + #endif + } + + if (!String.IsNullOrEmpty(s)) + { + #if NET_4_0 + HttpEncoder.Current.HtmlEncode (s, output); + #else + output.Write(HttpEncoder.HtmlEncode(s)); + #endif + } + } + #if NET_4_0 + public static string HtmlEncode (object value) + { + throw new NotImplementedException(); + } + + public static string JavaScriptStringEncode (string value) + { + return JavaScriptStringEncode (value, false); + } + + public static string JavaScriptStringEncode (string value, bool addDoubleQuotes) + { + if (String.IsNullOrEmpty (value)) + return addDoubleQuotes ? "\"\"" : String.Empty; + + int len = value.Length; + bool needEncode = false; + char c; + for (int i = 0; i < len; i++) { + c = value [i]; + + if (c >= 0 && c <= 31 || c == 34 || c == 39 || c == 60 || c == 62 || c == 92) { + needEncode = true; + break; + } + } + + if (!needEncode) + return addDoubleQuotes ? "\"" + value + "\"" : value; + + var sb = new StringBuilder (); + if (addDoubleQuotes) + sb.Append ('"'); + + for (int i = 0; i < len; i++) { + c = value [i]; + if (c >= 0 && c <= 7 || c == 11 || c >= 14 && c <= 31 || c == 39 || c == 60 || c == 62) + sb.AppendFormat ("\\u{0:x4}", (int)c); + else switch ((int)c) { + case 8: + sb.Append ("\\b"); + break; + + case 9: + sb.Append ("\\t"); + break; + + case 10: + sb.Append ("\\n"); + break; + + case 12: + sb.Append ("\\f"); + break; + + case 13: + sb.Append ("\\r"); + break; + + case 34: + sb.Append ("\\\""); + break; + + case 92: + sb.Append ("\\\\"); + break; + + default: + sb.Append (c); + break; + } + } + + if (addDoubleQuotes) + sb.Append ('"'); + + return sb.ToString (); + } + #endif + public static string UrlPathEncode(string s) + { + #if NET_4_0 + return HttpEncoder.Current.UrlPathEncode (s); + #elif SILVERLIGHT + return Windows.Browser.HttpUtility.UrlEncode(s); + #else + return HttpEncoder.UrlPathEncode(s); + #endif + } + + public static NameValueCollection ParseQueryString(string query) + { + return ParseQueryString(query, Encoding.UTF8); + } + + public static NameValueCollection ParseQueryString(string query, Encoding encoding) + { + if (query == null) + throw new ArgumentNullException("query"); + if (encoding == null) + throw new ArgumentNullException("encoding"); + if (query.Length == 0 || (query.Length == 1 && query[0] == '?')) + return new NameValueCollection(); + if (query[0] == '?') + query = query.Substring(1); + + NameValueCollection result = new HttpQSCollection(); + ParseQueryString(query, encoding, result); + return result; + } + + internal static void ParseQueryString(string query, Encoding encoding, NameValueCollection result) + { + if (query.Length == 0) + return; + + string decoded = HtmlDecode(query); + int decodedLength = decoded.Length; + int namePos = 0; + bool first = true; + while (namePos <= decodedLength) + { + int valuePos = -1, valueEnd = -1; + for (int q = namePos; q < decodedLength; q++) + { + if (valuePos == -1 && decoded[q] == '=') + { + valuePos = q + 1; + } + else if (decoded[q] == '&') + { + valueEnd = q; + break; + } + } + + if (first) + { + first = false; + if (decoded[namePos] == '?') + namePos++; + } + + string name, value; + if (valuePos == -1) + { + name = null; + valuePos = namePos; + } + else + { + name = UrlDecode(decoded.Substring(namePos, valuePos - namePos - 1), encoding); + } + if (valueEnd < 0) + { + namePos = -1; + valueEnd = decoded.Length; + } + else + { + namePos = valueEnd + 1; + } + value = UrlDecode(decoded.Substring(valuePos, valueEnd - valuePos), encoding); + + result.Add(name, value); + if (namePos == -1) + break; + } + } + #endregion // Methods + } +} diff --git a/client/c#/AcademyMG/Refit/NameValueCollection.cs b/client/c#/AcademyMG/Refit/NameValueCollection.cs new file mode 100644 index 0000000..06f0e0a --- /dev/null +++ b/client/c#/AcademyMG/Refit/NameValueCollection.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace System.Collections.Specialized +{ + class NameValueCollection : Dictionary + { + public string[] AllKeys { get { return Keys.ToArray(); } } + + public bool HasKeys() + { + return Count > 0; + } + } +} diff --git a/client/c#/AcademyMG/Refit/Properties/AssemblyInfo.cs b/client/c#/AcademyMG/Refit/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6ceb4d0 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Properties/AssemblyInfo.cs @@ -0,0 +1,26 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. +[assembly: AssemblyTitle("Refit")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("paul")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. +[assembly: AssemblyVersion("2.5.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: InternalsVisibleTo("Refit")] +[assembly: InternalsVisibleTo("Refit-Tests")] +[assembly: InternalsVisibleTo("Refit.Tests")] diff --git a/client/c#/AcademyMG/Refit/Refit-Net45.csproj b/client/c#/AcademyMG/Refit/Refit-Net45.csproj new file mode 100644 index 0000000..8539bda --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-Net45.csproj @@ -0,0 +1,74 @@ + + + + + Debug + AnyCPU + {252CE1CA-19FA-4445-A3C2-E4D6C80A935A} + Library + Properties + Refit + Refit + v4.5 + 512 + 8.0.30703 + 2.0 + 514e4b3c + obj\Net45\ + + + true + full + false + bin\Debug\Net45\ + obj\Debug\Net45\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\Net45\ + obj\Release\Net45\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-Net45.project.json b/client/c#/AcademyMG/Refit/Refit-Net45.project.json new file mode 100644 index 0000000..187df92 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-Net45.project.json @@ -0,0 +1,12 @@ +{ + "supports": {}, + "dependencies": { + "Newtonsoft.Json": "9.0.1" + }, + "frameworks": { + "net45": {} + }, + "runtimes": { + "win": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-NetStandard11.csproj b/client/c#/AcademyMG/Refit/Refit-NetStandard11.csproj new file mode 100644 index 0000000..afc04c5 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-NetStandard11.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {E315020F-33BC-4D85-BC6E-8346F06F1112} + Library + Properties + Refit + Refit + v5.0 + + + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + ..\ + true + 8.0.30703 + 2.0 + + + 14.0 + obj\netstandard1.1\ + + + true + full + false + bin\Debug\netstandard1.1\ + TRACE;DEBUG;PORTABLE + prompt + 4 + + + pdbonly + true + bin\Release\netstandard1.1\ + TRACE;PORTABLE + prompt + 4 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-NetStandard11.project.json b/client/c#/AcademyMG/Refit/Refit-NetStandard11.project.json new file mode 100644 index 0000000..9c38cbf --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-NetStandard11.project.json @@ -0,0 +1,10 @@ +{ + "supports": {}, + "dependencies": { + "NETStandard.Library": "1.6.0", + "Newtonsoft.Json": "9.0.1" + }, + "frameworks": { + "netstandard1.1": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-NetStandard13.csproj b/client/c#/AcademyMG/Refit/Refit-NetStandard13.csproj new file mode 100644 index 0000000..2065870 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-NetStandard13.csproj @@ -0,0 +1,62 @@ + + + + + 14.0 + Debug + AnyCPU + {C86EBFD7-E5AB-450B-85A3-E600570463ED} + Library + Properties + Refit + Refit + en-US + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + v5.0 + obj\netstandard1.3\ + + + true + full + false + bin\Debug\netstandard1.3\ + TRACE;DEBUG;NETSTANDARD1_3 + prompt + 4 + + + pdbonly + true + bin\Release\netstandard1.3 + TRACE;NETSTANDARD1_3 + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-NetStandard13.project.json b/client/c#/AcademyMG/Refit/Refit-NetStandard13.project.json new file mode 100644 index 0000000..e86bb87 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-NetStandard13.project.json @@ -0,0 +1,12 @@ +{ + "supports": {}, + "dependencies": { + "Microsoft.AspNetCore.WebUtilities": "1.0.0", + "NETStandard.Library": "1.6.0", + "Newtonsoft.Json": "9.0.1", + "System.Text.Encodings.Web": "4.0.0" + }, + "frameworks": { + "netstandard1.3": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-WPA81.csproj b/client/c#/AcademyMG/Refit/Refit-WPA81.csproj new file mode 100644 index 0000000..353f2f9 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-WPA81.csproj @@ -0,0 +1,68 @@ + + + + + Debug + AnyCPU + {200C9B4E-4881-44B2-B88D-EFE0E54193A1} + Library + Properties + Refit + Refit + v4.6 + Profile32 + 512 + {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + ..\ + true + 8.0.30703 + 2.0 + 2f8f6023 + obj\Portable-Win81+Wpa81\ + + + true + full + false + bin\Debug\Portable-Win81+Wpa81 + TRACE;DEBUG;NETFX_CORE;WINDOWS_APP + prompt + 4 + + + pdbonly + true + bin\Release\Portable-Win81+Wpa81 + TRACE;NETFX_CORE;WINDOWS_APP + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-WPA81.project.json b/client/c#/AcademyMG/Refit/Refit-WPA81.project.json new file mode 100644 index 0000000..948d0ee --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-WPA81.project.json @@ -0,0 +1,9 @@ +{ + "supports": {}, + "dependencies": { + "Newtonsoft.Json": "9.0.1" + }, + "frameworks": { + ".NETPortable,Version=v4.6,Profile=Profile32": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-WinRT45.csproj b/client/c#/AcademyMG/Refit/Refit-WinRT45.csproj new file mode 100644 index 0000000..c444abe --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-WinRT45.csproj @@ -0,0 +1,68 @@ + + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {27DDD1C6-4037-419F-8682-100C71D5AD6F} + Library + Properties + Refit + Refit + en-US + 8.1 + 12 + 512 + {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 61707e7c + obj\WinRT45\ + + + + true + full + false + bin\Debug\WinRT45\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_APP + prompt + 4 + false + + + pdbonly + true + bin\Release\WinRT45\ + TRACE;NETFX_CORE;WINDOWS_APP + prompt + 4 + + + + + + + + + + + + + + + + + + + 12.0 + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-WinRT45.project.json b/client/c#/AcademyMG/Refit/Refit-WinRT45.project.json new file mode 100644 index 0000000..68b83fa --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-WinRT45.project.json @@ -0,0 +1,9 @@ +{ + "supports": {}, + "dependencies": { + "Newtonsoft.Json": "9.0.1" + }, + "frameworks": { + ".NETCore,Version=v4.5.1": {} + } +} \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/Refit-wp8.csproj b/client/c#/AcademyMG/Refit/Refit-wp8.csproj new file mode 100644 index 0000000..ec9a5a7 --- /dev/null +++ b/client/c#/AcademyMG/Refit/Refit-wp8.csproj @@ -0,0 +1,133 @@ + + + + Debug + AnyCPU + 10.0.20506 + 2.0 + {1F309EA3-155C-4B66-84DE-7771237CCF6C} + {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Refit + Refit + WindowsPhone + v8.0 + $(TargetFrameworkVersion) + false + true + 11.0 + true + 69b45f0d + obj\wp8\ + + + true + full + false + Bin\Debug\wp8\ + obj\Debug\wp8\ + TRACE;DEBUG;WINDOWS_PHONE + true + true + prompt + 4 + + + pdbonly + true + Bin\Release\wp8\ + obj\Release\wp8\ + TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + true + full + false + Bin\x86\Debug + DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + pdbonly + true + Bin\x86\Release + TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + true + full + false + Bin\ARM\Debug + DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + pdbonly + true + Bin\ARM\Release + TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + + ..\packages\newtonsoft.json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll + True + + + ..\packages\microsoft.net.http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.dll + True + + + ..\packages\microsoft.net.http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.Extensions.dll + True + + + ..\packages\microsoft.net.http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.Primitives.dll + True + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/RefitSettings.cs b/client/c#/AcademyMG/Refit/RefitSettings.cs new file mode 100644 index 0000000..b55cd42 --- /dev/null +++ b/client/c#/AcademyMG/Refit/RefitSettings.cs @@ -0,0 +1,34 @@ +using System; +using System.Net.Http; +using System.Reflection; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace Refit +{ + public class RefitSettings + { + public RefitSettings() + { + UrlParameterFormatter = new DefaultUrlParameterFormatter(); + } + + public JsonSerializerSettings JsonSerializerSettings { get; set; } + public IUrlParameterFormatter UrlParameterFormatter { get; set; } + public Func> AuthorizationHeaderValueGetter { get; set; } + public Func HttpMessageHandlerFactory { get; set; } + } + + public interface IUrlParameterFormatter + { + string Format(object value, ParameterInfo parameterInfo); + } + + public class DefaultUrlParameterFormatter : IUrlParameterFormatter + { + public virtual string Format(object parameterValue, ParameterInfo parameterInfo) + { + return parameterValue != null ? parameterValue.ToString() : null; + } + } +} diff --git a/client/c#/AcademyMG/Refit/RequestBuilder.cs b/client/c#/AcademyMG/Refit/RequestBuilder.cs new file mode 100644 index 0000000..2146768 --- /dev/null +++ b/client/c#/AcademyMG/Refit/RequestBuilder.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Net.Http; + +namespace Refit +{ + public interface IRequestBuilder + { + IEnumerable InterfaceHttpMethods { get; } + Func BuildRestResultFuncForMethod(string methodName); + } + + interface IRequestBuilderFactory + { + IRequestBuilder Create(Type interfaceType, RefitSettings settings); + } + + public static class RequestBuilder + { + static readonly IRequestBuilderFactory platformRequestBuilderFactory = new RequestBuilderFactory(); + + public static IRequestBuilder ForType(Type interfaceType, RefitSettings settings) + { + return platformRequestBuilderFactory.Create(interfaceType, settings); + } + + public static IRequestBuilder ForType(Type interfaceType) + { + return platformRequestBuilderFactory.Create(interfaceType, null); + } + + public static IRequestBuilder ForType(RefitSettings settings) + { + return ForType(typeof(T), settings); + } + + public static IRequestBuilder ForType() + { + return ForType(typeof(T), null); + } + } + +#if PORTABLE + class RequestBuilderFactory : IRequestBuilderFactory + { + public IRequestBuilder Create(Type interfaceType, RefitSettings settings = null) + { + throw new NotImplementedException("You've somehow included the PCL version of Refit in your app. You need to use the platform-specific version!"); + } + } +#endif +} + diff --git a/client/c#/AcademyMG/Refit/RequestBuilderImplementation.cs b/client/c#/AcademyMG/Refit/RequestBuilderImplementation.cs new file mode 100644 index 0000000..2a55731 --- /dev/null +++ b/client/c#/AcademyMG/Refit/RequestBuilderImplementation.cs @@ -0,0 +1,803 @@ +using System; +using System.Collections; +using System.Net.Http; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Headers; +using System.Reflection; +using System.Threading.Tasks; +using System.Text.RegularExpressions; +using System.Text; +using Newtonsoft.Json; +using System.IO; +using System.Threading; + +using HttpUtility = System.Web.HttpUtility; + +namespace Refit +{ + class RequestBuilderFactory : IRequestBuilderFactory + { + public IRequestBuilder Create(Type interfaceType, RefitSettings settings = null) + { + return new RequestBuilderImplementation(interfaceType, settings); + } + } + + class RequestBuilderImplementation : IRequestBuilder + { + readonly Type targetType; + readonly Dictionary interfaceHttpMethods; + readonly RefitSettings settings; + + public RequestBuilderImplementation(Type targetInterface, RefitSettings refitSettings = null) + { + settings = refitSettings ?? new RefitSettings(); + if (targetInterface == null || !targetInterface.IsInterface()) { + throw new ArgumentException("targetInterface must be an Interface"); + } + + targetType = targetInterface; + interfaceHttpMethods = targetInterface.GetMethods() + .SelectMany(x => { + var attrs = x.GetCustomAttributes(true); + var hasHttpMethod = attrs.OfType().Any(); + if (!hasHttpMethod) return Enumerable.Empty(); + + return EnumerableEx.Return(new RestMethodInfo(targetInterface, x, settings)); + }) + .ToDictionary(k => k.Name, v => v); + } + + public IEnumerable InterfaceHttpMethods { + get { return interfaceHttpMethods.Keys; } + } + + Func buildRequestFactoryForMethod(string methodName, string basePath, bool paramsContainsCancellationToken) + { + if (!interfaceHttpMethods.ContainsKey(methodName)) { + throw new ArgumentException("Method must be defined and have an HTTP Method attribute"); + } + var restMethod = interfaceHttpMethods[methodName]; + + return paramList => { + // make sure we strip out any cancelation tokens + if (paramsContainsCancellationToken) { + paramList = paramList.Where(o => o == null || o.GetType() != typeof(CancellationToken)).ToArray(); + } + + var ret = new HttpRequestMessage { + Method = restMethod.HttpMethod, + }; + + // set up multipart content + MultipartFormDataContent multiPartContent = null; + if (restMethod.IsMultipart) { + multiPartContent = new MultipartFormDataContent("----MyGreatBoundary"); + ret.Content = multiPartContent; + } + + string urlTarget = (basePath == "/" ? String.Empty : basePath) + restMethod.RelativePath; + var queryParamsToAdd = new Dictionary(); + var headersToAdd = new Dictionary(restMethod.Headers); + + for(int i=0; i < paramList.Length; i++) { + // if part of REST resource URL, substitute it in + if (restMethod.ParameterMap.ContainsKey(i)) { + urlTarget = Regex.Replace( + urlTarget, + "{" + restMethod.ParameterMap[i] + "}", + settings.UrlParameterFormatter + .Format(paramList[i], restMethod.ParameterInfoMap[i]) + .Replace("/", "%2F"), + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + continue; + } + + // if marked as body, add to content + if (restMethod.BodyParameterInfo != null && restMethod.BodyParameterInfo.Item2 == i) { + var streamParam = paramList[i] as Stream; + var stringParam = paramList[i] as string; + var httpContentParam = paramList[i] as HttpContent; + + if (httpContentParam != null) { + ret.Content = httpContentParam; + } else if (streamParam != null) { + ret.Content = new StreamContent(streamParam); + } else if (stringParam != null) { + ret.Content = new StringContent(stringParam); + } else { + switch (restMethod.BodyParameterInfo.Item1) { + case BodySerializationMethod.UrlEncoded: + ret.Content = new FormUrlEncodedContent(new FormValueDictionary(paramList[i])); + break; + case BodySerializationMethod.Json: + ret.Content = new StringContent(JsonConvert.SerializeObject(paramList[i], settings.JsonSerializerSettings), Encoding.UTF8, "application/json"); + break; + } + } + + continue; + } + + // if header, add to request headers + if (restMethod.HeaderParameterMap.ContainsKey(i)) { + headersToAdd[restMethod.HeaderParameterMap[i]] = paramList[i] != null + ? paramList[i].ToString() + : null; + continue; + } + + // ignore nulls + if (paramList[i] == null) continue; + + // for anything that fell through to here, if this is not + // a multipart method, add the parameter to the query string + if (!restMethod.IsMultipart) { + queryParamsToAdd[restMethod.QueryParameterMap[i]] = settings.UrlParameterFormatter.Format(paramList[i], restMethod.ParameterInfoMap[i]); + continue; + } + + // we are in a multipart method, add the part to the content + // the parameter name should be either the attachment name or the parameter name (as fallback) + string itemName; + string parameterName; + + Tuple attachment; + if (!restMethod.AttachmentNameMap.TryGetValue(i, out attachment)) { + itemName = restMethod.QueryParameterMap[i]; + parameterName = itemName; + } else { + itemName = attachment.Item1; + parameterName = attachment.Item2; + } + + + // Check to see if it's an IEnumerable + var itemValue = paramList[i]; + var enumerable = itemValue as IEnumerable; + var typeIsCollection = false; + + if (enumerable != null) { + Type tType = null; + var eType = enumerable.GetType(); + if (eType.GetTypeInfo().ContainsGenericParameters) { + tType = eType.GenericTypeArguments[0]; + } else if (eType.IsArray) { + tType = eType.GetElementType(); + } + + // check to see if it's one of the types we support for multipart: + // FileInfo, Stream, string or byte[] + if (tType == typeof(Stream) || + tType == typeof(string) || + tType == typeof(byte[]) +#if !NETFX_CORE + || tType == typeof(FileInfo) +#endif + ) { + typeIsCollection = true; + } + + + } + + if (typeIsCollection) { + foreach (var item in enumerable) { + addMultipartItem(multiPartContent, itemName, parameterName, item); + } + } else{ + addMultipartItem(multiPartContent, itemName, parameterName, itemValue); + } + + } + + // NB: We defer setting headers until the body has been + // added so any custom content headers don't get left out. + foreach (var header in headersToAdd) { + setHeader(ret, header.Key, header.Value); + } + + // NB: The URI methods in .NET are dumb. Also, we do this + // UriBuilder business so that we preserve any hardcoded query + // parameters as well as add the parameterized ones. + var uri = new UriBuilder(new Uri(new Uri("http://api"), urlTarget)); + var query = HttpUtility.ParseQueryString(uri.Query ?? ""); + foreach(var kvp in queryParamsToAdd) { + query.Add(kvp.Key, kvp.Value); + } + + if (query.HasKeys()) { + var pairs = query.Keys.Cast().Select(x => HttpUtility.UrlEncode(x) + "=" + HttpUtility.UrlEncode(query[x])); + uri.Query = String.Join("&", pairs); + } else { + uri.Query = null; + } + + ret.RequestUri = new Uri(uri.Uri.GetComponents(UriComponents.PathAndQuery, UriFormat.UriEscaped), UriKind.Relative); + return ret; + }; + } + + static void setHeader(HttpRequestMessage request, string name, string value) + { + // Clear any existing version of this header that might be set, because + // we want to allow removal/redefinition of headers. + // We also don't want to double up content headers which may have been + // set for us automatically. + + // NB: We have to enumerate the header names to check existence because + // Contains throws if it's the wrong header type for the collection. + if (request.Headers.Any(x => x.Key == name)) { + request.Headers.Remove(name); + } + if (request.Content != null && request.Content.Headers.Any(x => x.Key == name)) { + request.Content.Headers.Remove(name); + } + + if (value == null) return; + + var added = request.Headers.TryAddWithoutValidation(name, value); + + // Don't even bother trying to add the header as a content header + // if we just added it to the other collection. + if (!added && request.Content != null) { + request.Content.Headers.TryAddWithoutValidation(name, value); + } + } + + void addMultipartItem(MultipartFormDataContent multiPartContent, string fileName, string parameterName, object itemValue) + { + var streamValue = itemValue as Stream; + var stringValue = itemValue as string; + var byteArrayValue = itemValue as byte[]; + + if (streamValue != null) { + var streamContent = new StreamContent(streamValue); + multiPartContent.Add(streamContent, parameterName, fileName); + return; + } + + if (stringValue != null) { + multiPartContent.Add(new StringContent(stringValue), parameterName, fileName); + return; + } + +#if !NETFX_CORE + var fileInfoValue = itemValue as FileInfo; + if (fileInfoValue != null) { + var fileContent = new StreamContent(fileInfoValue.OpenRead()); + multiPartContent.Add(fileContent, parameterName, fileInfoValue.Name); + return; + } +#endif + + if (byteArrayValue != null) { + var fileContent = new ByteArrayContent(byteArrayValue); + multiPartContent.Add(fileContent, parameterName, fileName); + return; + } + + throw new ArgumentException($"Unexpected parameter type in a Multipart request. Parameter {fileName} is of type {itemValue.GetType().Name}, whereas allowed types are String, Stream, FileInfo, and Byte array", nameof(itemValue)); + } + + public Func BuildRestResultFuncForMethod(string methodName) + { + if (!interfaceHttpMethods.ContainsKey(methodName)) { + throw new ArgumentException("Method must be defined and have an HTTP Method attribute"); + } + + var restMethod = interfaceHttpMethods[methodName]; + + if (restMethod.ReturnType == typeof(Task)) { + return buildVoidTaskFuncForMethod(restMethod); + } else if (restMethod.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)) { + // NB: This jacked up reflection code is here because it's + // difficult to upcast Task to an arbitrary T, especially + // if you need to AOT everything, so we need to reflectively + // invoke buildTaskFuncForMethod. + var taskFuncMi = GetType().GetMethod("buildTaskFuncForMethod", BindingFlags.NonPublic | BindingFlags.Instance); + var taskFunc = (MulticastDelegate)taskFuncMi.MakeGenericMethod(restMethod.SerializedReturnType) + .Invoke(this, new[] { restMethod }); + + return (client, args) => { + return taskFunc.DynamicInvoke(new object[] { client, args } ); + }; + } else { + // Same deal + var rxFuncMi = GetType().GetMethod("buildRxFuncForMethod", BindingFlags.NonPublic | BindingFlags.Instance); + var rxFunc = (MulticastDelegate)rxFuncMi.MakeGenericMethod(restMethod.SerializedReturnType) + .Invoke(this, new[] { restMethod }); + + return (client, args) => { + return rxFunc.DynamicInvoke(new object[] { client, args }); + }; + } + } + + Func buildVoidTaskFuncForMethod(RestMethodInfo restMethod) + { + return async (client, paramList) => { + var factory = buildRequestFactoryForMethod(restMethod.Name, client.BaseAddress.AbsolutePath, restMethod.CancellationToken != null); + var rq = factory(paramList); + + var ct = CancellationToken.None; + + if (restMethod.CancellationToken != null) { + ct = paramList.OfType().FirstOrDefault(); + } + + using (var resp = await client.SendAsync(rq, ct).ConfigureAwait(false)) { + if (!resp.IsSuccessStatusCode) { + throw await ApiException.Create(rq.RequestUri, restMethod.HttpMethod, resp, settings).ConfigureAwait(false); + } + } + }; + } + + Func> buildTaskFuncForMethod(RestMethodInfo restMethod) + { + var ret = buildCancellableTaskFuncForMethod(restMethod); + + return (client, paramList) => { + if(restMethod.CancellationToken != null) { + return ret(client, paramList.OfType().FirstOrDefault(), paramList); + } + + return ret(client, CancellationToken.None, paramList); + }; + } + + Func> buildCancellableTaskFuncForMethod(RestMethodInfo restMethod) + { + return async (client, ct, paramList) => { + var factory = buildRequestFactoryForMethod(restMethod.Name, client.BaseAddress.AbsolutePath, restMethod.CancellationToken != null); + var rq = factory(paramList); + + var resp = await client.SendAsync(rq, HttpCompletionOption.ResponseHeadersRead, ct).ConfigureAwait(false); + + if (restMethod.SerializedReturnType == typeof(HttpResponseMessage)) { + // NB: This double-casting manual-boxing hate crime is the only way to make + // this work without a 'class' generic constraint. It could blow up at runtime + // and would be A Bad Idea if we hadn't already vetted the return type. + return (T)(object)resp; + } + + if (!resp.IsSuccessStatusCode) { + throw await ApiException.Create(rq.RequestUri, restMethod.HttpMethod, resp, restMethod.RefitSettings).ConfigureAwait(false); + } + + if (restMethod.SerializedReturnType == typeof(HttpContent)) { + return (T)(object)resp.Content; + } + + var ms = new MemoryStream(); + using (var fromStream = await resp.Content.ReadAsStreamAsync().ConfigureAwait(false)) { + await fromStream.CopyToAsync(ms, 4096, ct).ConfigureAwait(false); + } + + var bytes = ms.ToArray(); + var content = Encoding.UTF8.GetString(bytes, 0, bytes.Length); + + if (restMethod.SerializedReturnType == typeof(string)) { + return (T)(object)content; + } + + return JsonConvert.DeserializeObject(content, settings.JsonSerializerSettings); + }; + } + + Func> buildRxFuncForMethod(RestMethodInfo restMethod) + { + var taskFunc = buildCancellableTaskFuncForMethod(restMethod); + + return (client, paramList) => { + return new TaskToObservable(ct => { + var methodCt = CancellationToken.None; + if (restMethod.CancellationToken != null) { + methodCt = paramList.OfType().FirstOrDefault(); + } + + // link the two + var cts = CancellationTokenSource.CreateLinkedTokenSource(methodCt, ct); + + return taskFunc(client, cts.Token, paramList); + }); + }; + } + + class TaskToObservable : IObservable + { + Func> taskFactory; + + public TaskToObservable(Func> taskFactory) + { + this.taskFactory = taskFactory; + } + + public IDisposable Subscribe(IObserver observer) + { + var cts = new CancellationTokenSource(); + taskFactory(cts.Token).ContinueWith(t => { + if (cts.IsCancellationRequested) return; + + if (t.Exception != null) { + observer.OnError(t.Exception.InnerExceptions.First()); + return; + } + + try { + observer.OnNext(t.Result); + } catch (Exception ex) { + observer.OnError(ex); + } + + observer.OnCompleted(); + }); + + return new AnonymousDisposable(cts.Cancel); + } + } + } + + sealed class AnonymousDisposable : IDisposable + { + readonly Action block; + + public AnonymousDisposable(Action block) + { + this.block = block; + } + + public void Dispose() + { + block(); + } + } + + public class RestMethodInfo + { + public string Name { get; set; } + public Type Type { get; set; } + public MethodInfo MethodInfo { get; set; } + public HttpMethod HttpMethod { get; set; } + public string RelativePath { get; set; } + public bool IsMultipart { get; private set; } + public Dictionary ParameterMap { get; set; } + public ParameterInfo CancellationToken { get; set; } + public Dictionary Headers { get; set; } + public Dictionary HeaderParameterMap { get; set; } + public Tuple BodyParameterInfo { get; set; } + public Dictionary QueryParameterMap { get; set; } + public Dictionary> AttachmentNameMap { get; set; } + public Dictionary ParameterInfoMap { get; set; } + public Type ReturnType { get; set; } + public Type SerializedReturnType { get; set; } + public RefitSettings RefitSettings { get; set; } + + static readonly Regex parameterRegex = new Regex(@"{(.*?)}"); + static readonly HttpMethod patchMethod = new HttpMethod("PATCH"); + + public RestMethodInfo(Type targetInterface, MethodInfo methodInfo, RefitSettings refitSettings = null) + { + RefitSettings = refitSettings ?? new RefitSettings(); + Type = targetInterface; + Name = methodInfo.Name; + MethodInfo = methodInfo; + + var hma = methodInfo.GetCustomAttributes(true) + .OfType() + .First(); + + HttpMethod = hma.Method; + RelativePath = hma.Path; + + IsMultipart = methodInfo.GetCustomAttributes(true) + .OfType() + .Any(); + + verifyUrlPathIsSane(RelativePath); + determineReturnTypeInfo(methodInfo); + + // Exclude cancellation token parameters from this list + var parameterList = methodInfo.GetParameters().Where(p => p.ParameterType != typeof(CancellationToken)).ToList(); + ParameterInfoMap = parameterList + .Select((parameter, index) => new { index, parameter }) + .ToDictionary(x => x.index, x => x.parameter); + ParameterMap = buildParameterMap(RelativePath, parameterList); + BodyParameterInfo = findBodyParameter(parameterList, IsMultipart, hma.Method); + + Headers = parseHeaders(methodInfo); + HeaderParameterMap = buildHeaderParameterMap(parameterList); + + // get names for multipart attachments + AttachmentNameMap = new Dictionary>(); + if (IsMultipart) { + for (int i = 0; i < parameterList.Count; i++) { + if (ParameterMap.ContainsKey(i) || HeaderParameterMap.ContainsKey(i)) { + continue; + } + + var attachmentName = getAttachmentNameForParameter(parameterList[i]); + if (attachmentName == null) + continue; + + AttachmentNameMap[i] = Tuple.Create(attachmentName, getUrlNameForParameter(parameterList[i]).ToLowerInvariant()); + } + } + + QueryParameterMap = new Dictionary(); + for (int i=0; i < parameterList.Count; i++) { + if (ParameterMap.ContainsKey(i) || HeaderParameterMap.ContainsKey(i) || (BodyParameterInfo != null && BodyParameterInfo.Item2 == i) || AttachmentNameMap.ContainsKey(i)) { + continue; + } + + QueryParameterMap[i] = getUrlNameForParameter(parameterList[i]); + } + + var ctParams = methodInfo.GetParameters().Where(p => p.ParameterType == typeof(CancellationToken)).ToList(); + if(ctParams.Count > 1) { + throw new ArgumentException("Argument list can only contain a single CancellationToken"); + } + + CancellationToken = ctParams.FirstOrDefault(); + } + + void verifyUrlPathIsSane(string relativePath) + { + if (relativePath == "") + return; + + if (!relativePath.StartsWith("/")) { + goto bogusPath; + } + + var parts = relativePath.Split('/'); + if (parts.Length == 0) { + goto bogusPath; + } + + return; + + bogusPath: + throw new ArgumentException("URL path must be of the form '/foo/bar/baz'"); + } + + Dictionary buildParameterMap(string relativePath, List parameterInfo) + { + var ret = new Dictionary(); + + var parameterizedParts = relativePath.Split('/', '?') + .SelectMany(x => parameterRegex.Matches(x).Cast()) + .ToList(); + + if (parameterizedParts.Count == 0) { + return ret; + } + + var paramValidationDict = parameterInfo.ToDictionary(k => getUrlNameForParameter(k).ToLowerInvariant(), v => v); + + foreach (var match in parameterizedParts) { + var name = match.Groups[1].Value.ToLowerInvariant(); + if (!paramValidationDict.ContainsKey(name)) { + throw new ArgumentException(String.Format("URL has parameter {0}, but no method parameter matches", name)); + } + + ret.Add(parameterInfo.IndexOf(paramValidationDict[name]), name); + } + + return ret; + } + + string getUrlNameForParameter(ParameterInfo paramInfo) + { + var aliasAttr = paramInfo.GetCustomAttributes(true) + .OfType() + .FirstOrDefault(); + return aliasAttr != null ? aliasAttr.Name : paramInfo.Name; + } + + string getAttachmentNameForParameter(ParameterInfo paramInfo) + { + var nameAttr = paramInfo.GetCustomAttributes(true) + .OfType() + .FirstOrDefault(); + return nameAttr != null ? nameAttr.Name : null; + } + + static Tuple findBodyParameter(IList parameterList, bool isMultipart, HttpMethod method) + { + + // The body parameter is found using the following logic / order of precedence: + // 1) [Body] attribute + // 2) POST/PUT/PATCH: Reference type other than string + // 3) If there are two reference types other than string, without the body attribute, throw + + var bodyParams = parameterList + .Select(x => new { Parameter = x, BodyAttribute = x.GetCustomAttributes(true).OfType().FirstOrDefault() }) + .Where(x => x.BodyAttribute != null) + .ToList(); + + // multipart requests may not contain a body, implicit or explicit + if (isMultipart) { + if (bodyParams.Count > 0) { + throw new ArgumentException("Multipart requests may not contain a Body parameter"); + } + return null; + } + + if (bodyParams.Count > 1) { + throw new ArgumentException("Only one parameter can be a Body parameter"); + } + + // #1, body attribute wins + if (bodyParams.Count == 1) { + var ret = bodyParams[0]; + return Tuple.Create(ret.BodyAttribute.SerializationMethod, parameterList.IndexOf(ret.Parameter)); + } + + // Not in post/put/patch? bail + if (!method.Equals(HttpMethod.Post) && !method.Equals(HttpMethod.Put) && !method.Equals(patchMethod)) { + return null; + } + + // see if we're a post/put/patch + var refParams = parameterList.Where(pi => !pi.ParameterType.GetTypeInfo().IsValueType && pi.ParameterType != typeof(string)).ToList(); + + // Check for rule #3 + if (refParams.Count > 1) { + throw new ArgumentException("Multiple complex types found. Specify one parameter as the body using BodyAttribute"); + } + + if (refParams.Count == 1) { + return Tuple.Create(BodySerializationMethod.Json, parameterList.IndexOf(refParams[0])); + } + + return null; + } + + Dictionary parseHeaders(MethodInfo methodInfo) + { + var ret = new Dictionary(); + + var declaringTypeAttributes = methodInfo.DeclaringType != null + ? methodInfo.DeclaringType.GetCustomAttributes(true) + : new Attribute[0]; + + // Headers set on the declaring type have to come first, + // so headers set on the method can replace them. Switching + // the order here will break stuff. + var headers = declaringTypeAttributes.Concat(methodInfo.GetCustomAttributes(true)) + .OfType() + .SelectMany(ha => ha.Headers); + + foreach (var header in headers) { + if (string.IsNullOrWhiteSpace(header)) continue; + + // NB: Silverlight doesn't have an overload for String.Split() + // with a count parameter, but header values can contain + // ':' so we have to re-join all but the first part to get the + // value. + var parts = header.Split(':'); + ret[parts[0].Trim()] = parts.Length > 1 ? + String.Join(":", parts.Skip(1)).Trim() : null; + } + + return ret; + } + + Dictionary buildHeaderParameterMap(List parameterList) + { + var ret = new Dictionary(); + + for (int i = 0; i < parameterList.Count; i++) { + var header = parameterList[i].GetCustomAttributes(true) + .OfType() + .Select(ha => ha.Header) + .FirstOrDefault(); + + if (!string.IsNullOrWhiteSpace(header)) { + ret[i] = header.Trim(); + } + } + + return ret; + } + + void determineReturnTypeInfo(MethodInfo methodInfo) + { + if (methodInfo.ReturnType.IsGenericType() == false) { + if (methodInfo.ReturnType != typeof (Task)) { + goto bogusMethod; + } + + ReturnType = methodInfo.ReturnType; + SerializedReturnType = typeof(void); + return; + } + + var genericType = methodInfo.ReturnType.GetGenericTypeDefinition(); + if (genericType != typeof(Task<>) && genericType != typeof(IObservable<>)) { + goto bogusMethod; + } + + ReturnType = methodInfo.ReturnType; + SerializedReturnType = methodInfo.ReturnType.GetGenericArguments()[0]; + return; + + bogusMethod: + throw new ArgumentException("All REST Methods must return either Task or IObservable"); + } + } + + class FormValueDictionary : Dictionary + { + static readonly Dictionary propertyCache + = new Dictionary(); + + public FormValueDictionary(object source) + { + if (source == null) return; + var dictionary = source as IDictionary; + + if (dictionary != null) { + foreach (var key in dictionary.Keys) { + Add(key.ToString(), string.Format("{0}", dictionary[key])); + } + + return; + } + + var type = source.GetType(); + + lock (propertyCache) { + if (!propertyCache.ContainsKey(type)) { + propertyCache[type] = getProperties(type); + } + + foreach (var property in propertyCache[type]) { + Add(getFieldNameForProperty(property), string.Format("{0}", property.GetValue(source, null))); + } + } + } + + PropertyInfo[] getProperties(Type type) + { + return type.GetProperties() + .Where(p => p.CanRead) + .ToArray(); + } + + string getFieldNameForProperty(PropertyInfo propertyInfo) + { + var aliasAttr = propertyInfo.GetCustomAttributes(true) + .OfType() + .FirstOrDefault(); + return aliasAttr != null ? aliasAttr.Name : propertyInfo.Name; + } + } + + class AuthenticatedHttpClientHandler : DelegatingHandler + { + readonly Func> getToken; + + public AuthenticatedHttpClientHandler(Func> getToken, HttpMessageHandler innerHandler = null) + : base(innerHandler ?? new HttpClientHandler()) + { + if (getToken == null) throw new ArgumentNullException("getToken"); + this.getToken = getToken; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + // See if the request has an authorize header + var auth = request.Headers.Authorization; + if (auth != null) { + var token = await getToken().ConfigureAwait(false); + request.Headers.Authorization = new AuthenticationHeaderValue(auth.Scheme, token); + } + + return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); + } + } +} diff --git a/server/academyMGS/__init__.py b/client/c#/AcademyMG/Refit/Resources/Resource.designer.cs similarity index 100% rename from server/academyMGS/__init__.py rename to client/c#/AcademyMG/Refit/Resources/Resource.designer.cs diff --git a/client/c#/AcademyMG/Refit/RestService.cs b/client/c#/AcademyMG/Refit/RestService.cs new file mode 100644 index 0000000..1a4ff46 --- /dev/null +++ b/client/c#/AcademyMG/Refit/RestService.cs @@ -0,0 +1,133 @@ +using System; +using System.Net; +using System.Net.Http; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Headers; +using System.Threading.Tasks; +using System.Threading; +using Newtonsoft.Json; + +namespace Refit +{ + interface IRestService + { + T For(HttpClient client); + } + + public static class RestService + { + public static T For(HttpClient client, RefitSettings settings) + { + var className = "AutoGenerated" + typeof(T).Name; + var requestBuilder = RequestBuilder.ForType(settings); + var typeName = typeof(T).AssemblyQualifiedName.Replace(typeof(T).Name, className); + var generatedType = Type.GetType(typeName); + + if(generatedType == null) { + var message = typeof(T).Name + " doesn't look like a Refit interface. Make sure it has at least one " + + "method with a Refit HTTP method attribute and Refit is installed in the project."; + + throw new InvalidOperationException(message); + } + + return (T)Activator.CreateInstance(generatedType, client, requestBuilder); + } + + public static T For(HttpClient client) + { + return RestService.For(client, null); + } + + public static T For(string hostUrl, RefitSettings settings) + { +#if PORTABLE + throw new NotImplementedException("You've somehow included the PCL version of Refit in your app. You need to use the platform-specific version!"); +#else + // check to see if user provided custom auth t + + HttpMessageHandler innerHandler = null; + if (settings != null) { + if (settings.HttpMessageHandlerFactory != null) { + innerHandler = settings.HttpMessageHandlerFactory(); + } + + if (settings.AuthorizationHeaderValueGetter != null) { + innerHandler = new AuthenticatedHttpClientHandler(settings.AuthorizationHeaderValueGetter, innerHandler); + } + } + + var client = new HttpClient(innerHandler ?? new HttpClientHandler()) { BaseAddress = new Uri(hostUrl) }; + return RestService.For(client, settings); +#endif + + } + + public static T For(string hostUrl) + { + return RestService.For(hostUrl, null); + } + } + + public class ApiException : Exception + { + public HttpStatusCode StatusCode { get; private set; } + public string ReasonPhrase { get; private set; } + public HttpResponseHeaders Headers { get; private set; } + public HttpMethod HttpMethod { get; private set; } + public Uri Uri { get; private set; } + + public HttpContentHeaders ContentHeaders { get; private set; } + + public string Content { get; private set; } + + public bool HasContent + { + get { return !String.IsNullOrWhiteSpace(Content); } + } + public RefitSettings RefitSettings { get; set; } + + ApiException(Uri uri, HttpMethod httpMethod, HttpStatusCode statusCode, string reasonPhrase, HttpResponseHeaders headers, RefitSettings refitSettings = null) : + base(createMessage(statusCode, reasonPhrase)) + { + Uri = uri; + HttpMethod = httpMethod; + StatusCode = statusCode; + ReasonPhrase = reasonPhrase; + Headers = headers; + RefitSettings = refitSettings; + } + + public T GetContentAs() + { + return HasContent ? + JsonConvert.DeserializeObject(Content, RefitSettings.JsonSerializerSettings) : + default(T); + } + + public static async Task Create(Uri uri, HttpMethod httpMethod, HttpResponseMessage response, RefitSettings refitSettings = null) + { + var exception = new ApiException(uri, httpMethod, response.StatusCode, response.ReasonPhrase, response.Headers, refitSettings); + + if (response.Content == null) + return exception; + + try { + exception.ContentHeaders = response.Content.Headers; + exception.Content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + response.Content.Dispose(); + } catch { + // NB: We're already handling an exception at this point, + // so we want to make sure we don't throw another one + // that hides the real error. + } + + return exception; + } + + static string createMessage(HttpStatusCode statusCode, string reasonPhrase) + { + return String.Format("Response status code does not indicate success: {0} ({1}).", (int)statusCode, reasonPhrase); + } + } +} diff --git a/client/c#/AcademyMG/Refit/Utility.cs b/client/c#/AcademyMG/Refit/Utility.cs new file mode 100644 index 0000000..01cc36a --- /dev/null +++ b/client/c#/AcademyMG/Refit/Utility.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace Refit +{ + public static class EnumerableEx + { + public static IEnumerable Return(T value) + { + yield return value; + } + } +#if WINDOWS_APP || NETSTANDARD1_3 + // Shims for old-style reflection + static class ReflectionExtensions + { + public static bool IsInterface(this Type type) + { + return type.GetTypeInfo().IsInterface; + } + + public static bool IsGenericType(this Type type) + { + return type.GetTypeInfo().IsGenericType; + } + + public static MethodInfo[] GetMethods(this Type type) + { + return type.GetRuntimeMethods() + .Where(m => m.IsPublic && !m.IsStatic) + .ToArray(); + } + + public static Attribute[] GetCustomAttributes(this Type type, bool inherit) + { + return type.GetTypeInfo() + .GetCustomAttributes(inherit) + .ToArray(); + } + + public static MethodInfo GetMethod(this Type type, string name, BindingFlags bindingFlags) { + var isPublic = !bindingFlags.HasFlag(BindingFlags.NonPublic); + var isStatic = bindingFlags.HasFlag(BindingFlags.Static); + + return type.GetRuntimeMethods() + .Where(m => m.IsPublic == isPublic && m.IsStatic == isStatic) + .FirstOrDefault(m => m.Name == name); + } + + public static Type[] GetGenericArguments(this Type type) + { + return type.GetTypeInfo() + .GenericTypeArguments; + } + + public static PropertyInfo[] GetProperties(this Type type) + { + return type.GetRuntimeProperties() + .Where(p => !p.GetMethod.IsStatic) + .Where(p => p.GetMethod.IsPublic || p.SetMethod.IsPublic) + .ToArray(); + } + } + + [Flags] + internal enum BindingFlags + { + Instance = 4, + Static = 8, + Public = 16, + NonPublic = 32 + } + +#else + static class ReflectionExtensions + { + public static bool IsInterface(this Type type) + { + return type.IsInterface; + } + + public static bool IsGenericType(this Type type) + { + return type.IsGenericType; + } + } +#endif +} + diff --git a/client/c#/AcademyMG/Refit/refit.nuspec b/client/c#/AcademyMG/Refit/refit.nuspec new file mode 100644 index 0000000..d293efc --- /dev/null +++ b/client/c#/AcademyMG/Refit/refit.nuspec @@ -0,0 +1,55 @@ + + + + refit + 2.5.0-beta-004 + Refit + Paul Betts,Refit contributors + Paul Betts + https://github.com/paulcbetts/refit/blob/master/COPYING + https://github.com/paulcbetts/refit + false + The automatic type-safe REST library for Xamarin and .NET + The automatic type-safe REST library for Xamarin and .NET + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/client/c#/AcademyMG/Refit/targets/refit.targets b/client/c#/AcademyMG/Refit/targets/refit.targets new file mode 100644 index 0000000..fe11716 --- /dev/null +++ b/client/c#/AcademyMG/Refit/targets/refit.targets @@ -0,0 +1,40 @@ + + + + + $(CoreCompileDependsOn); + GenerateRefitStubs; + + + + + $(MSBuildProjectDirectory)obj\$(Configuration)\ + + + + + $(IntermediateOutputPath)\RefitParams.rsp + + + + + + "$(MSBuildThisFileDirectory)..\..\tools\InterfaceStubGenerator.exe" "$(IntermediateOutputPath)\RefitStubs.g.cs" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" + + + + mono "$(MSBuildThisFileDirectory)../../tools/InterfaceStubGenerator.exe" "$(IntermediateOutputPath)\RefitStubs.g.cs" "$(MSBuildProjectDirectory)" "$(RefitParameterFile)" + + + + + + + + + + diff --git a/client/c#/AcademyMG/UpgradeLog.htm b/client/c#/AcademyMG/UpgradeLog.htm new file mode 100644 index 0000000..75bdb4a Binary files /dev/null and b/client/c#/AcademyMG/UpgradeLog.htm differ diff --git a/client/c#/AcademyMG/appveyor.yml b/client/c#/AcademyMG/appveyor.yml new file mode 100644 index 0000000..eaf8c95 --- /dev/null +++ b/client/c#/AcademyMG/appveyor.yml @@ -0,0 +1,29 @@ +configuration: Release + +init: + - cmd: set + +install: + - cmd: appveyor DownloadFile https://dist.nuget.org/win-x86-commandline/v3.5.0-beta2/NuGet.exe + - cmd: nuget install GitVersion.CommandLine -SolutionDir %APPVEYOR_BUILD_FOLDER% -Verbosity quiet -ExcludeVersion -pre + - cmd: nuget install gitlink -SolutionDir %APPVEYOR_BUILD_FOLDER% -Verbosity quiet -ExcludeVersion -pre + +before_build: + - cmd: nuget restore Refit.sln + - cmd: '.\packages\GitVersion.CommandLine\tools\GitVersion.exe /l console /output buildserver /updateAssemblyInfo' + +build: + verbosity: normal + parallel: true + project: Refit.sln + +after_build: + - cmd: nuget pack Refit\Refit.nuspec -version "%GitVersion_NuGetVersionV2%" -prop "target=%CONFIGURATION%" -NoPackageAnalysis + - cmd: appveyor PushArtifact "Refit.%GitVersion_NuGetVersion%.nupkg" + +deploy: + provider: NuGet + server: https://www.myget.org/F/refit/api/v2/package + api_key: + secure: bmqlJK8a5HYiUXOT99HXT1j7JiM5+fpR4kHhxIC30oaaEXbv94f0fKdiKlU1QC/l + artifact: /.*\.nupkg/ diff --git a/client/c#/MaterialSkin-master/.gitattributes b/client/c#/MaterialSkin-master/.gitattributes deleted file mode 100644 index 1ff0c42..0000000 --- a/client/c#/MaterialSkin-master/.gitattributes +++ /dev/null @@ -1,63 +0,0 @@ -############################################################################### -# Set default behavior to automatically normalize line endings. -############################################################################### -* text=auto - -############################################################################### -# Set default behavior for command prompt diff. -# -# This is need for earlier builds of msysgit that does not have it on by -# default for csharp files. -# Note: This is only used by command line -############################################################################### -#*.cs diff=csharp - -############################################################################### -# Set the merge driver for project and solution files -# -# Merging from the command prompt will add diff markers to the files if there -# are conflicts (Merging from VS is not affected by the settings below, in VS -# the diff markers are never inserted). Diff markers may cause the following -# file extensions to fail to load in VS. An alternative would be to treat -# these files as binary and thus will always conflict and require user -# intervention with every merge. To do so, just uncomment the entries below -############################################################################### -#*.sln merge=binary -#*.csproj merge=binary -#*.vbproj merge=binary -#*.vcxproj merge=binary -#*.vcproj merge=binary -#*.dbproj merge=binary -#*.fsproj merge=binary -#*.lsproj merge=binary -#*.wixproj merge=binary -#*.modelproj merge=binary -#*.sqlproj merge=binary -#*.wwaproj merge=binary - -############################################################################### -# behavior for image files -# -# image files are treated as binary by default. -############################################################################### -#*.jpg binary -#*.png binary -#*.gif binary - -############################################################################### -# diff behavior for common document formats -# -# Convert binary document formats to text before diffing them. This feature -# is only available from the command line. Turn it on by uncommenting the -# entries below. -############################################################################### -#*.doc diff=astextplain -#*.DOC diff=astextplain -#*.docx diff=astextplain -#*.DOCX diff=astextplain -#*.dot diff=astextplain -#*.DOT diff=astextplain -#*.pdf diff=astextplain -#*.PDF diff=astextplain -#*.rtf diff=astextplain -#*.RTF diff=astextplain diff --git a/client/c#/MaterialSkin-master/.gitignore b/client/c#/MaterialSkin-master/.gitignore deleted file mode 100644 index 7964536..0000000 --- a/client/c#/MaterialSkin-master/.gitignore +++ /dev/null @@ -1,189 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.sln.docstates - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -x64/ -build/ -bld/ -[Bb]in/ -[Oo]bj/ - -# Roslyn cache directories -*.ide/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -#NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding addin-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -## TODO: Comment the next line if you want to checkin your -## web deploy settings but do note that will include unencrypted -## passwords -#*.pubxml - -# NuGet Packages Directory -packages/* -## TODO: If the tool you use requires repositories.config -## uncomment the next line -#!packages/repositories.config - -# Enable "build/" folder in the NuGet Packages folder since -# NuGet packages use it for MSBuild targets. -# This line needs to be after the ignore of the build folder -# (and the packages folder if the line above has been uncommented) -!packages/build/ - -# Windows Azure Build Output -csx/ -*.build.csdef - -# Windows Store app package directory -AppPackages/ - -# Others -sql/ -*.Cache -ClientBin/ -[Ss]tyle[Cc]op.* -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -node_modules/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# LightSwitch generated files -GeneratedArtifacts/ -_Pvt_Extensions/ -ModelManifest.xml \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/LICENSE b/client/c#/MaterialSkin-master/LICENSE deleted file mode 100644 index 40635bb..0000000 --- a/client/c#/MaterialSkin-master/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Ignace Maes - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/client/c#/MaterialSkin-master/MaterialSkin.sln b/client/c#/MaterialSkin-master/MaterialSkin.sln deleted file mode 100644 index 19f8858..0000000 --- a/client/c#/MaterialSkin-master/MaterialSkin.sln +++ /dev/null @@ -1,28 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkinExample", "MaterialSkinExample\MaterialSkinExample.csproj", "{47409AA5-62AE-4189-8E83-C471502DF5E9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MaterialSkin", "MaterialSkin\MaterialSkin.csproj", "{8EB7611B-68CD-4B8B-987A-11717E2B250C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {47409AA5-62AE-4189-8E83-C471502DF5E9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {47409AA5-62AE-4189-8E83-C471502DF5E9}.Release|Any CPU.Build.0 = Release|Any CPU - {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EB7611B-68CD-4B8B-987A-11717E2B250C}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.Designer.cs b/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.Designer.cs deleted file mode 100644 index c4c7c85..0000000 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.Designer.cs +++ /dev/null @@ -1,129 +0,0 @@ -namespace MaterialSkinExample -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.materialFlatButton1 = new MaterialSkin.Controls.MaterialFlatButton(); - this.materialLabel1 = new MaterialSkin.Controls.MaterialLabel(); - this.materialDivider1 = new MaterialSkin.Controls.MaterialDivider(); - this.materialContextMenuStrip1 = new MaterialSkin.Controls.MaterialContextMenuStrip(); - this.materialSingleLineTextField1 = new MaterialSkin.Controls.MaterialSingleLineTextField(); - this.SuspendLayout(); - // - // materialFlatButton1 - // - this.materialFlatButton1.AutoSize = true; - this.materialFlatButton1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.materialFlatButton1.Depth = 0; - this.materialFlatButton1.Icon = null; - this.materialFlatButton1.Location = new System.Drawing.Point(73, 199); - this.materialFlatButton1.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); - this.materialFlatButton1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialFlatButton1.Name = "materialFlatButton1"; - this.materialFlatButton1.Primary = false; - this.materialFlatButton1.Size = new System.Drawing.Size(181, 36); - this.materialFlatButton1.TabIndex = 0; - this.materialFlatButton1.Text = "materialFlatButton1"; - this.materialFlatButton1.UseVisualStyleBackColor = true; - // - // materialLabel1 - // - this.materialLabel1.AutoSize = true; - this.materialLabel1.Depth = 0; - this.materialLabel1.Font = new System.Drawing.Font("Roboto", 11F); - this.materialLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(222)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.materialLabel1.Location = new System.Drawing.Point(119, 138); - this.materialLabel1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialLabel1.Name = "materialLabel1"; - this.materialLabel1.Size = new System.Drawing.Size(108, 19); - this.materialLabel1.TabIndex = 1; - this.materialLabel1.Text = "materialLabel1"; - // - // materialDivider1 - // - this.materialDivider1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(31)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.materialDivider1.Depth = 0; - this.materialDivider1.Location = new System.Drawing.Point(55, 122); - this.materialDivider1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialDivider1.Name = "materialDivider1"; - this.materialDivider1.Size = new System.Drawing.Size(75, 23); - this.materialDivider1.TabIndex = 2; - this.materialDivider1.Text = "materialDivider1"; - // - // materialContextMenuStrip1 - // - this.materialContextMenuStrip1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.materialContextMenuStrip1.Depth = 0; - this.materialContextMenuStrip1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialContextMenuStrip1.Name = "materialContextMenuStrip1"; - this.materialContextMenuStrip1.Size = new System.Drawing.Size(61, 4); - // - // materialSingleLineTextField1 - // - this.materialSingleLineTextField1.Depth = 0; - this.materialSingleLineTextField1.Hint = ""; - this.materialSingleLineTextField1.Location = new System.Drawing.Point(123, 167); - this.materialSingleLineTextField1.MaxLength = 32767; - this.materialSingleLineTextField1.MouseState = MaterialSkin.MouseState.HOVER; - this.materialSingleLineTextField1.Name = "materialSingleLineTextField1"; - this.materialSingleLineTextField1.PasswordChar = '\0'; - this.materialSingleLineTextField1.SelectedText = ""; - this.materialSingleLineTextField1.SelectionLength = 0; - this.materialSingleLineTextField1.SelectionStart = 0; - this.materialSingleLineTextField1.Size = new System.Drawing.Size(75, 23); - this.materialSingleLineTextField1.TabIndex = 4; - this.materialSingleLineTextField1.TabStop = false; - this.materialSingleLineTextField1.Text = "materialSingleLineTextField1"; - this.materialSingleLineTextField1.UseSystemPasswordChar = false; - // - // Form1 - // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(300, 300); - this.Controls.Add(this.materialSingleLineTextField1); - this.Controls.Add(this.materialDivider1); - this.Controls.Add(this.materialLabel1); - this.Controls.Add(this.materialFlatButton1); - this.Name = "Form1"; - this.Text = "Form1"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private MaterialSkin.Controls.MaterialFlatButton materialFlatButton1; - private MaterialSkin.Controls.MaterialLabel materialLabel1; - private MaterialSkin.Controls.MaterialDivider materialDivider1; - private MaterialSkin.Controls.MaterialContextMenuStrip materialContextMenuStrip1; - private MaterialSkin.Controls.MaterialSingleLineTextField materialSingleLineTextField1; - - } -} \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.cs b/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.cs deleted file mode 100644 index df1a8b8..0000000 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/Form1.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using MaterialSkin; -using MaterialSkin.Controls; - -namespace MaterialSkinExample -{ - public partial class Form1 : MaterialForm - { - public Form1() - { - InitializeComponent(); - - var materialSkinManager = MaterialSkinManager.Instance; - materialSkinManager.AddFormToManage(this); - materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT; - materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE); - } - } -} diff --git a/client/c#/MaterialSkin-master/MaterialSkinExample/MaterialSkinExample.csproj b/client/c#/MaterialSkin-master/MaterialSkinExample/MaterialSkinExample.csproj deleted file mode 100644 index 9899dda..0000000 --- a/client/c#/MaterialSkin-master/MaterialSkinExample/MaterialSkinExample.csproj +++ /dev/null @@ -1,110 +0,0 @@ - - - - - Debug - AnyCPU - {47409AA5-62AE-4189-8E83-C471502DF5E9} - WinExe - Properties - MaterialSkinExample - MaterialSkinExample - v4.5 - 512 - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - Form - - - Form1.cs - - - Form - - - MainForm.cs - - - - - Form1.cs - - - MainForm.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - {8eb7611b-68cd-4b8b-987a-11717e2b250c} - MaterialSkin - - - - - - - - - - - \ No newline at end of file diff --git a/client/c#/MaterialSkin-master/README.md b/client/c#/MaterialSkin-master/README.md deleted file mode 100644 index 7a0e2b1..0000000 --- a/client/c#/MaterialSkin-master/README.md +++ /dev/null @@ -1,129 +0,0 @@ -MaterialSkin for .NET WinForms -===================== - -Theming .NET WinForms, C# or VB.Net, to Google's Material Design Principles. - -![alt tag](http://i.imgur.com/JAttoOo.png) - -*High quality images can be found at the bottom of this page.* - ---- - -#### Current state of the MaterialSkin components - | Supported | Dark & light version | Disabled mode | Animated ---- | --- | --- | --- | --- -Checkbox | Yes | Yes | Yes | Yes -Divider | Yes | Yes | N/A | N/A -Flat Button | Yes | Yes | Yes | Yes -Label | Yes | Yes | N/A | N/A -Radio Button | Yes | Yes | Yes | Yes -Raised Button | Yes | Yes | Yes | Yes -Single-line text field | Yes | Yes | No | Yes -TabControl | Yes | N/A | N/A | Yes -ContextMenuStrip | Yes | Yes | Yes | Yes -ListView | Yes | Yes | No | No -ProgressBar | Yes | Yes | No | No -FloatingActionButton | No | No | No | No -Dialogs | No | No | No | No -Switch | No | No | No | No -More... | No | No | No | No - ---- - -#### Implementing MaterialSkin in your application - -**1. Add the library to your project** - - You can do this on multiple ways. The easiest way would be adding the [NuGet Package](https://www.nuget.org/packages/MaterialSkin/). Right click on your project and click 'Manage NuGet Packages...'. Search for 'MaterialSkin' and click on install. Once installed the library will be included in your project references. (Or install it through the package manager console: PM> Install-Package MaterialSkin) - -Another way of doing this step would be cloning the project from GitHub, compiling the library yourself and adding it as a reference. - -**2. Add the MaterialSkin components to your ToolBox** - - If you have installed the NuGet package, the MaterialSkin.dll file should be in the folder //bin/Debug. Simply drag the MaterialSkin.dll file into your IDE's ToolBox and all the controls should be added there. - -**3. Inherit from MaterialForm** - - Open the code behind your Form you wish to skin. Make it inherit from MaterialForm rather than Form. Don't forget to put the library in your imports, so it can find the MaterialForm class! - - C# (Form1.cs) - ```cs - public partial class Form1 : MaterialForm - ``` - - VB.NET (Form1.Designer.vb) - ```vb - Partial Class Form1 - Inherits MaterialSkin.Controls.MaterialForm - ``` - -**4. Initialize your colorscheme** - - Set your preferred colors & theme. Also add the form to the manager so it keeps updated if the color scheme or theme changes later on. - -C# (Form1.cs) - ```cs - public Form1() - { - InitializeComponent(); - - var materialSkinManager = MaterialSkinManager.Instance; - materialSkinManager.AddFormToManage(this); - materialSkinManager.Theme = MaterialSkinManager.Themes.LIGHT; - materialSkinManager.ColorScheme = new ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE); - } - ``` - -VB.NET (Form1.vb) -```vb -Imports MaterialSkin - -Public Class Form1 - - Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load - Dim SkinManager As MaterialSkinManager = MaterialSkinManager.Instance - SkinManager.AddFormToManage(Me) - SkinManager.Theme = MaterialSkinManager.Themes.LIGHT - SkinManager.ColorScheme = New ColorScheme(Primary.BlueGrey800, Primary.BlueGrey900, Primary.BlueGrey500, Accent.LightBlue200, TextShade.WHITE) - End Sub -End Class -``` - ---- - -#### Material Design in WPF - -If you love .NET and Material Design, you should definitely check out [Material Design Xaml Toolkit](https://github.com/ButchersBoy/MaterialDesignInXamlToolkit) by ButchersBoy. It's a similar project but for WPF instead of WinForms. - ---- - -#### Contact - -If you wish to contact me for anything you can get in touch at: - -- Twitter: https://twitter.com/Ignace_Maes -- Personal Website: http://ignacemaes.com - ---- - -#### Images - -![alt tag](http://i.imgur.com/Ub0N9Xf.png) - -*A simple demo interface with MaterialSkin components.* - -![alt tag](http://i.imgur.com/eIAtRkc.png) - -*The MaterialSkin checkboxes.* - -![alt tag](http://i.imgur.com/sAPyvdH.png) - -*The MaterialSkin radiobuttons.* - -![alt tag](http://i.imgur.com/3Zpuv6x.png) - -*The MaterialSkin ListView.* - -![alt tag](http://i.imgur.com/07MrJZQ.png) - -*MaterialSkin using a custom color scheme.* diff --git a/server/.idea/misc.xml b/server/.idea/misc.xml deleted file mode 100644 index 250c2a6..0000000 --- a/server/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/.idea/modules.xml b/server/.idea/modules.xml deleted file mode 100644 index fbd90b4..0000000 --- a/server/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/server/.idea/server.iml b/server/.idea/server.iml deleted file mode 100644 index df37772..0000000 --- a/server/.idea/server.iml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/.idea/workspace.xml b/server/.idea/workspace.xml deleted file mode 100644 index ff1993d..0000000 --- a/server/.idea/workspace.xml +++ /dev/null @@ -1,716 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1481521311598 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/server/academyMGS/__pycache__/__init__.cpython-35.pyc b/server/academyMGS/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index c6cd63a..0000000 Binary files a/server/academyMGS/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/__pycache__/admin.cpython-35.pyc b/server/academyMGS/__pycache__/admin.cpython-35.pyc deleted file mode 100644 index 09b502c..0000000 Binary files a/server/academyMGS/__pycache__/admin.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/__pycache__/models.cpython-35.pyc b/server/academyMGS/__pycache__/models.cpython-35.pyc deleted file mode 100644 index a035fa4..0000000 Binary files a/server/academyMGS/__pycache__/models.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/__pycache__/urls.cpython-35.pyc b/server/academyMGS/__pycache__/urls.cpython-35.pyc deleted file mode 100644 index eb1772e..0000000 Binary files a/server/academyMGS/__pycache__/urls.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/__pycache__/views.cpython-35.pyc b/server/academyMGS/__pycache__/views.cpython-35.pyc deleted file mode 100644 index 1ecd080..0000000 Binary files a/server/academyMGS/__pycache__/views.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/admin.py b/server/academyMGS/admin.py deleted file mode 100644 index e62b1f5..0000000 --- a/server/academyMGS/admin.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.contrib import admin -from academyMGS.models import Student, Teacher, AcademyClass, AttendanceCheck -# Register your models here. - -admin.site.register(Student) -admin.site.register(Teacher) -admin.site.register(AcademyClass) -admin.site.register(AttendanceCheck) \ No newline at end of file diff --git a/server/academyMGS/migrations/0001_initial.py b/server/academyMGS/migrations/0001_initial.py deleted file mode 100644 index df5b2d0..0000000 --- a/server/academyMGS/migrations/0001_initial.py +++ /dev/null @@ -1,76 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import migrations, models -import academyMGS.models - - -class Migration(migrations.Migration): - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='AcademyClass', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True)), - ('name', models.TextField()), - ('date', academyMGS.models.ListField(null=True, blank=True)), - ], - options={ - 'verbose_name_plural': '수강과목', - 'verbose_name': '수강과목', - }, - ), - migrations.CreateModel( - name='AttendanceCheck', - fields=[ - ('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')), - ('student_id', models.IntegerField()), - ('date', models.DateField(null=True, blank=True)), - ('check', models.BooleanField()), - ], - options={ - 'verbose_name_plural': '출석체크', - 'verbose_name': '출석체크', - }, - ), - migrations.CreateModel( - name='Student', - fields=[ - ('id', models.AutoField(serialize=False, primary_key=True)), - ('image', models.TextField(blank=True)), - ('name', models.CharField(max_length=18)), - ('sex', models.BooleanField(default=True)), - ('phone_num', models.TextField()), - ('address', models.TextField()), - ('school_name', models.TextField()), - ('grade', models.IntegerField()), - ('school_class', models.IntegerField()), - ('date_of_admission', models.DateField(null=True, blank=True)), - ('date_of_readdmission', models.DateField(null=True, blank=True)), - ('date_of_exit', models.DateField(null=True, blank=True)), - ('birthday', models.DateField(null=True, blank=True)), - ('status_of_sign', models.IntegerField(verbose_name=(1, 2))), - ('acdemy_class', models.IntegerField(null=True, blank=True)), - ], - options={ - 'verbose_name_plural': '학생', - 'verbose_name': '학생', - }, - ), - migrations.CreateModel( - name='Teacher', - fields=[ - ('id', models.CharField(max_length=30, serialize=False, primary_key=True)), - ('password', models.CharField(max_length=30)), - ('name', models.CharField(max_length=18)), - ('acdemy_class', models.IntegerField(null=True, blank=True)), - ], - options={ - 'verbose_name_plural': '교사', - 'verbose_name': '교사', - }, - ), - ] diff --git a/server/academyMGS/migrations/__init__.py b/server/academyMGS/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/server/academyMGS/migrations/__pycache__/0001_initial.cpython-35.pyc b/server/academyMGS/migrations/__pycache__/0001_initial.cpython-35.pyc deleted file mode 100644 index d76f8bc..0000000 Binary files a/server/academyMGS/migrations/__pycache__/0001_initial.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/migrations/__pycache__/__init__.cpython-35.pyc b/server/academyMGS/migrations/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 4e28ea5..0000000 Binary files a/server/academyMGS/migrations/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/server/academyMGS/models.py b/server/academyMGS/models.py deleted file mode 100644 index 0eb4357..0000000 --- a/server/academyMGS/models.py +++ /dev/null @@ -1,96 +0,0 @@ -from django.db.models import * -from django.db import models -import ast -class ListField(models.TextField): - __metaclass__ = models.SubfieldBase - description = "Stores a python list" - - def __init__(self, *args, **kwargs): - super(ListField, self).__init__(*args, **kwargs) - - def to_python(self, value): - if not value: - value = [] - - if isinstance(value, list): - return value - - return str(value, 'utf-8') - - def get_prep_value(self, value): - if value is None: - return value - return python_2_unicode_compatible(value) - - def value_to_string(self, obj): - value = self._get_val_from_obj(obj) - return self.get_db_prep_value(value) - -class AcademyClass(models.Model): - class Meta: - verbose_name = '수강과목' - verbose_name_plural = '수강과목' - - # Fields - id = models.AutoField(primary_key=True) - name = models.TextField() - - #monday : 1 tuesday : 2 wendsday : 3 ..... - date = ListField(blank=True,null=True) - - def __str__(self): # __unicode__ on Python 2 - return self.name - - -class Student(models.Model): - class Meta: - verbose_name = '학생' - verbose_name_plural = '학생' - - # Fields - id = models.AutoField(primary_key=True) - image = models.TextField(blank=True) - name = models.CharField(max_length=18) - sex = models.BooleanField(default=True) - phone_num = models.TextField() - address = models.TextField() - school_name = models.TextField() - grade = models.IntegerField() - school_class = models.IntegerField() - date_of_admission = models.DateField(blank=True,null=True) - date_of_readdmission = models.DateField(blank=True,null=True) - date_of_exit = models.DateField(blank=True,null=True) - birthday = models.DateField(blank=True,null=True) - #현재 수강상태 - status_of_sign = models.IntegerField(range(1, 3)) - #어떤 반인지 AcademyClass id값임. - acdemy_class = models.IntegerField(blank=True,null=True) - - def __str__(self): # __unicode__ on Python 2 - return self.name - -class Teacher(models.Model): - class Meta: - verbose_name = '교사' - verbose_name_plural = '교사' - # Fields - id = models.CharField(primary_key=True, max_length=30) - password = models.CharField(max_length=30) - name = models.CharField(max_length=18) - #어떤 반인지 AcademyClass id값임. - acdemy_class = models.IntegerField(blank=True,null=True) - - def __str__(self): # __unicode__ on Python 2 - return self.name -class AttendanceCheck(models.Model): - class Meta: - verbose_name = '출석체크' - verbose_name_plural = '출석체크' - #Fields - student_id = models.IntegerField() - date = models.DateField(blank=True,null=True) - check = models.BooleanField() - - def __str__(self): # __unicode__ on Python 2 - return self.name - diff --git a/server/academyMGS/tests.py b/server/academyMGS/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/server/academyMGS/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/server/academyMGS/urls.py b/server/academyMGS/urls.py deleted file mode 100644 index 2314d34..0000000 --- a/server/academyMGS/urls.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.conf.urls import patterns, include, url -from .views import * -urlpatterns = ( - url(r'^$', index), - url(r'^idcheck/', idCheck), - -) diff --git a/server/academyMGS/views.py b/server/academyMGS/views.py deleted file mode 100644 index feffec4..0000000 --- a/server/academyMGS/views.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.shortcuts import render -from .models import * -import json -from django.http import HttpResponse -from django.views.decorators.csrf import csrf_exempt - -@csrf_exempt -def idCheck(request): - data = [{'status':False}] - requestId = "" - if request.method == 'GET': - id = request.GET['id'] - else: - return HttpResponse(json.dumps(data), content_type='application/json') - - data = [{'status':True},{'flag': (Teacher.objects.all().filter(id=requestId) is None)and(True)or(False)}, ] - return HttpResponse(json.dumps(data), content_type='application/json') -@csrf_exempt -def index(request): - return HttpResponse("don't access", content_type='application/json') diff --git a/server/db.sqlite3 b/server/db.sqlite3 deleted file mode 100644 index 02d18cc..0000000 Binary files a/server/db.sqlite3 and /dev/null differ diff --git a/server/manage.py b/server/manage.py deleted file mode 100644 index 663ca0c..0000000 --- a/server/manage.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/server/server/__init__.py b/server/server/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/server/server/__pycache__/__init__.cpython-35.pyc b/server/server/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 3a32959..0000000 Binary files a/server/server/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/server/server/__pycache__/settings.cpython-35.pyc b/server/server/__pycache__/settings.cpython-35.pyc deleted file mode 100644 index 4467ca0..0000000 Binary files a/server/server/__pycache__/settings.cpython-35.pyc and /dev/null differ diff --git a/server/server/__pycache__/urls.cpython-35.pyc b/server/server/__pycache__/urls.cpython-35.pyc deleted file mode 100644 index 0cdc37e..0000000 Binary files a/server/server/__pycache__/urls.cpython-35.pyc and /dev/null differ diff --git a/server/server/__pycache__/wsgi.cpython-35.pyc b/server/server/__pycache__/wsgi.cpython-35.pyc deleted file mode 100644 index c148ad3..0000000 Binary files a/server/server/__pycache__/wsgi.cpython-35.pyc and /dev/null differ diff --git a/server/server/settings.py b/server/server/settings.py deleted file mode 100644 index 09b0d8f..0000000 --- a/server/server/settings.py +++ /dev/null @@ -1,104 +0,0 @@ -""" -Django settings for server project. - -Generated by 'django-admin startproject' using Django 1.8.6. - -For more information on this file, see -https://docs.djangoproject.com/en/1.8/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.8/ref/settings/ -""" - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -import os - -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'tuwuy7oio&%o#ugk!lujnpev!zihws1#fiu%dk30kkj5_eo09-' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = ( - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'academyMGS', -) - -MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'django.middleware.security.SecurityMiddleware', -) - -ROOT_URLCONF = 'server.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [os.path.join(BASE_DIR, 'templates')] - , - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'server.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.8/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - } -} - - -# Internationalization -# https://docs.djangoproject.com/en/1.8/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.8/howto/static-files/ - -STATIC_URL = '/static/' diff --git a/server/server/urls.py b/server/server/urls.py deleted file mode 100644 index b7bfd85..0000000 --- a/server/server/urls.py +++ /dev/null @@ -1,22 +0,0 @@ -"""server URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.8/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Add an import: from blog import urls as blog_urls - 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) -""" -from django.conf.urls import include, url -from django.contrib import admin - -urlpatterns = [ - url(r'^admin/', include(admin.site.urls)), - url(r'^api/',include('academyMGS.urls')) -] diff --git a/server/server/wsgi.py b/server/server/wsgi.py deleted file mode 100644 index 1dc5ea5..0000000 --- a/server/server/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for server project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") - -application = get_wsgi_application() diff --git a/server/util/[util]admin reset.bat b/server/util/[util]admin reset.bat deleted file mode 100644 index a9ca7d8..0000000 --- a/server/util/[util]admin reset.bat +++ /dev/null @@ -1,2 +0,0 @@ -cd.. -python manage.py changepassword admin \ No newline at end of file diff --git a/server/util/[util]create admin.bat b/server/util/[util]create admin.bat deleted file mode 100644 index 4dc66c7..0000000 --- a/server/util/[util]create admin.bat +++ /dev/null @@ -1,3 +0,0 @@ -cd.. -python manage.py createsuperuser -pause \ No newline at end of file diff --git a/server/util/[util]db update.bat b/server/util/[util]db update.bat deleted file mode 100644 index 36509bc..0000000 --- a/server/util/[util]db update.bat +++ /dev/null @@ -1,4 +0,0 @@ -cd.. -python manage.py makemigrations -python manage.py migrate -pause \ No newline at end of file diff --git a/server/util/[util]run server.bat b/server/util/[util]run server.bat deleted file mode 100644 index ecf9309..0000000 --- a/server/util/[util]run server.bat +++ /dev/null @@ -1,3 +0,0 @@ -cd.. -python manage.py runserver 0.0.0.0:5013 -pause \ No newline at end of file diff --git a/test/django.zip b/test/django.zip deleted file mode 100644 index a1d0821..0000000 Binary files a/test/django.zip and /dev/null differ diff --git a/test/django/django/django/.idea/django.iml b/test/django/django/django/.idea/django.iml deleted file mode 100644 index f99a978..0000000 --- a/test/django/django/django/.idea/django.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/test/django/django/django/.idea/misc.xml b/test/django/django/django/.idea/misc.xml deleted file mode 100644 index f81547e..0000000 --- a/test/django/django/django/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/django/django/django/.idea/modules.xml b/test/django/django/django/.idea/modules.xml deleted file mode 100644 index d2d7b19..0000000 --- a/test/django/django/django/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/test/django/django/django/.idea/workspace.xml b/test/django/django/django/.idea/workspace.xml deleted file mode 100644 index d3a829b..0000000 --- a/test/django/django/django/.idea/workspace.xml +++ /dev/null @@ -1,585 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1468774859551 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/django/django/django/django-admin.exe b/test/django/django/django/django-admin.exe deleted file mode 100644 index d843ea5..0000000 Binary files a/test/django/django/django/django-admin.exe and /dev/null differ diff --git a/test/django/django/django/django-admin.py b/test/django/django/django/django-admin.py deleted file mode 100644 index 20fc753..0000000 --- a/test/django/django/django/django-admin.py +++ /dev/null @@ -1,5 +0,0 @@ -#!c:\users\sunrin\appdata\local\programs\python\python35-32\python.exe -from django.core import management - -if __name__ == "__main__": - management.execute_from_command_line() diff --git a/test/django/django/django/testserver/db.sqlite3 b/test/django/django/django/testserver/db.sqlite3 deleted file mode 100644 index df1217a..0000000 Binary files a/test/django/django/django/testserver/db.sqlite3 and /dev/null differ diff --git a/test/django/django/django/testserver/manage.py b/test/django/django/django/testserver/manage.py deleted file mode 100644 index ef86b56..0000000 --- a/test/django/django/django/testserver/manage.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testserver.settings") - - from django.core.management import execute_from_command_line - - execute_from_command_line(sys.argv) diff --git a/test/django/django/django/testserver/startserver.cmd b/test/django/django/django/testserver/startserver.cmd deleted file mode 100644 index 21d757b..0000000 --- a/test/django/django/django/testserver/startserver.cmd +++ /dev/null @@ -1,2 +0,0 @@ -python manage.py runserver 0.0.0.0:8000 -pause \ No newline at end of file diff --git a/test/django/django/django/testserver/testapp/__init__.py b/test/django/django/django/testserver/testapp/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-34.pyc b/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-34.pyc deleted file mode 100644 index f138e21..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-35.pyc b/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 1b90fff..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-34.pyc b/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-34.pyc deleted file mode 100644 index 3f894c6..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-35.pyc b/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-35.pyc deleted file mode 100644 index 9442af4..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/admin.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/models.cpython-34.pyc b/test/django/django/django/testserver/testapp/__pycache__/models.cpython-34.pyc deleted file mode 100644 index 9b95312..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/models.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/models.cpython-35.pyc b/test/django/django/django/testserver/testapp/__pycache__/models.cpython-35.pyc deleted file mode 100644 index c36f0ae..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/models.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/views.cpython-34.pyc b/test/django/django/django/testserver/testapp/__pycache__/views.cpython-34.pyc deleted file mode 100644 index 58fa297..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/views.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/__pycache__/views.cpython-35.pyc b/test/django/django/django/testserver/testapp/__pycache__/views.cpython-35.pyc deleted file mode 100644 index 9253ae4..0000000 Binary files a/test/django/django/django/testserver/testapp/__pycache__/views.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/admin.py b/test/django/django/django/testserver/testapp/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/test/django/django/django/testserver/testapp/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/test/django/django/django/testserver/testapp/apps.py b/test/django/django/django/testserver/testapp/apps.py deleted file mode 100644 index 9806af7..0000000 --- a/test/django/django/django/testserver/testapp/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class TestappConfig(AppConfig): - name = 'testapp' diff --git a/test/django/django/django/testserver/testapp/migrations/0001_initial.py b/test/django/django/django/testserver/testapp/migrations/0001_initial.py deleted file mode 100644 index 4ebe09d..0000000 --- a/test/django/django/django/testserver/testapp/migrations/0001_initial.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='InsuranceInfo', - fields=[ - ('insuranceNumber', models.AutoField(primary_key=True, serialize=False)), - ('contractor', models.CharField(max_length=10)), - ('insuredPerson', models.TextField()), - ('admin', models.CharField(max_length=10)), - ('SSNumber', models.CharField(max_length=16)), - ('phoneNumber', models.CharField(max_length=14)), - ('homeNumber', models.CharField(max_length=14)), - ('address', models.TextField()), - ('carKind', models.TextField()), - ('carNumber', models.TextField()), - ('insurancePeriod', models.CharField(max_length=9)), - ('bunnapData', models.TextField()), - ('bunnapPremium', models.TextField()), - ('premium', models.TextField()), - ('insuranceKind', models.TextField()), - ('insuredPersonSSNumber', models.TextField()), - ('memo', models.TextField()), - ('profileImage', models.TextField(null=True)), - ], - ), - ] diff --git a/test/django/django/django/testserver/testapp/migrations/__init__.py b/test/django/django/django/testserver/testapp/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-34.pyc b/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-34.pyc deleted file mode 100644 index e212583..0000000 Binary files a/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-35.pyc b/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-35.pyc deleted file mode 100644 index e1c6aa2..0000000 Binary files a/test/django/django/django/testserver/testapp/migrations/__pycache__/0001_initial.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-34.pyc b/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-34.pyc deleted file mode 100644 index e5d2d3f..0000000 Binary files a/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-35.pyc b/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index 7171bd5..0000000 Binary files a/test/django/django/django/testserver/testapp/migrations/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testapp/models.py b/test/django/django/django/testserver/testapp/models.py deleted file mode 100644 index 7b793ed..0000000 --- a/test/django/django/django/testserver/testapp/models.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.db import models - -# Create your models here. -class InsuranceInfo(models.Model): - insuranceNumber=models.AutoField(primary_key=True) - contractor=models.CharField(max_length=10) - insuredPerson=models.TextField() - admin=models.CharField(max_length=10) - SSNumber=models.CharField(max_length=16) - phoneNumber=models.CharField(max_length=14) - homeNumber=models.CharField(max_length=14) - address=models.TextField() - carKind=models.TextField() - carNumber=models.TextField() - insurancePeriod=models.CharField(max_length=9) - bunnapData=models.TextField() - bunnapPremium=models.TextField() - premium=models.TextField() - insuranceKind=models.TextField() - insuredPersonSSNumber=models.TextField() - memo=models.TextField() - profileImage=models.TextField(null=True) - def __str__(self): # __unicode__ on Python 2 - return self.name diff --git a/test/django/django/django/testserver/testapp/tests.py b/test/django/django/django/testserver/testapp/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/test/django/django/django/testserver/testapp/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/test/django/django/django/testserver/testapp/views.py b/test/django/django/django/testserver/testapp/views.py deleted file mode 100644 index 25c6d26..0000000 --- a/test/django/django/django/testserver/testapp/views.py +++ /dev/null @@ -1,112 +0,0 @@ -from django.shortcuts import render -from .models import InsuranceInfo -import json -from django.http import HttpResponse -def listSize(request): - data =[{'listSize':len(InsuranceInfo.objects.all())},] - return HttpResponse(json.dumps(data), content_type='application/json') -def getInsuranceInfo(request): - data=[] - postListSize=0 - if request.method=='POST': - postListSize=request.POST['listSize'] - else: - postListSize=request.GET['listSize'] - for insuranceInfo in InsuranceInfo.objects.all(): - bunnapDate=insuranceInfo.bunnapData.split('/',1) - bunnapPremium=insuranceInfo.bunnapPremium.split('/',1) - - for i in range(0,5-len(bunnapDate)): - bunnapDate.append('') - bunnapPremium.append('0') - if bunnapPremium[0]=="": - bunnapPremium[0]=0 - data.append({'contractor':insuranceInfo.contractor, - 'insuredPerson':insuranceInfo.insuredPerson.split('/'), - 'admin':insuranceInfo.admin, - 'SSNumber':insuranceInfo.SSNumber, - 'phoneNumber':insuranceInfo.phoneNumber, - 'homeNumber':insuranceInfo.homeNumber, - 'address':insuranceInfo.address, - 'car':{'carKind':insuranceInfo.carKind,'carNumber':insuranceInfo.carNumber,}, - 'insurancePeriod':insuranceInfo.insurancePeriod, - 'installmentDate':{'bunnapDate':bunnapDate,'bunnapPremium':bunnapPremium}, - 'premium':insuranceInfo.premium, - 'insuranceKind':insuranceInfo.insuranceKind, - 'insuredPersonSSNumber':insuranceInfo.insuredPersonSSNumber.split('/'), - 'memo':insuranceInfo.memo, - 'profileImage':None, - },) - splitData=data[int(postListSize):] - - - - - print("\n\n\n") - print(json.dumps(splitData)) - return HttpResponse(json.dumps(splitData), content_type='application/json') -def putInsuranceInfo(request): - - insure=InsuranceInfo( - contractor=request.POST['contractor'], - insuredPerson=request.POST['insuredPerson'], - admin=request.POST['admin'], - SSNumber=request.POST['sSNumber'], - phoneNumber=request.POST['phoneNumber'], - homeNumber=request.POST['homeNumber'], - address=request.POST['address'], - carKind=request.POST['carKind'], - carNumber=request.POST['carNumber'], - insurancePeriod=request.POST['insurancePeriod'], - bunnapData=request.POST['bunnapDate'], - bunnapPremium=request.POST['bunnapPremium'], - premium=request.POST['premium'], - insuranceKind=request.POST['insuranceKind'], - insuredPersonSSNumber=request.POST['insuredPersonSSNumber'], - memo=request.POST['memo'], - profileImage=None, - ) - insure.save() - data=[{'flag':true}] - return HttpResponse(json.dumps(data), content_type='application/json') -def testpage(request): - postListSize=request.POST['listSize'] - data =[{'insuranceNumber':1, - 'contractor':'홍씨', - 'insuredPerson':['피보험자','피보험자2','피보험자3'], - 'admin':'관리자성명', - 'SSNumber':'981020-1081111', - 'phoneNumber':'010-4444-4444', - 'homeNumber':'02-427-3065', - 'address':'주소', - 'car':{'carKind':'차량종류','carNumber':'차량번호',}, - 'insurancePeriod':'20160705', - 'installmentDate':{'bunnapDate':['20160705','20160605','','',''],'bunnapPremium':[1000,1000,0,0,0],}, - 'premium':'30000', - 'insuranceKind':'생명보험', - 'insuredPersonSSNumber':['981020-1082888','981020-1082889','981020-2082888'], - 'memo':'시바라라라라라라라라랄토나올꺼같애\n진짜 개그켬이야 모콘괜히한듯', - 'profileImage':None, - },{'insuranceNumber':2, - 'contractor':'계약자2', - 'insuredPerson':['피보험자','피보험자2','피보험자3'], - 'admin':'관리자성명', - 'SSNumber':'981020-1081111', - 'phoneNumber':'010-4445-4444', - 'homeNumber':'02-427-3065', - 'address':'주소', - 'car':{'carKind':'차량종류','carNumber':'차량번호',}, - 'insurancePeriod':'20160705', - 'installmentDate':{'bunnapDate':['20160505','20160605','20160701','',''],'bunnapPremium':[1000,1000,0,0,0],}, - 'premium':'20000', - 'insuranceKind':'생명보험', - 'insuredPersonSSNumber':['981020-1082888','981020-1082889','981020-2082888'], - 'memo':'시바라라라라라라라라랄토나올꺼같애\n진짜 개그켬이야 모콘괜히한듯', - 'profileImage':None, - },] - - splitData=data[int(postListSize):] - print(json.dumps(splitData)) - return HttpResponse(json.dumps(splitData), content_type='application/json') -def testpages(request): - return HttpResponse("hey this is dummy server LOL do not connect my server.") diff --git a/test/django/django/django/testserver/testserver/__init__.py b/test/django/django/django/testserver/testserver/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-34.pyc b/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-34.pyc deleted file mode 100644 index f6299bf..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-35.pyc b/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-35.pyc deleted file mode 100644 index a91bee0..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/__init__.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-34.pyc b/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-34.pyc deleted file mode 100644 index bf724b0..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-35.pyc b/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-35.pyc deleted file mode 100644 index 9838186..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/settings.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-34.pyc b/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-34.pyc deleted file mode 100644 index f457f8f..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-35.pyc b/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-35.pyc deleted file mode 100644 index 2096cc2..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/urls.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-34.pyc b/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-34.pyc deleted file mode 100644 index aacd66c..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-34.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-35.pyc b/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-35.pyc deleted file mode 100644 index 7887b8b..0000000 Binary files a/test/django/django/django/testserver/testserver/__pycache__/wsgi.cpython-35.pyc and /dev/null differ diff --git a/test/django/django/django/testserver/testserver/settings.py b/test/django/django/django/testserver/testserver/settings.py deleted file mode 100644 index 9de7654..0000000 --- a/test/django/django/django/testserver/testserver/settings.py +++ /dev/null @@ -1,122 +0,0 @@ -""" -Django settings for testserver project. - -Generated by 'django-admin startproject' using Django 1.9.5. - -For more information on this file, see -https://docs.djangoproject.com/en/1.9/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.9/ref/settings/ -""" - -import os - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = '!xl3a(_md%p9d=*&1$=no)$ean=*33=&9z5(xgld%qr^&vshs6' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'testapp', -] - -MIDDLEWARE_CLASSES = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - #'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -] - -ROOT_URLCONF = 'testserver.urls' - -TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - ], - }, - }, -] - -WSGI_APPLICATION = 'testserver.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.9/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - } -} - - -# Password validation -# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', - }, - { - 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/1.9/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'UTC' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.9/howto/static-files/ - -STATIC_URL = '/static/' diff --git a/test/django/django/django/testserver/testserver/urls.py b/test/django/django/django/testserver/testserver/urls.py deleted file mode 100644 index 987ca31..0000000 --- a/test/django/django/django/testserver/testserver/urls.py +++ /dev/null @@ -1,26 +0,0 @@ -"""testserver URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.9/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.conf.urls import url, include - 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) -""" -from django.conf.urls import url -from django.contrib import admin -from testapp import views -urlpatterns = [ - url(r'^admin/', admin.site.urls), - url(r'^$', views.testpage), - url(r'^getlistsize/',views.listSize), - url(r'^getInsuranceInfo/',views.getInsuranceInfo), - url(r'^putInsuranceInfo/',views.putInsuranceInfo), - url(r'^testpage/',views.testpage), -] diff --git a/test/django/django/django/testserver/testserver/wsgi.py b/test/django/django/django/testserver/testserver/wsgi.py deleted file mode 100644 index f47776c..0000000 --- a/test/django/django/django/testserver/testserver/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for testserver project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testserver.settings") - -application = get_wsgi_application() diff --git "a/test/django/django/django/testserver/testserver/\354\225\204\354\235\264\353\224\224\354\226\264.txt" "b/test/django/django/django/testserver/testserver/\354\225\204\354\235\264\353\224\224\354\226\264.txt" deleted file mode 100644 index af9c9b5..0000000 --- "a/test/django/django/django/testserver/testserver/\354\225\204\354\235\264\353\224\224\354\226\264.txt" +++ /dev/null @@ -1 +0,0 @@ -ctrl+s ش \ No newline at end of file diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/AddActivity.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/AddActivity.java" deleted file mode 100644 index 48fb9be..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/AddActivity.java" +++ /dev/null @@ -1,10 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Activity; - -import android.support.v7.app.AppCompatActivity; - -/** - * Created by Sunrin on 2016-03-28. - */ -public class AddActivity extends AppCompatActivity{ - -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/MainActivity.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/MainActivity.java" deleted file mode 100644 index f6a19aa..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Activity/MainActivity.java" +++ /dev/null @@ -1,237 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Activity; - -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.provider.ContactsContract; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; -import android.support.design.widget.NavigationView; -import android.support.v4.view.GravityCompat; -import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -import java.util.ArrayList; -import java.util.List; - -import insurance.manager.appplepi.com.insurancemg.Adapter.MyAdapter; -import insurance.manager.appplepi.com.insurancemg.Adapter.NavAdapter; -import insurance.manager.appplepi.com.insurancemg.Object.Contact; -import insurance.manager.appplepi.com.insurancemg.Object.InsureInfo; -import insurance.manager.appplepi.com.insurancemg.Object.MyData; -import insurance.manager.appplepi.com.insurancemg.R; -import insurance.manager.appplepi.com.insurancemg.Realm.RealmInsureInfo; -import insurance.manager.appplepi.com.insurancemg.Service.PersonExportService; -import insurance.manager.appplepi.com.insurancemg.Util.RetrofitUtil; -import retrofit.Callback; -import retrofit.RetrofitError; -import retrofit.client.Response; - -public class MainActivity extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener { - private RecyclerView mRecyclerView; - private RecyclerView.Adapter mAdapter; - private RecyclerView.LayoutManager mLayoutManager; - private ArrayList myDataset; - private NavAdapter m_Adapter; - private ListView m_ListView; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - m_Adapter = new NavAdapter(); - - // Xml에서 추가한 ListView 연결 - m_ListView = (ListView) findViewById(R.id.list_view_inside_nav); - - m_ListView.setAdapter(m_Adapter); - - // ListView에 아이템 추가 - m_Adapter.addLine("필터"); - m_Adapter.add("계약자"); - m_Adapter.add("차량번호"); - m_Adapter.add("피보험자"); - m_Adapter.addLine("정렬"); - m_Adapter.add("분납날짜순"); - m_Adapter.add("계약자 이름순"); - m_Adapter.add("생년월일순"); - m_Adapter.add("보험료순"); - - FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); - fab.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - /*Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) - .setAction("Action", null).show();*/ - Intent addActivity=new Intent(getApplicationContext(),AddActivity.class); - startActivity(addActivity); - } - }); - - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( - this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); - drawer.setDrawerListener(toggle); - toggle.syncState(); - mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); - - // use this setting to improve performance if you know that changes - // in content do not change the layout size of the RecyclerView - mRecyclerView.setHasFixedSize(true); - - // use a linear layout manager - mLayoutManager = new GridLayoutManager(this,2); - mRecyclerView.setLayoutManager(mLayoutManager); - myDataset = new ArrayList<>(); - mAdapter = new MyAdapter(myDataset); - mRecyclerView.setAdapter(mAdapter); - - PersonExportService service = RetrofitUtil.getAdapter().create(PersonExportService.class); - service.getPersonList(new Callback>() { - @Override - public void success(List datas, Response response) { - for (InsureInfo data : datas) { - RealmInsureInfo realmInsureInfo=new RealmInsureInfo(getApplicationContext()); - Log.d("sibal",data.getContractor()+" "+data.getPhoneNumber()+" "+data.getAdmin()); - - myDataset.add(data); - m_Adapter.notifyDataSetChanged(); - realmInsureInfo.setData(data); - // Snackbar.make(,data.getContractor(), Snackbar.LENGTH_LONG).setAction("Action", null).show(); - } - } - - @Override - public void failure(RetrofitError error) { - Log.d("sibal",error.toString()); - } - }); - - NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - ArrayList temp=getContactList(); -// Toast.makeText(getApplicationContext(), temp.get(0).getName(),Toast.LENGTH_LONG).show(); - - - - // specify an adapter (see also next example) - - - - } - private ArrayList getContactList() { - - Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; - - String[] projection = new String[] { - ContactsContract.CommonDataKinds.Phone.CONTACT_ID, // 연락처 ID -> 사진 정보 가져오는데 사용 - ContactsContract.CommonDataKinds.Phone.NUMBER, // 연락처 - ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }; // 연락처 이름. - - String[] selectionArgs = null; - - String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME - + " COLLATE LOCALIZED ASC"; - - Cursor contactCursor = managedQuery(uri, projection, null, - selectionArgs, sortOrder); - - ArrayList contactlist = new ArrayList(); - - if (contactCursor.moveToFirst()) { - do { - String phonenumber = contactCursor.getString(1).replaceAll("-", - ""); - if (phonenumber.length() == 10) { - phonenumber = phonenumber.substring(0, 3) + "-" - + phonenumber.substring(3, 6) + "-" - + phonenumber.substring(6); - } else if (phonenumber.length() > 8) { - phonenumber = phonenumber.substring(0, 3) + "-" - + phonenumber.substring(3, 7) + "-" - + phonenumber.substring(7); - } - Contact acontact = new Contact(); - acontact.setPhotoid(contactCursor.getLong(0)); - acontact.setPhonenum(phonenumber); - acontact.setName(contactCursor.getString(2)); - - contactlist.add(acontact); - } while (contactCursor.moveToNext()); - } - - return contactlist; - - } - @Override - public void onBackPressed() { - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - if (drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawer(GravityCompat.START); - } else { - super.onBackPressed(); - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } - - @SuppressWarnings("StatementWithEmptyBody") - @Override - public boolean onNavigationItemSelected(MenuItem item) { - // Handle navigation view item clicks here. - int id = item.getItemId(); - - /* if (id == R.id.nav_camara) { - // Handle the camera action - } else if (id == R.id.nav_gallery) { - - } else if (id == R.id.nav_slideshow) { - - } else if (id == R.id.nav_manage) { - - } else if (id == R.id.nav_share) { - - } else if (id == R.id.nav_send) { - - }*/ - - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - drawer.closeDrawer(GravityCompat.START); - return true; - } - -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/MyAdapter.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/MyAdapter.java" deleted file mode 100644 index 4900084..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/MyAdapter.java" +++ /dev/null @@ -1,80 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Adapter; - -import android.graphics.Bitmap; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import org.w3c.dom.Text; - -import java.util.ArrayList; -import java.util.ResourceBundle; - -import insurance.manager.appplepi.com.insurancemg.Object.InsureInfo; -import insurance.manager.appplepi.com.insurancemg.Object.MyData; -import insurance.manager.appplepi.com.insurancemg.R; - -/** - * Created by Sunrin on 2016-03-21. - */ -public class MyAdapter extends RecyclerView.Adapter { - private ArrayList mDataset; - - // Provide a reference to the views for each data item - // Complex data items may need more than one view per item, and - // you provide access to all the views for a data item in a view holder - public static class ViewHolder extends RecyclerView.ViewHolder { - // each data item is just a string in this case - public ImageView mImageView; - public TextView constractor; - public TextView phoneNum; - public TextView admin; - public ViewHolder(View view) { - super(view); - mImageView = (ImageView)view.findViewById(R.id.imageView); - mImageView.setImageResource(R.mipmap.default_man); - constractor = (TextView)view.findViewById(R.id.contractor); - phoneNum=(TextView)view.findViewById(R.id.phone_number); - admin=(TextView)view.findViewById(R.id.admin); - } - } - - // Provide a suitable constructor (depends on the kind of dataset) - public MyAdapter(ArrayList myDataset) { - mDataset = myDataset; - } - - // Create new views (invoked by the layout manager) - @Override - public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, - int viewType) { - // create a new view - View v = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.my_view, parent, false); - // set the view's size, margins, paddings and layout parameters - ViewHolder vh = new ViewHolder(v); - return vh; - } - - // Replace the contents of a view (invoked by the layout manager) - @Override - public void onBindViewHolder(ViewHolder holder, int position) { - // - get element from your dataset at this position - // - replace the contents of the view with that element - /* holder.mTextView.setText(mDataset.get(position).text); - holder.mImageView.setImageResource(mDataset.get(position).img);*/ - holder.constractor.setText(mDataset.get(position).getContractor()); - holder.phoneNum.setText(mDataset.get(position).getPhoneNumber()); - holder.admin.setText(mDataset.get(position).getAdmin()); - } - - // Return the size of your dataset (invoked by the layout manager) - @Override - public int getItemCount() { - return mDataset.size(); - } -} - diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/NavAdapter.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/NavAdapter.java" deleted file mode 100644 index e8e31fc..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Adapter/NavAdapter.java" +++ /dev/null @@ -1,170 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Adapter; - -import java.util.ArrayList; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnLongClickListener; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.Button; -import android.widget.TextView; -import android.support.design.widget.Snackbar; - -import insurance.manager.appplepi.com.insurancemg.R; - -public class NavAdapter extends BaseAdapter { - - // 문자열을 보관 할 ArrayList - private ArrayList m_List; - - class Menu{ - String _msg; - boolean flag=false; - - public void set_msg(String _msg) { - this._msg = _msg; - } - - public Menu(String _msg) { - this._msg = _msg; - } - - public Menu(String _msg, boolean flag) { - this._msg = _msg; - this.flag = flag; - } - - public void setFlag(boolean flag) { - this.flag = flag; - } - - public boolean isFlag() { - - return flag; - } - - public String get_msg() { - - return _msg; - } - } - // 생성자 - public NavAdapter() { - m_List = new ArrayList(); - } - - // 현재 아이템의 수를 리턴 - @Override - public int getCount() { - return m_List.size(); - } - - // 현재 아이템의 오브젝트를 리턴, Object를 상황에 맞게 변경하거나 리턴받은 오브젝트를 캐스팅해서 사용 - @Override - public Object getItem(int position) { - return m_List.get(position); - } - - // 아이템 position의 ID 값 리턴 - @Override - public long getItemId(int position) { - return position; - } - - // 출력 될 아이템 관리 - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - final int pos = position; - final Context context = parent.getContext(); - - // 리스트가 길어지면서 현재 화면에 보이지 않는 아이템은 converView가 null인 상태로 들어 옴 - if ( convertView == null ) { - // view가 null일 경우 커스텀 레이아웃을 얻어 옴 - LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = inflater.inflate(R.layout.custom_item, parent, false); - - // TextView에 현재 position의 문자열 추가 - TextView text = (TextView) convertView.findViewById(R.id.text); - text.setText(m_List.get(position).get_msg()); - // 버튼을 터치 했을 때 이벤트 발생 - Button btn = (Button) convertView.findViewById(R.id.btn_test); - if(m_List.get(position).isFlag()){ - btn.setVisibility(View.INVISIBLE); - convertView.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - // Toast.makeText(context, "리스트 클릭 : "+m_List.get(pos), Toast.LENGTH_SHORT).show(); - } - }); - convertView.setOnLongClickListener(new OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - // 터치 시 해당 아이템 이름 출력 - // Toast.makeText(context, "리스트 롱 클릭 : "+m_List.get(pos), Toast.LENGTH_SHORT).show(); - return true; - } - }); - } - else { - btn.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - // 터치 시 해당 아이템 이름 출력 - Snackbar.make(v, m_List.get(pos).get_msg(), Snackbar.LENGTH_LONG).setAction("Action", null).show(); - // Toast.makeText(context, m_List.get(pos), Toast.LENGTH_SHORT).show(); - } - }); - - // 리스트 아이템을 터치 했을 때 이벤트 발생 - convertView.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - // 터치 시 해당 아이템 이름 출력 - Snackbar.make(v, m_List.get(pos).get_msg(), Snackbar.LENGTH_LONG).setAction("Action", null).show(); - - // Toast.makeText(context, "리스트 클릭 : "+m_List.get(pos), Toast.LENGTH_SHORT).show(); - } - }); - - // 리스트 아이템을 길게 터치 했을 떄 이벤트 발생 - convertView.setOnLongClickListener(new OnLongClickListener() { - - @Override - public boolean onLongClick(View v) { - // 터치 시 해당 아이템 이름 출력 - Snackbar.make(v, m_List.get(pos).get_msg(), Snackbar.LENGTH_LONG).setAction("Action", null).show(); - // Toast.makeText(context, "리스트 롱 클릭 : "+m_List.get(pos), Toast.LENGTH_SHORT).show(); - return true; - } - }); - } - } - - return convertView; - } - - private class CustomHolder { - TextView m_TextView; - Button m_Btn; - } - // 외부에서 아이템 추가 요청 시 사용 - public void add(String _msg) { - m_List.add(new Menu(_msg)); - } - public void addLine(String _msg){ - m_List.add(new Menu(_msg,true)); - } - - // 외부에서 아이템 삭제 요청 시 사용 - public void remove(int _position) { - m_List.remove(_position); - } -} - diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Contact.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Contact.java" deleted file mode 100644 index 538ee5c..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Contact.java" +++ /dev/null @@ -1,34 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Object; - -/** - * Created by Sunrin on 2016-03-14. - */ -public class Contact { - long photoid; - String name; - String phonenum; - - public String getName() { - return name; - } - - public String getPhonenum() { - return phonenum; - } - - public long getPhotoid() { - return photoid; - } - - public void setPhotoid(long photoid) { - this.photoid = photoid; - } - - public void setName(String name) { - this.name = name; - } - - public void setPhonenum(String phonenum) { - this.phonenum = phonenum; - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Dog.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Dog.java" deleted file mode 100644 index 2d67349..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Dog.java" +++ /dev/null @@ -1,30 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Object; - -import io.realm.RealmObject; -import io.realm.annotations.Required; - -/** - * Created by Sunrin on 2016-04-20. - */ -public class Dog extends RealmObject { - @Required // Name cannot be null - private String name; - private int age; - - public void setName(String name) { - this.name = name; - } - - public void setAge(int age) { - this.age = age; - } - - public String getName() { - return name; - } - - public int getAge() { - return age; - } - // ... Generated getters and setters ... -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/InsureInfo.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/InsureInfo.java" deleted file mode 100644 index 97bad17..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/InsureInfo.java" +++ /dev/null @@ -1,133 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Object; - - -/** - * Created by Sunrin on 2016-03-14. - */ -public class InsureInfo{ - String contractor; - String insuredPerson; - String admin; - String SSNumber ; - String phoneNumber; - String address ; - String carNumber ; - String insurancePeriod; - String installmentDate; - long premium; - long installmentPremium; - - public void setContractor(String contractor) { - this.contractor = contractor; - } - - public void setInsuredPerson(String insuredPerson) { - this.insuredPerson = insuredPerson; - } - - public void setAdmin(String admin) { - this.admin = admin; - } - - public void setSSNumber(String SSNumber) { - this.SSNumber = SSNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public void setAddress(String address) { - this.address = address; - } - - public void setCarNumber(String carNumber) { - this.carNumber = carNumber; - } - - public void setInsurancePeriod(String insurancePeriod) { - this.insurancePeriod = insurancePeriod; - } - - public void setInstallmentDate(String installmentDate) { - this.installmentDate = installmentDate; - } - - public String getInstallmentDate() { - - return installmentDate; - } - - public void setPremium(long premium) { - this.premium = premium; - } - - public void setInstallmentPremium(long installmentPremium) { - this.installmentPremium = installmentPremium; - } - - public void setVirtualAccount(String virtualAccount) { - this.virtualAccount = virtualAccount; - } - - public String getContractor() { - - return contractor; - } - - public String getInsuredPerson() { - return insuredPerson; - } - - public String getAdmin() { - return admin; - } - - public String getSSNumber() { - return SSNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public String getAddress() { - return address; - } - - public String getCarNumber() { - return carNumber; - } - - public String getInsurancePeriod() { - return insurancePeriod; - } - - - public long getPremium() { - return premium; - } - - public long getInstallmentPremium() { - return installmentPremium; - } - - public String getVirtualAccount() { - return virtualAccount; - } - - String virtualAccount; - public InsureInfo(insurance.manager.appplepi.com.insurancemg.Realm.InsureInfo insureInfo) { - contractor = insureInfo.getContractor(); - insuredPerson = insureInfo.getInsuredPerson(); - admin = insureInfo.getAdmin(); - SSNumber = insureInfo.getSSNumber(); - phoneNumber = insureInfo.getPhoneNumber(); - address = insureInfo.getAddress(); - carNumber = insureInfo.getCarNumber(); - insurancePeriod = insureInfo.getInsurancePeriod(); - installmentDate = insureInfo.getInstallmentDate(); - premium = insureInfo.getPremium(); - installmentPremium = insureInfo.getInstallmentPremium(); - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/MyData.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/MyData.java" deleted file mode 100644 index 71e7cab..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/MyData.java" +++ /dev/null @@ -1,13 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Object; - -/** - * Created by Sunrin on 2016-03-21. - */ -public class MyData{ - public String text; - public int img; - public MyData(String text, int img){ - this.text = text; - this.img = img; - } -} \ No newline at end of file diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Person.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Person.java" deleted file mode 100644 index 8a67349..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Object/Person.java" +++ /dev/null @@ -1,42 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Object; - -import io.realm.RealmList; -import io.realm.RealmObject; -import io.realm.annotations.Required; - -/** - * Created by Sunrin on 2016-03-21. - */ -public class Person extends RealmObject { - @Required // Name is not nullable - private String name; - private String imageUrl; // imageUrl is an optional field - - public void setName(String name) { - this.name = name; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public void setDogs(RealmList dogs) { - this.dogs = dogs; - } - - public RealmList getDogs() { - return dogs; - } - - public String getName() { - return name; - } - - public String getImageUrl() { - return imageUrl; - } - - private RealmList dogs; // A person has many dogs (a relationship) - - // ... Generated getters and setters ... -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/InsureInfo.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/InsureInfo.java" deleted file mode 100644 index 5392990..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/InsureInfo.java" +++ /dev/null @@ -1,127 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Realm; - -import io.realm.RealmObject; - -/** - * Created by Sunrin on 2016-04-25. - */ -public class InsureInfo extends RealmObject { - String contractor; - String insuredPerson; - String admin; - String SSNumber; - String phoneNumber; - String address; - String carNumber; - String insurancePeriod; - String installmentDate; - long premium; - long installmentPremium; - - public void setContractor(String contractor) { - this.contractor = contractor; - } - - public void setInsuredPerson(String insuredPerson) { - this.insuredPerson = insuredPerson; - } - - public void setAdmin(String admin) { - this.admin = admin; - } - - public void setSSNumber(String SSNumber) { - this.SSNumber = SSNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public void setAddress(String address) { - this.address = address; - } - - public void setCarNumber(String carNumber) { - this.carNumber = carNumber; - } - - public void setInsurancePeriod(String insurancePeriod) { - this.insurancePeriod = insurancePeriod; - } - - public void setInstallmentDate(String installmentDate) { - this.installmentDate = installmentDate; - } - - public void setPremium(long premium) { - this.premium = premium; - } - - public void setInstallmentPremium(long installmentPremium) { - this.installmentPremium = installmentPremium; - } - - public String getContractor() { - - return contractor; - } - - public String getInsuredPerson() { - return insuredPerson; - } - - public String getAdmin() { - return admin; - } - - public String getSSNumber() { - return SSNumber; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public String getAddress() { - return address; - } - - public String getCarNumber() { - return carNumber; - } - - public String getInsurancePeriod() { - return insurancePeriod; - } - - public String getInstallmentDate() { - return installmentDate; - } - - public long getPremium() { - return premium; - } - - public long getInstallmentPremium() { - return installmentPremium; - } - - public InsureInfo(insurance.manager.appplepi.com.insurancemg.Object.InsureInfo insureInfo) { - contractor = insureInfo.getContractor(); - insuredPerson = insureInfo.getInsuredPerson(); - admin = insureInfo.getAdmin(); - SSNumber = insureInfo.getSSNumber(); - phoneNumber = insureInfo.getPhoneNumber(); - address = insureInfo.getAddress(); - carNumber = insureInfo.getCarNumber(); - insurancePeriod = insureInfo.getInsurancePeriod(); - installmentDate = insureInfo.getInstallmentDate(); - premium = insureInfo.getPremium(); - installmentPremium = insureInfo.getInstallmentPremium(); - } - - public InsureInfo() { - - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmInsureInfo.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmInsureInfo.java" deleted file mode 100644 index 82eab00..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmInsureInfo.java" +++ /dev/null @@ -1,59 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Realm; - -import android.content.Context; -import android.util.Log; - -import io.realm.Realm; -import io.realm.RealmConfiguration; - -/** - * Created by Sunrin on 2016-04-20. - */ -public class RealmInsureInfo { - Realm realm; - public RealmInsureInfo() { - - } - public RealmInsureInfo(Context context) { - // Use them like regular java objects - - // Create a RealmConfiguration which is to locate Realm file in package's "files" directory. - RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).build(); - // Get a Realm instance for this thread - realm = Realm.getInstance(realmConfig); - - // Query Realm for all insureInfos less than 2 years old - // final RealmResults puppies = realm.where(InsureInfo.class).lessThan("age", 2).findAll(); - // puppies.size(); // => 0 because no insureInfos have been added to the Realm yet - -// Persist your data easily - - -// Queries are updated in real time - // puppies.size(); // => 1 -// Query and update the result asynchronously in another thread - - } - public void setData(insurance.manager.appplepi.com.insurancemg.Object.InsureInfo insureInfo){ - realm.beginTransaction(); - realm.copyToRealm(new insurance.manager.appplepi.com.insurancemg.Realm.InsureInfo(insureInfo)); - realm.commitTransaction(); - } - public insurance.manager.appplepi.com.insurancemg.Object.InsureInfo getDataByKey(final String key, final String value){ - InsureInfo insureInfo = realm.where(InsureInfo.class).equalTo(key, value).findFirst(); - /* - realm.executeTransactionAsync(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - } - },new Realm.Transaction.OnError(){ - - @Override - public void onError(Throwable error) { - - } - }); - */ - return new insurance.manager.appplepi.com.insurancemg.Object.InsureInfo(insureInfo); - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmTest.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmTest.java" deleted file mode 100644 index 7bb04a7..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Realm/RealmTest.java" +++ /dev/null @@ -1,66 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Realm; - -import android.content.Context; -import android.util.Log; - -import insurance.manager.appplepi.com.insurancemg.Object.Dog; -import io.realm.Realm; -import io.realm.RealmAsyncTask; -import io.realm.RealmConfiguration; -import io.realm.RealmList; -import io.realm.RealmObject; -import io.realm.RealmResults; -import io.realm.annotations.Required; - -/** - * Created by Sunrin on 2016-04-20. - */ -public class RealmTest { - RealmTest(Context context) { - // Use them like regular java objects - final Dog dog = new Dog(); - dog.setName("Rex"); - dog.setAge(1); - Log.v("sibal", "Name of the dog: " + dog.getName()); - - // Create a RealmConfiguration which is to locate Realm file in package's "files" directory. - RealmConfiguration realmConfig = new RealmConfiguration.Builder(context).build(); - // Get a Realm instance for this thread - Realm realm = Realm.getInstance(realmConfig); - - // Query Realm for all dogs less than 2 years old - final RealmResults puppies = realm.where(Dog.class).lessThan("age", 2).findAll(); - puppies.size(); // => 0 because no dogs have been added to the Realm yet - -// Persist your data easily - realm.beginTransaction(); - realm.copyToRealm(dog); - realm.commitTransaction(); - -// Queries are updated in real time - puppies.size(); // => 1 - -// Query and update the result asynchronously in another thread - realm.executeTransactionAsync(new Realm.Transaction() { - @Override - public void execute(Realm realm) { - // begin & end transcation calls are done for you - Dog theDog = realm.where(Dog.class).equalTo("age", 1).findFirst(); - theDog.setAge(3); - } - }, new Realm.Transaction.OnSuccess() { - @Override - public void onSuccess() { - // Original Queries and Realm objects are automatically updated. - puppies.size(); // => 0 because there are no more puppies (less than 2 years old) - dog.getAge(); // => 3 the dogs age is updated - } - },new Realm.Transaction.OnError(){ - - @Override - public void onError(Throwable error) { - - } - }); - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Service/PersonExportService.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Service/PersonExportService.java" deleted file mode 100644 index 834b76e..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Service/PersonExportService.java" +++ /dev/null @@ -1,32 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Service; - -import java.util.List; - -import insurance.manager.appplepi.com.insurancemg.Object.InsureInfo; -import retrofit.Callback; -import retrofit.http.POST; -public interface PersonExportService { - @POST("/") - void getPersonList(Callback> callback); - - /* - 1.계약자, 피보험자, 관리자 성명, 주민번호, 연락처, 주소 -2.차량번호 -3.보험기간,분납날짜 -4.보험료,분납보험료 -5.가상계좌 - -@Field("contractor")String contractor, - @Field("insured_person")String insuredPerson, - @Field("admin")String admin, - @Field("s_s_number")String SSNumber , - @Field("phone_number")String phoneNumber, - @Field("adress")String address , - @Field("car_number")String carNumber , - @Field("insurance_period")String insurancePeriod, - @Field("installment_date")String InstallmentDate, - @Field("premium")long premium, - @Field("installment_premium")long installmentPremium, - @Field("virtual_account")String virtualAccount, - */ -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Util/RetrofitUtil.java" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Util/RetrofitUtil.java" deleted file mode 100644 index a6dbf33..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/Util/RetrofitUtil.java" +++ /dev/null @@ -1,18 +0,0 @@ -package insurance.manager.appplepi.com.insurancemg.Util; - -import retrofit.RestAdapter; - -public class RetrofitUtil { - - private static RestAdapter adapter; - - public static RestAdapter getAdapter() { - if (null == adapter) { - adapter = new RestAdapter.Builder() - .setEndpoint("http://donquix.iptime.org:8000") - .build(); - } - - return adapter; - } -} diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/activity_main.xml" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/activity_main.xml" deleted file mode 100644 index 198519d..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/activity_main.xml" +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/app_bar_main.xml" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/app_bar_main.xml" deleted file mode 100644 index 86b2bdd..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/app_bar_main.xml" +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/content_main.xml" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/content_main.xml" deleted file mode 100644 index 92b8310..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/content_main.xml" +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/custom_item.xml" "b/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/custom_item.xml" deleted file mode 100644 index 9b005d2..0000000 --- "a/test/django/django/django/testserver/\354\241\260\353\241\261\354\235\264/custom_item.xml" +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -