From 21eb4bce6688020269719799f2c5d16e9465c67d Mon Sep 17 00:00:00 2001 From: Michael Kazakov Date: Thu, 3 Oct 2024 21:33:59 +0100 Subject: [PATCH] Removed NSFileManager+DirectoryLocations, building RHPreferences into a static library, disable the "explicit-specialization-storage-class" diagnostic, updated run_clang_tidy to remove modules specifics, explicitly include "_SwiftCxxInteroperability.h", added $(TOOLCHAIN_DIR)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/include into the search path --- .../NSFileManager+DirectoryLocations.h | 36 - .../NSFileManager+DirectoryLocations.m | 152 - 3rd_Party/RHPreferences/.gitignore | 2 - 3rd_Party/RHPreferences/LICENSE | 25 - 3rd_Party/RHPreferences/Preferences.png | Bin 51526 -> 0 bytes 3rd_Party/RHPreferences/README.md | 109 - .../RHPreferences.xcodeproj/project.pbxproj | 556 --- .../contents.xcworkspacedata | 7 - .../RHPreferences/RHPreferences-Info.plist | 30 - .../RHPreferences/RHPreferences-Prefix.pch | 7 - .../RHPreferencesWindowController.m | 522 --- .../RHPreferences/en.lproj/InfoPlist.strings | 2 - .../RHPreferencesTester/AboutPreferences.png | Bin 4457 -> 0 bytes .../AccountsPreferences.png | Bin 2856 -> 0 bytes .../RHAboutViewController.h | 18 - .../RHAboutViewController.m | 43 - .../RHAboutViewController.xib | 397 -- .../RHAccountsViewController.h | 19 - .../RHAccountsViewController.m | 43 - .../RHAccountsViewController.xib | 843 ---- .../RHPreferencesTester/RHAppDelegate.h | 27 - .../RHPreferencesTester/RHAppDelegate.m | 55 - .../RHPreferencesTester-Info.plist | 34 - .../RHPreferencesTester-Prefix.pch | 7 - .../RHWideViewController.h | 14 - .../RHWideViewController.m | 39 - .../RHWideViewController.xib | 183 - .../RHPreferencesTester/WidePreferences.png | Bin 533 -> 0 bytes .../RHPreferencesTester/en.lproj/Credits.rtf | 29 - .../en.lproj/InfoPlist.strings | 2 - .../RHPreferencesTester/en.lproj/MainMenu.xib | 3386 ----------------- .../RHPreferences/RHPreferencesTester/main.m | 14 - 3rd_Party/RHPreferences/bootstrap.sh | 38 + .../RHPreferences/RHPreferences.h | 0 .../RHPreferencesWindowController.h | 19 +- .../RHPreferencesWindow.xib | 6 +- .../RHPreferences/lib/libRHPreferences.a | Bin 0 -> 141184 bytes Scripts/run_clang_tidy.sh | 14 + Source/.clang-tidy | 2 + .../NimbleCommander.xcodeproj/project.pbxproj | 16 +- .../NimbleCommander/Bootstrap/AppDelegate.mm | 23 +- .../Bootstrap/AppDelegateCPP.mm | 22 +- .../NimbleCommander/Config/default.xcconfig | 2 +- .../PreferencesWindowExternalEditorsTab.h | 4 +- .../Preferences/PreferencesWindowGeneralTab.h | 2 +- .../Preferences/PreferencesWindowHotkeysTab.h | 2 +- .../Preferences/PreferencesWindowPanelsTab.h | 4 +- .../PreferencesWindowTerminalTab.h | 2 +- .../Preferences/PreferencesWindowThemesTab.h | 2 +- .../Preferences/PreferencesWindowToolsTab.h | 4 +- .../Preferences/PreferencesWindowViewerTab.h | 2 +- .../States/FilePanels/ExternalEditorInfo.mm | 1 - .../States/FilePanels/List/PanelListView.mm | 3 +- Source/XCConfig/common.xcconfig | 6 +- 54 files changed, 116 insertions(+), 6659 deletions(-) delete mode 100644 3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h delete mode 100644 3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.m delete mode 100755 3rd_Party/RHPreferences/.gitignore delete mode 100755 3rd_Party/RHPreferences/LICENSE delete mode 100755 3rd_Party/RHPreferences/Preferences.png delete mode 100755 3rd_Party/RHPreferences/README.md delete mode 100755 3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.pbxproj delete mode 100755 3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100755 3rd_Party/RHPreferences/RHPreferences/RHPreferences-Info.plist delete mode 100755 3rd_Party/RHPreferences/RHPreferences/RHPreferences-Prefix.pch delete mode 100755 3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.m delete mode 100755 3rd_Party/RHPreferences/RHPreferences/en.lproj/InfoPlist.strings delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/AboutPreferences.png delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/AccountsPreferences.png delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.h delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.m delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.xib delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.h delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.m delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.xib delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.h delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.m delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Info.plist delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Prefix.pch delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.h delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.m delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.xib delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/WidePreferences.png delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/Credits.rtf delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/InfoPlist.strings delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/MainMenu.xib delete mode 100755 3rd_Party/RHPreferences/RHPreferencesTester/main.m create mode 100755 3rd_Party/RHPreferences/bootstrap.sh rename 3rd_Party/RHPreferences/{ => include}/RHPreferences/RHPreferences.h (100%) mode change 100755 => 100644 rename 3rd_Party/RHPreferences/{ => include}/RHPreferences/RHPreferencesWindowController.h (86%) mode change 100755 => 100644 rename 3rd_Party/RHPreferences/{RHPreferences => lib}/RHPreferencesWindow.xib (91%) mode change 100755 => 100644 create mode 100644 3rd_Party/RHPreferences/lib/libRHPreferences.a diff --git a/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h b/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h deleted file mode 100644 index 25f9e055d..000000000 --- a/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// NSFileManager+DirectoryLocations.h -// -// Created by Matt Gallagher on 06 May 2010 -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. Permission is granted to anyone to -// use this software for any purpose, including commercial applications, and to -// alter it and redistribute it freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source -// distribution. -// - -#import - -// -// DirectoryLocations is a set of global methods for finding the fixed location -// directoriess. -// -@interface NSFileManager (DirectoryLocations) - -- (NSString *)findOrCreateDirectory:(NSSearchPathDirectory)searchPathDirectory - inDomain:(NSSearchPathDomainMask)domainMask - appendPathComponent:(NSString *)appendComponent - error:(__strong NSError **)errorOut; -- (NSString *)applicationSupportDirectory; - -@end diff --git a/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.m b/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.m deleted file mode 100644 index d5fb619f7..000000000 --- a/3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// NSFileManager+DirectoryLocations.m -// -// Created by Matt Gallagher on 06 May 2010 -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. Permission is granted to anyone to -// use this software for any purpose, including commercial applications, and to -// alter it and redistribute it freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source -// distribution. -// - -#import "NSFileManager+DirectoryLocations.h" - -enum -{ - DirectoryLocationErrorNoPathFound, - DirectoryLocationErrorFileExistsAtLocation -}; - -NSString * const DirectoryLocationDomain = @"DirectoryLocationDomain"; - -@implementation NSFileManager (DirectoryLocations) - -// -// findOrCreateDirectory:inDomain:appendPathComponent:error: -// -// Method to tie together the steps of: -// 1) Locate a standard directory by search path and domain mask -// 2) Select the first path in the results -// 3) Append a subdirectory to that path -// 4) Create the directory and intermediate directories if needed -// 5) Handle errors by emitting a proper NSError object -// -// Parameters: -// searchPathDirectory - the search path passed to NSSearchPathForDirectoriesInDomains -// domainMask - the domain mask passed to NSSearchPathForDirectoriesInDomains -// appendComponent - the subdirectory appended -// errorOut - any error from file operations -// -// returns the path to the directory (if path found and exists), nil otherwise -// -- (NSString *)findOrCreateDirectory:(NSSearchPathDirectory)searchPathDirectory - inDomain:(NSSearchPathDomainMask)domainMask - appendPathComponent:(NSString *)appendComponent - error:(__strong NSError **)errorOut -{ - // - // Search for the path - // - NSArray* paths = NSSearchPathForDirectoriesInDomains( - searchPathDirectory, - domainMask, - YES); - if ([paths count] == 0) - { - if (errorOut) - { - NSDictionary *userInfo = - [NSDictionary dictionaryWithObjectsAndKeys: - @"No path found for directory in domain.", - NSLocalizedDescriptionKey, - [NSNumber numberWithInteger:searchPathDirectory], - @"NSSearchPathDirectory", - [NSNumber numberWithInteger:domainMask], - @"NSSearchPathDomainMask", - nil]; - *errorOut = - [NSError - errorWithDomain:DirectoryLocationDomain - code:DirectoryLocationErrorNoPathFound - userInfo:userInfo]; - } - return nil; - } - - // - // Normally only need the first path returned - // - NSString *resolvedPath = [paths objectAtIndex:0]; - - // - // Append the extra path component - // - if (appendComponent) - { - resolvedPath = [resolvedPath - stringByAppendingPathComponent:appendComponent]; - } - - // - // Create the path if it doesn't exist - // - NSError *error = nil; - BOOL success = [self - createDirectoryAtPath:resolvedPath - withIntermediateDirectories:YES - attributes:nil - error:&error]; - if (!success) - { - if (errorOut) - { - *errorOut = error; - } - return nil; - } - - // - // If we've made it this far, we have a success - // - if (errorOut) - { - *errorOut = nil; - } - return resolvedPath; -} - -// -// applicationSupportDirectory -// -// Returns the path to the applicationSupportDirectory (creating it if it doesn't -// exist). -// -- (NSString *)applicationSupportDirectory -{ - NSString *executableName = - [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleExecutable"]; - NSError *error; - NSString *result = - [self - findOrCreateDirectory:NSApplicationSupportDirectory - inDomain:NSUserDomainMask - appendPathComponent:executableName - error:&error]; - if (!result) - { - NSLog(@"Unable to find or create application support directory:\n%@", error); - } - return result; -} - -@end diff --git a/3rd_Party/RHPreferences/.gitignore b/3rd_Party/RHPreferences/.gitignore deleted file mode 100755 index 99db25cb7..000000000 --- a/3rd_Party/RHPreferences/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -RHPreferences.xcodeproj/xcuserdata -RHPreferences.xcodeproj/project.xcworkspace/xcuserdata diff --git a/3rd_Party/RHPreferences/LICENSE b/3rd_Party/RHPreferences/LICENSE deleted file mode 100755 index 356d7d26b..000000000 --- a/3rd_Party/RHPreferences/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -RHPreferences - -Copyright (c) 2012 Richard Heard. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/3rd_Party/RHPreferences/Preferences.png b/3rd_Party/RHPreferences/Preferences.png deleted file mode 100755 index 0ab2fce8da86afabd4caeeaf2bdd3120a0854d5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51526 zcmYJa19T-z_da}riEZ1qZ6_1kw(Vqs$;9>~6HIK|wr$%^zH{GufB$c-K5Lz>uIk>k z@$9E|bw?^GNW#P5zyJUMcxfpyWdH!w9r&Avf&jLJ1qR>&0GRJqqM}ODqM}4f&JN~Q zwq^i;=8t48XfCzyOPfdQ$V+@vz~hcjk@yblp!INPkevdD3SC(`fmozSM72nXO)64M zyhQ5fU#XH`U&If7Uz~hjcUMO%Z|xr04NLky6%FBThycDNDP&|LCRD&ql4a?iAIviw zeTfmc->|wNh={=0r1$?qk^1=HUK@<X_ zfMW|}9_AFhh+!ilK%iOP^EVYFb&}wR5n(bxfTu4K!OHdZ1}+y^PeSJx8Rd1r$o&Ux zq8QA3RKS#3-L`zlACg`vpU>RG=Pp@K&GB4j@Hm+W7`Ix99K48)-4QZYN^loqF4p0# zQS&H$0%W`MW^o7Dm`3N#YUJSXU}HMH#%oo%zfs7+FG%eut!v&Pgf*z+;x`-i;f5IC zQ3-$K_yWd47f^$1@!RCWyoe`SXFjq1KGfIlB@j65=NJ6i5vSU8$0T$MsU>RQ|?It~3%8!XG#H?|whb@L1v&u#1(lXrop<9O-S@&Yc@n_@CiK z+$XQ)V>wt6zD=!O!6+1c$`WpM@qg-3x?J0w5OQ4Ed3XSxg^ZUeKebqOJ&(!ZyI_i1$lS??*Glc!NpZV{S(Z-+7w%@S} zu;&B!C<3T%8J@48Dl@eqzcQ1s3SLPPMB+Ra1CE}DW_Kgp7N!R+`THj$qG#|d35deg z#p&!rIfQ(FhbhT_HY};rLV|MGVYhLoDqR!w?96=L%-{yu*YX-8vU4#}Wmtxur+n6m z(ZXoyr~EDdTL8!LxVa_k)8pi#_=D^9OZZL=RLBK=MceyJ7}fyf_ajm*`uYc?d^?QR z=^LO~RVXHJ@Utk769?}1w_j5CE~LESP;p}Sst~6_kXWFs)$q$87TX~1B#ZE%I}w9U zM96sHB}DjH;1)szRG@{wQRV|7romT*D4QV(f`_)LJ)sA?$|uq3E_{5~M?*?aru1wuR^I+jJztgQn~b-?P0z4KogqD z<5Ci#;!dI%1vd-775n!4?_a;aY^n&Q;A&CU;>J!$>|q(=A0j3*<(4Gc2sZ`ftKZ}$ zB=ev0Sf{;?Wn4*L5xkN3V{$~RjEDKm4YIgh)I>zVQ^8e`OG z(m|?&mIaBmL2`h%VP*!=_b(bb7(rH}E?;rs#o$tg%=NA8NHtsP(p=(QvRqPJLffM} zp(=)B_S5c7+~jz|2w>-iR1JD;=WYvbr&^_1_FL9lom;+JK2B%-rv779cv75RpjBj6 zl>B?)k6RIZ9=}wktd6Wts(X@qP)v+MnnKiM5JTD}K#ySqz4gs?&$SDR4%{jjx+e-r zbeK#P$sSn(3ikf~e)m4?KIeYsKK)+pzUjnZ?#tBBEY70Z_}XN7DsF0e_&Rill@$ID z)*s|Og+cH^yuq?xAHVA4*yMKQDCEeB{N!Hb=;fx;J6Y>kXqnfT!&xnuG+3XQ6l=CM z`?bb3-!&0xl4{q@(+$OIepY8xCupf?j%i-iD%2XSkS&)li!9HsSTDaWA1-SxtF7p* z?5*6btgQ@jDdFwnspA>pQF7sMV1T(ngoXoKY{K zaK^9w;!S!(^FV!~C18tXiv?4}oASzO-DKN@*u?Z@%4N$X-O}$=?$qzR zdIx>Sct?IedUm**f^mexf(eB(g>{9JgRO-*g@u4MhuuVbmolZqLGFua>F4d|CKe!; z&BMxr74Z`p>qY5h=pE^G>#Y*A6lW6$6{{6*6+0CBCT=H=D$W?$iS!3~4he>R;8oc@ry5ZFwFk9)nf` zh?MWC&?(eO*l`2H)+5TMvZlFX$os$cjSm<`qQ_i@*M=#_I7b51k<_kLxeBK%s*C;> zVHIf>Ju63wTV*QODwoY_m|23HirGmAP zHt(!Tr-(O?vRrbu?KfwU;{4ML<02s|5(^P_5>`7q8uL9X9p}3tnHid~>&kImO+NF& zbL$Nvs$C*kqD~Q&3hW%)oB%5ZD`p*E-O^$2VbEdf_z~Sa-J|w;ZNH|rPEM__{eXjb zV`**1T2T$X)f&D{a6_V7&VvrF6>h0~8NF@W#AE%%v3t!$(uKTx_vGkh{RXWM^qbTh zE`lbcPq=URQ;bYZWXy&_xk6i3X*Nc7bhaW_mutLhq|=GBnd^gdh4aUb`Dw}l$6@7m z&i?0g$PnrBpB2=jlT)qB7r*e87*<}2j`?=wjvOyp&mo_u^Zga<#yUUDJ%-uJG65_? z&RpwU^aT8p(EE+0(WY*X7+Vnm*_<2J`?1H&$ECZe+b^Wwm~rS#=zlRic^r9$iKr+o zIhM(|7(E60SqiB3CI9MKiXVHY>1gV439M7L|L7HgE?i%sujciC5(?FxWDv7i|$!-2ZeLzv*H-6%KwE8s#(N zGvd>R@&g5tB8C#1TyGij;%;N9!NBw@?;{bC4ndWmfFH~I`g^Uhv-)ilT2s=Z=zBN< zUIv$~)3Y*-C=L6=3vxE8xa5pvNbDoN3b*^^vUY~SYKZH=eb#+4obzDFp3IO-Y?TFs z>0`E%pwlPWBiX@zoeD%TOG1 zRAdgXmpwTn)sLAX-D$6o7Y^oylXqzX!`74mE*XOvF(B|0|&u93iYby%N)QTTo z;a_mk?L_QeF3v9~c`SJm+{(A)nqNND`zux^yC)+n_4F7W+O`N<_Z*9_Djzo9p2n{> zE;&v+y$r7WbzeD)=%=>Fd#i93 z2`mcO^K8B?o?MJU-}aBU{q>+t4BwpVntCC6&a;;BDz#hneZ3jNC#19>F;B5j5o8Xa zd8T`LS;g#Q>~OhsNxYkXd8opMU57>AQtfi{Yx?^1X7+V@kz7^0%uViM3vgp>q4(2_ z(dnt!uav21tkkNCt_-iLl8pOXFi{48DRC4601Rm3+6TY@i$j2EmiNi%Mi`hD-|pc# z^n`HpZBZ(-d9+q6QIW}3Ze3P^5Q@0Pz?kT6v8mqf{^7y?A-aB&zS0TvvCA>!DX)yO zl(tlhpHIA7r2zf7C@P8qs&YnS%2QGda(~r)rCQE(C z1-6-=iwp}V3m^H4Hr=+v_Wfq#cD*K}R)gk~mO)LLP4DLHbr;bOzbE+DiY}7fy&i|~ zmGMxs^0P_x@^$ytA6p0?h9BuxzVE4>>2=ikYLrZUQ;v6FehD^64^R`*GnAda*#3-L z%DdaqgqgBWhq{oGEtQ?0wERk|ULI~-jBE9R}WaN(Lf-S^Ipn&M42(4N+O-hMC3e}O$l ziBTS5sfbcPxI_<1W>yd;yWFe~@pp?So)avPASqli7cP64aX;$*1D zcZj{bZZ7eVtwwe2ylC}ndsleXJLSK+w0mms0rxg1NaA-r8+csgclN)pW31Zx9dLVd z0#X;0Ovwq67=E4uBk=KF{^7M+Jr=P&JRg;j8vlpp&z3%WdyMCwcXPLLhxTK;{?HxX zLk|bavn|4RLqT$`2dme?Arscgy7fBJ+)4k(caqzKrS;N!aI80)!%X4F5DTQ{6(Xq%)#WL_f;-Xt=BoP0}n6AQ%!Tt8TVTe_j3A1Ip8O= zFbYN!WvzRff#aS*R)J(!8xvkxkrUrp8k9zyiEMj6@LV{;KSyisbr??9ONU=E-*lr5 zc818|*SOS#xq@F8>qf-O!-LIB+ZNI4+`O}qvLWczeuKB{G*kv18J4fNB4AYj)>&iv zlW-sx1&II)0}Tfc1qJPtPy%L4`eywCV+YMjvLX650zs&9T-vGRCf%nNb@GB${XoPO(&x=3B6Mq>Yu*N@vu{0XzB=?Uq`I?0c%4^}2P58@2|+ViP-G=j-X} z{lk^K600AqN7*v`07r%UUW^^*g+q(0xBEr&h40X5(=>ga zyqw=Z?hrpz5Q}{T9>@7I@ZaxmVA+Pa8Q&IMdyaHQpI!&jb6dN9rnab;F4=N?FoInQ zElx9`fIKOw|1Gv8yyujoQHNR!b?K$wrnPLh(y}6)Gef~UiM)4#L&RcaHDe_-jWmZh zyE9+f+uqd_BFRhRO&QA2h3uA`|A!|A~}14Y`96|0jRa_}$oKmmI}Znt9|& zS#7q>jLmGO7R=e}mh7AK53K?3LQONf1NLNv1yO5^Q_lxToRf@3Z8q(vdKFhVH+9#{ zhx`Zh2SFTNwtMDXW*nADwi*^K)(&e7V+KnBOQ(M2q1!~Y84gIB;ntqPrIeM&%SSR^ zyEekdCA`1GA3IS%>N6ldd5~xmt<&6A{+1*eSv-W$h!3Vu*^%w;eC69#wrIgPvYI;e z#M&~)IJQMAL}o~FZLMTntp%krY-#DHDbh?Yo_1^Vlo;`I7^)P;jk%PZhkB4K1&J3= z139;Oh+f!)(Sd~K#$|T6bM4IrA&cLWiJNWUA#TR#MfH>PUUD&JlF%pjk*|YvulFWN z?h7@A@<5>`M|G~;cYAa*x!h5Mn2Z@Hm0+J{DgZ9hATXfyTI6Xu~2`9wbHy%*?#dYoD*%rU& z$!`9c%l|ltiuRwIsr+e2N5y{4VXfNlIF7lf!!9Zm3K2l zSdX)P0}Ml`ZDU|T+#!J^h&hY0B*7(%c>G3W!Y_wv>ltyxe}@qlI>{qZGW(0nhMMpP zU#uxFz<8eddzx$-r>1*3I|sH8*ho#1BbqM#C2WH1z@Eblk|m#2snuc}T}ez#vOVGk zS5Mfq2&23~geecUl)Veuh&fC8N_v#$zUHc?oz_2b3iv!<5{3?Ab8-3=9@6lj$BpEcHA)RF#JFY0f_35s+ka=8r~AL z5OZc2R1ep$Tc9`4kMqo%H`(<*vbDiJ(j$b#7-XI3?d#&N@2*Gjd-JDu?6>=Q9A0?K z7(cj?9KCkHAR)lPl|t)7Eg;B3Uu{gFBO|S#iQ~%uY(X9(+{)O_j!?8-A#_rr@Oo7e zr+J~;s_D5W9b#9c%FfU7Pcup8jSo0)S9S6$nI7Ork5+SFtXo*sAF;)1shmz)fN3D# z6!SP-54!T&a`2JzbuIW>OAO3gn)3M7j`I-k;r4#smQA={RBZl7z+;^M+50hb_GxtB zA@{Z`D+MpbPJLfvrmW9~a*3Yf2@%Q=08$M`{2Krl2zCt_Nd$Z2kBRk7kl0-c-8sxS zPxmjpH|$)u%rycRekVwP2=e#Jzi{(t~KtK6;luKeKiy=LAbNVY(6ogT@rnMP=g>LG-vDsH30kwfK-H1JB{aD0qdE`5pB$8qm z1Iq&v17qZW6C{-Bl&=cc%qB-AMz}}Is2pj^X%wj3s4)MMl_boU&#SSEv8^;5*E93P zF-(U%I6>TpVfB&!;og%@Of6Cz_a1MfTcy{j&~9qb*=oS9#^3tf$k`^^{kyjxyl$+} zs_%sBY;cRVVszB7)n;^*6w73l>HzZ6BIpt*za9U(a$Bu`?Pg~psSqk;_|JTva~m1w}tTJ%5Vl@>TBD_LAVw zyNdyM^3*Yg8M;?c>T*ID-^@kLexpq(9~&Wq;xx`uELEtaWRQ1}JR*+Sb}9aK^qltv>#>%m~dR zou3p|pD0&wZqD~L_Fz5sdTO^cdZVGoVxSzo>Y?&O7gMjvV5?2PMxc4;>n{NP zU}6u91Pd(CtE01%2m!zV8@Qlyb~Z+Sc2-s>Rm%+1T~WQYrN=Rav;T`)b6E&6^!DrG zZRiW|g*{f}aakDx01yGB#e`Kov(7twvhXzA7+x<*FHgKI^>L!vYE4IKE5glm{GqxC zpMxq4360;bBN*ehqo8-zWu=UXFu8OS#)4b|5Yli#DfbgZq26ungW)M^n6XTCB>a(n zncx+F472mq%3Oz$NaCMUA!My zBl@pra#Mt+vBkd^G;3}#kY&&RclUpKZjvN$&wNX>&u{QM&;9qYx8{+`r(&2!+9TAG z=XA_<|K74F7VoUxuN1kjiL9n>f8xK#f~p>YJBZJ6UPNwWO77BW)&JXBAxn-QT6Pa< zF8f@b*O=2yY!Ze2Uun!V$Q5gS9japNB zQD$OZg`%`kle@APuv^`lr&?9~V}_r}sEle6a|Q16H}3+(BbfyH?Whvx)}(Gj5{K4B zCTepv1^?NBn_A39m0S}YDw#X6I4mP>f8l6=_xt{(Jf-`P+;M4tF4Mt$b0U%bV#t5? zzzax^GfZ!yK@ud*hK|&qAglTbc?0fswW(_CAy-f-vR+D^GQchHc6U17^PkR9MhYGW z$x)b8q#{)Y_i0c&ev(y@^zgQ{dpO|KWTwr_Bj?G6=4KsLg)J}I{P!5SAk{4Svbend z>St3bZC9M%{I=cb$kzFPAd^iiAs7`yh;IQP38&dcn;b7f1M(n%wv?qe$)Gl+B`y`Z_Y`7!WHm_h=FlrMoopx^RopTb|5J_f zpS?d}a~0?a(iGB(rBe5!Qu@*0RUB6v{XSPQ;dq$FoXC9&kxKlk{GpXF(3x?=3*Ofx z2=*h{|2hrJ0t!l9WTO_cQK`)HGH=TLG4x1T>bCrkr%O+-i=wRM1$lQ0(Nnp@?1afs zQ+rSp4HbU6n*R$BUF+K;^2XspCHlu&zTu4|l(th- z%Uv*pleZljpOaC3SG8f?$ z?pXv`1p%DPe&uaWTM31SLoY#FB($E^U+s3+2BcOP(@LJ3J=M9prhoNcE~jkm9b+ql zB>;#|5rbKgr8_C&TP(PTO5l>{4bdojs%-T0aG1<#qb7AvKP;`Y-f6$WpK+MP{w41K~1g`?lEo)tzInk`L2bVKh zzm1yMot-e{Z{+;KWuYvk4f?QdhghXDWGTkb|Jf*2)iuJhfG?2C3{lS)iR6TwHIm?q z?xrr{cOgo9WV?qL%Gs(%Y9}49+WsXM!@#1nzcqy$wSFrObaq%y+^~G|5kq{+zXmfV zPx-0OLnIwc!)=zYiejZk?ERC_OC+a#IVx4;`t)|QFmC!(*=uT}W;F8&uMHYeW?tgd zn#8psu0=aimwYPwVf8=AOiU<^K{QE6`#Yne@#C0Wia_zeDd7N|aluD}v?X)d#^ZfI zEmH55#TH+-8eJ-z!(W5c4Hdbyo3@)VrjId(^t$8Ll{Tr4W~CgfSj6`~pFJ^Xem9VZZ?yL^|Hp8U=V)itoS z>u}Tb+{J#g{?|v1WfjMeG{IN|n+BAhXHq=N#Y0`H*a^ z#;-T4L|v1xU%??l`5U_A?f8P$=@MJ-+K=$hpFd7aE<%vPfZuFT2c5cm?c&5qwQ}xa zb)vHV=F4J!Qsa{oGUB5HW>UCN$vlv$Lr)*IJ?a&|*4545(zdue*b0+4xa6UO0hMP( zGz&5>MGfRj!u|h~Qsr2jyp1+HxJuLFplgb_IS(P2XLOcWVf};+s!Qtpo7qlGtX#(O$$YRHgRO6| z$iQAv{+qT7mi7EG71m_b+|K*6M~0g@O%jf)1Ck^UR?xH=40&siZ1$!2vc0O^87)EY3(LGLh z^uZi&{PExnBj7)21=(+&_z*R+co`4BeFurUW?O#Dl>0yyT$K3F~LjmxA7ngnOyrNvcG(R#K?`$MB(Kw?=Y}Mh7Eo1ZFLmNgpJL*EEz!rRA73(e}$XDiR5rLqFx5D<*d7Auw;Y%mcB1>gY3r>DK|FLyPr zC(5p_u1SSPMMD?)4Gb!(&WfvK^6Ao8jdU*={Z*#iAW~GEF^nN9s{{2i-0(H0rO8A6 ze{nvOZ;gDbM)Gy27CL(+OU$jWS%P#%#-6nfl6&9wZ{M36DU~ZA+ zgDF%^;PSmMGk+cYC?#;3>UpV$2#Jy_)Wad>-sGYJU9T&y+ysj5Ppn3%A%u_;R`Xm8`4Lv0QS7?lG;BMh%-9-yvfVJ9x!3M&ZEeLC z=lbL5>FHV8+SWhk8b7byINWfax%1t8efhT#tPElYdhV0tAm6ekC+K^%%_6=k-LRXj zb9Pb6XiKcmo_&v%`zX=8q(ZM8dy-D%(d)d|mUt$^$L~IGH!sFoZo*{rJ@Ucw-VwY` zSGy8gqUQu#(!<9vnqcL+pEKCjiLDxRNDgVtS*bZvz*%?AMTCPh+-P;f!p822=G=^! zQ{aVXH6I56;1Cf_wmSVhA6G1D>^FGo8yfN&8ql><+eQyox3>)^P8u2;2Xlm602wI+ zOTxXGAqjhRB21iB>ZiVZ%Li?mfmX6azu;5TYs$ofoK`4$4SF*lk{*xVY-==nw{#(x z=GfL$A5&F(1?A&q)@mdJ*Ldiw64AdT3H{In-**t5p0ADCzdo)M?NkOY#r6a_IKn>O zp7wsRPD;_24G>0py1(nZD^k1*BjgoGD&TIm5$R_v@N^gOd1$9b;QB2IC6lk1q_!d| z7Sz1rkQ4?m>SeK&L@73gmI$?bI=2=o7puq&RGw}cRQ6o29^HgnV=rD>Tg!w2L1eH8s|@EhoKyJqO*l@IKuU$j zS+Do*iS1k8g$0c;H6|?tG~>aZ8G=HrQ)yU0VFxxz=T+Zbd+kAz%(JZT=Jl9anQE8J zvr9%+tSw2(l+38wZuYNdpPcZ2Tq+8KzBhy2rnGTtB>1Z;;KRoEWz3-Qxi2Ol>g&GG zKoYNaA7-ZmC0A+>=jNe#)3>W%?-$%$*Ai9Yj;_jfjqDU#=P114W-Jbg*7d7YHuj*c zZ$%;?v(k9T$#MV3SND&gkQUKD-46N?=I)>q@OwY}Q_`N+QyP3W)c%82`RaM^0 z$qth>6`>g0NctC36GKmhBo!vG>sWn36l+MA)GEutS`=BNq_5?peA<3wT$mW!JQmh7 zCFtWo=*HIH7VS6;a-x$06QBK|-LC24p4fI5&|v}H76NzJzPqTo-K}nCjx*wz16KAM zt>}n+*8unPWsoH|r#X4f9mLOV#NSE1QvshY@9#%~LwTa%(~FB?iok)Ijkeff;o&zM zSN@n)?YA&V%FWlkus3;#eoz$^6;Q!|r%fNm%GOgFUB8C~M?6SHffq9WyUeX^#;;pO z5P+iK2isz$UeuaH7yj1Q=Mys*SA<8$nO^h5qE3z9oBMje*9R5>!QhbKrxTERgL-WF zaW>kn1QUKf@#5g(I$d=<^ckuXmQhjQep&DfLWeE!UQ7lyGdW+dmW?o z9<7zoOYM5D2$lxZa(08y9$)J=JrmcA7-vLuV+j!H;{fqr*RsLd(Rht*zBob46l2d|c$8KuZHNkAaJ~c4|3RUDhFh2}nkU zZp8M9V06;6QmoKN-6m7_YDxC5%562VU0%(7(ho2Wc#uEK%a^^6Uh72Cp#my-Wwl%J z8c{wEO?yUJ>{!wio&_J~RWuu{(f`S6W@9Nv6B+Ey$N5o6;2^JWZ#RXEe$ccUmHov6 z57a<}GBPv-$WZg$^rJo>1$`p0^XXO*7&cx!I~deZEljQe80UtUBy1ZXun@PH$CU-K9d5Oh>$1< z4~=a7c_}i0##hOy9Sv4a?vkW71u46cOed(ma6k}(n*otZ;bww7V1OubETe>ht#gT!Qz=y-97cUPu^U)MW*&%jU#$8~5&&Nt@i+}sU}l~)9U zp9vg~4~~tXxBD7kPN%D6E}f3iKc3F|oeslJ7cas&5S^CEeGA*bu}x~biNED{zLR&Ce=%Erl=YQ)aO6qsq>3jN|M@O_h1GKMH|Wcz+j zQL;ueR2c>qgHDJeQ#>F*(0n4}ha3f}0~e;EFhyeI*-k41Fz|N;cHabQSLj&M<+2ok z&6JvjXrH@`pP*Z>i%r)jiUBxXPd;7Y|9~GnJUm7K?EMcXo~0a5uL`Ox?D!}a&kPqJo4{>BoW0dek42@Jy&M8 zR>PW9TC@}B`^|DTKktrS(?vRwGQC)=OL%ZrpY1!2qlUIup3aJku z;yfYHmMAOa=dLXd7!w|CX}uVdO1c%*-}$HdRvT=b`rtVY{~?$9lCcB>K<5p~bm+w1 z*x2Cmye5jl;|^|YY!vf48cz?Q*J(`J*;-kF9&)M%5>z^!MmRvV%aHg^i{_Fk)eS*Dc$a#By zZZjpz&me=PS<@gqo%*f0jbym-tQE9;TMWphr3EMhG%W10HCCaDI7APh;Ih>eMv0CP zPO_oIB$QhR&~xiG%YF>_PM7Q&M(^t`*Ce2ZmsUa=oYSia^$j3;b$Lfm+u{c%zAwt- z9fzf2IJVGI0{{3D68LggK)|`4iymg>*otQw4)i5sRC-CRI-DTqw1?g>$9)p2ysSr5ak3<}TV~Nh46PW7(~Y>h*xnC# znxr#8cNAN4!vtw@{hipuQ>(3fbmZQ#1&K=LUvlW+GnRA9pSxa9%Yan^k4-O1`{o^p zb;myV=Fiu&o6V343^O`fd%id)-yrt#JTz z$v>+L%?@ujP*~=_&rN*87y$FBoamsSAkVH`WtdD(hr#V_A`Cjsz!sOIL6iCagDZng zsX|hPyyz>lb&}VdLBa7RKEc7dmN{nAsEG5qQ0_5F3jYuL4=41;!qjyH!JyYhWAyOO32$uVuwAYO z0RsbTzMqwK+Vncwu@HR2CJ1K}w3$C946Ba}DuDvCxs zy+4jGF9!!O4SuoPEN;h367-xdl*Nx7T;Ie7@a4R>wzbuGKUnj<9{&LZ+EjI5_&lEX zsA=eZ11xv=aJpZvM*Pp>t6Ya2F zGepn_B;HIGlX&e%{8!XAK2crxUl?Dgv0q($pD48x7fQ%oP`PTD1BuTw?BXZH+SNaP zUY016p+n@`$OXfTl*_dA?=%OY+EpGqUl8y%oOTI(XBCxo|4T+p+a@DM+gS;Jh4&T1 ztKZU8$&xNh>E`qr6dV7!@jSA0sc=!Qow|Mq1lel{$my@!vE!|J?7p{0P=NMPPFUr^ z*tA#Ax8Zt^q>eyMI=0JDnI9OPM_$Wq9*hY1JfS-~J4_vx#zy;O#+C{Rf)w#JWcBjwe&?TIR;~EJjh8pc78y?B0jGRY(##KBDqv zh^~Fi)Q%>$YG3Y|ffeYsFGcTGJEM&!NrCr5o zx4>PZPIVFwvDIS_T@h9|FyC6_HWp=zOLlY?|rkDlJ_A%VO@ckSx#!FpO zm&!|$g|G+a(o|zJB`I%ZfkwyXPV-_;dh$ak1>7QAPk||=muQ|tz8^0AlsQ2Zj`i$RRi;X;Ieo)$h z?mU)Y2GniLost;?r`|Q|7xk4H^>y*|u2?_*i$D@1kuzi%Bmz-GY>5Vi2O1Ss5PgU- znLm1&xRbz-^^&}jf+=0fT7WN}%q=mFMLBhMFh-il2XLYdQ&TQ+igI=!!OvxYZQFVE zN0V-la&y1+$SZPkBqVb#Q4l-yw%)l>o9vgZdj%T^P(6z{1I9qINdEXXTyuAOs9 z0_#vKzC7)kkC)7+GYde5xPUlH0elkr-sC0_X?>YE=~EK3+teX69plp z{O@wlbgal8q%^;;;q5DPNM}lu>nI-r*ypxyop>Xwoejxp zFw*uZt!hyWcYJLI3_3M3+s}HoR8_N{Os`YxwWy01hW=lj&FVR-FI@d|w~_7$V;Y@H zDot~i*lb^I@vu-t6|Be_r(u{ZQqOB}1oUh^&IybXhyA4IPxpuq-|yWs;Zp}aiA&d& zw$B2vj1VCnPNh?<+4P_Soh7{E1cKt8r~O!dxI;heG(OAbbv~r#cNC5FJwB%AIkd{I z{$xI_7pc#7GIIpu74WGL)m80Tres`1B?eMj)wxypU?Ph8V0zk)=3J#UZD8^IzhWt( z-Yy||F_OcF%nSX^Y-cKsO+T||6u7JeiE$c5BB|HV!33&V!fYN&6D@s5M((U;geE6a z0{7>yrxWsAv`SU03j-b;M7g=$I4%~=B;`o11OgAC8X>teVV*iyI)Wq;J}k5CI`V|Z z71iC55S5qMCy;aueQv&y$sr$}=69KCfX+Cr4>3^?aXU8D@?5njgRvT{Qr|Q_YCm34g$@9oFWcoy-!p+D8Czrid2*IC`iE4aP_l-rnT3jQ#a_F%TSbX z_zCdaudWa?? zNzp+6%aEOvTdM20;-pT9Y*EVpy$evzZ7(@>hf?fFE?=iNF{jP9E!H!7=uy#!8ueZ+ zui|v;G2}ElI$&qJC>vVQD)TIjb4Y;FLb;{&UA52Pbj;0=oVphk_6f0$p}d@1(ZzYk z@&5|drF(=ZobVNW^bXo*$3_DR%^?cZLSz2C(T+ZN7n!iE`S&E1Jxem2-+2H%Td`Gg z&^5F!^q|tIX1ngSA<2AB{q8@S)vgzlkK*~L$Fem)3tS+CkpxkKc)Q@#%^za+$RJuz zIyoWHlz8aLvJ)ZwN}ye}@J2$$$gJvgbbDQf%*Ld7eDjn7m3O2KS|(pcDRZgNWa*>h zG7i*B>xq}^*SQdu;;UqH5_0R+wA<1#(iVA~3Ubg%o6w)Y2Dj)aX(80nbU7JFb#f_g zQfg~%Ee=Lu6mHolQ)N)WpDZx!14azc7-=p3Z}VW`=BQp?84^6uS=2r+5CuDmD^lbH z@FV7umPe__sGw6j6}6}T0c9tX=G4PhwnhSywoOmb_ch1S0);D1fgT_DrD5^AlCjuQ zo@o9MzEa6`i^{r{=Z67L6cXnpUi(rIJ-UD)ND`l&2o^b?179*97XqTbi@~>WT6Xys z_FkvE7hhe75tZI*NM(pHFW>AlMl;U4)VK2f{lqislMGofE1B3QSE|BM2!?=K<879j zS+*Ms8{OXOgm}ThzbF(UpXB^5EQYiC&?*d~s}Ab*=3I3bT$S7Qz+JQdIqKKniwIo6 zZ?&%OZM1_d($Ru>2x{HJbDy8{1JM-3Ds5;wg-qnP-+MxaC}oc8YMT_gsX@rfd7L7G zZ!sJXK#F%KjL(80i{K~-*mj{4nQXZM2MoR^jtODy$61hn3x<}w41bPk+hi{*_MFIU z8oQyxd;?}{!@*zJ(B!>~DR8QfVl;(Hz`{gMXTAIOSrN%By7Ryd8e#p&+QJz zayoK>tJwJZ|F^+HNH0k03_i1`kgp*rrYl0=hT?TK+wPvxVK3!*O7vt5y_X5jM{MR4 zBTpfGPSHn}7+N8AI~$BMRy*isH0ku0MMAF?(;wU{q*RIOA9kNEM--4XelbH*Wkc_=BOV)$l^cZY#0>`$$`jr38hTYm|vi~>zx`inS$d%Mi9uN#8p8A zb-ktEf?k(#B;OA0`cqtZXZo1n{b4|mQN{HzFy+mbJrkoEijh%jEdwTggo`oHF~^Bp z+6sh9C&sWg$DF@*HsQ6VT4c}Wu#HIEGxq1b(WgG+=V2|%llUk7Ne1QOxT3w{W#1uL zkK2ES4rt+6c&;Or8tW~UsPD$n*PvO|D|Q=yF-EcIuap?wZT#6MXI|6r$>p%S11;)m zg^2GuqNCwHL8LJ=p^SBB`V&}aeclE~Z8EM&!y>Z62=mgjiPkW8H*uGR-CUeka$&Ur ztPRzAYT1;ZuVH$yO&ZYAZJrTjC-Vo}!pm?GyA{n|`w8m*M2{t;Wvzo#-l{zGdfr$2 zV)VTzRy%5rEYtOUSP_go8#OZ}H{I=*L6u^Nj!1jX?3G!rzuwPC3W@Z{kZO@L8`uOi zY8K`wLr(Uo$|PT7);egHly?I&+$b>yZ!Ew4os5^0&)xFQ$UL5pGQs83|9~stbvMA$ z6HQWLaHl&+eFuR9;FyHUe~c;gp0>50Bl=AULz+FGkVcLZ5J*Im2q8sa0-Qq zrv`x`I-^-Jx1D$VaRR>B=-!h~xy;9Z7pJ%G-tQ3`h;JK~=&N~M?K01|E&Lxn_oj8(2Zx@kvz_uoG3HGq#(AdRI z(0qOvI{a|tX?4+Obqfw8Z$KC*=KO?&lu&ZSalBB|$Y(Cw{u@UMJrJ*JlgEc6a@%`# zlMCSszYi;*@9D+Q#22PzH^IKcnALqhEslHM8*ACZ?qnd9d-E8H0-g1j;{0-M5aee` zatW!s85u)oyybal;UATDyZ1FY9V{ob()yQpesA&wOwcsfEtuhRY!+!WS{!#9Oh3aa z4IZkSeG|sr8VmQ`lrqfSFdcPu+l&rTwqbm z3=D-z%T$-MML><@r4-t`J+h(XIvu?3N4mLICOFr31d{}#^OuYQdMB;CjGu{jDW0>R zMfoYO)rFH|Sk8KANG3h|oAvoCSlb+|l*QUNN6>*|j8BDphbO{yibX~w7ekac1^Bfq zwj#*?;^j%?SI`c#uG0$)+^-lSgZsGe2)f^z5q>AZN+vT!@_RrWA#WlH2}9xpEkc39 zD~1R7BXz_2vYFR$-JRFn%toCtl~uG*yzg-;LZz#y#xB2Mh=q<_Z)1~9>c+_H#i1_9uE+y$(s-(4?9fi+)dFO;c3AqkrQs2E^_jfZ53bM?3*I=ppiAxC_f7!8HY zZ)s;%>sRRMfpsV!RB>2Glx%@MAj)ruoh%~oH9ZJWjBC3Uj_V(!D^4=VDe32u#X}8H z(Q@)^9G**}6+{S}LlURHQcr3>sQy(ze4u#8#6(dZf%R4In1E?w^~fBl0sEO%c>==J z0Rh|&7H@}Jf7A`DuayQentwymdl#{gNuMrX_?x9GUULkXBsG^p^YbYUqzrU8v^4${ zk~UcF_Q{#!iy9bIQt%)4b)vvxG`x#m+Sg$lLhU^BcTpaU+i&RfH#A5yQRZai?Id*O z`4_tf%aIY9=(Q>LJJ`QX<|Cyy{zu^z9p2Fc%g^#>)Sy6#&ZxS- z|9|YgWmJ`2_ddE25D5VZ5lN+`yIYh-KUyILTNhg{d7j0?L?%Q_D*xD1>prCf*miyV_!0MO2+qr&xpYJVx74Vc ztJ#pqFw}1K(|IcHoNzmbHlBNPr-V_DKl!P$$KVJ#dTa=YP#eCLkkPMB$J4sav*lZs zpBLwBywtLe2_eh=eI}!)UXURE<%Ty(PRm<{uT-%7)sz^2lJs0Od3vdg_jnBx`%Z-5 zAfus__X&SsL+i-h!Qy^dW{RnY>KXQ`mG2wjlg`RiQ%t6j{FFCpOk?k33ddrfe!8*b zTN?;xxqG6Cvm_YQ9xv7mCSgzVFs?Wx4n2RanC zV?Jxn#?x4^*adT4e)7*U4@rE>LO=CNC(P!2s?!=}`qZ()+bBOUv>~FtO2&3T{^|Yd z=*ZInxc`UihqP==0z%1cV}_ZZ=SVB>u0(kzcEwx|ARfw0{+X7YpKv4AFB6N%apJTf zQ;b)yVHnCaJ01*8O1gCrN1XP#W||?d%k|KANGd|U;JT{qAjK&wve}U77>_Z>ut%rx z;2Lc-9;@}ysTa}l<{SM{Dm{#YtGJfzhCg$L7|vb~E!*1>cEd*^@fEqoN|H1KYT`aw zRZWLTo2Hz4=VL3+HW?)-#jr$&CJ`_KOEzdg{1afIPJ8K|Fxpe%j6W%BCq3$OImKlTZWHMPlwhU``x=goI_-abLSQfT`oX7mF-yfI)Vr_YMVrF)%;<>EP*hq?!IGu39o5^%!YfqvPv}yO<4Ki zxOm8O#r8L~vf4|@Q`yyq`j2=N)Q~?E-cnHh;q?){*^pAA!QcCykHaG3$qiY_NJ3+A zzJy{Zt6*(@orqE3Q@>Aj-WEak?&@L8eWDIcN*fyb)Igai5^b(Q@BEm&} z=U~A<89aAr?@2NK&|mK?@b|!aIk}Onyz=B?qd4NPT3&wzNh5o^V|>M-S<=ODMOp{t zupvI%^nmoa1;!(95Vlkswt~!7V71_nr{nI%AF!k(o-`*6^)A!-`*Sz>h^bhPT9CNY z;`-SyXYE(py&Et)pc){pD*oP=;gD8V4d>k-Ry4>VdH#nD8eeShm-QspxX-qu&wuxD zP0h61>5a4zOSFvdwoPjI<-4JyKY1mS*N{O@J+_pUF88hDWB<|`0{h=Xx9BH?0FYv0 z7|HU^EIvSo)re5@!(?9z-TRbcFQ{fZ_84AbiU}6G>$gu%%*gonMqhED*`KCbI3-G} zEXR%-q&5q?6GH4Wt(Qi8{^L=@+evTVt{vx<;VO-Q+b=cIXh_dQw<9KJ8em_BU`>R- z;W-XHCzTF;qiq-j1O)jdcFcGr6h)M;*pgNVtVF-SOjqwhh#i9PlngJLd)VZ(bRWOH zkyOyyr<9U;8Dlhr__@*3>V508`ey$1&pQQibp$H5xQ!viKPHDhSbieMd!zeijKULd zXM6IpH=ha~CnAB4gaLn)=0^$Fu z(Y@k?(VHtE!{k`^IgmuwTt#U=@;eje^nWjszqf~Uv-aY zKPF(IbV^^aU~kvX(TqdZm`|C&P(b$ zAe7R4w*LSpx3+VBiO6iV*FC{0zeV+CAwEgybv$@h_j|A3)eQl(M}AJi`E zgNCyz{_sf)-z39qa;SzjBpmZ2CIf9#MwgYL)E4XSjJ+Q2DK8 z{F0bU_sgai%y8m|NHe8Sn?gx0$DuvSMuS=(duon1PSuFQ661tFo)lUbEPr1ao0Vc$ z?(4S~X2YjalMqcKWsK$ApPHookMCWrB&Kyb46%`#g|&&_eN+syo`7TAwczJEr;~^n zLyQPl9d*!41zd|eZ8huUHS&i0O{gR?eQMu+N2Y9RL5)-Kg$TtuVbeIT7c=vIOZ|uG zlE>|Vs8x+kMtgs^au09UWV5gL8lzy}@97|gl}yCa68x=P)H<-0iSh)*Ih#vc^Kmv< zFHCABz66eTbgMik8=dLMw4!KUB1j&U2+mMh+NRzITkZi)>6oxHz z|9RoQG3vUVsq4Beh2B--qHxK@IFZRPW-@MplgoWA$gypIQxBJhIKJuQ^(^dp#(uXG zOs1uzLh^W;w-hr_COqU|5?gpuza;)Jo5Ca*H<;e}LsnA79m7slw?>+xeP{2_#tPNS zQs4X@!+Pa5gw~7bHCI0n!3BS_3|M4oxMA$5P}@spL{TZW#YDg_K_phsa?lEs=L9&} z!F9lm4{LT$Ll$YWKjY?8%YXOs+{lWxj=6^*)e)yD)8`I*687P%9LXjt*kR3Ke2a+= z-dfAcspx~7_+y&-FF#rGUKF30PwoEU<#jQJ-_`%YyX`%lKldL<0B>M8qMEBmPL??+z1d&w7 z9ap_#qcIKboQtCpWmbH6F(q$!*jvHm^*TrC8J=Rw;nm{{y~7Rz0>YSH&)YcX7!U&k zUkJU46tJ_7WWK1!YZ$}Ip`0W~%F3;U`y}e2@Xcz9Djg-CKgzy;etwhmf*)(Zj6$X( zw*`#iYH1a0Baa2j%}Nc^!};IciWA}~cOtZYqNS6cl$c9tnk;8=sWix@oP{fHxKeB# zI3+~R7M^mW%EYck1U9Lv#4ThDmOLr@jdX)MZ?zi-{RdQ-skus~LD3xOR1J-rSBbj3 zcUGTgc3{8!gh3ovLBHfm@tH*5e_7OeB`SJU-cFn0egDb$i$iw^_xK@Z$DGs+Q*JA7}l<=sQpRxJ+M9@R-41`}*K>-P-iFs~o$5yl@w%lEwu zG!&0j<$x=z{U{(1PxZW4jg#mgNua?s`s*^IE`PAZ{x5iQ5B*xvDC&9NZ60Y$6;3Ja`3lxjQDCok($k;b+Q_G4vW1?|K+x==j{w(9kRPPU((! z;%JwHUui+9h()eSI0b&WPMoB>^zTza0&;lwtGtp5&g1D$(-QIRe2eQO{a#yd#BZw4_{OU-ltt=a*K2%4l*3&DC=8*` z!B$@e?DLxs1#@3QifG6XRn*X%PWWm8^g_x@Hn3m~8-f=^xUzfLkv~gYt8;iy5>wOe z;)zlGh}e_g<{>GN=Wda`yy>dl7+~mZ&>u#7Z{U5?}0+WM>a! z+V50iy%%>O>Q2=j1zW{vc!Dp@YWB=S=y%Ocg2+K_Qo>^ZHkRHAnp{b$<4KbK+C`=lGmzF9}Nz5iJIbgJfNe~P)*L?*3TQ1%yy$RRM+@9@vljn-oQdxUP+e2u4RaAyu|!y ztaF3t?^IsO20~==wqez#QbDN8*6X85cB&N%zC%np6MEkrzY8&f1F%W$YIoAtkr!1D z{-GKH#WsmsAtrSqDnAQ-qcv5o$-E;LZTZ$z@I|a*_w=Ml)A6L8SMz##f`)_FPAwn3 zYHt?}g^XE8^_EJPq8DYLnXOMiV8>i3bne#~aYgfPUc>OQ;l6J`pi!TKd|$7gRBS7v zd*0IvVxIl%`UABG{5<*Y%Od5BSOpBlOTD~rd;&!AhXd>h9k%618N%6jrt&01VcAV7 zAP|PXscN8$84S&CdQaPOovC4VxfIQ!@aO5|V3&xZ_s9kz^JZDC+D*~u?$( zIsIc<%zlTjUBfWHS>D<>)MA-x__7}NFAO+!2P%E)hboQi112pE1`J5e6-H5pu5@ODuIWzQ zw@d;3^6J#p<`bkGo#~xxD0c47^sX%94(l;$BF24cmywtBethh89uh>^2f7GS-b$S8 z@HFEro3~EmDkM$5F@x)Z|-O4qtmTWZRO) z{|(brPLdQfWyY$ZCUJaxvym=(Zy?nAT(Hsc{88js`vPg_keN%)BB)wLFJPuO81#NW zBR|pD;^P>E!KukRh`Ky7W+ZW93O>Patw&$7Ldi+QXy^}bT|^{1x;KbzK9YDeu*{ccbk`xs&3xgcrV%*AI*h+_BFXkz3srFWSUr1%l|^lqiji( zh%LpIrY1$k&baO<{b&Q(zr$zZ@>Y$RR`YbyRLv6bhVsjbI7psL6*($VE(|>)WrU`j z-yaL-7*o1-GC8*XZ+vB-BB{ct@byqHmo%OngAe7pZqppkZj|DN2KhErs*en6y<64!gq)wb z$>~hat`_l2XiW14X@!$NW}wM3o^1I$7#cp6EK9%RF?Ne^Uo4US9jTIYZD2?tVZNcXK z5g+FZ<@{VoQFWW6;BEZtRY~{qyEmCl<}B`y|GKXuNSG@~MxB)_`{O!?=TkxPHs8g@ zjGgU;tBB5ee2HF%QgoGH`}^1QZ<4gY9#fGcMdhmPpg-d)1|u`w49)u>I6t6@DXo;;eD&m>d}meA5G#?Q&R zGj1i>7@&nyx6&iFDexpRIC%GIMyPvW%#y^C^Qh@-@3FA{mYc!HQHqI~iN-BuR>tdb zm>+276nF$u+83)N-Y1BD3IL5!si-X!7kvYlYK~o4 zeIqo68HE$l*hBBU;o1M;ncphHn(^4m^YB1NIv5VfLs;cT7RETJEnu2Aeh4AA(RaOG z&O%mRA0HfHVyW}{ZFFej#jMHo9{k1+!=X$G!YR~?-!!?;mOuchK8?Sx>pmgYaWlJt zPOIE9_Ll!+5em0EbP2bmtii@*OyNn*{dR0MlsfggxBq@sA@`f(OTSgwtVue(pktE2 zQ(n!!e5Zvb>w@5+-nj)#dicC}hp(0L0|g@7a#E6)iTF`KEw zzl>37$)lX9pMlm;#I1_Pb+ciIcU=?J5;4!lzJ|;?QDbYckx731fJdYw!m641X`j`C z4AL*VVk2O~QVcP$!@B$CqOJ2$+4Zm69QH#@hhN{L3Yn4!NUV8(>d#$Nt*$*{`7j^Z zgT?)^A<0;U#h*0m*_-HKNfW*os_`sZwlb+9YKdW?DV@X09qzxjMJ1$iZ(;pd{WHYX z$89{Gj(h2q{^LbpvEYwF?TVq?t>cZ8%cnHM z9%+iy{k>nqb9%;1Gomw6TIga70}jo;Jsx~{-dxq2RD1|v&9asT+G07CZaPJWr|OH= z-A7CWzBm@Q%$PV;G+d(YvQpw}aVZ&cxGRO{IQAwy{Imr9;hm0Udc4Lr6D6$?GZ`b{ zeH3bwt(6$5l2}5io89??w9Y8y#v;G^pZbz1Qq<;qg8Lo~UPxh7kQp((Q-;$>O&EWZ0jO^EA&R{Aa7eM% zFI{BFbL#T3h<7#)=t2&;QG)pU=Ob_Ni~1dL-M?5oByKjRkc#XLNy4QfdOAfuqUEyj z<%0i?KqB7bE)%5FbIMu+objMo8M_V~1M$VfpvC2&{n7h34vQvO%5QqR99nka6$*wL zL^p?)953#Ca!;ttj=PF*xmVQPr5srfGvcBk@?qmPbmIWYCK*|Iw)(%I%C+*eyl=Re z)~M-_=5s^kH$qquhK_-ewPu--v}XE;qUp4OCfn9Q!EXjn}#sLy*L#8(q3*fi`v%I2UU|W z^f+gFMXC&%|GSI}BacfGqq3DKK(544s6ECEC3{*c{2mT_-IA&?Y^^%HdMWg_Unb?8 zO)LhJg7B7cn{L%ZWJz!)Nss#NRz-Pvd9&A$0d?HOJEZ+AnNXA@ejKeL<<6)+%P_0Yi`>%nj#kE8{BfZ14 zPX}`7T-fgC14?cVfqKG&w>D@DzVc_C3!c9DpW6g;k*zTjnyHvCZ@UbLKTKrvzt@>P z#Zzt7+w&VklUT;3GD@!o*D{pxDEZv_t8sD(BZoQD>^DEV(mLm89YIB3DRHc8QUXUbt9d7Rf$xHY$Qy8DR~^F12$RZRGCOif)_m5LFbcG!*%J<2|Ir`SAp& z@w2H*wnSB-`ed3Yhhh8QJhGw=og%jH9F=?%5;||NaTCePR#<#rGky?t{^6J=((uu1 zxqx-$ZL*YMH{eQ_Ih)YJEEA57jzmxmckkNeu(0;Y?_)%ySSKoT1y!ZudoSqE&9VM0xd_HJ#VnJe%$Uo$y<%TRkx7 zlOJrFDwKLIMn<8|=0E?S%~MjJWpLAJ6GOfpO!dm9LsrM*ub!DBu1Ow2maw z@rYTYPZ{d9y){q-?F6;NpmuG@h^(=ZjM2-*Wb)wYqiC0eCa1-jaA_^_f_0{M1J4NI z?hdZ!4TtM2j}wyptfT)EmqBlmv{+*(;tm$0vH3H)Gt?X6cAoyzc-g;L7ri7#! zVywX1d=9s>4`lP!pS=2l?+IbqUb53=8n z;|*#Cu01XwyR|333yC4!@5jG&cSFP}L%ixDpWU2^-fUliw_HY(q%8NTh0K6E z7caS`(b35iBi{FwUiG&*naQMqA1%xqFu!$^){7clg-Oe=DV(nRjuL53h}v0n44bKC zK9tUaUnB9~tTp$BL~}E?K9ivb1dg?a9(vio^Je#Sy@!uqc^#9=wBV8|I*en->%{kL zt^JPA?h!U#QU)B-`n7LVjvtls7D|~idq}any%kF~#8R{LZhx?4I^n~d3*p?APP_gk zB2mJ=ktjQ&9JZ+1b<`$Z5xdU0m+*q*9jmrMy!B68K^?J8DS763dqI4pmb!zs&i15< zmN1vN;Q;WB(TkBunbXe`8ye@H5B|_$T4V4}bA|;BlEyv2I9nY;{vxoW2unBpwo}^Zet|#PLQ5AL$SgIZ)o&l;Im7B~oYBUn*t# zWiOQRAkYjWGBs39YQfBWC`F0X^EI<~X0n?{%#inql`dtj5e{1=E9t;k?Q~&)>_!fK63^35R;0?BoQeoT6T&w5k@E})Iqv0kesGIVSOOkn;6Tv zIU*i*jEmHIj>}#GE6g+!t{~EQNRqs0`m?{bhl!{z^FIaE%d4iy&x!S4GD*I3{6mMt z-R-Nb@=|(rM-xoNuGM&Tc1#V$e6M~Bo~W5OB$6>K*Ak4aU|~&>->+8a_uXMsWBv@h z#AKrNqXB=)OuiQjZ<9K^SZW!G*eZMY%T=bxxnN$lGRODx?F>5O+oxx0_k$*7<5Zco zJ$zKo4;A$bTeP@HQD~ZPG_Scr|2r=CP14c$x}DY}Ar3M;fa@Mga95XgD61a7!B0Gh zJ}i|P$Vp1+F)s+2s`*d7E$K&8g>iFL0OE=?2JJC>w8{vmX+z~QEvl6I2e(cxuIAcf zfI84hafXAk8|w~7ex@ETBmy_dO`WzQUYHvnUsR>$vsdmh61&cc(cdFyNU*eqH5sh1 zC0PR&hXWb`Bs4TMAoJIsuMq9D_^$rVY?=O1$GSgxd_6S*3r<$M)weRd#3W{)A?hV z>>~?p4mM2*)0$eimOOzKVoOR2RS&N=FXDFg8jy)- z*ljwB$K%$HaDiR9>f?pUQR^JOCJJJG^k|KPVq29EsKi0KK9ujC6DtwUqFfd=y9$6dyzX zhPuD=Yh_zh^L`UPd>Jb3@Z%1$f>NHpLUp_z$MN`vKj6EpPboqWd zD7EY6aAz{7q0{#GBO{jqriS%+mGQ;J=s8m;O|$1g-{wfhQ4oLl|yG?+)DUBvQ0)pEq9Nz!#o7Kp}7Qn|ti^!bKnZ{0ONYf~@ zl^HkR-<_*O=P4ap&vY{V&lmJ+tnOZ2T~)oEc~WNDP79dHA8~f)=N|;1;7~filR=G~6VMW?Sbk*b6VL$M~Sr|=zgRM6CzZGtgb;)&Py#8sUzZr&I{Y_lY(r~@seAIg2PlTpzdT(W=uQcR-I6vGAk`)K(IuEuqeO!rxRwC2h(3bDMF?YrN}4ZT#Mmh>S*YYvP` zUE7x#eE-6AvpndcOe{`YXy!cNZbGtmaL^B!qGBCha;*G!z8aIe z?c%XR^PW(dQ6ot>A&nfMii5(7q|@Pq<`#kx%T~}&KxPW4G*r9q>fDSh-`uTpT#i8- z=m8XUjS)IjVT$;pJ25d4gy#FZxe3(81k-mU>6%bB|EBXl)x6mhZtn!mgI!AjF7BGF z4#)kYCD$<+Y0d=}AowHyR3hY?5PB&N%e0Q@gr86 ztYoVajU0gFxSAxiw)KP$DZyLyEm7ZZT@Lg}J&&Odntcf7c*EasLp(r+1bAb# z&c%F!M+JlsgSx|s0PFd82bw?&+=b-+jcSWU2PRC$ zf3EpAcE2-VV%|4Q0K{A{Ki%BO7V90u*F^piNC~04fkm_HIdT)>eyT${H9B+`jF$L;W0~Pw+Zq96LH0!9t6!2;HTj3@Wh|?(%pHmyN_FOGI zAhqKK-s3RZ^yZd^#1R(q?--K9qd=vxu+4MH`T5PL+%i0FYzuAN!>PQO;LhmFtK4=b zy%ywuszl_mDlNdfR5^FJ+a7NU|gs%1p)mb;rxm9z4u>v@QjLXQKLH;fj~GfjEWyfxVgLM0THSc zBNtqcy`R`%Zi0XeJ&({FWI##E>;m4dQt-kq`43O?A81? zFxI_kfkw<)y?WJ<&rmYw_V#uM@aGtitgNi;Z!>*p(6Ms51$G#v|DoP{ZI01OR$fTmsdzK(wx`v?8qSX`vHQg_ilcZgVi*RKV zv!>PV&>QA{(_idaUK)C|H;fmQRA6iAdVS1nNq_l-X-790lUqS4OYN&k=wdVrwdU+i z1`FN}L(5Xa`*zg`K0*=hx?@YePghQhRsB!@&<{?Z(jFH6xVB{^>Wn{0X!?hdh)SS? zj-3Dn8|K>j`ZXY<7NUi=%=ubdQm*!!+09La7VjX8)6ab^jAfAV$YME)^>!)M0XV|qDQpl99Q`~$+p{269TSo_@f`k%o=;&&{^2`At%gl+}6 z&(JMzFL?9v$MbU!4*hRfXe}rZ=#3*$HJ%4Yn$zJ()N)Pp0P`bZE~P-lJHq6|n)sjT zg%v(~(f%|yq^o;Xtz-Ds_e;6UPe;SWscun!FP|d`;_t|}cCQF$lsW%&8k9v*JiS-y z_44I9^C#k4O7ysmpMGU6(+yaA2;tVNt)^?3jP*0b4!^UO=FiDWgZo)o33F?h_k936 zuMj}yD>&Po+XWg1Q`-{-f}!A(@RTb z?3FEAoSd9KrxVYUa&jsGn#1h}!~fm)Msr0N(7g8p%Qy-7DaIY|#qzJbtSW*+|o&h^#W;yuvyeStaer5g)zvKs{UF8(>wa_4mH^~!Sg8qp#aU7MZKd7k2OHA6G0zH24h7pyZ3b7GD(Y(l z;NLHZ?5)ye;rW-gHWM%s6NZkhMZja~0beZ!3^p+T+k2BT%ejv-UBdeqcLr*@GJHL8vR}=72z9auke>EaZ0+QAY}ozi=v&)r zT)&%6rEPwM^gy-l>(!PoC#iZ4XVTQU*WcCU*rcM%(M2G$46eGlePNFt5PWHAF`}fT z9Q^U)P$+P6QtQ>LS35x230HVBhE~#GV`Jk>Wu>l?Qe?d|a3ZDo`Em;j3lD|tQ{l3| z+Web=fRljzJddT7)tBmO&7GYcAbFGGDWs{TwQ3wSJUV*5DQ(tshepgz5k!ny^u*(( zCD~s<#48h@n3PoXNdEojiVAfwX{UfG%uG)go}Rj)FP@p1`K>t>CH|^gCsVdwywb)bH)>{qpte z6bQ7)KR$E6+9}xuE0~tR!&lFqy$5#9s02jbYQe(%8K1jlT%0F0BoLK-A4NEv$#m`c zViN*H1P*gxX*5j>`sr6G>w;U?o}aWrj^>aYu z-rCw~T3HnXRlZs%DxlY_T(|Ky!2|k!=a;Wup@(A|G&i0Rj5?dRxZ(Hj-$7@H=Ut&@ zp*OML@Rc`2Fb160MKDBzUfV(Gi4Pp9Hbr6_{i^m{$HhLveU@9qZc_XZF^nbVp1V)W z*@s*D%48gk`#`}E!lPINtJ&AFof-DQ{NQ&h7^owuVPws-Zu?NJ8-gjn2P3U_kTpME zu&xWPW!&u??q0Uvm-glBz8N_{(!`+bCyj~)*G5`{kt#S=nWFLzZ{KQZYQ_mKWvX3y zGH)VA^sCeAp=;;R)ZzDL$-kEW9yor1S5npN537Ghh#lvgNdobh!NI}fTYoH5jFYRT z;3?hH(I`oTxTiMPiAgaM0dGxh658!fVG?3W|siM+8UShip$^Ew$ zfH)ljlV(53v8;0>5uU1bloFoXM^Gh0&CherYL`=sF4D>`bFap#hWj>%Vvvy8fRded z>7GoQbok+c(}#0-bzw=#E|^#7sqIl`wFY;zL1yK(CrvFIISR4X5HfmqPPOyn-8Q5v zZwHB;TF(O$FpuAM1Y!X1uX3jsNfQU{-)N_P+zZVWCy8YITRZF{bhg2r;Z27k9E9H9 zUDi)?-&|gJP%KewGHf?;bxfx>EO7&0P9;8QI&w5mS(i+*8r)gVyV{*Wg%uY6_EkY- z=-^EK91qyiKxm_;p$BEq8fvS?rmx6FQ$lGI1RUG{@%&{*nxTOKa1R^UtWfQy%Z_x1 z6V^sDRBq}EtALe-mRY~?;h0>+!e>;-fi(VEj%8}r#|4`a{q#$o>#_SIX(hPX#buji z6H9cf(g}QUj|*WPS5%O6N4oDlv=0|be9f~RW`Wv()GQS*hAN?4F1w2pFM3m~nt+@L z#@(r(UO)n>GPBs^MqCy}_}yP$b^EMdD*Xx$9ZPOZ>1&@lK1duUHM6o_b(Bn+&O;&& zb{)^o>cuWRFWy6~Ev2kCU1HiT=b%-*zxKvfMz)5b#Y={NOrxY_ciQ1mS0(@0h4`O# z?rl|uP4i8dw6E*0 z3pmdu>Sp6Cr!npB+_VPA{q~(1C}!n!le~bn3-ZkBPj5?oTHo;8GQq*Yd8Ib=vyixh z_WOdFcF|pdAv+VhKeO%XBRTpp=Lhdn109Na#f`P=i`7-zcg|6t8!4>p$A{li0H{I{yKJ#K;Iu2-rKsN$ToC-h8 z@xQ#Jd&*NOOlPJo~Xj3|xmospaqZ;wvd^QV3Fx@h1&#_5RSHpaC zZf$Ipxe%9joJ#XWe-4?Y$8rCJi#N40leb&#@@98%c&-c|ig;e2=~zMyx+ANxR2oG% zn%M1Ua$`M;tQk2!a~ynE%v&j#L#Hi-8ePtG&ln3OYrol-J`tL_k`CE)wc?Vz=>NyN zqK)-vt$i=Jz?$QtzG7_CqQbD59%rKD=dbD_V-qr9o0zQbEpZbqDecRDsfTaRBEKrC)}w~Uhf5Ip>C!)xj<^wm zLl(D+M8EP`OCmRYYxw!8GEg6e+DQ+`=9Ug%j$x<5(bv}_qkT}1zspKjL$)T42DBr5 zmtzhH@h3G#ARP(z{hB^LK3zA37o-kInv7DE9!G#}cjip`m18A>a3*nP8hSkz&Q?QkDut-vC&U>}@rJ}_*ua!Mk3LfZvLaYb<9 zR8Jq@3&SkOUH1Eou;$da)i;^)xF#~CCw@Wy5T$@S=T5F1UFk6A-s+P2O(dp3Muq+n z*|P%8u;53I>F3r_@nm=UhQMl^M60ghMTfe0&6-*z&pVaD|C}vAf8m2L0`{TGbMx(} z+lZUiP4OFT^_mlYwT<5h=(_{!ea9mMIr+{|%aa_XjG^1eYa^q%S0W65v-T`4th^ox zOHwb-k62>;+g#wT9p|8?<1E3yNZE5fkuCGwSkoMxW?j&zY<6!f2NquVlUac`!bKKa zqbRc}xd#@#FUIIcB!>N%nEV<>V!8$Lu7#bn9Z-awEp-UBuY1egiOcQP7s4E5hr zT4mVc<@_ZY93-!0e`dL?=F6asP{Y zNT5k{i5bTK({kQw(q?K|Vz1(BK_x&IfXof* z?9AkES-*nZSUd8p^84$~;FtI5Kqw-I)lBR1)3(GGpnM=H zn^Fso6;OD5uiUs<$8~EoX-(vzutR1StV+o7H;2;I(w0;SI;ZoV%3&O&rOPHKC#Si< z$ZWgc0Zkp|ADiw9!xwa3eJXje5)$?FG5EqI(hQY*Bq%KGivYP>F_-lSkoD5iw17ay zhwlCLnFo*sIbnEGTwET2d~^Z$pThX+<;(5yJo$7H=X^$6P$YuR!J!YM_yw-`+3M^0 zB>FA{;`69&zc3uF>W+6ircnnoMcGu|$`GOeJVYm4c4rG-`MeBqIZI{WD)) zeRTuK6FW%S0iY=axwni|gD<(p@_}@H3nK)QTko`q*!G6&kv3F7Ywd1dT{8-A-t}xf za@e(7bZ>q))#SkOdwIWojwZV9tT}!sMqwj;$4t`^2#~fN9eK|jESKKZ_%);U^{X$n zgx3piZ*LcBmKg;MNbXpw--2hN@rx(@xQa0h{kT7Hu?(*4rH0NzsEIhF+xGBxP}vV(a}*E?kg%``PSS2|jai zaUsJCyW;_YFtXi`W+RFG4Dyt|@ckslF5`F*6@M-*)if|jM_)!5&Q!Yhey~E4;0^7| zH&VmlmppWv-F{b-Akd!0VFxn2uRz*9J^djFn8AMnI7ka*LV>*in!QH-Eyy@_=j(C& z@HoY%;PGr+ng_jS-Hc&!kFY~zF*;V4$AQSe*Dihv{=aNR#>g;@$4MefdH-y`sQLOn;;SOZ4AZTvr|L2Vyj<1m&okxb<=Ot!sGeL|!Xo^GVD^fCo++fXhhG362Yx$CRM z4OR`_E}AQWV46>beV+@Wx_SLyY`oPi|9ZtxC`M2IZHgvoUCaeXd8adQQsi46(b^gj z;|_Q(;_hUHfi5__K{wqXaZjM6Nlzw6>)`!&Q`>kv0iG#MllfN;sg*-A%L-MP@zcc4 z?w?D)7jZE>m|9@Kv9mzE{t}IS%C=~i?_+lzFhghiiD`?0zp$ zgPfM8%Nd=o^Z}=Vkh}-L!R`P{j;dy)l>Y@THNE>hGEgL#CT17lcjG{Xn&f>e3VD5X zIR?$nCjpzT(f@7-N3zXLSW9JgtwB1%ZFqGnVo0>q00vb_4qdo0cGnFlK z=qWH&qA>?Rn|$_)205VM{)zFI-^qy2N)S%1#Q=#~8lM6?IL{9_!A+uNG>R9Dy^z|fp!>hlMo!DS#bBW z%?!scxw$g!h&{(vXJFwzpm5-HT%KqLoDniBIA>IVMn4T|ZQ{_?Oq|9|FF{>brN_Z< z|D|K4N%ZFcp`!D=6s>{)L9p_S)hc@pv9|NU3^c#7--G=fDc=pPqxP9 zE{@iKpB1zmBzyO>mhDY|sHkYuLEE((K+FE*M{{Wb2qXa1{@DDPE=>pU5SYSJH;3J% zPnNf&QQk?($sWs5w;ZULf_Vu?JJ`T6;T2cj-G-#RlgB;IHGer6G_UM)ZtBFQj1%a zs83IqY74&ZfcWpIn8q_2gL1b2tFy0;i?Zw59b3c%1r-n;r4e`xIz1OD% zMFpf48A^r}29O-eWTcy+yN2$Lvu@w_J>PfE`+et}-|-KBI(66HdtKMHuC>>n@d<5W zEy4UTTw=5*~q~Zb_-@sRSxaU?0WU)SQu9D ze1Oc~Ol5V!Yyn)l_wevidVhr`Lo6}lqmFJyrePr>^HM`ae_VeQ;DxA*MPcNxiJ*S-8LJJ8 zYbcGEGpAk+Yg}zSA^bn5?mrbX;y&KP(v#Uc`yBrfrsn4lzDrV*K9(>z z3l~nL@t$oY*<@NZCEUHMVBdS`_D$XR;42;b&`7kZc?SWeP4LjlnEbg-3sS5WJ@tg< zNjVv-phFQKXF2(QsO!9{$(`sv>M9+&_&w-Yt`S6|F1%42v!nKhNtt~<%FximNh@?J zl_djPa&YrH62@xdGrsLGiUdIzYD!?&4KefW74n~@b4n^bF8_QdDe00alE^I@liDiyT44k2}ODUjnJkdjc?{FQZAx zi+e{&yS}M_%<6GTN0x#kLQ17)sau~a}vo;0T+$Q}^q=wP4{eMP>ne|un zM+vV2q+1ls4i#i}=RT~_zyQ)@dBQ}rXiZgz#u34+=>IMBMIZsuo(Pks*Qtg#`ljU{ zVgd2$JA)e>2wCb8OissV#ECX2_b%QYHQD|3ajbYewq=>pqOGIDp0?s!w6Qdv0jc$@ zsY&o$;gVJ3vcTUq=^VFZ^xcbKRICBMs!XJH62{@%A;eI@h9;D)Mk7=LF$EYDIV6B( zEIiu=9JWote%r&e2B-dYWmh`>vV^30qsi_fJ@nF2487?-e~;I=RL{PABN@Q`G8kCf zKdwT%40TX)5xY_u*j_-wEnrRi{8&q9$(SfgGnd5nNO42 z{lf~tUW{A|f>^-8vm6$;EgOpbN+7e8@t}hqveH6mDKG#n$k>b_Qm8E4@QUf@xlVy~4@9$K5pD9CFVE@De%jTqK zqcJcxU`jMO^U$FD?J9rJ3R}WA8X*P}z;*%4tjCWypH+PXcL4PYHK;hzx4sxv@flj@ zS%S$d`ufAyvqi%v1J7TRk&}}{aM|+SZvS2jfR-c3^90xsH7pE(Fw)q4@X*7D4=K?7 zhzv&cEQF>uS!jXj>Fw@viWE8&FiqwkGmaPdBoHnMJgrdZs*sTGhYuf&_aKITb{ww6 zc7Krk*Xn3s^cC9drm73~Ny>yr2UEpQ%K zf~_;ufPdc>|EEgRYqq^afducFK=7h~R}y`G>{KG~;5!G!T;5DhTA?*8Ez^K_=ey1r zfM>*GxZh_DgBVDjKYt!A;+(wp@GJac7Z_E5`?_q5M)90K?#b&5{Vsv<6<_k2z6Q=% zRXACArIFyf!ZUaMGb_e-W7Kou7kxhT@`0^I5bO!fR!G}3zrpmO2F&XZJO#Io1Q@=V zd?PKu%-RLxgNj#5$o{||Xz0i#NR>6!Ol+x7LWjA)Z&`!;uDYRt4D}1?;IF>b4`%0; zkNw+sf~9tgBKb|S5)&^Yk4$QJSc(-52p3uvqLP9G{^bSeO@bN}bSR<|09aBCU0hte zY1zywaPy`GknhkWFbe@Rj8!=5+P_{Yq@@G9**cG<`t9ukrze6jTfnL{^;4u903qTm zamodFfpt@&+$JUs6O+v+iNJ5+VP3rc;5Su8 zGH4({!<=GbVwAOrBruIxz;fWt?ysr`Uba}6FJPGxX_LDp1WlIJl$8VT1Yhc%S&IGt zX7B_7(LQdUQaUSx=}_4gzi~M2Ic(u6kp#8W7Bvnuj4O=qoP)5pMuJKxP;TOOIStGa z?wp;@=fHxq1yH^IOlSVUHO7Bs;^G+`pwSLfffP$n=Dvx;|FJMbf=cg6is@s!#mNi; zBAWUC3DZyiC87O8K%@IF2=u>x8c@vtmi^;{aaWD))uIPtKIQOs2B<#G`Zr5ZU`~=c zM}V^Ye0dV(KTBH3w?-rdR3uBspVRoyk^MivaXEZ)KT2?Ye#gLP`BtW6pQGLu&qr4D zq30JaN+!lt#>8f{RE{MVJwy4I`y&ve?J;}VYPGMAQPbyUDmmiB6ZMNm(Xixqc--xl z6ptS_?nw!j6i!-7p|==_e|t9SJnG&J1j3{r2s9|ODoos2a%qaH%(!O})bsvqKtT}m zO`CVeUYu%9z41DK5Fec9*~VA5m2&^0Fy|LiO?z{5q8jH9$-AUbSqn4`_?2sNkjGLTK$Y+toioL&gZPBj#;)Ar%>u5 zrj`e{+C*)q{hv`H`7r5VHVeEcps=@2l5znj39m`HQ5c8n?8ftbD7~k2Vk}h5Hhn3j zAx|R&S>#_Dnp(ZO8+e8?F!(6bVCAh&rso}PY@pTKyC=?292Au-4>*MjIb}cL+LidbBq`|ycCMiC7^umDRA;`gJLU6B**$Qky3Q7>})guLl7(JV%iy0h7*-Ib3f zZM(Q`HuT<-Lz?f-o0Xy90w^P3H*r|5Q z#`s%^q>u#x7##|3yHGYoM6d)g$Y&+PBw~sv@nrzzuPR_L?aw;ht(*Dv>#mhe$i>7= zKYqzQH~v<%#!42>b77;xYnZ_>3Eu50By6TGfdJNwkozcOPc+&U^%hyLIP(J76Q7l|%Y%@a&T1C5@{*LE8a=_~C zAu*-4^VFWhh47j|%Vt;o_N-e)3n&g)Sm&mYUtxigT_P=_+fekt>FW$6x2Q*m)<1re6 zK!LH^51)pHOwr9q;DI3F>fQ^!$9~}YT^CDUuxe(`R5MtnJ8)9{eQ|#*K zqr06KG_WkU$LqH^aAI?DTIYVNx!&n6%1-J!VAYu~mlCVvQtJ^1@&yq(>a9R^lqy7a zZeHHDJj)iB28lKIeOW*hS5{U+laQbZ^*{Y9yIXTp&;@XFcdeqo<;^LS#0yw4Ps8|m z%OGWB_NGNU-w`Kcr)lk96TbOSAw+G;q@uR{KAgyJTaC6#>_x+vEXU!O%x=3<(2O-4 z?6ih<#d5$qD9w1VxHTfg+qUZ_qOF5clEq4a3X;U!FJG`o_yr>Z-~o2AJE)0IMQ5p5 z|2lh&@`PeO@xi>Wv7oKNqDO9=r@}pZ|GugR+~f$;YZPhy=LHgb(VIfE(P>YS~P zUkvlDv}OEYbQnXa2cZJwC2;&^Lv!`d0EN$;JT@<3AsyZ$<2Ey!XWO)YD4KOqISda9|V1_gh(e$p41yUb= z3Wbn3W8Xul_!7sweZ+l(Cs6a2U$KAvM|}B~erNiZIfBi5XiZ?xiuUe zb6%WeiXNibkJ{Y-gh_J60Q`HAk&%<8E{NTEu41noe57FHO^3(^GjAn|4R}Bb=ywx1 zw?1`!{STEvOc~SD)Bg$wo-tEIPpFGrfpiQqJ)we46M!C~^Z;wTw3H7k6_Rg2fG!Rk z^KF9W#l%D(>;dAq@T?8Y-OlyvZ49SQP? z@BwWD5qv1Qx6v?#0A|Q=tbmB757!ngXls!E=6xPuL>>+fdC0J63o}Yix*!Cnr`UM~ zdaPP4jnx4%S4e3o&dLB$Q)RAnDF_iDLqloi+)SOFoII_-B}0cCt=EyngxI5Zfv;K) zeEn&Hali=4;U|fZ_(0AC_%rD^_Kq-PJLpO)po?h(c4e9^wr2KM1%Ys;r&trb;c6-> zDuk0?VeLJs`YVxy2)97^m{(@({Yq}9hK=l~?NkObU;*n|1F(;l^dVkyA9!r`qTEb* zZ-K;Yy}3+DPfJ@!t^nB-SI!sRg{( z9cH@nGk$C?T zUPo1OBMBKg5EQ~BR$-I=t;N8na71Bx;t&$LCI zk>YA=%dGei9T(@62=rDHW zW}vDn>nq^V=H}#7W2F%pRHF}&)lyS?*BH%-(?dljb#)n(f#&H6zVkoi08xVb%Dk{E zZMsul{adldemhu5z!0#Ddc#TWHC6wvb~jKF4xlEe7|lSdi8|Qw~{dE zd9C|PXzTyVa*>9du;wAUNc!i`t;mQ4i+}A__?pAX+%AGg)o~G6eEG7mCKt z2!~V?&`cz=T?g`nP@lV5%92>$vcA6lW~ESh0yG@fN9H&HA_3p+_2I}RVCiLREWZNa z;O$Va58i(^l4Fp^3(HDfZEZ_npWJ+WD(9I`zFZ;fZ4v+_Z=m~m)*JS=8?0<>TFch@ zGJyS}Gb`L3OCdilCbHzaynT)E7n`xEQ=PP5+(>2VV3tt%%oypvp@|GU-Nfz}JakKe z!3`O{dn&f>lUa5Kn9KsZ-t>J34zn83{8&KJUXY5oDBTch%r-+xRX`DCX?KD-qyI7eOI z8Tidk*9rA&!AwEU6mUg$%RP8TctDqwfp1SiZ`4TXr;HbZcOO!_)<0jJfgF_R;36mh z++t!SEo4S(MwEB->1iU}w7dKMyBd4DJ6I@Boq&hfGTHVgC?lb&1SY3&Jf_6e62uH- zx`~X(d_qKZxANOBjyJvg>$VC}d@RFI#g!5D^%9cdgrN*&+^tX$p8{V?gDN6qW>{HU zv*k;EGf-2Dhdlx?pwI&TkV<>Wi$V$OgYZke|FJ)0@NYssX)cPhcC8+e%%7BUg34Ul zf&XXtvE=*xDrk0~gCQezJ?(Gcx5vJnoOl8{ERqdP&&tvPz`(8&GqLla1Bx7xJY*Sc zqJfw+V4aA7lG!1e11K9Xp@wRim=K_}h#NvYvf#pPrL7DG)PO8e5MsdG5f5)q-iX_% zMZYY8IyTs==f?$<|1h{cS)oG6PLvG5S#$7fCr<8auZA>?U2M= zNs-z?Lps;^JHH-u_Ev&10l?x&)v=d9NH|Ft%gwTABj*goqAg0me{{4g( zr* zU%!5BRxbwb3jnf!zouNaVGoLBpio{rNQD~6mUAmG5-F7o_N|bu6mT9>LJIVHzcixe zsRo5Vii5{sy>Z3%-@{!zcy(3Ai($wj5g8G$k^Mywh>lY!G;g>xw`ReH4DPNk=E3B> zOnVV}+G`f{(J)4n?&D+qo~E16jP`?j0m!+dv0MPG$!Z8{23C@d{#DkY~Uk z>@U#@hH-fq>s}Y7e7!YPzxi%2kRYp;$w!>Hj2Kq{!nMP88BiqF*(P@wwY=ZkZ~wbz zkW4`IXc+k+!@{I8=ASW-XW{?F#l<+48`kYtcR&z_uY7<~XBlK|@86kqQ%yHY9-Zy; zn$u=!^z3tmIfm$hkW&*+^Vo;-{PUdu8492d>-C*a9Lv$tEb)+WbvL=^eG^{W9HOsC zh20_cB&@QRD$F4b`Q4h0(r#$qR{PtKr+8xv&AIqGHVNq zfecMld@v|MXihFJby#c!ZM%>RJDi_1%fNHtCG!_hNdcK?G&~7zE-s2oERq^mP*hxj zO5sr@+B^VNHZhp4Oqaz zj&2TM`!UmO{taF%Y@pE$P(uKuQ)DfznPUpPqYcx)w6ye-iZir42SGJ8K0dx??g%O_ z9D*FOs4h=5^-9iFMfu2g9>P1t_>Ty~Uoq0z`BJA}trebdW+VwocDOe8{TC&0hi($C z9a_yg{EKjmX)f*lYz`PnD*XHq_K%o5@}M6%B!5<6;WRPIkcM8=ghEQjO2m;welE(;ChlRvveeh+UTP^S;#OnYl z79wEeaHv$3NIQm-R)vR*IeqkCI3)X_8r8Ex_RO1KrH(Mi6Vy1<=8_Je1|Ix34Di1+ z+=ZTg^9vFoqTAI#74ODQ5&N#uRY3v~3QK9gsXy_Ez2nf+Z(8(t#LoYhgaigs8z4y^ z6o*{n?}J1L-cZX9eu)&s_SBym{j9W99PW7r&_>APB&bakNmWy$P@?0+EJ)5k{T4FS z0U{**()A%+Q6cGlsJj|h>B5GE0SjCdc0lY?8ki*GH(*5oYAETB zLJep>f5iSD%=W*$E_nO@R!||!f7G@9+DlQDl7*la(SjWZ_zopi|J#GtpEzEr`W4*u z$abz(n7sN5d%j)g46g1e3nWiN2Za~JLxp9SoJiLe6<`CY2l%TUSmJyTt!fi45H#EM zBy998MiVU5J~$1UXb2f<8sYBS0Cn|go7cy;51-w$5d)nCOuVo5RYS|JK`Fs%@s7vX>R`+AccL=70!$7QJH~p2=*RcE0xDSka?X1ck|m(Q#8%!dJfxr%OEwSMws;h5D{abDY4CsKb$DM!%#jn*;54J=1qi!?bK~ zo$LIBBLD6S{57)qBnk`^E%`fZkjQ9Xvtt+|W}STl7LkGzH(GwO3bhONNPV{T%}GrR zx$^pETN*yiIOne7ka%}>i>U4A{21Fg>&Rb$asUsh@+~#jM5>o}BlV@%i=KbI0+8^*^W|LRoG6i14w4Pi&Wt=P9>r zUV1F8W;G?WWOL&2EtB~-4GmlUIw~od-T~k058h&XQD}G6HGwwsS-tRNBfHyvg5%Kr ziTAVxeDl}7gbc4=+zGmFLQ?-bJWIM_SD~hMN#_36-tOtiLrNwU6iMIgH%mZlQR2q) zXvU7sIlXW7)b+t=0DXmPi0W#9(xbkifAq0=8Bkg)OhfE}u^O zlmwNTk{wc)8FROo(dJ5-+snj_8nSQgf=nM3uV=&9Q$EaViTm=FX=3f8ni~eA1}WNx z)*tPQKGc&9#wG4H>Fn#XE~OI^8hkpiH)sFBdM2oW=%a{{so;7ul0Seh*MY@rK%^bt z@acu9$&}$%d&#H#cDCAn@)I&;tI*3tv$_6Cchl`Y^#gqztphDrzVTfP#R`7A_Qd$5 zBTUJ?{PMMV86E52&a^VI_T{@ZIaysVgqild?$<4x`?6G%z4-9w>ONJ4&egEI+`6RvUKmM4&5w4GfpvX{PS-KyvLDWc4;=_YBcQ1RU1qU;pLIh!+75q+)vv8 z=eEdA^d@P1VXHz(LH_0?GmgD`PxN!5B+tUKHsE&s<2masy{f6^lI2{yCT0lhS0Zb7 z^XKc4LfmrkOEO_o;(N|gdCFO_%cn&vq(V;2uT$I5GW}+E3xBXE%R_opH8OHEsvS>% z#z(!nSRszCn111+m#4yu4}WzBjCX73A_sYSCdu6P3%zJqIb}I0*!-Kb*_5|IN=^38 z2vvsK;s}qMZ3gq&slD}nPS=c^s;e)}rVfwlccwg4{2){%sTnj%xI$iwO?Ks1*vPP1 za#NBUn_d@b*nbW4%RW+i7gVP))1o4$v#z96^RSck#)FR&Y(gQ4c>DZJpEQ%pjv^nI zvzEyWtG>Ky5^yZPkg~iClSj39H>^)b($@LEs2|m{pZV#af1TfDrR?)Sv6ll|XO;y+ zpJwTv9p4+wyQ&kSm1(i`#Bgo8%Aqz^l`4j)`-ZRY*tuRkm!=p%Q`V))qT#8Y%&!~j zbIzmX{-rX7V^O%}w2ZN9uA_=IR(sPeP;H1pg~bT}GMldUJ?Sc%meD+}n7w&xU+Tl{RC9SiQ8XRtV-!-P!4;RFFO@;~Mnwf;NtjSwbvM(<`xxOzk$sK)A zo!p8(NVu9I^ROhWRI6T@HSAhyP=&Q6uJ+Xo{OqN7jgXW?NjNI#GW1B&U9$?ny?S5! zTHrcqzx-vFL1u)hN%)fA&k#nAr=bIF6~(phl(lE8J&b4GDqr@v^LbC|#4B($p|Zb5 z2<-H!Ogyo@g5?iuv~=Xb7?sf6!kw(PFShAinF2N1Mu*Ocm-l8c<_{_#-V(W|TM4?Vs zp=EDr(NIU@r0+M2-SBF|ebg)#{IVh!zGuDjHcD$>%W~<|{KhG_BJ~)@XfHoq?tidyTKB#$4apWYY}w>>ue*1Na z_Trye9})z!^WQR6DB{WwuX~&MNy)Z~mYa$x?E)dD<4o}d z!i;_T@XV|2^Cj)=d7l;Hh=uGPnRVPIB?A9As zOGF!<{T;i+wN^h;qPb?p`llkHgG6>$+K?+RnU%wDg0aO}G6Xr9Ro&c;i5K4v7s`6sPBGEV-!ueQlZWz6bQ(3;K~)Kfq! zgc;%`n6PKw@T(I@Ypu^G$l6*Srk9(G{8@i2hPT9ZalAT5H0{gq$b;jt%L{2t6)z)& zeP17}VF@nObRwC}PU@A!T*n)clg%hR0vHZ=Z$FjASK;y1nRfh>$Kin6f3*j9Dij2( z*0@k4~ztRKZc_%mqo=TY=@s7DcA0qD2euVe6swJht-It~Rgovp!rxlK4iQ(UHDL0xG4iq?y^(J@wCB|WZ6_G?UdbGgk$-~rj7g@ zRg!W{V6aZ1Ddxkyi9}PaKJWJK;V!;Gny_YwFvNvzo5Tb zFNuV^fvD?|;Z5$KjW6LlANNqmyw4RwbFfvIh@A3+Q|$L9a`{YjS#cSv_uA)PXxST1 zCtEkn;H2x^&VRNf%Q~n<3(%w~Fw%4NP5JPtpRYF!WCcE2-{ZQ0 zj^!p*`=rmz>l5LKUzs_$D-LhzJmCnq7^OzLK?;)FFB~aaQ5#V9B6~S~?pMlNzA~|z zkZW6oK{*T&W|uEOfy zgA1+4FD7AUD&B0B2T+@uw-l7!)?g8v6!-kh^oz<^Xx5I!?L%&DE~5- z-g81#S1v1PYvHCnl%fIVqfnP$Yw*2Rj6PeXVQX(T@kk~`u0E(_%DnpU@Z>fvZ%_Uj zWoWy6RfOMvjny?Io8n|s*q`Fc+N~ui&G+LDTj%OJAzoZDTq`XyN(L>PmgFYOZ#AkN zH-LVut09`c_SH6t5EeciGNX95`Vt&%o{YY6A^K>n@-HoeN*`|-l22V2yRpv5I%61i z;XBP|eNFoq_SLn~huIZ#Jd89YII6Q>82QhnQJoe{>*lVyBa?C{dzNSCI$K0@#Das| zMN6KST((_|eRBM!)KltIy)8I;yx%Dmaw?xiRw=>KNev5PcV{vwjbItv;p$$svWI-9U5u9d8~?dowU2&`jdLQE)43p z-e_e{U4_pYFCs=2ciRM}v?viBePVz2U6~YKYtNc zYh=3_@qH$VEfYO-cUhsq$+FXzOJVll+Z<3DP@Y4w^@7FAb}UX~Z;w3Bx>-zmrQ9si zO;SjyVD`%VCZRgJb4=(JPI-jbZlT0ve~61|&9EBB-&Ej;O}{C2T0DI&s>cAkxhd0h zB{w&v(2(H)vhsCsM3$<(l?mZ7y!~Oxc4qt5WjC$K!<62?)0Wl*C*2jx zA*M2~H+Cmfo@ifkhS#R7)MEj;_^*;<fyo8Fda zdBau_dfMiLfXb**MTV2S?9L*G_K=ci%0Yhf3!e%@OFfHoAK_F+_6JbU(NmBI)=10h zbfwBMR45jEG1!aY7*lb0&{{t)w%crKHl$S3)GdjzJH=Jj*j=Rxr!X!Y(n7&dHXoKZ z#^j3cw_)*k7!`hBj3nr@Y)<2SiL(Y7)Dj6l*~kxhJsn>QMHM$M=aOX8a2MR%q$jr} z0-K44%&W6y3nNWQX}Inyypo+_m)*j)`jW|bcdqB5Bwc#EtM8(`-`*4= zc%f`gCmB0-MtJF6v$oA5m^|fEnmMU}@m5x0f4SDaR`%U8=Z$8G@gPw`p)apzf!CJ9 zP4*FuTp8z$_Id+ilIJG%6szi*_L`MKHY@*D1B&YpVs2T@{=&F3y*jdiA5{cIZ3Egu|H+-=-Xn?4r;;(Hp;iwvvhPHPn#IH1U zpB1%a4%ba#8(MQhPZw0@s0?@(U$Ja*BG=Zjxy=gW`mniCIR>oYj5hecDg#p4xAtLUe!WvYa?0lv<)t6?9kbK6SEb^kegKPT(Ds=j|8Ri*S&ZmuaU?*1FPP~xMlA;GhL_eKF%M1hDYJE%VL*xyX8%b z=!ji?^*4z1pETAOPrb$|&P4XEjjFg>ZyYS?&@;JAgiWYOkH$nXie zi&>wl;Iei@Gc_4jcC6r)aX%@>ip3cuSqg4uNK=S6tauA`rRj=Bu6aE^s2e?=orR1> z7Mr`Z*I6$-=efV-e!R~y;Y~xKQ1YzAw}wnpA=Q~D*W5Cw&dIW4mq>YVI#jVST;Zkd z{WBVGA2b;427S5z=qmh%!&{~e!>SgI-J#~09XvT(*Fj>QbB~i^nEo`kcb5`0pX)R%~^K;qrg3jK5JV>K-0aLHE{Udr4RD9WzyDoxXbZ;4CK& z5tyPvCj}!*bG-!ZRLV}y;rS`Zqa5H{t!#QOALQH6>tRPrq~tSkF_?^J2A}0QXg2$* zeRx)h+3x*OV_P9ohLde4lSz%y`f?lZ*L6|&Zu~fV+69%M_oe-@;mVbxyulcwnjhlq zu2Z4YRm(wJ?<;)+LRA(gca4{c#xa)qC|cauBzQss&} zSG)M3%d_fxSuG{^=N$BD+jwGEyKpUW_UTrGOO6POcc7--*R}bpH-a!o%#&}}(oZn! z6Rfo3FT2up!ApoT6DnHaJgk22#vntP>h>S(tmmNb7E~XPVRSBRjJVxTzgvo3{Mo0$ zxizXkTc^avKYjY9U8eK(@*^V%1N^ESLz6iC#j@d`2!nk4kACaJ_HpM*`08kQYrfRV zE`I+ce}FB8oLdCNPAF7qNR|EktP^L=$&5?=suS-|U3JswP@Q{k7CIh$DJDTm)rIb= zA@WSTW5aS?e3bfD^(WIL=}|sP)301xO4>_ynU*nkVk)l6Zv!d0!a$H$; z&BJ6pwd306)1sK62-?aSp}@e~zQ~OeZ?KJa(JS(ethFqE-eFmfcb7FJ3T(}v3OB4E z>mqw4_)oRvo00s463ohR9oI-2;)(0jBJVPB8&CdTMQ%w^90^Yu(JQm(c8<2^ag81h zB?rY!m)xrM{Yw9bKPk^{1nyE@PuVzQnzFz=f34|;xo8J7g%Q3xFVc5KPfB@2TuNnH zyouhycr|%$`Kt)>Xy& - -@interface RHPreferencesWindowController : NSWindowController - -//init --(id)initWithViewControllers:(NSArray*)controllers; --(id)initWithViewControllers:(NSArray*)controllers andTitle:(NSString*)title; - -//properties -@property (copy) NSString *windowTitle; -@property (assign) BOOL windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; //defaults to YES - -@property (retain) IBOutlet NSToolbar *toolbar; -@property (retain) IBOutlet NSArray *viewControllers; //controllers should implement RHPreferencesViewControllerProtocol - -@property (assign) NSUInteger selectedIndex; -@property (assign) NSViewController *selectedViewController; - --(NSViewController *)viewControllerWithIdentifier:(NSString*)identifier; - -//you can include these placeholder controllers amongst your array of view controllers to show their respective items in the toolbar -+(id)separatorPlaceholderController; // NSToolbarSeparatorItemIdentifier -+(id)flexibleSpacePlaceholderController; // NSToolbarFlexibleSpaceItemIdentifier -+(id)spacePlaceholderController; // NSToolbarSpaceItemIdentifier - -+(id)showColorsPlaceholderController; // NSToolbarShowColorsItemIdentifier -+(id)showFontsPlaceholderController; // NSToolbarShowFontsItemIdentifier -+(id)customizeToolbarPlaceholderController; // NSToolbarCustomizeToolbarItemIdentifier -+(id)printPlaceholderController; // NSToolbarPrintItemIdentifier - -@end - - - -## NSViewController Preferences Protocol -
-
-// Implement this protocol on your view controller so that RHPreferencesWindow knows what to show in the tabbar. Label, image etc.
-@protocol RHPreferencesViewControllerProtocol 
-@required
-
-@property (nonatomic, readonly, retain) NSString *identifier;
-@property (nonatomic, readonly, retain) NSImage *toolbarItemImage;
-@property (nonatomic, readonly, retain) NSString *toolbarItemLabel;
-
-@optional
-
-@property (nonatomic, readonly, retain) NSToolbarItem *toolbarItem; //optional, overrides the above 3 properties. allows for custom tabbar items.
-
-//methods called when switching between tabs
--(void)viewWillAppear;
--(void)viewDidAppear;
--(void)viewWillDisappear;
--(void)viewDidDisappear;
-
--(NSView*)initialKeyView;   // keyboard focus view on tab switch...
-
-@end
-
-
- -## Licence -Released under the Modified BSD License. -(Attribution Required) -
-RHPreferences
-
-Copyright (c) 2012 Richard Heard. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote products
-derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- - -### Version Support -This Framework code compiles and has been tested on OS X 10.6 - 10.8 - diff --git a/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.pbxproj b/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.pbxproj deleted file mode 100755 index 967bdff11..000000000 --- a/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.pbxproj +++ /dev/null @@ -1,556 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1330B770156DA90C00F2E3ED /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1330B76F156DA90C00F2E3ED /* Cocoa.framework */; }; - 1330B77A156DA90C00F2E3ED /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1330B778156DA90C00F2E3ED /* InfoPlist.strings */; }; - 1330B787156DA9A300F2E3ED /* RHPreferencesWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1330B784156DA9A300F2E3ED /* RHPreferencesWindow.xib */; }; - 1330B788156DA9A300F2E3ED /* RHPreferencesWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 1330B785156DA9A300F2E3ED /* RHPreferencesWindowController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1330B789156DA9A300F2E3ED /* RHPreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B786156DA9A300F2E3ED /* RHPreferencesWindowController.m */; }; - 1330B790156DAA4D00F2E3ED /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1330B76F156DA90C00F2E3ED /* Cocoa.framework */; }; - 1330B796156DAA4D00F2E3ED /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 1330B794156DAA4D00F2E3ED /* InfoPlist.strings */; }; - 1330B798156DAA4D00F2E3ED /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B797156DAA4D00F2E3ED /* main.m */; }; - 1330B79C156DAA4D00F2E3ED /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 1330B79A156DAA4D00F2E3ED /* Credits.rtf */; }; - 1330B79F156DAA4D00F2E3ED /* RHAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B79E156DAA4D00F2E3ED /* RHAppDelegate.m */; }; - 1330B7A2156DAA4D00F2E3ED /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7A0156DAA4D00F2E3ED /* MainMenu.xib */; }; - 1330B7A6156DAACC00F2E3ED /* RHPreferences.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1330B76C156DA90C00F2E3ED /* RHPreferences.framework */; }; - 1330B7AA156DAAEC00F2E3ED /* RHPreferences.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 1330B76C156DA90C00F2E3ED /* RHPreferences.framework */; }; - 1330B7AB156DAB6B00F2E3ED /* RHPreferences.h in Headers */ = {isa = PBXBuildFile; fileRef = 1330B77C156DA90C00F2E3ED /* RHPreferences.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1330B7B8156DAE8D00F2E3ED /* RHAccountsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B7B6156DAE8D00F2E3ED /* RHAccountsViewController.m */; }; - 1330B7B9156DAE8D00F2E3ED /* RHAccountsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7B7156DAE8D00F2E3ED /* RHAccountsViewController.xib */; }; - 1330B7BA156DAE9A00F2E3ED /* RHAboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B7AF156DAD9200F2E3ED /* RHAboutViewController.m */; }; - 1330B7BB156DAE9F00F2E3ED /* RHAboutViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7B0156DAD9200F2E3ED /* RHAboutViewController.xib */; }; - 1330B7BE156DF56900F2E3ED /* AboutPreferences.png in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7BC156DF56900F2E3ED /* AboutPreferences.png */; }; - 1330B7BF156DF56900F2E3ED /* AccountsPreferences.png in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7BD156DF56900F2E3ED /* AccountsPreferences.png */; }; - 1330B7C4156DF61B00F2E3ED /* RHWideViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1330B7C2156DF61B00F2E3ED /* RHWideViewController.m */; }; - 1330B7C5156DF61B00F2E3ED /* RHWideViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7C3156DF61B00F2E3ED /* RHWideViewController.xib */; }; - 1330B7C7156DF9C600F2E3ED /* WidePreferences.png in Resources */ = {isa = PBXBuildFile; fileRef = 1330B7C6156DF9C600F2E3ED /* WidePreferences.png */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 1330B7A7156DAAD300F2E3ED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1330B762156DA90B00F2E3ED /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1330B76B156DA90C00F2E3ED; - remoteInfo = RHPreferences; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 1330B7A9156DAADF00F2E3ED /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 1330B7AA156DAAEC00F2E3ED /* RHPreferences.framework in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1330B76C156DA90C00F2E3ED /* RHPreferences.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RHPreferences.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1330B76F156DA90C00F2E3ED /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; - 1330B772156DA90C00F2E3ED /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; - 1330B773156DA90C00F2E3ED /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; - 1330B774156DA90C00F2E3ED /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1330B777156DA90C00F2E3ED /* RHPreferences-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "RHPreferences-Info.plist"; sourceTree = ""; }; - 1330B779156DA90C00F2E3ED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 1330B77B156DA90C00F2E3ED /* RHPreferences-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RHPreferences-Prefix.pch"; sourceTree = ""; }; - 1330B77C156DA90C00F2E3ED /* RHPreferences.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RHPreferences.h; sourceTree = ""; }; - 1330B784156DA9A300F2E3ED /* RHPreferencesWindow.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RHPreferencesWindow.xib; sourceTree = ""; }; - 1330B785156DA9A300F2E3ED /* RHPreferencesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RHPreferencesWindowController.h; sourceTree = ""; }; - 1330B786156DA9A300F2E3ED /* RHPreferencesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RHPreferencesWindowController.m; sourceTree = ""; }; - 1330B78E156DAA4D00F2E3ED /* RHPreferencesTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RHPreferencesTester.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1330B793156DAA4D00F2E3ED /* RHPreferencesTester-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "RHPreferencesTester-Info.plist"; sourceTree = ""; }; - 1330B795156DAA4D00F2E3ED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 1330B797156DAA4D00F2E3ED /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 1330B799156DAA4D00F2E3ED /* RHPreferencesTester-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RHPreferencesTester-Prefix.pch"; sourceTree = ""; }; - 1330B79B156DAA4D00F2E3ED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; - 1330B79D156DAA4D00F2E3ED /* RHAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RHAppDelegate.h; sourceTree = ""; }; - 1330B79E156DAA4D00F2E3ED /* RHAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RHAppDelegate.m; sourceTree = ""; }; - 1330B7A1156DAA4D00F2E3ED /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; - 1330B7AE156DAD9200F2E3ED /* RHAboutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RHAboutViewController.h; sourceTree = ""; }; - 1330B7AF156DAD9200F2E3ED /* RHAboutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RHAboutViewController.m; sourceTree = ""; }; - 1330B7B0156DAD9200F2E3ED /* RHAboutViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RHAboutViewController.xib; sourceTree = ""; }; - 1330B7B5156DAE8D00F2E3ED /* RHAccountsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RHAccountsViewController.h; sourceTree = ""; }; - 1330B7B6156DAE8D00F2E3ED /* RHAccountsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RHAccountsViewController.m; sourceTree = ""; }; - 1330B7B7156DAE8D00F2E3ED /* RHAccountsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RHAccountsViewController.xib; sourceTree = ""; }; - 1330B7BC156DF56900F2E3ED /* AboutPreferences.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AboutPreferences.png; sourceTree = ""; }; - 1330B7BD156DF56900F2E3ED /* AccountsPreferences.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AccountsPreferences.png; sourceTree = ""; }; - 1330B7C1156DF61B00F2E3ED /* RHWideViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RHWideViewController.h; sourceTree = ""; }; - 1330B7C2156DF61B00F2E3ED /* RHWideViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RHWideViewController.m; sourceTree = ""; }; - 1330B7C3156DF61B00F2E3ED /* RHWideViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RHWideViewController.xib; sourceTree = ""; }; - 1330B7C6156DF9C600F2E3ED /* WidePreferences.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = WidePreferences.png; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1330B768156DA90C00F2E3ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B770156DA90C00F2E3ED /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1330B78B156DAA4D00F2E3ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B7A6156DAACC00F2E3ED /* RHPreferences.framework in Frameworks */, - 1330B790156DAA4D00F2E3ED /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1330B760156DA90B00F2E3ED = { - isa = PBXGroup; - children = ( - 1330B775156DA90C00F2E3ED /* RHPreferences */, - 1330B791156DAA4D00F2E3ED /* RHPreferencesTester */, - 1330B76E156DA90C00F2E3ED /* Frameworks */, - 1330B76D156DA90C00F2E3ED /* Products */, - ); - sourceTree = ""; - }; - 1330B76D156DA90C00F2E3ED /* Products */ = { - isa = PBXGroup; - children = ( - 1330B76C156DA90C00F2E3ED /* RHPreferences.framework */, - 1330B78E156DAA4D00F2E3ED /* RHPreferencesTester.app */, - ); - name = Products; - sourceTree = ""; - }; - 1330B76E156DA90C00F2E3ED /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1330B76F156DA90C00F2E3ED /* Cocoa.framework */, - 1330B771156DA90C00F2E3ED /* Other Frameworks */, - ); - name = Frameworks; - sourceTree = ""; - }; - 1330B771156DA90C00F2E3ED /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 1330B772156DA90C00F2E3ED /* AppKit.framework */, - 1330B773156DA90C00F2E3ED /* CoreData.framework */, - 1330B774156DA90C00F2E3ED /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 1330B775156DA90C00F2E3ED /* RHPreferences */ = { - isa = PBXGroup; - children = ( - 1330B77C156DA90C00F2E3ED /* RHPreferences.h */, - 1330B785156DA9A300F2E3ED /* RHPreferencesWindowController.h */, - 1330B786156DA9A300F2E3ED /* RHPreferencesWindowController.m */, - 1330B784156DA9A300F2E3ED /* RHPreferencesWindow.xib */, - 1330B776156DA90C00F2E3ED /* Supporting Files */, - ); - path = RHPreferences; - sourceTree = ""; - }; - 1330B776156DA90C00F2E3ED /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1330B777156DA90C00F2E3ED /* RHPreferences-Info.plist */, - 1330B778156DA90C00F2E3ED /* InfoPlist.strings */, - 1330B77B156DA90C00F2E3ED /* RHPreferences-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 1330B791156DAA4D00F2E3ED /* RHPreferencesTester */ = { - isa = PBXGroup; - children = ( - 1330B79D156DAA4D00F2E3ED /* RHAppDelegate.h */, - 1330B79E156DAA4D00F2E3ED /* RHAppDelegate.m */, - 1330B7A0156DAA4D00F2E3ED /* MainMenu.xib */, - 1330B7AC156DAD2E00F2E3ED /* Demo Preference View Controllers */, - 1330B792156DAA4D00F2E3ED /* Supporting Files */, - ); - path = RHPreferencesTester; - sourceTree = ""; - }; - 1330B792156DAA4D00F2E3ED /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 1330B7C6156DF9C600F2E3ED /* WidePreferences.png */, - 1330B7BC156DF56900F2E3ED /* AboutPreferences.png */, - 1330B7BD156DF56900F2E3ED /* AccountsPreferences.png */, - 1330B793156DAA4D00F2E3ED /* RHPreferencesTester-Info.plist */, - 1330B794156DAA4D00F2E3ED /* InfoPlist.strings */, - 1330B797156DAA4D00F2E3ED /* main.m */, - 1330B799156DAA4D00F2E3ED /* RHPreferencesTester-Prefix.pch */, - 1330B79A156DAA4D00F2E3ED /* Credits.rtf */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 1330B7AC156DAD2E00F2E3ED /* Demo Preference View Controllers */ = { - isa = PBXGroup; - children = ( - 1330B7B4156DAE7E00F2E3ED /* Accounts */, - 1330B7AD156DAD8900F2E3ED /* About */, - 1330B7C0156DF59200F2E3ED /* Resizing */, - ); - name = "Demo Preference View Controllers"; - sourceTree = ""; - }; - 1330B7AD156DAD8900F2E3ED /* About */ = { - isa = PBXGroup; - children = ( - 1330B7AE156DAD9200F2E3ED /* RHAboutViewController.h */, - 1330B7AF156DAD9200F2E3ED /* RHAboutViewController.m */, - 1330B7B0156DAD9200F2E3ED /* RHAboutViewController.xib */, - ); - name = About; - sourceTree = ""; - }; - 1330B7B4156DAE7E00F2E3ED /* Accounts */ = { - isa = PBXGroup; - children = ( - 1330B7B5156DAE8D00F2E3ED /* RHAccountsViewController.h */, - 1330B7B6156DAE8D00F2E3ED /* RHAccountsViewController.m */, - 1330B7B7156DAE8D00F2E3ED /* RHAccountsViewController.xib */, - ); - name = Accounts; - sourceTree = ""; - }; - 1330B7C0156DF59200F2E3ED /* Resizing */ = { - isa = PBXGroup; - children = ( - 1330B7C1156DF61B00F2E3ED /* RHWideViewController.h */, - 1330B7C2156DF61B00F2E3ED /* RHWideViewController.m */, - 1330B7C3156DF61B00F2E3ED /* RHWideViewController.xib */, - ); - name = Resizing; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 1330B769156DA90C00F2E3ED /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B788156DA9A300F2E3ED /* RHPreferencesWindowController.h in Headers */, - 1330B7AB156DAB6B00F2E3ED /* RHPreferences.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 1330B76B156DA90C00F2E3ED /* RHPreferences */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1330B781156DA90C00F2E3ED /* Build configuration list for PBXNativeTarget "RHPreferences" */; - buildPhases = ( - 1330B767156DA90C00F2E3ED /* Sources */, - 1330B768156DA90C00F2E3ED /* Frameworks */, - 1330B769156DA90C00F2E3ED /* Headers */, - 1330B76A156DA90C00F2E3ED /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RHPreferences; - productName = RHPreferences; - productReference = 1330B76C156DA90C00F2E3ED /* RHPreferences.framework */; - productType = "com.apple.product-type.framework"; - }; - 1330B78D156DAA4D00F2E3ED /* RHPreferencesTester */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1330B7A3156DAA4D00F2E3ED /* Build configuration list for PBXNativeTarget "RHPreferencesTester" */; - buildPhases = ( - 1330B78A156DAA4D00F2E3ED /* Sources */, - 1330B78B156DAA4D00F2E3ED /* Frameworks */, - 1330B78C156DAA4D00F2E3ED /* Resources */, - 1330B7A9156DAADF00F2E3ED /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - 1330B7A8156DAAD300F2E3ED /* PBXTargetDependency */, - ); - name = RHPreferencesTester; - productName = RHPreferencesTester; - productReference = 1330B78E156DAA4D00F2E3ED /* RHPreferencesTester.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 1330B762156DA90B00F2E3ED /* Project object */ = { - isa = PBXProject; - attributes = { - CLASSPREFIX = RH; - LastUpgradeCheck = 0460; - ORGANIZATIONNAME = "Richard Heard"; - }; - buildConfigurationList = 1330B765156DA90B00F2E3ED /* Build configuration list for PBXProject "RHPreferences" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 1330B760156DA90B00F2E3ED; - productRefGroup = 1330B76D156DA90C00F2E3ED /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1330B76B156DA90C00F2E3ED /* RHPreferences */, - 1330B78D156DAA4D00F2E3ED /* RHPreferencesTester */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1330B76A156DA90C00F2E3ED /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B77A156DA90C00F2E3ED /* InfoPlist.strings in Resources */, - 1330B787156DA9A300F2E3ED /* RHPreferencesWindow.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1330B78C156DAA4D00F2E3ED /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B796156DAA4D00F2E3ED /* InfoPlist.strings in Resources */, - 1330B79C156DAA4D00F2E3ED /* Credits.rtf in Resources */, - 1330B7A2156DAA4D00F2E3ED /* MainMenu.xib in Resources */, - 1330B7B9156DAE8D00F2E3ED /* RHAccountsViewController.xib in Resources */, - 1330B7BB156DAE9F00F2E3ED /* RHAboutViewController.xib in Resources */, - 1330B7BE156DF56900F2E3ED /* AboutPreferences.png in Resources */, - 1330B7BF156DF56900F2E3ED /* AccountsPreferences.png in Resources */, - 1330B7C5156DF61B00F2E3ED /* RHWideViewController.xib in Resources */, - 1330B7C7156DF9C600F2E3ED /* WidePreferences.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1330B767156DA90C00F2E3ED /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B789156DA9A300F2E3ED /* RHPreferencesWindowController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1330B78A156DAA4D00F2E3ED /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1330B798156DAA4D00F2E3ED /* main.m in Sources */, - 1330B79F156DAA4D00F2E3ED /* RHAppDelegate.m in Sources */, - 1330B7B8156DAE8D00F2E3ED /* RHAccountsViewController.m in Sources */, - 1330B7BA156DAE9A00F2E3ED /* RHAboutViewController.m in Sources */, - 1330B7C4156DF61B00F2E3ED /* RHWideViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 1330B7A8156DAAD300F2E3ED /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 1330B76B156DA90C00F2E3ED /* RHPreferences */; - targetProxy = 1330B7A7156DAAD300F2E3ED /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 1330B778156DA90C00F2E3ED /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 1330B779156DA90C00F2E3ED /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1330B794156DAA4D00F2E3ED /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 1330B795156DAA4D00F2E3ED /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - 1330B79A156DAA4D00F2E3ED /* Credits.rtf */ = { - isa = PBXVariantGroup; - children = ( - 1330B79B156DAA4D00F2E3ED /* en */, - ); - name = Credits.rtf; - sourceTree = ""; - }; - 1330B7A0156DAA4D00F2E3ED /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 1330B7A1156DAA4D00F2E3ED /* en */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1330B77F156DA90C00F2E3ED /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - SDKROOT = macosx; - }; - name = Debug; - }; - 1330B780156DA90C00F2E3ED /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.6; - SDKROOT = macosx; - }; - name = Release; - }; - 1330B782156DA90C00F2E3ED /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "RHPreferences/RHPreferences-Prefix.pch"; - INFOPLIST_FILE = "RHPreferences/RHPreferences-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = framework; - }; - name = Debug; - }; - 1330B783156DA90C00F2E3ED /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "RHPreferences/RHPreferences-Prefix.pch"; - INFOPLIST_FILE = "RHPreferences/RHPreferences-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = framework; - }; - name = Release; - }; - 1330B7A4156DAA4D00F2E3ED /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "RHPreferencesTester/RHPreferencesTester-Prefix.pch"; - INFOPLIST_FILE = "RHPreferencesTester/RHPreferencesTester-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - 1330B7A5156DAA4D00F2E3ED /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "RHPreferencesTester/RHPreferencesTester-Prefix.pch"; - INFOPLIST_FILE = "RHPreferencesTester/RHPreferencesTester-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1330B765156DA90B00F2E3ED /* Build configuration list for PBXProject "RHPreferences" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1330B77F156DA90C00F2E3ED /* Debug */, - 1330B780156DA90C00F2E3ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1330B781156DA90C00F2E3ED /* Build configuration list for PBXNativeTarget "RHPreferences" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1330B782156DA90C00F2E3ED /* Debug */, - 1330B783156DA90C00F2E3ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1330B7A3156DAA4D00F2E3ED /* Build configuration list for PBXNativeTarget "RHPreferencesTester" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1330B7A4156DAA4D00F2E3ED /* Debug */, - 1330B7A5156DAA4D00F2E3ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 1330B762156DA90B00F2E3ED /* Project object */; -} diff --git a/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100755 index 77fbfff55..000000000 --- a/3rd_Party/RHPreferences/RHPreferences.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Info.plist b/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Info.plist deleted file mode 100755 index d0113cc9f..000000000 --- a/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Info.plist +++ /dev/null @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.rheard.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSHumanReadableCopyright - Copyright © 2012 Richard Heard. All rights reserved. - NSPrincipalClass - - - diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Prefix.pch b/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Prefix.pch deleted file mode 100755 index f3593592c..000000000 --- a/3rd_Party/RHPreferences/RHPreferences/RHPreferences-Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'RHPreferences' target in the 'RHPreferences' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.m b/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.m deleted file mode 100755 index 1590c9ca7..000000000 --- a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.m +++ /dev/null @@ -1,522 +0,0 @@ -// -// RHPreferencesWindowController.m -// RHPreferences -// -// Created by Richard Heard on 10/04/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -#import "RHPreferencesWindowController.h" -#pragma clang diagnostic ignored "-Wassign-enum" - -static NSString * const RHPreferencesWindowControllerSelectedItemIdentifier = @"RHPreferencesWindowControllerSelectedItemIdentifier"; -static const CGFloat RHPreferencesWindowControllerResizeAnimationDurationPer100Pixels = 0.05f; - -#pragma mark - Custom Item Placeholder Controller -@interface RHPreferencesCustomPlaceholderController : NSObject { - NSString *_identifier; -} -+(id)controllerWithIdentifier:(NSString*)identifier; -@property (readwrite, nonatomic, retain) NSString *identifier; -@end - -@implementation RHPreferencesCustomPlaceholderController -@synthesize identifier=_identifier; -+(id)controllerWithIdentifier:(NSString*)identifier{ - RHPreferencesCustomPlaceholderController * placeholder = [[[RHPreferencesCustomPlaceholderController alloc] init] autorelease]; - placeholder.identifier = identifier; - return placeholder; -} --(NSToolbarItem*)toolbarItem{ - NSToolbarItem *item = [[[NSToolbarItem alloc] initWithItemIdentifier:_identifier] autorelease]; - return item; -} --(NSString*)identifier{ - return _identifier; -} --(NSImage*)toolbarItemImage{ - return nil; -} --(NSString*)toolbarItemLabel{ - return nil; -} -@end - - -#pragma mark - RHPreferencesWindowController - -@interface RHPreferencesWindowController () - -//items --(NSToolbarItem*)toolbarItemWithItemIdentifier:(NSString*)identifier; --(NSToolbarItem*)newToolbarItemForViewController:(NSViewController*)controller; --(void)reloadToolbarItems; --(IBAction)selectToolbarItem:(NSToolbarItem*)itemToBeSelected; --(NSArray*)toolbarItemIdentifiers; - -//NSWindowController methods --(void)resizeWindowForContentSize:(NSSize)size duration:(CGFloat)duration; - -@end - -@implementation RHPreferencesWindowController -{ - - NSArray *_viewControllers; - NSToolbar *_toolbar; - NSArray *_toolbarItems; - - NSViewController *_selectedViewController; - NSString *_unloadedWindowTitle; - BOOL _windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; - -} - -@synthesize toolbar=_toolbar; -@synthesize viewControllers=_viewControllers; -@synthesize windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController=_windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; - -#pragma mark - setup --(id)initWithViewControllers:(NSArray*)controllers { - return [self initWithViewControllers:controllers andTitle:nil]; -} - --(id)initWithViewControllers:(NSArray*)controllers andTitle:(NSString*)title{ - self = [super initWithWindowNibName:@"RHPreferencesWindow"]; - if (self){ - - //default settings - _windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController = YES; - - //store the controllers - [self setViewControllers:controllers]; - _unloadedWindowTitle = [title copy]; - - } - - return self; -} - -#pragma mark - properties - --(NSString*)windowTitle{ - return [self isWindowLoaded] ? self.window.title : _unloadedWindowTitle; -} --(void)setWindowTitle:(NSString *)windowTitle{ - if ([self isWindowLoaded]){ - self.window.title = windowTitle; - } else { - [_unloadedWindowTitle release]; - _unloadedWindowTitle = [windowTitle copy]; - } -} - --(NSArray*)viewControllers{ - return [[_viewControllers retain] autorelease]; -} - --(void)setViewControllers:(NSArray *)viewControllers{ - if (_viewControllers != viewControllers){ - NSUInteger oldSelectedIndex = [self selectedIndex]; - - [_viewControllers autorelease]; - _viewControllers = [viewControllers retain]; - - //update the selected controller if we had one previously. - if (_selectedViewController){ - if ([_viewControllers containsObject:_selectedViewController]){ - //cool, nothing to do - } else { - [self setSelectedIndex:oldSelectedIndex]; //reset the currently selected view controller - } - } else { - //initial launch state (need to select previously selected tab) - - //set the selected controller - NSViewController *selectedController = [self viewControllerWithIdentifier:[[NSUserDefaults standardUserDefaults] stringForKey:RHPreferencesWindowControllerSelectedItemIdentifier]]; - if (selectedController){ - [self setSelectedViewController:(id)selectedController]; - } else { - [self setSelectedIndex:0]; // unknown, default to zero. - } - - } - - [self reloadToolbarItems]; - } -} - --(NSViewController*)selectedViewController{ - return [[_selectedViewController retain] autorelease]; -} - --(void)setSelectedViewController:(NSViewController *)new{ - //alias - NSViewController *old = _selectedViewController; - - //stash - _selectedViewController = new; //weak because we retain it in our array - - //stash to defaults also - [[NSUserDefaults standardUserDefaults] setObject:[self toolbarItemIdentifierForViewController:new] forKey:RHPreferencesWindowControllerSelectedItemIdentifier]; - - //bail if not yet loaded - if (![self isWindowLoaded]){ - return; - } - - if (old != new){ - - //notify the old vc that its going away - if ([old respondsToSelector:@selector(viewWillDisappear)]){ - [(id)old viewWillDisappear]; - } - - [old.view removeFromSuperview]; - - if ([old respondsToSelector:@selector(viewDidDisappear)]){ - [(id)old viewDidDisappear]; - } - - //notify the new vc of its appearance - if ([new respondsToSelector:@selector(viewWillAppear)]){ - [(id)new viewWillAppear]; - } - - //resize to Preferred window size for given view (duration is determined by difference between current and new sizes) - float hDifference = (float)fabs(new.view.bounds.size.height - old.view.bounds.size.height); - float wDifference = (float)fabs(new.view.bounds.size.width - old.view.bounds.size.width); - float difference = MAX(hDifference, wDifference); - float duration = (float)MAX(RHPreferencesWindowControllerResizeAnimationDurationPer100Pixels * ( difference / 100), 0.10); // we always want a slight animation - [self resizeWindowForContentSize:new.view.bounds.size duration:duration]; - - double delayInSeconds = duration + 0.02; // +.02 to give time for resize to finish before appearing - dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); - dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ - - //make sure our "new" vc is still the selected vc before we add it as a subview, otherwise it's possible we could add more than one vc to the window. (the user has likely clicked to another tab during resizing.) - if (_selectedViewController == new){ - [self.window.contentView addSubview:new.view]; - - if ([new respondsToSelector:@selector(viewDidAppear)]){ - [(id)new viewDidAppear]; - } - - //if there is a initialKeyView set it as key - if ([new respondsToSelector:@selector(initialKeyView)]){ - [[new initialKeyView] becomeFirstResponder]; - } - } - }); - - - [new.view setFrameOrigin:NSMakePoint(0, 0)]; // force our view to a 0,0 origin, fixed in the lower right corner. - [new.view setAutoresizingMask:NSViewMaxXMargin|NSViewMaxYMargin]; - - //set the currently selected toolbar item - [_toolbar setSelectedItemIdentifier:[self toolbarItemIdentifierForViewController:new]]; - - //if we should auto-update window title, do it now - if (_windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController){ - NSString *identifier = [self toolbarItemIdentifierForViewController:new]; - NSString *title = [[self toolbarItemWithItemIdentifier:identifier] label]; - if (title)[self setWindowTitle:title]; - } - } -} - --(NSUInteger)selectedIndex{ - return [_viewControllers indexOfObject:[self selectedViewController]]; -} - --(void)setSelectedIndex:(NSUInteger)selectedIndex{ - id newSelection = (selectedIndex >= [_viewControllers count]) ? [_viewControllers lastObject] : [_viewControllers objectAtIndex:selectedIndex]; - [self setSelectedViewController:newSelection]; -} - --(NSViewController *)viewControllerWithIdentifier:(NSString*)identifier{ - for (NSViewController * vc in _viewControllers){ - - //set the toolbar back to the current controllers selection - if ([vc respondsToSelector:@selector(toolbarItem)] && [[[vc toolbarItem] itemIdentifier] isEqualToString:identifier]){ - return vc; - } - - if ([[vc identifier] isEqualToString:identifier]){ - return vc; - } - } - return nil; -} - - -#pragma mark - View Controller Methods - --(void)resizeWindowForContentSize:(NSSize)size duration:(CGFloat)duration{ - NSWindow *window = [self window]; - - NSRect frame = [window contentRectForFrameRect:[window frame]]; - - CGFloat newX = NSMinX(frame) + (0.5* (NSWidth(frame) - size.width)); - NSRect newFrame = [window frameRectForContentRect:NSMakeRect(newX, NSMaxY(frame) - size.height, size.width, size.height)]; - - if (duration > 0.0f){ - [NSAnimationContext beginGrouping]; - [[NSAnimationContext currentContext] setDuration:duration]; - [[window animator] setFrame:newFrame display:YES]; - [NSAnimationContext endGrouping]; - } else { - [window setFrame:newFrame display:YES]; - } - -} - - -#pragma mark - Toolbar Items - --(NSToolbarItem*)toolbarItemWithItemIdentifier:(NSString*)identifier{ - for (NSToolbarItem *item in _toolbarItems){ - if ([[item itemIdentifier] isEqualToString:identifier]){ - return item; - } - } - return nil; -} - --(NSString*)toolbarItemIdentifierForViewController:(NSViewController*)controller{ - if ([controller respondsToSelector:@selector(toolbarItem)]){ - NSToolbarItem *item = [(id)controller toolbarItem]; - if (item){ - return item.itemIdentifier; - } - } - - if ([controller respondsToSelector:@selector(identifier)]){ - return [(id)controller identifier]; - } - - return nil; -} - - --(NSToolbarItem*)newToolbarItemForViewController:(NSViewController*)controller{ - //if the controller wants to provide a toolbar item, return that - if ([controller respondsToSelector:@selector(toolbarItem)]){ - NSToolbarItem *item = [controller toolbarItem]; - if (item){ - NSToolbarItem *new_item = [item copy]; //we copy the item because it needs to be unique for a specific toolbar - new_item.target = self; - new_item.action = @selector(selectToolbarItem:); - new_item.enabled = item.enabled; - return new_item; - } - } - - //otherwise, default to creation of a new item. - - NSToolbarItem *new = [[NSToolbarItem alloc] initWithItemIdentifier:controller.identifier]; - new.image = controller.toolbarItemImage; - new.label = controller.toolbarItemLabel; - new.target = self; - new.action = @selector(selectToolbarItem:); - return new; -} - --(void)reloadToolbarItems{ - NSMutableArray *newItems = [NSMutableArray arrayWithCapacity:[_viewControllers count]]; - - for (NSViewController* vc in _viewControllers){ - - NSToolbarItem *insertItem = [self toolbarItemWithItemIdentifier:vc.identifier]; - if (!insertItem){ - //create a new one - insertItem = [[self newToolbarItemForViewController:vc] autorelease]; - } - [newItems addObject:insertItem]; - } - - [_toolbarItems release]; - _toolbarItems = [[NSArray arrayWithArray:newItems] retain]; -} - - --(IBAction)selectToolbarItem:(NSToolbarItem*)itemToBeSelected{ - if ([_selectedViewController commitEditing] && [[NSUserDefaultsController sharedUserDefaultsController] commitEditing]){ - NSUInteger index = [_toolbarItems indexOfObject:itemToBeSelected]; - if (index != NSNotFound){ - [self setSelectedViewController:[_viewControllers objectAtIndex:index]]; - } - } else { - //set the toolbar back to the current controllers selection - if ([_selectedViewController respondsToSelector:@selector(toolbarItem)] && [[_selectedViewController toolbarItem] itemIdentifier]){ - [_toolbar setSelectedItemIdentifier:[[_selectedViewController toolbarItem] itemIdentifier]]; - } else if ([_selectedViewController respondsToSelector:@selector(identifier)]){ - [_toolbar setSelectedItemIdentifier:[_selectedViewController identifier]]; - } - - } -} - -- (BOOL)validateToolbarItem:(NSToolbarItem *)item -{ - return item.enabled; -} - --(NSArray*)toolbarItemIdentifiers{ - NSMutableArray *identifiers = [NSMutableArray arrayWithCapacity:[_viewControllers count]]; - - for (id viewController in _viewControllers){ - [identifiers addObject:[self toolbarItemIdentifierForViewController:viewController]]; - } - - return [NSArray arrayWithArray:identifiers]; -} - -#pragma mark - Custom Placeholder Controller Toolbar Items - -+(id)separatorPlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarSeparatorItemIdentifier]; -} -+(id)flexibleSpacePlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarFlexibleSpaceItemIdentifier]; -} -+(id)spacePlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarSpaceItemIdentifier]; -} -+(id)showColorsPlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarShowColorsItemIdentifier]; -} -+(id)showFontsPlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarShowFontsItemIdentifier]; -} -+(id)customizeToolbarPlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarCustomizeToolbarItemIdentifier]; -} -+(id)printPlaceholderController{ - return [RHPreferencesCustomPlaceholderController controllerWithIdentifier:NSToolbarPrintItemIdentifier]; -} - -#pragma mark - NSWindowController - --(void)loadWindow{ - [super loadWindow]; - - if (_unloadedWindowTitle){ - self.window.title = _unloadedWindowTitle; - [_unloadedWindowTitle release]; _unloadedWindowTitle = nil; - } - - if (_selectedViewController){ - - //add the view to the windows content view - if ([_selectedViewController respondsToSelector:@selector(viewWillAppear)]){ - [_selectedViewController viewWillAppear]; - } - - [self.window.contentView addSubview:[_selectedViewController view]]; - - if ([_selectedViewController respondsToSelector:@selector(viewDidAppear)]){ - [_selectedViewController viewDidAppear]; - } - - //resize to Preferred window size for given view - [self resizeWindowForContentSize:_selectedViewController.view.bounds.size duration:0.0f]; - - [_selectedViewController.view setFrameOrigin:NSMakePoint(0, 0)]; - [_selectedViewController.view setAutoresizingMask:NSViewMaxXMargin|NSViewMaxYMargin]; - - - //set the current controllers tab to selected - [_toolbar setSelectedItemIdentifier:[self toolbarItemIdentifierForViewController:_selectedViewController]]; - - //if there is a initialKeyView set it as key - if ([_selectedViewController respondsToSelector:@selector(initialKeyView)]){ - [[_selectedViewController initialKeyView] becomeFirstResponder]; - } - - //if we should auto-update window title, do it now - if (_windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController){ - NSString *identifier = [self toolbarItemIdentifierForViewController:_selectedViewController]; - NSString *title = [[self toolbarItemWithItemIdentifier:identifier] label]; - if (title)[self setWindowTitle:title]; - } - } -} - --(void)windowDidLoad{ - [super windowDidLoad]; -} - -#pragma mark - NSWindowDelegate - --(BOOL)windowShouldClose:(id)sender{ - if (_selectedViewController){ - return [_selectedViewController commitEditing]; - } - - return YES; -} - --(void)windowWillClose:(NSNotification *)notification{ - // steal firstResponder away from text fields, to commit editing to bindings - id curr = self.window.firstResponder; - [self.window makeFirstResponder:self]; - - bool give_back = true; - if( [curr isKindOfClass:NSView.class] && ((NSView*)curr).window == nil ) - give_back = false; - if( give_back ) - [self.window makeFirstResponder:curr]; -} - -#pragma mark - NSToolbarDelegate - --(NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag{ - return [self toolbarItemWithItemIdentifier:itemIdentifier]; -} - --(NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar{ - return [self toolbarItemIdentifiers]; -} - --(NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar{ - return [self toolbarItemIdentifiers]; -} - --(NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar{ - return [self toolbarItemIdentifiers]; -} - -@end - -@interface RHPreferencesWindow : NSWindow -@end - -@implementation RHPreferencesWindow -- (void)cancelOperation:(id)sender -{ - [self performClose:sender]; -} -@end diff --git a/3rd_Party/RHPreferences/RHPreferences/en.lproj/InfoPlist.strings b/3rd_Party/RHPreferences/RHPreferences/en.lproj/InfoPlist.strings deleted file mode 100755 index 477b28ff8..000000000 --- a/3rd_Party/RHPreferences/RHPreferences/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/AboutPreferences.png b/3rd_Party/RHPreferences/RHPreferencesTester/AboutPreferences.png deleted file mode 100755 index 40f79f249e0117202d15814918860c74bc28c55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4457 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 vW`3`{0iJhlUQQf$ZF=bKjR|jl_g}~ zULv0?8BEr}kX{sHe4)ap-tX&qpXa;JbM8I&JiqfhzjOb%C)Ui=kQXct1^@uO7$bd) z{S)%j4jS*Ou%|$Y5^}VW2_w`IxI!5f~^t!!j zE-fiHJ?)aU)R6(*vl}{3i$hEs>|k85t|-IN4o9i>X?5=L~4W25p_R`aM>{pP$boiB{1U3K!BGb|~Bt&+WR;&JqD zvdf{Wn0gw=SMOzH_Q}kwUZVCqs^)zDz;Ib9F)r71(syQyZRgh$K$InLWTy*sT-RoyuQ=2 zJul=^xZ67Ts?$O2Z{@I^iVN$NXjoH7)$)?y6+}sE$wbM&hrwT-m(;}2z9DPwwO%uF z@x?uOk3bnbh!*LEICQw(zCDQF0|f=f*UCEgX)%O6ZO(q;E{c}bm^h6|Wu|DS3NIX8 zXd;kpA58>ewyd_Sx6HRpw;Z;_TxXN<*ey&Q^tQBJ{NoYUq6=pwBG`6B$)wT2QlTim z+BO*Tugh?wa-%nIbBE=5F)l-=hF7K$wUj1`{Gsf&=8=)Fl^W&YH$bKbg( zyLw(j#`lbzCWiT{u)d0&+3CV`NLS2_qx>FI_?1Jy2aO59`B}uJ>rGSiI8+H zwde1Gr3Qm^?gWp!i+q0eIom&BtO34inZj652`znQSFzC^id8nzGz)rVj9h{ZEme_r1nwG@3kDl?$}f$Wxz;TI;_m6AE0r z^?j2~wHIs3@>R{^Uu#*~I&hQ4!f|pJa732zM(ZJb&kqqSz@O47_ovSO7jOh`ge3w1 zM}>YG5RjQI3IG6oJ*{j=HYQiJT>N}sPOg5=ZZL`uejg10AShbUUsR>t5f-5P>?<3@iLB1p>io7pT`frl|@#wn|T?n3dlBb_9 zi3nGODZ+n~@8=?1U9^Y+ z&bQoLNWXOdru)?Z+Q}XMk1zuM|7ZmKr=ou-{JZ^M(f$5WU0J^&&iZc3|gG+!q{Q^<(`OPMmGWwkAy|ZI{ytKMaK$duv4)p85PM&pXB@ zhebk&Z`C3Y_@e1?a$k+Z!Qw{2W0$mrBkxlg%eBHbJkrjKPaCAT57)3$0$$B(Y|bq= z?QHfUC?q(OGWWp*)T^a?k}0o!`4T>qQ;%;!zgFmq;-vEJStkYBbA)a!D|okHKG0j) z6JMDBs{ZVto30V<#X3Sjo@6uw{Y2v-EIjr;S@zWjTxbhk{Wb4CSz88TxLd>90FX6e}yCukP>qoV*O+{gylz6}L zyL~)AehlwtM;rGJPgKORR~}2WI9aYDQ=?M#MoKl0O0)n6rP{FG6UDlL${=bZB`P1z zQUj;vSOT=zyc1w6;yE;d9CS z@hzh}BWDuSCe7TF1oWqqfRzCkM^z%41pwrvvI3=p(^=O&rjDQptD^lQ0Gl!|=jDoi z&T};apfSgyDj@{QlVVkFJy*c4s8TO1MYpI_zoo^Z&_}e|R^c#nj(~B1UWxdV>Ni@w zEdlH0)XiE+idQY|Zce;*#nAd*gT{m$38v~RICKDVHf?=%Apg3Wf6amyVE+48Z`&{m zb-CAdj}bciojg^!Fn$uAGd@I}k7WWXEXroeadQttxZL`t>D;*eE49=6izHoU!?SMx1gqAV))g0i=OKs$sqF++q zJePi?bpiHhAZv;9~-r$s>DxAQc?0)@hn`nn?smsZW__`Qft<(&mj9PTTvcfqJnr@-2@?%EDxylClNp91;I9-FrX zLU%1J=W5WA2ui#6sws#qXvl9`HEwhaD4Pt+Bh79foN4PDrLKLD9e#v`U1;>JbkWJe@ qPfHc7g+7t&KAKuowVH;zO63xc%-B0qv)lf2o?-ql)h|Qe4F3;TEkgVN diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.h b/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.h deleted file mode 100755 index 0f7d6a4ab..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// RHAboutViewController.h -// RHPreferencesTester -// -// Created by Richard Heard on 17/04/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import -#import - -@interface RHAboutViewController : NSViewController { - NSTextField *_emailTextField; -} - -@property (assign) IBOutlet NSTextField *emailTextField; - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.m b/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.m deleted file mode 100755 index 156e3d07c..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// RHAboutViewController.m -// RHPreferencesTester -// -// Created by Richard Heard on 17/04/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import "RHAboutViewController.h" - -@interface RHAboutViewController () - -@end - -@implementation RHAboutViewController -@synthesize emailTextField = _emailTextField; - --(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ - self = [super initWithNibName:@"RHAboutViewController" bundle:nibBundleOrNil]; - if (self){ - // Initialization code here. - } - return self; -} - - -#pragma mark - RHPreferencesViewControllerProtocol - --(NSString*)identifier{ - return NSStringFromClass(self.class); -} --(NSImage*)toolbarItemImage{ - return [NSImage imageNamed:@"AboutPreferences"]; -} --(NSString*)toolbarItemLabel{ - return NSLocalizedString(@"About", @"AboutToolbarItemLabel"); -} - --(NSView*)initialKeyView{ - return self.emailTextField; -} - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.xib b/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.xib deleted file mode 100755 index f9ef841e9..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAboutViewController.xib +++ /dev/null @@ -1,397 +0,0 @@ - - - - 1060 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2182 - - - NSTextField - NSCustomObject - NSCustomView - NSButtonCell - NSButton - NSUserDefaultsController - NSTextFieldCell - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - RHAboutViewController - - - FirstResponder - - - NSApplication - - - - 8460 - - - - 268 - {{53, 21}, {77, 17}} - - - - _NS:1505 - YES - - 68288064 - 272630784 - Mailing List - - LucidaGrande - 13 - 1044 - - _NS:1505 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - - 268 - {{144, 18}, {202, 22}} - - - - _NS:9 - YES - - -1804468671 - 272630784 - - - example@gmail.com - _NS:9 - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - - - - - - 268 - {{350, 12}, {101, 32}} - - - _NS:9 - YES - - 67239424 - 134283264 - Subscribe - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{17, 48}, {481, 133}} - - - - _NS:9 - {250, 750} - YES - - 67239424 - 138412032 - VGhpcyBzYW1wbGUgYXBwbGljYXRpb24gZGVtb25zdHJhdGVzIHZhcmlvdXMgZmVhdHVyZXMgb2YgdGhl -IFJIUHJlZmVyZW5jZXMuZnJhbWV3b3JrIAoKVGhlIGZyYW1ld29yayBjb25zaXN0cyBvZiBhIE5TV2lu -ZG93Q29udHJvbGxlciBzdWJjbGFzcyB3aGljaCBhbGxvd3MgZm9yIHRoZSBzZXR0aW5nIG9mIGFuIGFy -cmF5IG9mIE5TVmlld0NvbnRyb2xsZXJzIHRoYXQgc2hvdWxkIGltcGxlbWVudCB0aGUgUkhQcmVmZXJl -bmNlc1ZpZXdQcm90b2NvbC4gA - - LucidaGrande - 15 - 16 - - _NS:9 - - - - - - - - 268 - {{17, 205}, {481, 24}} - - - - _NS:1505 - YES - - 68288064 - 138413056 - RHPreferences - - LucidaGrande - 20 - 16 - - _NS:1505 - - - - - - - {515, 249} - - - - NSView - - - YES - - - - - - - view - - - - 2 - - - - emailTextField - - - - 45 - - - - nextKeyView - - - - 40 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - - - - - - - - - - 25 - - - - - 31 - - - - - - - - 32 - - - - - 33 - - - - - - - - 34 - - - - - 35 - - - - - - - - 36 - - - - - 41 - - - - - - - - 42 - - - - - 43 - - - - - - - - 44 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 45 - - - - - RHAboutViewController - NSViewController - - emailTextField - NSTextField - - - emailTextField - - emailTextField - NSTextField - - - - IBProjectSource - ./Classes/RHAboutViewController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - YES - 3 - - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.h b/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.h deleted file mode 100755 index b5e82e781..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// RHAccountsViewController.h -// RHPreferencesTester -// -// Created by Richard Heard on 17/04/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import -#import - -@interface RHAccountsViewController : NSViewController { - NSTextField *usernameTextField; -} - -@property (assign) IBOutlet NSTextField *usernameTextField; - - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.m b/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.m deleted file mode 100755 index 5505f8475..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.m +++ /dev/null @@ -1,43 +0,0 @@ -// -// RHAccountsViewController.m -// RHPreferencesTester -// -// Created by Richard Heard on 17/04/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import "RHAccountsViewController.h" - -@interface RHAccountsViewController () - -@end - -@implementation RHAccountsViewController -@synthesize usernameTextField; - --(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ - self = [super initWithNibName:@"RHAccountsViewController" bundle:nibBundleOrNil]; - if (self){ - // Initialization code here. - } - return self; -} - - -#pragma mark - RHPreferencesViewControllerProtocol - --(NSString*)identifier{ - return NSStringFromClass(self.class); -} --(NSImage*)toolbarItemImage{ - return [NSImage imageNamed:@"AccountsPreferences"]; -} --(NSString*)toolbarItemLabel{ - return NSLocalizedString(@"Accounts", @"AccountsToolbarItemLabel"); -} - --(NSView*)initialKeyView{ - return self.usernameTextField; -} - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.xib b/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.xib deleted file mode 100755 index c1f36671d..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAccountsViewController.xib +++ /dev/null @@ -1,843 +0,0 @@ - - - - 1060 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2182 - - - NSScroller - NSTableHeaderView - NSTextFieldCell - NSScrollView - NSButtonCell - NSBox - NSSecureTextFieldCell - NSTableView - NSMatrix - NSCustomObject - NSCustomView - NSTableColumn - NSUserDefaultsController - NSTextField - NSSecureTextField - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - RHAccountsViewController - - - FirstResponder - - - NSApplication - - - - 8460 - - - - 12 - - - - 274 - - - - 268 - {{130, 14}, {61, 58}} - - _NS:9 - YES - 3 - 1 - - - -2080244224 - 0 - Red - - LucidaGrande - 13 - 1044 - - - 1 - 1211912703 - 0 - - NSRadioButton - - - - 200 - 25 - - - 67239424 - 0 - Green - - - 1211912703 - 0 - - 549453824 - {18, 18} - - - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - - 400 - 75 - - - 67239424 - 0 - Blue - - - 1211912703 - 0 - - 400 - 75 - - - {61, 18} - {4, 2} - 1151868928 - NSActionCell - - 67239424 - 0 - Radio - - 1211912703 - 0 - - 549453824 - {18, 18} - - - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - - - 400 - 75 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 3 - MQA - - - - - - 268 - {{59, 126}, {71, 17}} - - _NS:1505 - YES - - 68288064 - 272630784 - Username: - - _NS:1505 - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - - 268 - {{135, 121}, {225, 22}} - - _NS:9 - YES - - -1804468671 - 272630784 - - - _NS:9 - - YES - - 6 - System - textBackgroundColor - - - - 6 - System - textColor - - - - - - - 268 - {{135, 89}, {225, 22}} - - _NS:9 - YES - - 343014976 - 272630848 - - - _NS:9 - - YES - - - - NSAllRomanInputSourcesLocaleIdentifier - - - - - - 268 - {{62, 94}, {68, 17}} - - _NS:1505 - YES - - 68288064 - 272630784 - Password: - - _NS:1505 - - - - - - - - 268 - {{74, 36}, {51, 17}} - - _NS:1505 - YES - - 68288064 - 272630784 - Colour: - - _NS:1505 - - - - - - - {{1, 1}, {479, 156}} - - _NS:11 - - - {{17, 16}, {481, 172}} - - - _NS:9 - {0, 0} - - 67239424 - 0 - Box - - LucidaGrande - 11 - 3100 - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 268 - - - - 2304 - - - - 256 - {473, 285} - - - _NS:13 - YES - - - 256 - {473, 17} - - - _NS:16 - - - - - -2147483392 - {{224, 0}, {16, 17}} - - - _NS:19 - - - - 116 - 40 - 1000 - - 75628096 - 2048 - - - - 3 - MC4zMzMzMzI5ODU2AA - - - 6 - System - headerTextColor - - - - - 337772096 - 2048 - Text Cell - - - - 6 - System - controlBackgroundColor - - - - - 3 - YES - YES - - - - 351 - 40 - 1000 - - 75628096 - 2048 - - - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - 3 - 2 - - - 6 - System - gridColor - - 3 - MC41AA - - - 17 - -700448768 - - - 4 - 15 - 0 - YES - 0 - 1 - - - {{1, 17}, {473, 285}} - - - _NS:11 - - - 4 - - - - -2147483392 - {{224, 17}, {15, 102}} - - - _NS:58 - - _doScroller: - 37 - 0.1947367936372757 - - - - -2147483392 - {{1, 119}, {223, 15}} - - _NS:60 - 1 - - _doScroller: - 0.57142859697341919 - - - - 2304 - - - - {{1, 0}, {473, 17}} - - - _NS:15 - - - 4 - - - - {{20, 209}, {475, 303}} - - - _NS:9 - 133682 - - - - - - QSAAAEEgAABBmAAAQZgAAA - - - {515, 532} - - NSView - - - YES - - - - - - - view - - - - 2 - - - - usernameTextField - - - - 56 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - - - - - - - 25 - - - - - 31 - - - - - - - - - - - 32 - - - - - - - - - 33 - - - - - 34 - - - - - 35 - - - - - 36 - - - - - - - - 37 - - - - - - - - 38 - - - - - 39 - - - - - 40 - - - - - - - - - - - - - 41 - - - - - - - - - - - 42 - - - - - 43 - - - - - 44 - - - - - 45 - - - - - - - - 46 - - - - - 47 - - - - - - - - 48 - - - - - 49 - - - - - - - - 50 - - - - - 51 - - - - - - - - 52 - - - - - 53 - - - - - 54 - - - - - - - - 55 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 56 - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - YES - 3 - - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.h b/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.h deleted file mode 100755 index 77ff7b340..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// RHAppDelegate.h -// RHPreferencesTester -// -// Created by Richard Heard on 23/05/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import -#import - -@interface RHAppDelegate : NSObject { - - NSWindow *_window; - RHPreferencesWindowController *_preferencesWindowController; -} - -@property (assign) IBOutlet NSWindow *window; -@property (retain) RHPreferencesWindowController *preferencesWindowController; - - -#pragma mark - IBActions --(IBAction)showPreferences:(id)sender; - - - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.m b/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.m deleted file mode 100755 index f7da58e92..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHAppDelegate.m +++ /dev/null @@ -1,55 +0,0 @@ -// -// RHAppDelegate.m -// RHPreferencesTester -// -// Created by Richard Heard on 23/05/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import "RHAppDelegate.h" -#import "RHAboutViewController.h" -#import "RHAccountsViewController.h" -#import "RHWideViewController.h" - -@implementation RHAppDelegate - -@synthesize window = _window; -@synthesize preferencesWindowController=_preferencesWindowController; - -- (void)dealloc -{ - [_preferencesWindowController release]; _preferencesWindowController = nil; - [super dealloc]; -} - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification -{ - // Insert code here to initialize your application -} - - - - -#pragma mark - IBActions --(IBAction)showPreferences:(id)sender{ - //if we have not created the window controller yet, create it now - if (!_preferencesWindowController){ - RHAccountsViewController *accounts = [[[RHAccountsViewController alloc] init] autorelease]; - RHAboutViewController *about = [[[RHAboutViewController alloc] init] autorelease]; - RHWideViewController *wide = [[[RHWideViewController alloc] init] autorelease]; - - NSArray *controllers = [NSArray arrayWithObjects:accounts, wide, - [RHPreferencesWindowController flexibleSpacePlaceholderController], - about, - nil]; - - _preferencesWindowController = [[RHPreferencesWindowController alloc] initWithViewControllers:controllers andTitle:NSLocalizedString(@"Preferences", @"Preferences Window Title")]; - } - - [_preferencesWindowController showWindow:self]; - -} - - - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Info.plist b/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Info.plist deleted file mode 100755 index 9945cb2f0..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Info.plist +++ /dev/null @@ -1,34 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.rheard.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSHumanReadableCopyright - Copyright © 2012 Richard Heard. All rights reserved. - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Prefix.pch b/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Prefix.pch deleted file mode 100755 index ceb1267d0..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHPreferencesTester-Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'RHPreferencesTester' target in the 'RHPreferencesTester' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.h b/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.h deleted file mode 100755 index 53f30ebda..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.h +++ /dev/null @@ -1,14 +0,0 @@ -// -// RHWideViewController.h -// RHPreferences -// -// Created by Richard Heard on 23/05/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import -#import - -@interface RHWideViewController : NSViewController - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.m b/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.m deleted file mode 100755 index d641fff49..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.m +++ /dev/null @@ -1,39 +0,0 @@ -// -// RHWideViewController.m -// RHPreferences -// -// Created by Richard Heard on 23/05/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import "RHWideViewController.h" - -@interface RHWideViewController () - -@end - -@implementation RHWideViewController - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:@"RHWideViewController" bundle:nibBundleOrNil]; - if (self) { - // Initialization code here. - } - - return self; -} - -#pragma mark - RHPreferencesViewControllerProtocol - --(NSString*)identifier{ - return NSStringFromClass(self.class); -} --(NSImage*)toolbarItemImage{ - return [NSImage imageNamed:@"WidePreferences"]; -} --(NSString*)toolbarItemLabel{ - return NSLocalizedString(@"Resizing", @"WideToolbarItemLabel"); -} - -@end diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.xib b/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.xib deleted file mode 100755 index fafa6a5bd..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/RHWideViewController.xib +++ /dev/null @@ -1,183 +0,0 @@ - - - - 1060 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2182 - - - NSCustomView - NSTextField - NSTextFieldCell - NSCustomObject - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - RHWideViewController - - - FirstResponder - - - NSApplication - - - - 268 - - - - 268 - {{92, 127}, {533, 19}} - - - - _NS:1505 - YES - - 68288064 - 138413056 - This tab demonstrates dynamic resizing for custom width views. - - LucidaGrande - 15 - 16 - - _NS:1505 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - {717, 272} - - - - NSView - - - - - - - view - - - - 2 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 1 - - - - - - - - 9 - - - - - - - - 10 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 14 - - - - - RHWideViewController - NSViewController - - IBProjectSource - ./Classes/RHWideViewController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - YES - 3 - - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/WidePreferences.png b/3rd_Party/RHPreferences/RHPreferencesTester/WidePreferences.png deleted file mode 100755 index 7bd1cec12b374cb6631d49b6bc202fbd1b133b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 533 zcmV+w0_y#VP) zJ4*vW5P;_rOM4qdD=QHMAr@(E1iRQ-`5WxC)PJH~I>E-)LLnfCm6ak0_O|h4goDeu zvp2h$o!NtIliSVi-S_R|_K_4v*Q+ITI4mLi<^D}470&Jsq1Q?B8uUV-Rv9LjS++n~ z^4}|egIKHTp57l}{CW}fIO;{C+5$W40~l?dM+s1cR0R-1T0&hwTEaviMuHmHW&$X& zy|xP*%R{_u4MkBn^Oy-tf2MHzGKRPBdnXt-(L|tvfB3rMa+3Mf1tj6oN>zXZ&m9w0 zlc))B;P+OJ;bd?cG});LaN!TOM$qr|gC@J=0-^9#*Wk|BNd;ozLnM-|M(2gEO90Rd zz$7go1wSiM#b!Un1*G9;asS6e1+?K&M@+y1UQECWUPQnW-Yb9`@U~zL?-jt)1D`|= z@LmD@l9I>;zE!{_krO;ipe~UcJhHLZLfD-qpF{5+7T5FDk{EBU5rQT%-v-u?&mWU!vTEEZKpo?`$f(KAl{ZD2Qy}y~ zmJ%WYC~PGmCSWB&&cw~%q;Oz|jE&H47@MEn0y)B?G+Q9HhEkVX2&Aszw)+=d|GUjE XmYx&iFV$J}00000NkvXXu0mjf#;@#~ diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/Credits.rtf b/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/Credits.rtf deleted file mode 100755 index 46576ef21..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/Credits.rtf +++ /dev/null @@ -1,29 +0,0 @@ -{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} -{\colortbl;\red255\green255\blue255;} -\paperw9840\paperh8400 -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural - -\f0\b\fs24 \cf0 Engineering: -\b0 \ - Some people\ -\ - -\b Human Interface Design: -\b0 \ - Some other people\ -\ - -\b Testing: -\b0 \ - Hopefully not nobody\ -\ - -\b Documentation: -\b0 \ - Whoever\ -\ - -\b With special thanks to: -\b0 \ - Mom\ -} diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/InfoPlist.strings b/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/InfoPlist.strings deleted file mode 100755 index 477b28ff8..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -/* Localized versions of Info.plist keys */ - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/MainMenu.xib b/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/MainMenu.xib deleted file mode 100755 index 37553bb89..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/en.lproj/MainMenu.xib +++ /dev/null @@ -1,3386 +0,0 @@ - - - - 1060 - 12C60 - 2840 - 1187.34 - 625.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 2840 - - - NSButton - NSButtonCell - NSCustomObject - NSMenu - NSMenuItem - NSTextField - NSTextFieldCell - NSView - NSWindowTemplate - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - - - RHPreferencesTester - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - RHPreferencesTester - - - - About RHPreferencesTester - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide RHPreferencesTester - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit RHPreferencesTester - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - - - New - n - 1048576 - 2147483647 - - - - - - Open… - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save… - s - 1048576 - 2147483647 - - - - - - Revert to Saved - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete - - 1048576 - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find and Replace… - f - 1572864 - 2147483647 - - - 12 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - Format - - 2147483647 - - - submenuAction: - - Format - - - - Font - - 2147483647 - - - submenuAction: - - Font - - - - Show Fonts - t - 1048576 - 2147483647 - - - - - - Bold - b - 1048576 - 2147483647 - - - 2 - - - - Italic - i - 1048576 - 2147483647 - - - 1 - - - - Underline - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bigger - + - 1048576 - 2147483647 - - - 3 - - - - Smaller - - - 1048576 - 2147483647 - - - 4 - - - - YES - YES - - - 2147483647 - - - - - - Kern - - 2147483647 - - - submenuAction: - - Kern - - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Tighten - - 2147483647 - - - - - - Loosen - - 2147483647 - - - - - - - - - Ligature - - 2147483647 - - - submenuAction: - - Ligature - - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Use All - - 2147483647 - - - - - - - - - Baseline - - 2147483647 - - - submenuAction: - - Baseline - - - - Use Default - - 2147483647 - - - - - - Superscript - - 2147483647 - - - - - - Subscript - - 2147483647 - - - - - - Raise - - 2147483647 - - - - - - Lower - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Colors - C - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Copy Style - c - 1572864 - 2147483647 - - - - - - Paste Style - v - 1572864 - 2147483647 - - - - - _NSFontMenu - - - - - Text - - 2147483647 - - - submenuAction: - - Text - - - - Align Left - { - 1048576 - 2147483647 - - - - - - Center - | - 1048576 - 2147483647 - - - - - - Justify - - 2147483647 - - - - - - Align Right - } - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Writing Direction - - 2147483647 - - - submenuAction: - - Writing Direction - - - - YES - Paragraph - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - Selection - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - - - RHPreferencesTester Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - 15 - 2 - {{960, 490}, {480, 200}} - 1954021376 - RHPreferencesTester - NSWindow - - - {480, 200} - {480, 200} - - - 256 - - - - 293 - {{165, 22}, {150, 32}} - - - _NS:9 - YES - - 67108864 - 134217728 - Show Preferences - - LucidaGrande - 13 - 1044 - - _NS:9 - - -2038284288 - 129 - - - 200 - 25 - - NO - - - - 269 - {{93, 59}, {294, 93}} - - - - _NS:9 - {250, 750} - YES - - 67108864 - 138412032 - Q2xpY2tpbmcgdGhlIGJlbG93IGJ1dHRvbiB3aWxsIHNob3cgdGhlIFJIUHJlZmVyZW5jZXNXaW5kb3dD -b250cm9sbGVyIGluIGFjdGlvbi4KCkNoZWNrIG91dCB0aGUgaGVhZGVycyBmb3IgbW9yZSBpbmZvcm1h -dGlvbi4 - - LucidaGrande - 13 - 16 - - _NS:9 - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - NO - - - - 269 - {{147, 158}, {187, 22}} - - - - _NS:1505 - YES - - 68157504 - 272630784 - RHPreferences Demo - - LucidaGrande - 18 - 16 - - _NS:1505 - - - - - NO - - - {480, 200} - - - - - {{0, 0}, {1440, 878}} - {480, 222} - {480, 222} - YES - - - RHAppDelegate - - - NSFontManager - - - - - - - terminate: - - - - 449 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - delegate - - - - 495 - - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - delete: - - - - 235 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - saveDocument: - - - - 362 - - - - revertDocumentToSaved: - - - - 364 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 373 - - - - openDocument: - - - - 374 - - - - raiseBaseline: - - - - 426 - - - - lowerBaseline: - - - - 427 - - - - copyFont: - - - - 428 - - - - subscript: - - - - 429 - - - - superscript: - - - - 430 - - - - tightenKerning: - - - - 431 - - - - underline: - - - - 432 - - - - orderFrontColorPanel: - - - - 433 - - - - useAllLigatures: - - - - 434 - - - - loosenKerning: - - - - 435 - - - - pasteFont: - - - - 436 - - - - unscript: - - - - 437 - - - - useStandardKerning: - - - - 438 - - - - useStandardLigatures: - - - - 439 - - - - turnOffLigatures: - - - - 440 - - - - turnOffKerning: - - - - 441 - - - - toggleAutomaticSpellingCorrection: - - - - 456 - - - - orderFrontSubstitutionsPanel: - - - - 458 - - - - toggleAutomaticDashSubstitution: - - - - 461 - - - - toggleAutomaticTextReplacement: - - - - 463 - - - - uppercaseWord: - - - - 464 - - - - capitalizeWord: - - - - 467 - - - - lowercaseWord: - - - - 468 - - - - pasteAsPlainText: - - - - 486 - - - - performFindPanelAction: - - - - 487 - - - - performFindPanelAction: - - - - 488 - - - - performFindPanelAction: - - - - 489 - - - - showHelp: - - - - 493 - - - - alignCenter: - - - - 518 - - - - pasteRuler: - - - - 519 - - - - toggleRuler: - - - - 520 - - - - alignRight: - - - - 521 - - - - copyRuler: - - - - 522 - - - - alignJustified: - - - - 523 - - - - alignLeft: - - - - 524 - - - - makeBaseWritingDirectionNatural: - - - - 525 - - - - makeBaseWritingDirectionLeftToRight: - - - - 526 - - - - makeBaseWritingDirectionRightToLeft: - - - - 527 - - - - makeTextWritingDirectionNatural: - - - - 528 - - - - makeTextWritingDirectionLeftToRight: - - - - 529 - - - - makeTextWritingDirectionRightToLeft: - - - - 530 - - - - performFindPanelAction: - - - - 535 - - - - addFontTrait: - - - - 421 - - - - addFontTrait: - - - - 422 - - - - modifyFont: - - - - 423 - - - - orderFrontFontPanel: - - - - 424 - - - - modifyFont: - - - - 425 - - - - window - - - - 532 - - - - showPreferences: - - - - 536 - - - - showPreferences: - - - - 616 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - - - - - - - - - - - - 19 - - - - - - - - 56 - - - - - - - - 217 - - - - - - - - 83 - - - - - - - - 81 - - - - - - - - - - - - - - - - - 75 - - - - - 78 - - - - - 72 - - - - - 82 - - - - - 124 - - - - - - - - 77 - - - - - 73 - - - - - 79 - - - - - 112 - - - - - 74 - - - - - 125 - - - - - - - - 126 - - - - - 205 - - - - - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - - - - - - 216 - - - - - - - - 200 - - - - - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 57 - - - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 129 - - - - - 143 - - - - - 236 - - - - - 131 - - - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - - - - - - 296 - - - - - - - - - 297 - - - - - 298 - - - - - 211 - - - - - - - - 212 - - - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - - - - - - 349 - - - - - - - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 371 - - - - - - - - 372 - - - - - - - - - - 375 - - - - - - - - 376 - - - - - - - - - 377 - - - - - - - - 388 - - - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - - - - - - 398 - - - - - - - - 399 - - - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 420 - - - - - 450 - - - - - - - - 451 - - - - - - - - - - 452 - - - - - 453 - - - - - 454 - - - - - 457 - - - - - 459 - - - - - 460 - - - - - 462 - - - - - 465 - - - - - 466 - - - - - 485 - - - - - 490 - - - - - - - - 491 - - - - - - - - 492 - - - - - 494 - - - - - 496 - - - - - - - - 497 - - - - - - - - - - - - - - - - - 498 - - - - - 499 - - - - - 500 - - - - - 501 - - - - - 502 - - - - - 503 - - - - - - - - 504 - - - - - 505 - - - - - 506 - - - - - 507 - - - - - 508 - - - - - - - - - - - - - - - - 509 - - - - - 510 - - - - - 511 - - - - - 512 - - - - - 513 - - - - - 514 - - - - - 515 - - - - - 516 - - - - - 517 - - - - - 534 - - - - - 537 - - - - - - - - 538 - - - - - 556 - - - - - - - - 557 - - - - - 609 - - - - - - - - 610 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{380, 496}, {480, 360}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 616 - - - - - RHAppDelegate - NSObject - - showPreferences: - id - - - showPreferences: - - showPreferences: - id - - - - window - NSWindow - - - window - - window - NSWindow - - - - IBProjectSource - ./Classes/RHAppDelegate.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - YES - 3 - - {11, 11} - {10, 3} - - - diff --git a/3rd_Party/RHPreferences/RHPreferencesTester/main.m b/3rd_Party/RHPreferences/RHPreferencesTester/main.m deleted file mode 100755 index fa7375c21..000000000 --- a/3rd_Party/RHPreferences/RHPreferencesTester/main.m +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.m -// RHPreferencesTester -// -// Created by Richard Heard on 23/05/12. -// Copyright (c) 2012 Richard Heard. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **)argv); -} diff --git a/3rd_Party/RHPreferences/bootstrap.sh b/3rd_Party/RHPreferences/bootstrap.sh new file mode 100755 index 000000000..64756cac9 --- /dev/null +++ b/3rd_Party/RHPreferences/bootstrap.sh @@ -0,0 +1,38 @@ +#!/bin/sh +set -o pipefail +set -o xtrace +set -e + +CUR_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd ) +TMP_DIR=${CUR_DIR}/RHPreferences.tmp + +mkdir ${TMP_DIR} +cd ${TMP_DIR} + +git clone --single-branch --depth=1 https://github.com/heardrwt/RHPreferences.git +cd RHPreferences + +clang++ -c \ + -arch arm64 -arch x86_64 \ + -fvisibility=hidden \ + -flto \ + -Os \ + -mmacosx-version-min=10.15 \ + -DNDEBUG \ + -ObjC \ + RHPreferences/RHPreferencesWindowController.m + +libtool -static -o libRHPreferences.a RHPreferencesWindowController.o + +cd ./../../ +rm -rf ./include/ +rm -rf ./lib/ + +mkdir include +mkdir include/RHPreferences +mkdir lib +cp ${TMP_DIR}/RHPreferences/RHPreferences/*.h ./include/RHPreferences +cp ${TMP_DIR}/RHPreferences/libRHPreferences.a ./lib/ +cp ${TMP_DIR}/RHPreferences/RHPreferences/RHPreferencesWindow.xib ./lib/ + +rm -rf ${TMP_DIR} diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferences.h b/3rd_Party/RHPreferences/include/RHPreferences/RHPreferences.h old mode 100755 new mode 100644 similarity index 100% rename from 3rd_Party/RHPreferences/RHPreferences/RHPreferences.h rename to 3rd_Party/RHPreferences/include/RHPreferences/RHPreferences.h diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.h b/3rd_Party/RHPreferences/include/RHPreferences/RHPreferencesWindowController.h old mode 100755 new mode 100644 similarity index 86% rename from 3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.h rename to 3rd_Party/RHPreferences/include/RHPreferences/RHPreferencesWindowController.h index d9a58a6f6..453221543 --- a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindowController.h +++ b/3rd_Party/RHPreferences/include/RHPreferences/RHPreferencesWindowController.h @@ -32,17 +32,28 @@ @protocol RHPreferencesViewControllerProtocol; -@interface RHPreferencesWindowController : NSWindowController +@interface RHPreferencesWindowController : NSWindowController { + + NSArray *_viewControllers; + NSToolbar *_toolbar; + NSArray *_toolbarItems; + + NSViewController *_selectedViewController; + NSString *_unloadedWindowTitle; + BOOL _windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; + +} + //init -(id)initWithViewControllers:(NSArray*)controllers; -(id)initWithViewControllers:(NSArray*)controllers andTitle:(NSString*)title; //properties @property (copy) NSString *windowTitle; -@property (nonatomic, assign) BOOL windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; //defaults to YES +@property (assign) BOOL windowTitleShouldAutomaticlyUpdateToReflectSelectedViewController; //defaults to YES -@property (nonatomic, retain) IBOutlet NSToolbar *toolbar; -@property (nonatomic, retain) IBOutlet NSArray *viewControllers; //controllers should implement RHPreferencesViewControllerProtocol +@property (retain) IBOutlet NSToolbar *toolbar; +@property (retain) IBOutlet NSArray *viewControllers; //controllers should implement RHPreferencesViewControllerProtocol @property (assign) NSUInteger selectedIndex; @property (assign) NSViewController *selectedViewController; diff --git a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindow.xib b/3rd_Party/RHPreferences/lib/RHPreferencesWindow.xib old mode 100755 new mode 100644 similarity index 91% rename from 3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindow.xib rename to 3rd_Party/RHPreferences/lib/RHPreferencesWindow.xib index b8032b2a7..35de9d804 --- a/3rd_Party/RHPreferences/RHPreferences/RHPreferencesWindow.xib +++ b/3rd_Party/RHPreferences/lib/RHPreferencesWindow.xib @@ -1,8 +1,8 @@ - + - + @@ -23,7 +23,7 @@ - + diff --git a/3rd_Party/RHPreferences/lib/libRHPreferences.a b/3rd_Party/RHPreferences/lib/libRHPreferences.a new file mode 100644 index 0000000000000000000000000000000000000000..2771e243a84b3f0fcaf063c42b7fe84e4054b164 GIT binary patch literal 141184 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

+uW}ISUl6aVej>Opd{~JGWQ*RGI|EY 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 #include #include @@ -100,8 +99,8 @@ static std::optional Load(const std::string &_filepath); -static auto g_ConfigDirPostfix = @"/Config/"; -static auto g_StateDirPostfix = @"/State/"; +static auto g_ConfigDirPostfix = "Config/"; +static auto g_StateDirPostfix = "State/"; static nc::config::ConfigImpl *g_Config = nullptr; static nc::config::ConfigImpl *g_State = nullptr; @@ -263,8 +262,7 @@ - (id)init m_NativeFSManager = std::make_unique(); m_NativeHost = std::make_shared(*m_NativeFSManager, *m_FSEventsFileUpdate); CheckDefaultsReset(); - m_SupportDirectory = - EnsureTrailingSlash(NSFileManager.defaultManager.applicationSupportDirectory.fileSystemRepresentationSafe); + m_SupportDirectory = nc::AppDelegate::SupportDirectory(); [self setupConfigs]; m_SystemThemeDetector = std::make_unique(); } @@ -447,17 +445,14 @@ - (void)applicationDidFinishLaunching:(NSNotification *) [[maybe_unused]] _notif - (void)setupConfigs { assert(g_Config == nullptr && g_State == nullptr); - auto fm = NSFileManager.defaultManager; - NSString *config = [fm.applicationSupportDirectory stringByAppendingString:g_ConfigDirPostfix]; - if( ![fm fileExistsAtPath:config] ) - [fm createDirectoryAtPath:config withIntermediateDirectories:true attributes:nil error:nil]; - m_ConfigDirectory = config.fileSystemRepresentationSafe; + m_ConfigDirectory = m_SupportDirectory / g_ConfigDirPostfix; + if( !std::filesystem::exists(m_ConfigDirectory) ) + std::filesystem::create_directories(m_ConfigDirectory); - NSString *state = [fm.applicationSupportDirectory stringByAppendingString:g_StateDirPostfix]; - if( ![fm fileExistsAtPath:state] ) - [fm createDirectoryAtPath:state withIntermediateDirectories:true attributes:nil error:nil]; - m_StateDirectory = state.fileSystemRepresentationSafe; + m_StateDirectory = m_SupportDirectory / g_StateDirPostfix; + if( !std::filesystem::exists(m_StateDirectory) ) + std::filesystem::create_directories(m_StateDirectory); const auto bundle = NSBundle.mainBundle; const auto config_defaults_path = [bundle pathForResource:@"Config" ofType:@"json"].fileSystemRepresentationSafe; diff --git a/Source/NimbleCommander/NimbleCommander/Bootstrap/AppDelegateCPP.mm b/Source/NimbleCommander/NimbleCommander/Bootstrap/AppDelegateCPP.mm index dbefd04e8..fd8035c6a 100644 --- a/Source/NimbleCommander/NimbleCommander/Bootstrap/AppDelegateCPP.mm +++ b/Source/NimbleCommander/NimbleCommander/Bootstrap/AppDelegateCPP.mm @@ -2,8 +2,8 @@ #include "AppDelegateCPP.h" #include #include -#include "../../3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h" #include "AppDelegate.h" +#include namespace nc { @@ -19,11 +19,23 @@ const std::filesystem::path &AppDelegate::SupportDirectory() { - // this is a duplicate of NCAppDelegate.supportDirectory, - // but it has to be here to break down an initialization dependency circle [[clang::no_destroy]] static const std::filesystem::path support_dir = [] { - auto path = NSFileManager.defaultManager.applicationSupportDirectory; - return EnsureTrailingSlash(path.fileSystemRepresentationSafe); + // Build the path to the support directory + NSString *const executableName = [NSBundle.mainBundle.infoDictionary objectForKey:@"CFBundleExecutable"]; + NSArray *const paths = + NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, true); + if( paths.count == 0 ) { + fmt::println(stderr, "Unable to locate the Application Support directory"); + exit(-1); + } + NSString *const ns_path = [paths objectAtIndex:0]; + const std::filesystem::path path = std::filesystem::path(ns_path.fileSystemRepresentation) / + std::filesystem::path(executableName.fileSystemRepresentation); + + // Create it if it's not there + std::filesystem::create_directories(path); + + return EnsureTrailingSlash(path); }(); return support_dir; } diff --git a/Source/NimbleCommander/NimbleCommander/Config/default.xcconfig b/Source/NimbleCommander/NimbleCommander/Config/default.xcconfig index cb701fa29..5855a41bd 100644 --- a/Source/NimbleCommander/NimbleCommander/Config/default.xcconfig +++ b/Source/NimbleCommander/NimbleCommander/Config/default.xcconfig @@ -9,6 +9,6 @@ WRAPPER_EXTENSION = app LIBRARY_SEARCH_PATHS = $(inherited) $(BUILD_DIR)/$(CONFIGURATION) -OTHER_LDFLAGS = $(inherited) -lBase -lUtility -lConfig -lCUI -lOperations -lPanel -lRoutedIO -lTerm -lVFS -lVFSIcon -lViewer -lMMTabBarViewLib +OTHER_LDFLAGS = $(inherited) -lBase -lUtility -lConfig -lCUI -lOperations -lPanel -lRoutedIO -lTerm -lVFS -lVFSIcon -lViewer -lMMTabBarViewLib -lRHPreferences ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowExternalEditorsTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowExternalEditorsTab.h index 81c980408..fa8af9733 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowExternalEditorsTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowExternalEditorsTab.h @@ -1,5 +1,5 @@ -// Copyright (C) 2014-2020 Michael Kazakov. Subject to GNU General Public License version 3. -#import +// Copyright (C) 2014-2024 Michael Kazakov. Subject to GNU General Public License version 3. +#import class ExternalEditorsStorage; diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowGeneralTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowGeneralTab.h index 5ee2cab3b..0506bd662 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowGeneralTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowGeneralTab.h @@ -1,5 +1,5 @@ // Copyright (C) 2013-2024 Michael Kazakov. Subject to GNU General Public License version 3. -#import +#import @interface PreferencesWindowGeneralTab : NSViewController @end diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowHotkeysTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowHotkeysTab.h index 765c06438..83c6eff0b 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowHotkeysTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowHotkeysTab.h @@ -1,5 +1,5 @@ // Copyright (C) 2014-2024 Michael Kazakov. Subject to GNU General Public License version 3. -#import +#import #include namespace nc::panel { diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowPanelsTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowPanelsTab.h index f3350aa6a..b73fe1563 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowPanelsTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowPanelsTab.h @@ -1,5 +1,5 @@ -// Copyright (C) 2013-2017 Michael Kazakov. Subject to GNU General Public License version 3. -#import +// Copyright (C) 2013-2024 Michael Kazakov. Subject to GNU General Public License version 3. +#import @interface PreferencesWindowPanelsTab : NSViewController +#import @interface PreferencesWindowTerminalTab : NSViewController diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowThemesTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowThemesTab.h index b886bbe1d..e7654f7a7 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowThemesTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowThemesTab.h @@ -1,6 +1,6 @@ // Copyright (C) 2017-2024 Michael Kazakov. Subject to GNU General Public License version 3. #pragma once -#import +#import @interface PreferencesWindowThemesTab : NSViewController +#import #include namespace nc::panel { diff --git a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowViewerTab.h b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowViewerTab.h index 965a819f5..ae96ee177 100644 --- a/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowViewerTab.h +++ b/Source/NimbleCommander/NimbleCommander/Preferences/PreferencesWindowViewerTab.h @@ -1,5 +1,5 @@ // Copyright (C) 2013-2024 Michael Kazakov. Subject to GNU General Public License version 3. -#import +#import namespace nc::viewer { class History; diff --git a/Source/NimbleCommander/NimbleCommander/States/FilePanels/ExternalEditorInfo.mm b/Source/NimbleCommander/NimbleCommander/States/FilePanels/ExternalEditorInfo.mm index 2557af967..c6fde509f 100644 --- a/Source/NimbleCommander/NimbleCommander/States/FilePanels/ExternalEditorInfo.mm +++ b/Source/NimbleCommander/NimbleCommander/States/FilePanels/ExternalEditorInfo.mm @@ -1,6 +1,5 @@ // Copyright (C) 2014-2024 Michael Kazakov. Subject to GNU General Public License version 3. #include "ExternalEditorInfo.h" -#include "../../../3rd_Party/NSFileManagerDirectoryLocations/NSFileManager+DirectoryLocations.h" #include #include #include diff --git a/Source/NimbleCommander/NimbleCommander/States/FilePanels/List/PanelListView.mm b/Source/NimbleCommander/NimbleCommander/States/FilePanels/List/PanelListView.mm index 0ba163f27..770af03e9 100644 --- a/Source/NimbleCommander/NimbleCommander/States/FilePanels/List/PanelListView.mm +++ b/Source/NimbleCommander/NimbleCommander/States/FilePanels/List/PanelListView.mm @@ -24,7 +24,8 @@ #include "PanelListViewTagsView.h" #include -#include "NimbleCommanderCommon-Swift.h" +#include +#include using namespace nc; using namespace nc::panel; diff --git a/Source/XCConfig/common.xcconfig b/Source/XCConfig/common.xcconfig index ab4016afa..bfa74907a 100644 --- a/Source/XCConfig/common.xcconfig +++ b/Source/XCConfig/common.xcconfig @@ -62,7 +62,7 @@ DEAD_CODE_STRIPPING = YES OTHER_CFLAGS = -fvisibility=hidden -Wframe-larger-than=32768 -fbracket-depth=512 // C++ -OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS) -std=c++2b -Wall -Wextra -Wold-style-cast -Werror -cxx-isystem$(THRDPTY)/boost/include -cxx-isystem$(THRDPTY)/spdlog/include -cxx-isystem$(THRDPTY)/libarchive/include -cxx-isystem$(THRDPTY)/googletest/include -cxx-isystem$(THRDPTY)/frozen/include +OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS) -std=c++2b -Wall -Wextra -Wold-style-cast -Werror -cxx-isystem$(THRDPTY)/boost/include -cxx-isystem$(THRDPTY)/spdlog/include -cxx-isystem$(THRDPTY)/libarchive/include -cxx-isystem$(THRDPTY)/googletest/include -cxx-isystem$(THRDPTY)/frozen/include -cxx-isystem$(THRDPTY)/RHPreferences/include // Linker OTHER_LDFLAGS = -ObjC -framework Foundation -framework Cocoa -framework SystemConfiguration -framework IOKit -framework Quartz -framework QuartzCore -framework DiskArbitration -framework OpenDirectory -framework ServiceManagement -framework Security -framework Carbon -framework NetFS -weak_framework UniformTypeIdentifiers -weak_framework QuickLookUI -lxml2 -larchive -lspdlog -lgmock -lgtest -lz -lssl -lcrypto -llzma -lbz2 -lssh2 -lcurl -lpugixml -liconv -lAppAuth-macOS -lpstld -lzstd -llz4 -llzo2 -lre2 -lfmt -lcxxbackport -llexilla -v -ld_classic @@ -79,10 +79,10 @@ LIBS=$(SRCROOT)/.. // Paths - headers USE_HEADERMAP = NO -HEADER_SEARCH_PATHS = $(THRDPTY)/magic_enum/include $(THRDPTY)/Catch2/include $(THRDPTY)/rapidjson/include $(THRDPTY)/libssh2/include $(THRDPTY)/pugixml/include $(THRDPTY)/zlib/include $(THRDPTY)/bz2/include $(THRDPTY)/libcurl/include $(THRDPTY)/MMTabBarView $(THRDPTY)/AppAuth/include $(THRDPTY)/pstld/include $(THRDPTY)/re2/include $(THRDPTY)/fmt/include $(THRDPTY)/lexilla/include $(THRDPTY)/nlohmann/include $(THRDPTY)/unordered_dense/include +HEADER_SEARCH_PATHS = $(TOOLCHAIN_DIR)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/include $(THRDPTY)/magic_enum/include $(THRDPTY)/Catch2/include $(THRDPTY)/rapidjson/include $(THRDPTY)/libssh2/include $(THRDPTY)/pugixml/include $(THRDPTY)/zlib/include $(THRDPTY)/bz2/include $(THRDPTY)/libcurl/include $(THRDPTY)/MMTabBarView $(THRDPTY)/AppAuth/include $(THRDPTY)/pstld/include $(THRDPTY)/re2/include $(THRDPTY)/fmt/include $(THRDPTY)/lexilla/include $(THRDPTY)/nlohmann/include $(THRDPTY)/unordered_dense/include // Paths - libraries -LIBRARY_SEARCH_PATHS = $(SDKROOT)/usr/lib/swift $(THRDPTY)/spdlog/lib $(THRDPTY)/googletest/lib $(THRDPTY)/z/lib $(THRDPTY)/OpenSSL/lib $(THRDPTY)/libarchive/lib $(THRDPTY)/lzma/lib $(THRDPTY)/bz2/lib $(THRDPTY)/libssh2/lib $(THRDPTY)/libcurl/lib $(THRDPTY)/pugixml/lib $(THRDPTY)/AppAuth/built $(THRDPTY)/pstld/lib $(THRDPTY)/zstd/lib $(THRDPTY)/lz4/lib $(THRDPTY)/lzo/lib $(THRDPTY)/re2/lib $(THRDPTY)/fmt/lib $(THRDPTY)/libcxxbackport/lib $(THRDPTY)/lexilla/lib +LIBRARY_SEARCH_PATHS = $(THRDPTY)/spdlog/lib $(THRDPTY)/googletest/lib $(THRDPTY)/z/lib $(THRDPTY)/OpenSSL/lib $(THRDPTY)/libarchive/lib $(THRDPTY)/lzma/lib $(THRDPTY)/bz2/lib $(THRDPTY)/libssh2/lib $(THRDPTY)/libcurl/lib $(THRDPTY)/pugixml/lib $(THRDPTY)/AppAuth/built $(THRDPTY)/pstld/lib $(THRDPTY)/zstd/lib $(THRDPTY)/lz4/lib $(THRDPTY)/lzo/lib $(THRDPTY)/re2/lib $(THRDPTY)/fmt/lib $(THRDPTY)/libcxxbackport/lib $(THRDPTY)/lexilla/lib $(THRDPTY)/RHPreferences/lib //////////////////////////////////////////////////////////////////////////////////////////////////// // Warnings