From aa4ac15957a6b3f1e2e2b442f09779c610589cb8 Mon Sep 17 00:00:00 2001 From: mrdude2478 Date: Tue, 26 Apr 2022 01:15:56 +0100 Subject: [PATCH] Add files via upload --- LICENSE | 69 ++++++++++++ Makefile | 254 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 43 ++++++++ icon.jpg | Bin 0 -> 64572 bytes libusbhsfs.LICENSE | 6 ++ 5 files changed, 372 insertions(+) create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 icon.jpg create mode 100644 libusbhsfs.LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a4b927c --- /dev/null +++ b/LICENSE @@ -0,0 +1,69 @@ +Microsoft Public License (Ms-PL) + +This license governs use of the accompanying software. If you use the +software, you accept this license. If you do not accept the license, +do not use the software. + + 1. Definitions + + The terms "reproduce," "reproduction," "derivative works," and + "distribution" have the same meaning here as under U.S. copyright + law. + + A "contribution" is the original software, or any additions or + changes to the software. + + A "contributor" is any person that distributes its contribution + under this license. + + "Licensed patents" are a contributor's patent claims that read + directly on its contribution. + + 2. Grant of Rights + + (A) Copyright Grant- Subject to the terms of this license, + including the license conditions and limitations in section 3, + each contributor grants you a non-exclusive, worldwide, + royalty-free copyright license to reproduce its contribution, + prepare derivative works of its contribution, and distribute its + contribution or any derivative works that you create. + + (B) Patent Grant- Subject to the terms of this license, including + the license conditions and limitations in section 3, each + contributor grants you a non-exclusive, worldwide, royalty-free + license under its licensed patents to make, have made, use, sell, + offer for sale, import, and/or otherwise dispose of its + contribution in the software or derivative works of the + contribution in the software. + + 3. Conditions and Limitations + + (A) No Trademark License- This license does not grant you rights + to use any contributors' name, logo, or trademarks. + + (B) If you bring a patent claim against any contributor over + patents that you claim are infringed by the software, your patent + license from such contributor to the software ends automatically. + + (C) If you distribute any portion of the software, you must retain + all copyright, patent, trademark, and attribution notices that are + present in the software. + + (D) If you distribute any portion of the software in source code + form, you may do so only under this license by including a + complete copy of this license with your distribution. If you + distribute any portion of the software in compiled or object code + form, you may only do so under a license that complies with this + license. + + (E) You may not distribute, copy, use, or link any portion of this + code to any other code that requires distribution of source code. + + (F) The software is licensed "as-is." You bear the risk of using + it. The contributors give no express warranties, guarantees, or + conditions. You may have additional consumer rights under your + local laws which this license cannot change. To the extent + permitted under your local laws, the contributors exclude the + implied warranties of merchantability, fitness for a particular + purpose and non-infringement. + \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..23c86f5 --- /dev/null +++ b/Makefile @@ -0,0 +1,254 @@ +#--------------------------------------------------------------------------------- +.SUFFIXES: +#--------------------------------------------------------------------------------- + +ifeq ($(strip $(DEVKITPRO)),) +$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=/devkitpro") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITPRO)/libnx/switch_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional) +# +# NO_ICON: if set to anything, do not use icon. +# NO_NACP: if set to anything, no .nacp file is generated. +# APP_TITLE is the name of the app stored in the .nacp file (Optional) +# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) +# APP_VERSION is the version of the app stored in the .nacp file (Optional) +# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) +# ICON is the filename of the icon (.jpg), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .jpg +# - icon.jpg +# - /default_icon.jpg +# +# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .json +# - config.json +# If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead +# of a homebrew executable (.nro). This is intended to be used for sysmodules. +# NACP building is skipped as well. +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source source/ui source/data source/install source/nx source/nx/ipc source/util $(CURDIR)/include/Plutonium/Plutonium/source +DATA := data +INCLUDES := include include/ui include/data include/install include/nx include/nx/ipc include/util $(CURDIR)/include/Plutonium/Plutonium/include +APP_TITLE := TinWoo Installer +APP_AUTHOR := MrDude +APP_VERSION := 1.0.5 +ROMFS := romfs +APP_ICON := icon.jpg + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE + +CFLAGS := -g -Wall -O2 -ffunction-sections \ + $(ARCH) $(DEFINES) + +CFLAGS += $(INCLUDE) -D__SWITCH__ -Wno-deprecated -Wall #-D__DEBUG__ -DNXLINK_DEBUG + +CXXFLAGS := $(CFLAGS) -fno-rtti -std=gnu++17 -Wall + + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lpu -lcurl -lz -lssh2 -lusbhsfs -lntfs-3g -llwext4 -lmbedtls -lmbedcrypto -lmbedx509 -lminizip -lnx -lstdc++fs -lzzip -lpu -lfreetype -lSDL2_mixer -lopusfile -lopus -lmodplug -lmpg123 -lvorbisidec -lSDL2 -lc -logg -lSDL2_ttf -lSDL2_gfx -lSDL2_image -lwebp -lpng -ljpeg `sdl2-config --libs` `freetype-config --libs` -lzstd + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(PORTLIBS) $(LIBNX) $(CURDIR)/include/Plutonium/Plutonium + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SRC) +export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +ifeq ($(strip $(CONFIG_JSON)),) + jsons := $(wildcard *.json) + ifneq (,$(findstring $(TARGET).json,$(jsons))) + export APP_JSON := $(TOPDIR)/$(TARGET).json + else + ifneq (,$(findstring config.json,$(jsons))) + export APP_JSON := $(TOPDIR)/config.json + endif + endif +else + export APP_JSON := $(TOPDIR)/$(CONFIG_JSON) +endif + +ifeq ($(strip $(ICON)),) + icons := $(wildcard *.jpg) + ifneq (,$(findstring icon.jpg,$(icons))) + export APP_ICON := $(TOPDIR)/icon.jpg + endif +else + export APP_ICON := $(TOPDIR)/$(ICON) +endif + +ifeq ($(strip $(NO_ICON)),) + export NROFLAGS += --icon=$(APP_ICON) +endif + +ifeq ($(strip $(NO_NACP)),) + export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp +endif + +ifneq ($(APP_TITLEID),) + export NACPFLAGS += --titleid=$(APP_TITLEID) +endif + +ifneq ($(ROMFS),) + export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS) +endif + +$(info $$NROFLAGS is [${NROFLAGS}]) + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: + + @echo making everything + @$(MAKE) --no-print-directory -C $(CURDIR) -f Makefile libusb + @$(MAKE) --no-print-directory -C $(CURDIR) -f Makefile plutonium + @$(MAKE) --no-print-directory -C $(CURDIR) -f Makefile tinwoo + +#--------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------- +tinwoo: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +plutonium: + @echo making plutonium + @$(MAKE) --no-print-directory -C $(CURDIR)/include/Plutonium -f Makefile +#--------------------------------------------------------------------------------- +cleanplutonium: + @echo cleaning plutonium + @$(MAKE) --no-print-directory -C $(CURDIR)/include/Plutonium -f Makefile clean +#--------------------------------------------------------------------------------- +libusb: + @echo making libusbhsfs + @$(MAKE) --no-print-directory -C $(CURDIR)/include/libusbhsfs -f Makefile BUILD_TYPE=GPL install +#--------------------------------------------------------------------------------- +#--------------------------------------------------------------------------------- +libusbclean: + @echo cleaning libusbhsfs + @$(MAKE) --no-print-directory -C $(CURDIR)/include/libusbhsfs -f Makefile clean + @rm -fr $(CURDIR)/include/libusbhsfs/liblwext4/*.zip + @rm -fr $(CURDIR)/include/libusbhsfs/liblwext4/*.zst + @rm -fr $(CURDIR)/include/libusbhsfs/libntfs-3g/*.tgz + @rm -fr $(CURDIR)/include/libusbhsfs/libntfs-3g/*.zst +#--------------------------------------------------------------------------------- +clean: + @echo clean ... +ifeq ($(strip $(APP_JSON)),) + @rm -fr $(BUILD) $(TARGET).nro $(TARGET).nacp $(TARGET).elf +else + @rm -fr $(BUILD) $(TARGET).nsp $(TARGET).nso $(TARGET).npdm $(TARGET).elf +endif + + +#--------------------------------------------------------------------------------- +else +.PHONY: all + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +ifeq ($(strip $(APP_JSON)),) + +all : $(OUTPUT).nro + +ifeq ($(strip $(NO_NACP)),) +$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp +else +$(OUTPUT).nro : $(OUTPUT).elf +endif + +else + +all : $(OUTPUT).nsp + +$(OUTPUT).nsp : $(OUTPUT).nso $(OUTPUT).npdm + +$(OUTPUT).nso : $(OUTPUT).elf + +endif + +$(OUTPUT).elf : $(OFILES) + +$(OFILES_SRC) : $(HFILES_BIN) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..58c4f45 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# TinWoo +A No-Bullshit-No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch + +![Main Page](https://i.imgur.com/QOi0Yvv.jpg) + +## Features +- Installs NSP/NSZ/XCI/XCZ files and split NSP/XCI files from your SD card +- Installs NSP/NSZ/XCI/XCZ files over LAN or USB from tools such as [NS-USBloader](https://github.com/developersu/ns-usbloader) +- Installs Split NSP/XCI/NSZ/XCZ over Lan or USB using [NS-USBloader(Mod)](https://mega.nz/file/I4p2gCCK#32GwAGtIcL3FVH-V-8Goae_hpnK8FQ0eS2PwLDOW6X4) +- Installs NSP/NSZ/XCI/XCZ files over the internet by URL or Google Drive +- Installs NSP/NSZ/XCI/XCZ files from a Hard Drive (NTFS/Fat32/ExFat/EXT3/EXT4) +- Verifies NCAs by header signature before they're installed +- Installs and manages the latest signature patches quickly and easily +- Works on SX OS and Atmosphere +- Able to theme, change install sounds + +## Thanks to +- Blawar, Hunterweb, DarkMatterCore, XorTroll + +## Modified Code +This code was prominently modified by MrDude on 25/04/2022 to be able to build with new plutonium and uo to date libnx. + +## Building All componenets of TinWoo at once +cd into the tinwoo folder then "make" + +## Build Tinwoo components individually +First, build and install usb libs - "make libusb". +Second, built Plutonium - "make plutonium". +Third, Make Tinwoo - "make tinwwoo". + +## Cleanup tinwoo once built +First, "make libusbclean". +Second, "make cleanplutonium". +Third, "make clean". + +## Note +This is a work in progress and lets you build with new libnx, plutonium packages. Some stuff still needs fixed to work with the new plutonium and libnx changes. +Stuff still to fix: +Font sizes in menus. +Threading in the main menu - to stop GUI freezing. +Options page - stop jumping back to top of page after something is selected +Touchscreen not working properly. +Probably the makefile for linux - and maybe some other stuff. \ No newline at end of file diff --git a/icon.jpg b/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1c5036d6fef7bc31cfe53edafc4e9bb832142d0 GIT binary patch literal 64572 zcmeFa2Ut^G*ESeLzy{b*kt$-L3sNKqs0fG%D7_&=x>u@6R+)fQ9F08jxZ+ z3}V|*0qieW_vp^zuA6c0qUwYiJ0|osv}+K56C(cSQJki-F`$$(;hr%7NwNg=Lk& zva(<~ML;EJ>thgzW8-{E?zHT)pFT2~Akecdzv^WHJ!AbVy-^6**jZSA+RpxW|5&{K z@{c9(@BVFJ`K{yjmfyOC3V)~rT>{PTPEIb) z-CSI|_j7S^?cX?X?f+3^&wrwT`4+Ti8|WF(IxHffEqhp4_pmSr04H}aKd`6+R}2_8CJSf_>o4YR5X)8;)-7ANuyL?&V`JTQ8er~W-FjrN zEZg~O_WML`+>&G8AN{=O!ckEk!y1Rv@?N*wH8_sN7=8Wn4dShEAiX&B_{CUbN6mK` zK8goBOopKgC3oI;B1aarPCR*W_jTNdu2E_x?ql~D&D6>FUVIk5mN>qoq;2NxcRvAJ zT1T2#-UHgQ1+aGOrcE5|Yzmtu9Fg6-6|mrj$UZi?ThaSBET}PT|9V=~;fvSp7!4yH zh`0Q=W9%CSa2!{7*8v!janMoIM9~L2{M&^8a|=%VWdgGgw2O7K&OIP?5Y0G7=a`si zjLu~p(HO%R9nmK*Vy;{Q#a!pq5fk%?hYeYT6hM012svL&u8&34XBPF5#?p09{-QbGvU_MdM zwYJ2r-IRUi4M}^wE_ad%B4a+s7#T4FXflAB47tP}7c%$g0 zIs!3c$#1c%*K`&2uxgzHYi-E{~7(-rVJ+3tkl z9N)DBz@|36WA@SKX1E^jf>8Uxhg1|FzF>lE29vYnXz1rqh2j2Po)Zsf5_!g7k$p=9 zp^oKJuXsDd_0$0DDSC5JWXWDi?^OA!fQ|3)sG;pr$&te9D18bOq~R{bfai*9Pc5sf zWyA=XN+10IQU20a+_SWv3qdKGJ(%D?B^9o#>DlFl`THRv0h3CgFpHP#gkkyh2$+$JQ2p!5dY>%NF9HI!b?4{h>2 zH}c>XT)t`=x!B&yA$nk;lcr)w!ilbWTIVgBy}mL9qPf@2;`ERCj177f=4mYKWP{RI zttr#TB0`3+C5+p}4{1QZ6a)I@Wi+$>Z(Zcr&H}7p!cY*|L_xl~Nl?R*cuP8HaNgar z>q$4ITvbEpkYLKArRH2)iTncp0z5pmm)BHfXekgfG-(D~LMz$0w+bX+QfV1SWzh$f(p)M&D>GLE#8RiXp-9P^|Ngs&}>RmtBzRo?B zhudOWKRIV&YGB?#5IQ_mH1Z`{Uy}y1ZQ6DK70QNJpqU^|R12G$aq)pNB^_CXuLI-T z)k-@UFR8Xs(FqBivh!SA5Vky;mz;DlN}MmwFFysgq`r0{ySi`!T~pxA$}w%GfyDV( zQ-D}PC{UAKj{(XZg*nV?Mg>dE4vPV^mWZec=4U@J8A<+^>duWsTv@o_=>21z76;@Ps|doA*$ zh&N1-Qq_D_d`N5;&>zs>*`yPj$h0Jk2__{(#$bPSv(R}QesR{x=msVZ>Pz@kNTaw@ zm#j*JRzBXM&{F26iAb>9$Krn0`=MdbI8&m$l}7G|caXsr8Y!|#YMpyA-i#6R!8(vp z>^w~EA1GKa?Ce`Mb2&l;S6J758S;HUkBY36;QLfbEyo28V)FeuFY!^91MJM`SrVL8 z>QVz2Pwn+w#4F6HUzV+iSM{k#QC#Q78^xI|P#8DtQ6BCUgzn(?Rv26T?FW_doOsr# zdBQ%i>UrJc4?Sp<;?j_K!uV`)N@=eD(1^<3iud4ZfgTGDZEn5R{5r<=nPrt#6XGjy zsWC;}ycnEjpbPo>Es~Yea4h1$X!3IPL)6}hK*d1mdYF2vQ}5lSsIMUjSuyAOjVM(@ zk`q2}t`tK_9Zmef{lxO2IBRQ}?zTd-+1Cm#0W-CUQo(qoUE)bA&93uQV5t_(Dzbh(HRh9&NkDO)deL}= z6wHJ!T^=vX1U+k6Ke%R-f)Y}#1JCTj-%9eN^}?iY)Zy}y@tskKO7?mEs`*-H$~<+3 zs;X|#c?BZ<{%Nf&(fo7cG#gR%gF?Ow-5_XS7GhbhmPvbRO;Xug5*Mj(U=)$dAGKQ8 znT@nit|Z8{K1X9AOwg>9TL8)~lZMVO8(;-5k=nl%cs6tUVQui;Hh2|MRcj$kVN~vo zM<5gQE+lz~D)E$JV|FkL<<0{cjeOqzsze-E4*6j@rKIRddMg9f4Wp{s89^DCoCiC< z9GaJT=C^pCSnvqxUtVf%)F(f4P}PKX-}bRtPB<(U~HM7S|P3J0dROog1%mW&*)Ba zw7YprsQYwL1a+o-o~CNhak}RNI)`&AiC`4Cr zR4eQgXM(nys(-(HEz3aDT_9L6YNtZd_xv*D1clFgAS_5z`FhxEdNC8Ew`xmjM@$tV zpgq9ScA8>dSX2APki=mun>KxtDli2L>Z8~|R0S&Sa12uEn#hN#<8u+TC>hH75}#ZB zuKMR=&tKS5+#5^1#RqKAuDL|#wPQVYO_nI5JfqH=`8ahM+3pIW15x8r{bubRXJDOkGi%FudB4opL6QY=(ec1kx(W9+aAy6$-vCejT;*esH{V1KZ-<7pxk zot{e_YVE?SVWCfj@(=nDajzjX>jTJr5!MfL8esSL9i8dMjOR9zr#*nxi{UW-k~VNZ zl|=8fF+C15CZlebSa=56n5e2_i%IZ$$c?<`;e-`mLRV>rm7Nj0ohiL>t_ZHwD^_q1 z0x=XIK(8#P65lITG;z(RKNyg$L;*Ka`nE5CJ1TW%=U?OS%J}_lo{xi0=p0jXr;#X9 ziDkW2R?l1b6h{XhU6aaZ#NH*RhIdXWchAz)9_D_Ut8HvX7(bhP^`*MsZRMzYDg_O% zlv$Od$+2t|oNhi%H$Blcl%L;-DWO&uSxrN+D>+`Q({B_e);N6wuQ0UN-4dQ%=-t`9 zV5l4B9UkKt+aQ50rEr+k(O;<*joN956+P+IKO>Edgw4ZD4#E&G+OU+_A?GDYE0oci z4TSt;hJi`YSCkl_fOBctv2$v1G=WI$GH{Q#>h%%Z87QOIIEACmL}Hz--qjq7sLOe8 zdz60|!MScRl-CRNP4}S$=NE0xlO3-Lgjcesh>`rgU%Sw3S09K94jyJ`PNlk26nV;` zR5=OIrrUhs6Xjj~HnY@ZM9_eiE|$tgQAcKZe|QU;bxXrWnE1z_kkVL!gUdL~GgY-ZQ3 z`-(E1WCq*>a4T?d`W@sj(L}b58#Yxbo?e!XM|2tFCRn7J*-$vCVEA@rPSkBxZBtdf z8O+y1t0;FkT_}TUQXOSrNGEj_MdV3+%&F@;j2xV(YJ=fJ5R28Jxk&o5Oavde=MP3sb5Bj5vR-BTzP?6q6rjbbi*7x${94?{}% z4p;EKKfGmvQAN8F9+Ikkd5UxxTxe0ASQal!wysT(A03^GFVD{@bXp2p91OY*dV z6rvoP=-mlnpNh#5k2>6Qa;=~jDEako=qd1CdSEsb*0Y+s+&)R@r5m3Oo-bHe#f&mC zB1p29mtX}g?hc=mdI*w+!mXgM8*<3{Ibu1mgJh4x)b}H8Y3M{Ul-=dJ&J}C}{B~ zbiI*~tA1_dq*Qq@bDzFSIoq1!Xvj1M(!Y!*yZ6>@7h`t)7#+t_Y4>war&F&CzWmDF z>*n1d!;&niZLk@l9bR)0>U(@gA0i!&i=ntCNm`iFcK^c2~9Cr8WnMaLFJ_D)p| zwW9BwOFl2G7V3QUZ8jsdT%P32CjdDQOdG96r4omq`i)t+^F~?e4tYOiWwpvpn^+gf zx4jYD9+L0Fz(hX|w3RJ9kkDsoX+2W(0+*IwfJ$4Qb?&gnrONMmjtiqBxnyR7p(8hK+Mxyz*2Na9O5HKXdJL>MmQ*z)4 zD{$ep=GIfJZ1|X3p+RT}v7+s}Ht;av+VuouQJv`%c~di@B|Q(H+VedMQLwr_HQ!f| z+)qy}o$4FXv7Qw0dr8*Y-`h!hU3EK$|F8s74;GK>S*GjPA$o^wHBcuU1LM#NYXgrY zWO!56v6f(%$V*pbq)Yz-kuqVq95m~Gj6{d83r$w3j}u9kK1_D?5UFd=go0!Xp7nbi zu!^;4pv{w?^r3vA!=vkIZ6!blvRgzarW`9lAUzVNNa1-L0}q!T&N=QBJ^PT1$5)i1 z!IX6+93#^&(CXl6KVktkGzDr=W-`$p;hbS=aMj%|h`)wAbHIS#La#cOyu!#Qe0`Kp z!FGQ1)y`?GZWVGmgKL2ZJRw%j2xgWlhm(OZhNTkJm>{j8uM$t1Y9?QgLma3pfy4OOY?$j#Wv_995zP)Ihl++cHH)OKT(^@Ie`lv#)@OUmu zf^tt`$b8ADq7r(_U~(x?s2dn#I}7*eDe_y7qg6s02|| zl>{{sBO**}K`5t6ds=BWCs1SN)zyX)@u#uV_=-d96C=IO(}z~8a93Lxm|Tac#p+j7 z{@_)x(p6jpt~(SWiyQTkEnMM@Uuk`FvOmG&stq%z0ZqrR#L zSLjV<=uMT)un`q2N^#|aZAL3Y6Cn*0Y1t~3mq^=}YnHQ$P}$5C{7tU46oc%?q`IP2 zbP}+NzQE>E5`EXLU^ZryLA|Qe5{k8Ec6!2AQSkW=@=Q_Ns;ZA!b<+%_FdOq3#nZp8 zPj79@OO=?FDg4x27m%TN>m@9oZkwe3d5B78f?$P*iX(9yGOL_a)l%hxT+W(S1zDnU zK}DatUvWZD?dnnpI;+Zk&6cVgXrS#bkYP8+xu~u)CC2RDoKnt4eXqYyWkg3gQ-dS( z!%Q`Tz$KJ3MI(zT6OG>Sgf*} zW|^9AnY6jIt5y*kc%Z+ooMgNd_#M_zA~54U2U%*5hWAw&=#pqCy-8K|gCaS+&;&K2 zWo=d5ZeLS=A^~QATOL(e^^;e)Qsv8ywFRn5@Hg6=nmKlyni zaFh1qrr|GeJ6DGxO8f z=`8IlAC@Yy*RScL&E3^P7t)5h>FBbc#3ohkzP5fE`W+;n-y_cmGWDUTz*h{uL{!a_ zUREgZ6imow#N-cVqQAr+faK6$wsrL^e@60ol+2i{!kkPzXgP&ozIwnSSnw5Jj)5Z|0>p7x)W zz~7Y2MPnPht6F2q^piRkDzLWiYnovZsFdPCM1D7a_#^JzIHU&-M^8&wL~F0@U0UPU zvL7ZzwjMgdQ(pqsVuyqlzEp0J+kvlD#Iwt5SPHX=#uzb)G?P&w^AOw@WN`mXfBzbu z+N{f|s>GVri<{?(wn;S-Zz;&ButCPH#{st-FR0TDw;{7vOweIo-Y%3SqIUr5AMZ%A zGb+Yp$qKx&nd_U7jY4Ny0S{+{@fqs_LNoViJH7@6C9SIOiF2$H$yCfu2?D@tYY*Ogx@ zk_F=Djk<%BW^xKULZYwMOxsvxIhjPzas+M#X-L!~A?~)^-|Y|+vg~Ua&ZZwd8?Yj+ zxzTzyx|{_C6d2^ZGuefwXvm@P0Hz%>fNX0etn@#eURUr<^|jv4{*c4Q%rZ!Ps*DIR zF_A>!IvN)QpasZ0RAgf#%GhC8sePRzpZ>9u2}&+m<5S5na-V)b*;6irpDdQ6yvAJZ zS_+Bj&%>AZ>~Ak^_dQlgn7%wjjLJPom8>Hid}(4U?cRd3c+3P{etW4qW!Ej78TFkVcvvUBQFWTOh)0tEaQUfaOJMssaJrztd6Plf(+do z65e;Uvk#Vv#BbT9Mwy~wtd?hT2v(i7%Z!+hk_5Y~Q@u}7)>l7wrdTP?NVn%V*FrE; zbAF#H`MPr2s3v(=2Fts=qk3I%M7i-BhX%-pjoqbtfqK+^JOg+*PS{W26L(=Lp^4xY;@<=o$PK z@?(1PkbY4q@T^wommgQv3N^=}GiZ|QdzH*q71@YLuDI@n1@BO2u}IwAWz!*KR+Hz_ zdQ64+0CoNOGCDn9@N^fO;o(4OxMrNQMMr9^t^kGZtDH{8E7U%$ZbMY(S$V0d+g34f zUGwWgFKNJA#v+NSCu9`qOEq5o6KR%*Af8n+d+0F{GD>|@Xa-5uqxD+x&ePBxoO#o# zy2pry{du{$Tk60O%YC(H=L%7S^9IW(@VYz=j+Gl93Pr78>AJ1+8XceTf>#Z>359##tHR4$(Q69T*nGqUA+T{eNx_8p6<+*a z4|U?eT2ubMS!K3F^I2dDxfhf~KYoOY)_zWXDBakWduo)}7Z^}?P!&HbgU)K?qwD4Y zZ+m-TJ{@%TLg4*iZhVu1GctIl;Kg*SuB|k$d7NrXojX_KboHZ;2S-YIaddQ+^EjHc zI~RY(RbqyUr|qnGe`CQLocIy08hVr~Iq#XB)!UB#r@5Muv?0d916hG4z{^j+T(`bS zf?aB8;+kMlJUC4vm*(11cfGjp**z5@@Kg3Gj5alHbjFzxyEx-n!Ogjr+^pu8cDZI0A-xWHx+7g6Tjan|Uutt2xPX!FfU>!~31u8{G9xu$YFDvBv z)-pjvl4BZ2q)!x?s+&Fj95%t1r(<;V{mds5RqZ%?$`x?U zeh=8ZZ6ww#edaL9a)-5uNg!@EvSn;dQYH+($tizy;CEq zom1_8iwP!-IBg1|+ZXzI)U4Z;Q_&h;kkeb7Q@RalPAjW~2+jv3Jdek{<7fH)f{05$ z4Elb|#`yCH>hfgb5}rtscHJ6$VO;Ii`bCPuI2m!SzW#k}{f(e+lwt{PU%VRd`uo<< z+TFqw?uWrPWj<`v}MczEu4a`{qgJZGXz>7k7N~f21MclH*{f8|}#uJmn zm!KZ^80(R4OE|li*GG`M_`Z7O9%z63-X`2{>z*+xI)?gEY#}nrpI+H9>kIXU;ZT+0 z=Jcl|4c;)V<@vgXk41R;nRtj*RRVn|9eB}ZGM}q74868=-TX6G|k=JpSR{W z!Y9xL#!O&m2ZCch;d7c2>W_WfDI_jo?<=bTQA8sDYrq5Bil${DWah&_ z=O*M_G#7FJ8DMdw0CwhJic3A7&`zeHFns82igX_mYIs#>#;gbj0eX>`Vil_1yK49OmuRMk0u7-;03n14RM4>g{9XfIxU`O6b6Spinpxw!zp)Z=5we zyf*UOn`Mn${Wl~oxcY3A*&D%Jbz0AxlJ_}Jbd6kE!yRPboKCYg>R|^_}e$7 zHS{cWf3$|mhKemxz~L{C_x{ae15Y1U1l$|oAKZ}C@brQIasqJD!RvR%(Ait>cSget zuJKm}?(5u@2&BU~#OICd=BDih{}rypwmsaj(IHuLYQ zHG+8jpkMWZoU_=_u(|Dqcp*H^T%f?k1$w9}-1%4YacwXR0h=x$e0&fv4+Px#XOUgM zI2$JXjn4UtZs_Xl@^{A0Ukt#u-|`z{g?09a4L@NsEWgg1O zWBEyWo|OEXBDYDm1dhLC6gDXvJ^v?VQ|EUe584=6%zwMFPHwROEsObog}2!j8>%-Z zs!i{xMba2`ueGuAE zIMmDD2kHnAK*j-{zm|p_KZG|Z8yp>&voLV_f7*Xmq?gA(EHImm|Bn4PhWh*HcwaKsyYg$A+xCn655n7B5MF`jJzSlCwG{Uc=P&&t1DVF1GC0;GL_-Fq_yfQ$f8-G4114AKDpgh6tkQy^K8@`mCcHT}TtZ~$SLHtS-3 z;mmRI@$m%9$iTg&?KeU(Nkb4Y8Gn0E8CmI5GN7~S{+{*_cc_oB0~A28sEW*25=4Yu z9aTll6!cE%d1^piTrUNBL5%|SjUj>V5M@UZbv5C${$PKYCk*OiFYFKVfO~`eRYf+H zgMsu0Sw=*7Q^dzzRb(?flCZhnRbdT;7gSh5T2TrjE3Y7|q%19~cv@arS#l#F)ESvm zXJlkgOUWvNFEsgMUmXTFfR+c#> zCnF~(1xQGF2f%&o{iWdEM}KL!2=#_|xo+YXg*P+;m^`G9st91|4;NsbdV0SV|J&Ar z!8ZKbl=k+~^aTq4S8eOP0Ys58gnA>8UJ$6JFBI-`^jC35$nUbA02F7_0Y``o)B_3w z#JquPBm285&tIXlei!)%<9@R@FX*odfXnmm#eZG-4MD(R@I?d!xlyOi#b1}u5dm>^ z1pihGR)EUM*+ZZXQjYfa%2KjQ@(xmG6dW9-6dddoPD31(0J7{aZ8~soAA2|ix}gow zFYO9wayV@-50O13FQuexuPCJ;FAtSE19dthrKku5{!%<6Cnu-i_^bR6%#^*y->uS6 zQa*D=OH1p_`SV&A6g6cvPF=isN&_gZc~SY4vg|1lVMhqq3E>5^2QG*!%-$I)Ni-DsuYobR7*1008Uc>H#n|O#o|nK>?5!fY<~m8*#~`WaXsf^UkOEY>ItBbYsm4Za@n6!l#_zkJ1N?q zI^`g1uMD)okMe#1Nc5lm{N=$932%gxkDt94^t?0BM}CdvtG{~WzXo&rr5WO44|j$F z(};|S%>USx|E%ZyZ+1myWA6BIfn@&q+HLawHqQW_Z<2t?Ya{u4)>Qj7yZt%;X@Ng2 z@TUd-w7{Ph_|pRaKWc%$p1YuM;4aAzc&hqaDA{uxPj8!{WPb!|{f~}Y{@Pf7Z+|Pf z5jb_rZ^nO`*bF5LM1=*hvH-DH{|Y5541|(R2h3#O0)#{Ty>V<~XWP1+bq5eq7YHQ_ zVrK>F|IGwgtQ=dmv1|wJ*tr|{#R@ABOqO-SqAl#(kt{%%**$D~*^hAS69H|L-G5&0 zD9`q57Y^8qo<3-JQ zN`8@`y0V;x3aQr z-MW>Xoec(xh)UG zz&!-H_$|HoxB{=SqNd}C9p0g_T0R^0nn01JN_XyV8oVfW_{odc8&PoMeuTk2scq(T z=659Azrx^NGI#NRkodB!zGw2gvW|soKv+_Cc|-5iia7YPrCZ>` zsAy&!h~0^gJtjTU)HUXE{p07O@7{J>gq=n%v_46E@u4F_$I#jT!=Br1FLtgj+fG}z z#h|}t*k&?8mn?*$&`n0^%kzu8^A(V-JW0~8_d>v@T^~+`=jvNc|9+r(m> zM8ku3j_DU(_vUL2M~U8eSjoaDJkn{{wrj^>i!D*(AvGTuHv48;TbZD{tikmb#j2}| z33+N;XM&qgwsZ~cQ*42I2Y%V>DH=Uhc|7z)sgl-CiLH*BBdFdo*K6HR-KuVzR;o|l zU^sTJI5I(@>AgyJC$FCvuf^0GGx~gNSG8C8k0a8 znV=Jz$+;_AnIM^lXO~`1RW9$7l;M9ud!pJY8Qa;kljEKXq_7Y9Bv(}b`IGP8kM`LO zn%U;As`pN98}eiM4uk^10YOv>@b?#9%oj${cms#-p_@C$l>9Z;TSVoi0;k>EmKE;?O2d8BQMF8qg^;F=ZV5@g(*U zJU{$X^s0ny=v?GV`C1zx4*32593cfQ!8kUno_xx;x-b2MZ&brBX)9mHO0?t5nOs?? z`)(b1NQI{MO5bg=4Hika^>S_W?2HVqL>Q)Tdw1w#07AlrTbrsrx}YjRo{RUB`I7fK z_R}!I{&Qe|;mQrPQsG^6^P&?Ibm;qXPnag5=u<5jo2At7{OytxJK_s9X-9eXjh$8| zdKI2s(Zmxml?N4!jmP4|@5+C8$KwO(ejWt$sljzp#WDdoS2aHnRQO*K2+Yp^Nsr$L zgrY%xBr`!m)#APwZz`I;mv5p#3_mv+$GG6UsDj8tm-h^G-${8TmRsyEo`>`aiak+$ z7b&=dcIsVu&O@_kw`-gNz#z3#$J|4qh6pXOuU45L57+>$2hFF(GG7?Get!X7wiMYl zsNglOl2BYJ+i@kb;T_xq#l;nMqI*^Rq-c~-LgDk6^h;^`wses?QS0Kmk3xC()M<#V z-webo`dFYtV2w2(_AgcbCuwSgBddXZomqix!^`ivN^6lPv}OkKi+rmO^IR*%>#J?| z;st-YsTb3)tPpU#VQiY;Ejgz;$1>?q%v>E1(m>ut$FKXutojV(wH@2=>qjcWYAl;`Wjcn_FYfQkM|_{)wf~NAwVfhwJE@Mj zl%LGw!C*@YrTS4?BeQ4Fn3D9SZVwCgGLG4Q+o zF53OU3ex66MkqYdRS*G4iCOF+bc;T`blv~D2V50c-ZX%bNQf&y!{;x{q@bJN1=x%b zGh~66^gCF@t1QMGthK3exOzBX8h=kMZ0aPw5Mp3(4UEF6-xo-+7z@=?y*RGZB01kD zSJdh*RG7Gm(*6$K4NGZyXSx$F#SN-^xL%#H5>=A_gb9kqEE0M#&C}W5DKdChv5KZK z!X<}nhdHVI$JjGh6i1(D<=y8{TO+?K5Vs6uxBd`qH1-XvF_J58FLEY5`{AJ||4|?5 zt-H6KnZEwPCvNYh0mn#9v&f6rCnrD4RmjEUwnUPT`+57 z)mNRFpcK2s?KMo0cx&uHxwt_X=8!iJU){JGy*DV*Uc18Ycwg=zSVOV1hv#MI`p=7< z)x_tSInisp_Y3n}pbrm;MkoxtExkh+IU|Hv6%g)6u*H?=FdlejOfc*}P!W{Hb-Pbb z_#_GxP1|0gYOL_zDs^)M&0gX=#+R4A^sQbHb1CxAV;{_jiJJBG?cwo~TnYYY!nOC- zL>$F^uZ8&~ev=pn%j$p=Ky;~u(bJy<4Bg|MrL4P(&SWz|VpLG<)TiisQ!?><#BFkw zWPha0M^w4t+2~n1KT5`T>Grv$>q)SdG6}^AlP|?52?gT(`fi8FcXOU_YF;3xN6wGC zs5=YwY4>(y;=1zpDuY$_kt_Y@c%3i4osq(I^wI@V2*oMyaJ`OoRa|Qgou9?B z9U=o8*Irj25<%@6>@|0U@0>D7^%7fgelZ0*eJgXj=u6h-c%J=hB?|&lYG?I^)J0Cs z_q?u>3&doX_^*gpP~e?S-Jg7GXR@A343}zs0X*CNY`TgNi?u&%-uULOt^b8dxAf;v z5>4i_M6c-?BrUA6EUvohV-%ggXm!0Ejk-V1vUV}>mO;|AG-V1i&QWR`IExGa9@j(N zW-(IJZQ`eHF+RXne@~KXGLRAOYT-}({^{9*X@3x*^W<>h3Xgh|fZfzltk)&(`dswU z7fg`aEekbW$G~YZ-CHXrohm~kJenpp3T%pN{k&HUu2VUoFyrj4`)LBC*GIB4d)iD? z*dEL^n+}A9u{b#i2RXj={({e#x~w#F7A;O~vfO94<=kkwZ-V73D+S@JS4In)*1q9BJ7w z{8GLbe6di*Ozl#A?P_qdS&gUc`x$<8Hv@hrNMI^j@5NJN-}N+z+I1#KG5}d=w(#~l zn&aY}ZO**>tT{GJ6q=ph?GuJA2rn^^@VGf zBX1F{<(jseGSLzHd_OyCTVRi`^416ZC~ja$EMNU^*GFde|LS~V#ssxwtlXR#x+S!Y zp|doo5;W@ur;r6;RyssJonrH+X_NO+h@%Jk`uH-JjLd4DG<{yWry*HhQ6F_1oXj6w z6b6J@6PzA!lUj?d@I;ns&%7y^aGN1C%%?8GBblH=o{6KF=60lSkIOeJ!Ac)!F)}J4 z)XlKK_wbYCg3R%}{5H{(t?dn>7Y{afwwi=&1*1>bt=on^gU?GQ_<3X}rXNuwD$B2o zEU@M__objA!M-p0UwI_o>0f_dAy4vUf&$_8+SkgKRecptpz%Bf*_sdfR4jLY8@XZ3 z;6J`MPHMlFf&5%o?6xWXbH)L56lP2fB@+KxYwOj{s~>~!*9Wf~?3-vmM@}Uz>>OKi zmWce$*-;c6UN_>UkcfJ}kbz&0Lzu3eC9mWtpSWGhTe`~cuo(2dYVlCx%UwwMl%sqW zn)>~!foZCPDq=#_Um8QlJ`#G?fV(=~Sw)rH99^$*d9`xLN=~)S9rn#mIHmupR+YXG@uwaM*a>JCEv#fuPD`nmTD66|ToxI*hJe8SZ%F zx3p4>6G?t5WEr}a-Ja_;@Z3gBGI`xiy+%K~t+?6~f=)8fouCkKuhbI>A0l(J z-oGznn9N-6OReEKX4*#<2&z~}#a1lyE29^ZcZ74*Q_7ZoNAs>cOVr`X-d&ESTw02d zn#15AZrt@~u#XvM{1+w1t2+9E*U@0E^k2s;pySlU~exyJY*ZKasc_Dh52lK+_xSy>=&#riC8W>in|IC0?*yvXM7Ei7Tdg zyU}^&?@pFcRH1JM zzzvW0fBVA1j!FDqn4sF_SGq%2LMsCmZDPOXdeQ3amVB4{zuV-NuNu56R(>E}fz2y! zvS6PdstUOK@w)f^Rcw*xw?r+q$l_q19WlD#u7EH1#8gQYpJZ0Xf_F?6MhZlKC46Rr zjOGez=Io;FBv*ItDO1z%TfQ+DP2;ZEWq4ZXjbr9-Xt>wZ zE};(+a{Jorz#ZCqYUlhx26_f3@9{dF<xcExmhxxJzdx z7Snn&#AeHJKV22=Yu~0NhdQM+R;IRK#HmujFvLvo1~>9j)j z_lVG!t#(-ptEtg>(of!ZW9(a;eD5WOJoS4vHcCoEPgH$y=0n)ln5z9=BI3B47avJP zb&F)skFHH*%qF;*cc?TFi}A)n?^HuN*9ZtJ#p|!kRSWODn~f;C`vF#kE0ulXFIA3T zT9Urcag+SrI#|pg>fL8g|D3=pPC`5yTiqUa8fo&&zAS#Zgnce!thq*0Pv%nkLaL*; z-k##mQ%M;2YY22pdrjfQ+)fjJQ`;SSW8d8t-vj!GnlTV|_8keAO`os@F65y0v^soc z3F~q_)FhOEoglu5mP!u_v%36J)ND=t`T|YWkg(t~dG_E%AB2lN=D+*pq=F5a4aU+8kp1D|r(XoN(1XJv${ z#M_X|9M>3QD*d{LA0v}-XKQm@?OqF8t~F35#Ko3~!K0o5{-*-^%(Dsi=FUnv`ZpKd z=Pq}7ajzg$D*UN2PE~ODU6|R&v+e@0Gxn~#`9$jL>ol(yf4Z&xd{w=LSUOZ+t5^Ot zYNY|Dmf63bF9;F&u6O7}h=hS{PlcP?5H+)VAUAG6#ZE@oPE`HI`RM+t8+!L{NJ{Y; z8<~pq=YlQ@9*I#!el%uW;aG9+x{qsxpY_yp<4Kr-vWG720@Dw`Jrsq4t{1D=1rEyw zHF-FRjb}8?rhbWdJ`m(BrVD=ZGPB{cAE%n`9=olLmwb{BnhIT;w>~}5o?r|eLO040 zvT{mPo7VCc%=KdiB8+%4(P{)bnya_W-;%&uf&{Wf+P}P2uZ896$?>ehU$Z7v9 zODn+rX6aM}t~P>^%|jr+RR5+nFlAu9{@=cFWs?3ECb2HdGD8;|NAZ_Dk52P}@a3Xu zAW#SjsAExs;ii7nI~90&u;XN1SFj=ZJA8dWmAk}+PRc6jxl*m7M2v=)QetpHoj!At zdYUK^GflPM)vpU#7SDn;%Kh!MPbTZh9yaTG zc>CN+8tW{jEyQ$f-@CO?$}Zz4DGADvD+r>1&4EFRdTg0MQ_3{_9ct|1N2A7x8*@?^ zlgOl{NP55gVwDa5l!BUUv7E6{9)g#6p0g&b<=j`D#&7%A*6PlY-HEr2`qbi*^X_aB zTi|HsCSOMCqjxZZ)K2PR6ZCXJ{4K-<@qR zPR;hR_P3*+&#B5B9QU=|fsmG8v@mB^4P4CZL)3$>Hc+1+U$^O4kqJi^%Qz$O_@U?> zx~4ZCY2eZun)Vi*ynjr*()_T+txqUAgxiyEwEV=9S*F}PpNDz)z1aFK){KvZixgbN zqv29--?W7&f=XQ=qGgd#IpG7LFCSZw@s~2KZ=Jv2FP|h{(VF``_1?h#{R*qj@Z%jH zMsvK^qbwqy)y%>QHLTP`l5=kGOZLZZk!NE$2=-^d3{p?N(HZ&Vwd@(xaH!>u{w%-0 zr>j`_Vb}1(vFBXC;)FAVM26C+Gm2VR%N283AoHv9i%Py+#d`-`W}m!#Mqba>EAczN zbIDukuWn>x;q_Yv>zd#RCZktC9eK{dKGL2Elu%1 zUY?>BtFB7$foEaI{JpzsknmlXAqlr*@|XBYGyLw823Sk-pe~2u#Hk{) z6)|vV@VgiTx~clRKyuTHEm~zRY^92L<}zoUWs21sUxwN)gd;6{QA>%~({@$sb+0y` z18z!=oa>%k*3&Uo)S!}gQPXBCkB+djkn!Oq-Ma<}D^=R2q}Uai zE@Sx!1vT#@NjWD6&+5ytCU}GwTRpIl$Ud1p)f;s%<{ZcO)$BM>eqay&Niq-C(iQk; zK^RO~K`z4;b)$+Q2iv9Y8hm?J_5MNq;KZq2(vw+lXTynGuCxx4g?P!YmZ6*q!RFN? zePpa!`@?Lp%={>}YXba(hca(+ANu%#%L#n-aQ29SU1REg1l~7>oUS9CbO382am9FK zoTaW_NIKfC-l!zV2zdOFMEQ-a-PE1*E`H2xV#r>)03ogeUq;I z>z2vDt5S0kc|eR}_usyd{f|BqdB$7}6SS~78Y%B88l$x>I(@kcTKtib0j zOUJcLhBI1GJ-Nekbo=SeP0%h#YUBcz98 z9E}7oKe#?E%M-GPKMt3^{UaYXZA_TADWt70`2Hewif!%-PfUb{G4^J@x*R}J)5t-s zJSs*fD%A5dFD;0M=HT8@!6ZZ-8YbNPk4~>`*5 zTUoAxv)DKrkcsarvQ519e|wIdoy=G(>*r$)gwMTt1cg&(rxy05`(+IeoUwh?E8vY; zVKGQ~Hk67g1DAw&*p84>bY<>j^qQ--7cU>XC_5^b)GuYK=wkt~$dG$C|CU#SvOnyu zxZat=w;lY36ajCS8+uC}IQ^s`wMpH1Zpb{=!Abj7D!r99(W z5>J76Hm2_q5Fb}ds-hm^V!3Q8W)h|Tx;Uy?=7L{i)L3-#$|ExC8x^Z(fhvB8od1Ke zvyN&y{{BBIf&rpZN~&~s$5cd`NsR99W;9cfknR*l$LJi5N_Xc5NO!|vGUji7f9L%E z`hL#&{LbMY{@BiT_I^F@eck(b-Wx%qD&bKq_=l%J7m)dFU_4 zNt;HuTJThY^-&4_91%%+@jGZg&xXqEQdkr0D%J=bv%e_Ok>INF1qqrQkeyGu!=sQDeqd&OLZStKQJq<6@NQ9YgTFC2X|cb*o!nQWWIUZSnJa7(*8H zI=8DofCYo#>Vx-S82{om?NQI&%H*pJpYu+d_cSv~y0lK8EM;a?D$|#M4-qbTU$)3x$JVSyc=5=09v*(z zI=#L*@2G3Qa{7N>?4{m&(d%=wLV`pacySJ`@5%!DK@Rz*wA0&zbT z)R8g?SfP*QB}NZHZ?DvvqBX@Iph=ClSRtv(#k{m8lJeRcy`96jDb(B*#c14SC2`e( zBcshR-2YWuz=o4s0n87u!OU?32diz#sUOdV@N8l4+|eWDtqHs5Y2xJ<2z_d41!JnX zaSPVnZST@ux_kJctov_5HDbQ<0%^PLIaNS_djIe_NDqDXTYZ5h6z{!dd^1jh*4ck%t^cBxmaXWkgAKN)tm zao=8N3wpjzdUn)4n?+4&1<7*`0zCUO*y*c%z+C{_p@H;s@052PD|ZaSR+b_c<7C>d zn3epU9YBH9Lb7!yt`S8fi=P1mnG;39fc$3$V4 zo9vr0K@PG`n~|nth&mN$>>X`c!_*s|do=dx#R=4eFlE5&j+C+W z==2YZ{u%&JLCmh9XcY;xO1tjVd@H6O%@aAMz)j=XvHD}vMQ18_^hnas;bnaDdQ~F6 zigvf^Q3V?e%HnDJUymh-@cLW6Hv-ys5#x#Z4&rF_AfmoD37lpagDhpL}n(`^z)s zDN@Cnp1?66yi~Oh(W-BQ>$*T%7~kxfc1J*X;%FCg_Oyq1HjU5R*I9HgJNuop^hqGw zjr0~9)zp4$9U_4Kwk!ATKZ#(cov0ga2mjAM2J4er@3sQ?>}1Pxp*&%QgKW9kFtMmW zS@p-s>ZTq)D#&ebq38PB7+s{tl-zjt5%$ zwi~+}x@>2D=C0PfFR5(vMRebkcUkaVDlj^Ta=dzl4alLKqjOd}-?3)lK1e8)L%hko zAp47VXQ$f%ny|tnEp2ut3OIIv^0bh$$Vol9zCJt?&vBj?Xm!#LIFfL3R_P+pc3Wlt zfOq|-B9SBd?5WWm6WJ6UW`=I#C&tVM)?1>G&liuEZ(C~8sn)HTISTv9aqr$6xN?;{ zvw(Sp)|jLHQj1!atMD>fL(<-F67cXNc^GyejxKApUJG;3pE;~Ixs*+KO_ltu0YEpB2U58bB%c7Phy=mN;)U2I_a1EcoiMtr&$Vy@gvI5|u2{MuiH3enygHf%OSHhY zEBxfhnB1Za+NGMt3ZwOf%xt?flNbdzKL{J#)?c7sHzAAY)pc5_@AAhO?=+fF`s(i& zuu<#Kz2y&LPXN3s4=}g|F=L@wk+WINv$Raf2kn3Hkevs=tWf7`E{Gv7uyLScTd!WH z{p^NIJz2X<+nzwvQmh&?&*SjVa?xG&(J#NuD*8kyd8V4#Y^J_7#;3z$ThCtYJD1`? zcGNDfZOG*BlFfd8jrWwq_jEuKc=%#x=r10>)Oklsa5*G(du(yIN7a0T5VxEn-XjY_ zf$kb?;;b?`_`@dPhp@_;kbTQ{L8^4SF`sn4!50Dfs-mWEM8Q-Dvmsw<)Ejz3^0~rx zN3M7X@O#(jrz>pDJLwrIH_R2+8G>@IZ{VHn@2pJu{fVs=W+ri;P-Kc^c&DUZNqot9 zQV`J{AUo3$wlMd;BgFVW^`edcD`rRwavr_2I2PYI#Ihx#zV4c=+g52@az+h({3TZ| zq1DCOcZenGkceVAH<~%I*Iv}NR$7V8vUe$cG8TB}AP(WH8T zfsoq#9D?7(4Yw%PJ`hP!3svl3UZ-@p^AK|DX7@PGQ0lBNj}N*$`uqB()=PNfaHKFP zAtTey2^iflxydIs489!R;3(A+8Bx+s$<59G#%|A^YZnoo-+p%=JX|Kr)K(NPmLu)k zA%lXHT%e{W+S^cGEGli~cj@_t8Fb~Z(y;gN=d zISgSp^iXBPd4mPM)6@%0nhRj-hD85KD}m1oK9@83)qcDtYt9#6c8PuVc4Q}%4c_~g$9ID5b zNGZpsIjH?>wc#C*U%qk{sp#2n`xH>0jpsim=f^xEeCPs_+j+$l+yCf08jl|shmN25 z=>HvSgsV)Z;^dWbWGoc{y@%8^=HhEop0fovQj)g|WTj3nb+w`Dskfaj`>aM%QW{hF zz9Fd{3k&lG%--bZ6%MYmaX7C$_Xqyeh zgY-8FtO@_T`gB@F_c=Bwpr^XS6v9^(1f>CE>A9rGkWh}6NH=GLqSerZm_#Xf%aphu zont!%<&ZXKlCEA>#k2Hn56&9=Q`!#^2wkaW+d|WldvB!!I97aOh<_pH7kZbec{xYk zeQM5mDQROTzuHw**f+o(JP+j-r-XNiqC$woRMJOsSDZQLv6Paj|C*TS>0u@GUEuxt&4~U zIh|jI-h8Q$XPm-|vxTZZ2@qezWo!^u$5KpJhsY5m8OrEI?|i_OkK}iv%|AJ|bs*kM z*e{Qn|FsH(H7=kTItUo+oF!4_0U9b4l!S2tzs-8qEq#8&Zu$$9Br-dRoKdYWvzk9 zTNFZ2i$(5}#OZ64!rPgL54mP$(L~uoVDRZuyF!aB9Vj8xwx~x%O|>>D_UPxtmmSpc ziT1@}GhshHFA2%zlQ?&#b||0Y>GIoEFYk4Nw|8FB7XBNMMw|* z?2v-s6rCZ~~2Ad2PH8V-(v`{MjmS*du#wHFRI7tCX-?h<;)f zn8tyox~Rvx>5OzHBRUBJNo6HBK6pfV&fGbe zo0G~oLSh$UKa)(wS_eE9mzMrd*xi3e*$Hm5QnGxj%60WDElS}BR2IJZ$MK=3{^ALf ze7$K!D_+s!YQ$k4S*c$U)SXQwr4k(Fyx4%QnRKb*tioZ-t0yF`hvB;v*~K;+JFd^o zch~wA1nXy#HPy^vwifbi+g3K_S&zi$=<5pL;JBskiNVhqCg|XecRP>J3o29XWv7of zQirQT1Ga16B8EpsDT_Cx^}c<4vE}_vx9!S^Q@-ohQ4yIuvQ6U0o@;prdV>a`5>oF# zazeuCwnaqYXQcYQ1Fl4*y)uN1^xQ9RKJuvsr3fDqZ&p-Hb5_<;Xl!-?Z~}}^6)PPl zwR8$Bt)YLpd!8wChi>8^CTLI6X?@>mZh>ET=D=Ub+2A+Z6~oNb(RT@T(9E>uTHg$< zrxAo^M*2e?D{5MV|5o-fh_?30M_@6!Maj0wAahSLIYRe=rI<#^RM=pCh^VI*J*o5u zD|dQQ0ovS^n;@#TVtJJXZ@S?Frh?)g**4tm5VXFAtPe=IzJ9M}UPoP5#V<$>nm)aA zcZcIk;0H?`d9$#o7VXkQL1|(Gl_|$g7MDHQq>wt$pjjMSD(Ha#`17$Ju2c2=Z zBTKZ+P56Q{0Ygo3mTc+KDq13CHKa0hlY0gr%_7b2Ljxn`ga@#cbalnu{5b)kdEQV7 zoe5JyanXPdYupYkLUrjC2FFGca|gU9tcTZWu5UWte$TM@tre8z_!@(RtSSSZ2b%da ztgJj0r(QRJ}&`yFpfb%DLQ6rrOuI2JGzU`SEDf;Yr{A(m>?W4Ttw(#$4aF z@bX$0h|5ZZExPROve<4BFrOfLJjv6-Na?<{DpyZT*0_Wt&Yahl81)4g6=StL>P$y5LjtIaYA(pJ}gw)wze%C1k zt)LG&b*~K+@|2$5|MSpvF*DJ_)7aWn9PTV56FTU~nLW|7b=IoyU}23GVO7Y+m^NnpAbV{2mX)oJ zW8P1r3i}=m>~C(BBUO2q)IHgiftd0fz3m%OQ;RJrDM+d7F8^iuNJ!94G+85>4;AqY z)2Aei2zRXFD*CR4H|?s*`lE~_`{B+Fgu&@F;P^Dw>w;OsW$H*0-jj7JJcjW3TA?>L z;?au^E%Wv?GPHOE-Eir36O4-tT$1GN>&?7tzj3VKF{M*V7sV_0R@$aopLSA>n&8{n zgWmxU{^BVY0=K7+GghP|7?_so{Hd?4Q+ifg12doD)_T!l2i7U2zUL{$as3UIYwoU`j&|xZZKpm79P3;)3+p$Vj^c0|yXeEhHz+ z;q9n6OsDhd;|DG-OVCc&)Btxn)!QQ5?#6ig_fKocG?YoW2@6w2?A;sn)6F@k<$rKm z%jcaC9R&ZlE= zNbSh5G2JnDuJs&j%}+ug9!AISBQ6S~6P>YEGz@HPu-z6IA%AlL7&^R%zI5z#PB=TP zJgV4r?!LGE7LQEq)tv-y>~iW~ydg@oxl{Yf!nO4Hp!pSnJxfA)7+3PB(;GK2g))1K z4Bw21gZh1q)Im^ha_z6gxmoS$zQ?r>GYz7)P4HOn6TTn6`SwsSxPm0+JcPMqo^>`%Xi} zP~pCz5J<>S;-{35isb14`3KUT*V-TN>naci|6{Sa^xZWXbd zQ%=`G1!R6tsv~SiM7ZSO35|b`eQfo#hbtuQj0d-Uo#n|wufz3hP`>BkXbWN?A_FX~ zICn5|TW@ovVsS>{W-;))G@9eHM|gM?UJePk_ExE>!73S0O$S}Plj+*Xlc9d23MCIWQis@+J+-0lH8&+g+7G86R#F` zHS_ZPpjRWh6AH<#{Beo~e0}F<+=tPAxq)q*y3*>rq4)R`-WiFeO9?z^D@N(!EEa#{ zw@{&5h%d%Mp_Mt`Mw3et_?S3^4#+@nC#O;YUtrryvmYQKWs|m!#lbf^;q*hOlU>n= zG(qpMIf$h{=2dp~w$1R_IpNMfEC0A62Q{44V(7phyMQJ+1KO|UB(l2UTn6WUv$0Q{ zb`y~SrY$Ezt#)yx0KF8X5E+aRWhalh;aqz9A`iFD^S1q|`&~jf+)9%1ZpY_f;}Z{` z4mQtCt;Hp&{KVn%Wc{9#0NJlgJ{cR%YYWR=%ldAe?Gj!RNg4X1Gw90hL$d@sGcBqI zZ=};cu^CQhbbG970pi5v&S(j)9%4YDVbyhUl0m__Z*RyU>3eV#&J6PxuWsh-FW!ch z-@~v(zHijXLyU^@e3Z0aCR5O2{RK6HGstXv$eiDXb&nktsIKtgwGc&kjj$5Ep4=+p zeSuZ-Z8NUPBO_IL?|w+RgT%%3Z3Xn~(%<+gAl~YCpLI3)NId~}Oai#%+a5znX-YDO zmF_-6o^NB?`tDvKQ}zqVPl?WQczzlaVfvN+s@DUJEfQvCE)#2|DUBHkFK`SZ$G+w# zm0z*_I9_XF0HpZ|hKHwf2Y1*ijc^C1h-Z8K93g;d>r9z*25e2miv*6jip8+HX=7`6Y{g4Ilg8=4RHD89&Xw8xcVOX*3mUXWjr9UK?h zy3Vv^&_!d3mOlZJH6mE|QV9aPimRn|$k&x7ah0Xmo}+@%%BjPV5fJk@tT-WthGMlU zC-02W=)rfTXIDmhCx7u$#xU%p>wocvV=fmU&#<_aQ6~PM&}?nzGkz?@F{1aIK!D%-R<3wLWvk{J|btB`V*DjksUdID*y|?;R!nvs*b_PqXzO zu=d|GvkljhvAD;PP%3c_;S6!)M6Hajx-QsBHVW53{*5O5ZTY=}HZ+V@SB6So$KV<~06GqmlXftk#yAX(7+#`xtd= zFRLXeJ!fUWa}b3YC$QF(i8ANaHzv~$x;pe1MfvD^M)j{pR^1R@ ze91qyYdo(FmPwiP!-q}JaPA+AQ!xWi<)m~XtB;{DQJ78H4tt(WQG~2^^mNc2y6(3@ zcL-^pkcHk!ntnEO0eJ;Tm2$uq+v7es;DF4{dwO9*+TQ%4foaJ(+PsFJ zQ?DC6JsOKMro2M+%umS2&pIRTTanfXhrW;sQfP8RaKrh4pF@y4#9F5W_V`~ zVMU1Kd5L(uRa7Pc-5`z>kKj9{s5omwO9Mn!3+qmEDhtUcYOgrhzb!rf_z;EhfYL%udga%s?-UlW*jcza?G~H zh!I*?1K?p>kkk*Y;1#Z!-=UVbtO~@tL8{PUoLlD7-uUD@B$NwYE$ZLvW4!orDbb3|rV4z*eu`rH{!$K{5`PT&5JR*AAF4?)c4KHaS*(?b6Wbl8G)T zKK&3*n7X{Xy9&Ma^*{lsYp-i8)!?A6L>bd?J&T`OYEAt!zGwHT*=qgViD z@jCLXm^5?<o=5fLI1Kp?m|X6h2kQvHwF;7Fdj=GAr&s7~nGOK)Xk}T=Dxea#!f9q%?T#B8 zK2L0UBuU+gD5t8h>nE#xWb);-TNgFg#+A{|oc|%3VXpIjprrF(ytw*IIfsD-0n?KJ z?P(oF17S%kc;%nUn4;7&6eaSVYO_Pi?BW=H`pc58dbLlV6dB$zeuLmXPRNQr(A)Fa z-rslF4E}Lv#D8O%HcM^EFu0SotYqK)`u1l_ouKG zZ>GvJaq7F%?T3@#|1bJ@E*xLy?4R!fR)&W9Kl0 zTx|h|8CXe(e?W-RPBj#b&1y3b4_KcmDSi9pv{aSSubecb!Ret(^(Z`W(TB)>iwVg^ z({KGvfiPM!w(6bAwqw%p9C$~UdhK2~!)UfitSVvI3p5v|Rr(&Lr=M=%F#1~qhlq;u zvjNcJtxukcN#+z=`h%5XppfDs4>y|y5qvtwcrloHl^+cY$dEe}+_gs@d%+YqYtYcofetpd z=u6)lW40$=4u{AFX%dmflKqou@+1j+x7Ck`(ZfCQ2#6v|VgdtRE2zDTdbF3;)z1nM52 z8Q)-qLoz5N6tVQr6oNB^|ImB;?ENUI}#VcOt)|Chdz6l1Zi&+>d$X1o~Xc>HEuF zhs^7aUC_3y_n^WCqW7C!#GG1&x9qDM&N_N`A{>|lS@(;TpE#wvr|<5L$P!(unXea@ zq}y&<>yfYD51PSrj*S;By~%jXoWv=^B3Ol^F*M|Q+Rivh<-@2aCw zch9c3R_6HBUiJ|Y5sJ=?(5};_MVs_xZJyVhmdDPZd2q0CH3<(+g~M{blW-rl$T3uz z2r=}tZ;%XQCw=pwUsfJVux!NK?k|lj#BYiiI#E8XYiykAv&gmXJFF;aTj4m%hL3^%VlZc;m&Imff*O zn`_wO?k*Tf)^J`PXMQ5#`(;UwFLg;jrX}&^2fBW{y>%jx0t4=r3I(3sE*c7*UD;rU zu;vhf!3_0jV=qItSNxu!GWr|K$Z`y@GLd8aqAycrc}$mT?kPuIsWwg zfgz{sK#_NfvFA~k6E4yHdh0K@bcnHEKl+PzL=xpwvY#`yR)R{|EIpuWH0Y7i)aA5N zy2)+ZTOX07<HeSgSi3nP)&M z1qnlFY4QAZsXiMQmxHd49mkW6rPi1a6+?pwLo`*gz?(Wi%12z-f#K@toddKL2>Rj2 zg&mU8d%b3jlwIw0O|6jHP@~F6R0e%^+b$PAijp6N6W>hlrw%w0mlB9g>~c{4^lwNPVxr?k>sA3Qpo1C1Axjv(B@e{=DXUGDgQAQoL)vr5fh0m zme}N#g$A*sO7hEdhae=O9Ug^tgT7$}q=3)8y5DedMYZDuD~I!B^Cs6*o4?G`?wgj} z+>cS)sElFVRA>HJ=D?UhY0469Yb#k9(c$aKiK|PLPF-~YQvq~XAuDK6Yi6EsXCK}4 zFO4qQq(doaL)qE&@NT|*TLblEhiUeT{`*GCM39=oK5q{&i;7D3jTZ~!g4)w{^_zG~+k{pyZ! z$wBlN6;*c2WeNXo*}jN&c1tH7%i`ka)1+7`sr?E&x^@uB&e_v2b&U9dq_Hw8 zh3Aff>_R;1!3}o=nmFvo$APe-LyWA!MZLGfGP3toLC;azVkX;t)~8DRGBiAo(yZR& z3%s_$l%C!VkT&K{(KqaV+t3_7a7VPbw*XyLB5jYpE%2&_z7K1*#zm7unvymFl6 zuA9bWA@E>l6V*N_M6Uquea`!sKOPkvdlHaEb-0PShNO-e9-w!8-v`(D+0_xt2wn#S z&n^LV=k(n|7^3P%^y838qBL5Fp11e+*x62JET59D+v_7Z8kZzMJJJ?&7+U67b0iaF zW-@;`u>_ZQ&Y@yp><-WYz*fZ>y(5?hyhi!3w(-yqOkXbU=d2K)XyXvYWU1H_?`;iL z&TN%xZhOH0vQ*}su6zmGQD_$H6UW2+MisUMZ>Yd{_Fymdi$S>*Nu5)`7F}=!sxw9V zY=7}qrS7CPUm`s0y1xG6eA$Ll#|?(uqim9%_JEfy=H~~6W{ca|%!=m8%F5#5k?G(O z;vW9Of9EO3AG@OnNCG_WQ1T!K3318FSzpo}A+8B3bm&roeVE0Sv%7}}llg{JSAKXE z-oI}%Tj;3~8Ts!Nt~=M9`Aw|>&8=K7T31>+_`JABmwckQ2yPMN&Fu|pYD&>%pvY&< zIXxgIDT}0{wIb*oF|?1DksK$xGy520tUrK5*lKM*8-837QY&p}4#)2NI*871|C7%U zHJ{a)He$I~T63X!>8)s|y`Ue-p{;Lx7vGoDT%c(VRI-9oJbizm^=Zc17X!};JZkx~ zI3I`dWpVZVWQX8K(&JQ!;@`B7M_4}pA6+tE(9fnMtg9`1ddJt`_|>x}B1ec=_0+J( z9l{s$BQudjXF3f6no_UrDZc&_uuoVB+UqYKA7Ha|!R;#SZ0UeK5VcPuI1VaSaQ65q zVrJU7C72HR{1@->sCr+W#1qz%zL45_1*N8F#%FzG&yt97b(M-xNCG{EjisV9ZFDR5 zdhCqS`rs%CEkP�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 plSFeIt(xk8M-M(b!U>28f!3tDe}G4Cr$Ex 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. +Copyright (c) 2020, XorTroll. + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file