From 3e4489194c40435994a81356c35725f9746dc6f0 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Sat, 5 Dec 2015 22:28:01 -0500 Subject: [PATCH] iOS version alpha stage Playable iOS version of Rect. --- Rect/Rect.xcodeproj/project.pbxproj | 611 ++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 132592 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/Rect.xcscheme | 116 ++ .../xcschemes/xcschememanagement.plist | 32 + Rect/Rect/AppDelegate.swift | 46 + .../AppIcon.appiconset/Contents.json | 68 + Rect/Rect/Assets.xcassets/Contents.json | 6 + .../Spaceship.imageset/Contents.json | 21 + .../Spaceship.imageset/Spaceship.png | Bin 0 -> 134723 bytes .../bodyPart.imageset/Contents.json | 21 + .../bodyPart.imageset/part.png | Bin 0 -> 2802 bytes .../enemy1.imageset/Contents.json | 21 + .../enemy1.imageset/enemy2.png | Bin 0 -> 299 bytes .../enemy2.imageset/Contents.json | 21 + .../enemy2.imageset/enemy1.png | Bin 0 -> 279 bytes .../player1.imageset/Contents.json | 21 + .../player1.imageset/player1.png | Bin 0 -> 229 bytes .../player2.imageset/Contents.json | 21 + .../player2.imageset/player2.png | Bin 0 -> 217 bytes .../player3.imageset/Contents.json | 21 + .../player3.imageset/player3.png | Bin 0 -> 201 bytes .../player4.imageset/Contents.json | 21 + .../player4.imageset/player4.png | Bin 0 -> 222 bytes .../refillBody.imageset/Contents.json | 21 + .../refillBody.imageset/refillBody.png | Bin 0 -> 2790 bytes Rect/Rect/Base.lproj/LaunchScreen.storyboard | 27 + Rect/Rect/Base.lproj/Main.storyboard | 26 + Rect/Rect/GameScene.sks | Bin 0 -> 2140 bytes Rect/Rect/GameScene.swift | 408 +++++ Rect/Rect/GameViewController.swift | 54 + Rect/Rect/Info.plist | 49 + Rect/Rect/JSTileMap.h | 200 +++ Rect/Rect/JSTileMap.m | 1344 +++++++++++++++++ Rect/Rect/LFCGzipUtility.h | 37 + Rect/Rect/LFCGzipUtility.m | 268 ++++ Rect/Rect/Rect-Bridging-Header.h | 7 + Rect/Rect/gameEntities.swift | 252 ++++ Rect/Rect/gate.png | Bin 0 -> 167 bytes Rect/Rect/level1.tmx | 22 + Rect/Rect/level1_sprites.png | Bin 0 -> 25715 bytes Rect/Rect/level2.tmx | 51 + Rect/Rect/level2_sprites.png | Bin 0 -> 27288 bytes Rect/Rect/level3.tmx | 49 + Rect/Rect/level3_sprites.png | Bin 0 -> 24662 bytes Rect/Rect/level4.tmx | 28 + Rect/Rect/level4_sprites.png | Bin 0 -> 30794 bytes Rect/Rect/level5.tmx | 87 ++ Rect/Rect/level5_sprites.png | Bin 0 -> 16770 bytes Rect/Rect/level6.tmx | 120 ++ Rect/Rect/level6_sprites.png | Bin 0 -> 17768 bytes Rect/Rect/lift.png | Bin 0 -> 304 bytes Rect/RectTests/Info.plist | 24 + Rect/RectTests/RectTests.swift | 36 + Rect/RectUITests/Info.plist | 24 + Rect/RectUITests/RectUITests.swift | 36 + 57 files changed, 4229 insertions(+) create mode 100644 Rect/Rect.xcodeproj/project.pbxproj create mode 100644 Rect/Rect.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Rect/Rect.xcodeproj/project.xcworkspace/xcuserdata/PeterZhu.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/Rect.xcscheme create mode 100644 Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Rect/Rect/AppDelegate.swift create mode 100644 Rect/Rect/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/Spaceship.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/Spaceship.imageset/Spaceship.png create mode 100644 Rect/Rect/Assets.xcassets/bodyPart.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/bodyPart.imageset/part.png create mode 100644 Rect/Rect/Assets.xcassets/enemy1.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/enemy1.imageset/enemy2.png create mode 100644 Rect/Rect/Assets.xcassets/enemy2.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/enemy2.imageset/enemy1.png create mode 100644 Rect/Rect/Assets.xcassets/player1.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/player1.imageset/player1.png create mode 100644 Rect/Rect/Assets.xcassets/player2.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/player2.imageset/player2.png create mode 100644 Rect/Rect/Assets.xcassets/player3.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/player3.imageset/player3.png create mode 100644 Rect/Rect/Assets.xcassets/player4.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/player4.imageset/player4.png create mode 100644 Rect/Rect/Assets.xcassets/refillBody.imageset/Contents.json create mode 100644 Rect/Rect/Assets.xcassets/refillBody.imageset/refillBody.png create mode 100644 Rect/Rect/Base.lproj/LaunchScreen.storyboard create mode 100644 Rect/Rect/Base.lproj/Main.storyboard create mode 100644 Rect/Rect/GameScene.sks create mode 100644 Rect/Rect/GameScene.swift create mode 100644 Rect/Rect/GameViewController.swift create mode 100644 Rect/Rect/Info.plist create mode 100755 Rect/Rect/JSTileMap.h create mode 100755 Rect/Rect/JSTileMap.m create mode 100755 Rect/Rect/LFCGzipUtility.h create mode 100755 Rect/Rect/LFCGzipUtility.m create mode 100644 Rect/Rect/Rect-Bridging-Header.h create mode 100644 Rect/Rect/gameEntities.swift create mode 100644 Rect/Rect/gate.png create mode 100644 Rect/Rect/level1.tmx create mode 100644 Rect/Rect/level1_sprites.png create mode 100644 Rect/Rect/level2.tmx create mode 100644 Rect/Rect/level2_sprites.png create mode 100644 Rect/Rect/level3.tmx create mode 100644 Rect/Rect/level3_sprites.png create mode 100644 Rect/Rect/level4.tmx create mode 100644 Rect/Rect/level4_sprites.png create mode 100644 Rect/Rect/level5.tmx create mode 100644 Rect/Rect/level5_sprites.png create mode 100644 Rect/Rect/level6.tmx create mode 100644 Rect/Rect/level6_sprites.png create mode 100644 Rect/Rect/lift.png create mode 100644 Rect/RectTests/Info.plist create mode 100644 Rect/RectTests/RectTests.swift create mode 100644 Rect/RectUITests/Info.plist create mode 100644 Rect/RectUITests/RectUITests.swift diff --git a/Rect/Rect.xcodeproj/project.pbxproj b/Rect/Rect.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4b50440 --- /dev/null +++ b/Rect/Rect.xcodeproj/project.pbxproj @@ -0,0 +1,611 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8312CFF01BE5472C001AF047 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312CFEF1BE5472C001AF047 /* AppDelegate.swift */; }; + 8312CFF21BE5472C001AF047 /* GameScene.sks in Resources */ = {isa = PBXBuildFile; fileRef = 8312CFF11BE5472C001AF047 /* GameScene.sks */; }; + 8312CFF41BE5472C001AF047 /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312CFF31BE5472C001AF047 /* GameScene.swift */; }; + 8312CFF61BE5472C001AF047 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312CFF51BE5472C001AF047 /* GameViewController.swift */; }; + 8312CFF91BE5472C001AF047 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8312CFF71BE5472C001AF047 /* Main.storyboard */; }; + 8312CFFB1BE5472C001AF047 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8312CFFA1BE5472C001AF047 /* Assets.xcassets */; }; + 8312CFFE1BE5472C001AF047 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8312CFFC1BE5472C001AF047 /* LaunchScreen.storyboard */; }; + 8312D0091BE5472C001AF047 /* RectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312D0081BE5472C001AF047 /* RectTests.swift */; }; + 8312D0141BE5472C001AF047 /* RectUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312D0131BE5472C001AF047 /* RectUITests.swift */; }; + 8312D0351BE54E3F001AF047 /* libz.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8312D0341BE54E3F001AF047 /* libz.1.dylib */; }; + 8312D03B1BE54F5A001AF047 /* JSTileMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 8312D0381BE54F5A001AF047 /* JSTileMap.m */; }; + 8312D03C1BE54F5A001AF047 /* LFCGzipUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8312D03A1BE54F5A001AF047 /* LFCGzipUtility.m */; }; + 8312D03F1BE54FE8001AF047 /* level1_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 8312D03D1BE54FE8001AF047 /* level1_sprites.png */; }; + 8312D0431BE55043001AF047 /* gameEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312D0421BE55043001AF047 /* gameEntities.swift */; }; + 8312D0461BE553D1001AF047 /* gate.png in Resources */ = {isa = PBXBuildFile; fileRef = 8312D0441BE553D1001AF047 /* gate.png */; }; + 8312D0471BE553D1001AF047 /* lift.png in Resources */ = {isa = PBXBuildFile; fileRef = 8312D0451BE553D1001AF047 /* lift.png */; }; + 8312D04F1BE5AF41001AF047 /* level1.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 8312D04E1BE5AF41001AF047 /* level1.tmx */; }; + 8312D0521BE5B00D001AF047 /* level2_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 8312D0501BE5B00C001AF047 /* level2_sprites.png */; }; + 83AED40B1BE811FE0057F64E /* level3_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4031BE811FE0057F64E /* level3_sprites.png */; }; + 83AED40C1BE811FE0057F64E /* level3.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4041BE811FE0057F64E /* level3.tmx */; }; + 83AED40D1BE811FE0057F64E /* level4_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4051BE811FE0057F64E /* level4_sprites.png */; }; + 83AED40E1BE811FE0057F64E /* level4.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4061BE811FE0057F64E /* level4.tmx */; }; + 83AED40F1BE811FE0057F64E /* level5_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4071BE811FE0057F64E /* level5_sprites.png */; }; + 83AED4101BE811FE0057F64E /* level5.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4081BE811FE0057F64E /* level5.tmx */; }; + 83AED4111BE811FE0057F64E /* level6_sprites.png in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4091BE811FE0057F64E /* level6_sprites.png */; }; + 83AED4121BE811FE0057F64E /* level6.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 83AED40A1BE811FE0057F64E /* level6.tmx */; }; + 83AED4141BE818AB0057F64E /* level2.tmx in Resources */ = {isa = PBXBuildFile; fileRef = 83AED4131BE818AB0057F64E /* level2.tmx */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8312D0051BE5472C001AF047 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8312CFE41BE5472C001AF047 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8312CFEB1BE5472C001AF047; + remoteInfo = Rect; + }; + 8312D0101BE5472C001AF047 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8312CFE41BE5472C001AF047 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8312CFEB1BE5472C001AF047; + remoteInfo = Rect; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 8312CFEC1BE5472C001AF047 /* Rect.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rect.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8312CFEF1BE5472C001AF047 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 8312CFF11BE5472C001AF047 /* GameScene.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = GameScene.sks; sourceTree = ""; }; + 8312CFF31BE5472C001AF047 /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; + 8312CFF51BE5472C001AF047 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; + 8312CFF81BE5472C001AF047 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 8312CFFA1BE5472C001AF047 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8312CFFD1BE5472C001AF047 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 8312CFFF1BE5472C001AF047 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8312D0041BE5472C001AF047 /* RectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8312D0081BE5472C001AF047 /* RectTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RectTests.swift; sourceTree = ""; }; + 8312D00A1BE5472C001AF047 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8312D00F1BE5472C001AF047 /* RectUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RectUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8312D0131BE5472C001AF047 /* RectUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RectUITests.swift; sourceTree = ""; }; + 8312D0151BE5472C001AF047 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8312D0341BE54E3F001AF047 /* libz.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.dylib; path = ../../../../usr/lib/libz.1.dylib; sourceTree = ""; }; + 8312D0361BE54F59001AF047 /* Rect-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Rect-Bridging-Header.h"; sourceTree = ""; }; + 8312D0371BE54F5A001AF047 /* JSTileMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTileMap.h; sourceTree = ""; }; + 8312D0381BE54F5A001AF047 /* JSTileMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JSTileMap.m; sourceTree = ""; }; + 8312D0391BE54F5A001AF047 /* LFCGzipUtility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LFCGzipUtility.h; sourceTree = ""; }; + 8312D03A1BE54F5A001AF047 /* LFCGzipUtility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LFCGzipUtility.m; sourceTree = ""; }; + 8312D03D1BE54FE8001AF047 /* level1_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level1_sprites.png; sourceTree = ""; }; + 8312D0421BE55043001AF047 /* gameEntities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = gameEntities.swift; sourceTree = ""; }; + 8312D0441BE553D1001AF047 /* gate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gate.png; sourceTree = ""; }; + 8312D0451BE553D1001AF047 /* lift.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lift.png; sourceTree = ""; }; + 8312D04E1BE5AF41001AF047 /* level1.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level1.tmx; sourceTree = ""; }; + 8312D0501BE5B00C001AF047 /* level2_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level2_sprites.png; sourceTree = ""; }; + 83AED4031BE811FE0057F64E /* level3_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level3_sprites.png; sourceTree = ""; }; + 83AED4041BE811FE0057F64E /* level3.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level3.tmx; sourceTree = ""; }; + 83AED4051BE811FE0057F64E /* level4_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level4_sprites.png; sourceTree = ""; }; + 83AED4061BE811FE0057F64E /* level4.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level4.tmx; sourceTree = ""; }; + 83AED4071BE811FE0057F64E /* level5_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level5_sprites.png; sourceTree = ""; }; + 83AED4081BE811FE0057F64E /* level5.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level5.tmx; sourceTree = ""; }; + 83AED4091BE811FE0057F64E /* level6_sprites.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = level6_sprites.png; sourceTree = ""; }; + 83AED40A1BE811FE0057F64E /* level6.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level6.tmx; sourceTree = ""; }; + 83AED4131BE818AB0057F64E /* level2.tmx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = level2.tmx; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8312CFE91BE5472C001AF047 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8312D0351BE54E3F001AF047 /* libz.1.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D0011BE5472C001AF047 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D00C1BE5472C001AF047 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8312CFE31BE5472C001AF047 = { + isa = PBXGroup; + children = ( + 8312D0341BE54E3F001AF047 /* libz.1.dylib */, + 8312CFEE1BE5472C001AF047 /* Rect */, + 8312D0071BE5472C001AF047 /* RectTests */, + 8312D0121BE5472C001AF047 /* RectUITests */, + 8312CFED1BE5472C001AF047 /* Products */, + ); + sourceTree = ""; + }; + 8312CFED1BE5472C001AF047 /* Products */ = { + isa = PBXGroup; + children = ( + 8312CFEC1BE5472C001AF047 /* Rect.app */, + 8312D0041BE5472C001AF047 /* RectTests.xctest */, + 8312D00F1BE5472C001AF047 /* RectUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 8312CFEE1BE5472C001AF047 /* Rect */ = { + isa = PBXGroup; + children = ( + 8312D0371BE54F5A001AF047 /* JSTileMap.h */, + 8312D0381BE54F5A001AF047 /* JSTileMap.m */, + 8312D0391BE54F5A001AF047 /* LFCGzipUtility.h */, + 8312D03A1BE54F5A001AF047 /* LFCGzipUtility.m */, + 8312D0411BE54FEB001AF047 /* tmxMap */, + 8312CFEF1BE5472C001AF047 /* AppDelegate.swift */, + 8312CFF11BE5472C001AF047 /* GameScene.sks */, + 8312CFF31BE5472C001AF047 /* GameScene.swift */, + 8312CFF51BE5472C001AF047 /* GameViewController.swift */, + 8312D0421BE55043001AF047 /* gameEntities.swift */, + 8312CFF71BE5472C001AF047 /* Main.storyboard */, + 8312CFFA1BE5472C001AF047 /* Assets.xcassets */, + 8312CFFC1BE5472C001AF047 /* LaunchScreen.storyboard */, + 8312CFFF1BE5472C001AF047 /* Info.plist */, + 8312D0361BE54F59001AF047 /* Rect-Bridging-Header.h */, + ); + path = Rect; + sourceTree = ""; + }; + 8312D0071BE5472C001AF047 /* RectTests */ = { + isa = PBXGroup; + children = ( + 8312D0081BE5472C001AF047 /* RectTests.swift */, + 8312D00A1BE5472C001AF047 /* Info.plist */, + ); + path = RectTests; + sourceTree = ""; + }; + 8312D0121BE5472C001AF047 /* RectUITests */ = { + isa = PBXGroup; + children = ( + 8312D0131BE5472C001AF047 /* RectUITests.swift */, + 8312D0151BE5472C001AF047 /* Info.plist */, + ); + path = RectUITests; + sourceTree = ""; + }; + 8312D0411BE54FEB001AF047 /* tmxMap */ = { + isa = PBXGroup; + children = ( + 8312D03D1BE54FE8001AF047 /* level1_sprites.png */, + 8312D04E1BE5AF41001AF047 /* level1.tmx */, + 8312D0501BE5B00C001AF047 /* level2_sprites.png */, + 83AED4131BE818AB0057F64E /* level2.tmx */, + 83AED4031BE811FE0057F64E /* level3_sprites.png */, + 83AED4041BE811FE0057F64E /* level3.tmx */, + 83AED4051BE811FE0057F64E /* level4_sprites.png */, + 83AED4061BE811FE0057F64E /* level4.tmx */, + 83AED4071BE811FE0057F64E /* level5_sprites.png */, + 83AED4081BE811FE0057F64E /* level5.tmx */, + 83AED4091BE811FE0057F64E /* level6_sprites.png */, + 83AED40A1BE811FE0057F64E /* level6.tmx */, + 8312D0441BE553D1001AF047 /* gate.png */, + 8312D0451BE553D1001AF047 /* lift.png */, + ); + name = tmxMap; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8312CFEB1BE5472C001AF047 /* Rect */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8312D0181BE5472C001AF047 /* Build configuration list for PBXNativeTarget "Rect" */; + buildPhases = ( + 8312CFE81BE5472C001AF047 /* Sources */, + 8312CFE91BE5472C001AF047 /* Frameworks */, + 8312CFEA1BE5472C001AF047 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Rect; + productName = Rect; + productReference = 8312CFEC1BE5472C001AF047 /* Rect.app */; + productType = "com.apple.product-type.application"; + }; + 8312D0031BE5472C001AF047 /* RectTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8312D01B1BE5472C001AF047 /* Build configuration list for PBXNativeTarget "RectTests" */; + buildPhases = ( + 8312D0001BE5472C001AF047 /* Sources */, + 8312D0011BE5472C001AF047 /* Frameworks */, + 8312D0021BE5472C001AF047 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8312D0061BE5472C001AF047 /* PBXTargetDependency */, + ); + name = RectTests; + productName = RectTests; + productReference = 8312D0041BE5472C001AF047 /* RectTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 8312D00E1BE5472C001AF047 /* RectUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8312D01E1BE5472C001AF047 /* Build configuration list for PBXNativeTarget "RectUITests" */; + buildPhases = ( + 8312D00B1BE5472C001AF047 /* Sources */, + 8312D00C1BE5472C001AF047 /* Frameworks */, + 8312D00D1BE5472C001AF047 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8312D0111BE5472C001AF047 /* PBXTargetDependency */, + ); + name = RectUITests; + productName = RectUITests; + productReference = 8312D00F1BE5472C001AF047 /* RectUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8312CFE41BE5472C001AF047 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "Peter Zhu"; + TargetAttributes = { + 8312CFEB1BE5472C001AF047 = { + CreatedOnToolsVersion = 7.0; + }; + 8312D0031BE5472C001AF047 = { + CreatedOnToolsVersion = 7.0; + TestTargetID = 8312CFEB1BE5472C001AF047; + }; + 8312D00E1BE5472C001AF047 = { + CreatedOnToolsVersion = 7.0; + TestTargetID = 8312CFEB1BE5472C001AF047; + }; + }; + }; + buildConfigurationList = 8312CFE71BE5472C001AF047 /* Build configuration list for PBXProject "Rect" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8312CFE31BE5472C001AF047; + productRefGroup = 8312CFED1BE5472C001AF047 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8312CFEB1BE5472C001AF047 /* Rect */, + 8312D0031BE5472C001AF047 /* RectTests */, + 8312D00E1BE5472C001AF047 /* RectUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8312CFEA1BE5472C001AF047 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 83AED40D1BE811FE0057F64E /* level4_sprites.png in Resources */, + 8312CFF21BE5472C001AF047 /* GameScene.sks in Resources */, + 8312D0471BE553D1001AF047 /* lift.png in Resources */, + 8312D0521BE5B00D001AF047 /* level2_sprites.png in Resources */, + 8312D04F1BE5AF41001AF047 /* level1.tmx in Resources */, + 83AED4141BE818AB0057F64E /* level2.tmx in Resources */, + 83AED40C1BE811FE0057F64E /* level3.tmx in Resources */, + 8312D03F1BE54FE8001AF047 /* level1_sprites.png in Resources */, + 83AED4121BE811FE0057F64E /* level6.tmx in Resources */, + 83AED40E1BE811FE0057F64E /* level4.tmx in Resources */, + 83AED40F1BE811FE0057F64E /* level5_sprites.png in Resources */, + 8312CFFE1BE5472C001AF047 /* LaunchScreen.storyboard in Resources */, + 8312CFFB1BE5472C001AF047 /* Assets.xcassets in Resources */, + 83AED40B1BE811FE0057F64E /* level3_sprites.png in Resources */, + 83AED4111BE811FE0057F64E /* level6_sprites.png in Resources */, + 8312CFF91BE5472C001AF047 /* Main.storyboard in Resources */, + 83AED4101BE811FE0057F64E /* level5.tmx in Resources */, + 8312D0461BE553D1001AF047 /* gate.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D0021BE5472C001AF047 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D00D1BE5472C001AF047 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8312CFE81BE5472C001AF047 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8312CFF41BE5472C001AF047 /* GameScene.swift in Sources */, + 8312D03C1BE54F5A001AF047 /* LFCGzipUtility.m in Sources */, + 8312CFF61BE5472C001AF047 /* GameViewController.swift in Sources */, + 8312CFF01BE5472C001AF047 /* AppDelegate.swift in Sources */, + 8312D0431BE55043001AF047 /* gameEntities.swift in Sources */, + 8312D03B1BE54F5A001AF047 /* JSTileMap.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D0001BE5472C001AF047 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8312D0091BE5472C001AF047 /* RectTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8312D00B1BE5472C001AF047 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8312D0141BE5472C001AF047 /* RectUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8312D0061BE5472C001AF047 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8312CFEB1BE5472C001AF047 /* Rect */; + targetProxy = 8312D0051BE5472C001AF047 /* PBXContainerItemProxy */; + }; + 8312D0111BE5472C001AF047 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8312CFEB1BE5472C001AF047 /* Rect */; + targetProxy = 8312D0101BE5472C001AF047 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 8312CFF71BE5472C001AF047 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8312CFF81BE5472C001AF047 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 8312CFFC1BE5472C001AF047 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8312CFFD1BE5472C001AF047 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 8312D0161BE5472C001AF047 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8312D0171BE5472C001AF047 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8312D0191BE5472C001AF047 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = Rect/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.Rect; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Rect/Rect-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8312D01A1BE5472C001AF047 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + INFOPLIST_FILE = Rect/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.Rect; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Rect/Rect-Bridging-Header.h"; + }; + name = Release; + }; + 8312D01C1BE5472C001AF047 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + DEBUG_INFORMATION_FORMAT = dwarf; + INFOPLIST_FILE = RectTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.RectTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Rect.app/Rect"; + }; + name = Debug; + }; + 8312D01D1BE5472C001AF047 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + INFOPLIST_FILE = RectTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.RectTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Rect.app/Rect"; + }; + name = Release; + }; + 8312D01F1BE5472C001AF047 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + INFOPLIST_FILE = RectUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.RectUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = Rect; + USES_XCTRUNNER = YES; + }; + name = Debug; + }; + 8312D0201BE5472C001AF047 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = RectUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.zhukaihan.RectUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_TARGET_NAME = Rect; + USES_XCTRUNNER = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8312CFE71BE5472C001AF047 /* Build configuration list for PBXProject "Rect" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8312D0161BE5472C001AF047 /* Debug */, + 8312D0171BE5472C001AF047 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8312D0181BE5472C001AF047 /* Build configuration list for PBXNativeTarget "Rect" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8312D0191BE5472C001AF047 /* Debug */, + 8312D01A1BE5472C001AF047 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8312D01B1BE5472C001AF047 /* Build configuration list for PBXNativeTarget "RectTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8312D01C1BE5472C001AF047 /* Debug */, + 8312D01D1BE5472C001AF047 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8312D01E1BE5472C001AF047 /* Build configuration list for PBXNativeTarget "RectUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8312D01F1BE5472C001AF047 /* Debug */, + 8312D0201BE5472C001AF047 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8312CFE41BE5472C001AF047 /* Project object */; +} diff --git a/Rect/Rect.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Rect/Rect.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a533980 --- /dev/null +++ b/Rect/Rect.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Rect/Rect.xcodeproj/project.xcworkspace/xcuserdata/PeterZhu.xcuserdatad/UserInterfaceState.xcuserstate b/Rect/Rect.xcodeproj/project.xcworkspace/xcuserdata/PeterZhu.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..783c69c3b5f1e8f3e5d24679627a74695e82c70c GIT binary patch literal 132592 zcmd442Y3|K_dh)S&em*tPc~8nBw>3&5eT74l|bmktq@5w1t}tPuwexYU_qsWf(@`> z$BGRL#ooY%UF=x+pV`SKJM4nG`MvM+)dxs+X6}6Mxu>6V@A?~SYnodumVFdWF%(O2 z6i*2y%S%>F>N+RX)Lhe0KdEbj|J+cZrFn8!UsGUK4SqbnYfD388bx2a`kqwrK8jEx zl}=?)nbfIN52`2Ci#mpcYaWQj4g|s3p|p)D_fq)b-R2)NR!5)M{!CwSjt&dWhOdJxo19 zJxV=BJx)DAy+ZAwUZq~6UZ>um4p8qIY2-!wzBG)L=c z18t;J=rlTq&ZYC{e7b}_h3-!GqEDlH(>B^kd+0Ohe)Ld!1U;Ruq0gmf)3tOH-AvD; z7t$Bfi|C8!%jhfVtLUrgYw6|m3VIcNE4_}si@uw_hrXBIK|e%4NW@XEu&*n7!#AhWHPx-9+S@$GhLXjjD@i>Hpb34m;uZ{rkokX zR4_xCQOsy&JTrlr!uXj06J$b6n5kzPm_}v}b3Stcb1`!Xb18ETvy@rJ+`z12HZoh8 zyO{f!`7YKuw7Xf>t;Qym+i}*&Yr>cV+XPo>~MA@JBFRWR^^os`!@Ry`vH59J;Z*(e#-v99$|lEe`1faf3U|miZgMkTpE|o zWpH_1K3Br^H^KfTy{kTEgaBd7Yfve*DT!0I5Aui0-a&_E!-1*!B?gDNxw}e~9 zUCUj^-OSy>t>V^m8@Ri;ySaO~r@3diXSwIN=egb73*3v`OWcRtN8HEULGBRu3HK@Y z8TUE&9rq*m6ZaeUJNFk)^Qn9$pT+0#`Ft^N=DYIU_?~<(zKrj~J9!u1mmk0n(B<@^==mHf5*a{gxi7Je1Kmfy&4 z;_v4l;2-24;&<{7^N;Y4@=x(k^Uv_F@vrl5@O$}v{C@rb{|^5y{~`Y=f0+N0|Be5h zKg$2X|H=Qw|1EHWMo1OXgmfW8$P@~NBB5C5BJ>n`38x8m!67&WmvFk!U%XGeUwlA( zSbRi$LVQwuMtoL$L3~l%Bfcu`759m6iEoSViyw#w#Y5uf;uqrA;y29llho+~dR8yw0Y3v%e#-lky(@!%{ zQ?41J8LAnf8L1hoIa@P9Q>B@rnX0MQoTCY9LYf-Qxte-SgQi*2qM56ir&*}EP_tNb zk>)bZ63tbbt2NhZuG6g0tkm41S*2O6S)a9ibhg9jhI$ouHkpouZwgt=0y#LG3JUjkZo(uWiycYtPrt)n1@os0Hm}?WNkw zv{!1c(k|0pt6i>Lp}kpqi}rTyYVCUM2JIc%JGFOf@6m48?$AD@-Kl*{`?&Tg?bF)l zwY#-1YhTg6u6;v$K>MclUG00?kF+0aKh=Jw{Zjjt_B-wO+Ml#PYk$`s)&8wLrek%S zPSk012Axrtrc2jl>vD7jx2bT{ah>u%EBth-HjyKbFsy>7Ga4&7b4yLH=i+jS4>9@0IkdrY@W_mu8A-SfJa zbT8{()4i_SuREZ7NB6GoL)}NZPjsK^4(qd(~o*ALQH=!fZt>qqHF z>&NLU^%M1z^wady^*+5{AJ)&*&(_!K8};YuTlI7F^Ysh#i}aHIV*Mrh%k@|2uhB2n zU$4JGf1~~;{jK`j^lSC&^qcgX^;`9K>F?8T(?6hpQ2&VjQT>zpUHWJB&*@*(zodUv z|C)ZEe!u>0{X6;(^dIUE=|9nbp+BtuM*pq;i2g_YulnEgf9n4-&<4gJ7>Ge<&>KvK zR70jA%aCWtHxwJphOUNghMtCAhB8ARgWcdTcnn@cKf{@Za>F3QP{T08NW&<@*@kh3 zD#Jv>RKqmGIR>90WC$D1HOw|N7#a;NhE~Ho!+gVqhDC;p3>O=g7%n$lZMep8o#A@J zO2dtYRfby)YYb}*8x5NbTMSzb_Zsdq+;4cm@UY<#!xM%l4bK>!HN0SW(Xhwxs$s8T zpW!XT+lKcI9~cfA4jDc-d|~+7@QvXI!x6(ThF=YT82&U;M%u_51*6ueGo~0##tdVo zG1r)9EHV}wyBNC~dl-8fOO0hlo6&A`8$HG|jQxxQjpfE6#-YX$#*xOc#EDNVzO!Ny_CZ%TrdQ ztV~&#vOZ-)%6%!@Qnsh;NO>}4SISc~LF)5oTR zrbDLhOy8S+F#Tov+jK0IO4X+tQjMv3srjh|sXbDAruIrbE!CasN%f`7o}dAdR6MxsW+wGoO(;@rqs=;cck8*`atS~sZXaq zllpAx>#1*~?oItL^`q2}Q@=_5HubyIKT`ip{VPqArcKkOWvAt&<)(E@>z;OMnmx^t z=1d!yR-QH}ZA{wOw6oKur_D&KPMe)pn^u=rpEf^jLD~grOVTb+yCQ8x+RC&W)7GbL zNZXjUEp2<+j9%xxx+8r+`oQ$^^g-!k(#NKsojyH%MtXJn?DX37y7c<=`RNPN zFGydKetG&8=_}G#rr(&pK7B*_#`JCJ+tYWXKbgKO{i*al>93~0mi~JB`{^H~f0+JN z`q$~-r2n3NH2seZk|AbjGPD_48QB>*8C^5FWpvN5W!N(u83Qr~W|U`)&KQ$1He*`G z^o$u9=Vr{#sLhz0F)w3&#)6E?GL~dqp0PY*MaIgEbs6h3He_tf*p{(9V@Jl58M`u` z%Gi_fYQ}3B?`6E7@j=Fi8DC|5o$*b^w;4w>{>b<3BEYBR2IVN*#=GmFkGiPL0XU@*7&8*9umpMOkLFQ$dOENFdT%Nfib7khb z%=MWYGVjaWmbpFiiOeT6cV)hkxhM10%y%>2%X~lcaORhpUuFK9`CI1iS$vj|MY6=K zjI7M8tgKVAx@2|DvSeAaY*}Y!_0JlRH85*b*66G;SyQv7Wlhhj$vQV{c2;fH+^l(7 z^Rq6^x-4r+)(u(9vsPrS%vzVVK5IkPeOcSGwrB0gdNONQ)>Bz~vR=)4E$j8H_p?68 z`Y`LOtgo|v%lbX*Xtt0|vc>F-?9A+}>{GJ4WOvQBWLvXs*=J_=&mNFHGJ90^=~-1ev+vEmFMC_|_UtFJ zpUmEs{Yv(p>{qkj&3-TY{p`cpUuJ)m{cHAb*}rEW%@J})j+m2?lbMs1lbzEgr)y5P z9BYm($DY$aXF$%tobsGOITbmBbB5%M%c;y6pL0%*FUOw~$Z5!F%sDS-Va|m)i*l~a zxhm)CoSSlP&bcLLQ_kj`J96&Kc_8P(oQHCD<~*D8T+Z`3dvo^X?9cf)=U~pEobPhJ z&-o$eubjVgj^*ld^|^-J+}ym}{M=J>d*t@ab>_Nq-MNEuD{=?to}D``w=%an_ncf` zu0J=B8_W&mhI5;8n{!)orCi8eoO?~~(%faat8#D6y)F07+%36Vb05mxnfq|=bGgsw z?#|tpyFd3p?!nwcxu4{IpZi1Zk=(y?kL6K$`aDCPF)uGKKd&IKM_$joUU{xOcb+G& zB5!cski4OJ!}5mbos~BtZ(`o0yvcc?yl~#kyym=?yw*I(Tby@M-qO5fdDrIMns-~? z?Ri`Bw&vZHw=?hIyhrjL&D)*#Lf(scFXg?N_g3E9d7tKemiKwyk9j}k{hUwdGx=#SHNP;wD8D%0oZmaYG`}prZ~p1|XXFpdAD(|!epUX&{7L!2{7`;4zbU^tza?MF zhy2C)*W@qFUzWcr|JMB5^6$*wlD{?ouKb<(59dFU|9t-L{1@_H%s-I-X8v3GpX7g< z|5^T#{2%jwDxeDJ0;a%NkWyeOC@3f_C@Sbxa9Tm{g3<#7qk>e1yHcK;F^M^1yMRye$HLSa?m#KJ&furO43USU&Vb74!NR0xHO3$H0$TDYumRpG6Lw-w%5 zxTSDw;X{Qx3m-0guJHN7-G%!K_ZJ>0e6#RS;U|Tk7XDCpr0~bWpNgm=x`-(<7Nr!K ziVBJfi;9YR6`fYpyU0`IE$Uk|q-bc-u%hur6N;*e{6&GHU{R>(yrQO}=AuPKQV|qg zU35*+(xPQWtBP(dx~=HWqAf*RiykW4S@dwxb4AY=?Jn9^w7=*;(ZQlaMV}OXTJ%HF zk)j`qjulhIbTLzGEKVsl6&Dm278e!wDn6~acd@6~TimyJNb%6(Va4N%Clpr|`-=m` z!QxQydBsh|&Bcp~rD7<)y7-#nrNzsNR~6q{d|UCI#aoKE7C%(Hv-siS=Zc>%-d((} zcz^MM;)BJ9ia#m-zW9gYBgH=!A2U;C+H5cz%_(M+xxid#E;4sD_b~S~mzwQnx7lMp z%RIt7(mcvM+C0WQ)_k^kg1O2(#XQwK&3ukIY@TVJZLT%fn;Xo{=7nZ3FE(FlzRY~3 z`6}~u=IhNX&9|G^nKzlYnzxy^n;$ekX5M9f*8GC`Rr6l++vX3=ADKTk|7`xn{Hysl z^Y7-P=0D7Tn*TEYZ9Y~)mCz-mL|2ktl2MXbl2wvjQc`kCNtcqYCA~{rCGHYWiMOP0 z$>}A7ONNvTEg4oauB5VLe94TG>JooRQ%Q44OG#_VoRaw^3rj96SyXaS$+D6gCUmWD zt*zZlX(%nFqx4h?l{Rs7W!db|yyhwRZ(Dw*s%xOu*WA38GEhc|k=V7AiAt3?pr=a1 zs!d%TgDdORVeY2AQ4HFG?G@*ZK8@PGgX2Ra;dIV zH%TuUq!a{0q&#V`R5e2$y{10caQ=`cUtOr$RDvIjX$pp#Lc#X8j`#ToHPp8>HPqH( z2CCY0W-KJt#p(*1%{j+B zGD)dYnv^bONSRWWlr81lK@GXw^d@!v8AdebiOiR`(Vlts?|~rQ4wmcnOUzIVVXQlMabVebEdp>QGCkFYC_08 zSp%D!F~jMrZ&7eIkMzxJXl7V|jFaB8A-oJ!54x^JPTQPZgz zR5f)D<)i#mfC^F}Dl8R9g;J4JESaSe=@hAp)K%&x;mxzC8l-4fY83uoPc=}D)Ol2s zbgHxfshWqBoFZK+-7Y;SJt^&ysuVd>0F7!0hN_2#>T6nMwC(had|ZjRgTAI9&P*nI zbfPi|WXj8*DTCmERZ6;6`Mt8$Ux(vPiFt)7Q$2Ru{ne&){JbI*_O;fwL|&jQLu&M8 zF{@>6yKSues^%6HnQ@`Urcg8f;A_EDar2bg2yw?Zg+ftUO4LPE_q7yIi=`e?&$ZOW z)Fo0c=`^WodSu|S4b3(3qt&Kv3f8veIngUlIdf&bD?0X-)HU+hS5a3>y`|E%)KY4h zR3?R`s>uUuTS86szLwDVQNEh`=>5y7o2ayP)Cy`Pb)(crvPjl-)XlhFt0Wt)Pf%8q zJyj@>{w<+OWcK=*ksm8+P%kvp`%k-rE?^oR5fi#O>L;c*Ww#LuQ4=L!4yG@%4lFDWA8)Fq+Tgxe?{!@%J7y@ z-ROum&W$Sk1lRJT*9OnUg_jEh9XfMr^xA}RBaxpPTm7{)fwJcFYr-w1%?+(hfp%_q zl6sCx+d%E2o}!+no}r$V`blR>{iOlYzzx*%)Na&6FH$c_U>S}qHh~tQx|G(@zpg>A663#4Xmvl-rU?O%Y4`4ZfsM|gJ$`fe7HnS z<9ziqQB`+4?zYOd6;$8%2AbTx)IMteWHhzSEltP^(xB>8x^aQljQ<79{p5elJtDtF zer)?oxgPzb7VkTya>V%1+?Lj+Q2$d-SKZ$vUtM7HTCKg!R`2eU06XuW|feyk^kQ%9{D1#BXtW@h$d$dP`(3J(Up@d}tZ% zZo4)5pgeoa=~^_DvSECadaK%$GP-h9Ym3a*m5~KmhabNkF^J0VT?RgKc*i)`oxQ|q z3+!&UQzok2v2gMNhui6pO|UZ7htx;YMpw2AHCojVDbIfDAaw}W{1fU^>NDzd>I>>H zH3}7Ql zOcULv#Au!tQ4`YwO{7X`{90N=9g`;DooMN@>U{OBzS@e0jYj-Vh60HGQkRsEhO>`>iopz?^SkZN~NnX<^%yc@F>b{1~kS496 zv!uyV)s&hT$M2N(caNxPDN{`HAT$6o8=B^ojf%{|MD3*uC>>o$7tzJk;i<33Ai1wmorTa=DDS*yUho|kaqdIXp>b9z>0z2TL>23z#PjQ^p&H9yvW+nk7qNB=Dj~(&PWxQqxuRM0yfEnc9JI z*XdG?R41J;orjisu2dBrXa*gi($=F5dsvA91I#-&F_ODhN z)~3gn2PeysgVo~nE}XQ$;kC&sEJjb!b#y)T1>J~Fe5=%eYNcM9l8h)}bV;{RwsmwX zJ%>JDYLuF#mUbmXPo@{3^q(g+$vP)xD2i)kAXFb}Q#d4nl4$=3eJojTOp!)M#b=2u zKGGaTP(1%yP>y?RWu31vmampXcxaBYfY-?jc)c`VGNMb?!4Ouf=Xj1-N#7)^g&U;{ z*3dUg3uUeK@4V6Ig5E~2#sSa`EnP#ekuL05>GkwxT7Ne)%k1Zsr^y1yd3l*FZqB+lQv<=eG07T7H|ht1X7Y_oZ73#*inK2{iy(tn^Z{zd;S-6UOy z!g#H8W3{QQT}dXgYZW!kQGkl2i>wSoqbxEE!!n$7y|i3f*&&OcL?r44S)$N(Tg)AD z;R^;Q}g4xRA8?CP+b(&=C8YpoB=stjS&-B3R+6z=B^hul`H%^q+EE!`t` zMsh#He9g1^d8}@i*K4y_>^6_r<8eA2&X`-GPg?>Z3%YNXYLly-in4`1p{W_vP}hht zT606aa!ZVgV6q}A;%0@wX5>4jM7m98{TQ2ph}1TN>BjV;y02%tGp8~=n4Z#VX^pg2 zTDP7#jp>bjQ)SY6=}z>Dwn|l#Mux(X+{WZ_H8W>Leww0$w2^>55`?!$)a~JRn;v1D zOkepmF2>Dx7_YQJ+9++3Hm{e{GfY3KE3)Dg=?+XM$lP6pGn74GOg)9pmoov)<9z2= z`D!B(P@ei~TVPWeXlO(q%dEN>dAy+sWB=wrQ%xhLa^yUO>Xyjpa&)OsZ7^k9-7cxj zFy<_jeP+0{WewUNOc`NpiRrcGhT0GYrs(p>6OT@C40E=8^H}MwHOx5a?#RvP-n3Ih zjzyc5w^UK<*D@2CNzy&ij`nDonaa$d($+H5nCa5J(tT^0YUUhio3vdTHXVoQaFAth zylT8WwNbvA^))T6!BG3kbQy5bW=j4q3Th^Eu4>HLOs#ak^Z*8*?Q7U&09aJdoX0fF z6KRqjTEnzRJ5M%|x$;EjG4rK|rN=rZvXGHfF9l|?^oaB*z7(A{g>AbGxcElZOD|)t zP(5=cbCvYC^n`3hQt+v0#zs!ybQw@HK=tgk%yo*=-^VOxRxm3m9djdfn7Ns`1p|nt zhK3e}OXbwfXk4&rQ})bAPD+6y=SwkiRj%YTDsgz+CFvy;uBW6u2bf!#+wcXqGpm_3 z_>vo$^)$^VKF>RR7gB%tXECa1O@Yx!qDa$nB9+>TXLZ=GJYc-hr+P?_i6=>!`5DDb$A| z3iU-rp(Zh)inz>UNZ$2y9(vVz(#r_*6$x7*(T`)El4o)=u7;9OW}agZ|Eb6&?J<-p zx2j(Kwajig9{9JnNBncSgifw%5Qdp}^dT7JG}ex|x_ zX1-y*Wxiv+XMSLgFh4RsNpDJTNpDNq0mQ~KH^EY6o-F$-U<-V4{tRYx?KrI{1SG7NV z;$fqiv4Rr}8&Mr-R8DYtJm%R>jHx{suQsVe=yqUb<*1ToH#XGNw=}mcDJ!xj^zc{> zt7Ubpo;9#WHbweK`dB(B9g;qgK9xS(#HM0Gy&Kh)&5T&T&(ZP?#y?*~ZJ?a)A3V1a zbL635#BwOb8-<4LFPE*?Fs$tOFc&%xlY{tBf;(glhuIqp)W_7<;%#zeD$#9ni7nK2 zPhQMDbs@|G$w_A=zmj->s2z?hGMZUg1QNWYT|{Ll5piZqsP(I*z}P79y0N7)@w&68 zvOUE4kt)ua+(N!JGj-%4nuxCrZu3;;s-=cP1aq0#($COpriR>iBod1)|N5`JVhOsut zPG@JZ)$BQ}kM*+wHpqsgKcqjUzofsVV?a|t(?Byovv*M4*ja21doKQ4%huuF4bots zv6##Q=J@bO5onG4uU6(Ix#&5#si~n!@%S)BKDb`?O@ng5w=MfFXS+~o;Rl$QuJtuG zhk|&woUWHYYZv243SWLK;&hhJQ#eGfT}78wVG!B#J#IMpR{Tt^&f?3^Q8*qAt_ogj zfBn#=hSo-WAjb2z$vJCG7`K&W*$dc(tAQ32wpheUm@bYco2y}|{C(x#i z>`L}Vl;m#gEmSw4Q-MxHNk;OYiW;$P0g%fBv*pkSD{^x16=56n<8aCm^*+AIhjkky zOGF%S-q{u9L))b-;^Eb|C;}(1r%ZoY|BP#`ug3)~uWbm-#)o8Cjb0j#&Kth01uwTf zZepU7+Q4q1x^G}NvYXh=>>cc#K&Jzp0dywNSwLrRV7Ib&p?2@e-V1aN&~ouP59oY( zGP2t-cy1`rD%aWu*UzbGYN(gn5C#U(b!^9$pu4u`71-C2$9@IcjLe0Jg({1=xiJ(#%3zHrXs!-pk+C)+=c8~Pd^1Bm zWSZ0jlojc1KG|LzCBeRlX~7jhpCXMm2?>%BZ6C28DyX_CsB+E-$_0NjnqisE z&EbY7vrNx3+g|?P)CbGxjTtvf0nsFWAE@616ALy?{PV`cn?HyRqN0-=R>U zZ1o1ZkIavaE%&bHflH>an2gBQ?is962zHa!RZM|C#+&*7d&t zUAl(-4d}9yY5PCfzoOdycx4qkGmhr446~7AIF{o$9yQ5fpshgLfVKnekTuC^8#xW9 zmFLMBI8-lApift3+Yjh7<=M(MIw}Scj+Rj?mcCtCsIHfXa0NO@quegLPl^(bmIC5Q zBiE%W2aS@srZtXoZF+>uSFZ%=z7k~@X# zCbtS4V>2-i{l!|YJBy0Qi>_oeDbMxd(4|_-W^%oyFM#fgKjFP!$ahq=)Xg1*iDsn? zz}Y!x2O<~HXGp`Mm%JS2Z{*DC$vKcalN-=6#6Y0?cMMU%4QZdkP@o5N06dEu*?wgd z&;vWJjOE7R74B@H%hyCebCbBq+!Ssq&=o)VxjT@@xlP<= zpeF-8Wvy(1Wy>qCbAH6*l1+Y_$0n!Glm;_2sm1MAW2}D69nn|Z%k9KCnY)kM#%Gm?WU#8nD+#c>#?ltap?hS4)w-4wL&|#ow0*#VU12js; zY@lm5a|gILxwp8txp%mCx%asDfvy9(1?V+E?*#fy5Gz0&2I4vL!dlwhg#=l1c?lI) zC)5aIfRzSC<+pA4()o>AR2xGJtX{QS{#bxC&t1-{t5NTp-douF8 zeQZ;MysfyhwNa+o@sFwQiA~}qm_kR5857r)n4D}0;a$g}?x8}hUWc-Q7}K|4so#fr zJ@h|Mb}MEKqhyLM-4`7C6KlD{+?PPt1Kqfm`QAc;=5xFCB9uepU%#%bD zi4j+(bPg^;GbR+>;egfe@jLBduO;@uUzG>XJNbitx5a_Q%_yv++#hNs`8Rh=^#RZD z8gv(Umgjh$7kI*pK%??JALw~NF93QW(2F+mT3*NNc>{0cQ-B7bmjHb=(ANRI5@;;6 z#o**K6r6L=MGgPk-iKOjBPeUEpBXz&t}@Qt|I$NI8=4cUwN^Jr*1!4q5sQ=&=VP@j zimbJ{sZVW4MoOLd>P)t+tBFo=p!y(!=sOQk*qIrqvkrw=KKbb!symIf2c{C0yJ9COMt%YzW|PM z2X;byI{D~(r(YKd#rZ*eh0?Rs{-)!xuHy&uL*yil>}8(tuEZ@gZ4$%}H&rjBYY`bW94MGgg(E0|0Q*UW5fYID%q3LO~hqt7r0JNB^CzsvCQ z%64#=e^9ysWoJgtL@9emWL;D~$X7qd7pakVT$mVC+TG>kSoxUNmRijFs~?R{_c8tn znZ}O;eb*ZPNuVQ+Xs+xKj;P0!Qp~dxYl1Dax(sOiDArBqpXFb~Xp4W2f1cmXzW_8Q zyY2&e8_?U=^Dpr)^RMuGfZhT0{Xjne^h4N?IHjSXZip{{bDKH{b6%mQv2xV}ktzfl z-_STxHgs(ytU%IrRebc}72_M)fhn_&HrHeD+NJ;Z5n$Ae1y-l63_D_NUT>LG*?q#l zDYNZcKtCuMr<7M&ONWdrt!f${CBl3B`)a@8BmSUFm5+gbcnyCD=ttF@_l3fFk6^v@ z-*R5rT)C}8X1wT2zv6$88SQKS8~$7VJN|p19|IcK;R&E|9d>QtkMKY8Kk+~FzX1Id z&`$&XGSII8eL&{4QkDCtID2E8LUU>wTASPaPUXWvaybVZ9~0bPrgW~4#ElMR&GL>F z*-67ZNP=6VLywQ_B~gu>==Kwu*QlQx^^KL0s+Bj!4vy@gf-$^4+@RbXCEqcD#wChG zvjPM3Gi?e=;IU#V2m%56S)gBR4`coEW(xUo?&T%9{Ce4}$jz9tkDq?T4H4w#9ias1J*aDi zu8JEXbQ8J@rwTnLH%Cfss4{?l9q8A9eii8b)h7FYXUIOX;@xukXGbn>qpi?e=!5>g zP%4xG{RYr`*9sQu7|{FVe&;G>8LE`kIstm@V;9^4`X)*hIJ(?%E{xz6`pPcM$!|NU z4xLaQ)GIA546%oFAd3xo@Vg~ElxB0&;BSS(y5Tr6B7Tq;~9EDmt`U|B%YxAot8-(S;3Sp&iqi~aOvv7;BO1M?HO}JfHEvymN3hRXR!UkcZ zuu0e~+#%d4Y!S8!cL{e3_Xzh2_X*pC?ZOV>e&GS(LE#}`r|_`wi14WJnDDspgz%)W zOL$6nT6jiyR(MW$Uf3! z;XUDf;RE4A;UnQ=;h=Cx_(b?r_)Pd*_(C`=d?|b-d@Xz84 zB;&~hQbi_`Nn|paLZ*^wWICBas>wOTNBkr}f+R%3WG0zKYRI`{HmN0bq@Fa8Msgl$ zBF&_Qw30alV@k9y?*RQC&>sN(5zq&L{sidHfJTYO!1-&SzXclA{1Kpk0vfgYZ$KXf z8gtfv149AB0K)+z03!mU1x62y5f~FNX~1LvlLbr;FnPcf08<2v8JJUm=?YADV0r-4 z3z*)(lmTM_#s-W77#A=eVEO`c1~6v=GXR)!U@Cwa0?aUA&H`p6Fr$GP3(PoR#sgCY z%p_o@05c7k8Ni$aj31aFFkxV30dp=ewZPN^(+ErxFfG8$0cI{R^MSblm`r+|3|nCF1m4a|$cybR19U|s{}4Pf>Ga{!pP zfO!X)_kj5Tn2&%t2+SwId)4A|>{y#d%2z}^V#&A=kO+kjmS>{?*g1G^E}&4Bewb}O)V1C}e}$Zj0qj0t4*>fXuX96w_xD3Dw36@8=Jm3m|D+108+$q3y1+F`AJ%H;4TyNmYfU^K+1I_`Q3pfvO zeStdzxHEwp09?6j705g?pDZ93kcH$zvWQ3o$YOF4xtLr+E+v@J=v_7HoDy~NYR-eRd(CiW36qE)nscF`d^MVIInJ)&3aE1oW% zA@&o`6#I(<#DQYDI7qAz2a7|*q2e%cxOkR0LL4cM5=V<;#IfSp;yAHV94}4~tHg=o zByqAhMVu;56Q_$a#A@*z(I@)FfEW}*VpyCh&Jt_HbH&+Wtym}4iw$C6X%Ny#0$iQ;)UWOQ4&F1EM6pDEM6jBDqbco5ib|75U&)k60a7o5toX~ z#B0Ut#OuWy#O2}&aiw^pc$0Xuc#F77yj8qSyj@%^t`XOY>%{fq263afN!%>nA>Ju& z5x0tWiFb?l09OIr2;jy6HyOBdfC~T@2CfdcM&O!(n*-cD;4T1e5pauvy9Bt)fx8O0 zrNCVW+;YHr33m%{w*$8pxD9}H4GzcL4%`F4?F8--;2sBV7jVx2w;Q;ZfqNCWH-I|; z+}pst2i!-%9Rlt%;0^=#HE`bncLcbff%^@(KY;ricp7*Pcmli@cmwbz;M0N60zMb` z0^o~*KLz;i!1n~cH}HLcw*l`2Opftq0N)?@a^MF8KOFdxfcYYR9Pm}ZPX>M(@aF&@ z06q+S4e+(VHvr!R{2but0e=DTi-5lf_)CGm9Qdn%Ukdznz%K{>M&MTge>?DNf!_%H z9l&n|{vP1B1OFiK4+H-g@VkJ22KeWJe-ZdsfPW46y}%y;{%zpj1O7wc4+8%w@LvG` z74Y8z{{!$p1OFTFe*phCV7MUgAc!F70Yd;G4TLNZazQ8r!3;uI5KaZ5CkVYk=mUZc z1Sbd{5Kaf7KM3U@3c2p58| z7=%keSOUV8AY22&bs($&;U*APfp9wrYeCom!e$V*fN(bm_kpkjga<)*0)(ePcou}+ zAiM;^9uQs!VIK%@g76Lq?}P9W2!}xU41~iVd=0`+Ap8o#Q4szDLIGic2tYJI3_wzW zWB|zqk_V&^h#5#%Ag2Q91*8;+1&AGp3y2rU89@3283beqkh6e{0x}jzC6Fp0lYvYF zat@FHkT8%MAay_*fiwe|17tpsg+L@A7Xi5x$Q3}Y2C@vu^*~ktxe3TBAgh6_1F{jw zoj~paaxakWKpp_H6Ud`Lo&@qVkmrHC2;>zYuL0Q$d|YCegX13kiS5rK;%FqAZkH0fM^0S9mFgU^FS;F(F|f&5KjfM7l@@GT0pde=mN1X zi2Xp63(Xxx3^CFS4fNa9rsQ^mV1*-Sv$}ouM7u%UR-4Q2^xEt$+^K7`c;j}1;L`!0 z!|t-j)9IL&ws=ffJ91<72+Ke*YxcB)>BDN% zg~`#!84QGcPD}inS)I64F1yR?bb7rmm)+xWc@lsMhAn<)KvmQdcPpSiP9BuqAMkj> zo;X5T9bUWD>qK61c-?qJjLT(Bz)46ck1JsDsVIg0^KyyqP_m$KuanJ#Op^eVic$`% z7dJe`Q3@Y-So}6`Kn3az1=Od>vy?aNa)&&jI7-RF=Jetgd50ahFxXvAS0a}3hHP$& zEv&-yrh@77WCnx)=TKpjq= zP(EA0;dEP1N+`D%MbDK$A2_{1yCoQQstEP5g6XSH5Xu+y1w76;OjftkZgV_k_3C}5fchqBP`Fjk>$IU*$GkAIrB5w;7Mt7Vu*ck^?CA?Q?S53Z zK9`D8Un!uzOBPhfZ3%dTAzvUKluGuz2+HG#0~Oh(=nA;pDp21mpngc2rL2B`&}|FE zQwldfwwXISDou;a;Yi5lez(o;^Q$oZtYG@F6PQlGQXQDkL|Z*>gcwIB6g|JkYDK<_ zH8DpOOg|^Pcmbz3;BbU}3G{(#@jO-!n*VrE&Y&gaK|-rQ9aBL4+6h7hv85suuMav1 zh1MF|E>MZaV?sjt{7C6oOd3wX^n3DzvU^=2)KVwsa+Eul+J|TtJ+H&=^{Y5aqftQp zkvu3bwyq#&oE(%3H5MAUcuF|~4wuvFcc>_3R6zZe?COP3avVNe$Q%2@h?0smdv3SO ziu<|aFrhlI2OL5431iq?ldfPomOP=5UtD-JT^uHr;6e@u97{k)#XtEkFt~xFQENVQL0b@#U{UcR)^hZvBiT@?Hadv zoo-va;>6Vpg=H0{!gPv)iO1ucdPN=Kx`tqDx~{oT&DdED^`SA9W!UBu`6%YD%8C&kH+Zp0sW~{iPvty3dabU{$QnOx zX`9z4(y(~GeCA#sWd>n+AHMuSpJBN7K|Xn=ZBAvgy0@Ll6`b9#rcr)vLo<%r_Nj6b zUO!(`oy$>*uxmr5HS%>81y5BdNRnMuR1w}FMpV8yR_oBH4vWL#bm3_yG2Gb3X;xII zj*v~gs=XCVnoeLkfh%frqo%OiEKc-)9UgSE68SRdiF)jAuUdCm6->HLVCtNS4q7dt zfXYN`TnZ*bvT7o1_u74UQo}!49*YwXs)<*qVY|m^wFjLl_gHhf0xG52bWxl{4#Ir} zLz{e!vuXm(|6U-KW9Qmgyt$^X6(y^o2{~EK>2p1<>XWeg00kMIER}4cBj5_6R*w$_ zJ6PS0=?<^MX-}Z(k*zS`4hL1@H(0@xp6n8$;~nx@ErA4qygFufSZwwL@`sNHeIa*9 z1?nsXR3>WG@o{U|-j7>WIYRkaK1AT(uV&=@sM1*xP1YF&TN!18f6%k-_aVFdgSzdQ zTD;1QoooWVn>167QD~iAZSwxxR)#(!hYT7zzoxP61lF>;Sbt``GG1=7Os>RSs23CI z^NzD!EM7d?Fy2E(D{b+I!cJAlrJ1Z?%1;(kz=;+F&tZtSF^JRYK~;_spxf$oIq`6? zcpD=>9kydLbu69aqx$^76jqy@|C;V-r%-A`dPK6i9Vd;@gI22#El(`lH7S_7A=_2Ov0bdGEgLj6dT8x`WxfANJ*}EsysGY)Z31>o zT2Y^`Q2W$QDC$|Ut9OAi9-gA*-oUa`pONVn5}T&TZH0cA~^Q0P`- zSb)dR$7r$$p*q+A&oRQ%iQ5@po{+QdA)EiWjMj1mlRarn&XCg;#<(C3Q*55bW4Ajz z3A65~zHKhAD#5L}S;6E?9+NlVas&eL2`x1ykHcb3Kqt&bx-raE$6vQAnA}NYLh55W zDiEKIj9EJ;o}}l%DqPI+w#UxSp!fKE)_Mh#H)%{^S#JEElM0^A>ycf-1av~%iv_%p zdhPB|FrA((Cd~WU!d@pvz%fMV$on~6NG{AUSS>b70)CP+M?N>E!&JueZUs}nWHF)S zbk3mrLv|l#4P%w&b_Emexk|RGYY&HQu5i4ctX5E7t5;nakEZ?X{!q|~8T(jJ4=JDq zCJ!p;w4xn~7d$m6JP^{Ah@+f7ECN}=s{R1YV+yE2$$~m@l%odaby+Z16vK52rQ|Rt zZ1slKA;nV)sKK3JDKrl*d%S&#Q3r0UeLGNV#9=~)bYg-5k;Seao-`tdIYW~r6y_H? zncnugf{vh?rQ~z%5Y+Hw2_@G7Y`#DO*C(RO6@6g0Iz3){g7SAnn}n?>C9#BhUBNUW zSxhqdeO4bvzA-Bk(NP@^z7@;gRy4)&*=<>y_<~`Zn#&I;nDDUryE{Q{R({%tRVlUJd{@CVrc(^%cVK<=csi--B{n-I7wrj~Jp4X%dexE8M+&I3 zlO9w()_Mqnwl&o6z9&B-)v}@j&oT4RxnLZRvE~cY>qH;M4U2E*C{dCXiM1O zVMmYNqe|6iSp`&evY^o9g>BZbH9^-&Y)T!Kxx?m6pvp0=WDR-Lv8Ps4K>3mfg*{ug zfcGCtH7=*kj@9TGYDQf<>}2x!usbfs=4lNIs6f)7P{}AqRK&b6V)LvHmldOQOwM9& z0vc=V{Y(G~9}l2~QWe^?X$mMjp(<%7I23lf1M!AfWnggetd(lOZGl3^nq(LE#7a!%x4SX1i>3!g$br3=!hoQS4j6 zFJ?+ut3-X_4yoLB?P&_8hNLk$F@0tYV<4UYQ-`I-0;=1Ss8kukqP+7sZDCO`otG>_ zb-sRzbPn6q+QO-TYEG6=$mMbl#;W4rj(kV7y%)c?!s3n3!N_S!hs~=lG;8}Rm|By? z6mViEtv`tUu*WZ6Z2k<}R-KkaO{?fOx`UpuDu1T!uV6aA6N`sU!(pGQ0jw)uBw=vh38o>B^Rp%?m>_9P z&J(rsVJO(4I4vIRgH9AOqvU#>$9XjPg=TUN=AvX5uhU+#J%kZXK&?3a3aCr|%VAn) zRgTA2JvGEW0E^~b1e2z-BxSaUiItg~|MCw=AD6gjZc?zg2|8vdHdR)ySU*fEY(>h z6%J#SM@91m3aF*YfuZS_m?>kb1k`z$ac7i#*cHA}>A2)X} zC-!A~?YM;`fkMERO<&N97AlrGFHtaEk0H+JlZH6aZ#?~v4YmK1odhS3dfH~1An-}H zi$HsYLgnS1U`LDJA4Z=gM&~FlPpr*E#~wK{KIBGjw)lM^t2)?Ns(@OVG&^=Sed@3W zgFaQNQhS4f>84}})p^H0j6G+V@`{y_n-oyDBuyx5AYj2w2=TsQM}-Hs4&i1TY`>3L z;5IJ|OAKDG&!Q@>YHw38-I_cmS?StC@#(G@UE+0OxAY0N@A@49zk188cAbLh_D*2J zsRkVJo?!;SRb9H^ZW(aGm?JB~91n-xrJl4U3q9rQOnp?|1jx@`!_ktiy|t&ez7 zEqQk-pw=Z#s1qi?W1}(;77VdzCZ13-jj=YT4uG~Pm^O3*(+M`8;NtxYZ`B(>I$>}W zD|inom^LN5c&H6dRK`@PP24n#oSuMC=&gpZexL&Nr~>MaqzQ#m=d}j0=ojs74xzQn(KJpjZVc2s|C+K4dxK@%i58D^tnUoee>Ga z6ioM_=hZvT^NO|)<4&WRz<+MD|DQ-LpLiFOGN}aq)qhSb?^kHJz1r0OU$=A1-!W2J z-c%EuiC+Lxs_d;Qi|x_WzN3tKf3n5)zls*$h<*038iX>?cr)n8o$rA9VrbM+MXqomjoj_QJW*F;WrgHwDwK zWCH575eZ%7>7H4@#Lq`!@|>v zVmT^b!Sre;2!*FCxc;dP6}icR(RU0n+bba03mR4*E~GOnpk7awP;!?R_HUi^ED`km zv5nD{u*WNa=a4wicZelaHwDw)q%n1}0o)$IFFV2ZzF17X6ioY*Up≦1NRcISQ3B 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 literal 0 HcmV?d00001 diff --git a/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/Rect.xcscheme b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/Rect.xcscheme new file mode 100644 index 0000000..cfad639 --- /dev/null +++ b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/Rect.xcscheme @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/xcschememanagement.plist b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..7b6c886 --- /dev/null +++ b/Rect/Rect.xcodeproj/xcuserdata/PeterZhu.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + Rect.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 8312CFEB1BE5472C001AF047 + + primary + + + 8312D0031BE5472C001AF047 + + primary + + + 8312D00E1BE5472C001AF047 + + primary + + + + + diff --git a/Rect/Rect/AppDelegate.swift b/Rect/Rect/AppDelegate.swift new file mode 100644 index 0000000..7480ca1 --- /dev/null +++ b/Rect/Rect/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// Rect +// +// Created by Peter Zhu on 15/10/31. +// Copyright © 2015年 Peter Zhu. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillResignActive(application: UIApplication) { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + } + + func applicationDidEnterBackground(application: UIApplication) { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. + } + + func applicationWillEnterForeground(application: UIApplication) { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. + } + + func applicationDidBecomeActive(application: UIApplication) { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + } + + func applicationWillTerminate(application: UIApplication) { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + } + + +} + diff --git a/Rect/Rect/Assets.xcassets/AppIcon.appiconset/Contents.json b/Rect/Rect/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/Contents.json b/Rect/Rect/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/Spaceship.imageset/Contents.json b/Rect/Rect/Assets.xcassets/Spaceship.imageset/Contents.json new file mode 100644 index 0000000..6799334 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/Spaceship.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "Spaceship.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/Spaceship.imageset/Spaceship.png b/Rect/Rect/Assets.xcassets/Spaceship.imageset/Spaceship.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ebb08dd06198612ea26ec4369079ec5a4e1f48 GIT binary patch literal 134723 zcmX_Hby!pF`=3%$(l9_!knSNM-QA2X=^P!>Al*H>8waDib94(x2ug>DbiE0z{=>e91|tQwQWD1B}PaOg90ltN>&BfSozOmz?VipBDgqC>7C* z{6xSz0*eSqfVBXia!M;o3ZTOQAhc8%-~)VT1#rk|Tgn1zngKnNxR`Z-S6BcJwTMtg z0J0Cjc=-K$Pe4cpfKd8WTkwRr3U`<3SyLHxf~_=sQi1xfSe?{cCgn(&33*Ij znq-Qy^?7BGat3nY{5%^60P+)wo~1o|@SJ>IH95%>*Yw(m^`IN|iQ3e3^KpBs!bubW z_~qt5^T@(pPxeIs^^5&uA?+Vz>ra^Z?pM*4bvUApfc*Vs?K7u;bR$)e(7Lp=y|wjS zen4E`WK`Sl(W=j=NBhC<#$WLM>f&eD22CKRVW151_0PWXbH$Q3Q%UF{rmH*gGWX4x zPxlma)B|#+tvXDEn`-#Zagv!aXPhO}k>W{=gS4|x<{RrQcSyqP+<+Qe;TJxMtmTGg zNS6xqxH@h<8&?3pX}e?ZH-=Y8U#x?FO?f;Wi#*8W(*nL&$|X4i0G}jj*fd7#MTTAh z0FwEEOf_QU=e<9V=hoy^ZZAVeAUd+x@GAlns^y3mrcpZY<6e@1bTFXC@ zg-91-PMf=dGUJK!v!-1d$b@2e3U;R}tZ|m(g(ZeKdiH>59|r6=*bx2VwY)6o$!24< z)RkBj2(lWjN~HG43$v+O4`lp6sUCD5WDoIoCX`~bI*K~V-(}0+y`ka4TSotgjufKS zM^BwxuFyc&hIcanH01<^>&UXaU%-ziV8``|kQn$#gC8luN#C0AQm(dGV-|l_de#B_ zexK!Q7MCp9`{a>jb4VQ;AC%=C^Kj@^&Q|}{hb{6gs#AT898*!};%oH{2Jon@Jn1&> zHrF<)MLMULW>F^iM|pt;9(TN+IJ}?QcFHD&uvnH{=vZ>y4 zYs34ILaCfKtvx%oFSD1nhji|Ng&jr|JQQKYK$-AnwWfv5=SvoujKd5hhMgNvs zp$W@TJya)GxB4nj9uBiAchnFm_Sb!gMAhwA>{pQ}R?Dw7+U!8Q!!#qU_hg}hU{{2> z2XYV4)lMw=er9SMs=?&;*tl}q8a(301 z)PIy=lo2Zl@n2N2!5}5%1?`d^-411c(sR2$eaTgHEL-#H+`WC{$Nr%4V1HY7A%mrZ zT8~A8x`H(c6ddGsb`+#wA6hw4lQ8TTl_)VuF-iLslGr*USTrvkD~%IlgD}{n*|bO4 zBZ}xy>8R)wln#{sWP+7iOBqWA6a^HACdMZUCl)fevxGp4oV!`OS&Lcg&Bl73dMr)l zO)VC3bz6F+x__EF976T@bW3zJ^$hE!;W=>Hg?4y*8D3eda1k~@?A+WcZ4gwU|VmtI#;=u!B)Hn{8ZbX5y8w$;ef1H`m0E& z1X?xjzGpXMPt=Al)-;!Rz^+V=NrW$jUGg@CHw8bgajxkajeqQE9&R2}>37UE3SE~7 zc>iSn*)3W!=(|SWJGa7?D_f5IktR7fxk8 z{5t_ob+wy5nK)_lI#ktvZ($nEWXB}B-ye%UG(1#0OeD@JLWgVyl*a8bvnt`bE_o}N zD!G^l!FBmT;U&%&Q7su-cn3;ipG%T!JrLwic#K^uqR)ko21Ma@3L zGZXP$!hnfV`Bauk$vf$HVh6Vu&ESU;mhILM`mYHcir9)jviNg}Ge5tx=M>`a1O+E0 zCOC`3sFaeMtPZSpEI*G`T7=d;4mw0Pvs0#^jX>%XDp7Pql1-K4u^1Jssiq;r~i%DhX52W~I>C>8!Nns}pqgTEW;PLSYWm zLah{RiE3i9pI50k(oU=L@1*lqf&_l*9S!Pjd;vMc)Wp~h^*dZ$JTg?#Vb@)6G`S7S zAr~f!jH)7BAxR?&_|CBExlJDKINF`D3T^mWG0aT;o=Q=g;hqMw7*BhnYX* zJ{^}_zvoxbMz5Bv9J5>w_=bh#vtg^y!ZB*g6g*Yk&qlQZcv1!<>g z$=&w8B@YKZhosdjh&}{m*NEo_(5G{)yQ5x@RS$~eqIDdVE#G$m3{TcKwHNBsWp~M> z$;nU1Na<(yW*=Brp7G{8Gg+__0N_mv0DK7s0B)Y1@B09NI|l%8Uin)vfsX|Q%m9^W}wBF*ZF?H5gHN` zs?mf@73gf6Uq>4YOTuMqq_j+sM;0_^=y@eatNR__LOVsHNl?*Dk{WDIl0iypFMYPW zl4p6`xd0Q{S-#7@;!L9ZV8nyxv(rL)-05@Nx?9zGl?j1vP&LI4Q{fo51I&)<);JMK>dGE8YIwOT3`AM-Y0F(5=b0|ICk0cX};Z#RI)yd-ow z`}=qGn9ucb2$4ei%z#=92(^2&s{OHyB>wf=Z#RL{e7b^-0S_WKQ9gejMBeB&GwO<^#2? zz+U<2*ZsX&-@QW%70!8zb|xD7pH4f%`q@*T-26ACzkY;;3p4I%%MoT76$KVmXutKo z4@7(1X-WEze%AcJM@oav+r}t;eTBy+WD}zj*dFui<f3#WUuvp8K zFn%A&6{6LAOb+cnI-YnGzIA(yAJU}wS8B4Tu5C9T{SiBwm-UHU=k@{Y4hnQb+SS76 zsc3(m6gEfWKy*Tl|0Rw1X<&BXH0n?tCP&JoZK!B(nN0e-mmjko&Rf0_EFo7M1_xzYrbi5C&^4m zQ}CWf{}dc|{n?fWZY*4F=9bncvv}d#;mMYbe>K)M+?SjEXy@a?NfSI_Yy1JvjxKDa zBJOehBf;nqYk4yH$IE{>7$SQ6uTBOvm3%jQ=PMlVG+;H&+Bgrp-w;DbMvgp5N>4^e z<-jG8)qurkb-36V+<*|0&u@hhO+nTAb-;8}vj)LuGuQ4;@#*R$QNrez%gvi4Lay>i zKYro;**doxO8Jk36s}|Yao1bkwe|HShwWEYJI9JX@1d%^3A|Sze3lH( zZSm`5lE92QXSR#J2I?(A7 z`W=OOnvxQ<^5d==0eg<6&w&|1BFkOy!VK#+*0H$dkgct>-!{1MwH0gVmFKaVycxWt zir&*vPEAjK)Vkx0C5v{=yJLoH0^fpS!CE}RjVi&^7@TSiahk+4%|9o0og%lsoOHQ8 zpG!|Bpmy@D5z!+0&ofnFkqwPf&ilfa^^B7`5$HzV9qu~EUtv)&m{>4(91K>okYGx) zL$jIPPbuL0i=ne27wQhQ-xq%u5(gwm_71E=HDjTY?r;ZMfh@&+|N1+0Tyq}Wx-SPy zSPHb8Y5uzlZJy~W0g7FB(?9X5sCj0)>(C#Sw!t_MzdDLwwxe}4UqiTwk13?d#bb2f z90+6hAYXLz>)kg@FA+iDbmRRXu|#WnZh1%y_rUawlI?UD8*(N>-Oh0isMPj3C%F~| z{MQq1B5$v^*bOiPZ#Sgq+68!b|Av+^Va7DNAyl=9q!mh3Q&GD94ggEMr-?1N7^PJ6 zRjuI`P2x5&JTzt@7vH2fUQ}QqtfTq@o2=oCqeP&%yN0(` zTf0&3Wi~a*H={v_z;;lVPDP|b-uLwAjo3ofx9&b(@JUb_rM4q-osi1m=MK64Xi~Q%AWp>NKO2*~^#{;#tKeTAPAO|8gddimqoX~YOML)qmsqGeUD zgK()480B!Nw2cX?u2}>gR1H`%BV91V5W;^L^PX09)Knaeq3|Vyr3tqQ3L>^*h1Xgq zPcNuelfep$HRWrP<&+dhCU(!>B0pYxUi=F%R)4kZ=K8GVLvQ`MV92tUaWIxGw__m- zHC$7gFjTlyj0CwHA%m>-((jz2eLc5t)~xekv$IjNS}?RMYEW}A_$9TD8OO4zTc4hU z6}BEKTTN4sPq+t)79T2uJT09#&FeTVU*Mg;3vhKCn&GO6y_OBK~;5|g4NFeRN2UEPy5>y(1fB6%Q;KLFv-NjY&? z1hnw}2SYDYgD*oe2%Glz^Cza6yMw)4UF{^8H}51`9QCfFe-!dC^R#00I2Ip32XVSN zwO}*q5?sSFiy;~WRv%rveQfK#Tzp)M@3jur z46{yBbku)QE>XrQ3ZGucj}3Y?sUt_nI79c9$qh^c=a3HMcH_g-HLKM^J%%pqDb^mf zg}7(35nnfz*z1YEvTACwTt78jzc36aIc%G{xs3%Obkt%_GUK}c8r_qGf^OIArHgqq zf|h+uK9EM&A13?Dt7=l_kSZSZ1K&jRHuG@Dq=-MV)I-O$HR-GFdvAkdJhDHw8QZ<&ZDp z0@9~M1AcgU3ut4Ve&E()j+v2Q9wlWC_E{)|_wy;JVHhp~6<(cqD3;BwJJz`zJ)_Ql zFsiV^uk43SA>p6dLqLiBoQBwMWIi0EM%G!%kJ+S(V5(tD#|BbLKuMyl7&CMr92WB)knHkLpFGMO~x}B<**DBy?ZS9lLr}=;32cPg< z?(LQTvC$2F=&cLHZM`eewwH((qS`9N1(;*PS=^@LFF~0CBmx(uVKI{8ROpgSm?-3V zGUygs%qax14V4DJYW&;_OEPPgjT^9j+dw$@H%TU6^M+k{$feP`H&`paq8|SZn`Ye{nctPMAhIB%a**d)=P(d&Yt@_R;hql z_*E`*Wc6Le`kmh{f?4oi2=M`X@GUCke)#W7S6x$y^}-*;oHdouAZQI;bD<~e2A zPGGRc1#$^KNa{t~ne_UcSxTxG2I|ihb1zqB`J@cJw@F9e zfBqMI-PL{T=Pthw@wrTDgrF=IGE955=~Z0p8`{LOV?@abVf`Y_(p4rkUO*%mTWepy zY2ZX%e|0t^81cZk)NoWc{LjztK)S5lUK5QJn9SY)AwxsTP=bbGZ`2AjJDIc;lu8C) zhaKN_9k+XQ%>GAqf?;%HUB8y`#pqXQk_4X$7N%YX%kbP zYS|zCmmuwQKA4*Jh9qZ~$yA=pUSW=V04N8-7k?Kj`HF(dB3*x^sQ4^96ny%@uyp=4 zp>HWFNlSUQb{O$fn<18Uq4mWO+HH-aE z03yPTS1yqSiJ}RU)qVy4xkCR16xNhe7;D;Sr|Neakr;3X=|RAer!Dm3Patp9W#A8scCO8}mmS6w8dVHq)O~v8y zG2lM_De{EwKYXAceXhxAUUv37#IA&wo|+kU-X4|F+@*!nFuJeC!PzLE*4DA z0T)7Ef>0B;0l5Kx_;URoQ4ZQR);_NGS60a};EejRq>+4*mNdC#*^lJ@D5O!aDc z^)sjL(1@*q>WfV`1cRjVn-W>78Ur?+@m;89Bzv~C(01=fQ*lT^EgeM!O(m!@m09?7 zCSJ``0*m$SeNXuHasZf|N%b(!XdK4m|QYGE53qG=zqWc={*4 z(-`6_CY1$DObzT#$dz?Kt39;cC>So^iDqCKWdxv#(9F$Tu&*U=>CfDn6$ELPw&YTI<= z93|vp3AnjpM)4alL>1s(q5mj;;M`ZOT|)x(Y~VC zXAd;m7)@dRKEdczF(WE(?0s7?X&SQdvl2lQoM&3hKRMB-MdzE-?Qf1@j3tgqvAPcG&cSnD2g{>75Uw?WjGiV` z?ctGi-tgwvhb(%GG0W+-!_v~y%vFZ12xj)~AdfI_P7@E0@OrDsn&$Q)bG^+RdRot8 zpY`ZE)FMKJEtjdKIk&`0WTh$us#B`RjF4U%4WE<oOb7==bC8W0{fR z={^0pj?n*jLR`lxV9M?viRK3V2}?~>?#4Bs;+czrHecG+@w$Cv7V+a0N<5-pIvj*s&??N^DaF;+B>E)tWF zZk*js0l&UR?WZmQ$rtl#S6^km#`* z-(VLtAql^SiSAvGJi!y>AKPOwtYskK?#PXm?gy1QcQG0a@IfFqV`$O&7qQ1T;(b6o z&BHSDMjog|phq0x`=K(|oio0L=XHO&bs2l`4C3;(_$Qazs4><0U1BN8h7?<8N~7l0 zrIhf5&6~=_;HBu&fKa$HWoZT_qo|j8pwc%lP($70Mv95s$E!?g4Q9dwEyzz3Qf4!v zsZX&%k#D%wZh555xx{JOXZFDm_wK(s5hd5V3p4qnvo}+vP3(wk!zh!tpS^b zx)`1rt~J}W$bPEE@5d^XS>y3TSm zFfqxxPIJ1aaym}$-zv(vrDQh~uKjYEH--m8ITpagnwLc!I-95$-=RIE3I`w*muOjq zFxxyh_mXSPaDe6iL5?zw)qHk9Ufv$FkT zD5S3Ll1jS4RA(2LATwk(494Wt)x$-xrYo*m3>`4#7Ln*|tT^J2i;wH>SpDHMlTq5$ zlIgy3e2*6W%&bvpz+}WT%=fYry10yU5yy8@vMS>!x|@Uw`kD$?n=rIne2{0fh?Y&E z==sfBJwu;Y3Xw9A`SeN(Kj6!~>$jiObU2@nX^msJUdJS>o5r{l9$xsE?=fy&mDF7n z+XXQ>;y>ISYf4CI>fNJz+wajBWp|=)b!K4|!X8!Acmf=n`rJ0=RvTEU+zQd5grh_Z zBb8o6XBF0beo>ln_eK#n7b)Vjd*UB?iy5~b+J5)1J~_M-wWh{1rD2L-jQW&FJkw5y zEI6^M2A$1tevhtZwT=wu&KZ{TRo=WF>&i5`)_#(I7<<|>f;ry9(A;NulB*!ys0j-( z7j=6GcyTJq3<^_r{3ec8 zSwC`E=`LbM8ccbzYT7#|Cf8o;>+3_MBDuqGL~e>@{qs+$#B<3?rBw*Fo&vY<_eO}oKfz>fdrsGN%Dcgffn&!s9@o%mNtYk~cXOA)#iRohOU)^)7; ztbv|)}jI0a)Y}fv;dRZ3`+S#8f)A53dLYTLdJgyuyXzJ16|q!d8xva6ljXXTc$ z+0)qw$>C@vM(9ojcs_=q(Ux>=B*e-|E}6G547x?fxEkf~TAl6Kg;mJ~v}t>HW)u)o zh5d$%*D&irECl8;O2)$oGANg&4EIhKA>eWH2IBfmrLTLByTubS93y1ucD_Z>#5sOv z*>t8fBn&AUe6t?CoD~7|qAx&MUCzQhI=bd_aQD|;44GYG`Bzj{$`kv(y)YXT5vgJ- z8eJKUsx8ys$q8iU^(Eqwd{l`-z;B|1ztI*oK80(xQCN#H?0A~&kBmiI>Yq_0wbATB8pCwK~a z9LO-D%Gx-GQ^5=D1ypVOJ*e_R%=9*~NOw7wgBILCGhw16G+(7@Muxui^LQJhXY_Jv z)F%4aq+*Jb|Jmv+_TM(bSzBS8k_NKY;HAXfO#?@vU|ghBdY>1t9v#;h*~8xM)HajBiyiaOQZCz zk`sC(gwx^39$H1t<7XBl%i?Azyv?l96sd^b)?tHTnV@oXW4`d2!v1}h1r7FfBu}d5 zO05nX=$|60;UfMVf8ro?(EoNWz_P6Tg+Sut=W*7TC3i4!oyF92*~w?PGI~|fDf1-e za+Qk-Djt&5GQhb?8eJ5p>3}yR#|*niFR3Ex8b&5PI-yqx)R>(SdXe${duSa?`h?{v zC`XN$Nb}dm>7((!QEs}D@i=_R4!Rno zG8slxg-z($pBt5IrS6I#FXbz(m4wt5&V;_I4h8y zO;GO$Oz72vU@vIga5Xt>?)|1r#r?TJ##~vBJ2Pp%0HvXTuq4J+VOld2B6y8EXGb}u z30${1H56sVWB7*`(Qc|a59eA(Z$)MwBSQdtEGSlzk9zoe2V%iplA;hPlG}w;yVX%^ zEhWdg+7q>sWkKQ30bu2 zO}o3UJslqJGIyUcQ!%;C<`aOlR~WUwGK7k)#ZxRRqbK!dCcrgILRY53wtV)-0Blb$ zO!ywIa6}5OL&vbVbTf?KCJzGh#uk#PwkJC6^%+63huHCw^3FXprViZ$Q0tY1yCcTA zmqo?|tz~OXaO)pB%njcpn`+McgYydSS*$4Zm@(*Grkg$%kuIy4Q&6UnzJCa&rEe*< zK}MdW-|k{vKCF08|Tew0bYdo z(rW9^Mkh$NDvNH(zuUet+j6U10CavCb!j^;VGQXs3rh`|HRkjwLo1ehnH^0MeE-VI z0`fbcj4-I7iqm0+{_HUry61x8iMFDAa4OvgxDLKQlPvZ9^q6}rm-f{2R<?s~dfo{kbkf zKm3E9x#(z89V|ns%x=Q+n`Uf%T)h8pGq(cru&Zf5sphIrjbQ4f-b`aqLmm%Pw6NGY zk@u^U#EHT7d(AZUJeu3a_Kw=BO&%TuMK!~~k^;{o5ar8!>(H8`&P%5;1WgfUZFm|w z9+>1qnV>q`S>)off0SmEtlA5AuA?Y^I>iDtMk+}Jm#UUJlt(TAV?qAM@*bt0oL3>Y zlro8H$I2v<(ya8sNt8cjvAtd;w-6#$Y%a`1pv+#s<19NjmvbdaD|jJl+MRdz6_sPL zka+fr?8CI?D-&aRsS;7_-;QW>P80fiV53I zpL-hLg}K_O92sV{doE{P#JUi?I%^p1=JC2n=jw{hNV%U&N*O<^-vbop!O&=ln!$1h zZ(R1A;&0B~0u;tl?nrBt_Q=mpvNCgZUplUbgHqerGL)b7! zkZ;yjl`vsu7MfS&I<<8Up6r9h27@+})rGGEaZWGU{R9#j&Ub_}sL+7PBSegFeGRa^ zm1*d*UDnbIUlm5b!7{yJ!RRENO+qsZ5F)3VArla-rF=K3Yw+vicVRyTsU)dIi)lT^ zuvt?x#JiApF>injIaH;qws>z%2z9K~3VYd!z7!Y6dIfQfyPf~e5mq>74WslWJ~kf< zb=`G!ROEEK!FiEJMF{bL}N)Pu-R&(-h>#+{@c%AcdO7H=TQ3?i=)>jxNA|x}# z@N$sw-lqy1$34_-vHeb>u0j~WNn`oDZM#Tg>dn|hNpXZwLKU~6Lz>)idtP8d3H?{B zHf9Gk(-Gs=(MVk?dY#s=y4eT1$_cXin#tP6dcPruhOxXhiW2YGGLP;%G`0)4WQxkc z@+-K;_EHLEe(J)ucP@Rj?bd;6x~-6dlT*#qOmBe(!5pK0J>y03z{<;A7K?(~(rVLh zHG%p@8y&rAxpldm8H(x3RvPZHXK~LE=skF1+l!>2+kwWUzSJFaGL=C4@gbWVDHSw+ zvBmWG{sv1^iwJ_E=stl#bpv5T`y5)DLF?B zuuw4nVTA1}`UA5%Pxth;R#JnP8-fgM?nDl0)8e@ucK|IoZKpsgGv}ufa;+ChvRq0s zD~$|u&E^a0b@Jq<}T)h`8d2IK0j6%PtDel(6d6(%}Um8lAhOMinZH@eYD;p#pyU-F&qOS zTFfG;-B>3_rHRZ6Styc6pwMFYx8o9+$e_J3o;0MR8O#?Fa`qX}>C^cDEV-gE8{J(K z>`&m~nR)D$v~Zez?vXMG#Tfn0S?VQCblm&+g%BUv!KM+HlnDyem0eg;+{gBsb3}#= zAFC~kQC}0c4ZHDd-`}`O4u4yCH^QR*%6!dt95Qp2EkPnl|0-iMg39uX_m6--D(7Bm za?k2{Aw=uhd4ePn@W~QGk#gMBkW?&JFEusUSj;Bj)eLDv9LUARMKUT7+V{@N^sM+Q z=UaG3Hv5btn^?gb9TAk&x{8yk8a1k7B6-PD6*WQRiu1WW53RMfkSe96tNPR##Ljf! z-B+9oP9<84RE9DuRI;P-A3EL26x0udxyH>39JJ-jq~iGgM4Dv-dm;KG z^x%|hMP$pSmcjTHF{H5f&aEF#JEgA{H|)EAWnO;&U$WmSOXwG%N4|d*q{?aWi3N+^ z?M2GnXH*^Lu#&$Jujno%!pN5#b7O2WFG3{> zVNBT`67~AZzo{|BgMh}h24bnc2lT@}ekFn3Rks;fji47*JYkpLM5PSJcaiLC^Q87F zUhs%o?Td}s_1i8@=S8WHTXGv_o#Y5wS{dMW z1nupCN<}Q=?R_R9y)vO~F!u0cYimHnLQuiLw3=4q-s>d+Z8gCY{lk*u^P{xK5ctO( zVK>UkLtU?}jJG8tS)|2cQJ2O-CIz}=Jz@EH4@yH~>m$@1y#RaFLkv~D ztRxM2BhIh%iiha#+y#GWwW|!Ck2UC|Yw3+WWK~B`M2?x?IJ=~n#z@yXFjobL1dqz0 ze!pRX?*q+zcOv_MLojrSHC$Aj{E+qaO0vZC;eO-7g7@&8sv~5@aWIkLN+KAz!w#0` zg`m8fVoeAU*B{!q9dxOs4y$=lDwFw{I~!=0025W##p2f}zzo3+Q@0>_2^#!`EJFgycfZ+L zBq{J_2l*Q0seSBcA&oIgrPhS#Q)5##7SJusRL7$zMt2JTyj_Oob%U|}7T3yNlnZB( zed_PGl&7`vLW7SJS=p3tUEO@|`5@1w7~wrXA*UY!>B4-6Sl}x%Q{~re=jow(+Hd*m zOQB%Fn_uy&w?QMt#Z~kg?t$*KlLB;;zoHEMtiPHMe~Y4w{?Ig#hEm1CF}Y2wF=5VM zP>#`{c7J;pV2IzaK$swWJUm|$33IPq$5G*l5E$ z??sbQUS2r0$uM?Y1shXDin;U?71AvyBe^dG)J+yN${I=H>(QGo?mT$Ios03vDh>#~ zBq>?d>eO|2tL*V-HuaMZ**1rK6G6L#i`U=ZzBd#nc7n~&8i&3#lQv66&;J>l56Ue)ZG1{lDg_684Szg!mbIB@q z0w0-#zqg{YW>`Q)mzUVAj!j0^jV;CPpBKL2E2U*2=0x6HYj} z*C?zSq&XKj+b1cXSQX8Z^_g`b&C%^JCVRyvRgL(^90Ds-Ra`|0Y9Xen*(!xEg*kMI zk>xUaz**h>Hq3PrD~2}l+X$E3;+4;Kr{}SGy#~hd4}LL*3{qW|G;#7Ds?OYcu1-#p zbEuhYs)Q)k6Z`u~+orUd@(5r|3c+U2q}pM!J*_#XQG>W$gF_YnOT)V_sGe9c9X7Y z&XB&uVk3*PipUE3OMm?%yd~p1j8{KY%&wA`GJbuVq5?K9jE-uU%{K?Ac3gEHheFFM zl3=;R=8d&2{-wPmkPPgw_1l~ZY;LpY&$+X<9cP49`Am?5w!*);H>M*Ohl^5g>a0LE z3qJ*fg2%A1cpwY*rIa$@{*Wt2pLLaH_|0>S_)H)*_nB~QyQ_QeK*oGo+a|QR4~kAD zA5A|@_g2EZ(U#MxQ+OiNUFl0L&mH-gUxzL7Hy$sYcW$glwtRLA-V#k6x~yl?>ET1C zl2wi3fm~Tpb-^(~4MERCN%%FN=Nq!N1($(Qbw9VR(;ptPc&%*OQ>W$X2pMD3%f<_I z;Vs?|bnG3TDMdwd+`-JWGs*|M#J47GCfAdNokh`+Uo1%p$9V8k0!>o#kNSS56uc-Z z=G<=+os-IB^F6g}qoSbt*+fB8sfjR!f)Yw9jzkqM6`Pwf?2b8q@JVRIxmr!twKvNc z&MTJHPwjMG?4M7qm)8B!Vn16eYtJ2BX+Ce@gvfv0UsASA$WoI(yLX*ZC(e~KRMV!F zO3eA2J(z-`wG>#wrD{hM40GtVffO;q8}b_53A^&E)QfMwCtPzpELH@fr-AQhr)DzaK?p~(CQPa;-_Y8vPKzbCd{%z<0R~Qz$n;ok z>NSC=zU0DT$T=7fAz$%+AYuZ^nlUnV&9{}BQEJYeu(k&{F|z;03cCwdGM}tzp`P@3 zf4LA-YO~j-90mw(=)s4~^sE(4?Wnho(fTfib%n@O(AWV>(3-SfiZ7bIL$x5RC>3Lz zm^ne0Qa2yLd~O;=fTkN>2pRpvP|zhrN{5GGV;7E&la~~4%xdjuKqt?aL*&I^@$ZgF zP$n4)!=RlXqhR^bx;P4lfnku?QX4&S#f;}fYA~AGvAh$R>t8U2=wpwd@SVVn0ktE^Oai z{WTL#UnAbGBx*ZEKU>q9NNoFaB5|sQY~qctm}aWy@drerBoViCA%2NEb%Wu6j)Zuv zo_m9RkFG>aAdCr3=3~it0#;^|lz#L`n3NveimHu}lVRKm_EB%9;YSVHaLDKW=c+tU z2JZ3~S4udMrY25b$XKaGtL@TC27X)5zVGDP8qe8w5@%#l-XumLk2+a9*6*>M1br8+ zbAJQyKnw+zJu067{)%+ZK~*TwM!mQ&-;jq;ojDVX^nLKce&;e%eU51!GLD))Lidc`H!{+y3sMTJn4;>6{}MYIUM>;K*N~yUZsj%s$kQ%-V#Tm8*|y4- zfXJ8(LJDEFQH911Zx*XRZT@LLE{tZapyLz~ru!TSV^OtetO6!cLNOLn3P`t(rI@T( zUL&qw$`j(&IRf@(p zWjWSi+X=$Ntz9;Om)IjkqR^Mo+u2X(u%&%bwaf8vs~}qDdqrkNXq|i!Ypx}_^L8U_ zA&KU-iT+@LQn9N5b)tI(=XSFig(3Y>^N%CaMTa+a25h=jS~{CL@D40$w&#i5t zYUm2@P&h)-n0wlq8lHPHiDcIPRLX)8 zRaeMz&k<^0Z!!%}5BY@j-3#4RqrbDtjJj}InMSySi2DnylJQU-R%iZ4NJZ$unbLDl z42)F{wI;?~PS_LwnX;QpPn$kzsr#BPe|!h`SEh~on9m*7CePi{Gjch{AH3g6C)A_! zQhxEKqO?S}QIU=oR2h+@%8PU9=;G!}9R=%I`eC?JRyMB9+E)H*0>3S_D4Fl9b=qzW z?E1J$N$)y1&x~eGlyT&yL&1nS;Zln$##51z_uQy#WH~MM@NH4qj~@SB%Ui~H$arKM zx-czS-a$X;YddzUx~9`sRfHMXWD^>cWv(?~BUE0CTJp-TPlpvGnXOs5EUT-NT|2&u zDO#(?3Zk3gVaB6yqs*|pgt|{`n8!JjnNiTw)9bd&^JMMYiN{10Z4z|ULqk=~+JPAw zL{ySHAXP%z@S(B>s+xnB728QS`;1hy&o0ZKvjN9*ma5?6=Z9h_j2!3S+c{2HucQu| zjw~z?BdmAMP?XwDYwdV_{s@LPzj^bt%UT@y?kI&G6OE@@phy--!w zvII3aZp9B`mCUG?lnJg!k*YOqbOJ(7LJ9Ia@Y{}_cWXx97qTda@hr=cTyf2Db2mYQ z``JZR7MwYi7nS2}uzkjZ?i6znT_8xm(eNm+P+m1k06wiQzO(l1}$vn3^FO1 zC@500{dUjTqpf#wPjm|@UpVc?P!z7ThJYqbWBN%xF*I9@jP&A-Z3m4sAo3YT@duL% zod_*@Po6`jX1eqYJoU|6iq}p3QEPFYvV;?!;jt&7_}&IVAYl^L*!6=&%=|1D%>wiZ zaiHVE2E2gf%^FEQ(WF2Wm?^A|p+-Jw%$2=UQq6l528~_S&lstBz5RRol$`F&$IFQa zjmy!G>zw26XN{IgY`>n8$r~v(H9{1B@X5EK+&*%dUzNilgh5tHuq2=qaWRWRB`b&C za&z=e(6((T7_yTM_6Dt4{BK%kQ7P$~bv*{@ZU`%#boi&mFANiQqQ-KZqQ47jDWSvh zz+jKCKA*TamBE5ZlESl+%AW+Ig>Z4*Mykew1(m+P9`0k3eWh&`?!?bC8I7LywUg?E zY{?(ru={R!Rk{L?orRwaju|lH-CtK=Cwq%)5?vPpS!^}s$9Kni+qAxNY5g}eBxi@f zd6-`JGuXDd`u;hHo=-+M^}0?R!q7RW4dw$fe{PXd%a1KMe{RJuas#z@)qMWk<;<*mOO*Lip46c`r>i^==@kSuu5oTX+2dE z35NmKI17S5yOD(iv#sgHx992E{~ZjVab6+z?H*o2tE~T~skAS&CIBn!VUo~Q`H(_d zIjfP3J{dJ0?HmN@I6qb3-DMoZ*Y?a#*@qkwKA%aLNUgPbPthS?Hw?QbuS?|IDs$B= zfR7Xgyfzv(NMx7)KbFoitc|wo+NCWNEfjZmcemm$!9xQr?(SY(i&Na)Ex2p3U?oU! zmjcDDz?=K|zTY`=WF|ASuetVG>)a-b^?_GN!h2)hG!k`{sLn*cqbo1HP8hq2{*qhD z7C?a^S3LqBN#NG-p05Kx;KsWHfzQ{cWbWl)NEZC%UGLh?(w1$-BjqO4L5Kj;30H@I znOd=P++cJ3jF9!J+-(E~^xfyAlkB$3FcBs)Ef5nuzd2Yv}Q#QTd!dsE249o%ie_22bT z+=k+G0pc3A!;J8AD_M^&n|r3#m%<3z&t+r~86UkPMdLMe=@_nrN|Kd^h(qp5v=PR? zrOFyyL>vyk_dQ1mS~C26=#JM=OYd{hAFHDu17?ObGIzD!$4bNBS+0I1X+S!f{o1^B%aE=t3z{vNAHLf zOR;Q%(s^)}KqS{ksl-bp9Egb2;#@Ner&{=ZEaLo0`f~MJiH1^qO&Qk+be_;ONnZ~q zA1p2tlVE0`oA8!VRTG*|J)*CT-TFDFo1uDvx-%D>c52MzW2GLZhn4-X*RRMjuwTQ2 z_W3rnDf!0?2}bGqd(^)C>V9GoLUIFhI!*nI?L3OfVZ@~OVn^b|6f?2yKJYRAbtjMF9P&Twv@QSVf8D)zMF9Zyo^KXY6qlo; zy|1emW5au3TU;1y$@lDKTD|Lae#%BMXOB}##k=X;P}NK*j`griRo6TmG8qhZ8o*(NRtKQ9~ za!aDHI-r*~!y>QdNJj^!$D!OPdH`eRiFm3C4Dex?`s&4ddg5CpN7 zGw{)ikTWau+XII3HK4a91Far;k4%5>$1uvKR1(`Yt?c`ONdSFwq_I!-e<8pUFgZsK8#ru|^1c5HZ%^)|YzRy%|1EIiRlO>tdr6Tl}TEavs0l9rz z69sA>^0xtBKbi}

&OL@zs?=oRx?4p7q51=x+k22l^NzWs;Jh=|Qtdwixy_>x|Uc^5+t zUGMMzZDhTHN2|7CI83%)p3b`OUgwP3{t~>-ZoD4l2^p{l{#Adjka(^e75QJ3_ChEo z@RCO2(tdb~WaFE$&jVRA+ne~^mN}tKU@bj)W`CS%+qq}%!OCkuDqH@Fl?dDAUH01m zaruX}e!N-XrrTf8%wlX%?3`3%;l53CftE?NdG))ZE7G^cSS6>S_X&5j73h<@`03v7$CSDoBzp$At*u8wxcE48ZrAj zxh3ez@%GTzCY}F-ip!JP*rVC{-uc=Gn;L^%b*mZ~W*QN~q@=I!DruNx1el~EKb7Ee z^!nlH;R%{9rVoA%sR`m#@F;HfXe6nO-k?mu&VssgC)yR5^nINXK9RE4ko#k(rIeiu zVXB@IY?mTJSONo@K{2|~gw*9Ss9c8KO2$<-#FbtA;&p}@8}=Em;?^Gp;g4QS*~4)7 znxEKhke-W+5R&*@3#sTG>2dqP`c}68=ycb=ah{ka%butIUDQ|Nyx{-UeoMB1?TElb z%;hrimsSD>hWOgcF?WJCf+YwAozpap)4k?$HTxTA?ze%7AwA;dRr1T?GGgs@hl#Fs z)$j9qM&E1LG$NY{oQDX*_);j}I|EZZ;;+A(D1|1#ldD&o~t^y6+Punz7GTPr9fu03sW17y9wscBV z5o1;MepDmD1ovdKTDZ+-rQe-vPbTfhkBmJqlWQa6yMb}8CU1l68HTQhHy%Ri*3a(ok0@)9Sp6nmcn$-)FiO;Zp>3rM2*!uPD|rQ!rQY> zr)jZ>TuE2TIxPf|zPKIJj0^>o8gq>rdy-iAE=y{kvRc;)jf-CDFi7D@Or+B=drf2l zdW$b>fZQ-9gK8_7o7WiVqu}*T_5*I|*G3(#niix#)PB*Y+@XCY&f`Z%ToDmvq|=yO zL3eaYV?p_nM8Ke1^hO3QO6p>KVXMq=`j*2t<|^B*YP8|_CfLvYj4x*|BN!f+E4bcq z&mV`h>OD7xm&Z*WF!Tg`=`8K3h{DgsAV`w1<0$o`m9QE7P0irUU0== z`u*ilTfZ*#?0Q<0_^W#EvzXU;+uoKZS2poqeOpn+?rA(bkH8H0n{@yhl}46)9`OUP z1wADMv`u6I?|-4_ymac4m*jVRSPdgWn#qaKVAw5QaBX;#)8m*X7w&g z5}AyN9y_|!I*MysBflnSU?rb>F!KF`&LH?i&+ByyBNpZN4LNL{?07lF1SXj<1#>K1 zZDsL$|IpilQ4Np5;+;0`Y+gq`9Jz`X-!Yy2yoOA?m2|+O z_nU|v4)Nx&Z_=a8@BK*rl4oLtr{Qkh+L(ZJLTl+lB^MD_@Uf$ikU^tb6upp%I#$Ms zOdd-QbHez^*tyIUfQ768F3wb>EYA)&Cm?9KVG50dwJJgRfW6#pyMw?TUT_`e6q zu`IK#EPZ-oAv@a%p`UcTYpnTU7kJQnmpq7c2oyq)|9Z39ln?adB9}M`@GHDG|!e{)Nh-mC-`xYVnj$jIx&HoNzpn#1v2G}5Tm($C7E_e*>AJV zX$&#wp-z=sbT3}Lb0iiNLO7=ZF`zJ11A`r{GGP;u*+eThz0C|IFvMNM&O;s{QeB#eLg|S|1QrKbh&rMj&*t@xC@Y z`zt2q>vreH^Skqa#m<*iMn~}xO9{wF?Can7 zmrw9!6|JcOd)li1g=oan6DgYrpwkTQO@y0P&!C|>JO}!GY*3(@`T;AxG9*_-d9g*% zcpnG!b%D28HN=(r#_4Kb)nYz#%xz$H>ywVbCTfIcrq29U&fdt2_^7;m_8N?gpS))H zw*}a)-Q!udE`#jz>6SAHIgRzp(+h3z^lse z&S^_v(B)lKD*83zJoZ4aj_CgG*WnAzLPjZFJ3!K^_O{tNmQ*XWF#2s$Rjgros7lTq zqmPp9R)3}0%YyOL5CLHc+*7y&=jL7Srqt9BZGHbxP9B)OXEXfL8Ysf?a$E-xzawq3 zeGSj4(z_r@4Ndh69n&#NPL@x_k&WUk!ms8{Cj zTDN_;L~*|<6}VuroW3lrd-crd+9DrMNhj9y0grHJsX9R$o4Vt4GmoIL^*|RFzhG$Q zf=$>}t_L_N*;Cv-f^aq~tD5(pIX#sYsD`iHjye%AiKu`*7F#rg#!;RAhjczHSW+Ij z{y44C_4aS5_su9(=nt%wFFMuwtkk0dcLq7xNl6e_d|N}EZ*4Xv(XHhW?9k|{r179` zNR;d+E!r@(q_nvd+0P)o-{!+-5Po-DYn0YmY_^w&A*!jXqflX|v1Bi3 z_^h!1TFlNiiK7oiDuQ?ERpEd^To$Rt$RVqBZ7K8=+2Pq)&2?97xCs}V@Zhf!Qj5up zSo2&yT?3JQF@rrX#8(EpFA zopDEeW#z8f2H1*Y4$lxKVufo6;#*b#Ty|A=6BhkknKhXO5YT zy9w`2W{4?b#n8czDJ=$Z{?uMdB@`=i3e}tprT*vHVE3uAkoWz!+Ov(&c+oKyibu}J zF@~f4tF7FeLx;XMS4C2k zHGTKR=w0&DHBx$>(BSd+4+`<3!R@aB*;jB6xTY?iNM|R!+1m)Lf%nQuzOykT zV7r52&gRYJKomR`wjB%j^JAeY*i{yEi-I14$vLMp?ej<;q()tqXKQpD z!1}=eH|01c7AX~YW8Z0Oz#Eb$G5WoU)sp8UML^2!h9mN{XvpKCJX3B!rrQn@m9bV9 zOWe-Gzg%Z!(j5pb>TdB*6KbY!9-#>uK%CArLc~~fDn-MB({g&e1jedpYmin7o}#ry z6VWkXcq?zSmI)+&>pG)Qt_rU->}NCiW;jV+){#`*4c(ga7y6mjiaOCP@zv(lKRXeGJ-C^jp?H&<1L zxfc^Un~yM1OEV7L3io*p@x!_qr+e4Fl z`xSKBBmweonS|zt$kO0M4evKf*fJbk1#yUl`qn)?g$BZ-H?2LXJMh?aaV}?#jm=k2 z&#a;yE!1wwyRxo*%v~+JV8u22l0 zWFq1FRt7XG8#hp~{hjyA0|{xa6eHBhON%GB>a}4KRY`@Ek@HJ?xs8gO@vdH~ zpyGu1d{`IEu3Vk`+*xajtH4rc&D14NqS^^hA8DqQp2DvPsSao-2K$`)>LI(?s$6slM&$B9XgHFisClg#7qDjxnsh2 zJqv#WWEmlZs)rr!CdvcAC`Gl(OLB|^+IDaqM{FVZHg(T5o;yz^e7zeQ?E~Pcf_vPU znrhg(ntsE@2V%hC((+n~wJvFaHk!$536BtS>X?FWWIoGp~dsdRd&ak z(#fDzEZR4=M<<*C95@m$tAj}iwdbDWi5OcdVnVUn0{jLpF2wE8Km?R-gYw8Rde2tU zqm_mYHio$p;uhdz1^X;m8q9X5@h13vw3qx<13&m3KQ$_d4Qd=(2IkouK`W+28xA1gq}CO!%!lzM9` zL(5hoqqEqkiN0;M*)@TuloSQR5FVEKe4E=*0qK{*p#nENGcNbR_Q)TP$X4$tI zGSPu2L!P}5bR}kEQ*>X;TZNH^^l22(D7^B)>1{(+(gyfm2hI=|Coh?0 zkxWXZcg8*&|NED*!(925Ki^R_YK~%Qj_gGk0X0$nnuj&vpOCG&gxw*I0HtE#>4J(p z6Iq}lS8LKxI(=a(RWWd>0VYxS~qi(klK|bUt$`wmw$^j{UJccGGuXo8^RJ z9Jp!hX^2=#W|X#Kf*b8PAAtHNRxr8|$;j_mE{?`5+L1$)#Oe_lU06}LJ-GQK7{a?x zL7(IBC|eTK`i>tFrq9KvLwv%YDM{*WPPng{Wk>B-Y;LNT z5rOs5u?wz=h2RAfxRvv(xUrLuPcT;$77asL*-$kpOhN?C^a3=F5rlaKvbeJ}G1E5# ztSl9oX7+4Uk*UJb2sm6$Q}q~Q0K1D(DkqthwGAU%ISi$Y_WCr^K|Pfc+zwHutBEpP z6}GzeONZCeb1vApG4j%jVY!&Wp7eK4I1r!cN*QbE*r>uv{g$NnG66y%OI)90-9Rj2 z8|gB`JfT}u_MP})10oFbwVa#j`THorDr~6dLQU&OuaoLkkGJ4#0Q!~K*dNY%z=)a7g{Hy%7 zMzMq``mM3g?}ibA+y$G@$H9}D#i7T-`wV5Q>hV_6W)0b#Ybyoi%(zjNmG7UVhHl)} z>vi_kN@DH9*j=2G7;}63r2c1$kS3!sNxNj9^E zswT~)-U;846=Wr8{bh?W8t&w24~`*#%nzr0a^ze6S((?aK=jj!Pr!lE>qWRp;A~r5 zHkVMN!XxiM!Ye14gsdQD==)Ska)=z#8}MqKB3)?{(F$X11Fkp%UXFt^RPzbj*sE|H zTCp-$oMy3{)Pg8bFW1%7?ODE>OG7d6%eDe5HlA_J4SuL#Ft`*sLWYDm+p~HfB@gCH zEW0HpN5c7Sja%7yh;gKiCu+b~Uf=zlTz(RDX^MgRT!&SsU~_IZUm+Oh9njEE=aXi! zXyS^wT?k_hr6~pz@mr~Q)ePo2l1QeUn`h|=&B9gd=2B)>U2{v`KK%#)@i}RgPO@*e zi_gM}*>uQ_Ta8>)t%mWw?M+7qmr3k&de>)bns;VU!dM&^NduqC0h8D3|esFb;UL{9w{=(vXk#z402pHkxla1B;qV ztCdiVk;7AYq0AjiiAl6bN7{QHI{bKr0+gs^IoxnlTp!mHb@(;O(8~)~)dGV3;wMwe zaK^jI8L9aY04tHC0CY^O_%mIIyUVN4LA?<$pNcsf+zd&IEj^)zHQA3h_6fzfvWKjn zfR!FJk^!_#!!FAjg3E`F@MDFn*ZReMQ)n9@tQ=@$?nY)8wq~#?Q2=7+LLc`7AM*n4 zV*dYYn~u)x2qKr(+meB=`3=IBngt;#$W(=~{Upgma-U8_V@l~t8IjnZ-RzVG17me% zd=Me3eWD-R6i`1^_Y=lA|3D*vgz&Xv=K9-a>L7hkZOQpfElD8dp)o=2swwF-oQbf| zRAj_akm5rht^lh>sy8Ny;ZJ)HH;R>?B$+j3YQzqy6*sCnAdV193XQKc>9fLZ4FL4b zKlKknme!_y?ZJ)Zf(r~*h&l%INCn^V&ExLyN|Fnj2MF|Q8XkbeJ8dTeAh`8mK_zD4 zmr<=NiPCy$I?|rc*3gCD1uGBaU%0LFv;LbuGwz}59}Mqe8N%c+QKZdL7Q5Hhz*Ys+ zzLsc-gL`-ODg*j4H{>fn^l|@-Eo*Ll`OYnuO97^mCm(RyIL_wOTEsF{hJn*XKNNRR zo~itrF1Hm*VB5*mT+%zUhha&RUPN(;oBNGi>l>#?xnq1M46%F5#KWCZ=%jmp1xz$4 zHUQ6!H}E?W8+6xf{N=%+anzH>6f`sOQR21>1KK_gF`fqH*45%xr=i8pz1ykKBV8~c zrXGsx7d3SaO9~%XuvJCo+F@bhsWg(f_^+u?)>6{=wgMtu(%M<*==;GDb1kt@?Eg9%3HTOpNe zSKR0!$SuDutn0-Czch3f$-c&JX$0Li!K9E;x!Uy|NwqPFA~u(ATj}R@+MDY76hUF} zEjamv+lzR|3DgX&PE*cy-JT^YBF%K8&!?3o>A;MGZ4r7_7uG{CTo8fMGDX|@s2Dz~ z#(Z*^b_7Lys&)b@XH5>O(NflSG)&RAz0quIlB!X(p(V5Kb4ZbzNOq=3kHu`1t^`!5 zMuiDm?6w%z%hzHCOjBSad&+RX$CN3VqDU&NX7ZqmMWuhb|KJGK>Eaj$ zqS+1)0s{6&EB6i5kFh;+7RGRn5TqW_n{1*8Rzo;9X~@NN~v>{N&h9r_!Bzezi&S^Gg+J7uPBgHBZ=n z&6f7yti$iaF$A{?vRjoqC6CAc|zrFPIJu1Q$gUZ$Wklea!QQ-`J*SaLO{G2d*j>oHa0 z0w_=SR$0bVK_BAw=N!8eI-tC3(s{9qbx z{qO{GjTsNJ%D)fIY+2b5dyd#|zLr_=I@;pOSk$0*F{1d%fp{!_q&B|{b zvS{VEiM6MgwANz3Evx@Qd~zb)Mwm1Ag3$=r$H_A2<`zS8G*`5|_3QNfuvvd?U49!e z__;V{SDlPqEniVEaOz&yQ9DTRqs3s>4WSAHXq|+5_`*;_&MXw8*0>??(51aj z!;LCts3i0_?Ac_9K-?6~Suie<8V)7WeD^ZL5R+mqzAg7u;TSZW^0&w9xg;tj_Z%FV z0(GmQjUmM0GOw42VMhfEHUQZTz+{~wBJj42mL6WGukT#IEsjRre@6vV&biXQ9KUql7pz;UX-+O2esDMy$dqBjcbNq$f>sS2<=| z9@kGeb+%3pH*x#9O`btMR<)Rdzl?uYHvg=`w#ZCR=VMJZ!&hTvxz{UAY^ZL!+8$kq zv6Xf-n{H0f>^wIx#!5ish4V205NutH8>JXSrE;h-u1J&(u;@)j5b_4)2+)A#IFZH@ zddy{zDq;%1E)Q?HmK!C}^tvQzIsInBJRCz&KS+Bk7DLxM+2vW+nME^luZ^C_zN2Oj zGmBA|MP`HSVpO3~f5)b=oX!nN5iGY!tHKxt(b0Z4GFYHjov%fvf`d|zL-rbh$J!gxxGI$LoI1xD^*03omH(J9SG|;VdF&37IZHqH!8~tx^G?@U!<9^Fm#~;GRo%_sH+uEtY`|y#TRwNvQ)h;6kqe6glcH2b z+5GK0R|6b11D2X_!bME&TolHxY2IAB;AH4;NC3^UsP{nG*|**_X{H;M!=rp%3&4N| zqD^AG#>qI#kct&$1DFpdr^wG9Ja_1~@?%;48<(+@iyv#20l5>e2MFPMk#+A$xmaYk zo-$nDI!C23(=MY#R~w2mzw$MW*u_&H}{u)VZa%c+nST{M@7aukmkM0b%M=j`Q=0PAMpm01i@Rf{rkM_ zYd?n(31Y(TeG?+N?7lFx%TWsyx(*5pK(`-_%MFjGQ{fibQG_`?ZY)kzb@K z&aIym1Tx0*HM1n{AZPR}V(#DgUH~V0C1wq|$aS;8L#Khkb_8RGp=JWb5o<8&rEE&3YV?9eP{D0D+&>tK$R z$la5qW2i;m_*)uguMwEaEbwuijv9j+MZvHjGc#6mh)~G$%#R!&r2b@EgRJ_CFf)O! zm@^^T(2VzYLb@3n_2E$a6@doo%7PMSIOBB8^cZi+uc<77_ScsWkyK_TDO~}93Q8*p zzhpioE#a4?BnJw-T{c}^mig4lx%ozEEWAF~QSwVybK=pL8pXkMS>iW`0fh1OYWTvf zcqyN@#QA0r<~vdo$1eQ2iFca5XjgDTP+otP=M`kuEc z%SUGeAOf$~2#Nm+2>rViD6%YUHv`S5KpKO&mG>!47xf4#t+8S!QSu#735GN~3O!Fa zS(r3@aaja;Vi3aUAqyJ^Kqjf%T!r>bcgU;<#+h9%a$&!!5@lugPuG~db%e}hVLD1icus)X5zqxW{Bo&g7* zd=mE|=icHYZh`7*3W~dHTCwk1<|kTz84*W*o-ZgLSK?oyoXo_cE-NeRx*VVQbAEnx z5g(ZS#11NS`myXba0^8*!I&1k;^pYMr*;Qv>6%;QFguH>Ff~>027Qa`E}?UKEqM|W zdbEUhWGzOL?e>Kk(7J`R5WTr(;puPuOpCp4c|v>MPk!TDn^nHj8vdyta&ZL@NuStpS#N%KGY*M;xVYH69xb^ ze`ZdJYtf&+JemIdOp`!et&0I)Q1%9vdH$T`P=$qCv=^t_!SRyOd}(Nw9#&GDivgz_ zaE@lX*W%h2(ZG-PtUZ6Z1%9^xYK9eH{Dmd>d%zpJ+5|ei$Ixjq+;^mKqp&oZRRZE7 zYX1+_7gy4Bxgb$VC6xSbszfRuL7$NRVw6xmK5qNwEPnE@c*E>Ew!`W4XDUO464=s@ znKFe(!cvPfVSO$QW)dyM#SOJsfbTYn%Xx<@aOrSQ&uA-*z-aT|!_}Lvi@3Xs5#KYD zyGf!SA8(hJz2TvWVW?eJ_nLhM*6-(OHmzq{C6l+4h11(h7IyG}dj<)y>PwRz*ei9D9`G~%l=I>6kv0*K zMEjE{=p;`$_rtV1*~NkYX#fdIdV6sX58aAYm1rDxPF)fnfiSMs&feh z0>(om6*2HeHYIYrcR{eiWQ3jN{Jy%*0Y#LV^rKj7t9R9g0I~ArcdkCB%pS4R+-e1r zS0LD&+uNb=7CH|Eknpij(i);3DFvxZN4o3j3LiizTc~L?&YzVSL0l9Y=4C!!HA>Ph+4Idq(+gzI?b3 zGk&CNY4y-t`5HGu7&DbRtWlCg)EPoDWG|@az*n;L?j3iVW$cK>8jJ0pnQa?b+7rjx z&(Xu}&FP+_om~0isOu!&@9b`WeqV~{>8SE$Y%(CmBx|LuCGG4;Lvn-$%{sywjG!6@ z9-a^pHQ^zm*rHc#l;e2^>tX&dXPUr3UgHdQ0o*#=+r_MUzTXBC)(3uut_b_z z6gFzAaNr7#dYk^YIWR)UY-C@Du&mn!_6M;6L8|M5a7;Niel)@5-XGQqsq8Xn_ z>p-jk?Mr7sYLn%(^VTH$qT?#=N+ZX`O>DhQx*EMobP_$vl=nglynA4h3Xa7tesllD zTx#4T=qLNy^z?K5D-8@LA{E28U2bKUHgZ@psxw*He}a0~BH93*_+<|;#T{AsqKRBJ zZg$u69O8c#xcR-m)euSWs;@$7$)Axke5qNepRRiD_sx4_Cc6nBiIW*bM8*<6Z7+w$93gBcnh|x)eQN*Q5dP+;II{je{Pl-OgrSZ zx5^!1_%VRGQLcz-)xw#_hf-@ZMs6hdUEiNtB>9Xx-jgV*wnR3VYVayiSx$C-xk$F4a>iFW?4+n zmPUoymPb61PAX;lUq&}o!8L33%NyDSx1TH~$r$as-b_`&m8=z(hT2UT36j-=zHohP z&t`1R6VyjIXx9?P6Au5Etg9g&<B~T-Y573ZKZXMydhO&vSlbrt!`y@;@B2y#3Ekq-~2fF<$@4$NBJ+(Cvnw=vsPM)*rh8adqe_DfQWQ?t!R8ly6mWv~9 zo>-kK$EqbRbj&Hmou6d#4%j$|!E{sb8Gv{6-V|4^M>$BeLHv+ZB1ec*)LW+Xb?t-R`15P8%fG_IC zj(+G8`Hmvyf!4N9w279C%@$n7mwnHe`Py}9tLk@kiSb6VlKY>F>F}iTGqv??(|^mR zb?Iev*fweu%2j}&=`BCt`EEftNFni=k;TB(c(Z1hc*>1G*_J2g<09PS5RY~M0i>2F zgjn4O1YFB=ynfip5g#E_#eL3xPb2^z_)={}Lqs#42CY@K@$oiK#*vzQXD|ZvVgL12 zJ&{hxjXYDzQ3KUceqhwQbK2+MVZ6~xT@Bwk+^(5p>g$`;QOQ^p3sZsM|*V?V_`T3ai+Ea44|n$uHJU(@udmWqjJYq6=&~)%dC3 zc4D+B5$+aZr*RhGY}bqJFa+Fq%}O$WgfX=%u8njor_6=O^7={vJBvlrsa<8s^2)k} zuRPSk)AtFAHt#-!#YtSiNHSq&8#8>wByi`ro!zgOI+UW_%yU}iL+dIzMgH=1YBQYzV6IDoi{+Y{rhhr zA9X-lX?S5A4F<%6BBTG@en9KN;Hjysr$1+BnovHJztE)MNTk}#G>3(1Obn%l*3QAL zt*s!A>vvWQX4FZrb%*BQInErr*s-y1(#!54WMwJa1s^DWosuW6)I*|&%iXDg6*rXc z(vbdUbT#lG-zH8agxd^cuvR!m+#Z5FK`HpZ**MA%Q>{ZMe)3IqP#SG|zk&F~xaQh$ zkDXWil+h$5CvR-+Y|<4*>d>KaNMK5oO5j5p@38RnjL#CdgIhV|Y}4}~7iuy{HGC z>~Qyx_YcJ7Ua9e-g3LNKV;kp^9d*gSm#XjDaxOaroQ_XMqJ$TF=!PeY9&Q;povD>r(2%lENB&VzTu076of6}0u z2UoVgxRxn;J#@lW`6E8IkPpL{a!n`>t>2yqce{ z>fItq>F8+c@mYm&pk*kK({`2=x*D8Y+1kdK!!Q_*);CA>1)A{%3}sLSJ*P?1r`2bf zG4A33(T%kkYBs3n5ztcfoe0BfJzs;k9?}GF(OLJ$q*024<5a!I4^jQ_{kvei>svca zn^Cbr>noa?1w<9{Hz~AKyoOnrVjm(th~6%l5^3?YzS&LcOVU4gI7~9IogvP?!d;Ki z^8jr$A_3tgUJJ5z6%J-JF&cai=r)Yt_Q>B!8q#sHwN;k<7iZI{J^&ShtFt6i#kCcc zz!mF}&79|tmTMBv{dZkuqA6i z2@BD+PHS^WGdKtiDRy>!{Td>aq5#DRz)@ncbC}{)l~zGHAXSBJ$51!zUea5m>%d`0 z!+j3~Opl!CZHWgC0P=8>%G7EC-37k8o-J~d=(jQlPeaRHTL&4aHP=A>OI=%z&-Gyvy9t*lyUrrwtHjFVO12Z1g`Evz*{DA?&b~vNp%$nMbHt6K~^ONF%*6uSR{3FnRI6_&?+mq{v zX6Wm-*!hFVjb#&%Y{xyD(MJL$5x{R^L~#Ual96P4(jTq9sRQ4$V&Vc*+C28e>s`|Z zP@0M*lx<3oK`9vYavwkbh-7m1avSgO=d!706i=qT@IpNzh~t70GfpH4t0Vu^k=4Wx z#d1|1nt94{9GSiNG(xDEs*^e69`Y}YPnZO`qF{R!-YBr;eQV11YV^H^oCXG8Gj~8RsCN4yqjZp4_)a;y1R`o z{Lm1mOK2H!?o5OwAUE&+{R4%MM&=U=l6GNB>% z=cU;%HeeGt0U3S>&shRU(|Ao=B)N^hBfUUYD=mYBgR>X2Y>VZA^g8%*@R*k_oq4Kr zOeI{&!9}$_6)}nIz0AG)m(u{JzBW;9eY$|eh-3qne<|>PsQ5@dF&sVMYZA+vg=8Lg zcxTp8wIH;$OC@$rnw8W*>;%OsN?D>0S>@<)Lp&e_A$tk5=ty+aUYzB$#8IUGE^%4^ zs4v5pq2U$Zlvez;LH{E(^Lfa*H$%sruRcU3&)WW%^jl+G{Z=X4h#T@C9?NMA>?Lk% zGAuZ)N*Wg&yuslfyFGW9O+px=1H!7Ti75I6hX15{Ys zE^TaBa%a@*cpabC7_MlV7!x}~5(=e61ZEty{-bb&)YPzPE8s#mV@#|NZwKo`_JO%* zv%oR%kHpGal!lP@YIi(u-hzM&v2*Xc#emIs6q)hrQ|XN2HTRE!cdh%(ckP1Ce)9tG z6{y2ZNQgBf?Jae#pCYB;-+(Wxi@NVpjak02bwrlkpA^|Az?{LpVql9&6bh;YXp%h7ux zt9OCujwf21v8LT?i~ZK)u3V|0_px#FPrGX~Xgwj(=-CBKN}twQOJ+eFJuoq5)DP!& z!26-x5>4L;s>!x~kK{50)-vF%z%?j7n21P7ubYI(CMdw)=cgb-a3|IxfUp|&?fHb+ z?EVVgWH{LTOXWW z2;mAF3?&hM(CZ+i8487iA#48m-kSV`|BkkfDh%;>Y&UH~5emRi8KlA zsaiT%sSRw`6fEG`>)F)BzNp@9-1v->C`gHP~lg54vu_?Zi%tQ`__$b z2WX$v2r=dhIa|^T7}j(0@)Jd$60*DypY}4#mNXY*xSYx3$ItrixY1havrM@8e?(nX zSd`7%r#qLG?p#tzBvu+>>6QiQE=59Gx_b%fZs`=HyIWdX7wM7^f$w?$C*O5>z?sj? z&fIgyFX|QPM^mRW@#q`4To3dt+fp4Ql;XMTHpWiV2GM;-GbK4`X><514mIY!#R`}= z_4!I@hTQMD?yhf0LUedL-HSdgxE^wTA<8EGG)eE~6qj*n|<@BeaEFXX-DBR}YC!=EVCsjMum;utTaar_(QE?gq-viqsLA!Js&ftjcZA?p?Z$iwl*I>*OCjoS~Ce zjqh|4u$@>_nBRb>3aS;TfHk1L_g!0CL<?)XRF6e z+s7cH#kr(#IX#539jkom9N53)gX45gv+Po=OLmFF#F*S#_Vhig2 zra7RQ0Z+H%QVn5N0YNJ+ef}jzfS$gv8uuJOXP}^+I&s)z*MRV8nszhqu_n{uu@&C0pg4bvC_hmL`5?oh7DPf zCcT|(at;v)2i6hRP}RT?G1hK?WjlCT$b&al35fjzK!1woCdKyD?KSt`-uujd{ugpS zN)6ac*9Lk0J0CvvT|4zU6pDyYylHhF54)tOIK=(W>#`6~dn}kVbW>RsLEG~=O+34ou3ee-mD0#}UjH9M_TZz2OEzofoT9Ze}V-jG%Fd z`T#cR&}`W1=~^qvo+N!*#;{|k1wtv}6^T&>Zj+xF@Y!N-@Zq@wwKB(_YWi%>rF;3K zV=W^IqGmH&?7i;Sx^yXZUa2R7m_BAnE?i8J4e*gzeCC+HTnYzhPD^?bqurO`rO9LN zyFXn=U7HPS6Ua;T#~#l)W%khkKANr`@73aK9>>v?w{7}pbrB@{lOY^`Fiz=OJ`*ub z3;x-O+KA~^glnlg98~`LcZcupJPs7T4EJ-b5Agw4x4Q|au^OxYlh{xPh23bNebx^C zkz-sr%4!Mfe5XUtC^Yx(_bd6PgP)LrT%FPq^R9H;Jfz54{*bwl=>)O~c<@tc>F5aM zydQ9l-cPhcfCQ^vD&Myan3UTUet7&d$_yDE@T=;QKrdN)Ce@B1KQ<8$XS z61hzmxt{~iELDzn5_RvdXWg}ltNC`?zb|rxioCIZ5O>ypwwhu7F0|v0fsPJHGo9BO zMvkRO61xx40Pc~jRaZL882#O9p{Ai<_n+5?laz3lL#VZ$mfnj$?y`DIKnwL3>h-N+ zOy5&qI*-Ykxv5I`gy@x<3gR}c;Y=z?n+q1@d(st=h-9p6AQ!{u<;BWbW9a1Zs~!5% zuowLtPkJ5q^SE_DpovhHHbMt^EwX4hl_xR1y)Aj;qG76@A850(<)3D+75(GK4>~582^}^6le() zI$K%qw4Y(dy$@fyfwvdC(4X?~anqNjc-;m?xEf6`GJbqZylfrqr0m^iXrIX!?P9Iu zX!+ck6&0?6qZRt-gZn3&^{?_5Qx23=(izo@1j}8VuA>+#%%na9JU~q?X*b?PqB?_dg>L7|Sc$^)X<$>v!#^la3+%}usr1kBpJEcE9&cMe z?aMLvY~EhQ0nVVNVAzgI*UzWvjXVs;w70gw%g9~2r{9wT#A1vlW+PS~ctEewj+o&G z7O<+c35Z8)rSxpo;-2#OqPm3McWoPfbZd4phv9ejdaS+jLDC^sWFrG9Zm*eH1cjJ4 zVj^EY>~=2wXcirQcruk|#dAV1;&d^PN5;N4wSu4$}9*TBd~4h{xz zEWH+z94xefMjX+><*aO*%R&idww#!F`p>@`mWc&=N^W0-5Nj%z&AY<&L?x*Jh2O)i zyOd+v`&Uo}&?iSXvWSR?bXE4R0Z)^X#^eHUFfC`URT)y?S2XmiAV> z3=efl%zdN3>;@GBIVCqqHGyy#%3rDxh(Fm2Ux{8Ni zogs(fI7}{ng6b}Y7(VQw?mM-%_in*92FUt?AyqzH>xP)vYZ=LE5%zS;Z z72syV)G{-wwlBwz-n`oYSh7yoxopvmO9^*}y9}ET9WSn9V(w%OvMl*&3#+)m-tkq8 z1yZNzgzAKF@1c#a2rj08l-bxuY}f0&MMF!GEP;V!!jO&#PrAIV-+@M8Oq+SCV7KLf zx&(kh3%a~$S`t&gL|-jsk}K{Fv|&?bn&$Z(#u>)kn&K{N=3$9N>(y<4}uo{ zzyFp|>fNV=ATpysCEThJ-sTz%_%L4D(kU_4NCN?{ToOaKV*MX>_^!QRj@eVMWUyPh znk^)ndG<{x`B{yMdNNaD?1+A4na;T!-5+wn4 zort1P-c4+aX`8p(jhn5+IgeI$=O?G+fyt)?k^@hU-Kgb_)gd!cv-+0^1Ygyloim}a zV%d9T0$siI{YCb4%^_zpPBvG^&!u8DmO&C}KjUX~OVUue93(k|wp~(O9){9G7vO|} zvN%rfoVU-;NQNjEJP48E7#jKoT2Eg#8TgR&s63iqL;KrXcCX{hP#fGPZ1eN!u$#ND zr$5m#_?=09U~3AmFLud7ibWSnCs7a>PmZ1jMJ(R?`rdw@{&#>k7d7fJ#q^a(8N-g0 zF}az`UK01TpoDdREN}n*fl0+vGgW?RwV=k4(h_LgMNU>%&&xe}Z7x%wGj5Ezh@z#4 zV&dVTcu(Ue6)%6DxaND9ST{^#NP@*1<9IlzK}uG_Dfion91jmigye)`3gzMY`^0~N z-u94{;0dgt3*c2xZc42s*$Vx4*i6~ZKjzv_)6&tKyIJBtd}0u3WF>e5-j5B@My&GC zePF!EMw8QpJp+Vue$KHN1|oVwu!-y2+GOOMmU;!UVeH9t#c7H-sPNqFtt}Fu%=~>> z;EbXJ{qsO$i7=taS**acxJ2_2$E3V-_j2#)9_H}X`pp{bwvToPdrnRmJiA~^j5?Jh zS9nM(jufCI(ER=)+fB8n=sMXg-n^5wO3@-*W%=lOik&Z8DuE<$&^?|Jv%_=WkQyw9 zqBf7Zfm%~^v%t62PQKxJmdjO8a|}p+q z`+ilNS+1i^Pj<}T8sqQzfY@&*U!*=dmFj78qkse{<04T@FggsPsg-j98qwQW18aLr z&4w@5v>T2k_4Qpr57@qx1QAaO2?2gLgQxzd%>iyL64Ri;mBZ5j`VR`qcgSALGG{|4 zC#OOPzC*#DSOZW{4c1etB7%c*sxO!rHN5mgrar(6PH{5YX2@DAg4kSiX1}*jDON;$I4a90(p$;9M{H%~+ zX=$1K&m#DCDerb*GU;a9wEORYV}$LuKmT3x$4A7#AyXvnnSs$-pf;XZtGcSq_9~Ic zc;w)^J4x^iw}_AnU!79rmKX{L?%aO3?n1l^>YgjMG`Ct8_8BzK1t&j?9AfAbwSB1w9aeh_32EFX$m*X-C1no^?gbK|4asaQy08Sf|u~@?o6=ea;W1L zzothz%PNLSA#eXG$-d=Yy|&h3#?dwnCpjb0gvP#+MI#DitqXQT6%iV#8g%N)SDrWs z)lU|et>DICO0uQ8W`G9XT$n0zcDY{uI(eSQ7Sl)toKVF))=x&te_FJ~Uk;hs`eJ+M z7A+knxi_<|-~(C_2>xis+;GBz@P5)?jkpOE`r*qHVvz*absvajtn3+~8LG*um?%xg zisc+AyXTaOii$v3=isnZ;(T-Vh&FSe8=O9k6oo>Sj>{;)$tR>mbxqo=0)@hW@g;xW z>A%p8_}Y+W=u83sB8%0$98DSEyYt-K#)Z1W>JBNqm(r~ zoM)QMT~9fzzlg=}`pu^o8MH7>Uv>OKN6q_)sObDQyyCz)JV}(@T}xU9hQdQbTDrVM z6R=T&a++X*U$oczozDNhCUGz2?Tda_7AXbg>}<`S?(XiP=Ux*qjmBw=xyww|Qq4^5 z_DMm=D2C#7{bxg&`VI1mA9GF?l38Y=v}|y)qGz#l&?Au%?_3=#Dj$!yDo9;pr<^oO zg(PR_-)k!7ga180129?p%fS_=QsAd^*@jlOTNvkpGSU67OcG^XyN#2x@)3||T5Uv7 zO5|c@)eQ?~PFj(4P9jJ_tJvISzFC;ogWh?ZTJ|W_tV$*qkRk*nk79fQH3W@NXjHSK z1b?Ter!Sr6uCd$UG~^Czs3CnDG3ph3(-lDRe$$6|n8VV5EawVb^?m<48)q4w3tMl1 zbni5EOhUlF-B`3s4AeN0GOc@C;7{d@1+H@Q+dy~m;$#@WboQ$ll;8ayevKl zDfYFYuzf8l!5C}*#aiIC$4KcgZV?y}p^|=RsfURYm}ENsrpHQ9W^gBdh}uC4hP(99 z&d4Sf-L74v{xqggX{=RtPUy3rW+K67a=|{&XVp{+@hPiz4Ykh%3ID--6bh;wzzRW? zH7<|;#3-u;vece)T0dUG8$?yWwzUj^5NLx#K>OfnLn}MmRqMly)7zmTa6UDis3O}G{fIu)u-0(yXPP7J8u}ng43uCsqC!ti-Qo<#PmnIFP{eAH-uHH zgJ@*6{%lELqvrDoLNuec+tXk^;j9|jEL3ixye8o@HQi_|D+REPS5qiEhMo-P|XAcs(t3m%o}mr(*2)Qoy>9s1SEbb$5B0z@Ra zdjC@IIJjjJ6*?O@8mgFN4eXDHvAMG|A@bwYwiWb*Cb`oOEAQ2R``Nw5dLE&m^?2gt z7wm@oSl1%LY#-Jk4No1pAW+CH;Bqx^%ooN+J?XS03%pg#)B|Ui~mWf6sa?l#&lPG|TB|FdK;_50}w3K>1HqR9u(k~}G ziIzbB%AzZ9$6V-6aSt9^XQ=xs6UgcmKmX$G#pV&mwpMlh9%C|35;#kZNp>K49;IRC z=om7H_N;YVSCD0OWuxcsU-56_^)B>EHAVJ@cs;26V$Hu+6_P<=bJV@QO*}S`Ho@`6 zY>(pdgG9f+fUAAdOq-yPgmTDSRj~DxhPwKUFg}o*lYZcn#LvaW>@wqIMJq}pucGqs z^CNI3SiKAWH`y5h8nulw^jGd_gz0LfOtdl?cnm>FNV%ESutO?GwDzbPpmOk3h^saS zeO$O`Yhy@qvcN^hzrM+=Z{40PMgM#3-%G(d^uUAfCy{R160Jb5S}jFS;UL#L9{N0K zg%+M$aH6-soS1pP4R>TYsY9Urk)2zBk2ZDx8IYv0ahS)u~>lt(?})A@_DA)<%U! zGiI9Pk+(|B9;A1=DPlvr0swyjNQQ$BqxA8*9nxr8Mf!(+VO=nn-8{F#+X3(4U$4bG zgYw}`(p&jB!IRNj1(c{iX@v$t$_}T!u$WjM{{T(rp>L;M$s0O;rZ*@4k(+>nvw~|b z{t+NAg!9rFABmoi@pgXh^beh@W8w$yA>RarMkTk;%-o3ELfwhzH`LxqmX>bli#B#^ z&Wt?{snXugBIvalLD1(aCjVXp1n zV6wTtGaWF&g~WhpXlTZ}+D~(>Xz+u!?NauJswcHiC9yci`}_f7z6(hBvnJjpJUKR) zxq{FbyM)yb$AHHW;}m8Q0`skpYwGHX*YMk6Cy)6#vn&>o_3b54I}L{TC&^=X-mHIQ zkxwK6sm&K0M%um6#|%ZuYzZSi5~Q#r(oWL@(Zr65PgzuzR9XcDF!ayvSKQ!y63gCL zUY3TZh>Ajc{;v9f*yUvvaZ#>f-=5iJvU~dyN1y|<9J=?NcjWB50@-D0X^Y|ilrWml zY%ayZ`?m$fa1gw+*;bgu$CjAvD@ijAsA>8LkOI5_f=BSz-^uwMN&mM>Nlzd%VA$wr zlYp-M{@-@LR028AcW{=7Q*;b3UW-IG1W&5$!NUt7Nk7Ff@PT%3fx&}rBXgB@Q-R0& zS3@}m3oXYItrRxkQ9Qp5oysJ=D`X`iqPGA_yIkKBF@tNHNL)K;2Fc2Vmg$c>D;*35 z$nO-ru-&4fz1PEVG?$Z#rEk$b(E%fxN*u6LoToSo5402>8$k6Nmd<2P+@mHfPw=FVlyYU)_+MS0<9TTOyx!fs__g8uu5Bgmf|pgyE;;oH^yWFRobi znL-ujLuG72crfGNpIs#jc8iC*p~dPe&lqQb!YADh zo-T1sm8romW3YNjQLB$>{ajcBA*_?SUXijOa#S3&92T&q@%P)G8UfTC9K-4AWw#T6 zpqGz_!cEd34wDjAf8#gC2}JuP8<7)hOSFE$9*osP2}PbO;pm$x#BK(ETPkV~DD zUY!%YNYH_wMp+}(SOZ#Ua3mflL4*h2frS>D78IxUFq3g!d;8!gH&B(fp00l z7F7A-_F4;9d{?fp<2_%Ee*B@#Y2qtbEyam>!Bf^e=GY3s1G0s$w6ln=b}5L`nXITZWYZt?R}y^p-<=jH@^Ar^MI#aDNyeFvEQjFp?al>COEWB`L+>`8te~2)C=jd zi_$(Pf~?_vg1cF(6635)^vM)Y`*bSps$Xt|h0<)8V#LT8Ev+fM&eSVAV+OMgBV=Xp zXD;6qTljwRr7?te{Ovqt!bljs#R%DsBqM5G1xqk0GvybTz8J*S9Jj+rO=`vDP(%%% z=GysbC00-njR;>Kq690TBG;dl?0ud_48jXVeIHz4JC}wPPy5*vA-yCtSv1QltMZKo zjE&UZY5kB%ee6svp|@gn;HI6$`AY0&Gclr)&z1RmR>SJH&vG8S?{iKq{QX1Ywga)U z3U$sz|AMpIT0#G2*4*j3l7x167$ONIoIa0gHigA?zKawlV{cdgvrU~w}daBYYV4bAw~8|e5}DNcM*)3 z*9=FNU%RHdNItQ7@txl(a}tE3W8kD%hf}$|&~{Y*qO(+;BAZ}Di$WOm`%JY=6LFc( zz!w_&0?_H(+1f&trN~bWda+<~At^1`Z9e-^Gjm3L!R!9KveQE@#XyFz; zR2)!IphdP$Z{N3eCp7;dB>0OC+%bbR`lN;s;uNqrv9vos!b>a>jR{9dRG&GGzc+cy zEPwOZduq2+PVal7b=2>|AkPJI39l=X#0&hF?@x$K{r@xvJhgTXf0~<^d_3-cXtjMd zDAmAvo`&-2i!*gqZFRw$8%@1u2bHhCpISN#_xXvGEn=yt1pcHcX1++%cMS`hFd?IL zO4Uu|;jBs5w5?VE`q$sOBi35q?`GKM%5CXt?^EPFw=oQp%HoO zFX`5*v2?y;>{ z{M#9k^SqhB`^dOSt6`pm$F*=xnM|&pn#1(Lcq@Y@9}WFey$;X%kM>7EJg?}J zX{%pM&T%7%sFXjjF?m;W(H~(?*t!`aAO2G~Yc^S;td5%@S=uF#^j-83_vIxUh~ox+ z26``sTs>_wOMf~Ky&?!VSRuY}B1y6JMHZoY+uT?&0@1Lr4vVqo+cC;1Bv6Y2Kk6$IF+>gie!F~w&tGv z=!^jhd)}mkbS;A{U8}NW+(RYK*G~26xgsOLi#k`AL3<4*0sCss;EH=qhsyQZsQ8Ut z=W1%v38ay}RknyOdEu8|@Pg9_0|O@cLqIFgmLm9A-<}@Cm@2(CH=WB%K42n(@q4l< z$UF@?T18UTblk49DBL=Kg&9%siutl!SKD-p|EAIHs5_ zRmhE=XB1>)r_8xv4V;36bxN>z*rv!Q!5UCfj1G;{Pf$FS@qh%uOe@js@#aE zh`(L}r3m>|StWpP6j@vG zo`&}`vCng&nEBdbdl;hwkBhJnW0#Wt9z>b?N@7Wd3-=2_rUE(;v?EHLnZV;2wYSc` z42+bdU@7uVA;-Ov116VdQbvTbbI--4vX(Yn7^7P+*h;XyM(&$k0i3A?qGF{$kXu3r2tthyIqxe z{MbR`_w~6@oQl70&Jl-iY8j{9{$uI|660v%R`Ph&)exS)OTz}Y?diD$Gnru)%-fK) z4}GnvX1g-UK<*P`mHYYw+G4r7_9g!a7^nVwD{mFEfCd`QdCm9InN>4OdFxxV8O82R zIg`D*jIhPMU8g2yg=MJRp}5kBbu)>1+6TKyCF(h;=qV5P3qoz6G}$rQd?W{Gc%grq zU-0~LleV{0Kv1FywlxkCYAhCm;3n(^T`i6)uHf|{+zQ@clC5osQZp~<>=*(o*YJ}( zWAV}f%1a{H8~=ruS}x)bV_9$(<~B1w9_of z_x$npm3Ah=AD$+SBaq(L&ugTf|1sGT^)>RmT_FgVW}FrmVS$oPF%o~FHG*{ zKx*9Kg}eFpx|Kgm10K#+`LCu*fJ*DF%F5rLy$aH@g&uUS`Y%NcnHs551X~n8iY<6x zlA^VTze>T(PYJRLz(V$xKO0>3N#GIsy{CLZBI?hj;fBX*=b!}!GGLXa_&JR%I^%f8SH1U&2kn6BDDya2d(xDb2t1)0Z^I@(R0$3m z6>_j9A8>9+hwKhFOlYFT;;<{6eBAI=sxAQk(5ZgWZi7XNcF^AEHZ2wL5-4SdBd}qH z#x&yD@)Z{bdL<$Ycx{@>K`U0#k1hlBv`qEwsdIHAa>k34SAQYnc>UWrj*ct_$pvtp zaM{Su?>0KlGa7MR(;$zetWiIv@tK}}SV&SlJd)7RWKqV21OG-EWB2;TgE4o(5)DzI zZPV3ZlWxN6Q>2mBovM=f%ymwpDrS^w;ZnXgr@JAvU9ho-3sVD!`w51PjO+P=kyTTb(H_Vi}HjvPf+@!61K6uN%GXdFH) zQ$2?T;-m$}CCauIJ5uh;R=1IlzYM}!obVuF%+fyX#SqRTh=8_^2Aeu7%*LYOoE-^} za+A&tSyX^HQ6D9l*a)Y-ksBW>eKeZ)jdjsNT$g%BSb3-Fd7mF(N1`%gw0r)`RAt}4 zxj*{hUzs%wC7$azXeXNI6kEf^@d?j`KVQ#mpsJY0T4EX(!og_b9R<{;%Iqr6W2Byh zZnyfsEq@DOki}c9MmUvldmSs-6T^Rs+*e{yI=yz#G zp!XB52&V|Iqt(bPZM|pNZW_)qv(>4Q7d!X&_mpR{Sk_eu+1 zDEBqlX1**d>?p}3f~57EbHa_f16XxV?Zc} zse;~fas~`i#>G%fTLLXqZxfgIEz)|6Gfu~x%f*UZ%?sj!RcPEVqB{abqG49Ss?iH$ z*%oXtMhrjX+NMnI&)Wt3JlPE7!V)=J@_8s1sWnpxEaU?l+uJ1zk&K>iL_~pt_0t4< z>nDlY0NMd_-V4t(tXH3nGlJYZ9*(%cArU70v_t>Ot1dx|tkXiFcO`g6T!Cm@-2whu z##59!>90MKF;zCr+J&IvPjAt0aRWJL`b{l{%`oXGX0FXreej{YSVGOQC?~(r3h#C^ zQ({OCN&T_BsmkkJl~0&#{1MxB1A^pN8_sDg&t360xb^g^Aio-^=%LF2%4v+<$IFkI zlQzE}^{tZ(1HMcb9*R#O8!;LuV}iH3fEO1R8(2c)C`OGV)gv`-CYCH5!Ye?fk^XhL zaKfJVCp`Yt?_NTeu4amP!1Wc^Vw}So(JDmw2%%>?seP!-Wq3)dRuU(pw>YrTf~Ama z>D&~KkDP9duKvd`wbdxqzC^Wsa(dhR&38ANWanA+pBYFPfcL%f@rRV~=S^#U1`Oil z&v>_I3g-SXaV2vxjl`B-;shJg4jC}_W7dIqB$m(YNo37La&{(PZuF#bzX5X9gn_LK zw3xK~ssXze10HH|V?irzc6>EddjeK)drgpMd~>Y3GI;(s4`%t4cY3Nk>2~tNr#u40 z4ndC+BGv1txxOA2vbw_4T)7vGZshddj!19_RLeZAqFQE&$8Xpmk3C6}Ifz!n2P5~} z$ghenzOhO|&xNweC+YZddd=}#VYTjrl11F>2F;j}qn%ZA3>ci%Wftpouz0+!i1d_Q zPq1SyQ8!jmJ*Y3FCW?T3;et=+PLbuF(mnW!=M-+9k}b(6b@*hHdT{SV%>NeDGGMm} z-)eJhK67!2N%LkDuSQ?`XuyN^0m7O^e@-1tk{-|T)$cc`>+<;h?p=aEfdYJPb(cJa z9F57&-58zCZW52PK>Ap^h^^y2*>CF-NWk7W(hzJG zuFT3zr$-XYV?N;z^#)j|6Tftn!UJUIdf=S6&V)q7#OFga@3-2JQsI+-n8uY?hl-A;bc}D%2;By`Qz>I*;uA<-Qq&S^d{l($QQZrPvmPH9;= zrh1}lYc6RG&{u1=C8Y|o#ZM{46pqWbpocJT2f6btBV`%ohNH%U*f8MWuMx=(*xK#C z5}ehlWNXru1}5j0ey+041)Z;AU$bOVLBmu?i~Fo3Sva6wWm@84Cmv?Cy%2#eR?626 z##$+7IKTH!+tZdG;Ax16#62Y~a&mocLzc9Y4<^4z($KmtQL_%^pf~@9&;HvF08+9_ z4N3be-Q=T()_4c*G?CI9ORAN{n6VzmW0HoTIukTh<##3__rJfoy7vd`g*EWhHFv5t zGE_^kgnHR~-T>tl@PeDOM{T|%kMV34QP4^OWM!dnxwIE!h0>$Bee8v@vD+)bsxr^9 z$Yo3Gh(*4{lY57o)J7;`W0MfP{I1L-MD<_2Wb}TsuldUoj2`-2C$LzPYqUk%!Hd`( z=$U4NFh^c508YOuYUw@K6+B^sASHv>Y5{JrM~V zo?k{7rh99h4L@#@O=K^gp)~34-(cfx=#&(IS3im+eyov0az@$1w5ds0mzNZNe|T;0 z@h*cgn_6{awbC z%uhNknP(JO>4(E(qpzMfe1gd`ZWbWJo!MSgpHBK{s0vpP7ZhC|&z` zeQe$-^7OFKepbX8^sYEQQQoEzBavTQ=m5sMrr9fi($@ot>NBuX=ymdeIVz&{HA5N* zVyN`&A3hQP2dy01#oh2bR5R(OZv0JqTo_a@Qf*{7hlkeG0^`@pnQIp8;1FKhA{Wch zr&4ifd}xnoui>X9F|2bo<}CUD`yumRhO5H)l!MTI+wP7F&u#o_3V7n`Y%$u|zUH&# zc5=uO(IHq5<|YFDp07FtXLJJicTq91-qBHv=iUE!Q>=-RQ^xW_rumLE!ZDbDfoP>n zf^YAU+XQ-lIV(QVzpM9?9PcgcRoJ%K2n)hc4oseltpfAFUvF=%ijzyh-0RUmB@P&F z{Vq;OU7VjcYtVY<=kc198?X1_T@m5M973^i6jIL_M&e>vS7+_{ZK^(%Q^uR_{*y08 z_!z>)EOfdLT~J9>>AE$tbSpI55GaLWOq0f0$JeNyWxm+AxpKD$0 zl${XX2ZoZInFTOB^fFE|rQL|L7D0yhtMB}#F6o2XmslF!qIB$CGfLSqK#S+bQNJa^ z1oUaJ3BVtgV;px&b1}PfAOczGjXATO7^}#94~u{0wILn;5&`FQSK!#1}>Aip@i4QBR0<62}Cy2GCiUv4YY^1u;dEmOJ*S zhf@<$02m4^ffI48u1CPcXv+2@>?iJBkx7=3k*HbQIVHb!uz7I!iebNlh1eSpHJOMP z3E6HugEGCz2DNAkt}?rlgWwQs!n(D1e>RMMvsW?(u$t`LtQ)$_8a3^G zJ>$lJ@DilGu)Sh6W9ZJ|))orzA24`J&2{3bG#HzJRc;Cwd_%n>%<|+ZkQztaMdd zWoI@?6g~SA+M@FUA8Tmw&{eAL3Y&pki57874$m#Jrv|_QKz)34lx^9odKdQNhtTa2 zklvpEm)^2{QoxDI0n(~3)Osd`ONXTQi|FvQeuFGOmWEiLHszTig8HW^8jR?=zp!~z zA&2mc&dWhG&(j~n+eLDI7h!q5ej@+jbvr-AiICr;TBS``U|cW zf#t=O;G7;Eivkmg(1E>BEts+(w-||&`%e^F>Gi;Kuh?y~I(fENk-M?k*h5sDbWf~5U*&vy?${ezA4tX!&Q!XZ!d!{NpdNF@DVlN z`Nq|UR$T;TY+6x%=gDNXSZ*fj^a-3mU^oBN$76H&@Hf+C_4|pv-k`QcsLA|qaDVTA z7$vp&E#0wa6FaY^mzs5-p!mG( z>kfTPW0 zQIVtw-=1ZjSua~UEZ|bUs>E9}GD?!Wk~;eD8a%a_*q$wS-$8fq7)^AP$ulPFx>~|3 zPm&_)Qx@Ln;qCqg#y2Q%n;CIp+#sHLocNFuMB)ZVGG*_u`6x#%M$uKUo+u_T1OR%& z5w{h24+{A?7RMLX244&qUQ)1hakaWgk#ED`= zZ~a^tnY}&#ZNNf6am{1F=Nxsx;g>#+ul;aw5;dz-ekOo{n^c1?Zw`myQ>1kyE;sZx z5VEt$g~nOAQeX-#HLsf%pf=&4hV$zBtDqm(u<%wgqAY38;b^0rx%4LMKU3<;(zWGW zkp^6K0gDNoMCF2Ac$jBya$Bg#)doULYwM;o|1UW9%mi!?}jkBcrK761@y2Dim#p@`;TXeX^tiYyZ zt2bz()L^G1#IExWU!-jL^6WnldXZwnOjFGC@ySUSPU!T15sNFjdz$s!o@u~QJ6cvH zuKCZO;%d`pn4||O3VJsnEGg<9NVS=&I)t5lOkw{^3Ro{zq(VMn0$viy`*2e2Sx`M# z`#4s+bA5aRL@lOi!na6Hhzqxp{Ukb)$O+V&yMh%wE3M6GaVY4cIIQy=TwK~EzSls< z6e?Z2X}e1oRBFF1u2|#xL)+s;D2gTFL8WqGpvq(!LpDUvF*%wC1#gBq-;o;d;-0Y8 zp^f7Z%~0j1PkuibsP_gPEwfZ^iNvqTku%Uvt(pOG#25yjuI8|CzhC~sJmgB^QYD`y z3P#Bsq>U+sm2;dWE)8DCr2tq~U@B|*DM4`;_g5n);JMvi$`rPdY9*GTp5!0eaqAFA zzNW4PuB+jqbX5OwS#!Bhn?#Zoj!BL=b9nQa7y7AGR>^0G(W_Z~##lKLu~c-{MBlr? za@JIueJSjlSkK0}C7u9%Nm&!;a({h)``z?T&(852*ee*mGH=FHeF)+QkZYsekU_3)yCEn36^#)z+yaT_p8N`R5xa=zX zEJ{(QU60g!Cheha$md(fo}0ZI-Dd(goHJ8M&Sm@xk}dP5!G#>gm(+6x>L{Vv%oe$_ zskWk$8GXN=5ySPw!+ajS1u%B5W?7bz!xxr^sav7b#@3cS}OKhfQUPQm4H7_ZtO6>uk`vUJ(Ea&-rXCpu) zt>rfWVVbbTx8pYd8gTL!8<#p7sSpn6@sE_2?-sMBnA*R*3uLr6*$xhgzF^A@spI%j zRs(oNuumGjb;0Rn5_Qnscij(l&jS$wy^b!Dh`rYEXok`OX`hTYDWtEzZ>aR9TAgm|E};E`f1*G#w7qIL0|8; zvArJtES>e?KcAW25(`bZxFv{Ae5*I#j4SP}q$Zs(0?$w{+yCQRCmw=NKc-?A&Z~I! zd3|GOV?%Pa#$N#A=>qt{r@O9K4{Ng(Y8&OxitzJ-^nx0A ze!J@|rBB#)payYq3uLI;TT-P4zmT{3?m8`wae;+m5FDc6f|EXpyq)sw3IW18C&3u4 zA=lgG74?x6#*utQWz;PAL>ZoShUG`r*(uskEfk!hlMapR3U9bf{pu`fbvWL5LxH|plE=))fo2OGehZFfkC!ZoOEaff z54tk!-IJnHB;xgo8SrYQiIF#QI@vI>ZBC1-fKVwuwwRanh2^L%JkUQL&}{Z_NZr8z zZ+dJdYJ|#Z0m|(ZlM5Od&RM+mNm!_W@XLd2Ila^~`Wa0-i6E}$TRMgLE3<%t4M5C^ z+)dss5cpg2;|ERm<*H-tQ-ZD55zs?5Ca#uxUUK`R#__|ud)ms(?0uX^LsAoy*lDn#`oyk02(oE^j2Ge(|V3EyV2)X&8yblAvH^ zzeRn|;uIF30{z$@F=NO)&3jN8>P8n&L|<6tQ$dZ(B+Z3TRixa#Nae0m-ZFzm=!2%E zo_HRIpMF0@*v#(K8E-90w7R^1PyCtBBp7&~G;mp_3^Gd<&hl+Z_g5&3(vNePZlzPJ z^1X>LwDyCE*EeDb0@QFy%4Jo5h^94Bpa}bPMw>0Bi4qwOP1h5P(MZ}?&tfK29hf&B z0it$}UYC=tF6TR#1lV%7D0XaONN)@ip($*oP>fA|1d-_QuE5_1$rQn2g3iGA96-d&M$Td{@K(&{<$#Sv@` zyNoPk^rv=Y!c0U`Q6W+G9I%3zr}-tt*dt386Seybf`0YpieRDS?3AROF)<2JGx*&y z4JG4#dZhS7uXuCP*G%V>D*%dE?iVRb2Ii>MbmDdjH1BpVyj5?A?RN2!T%I%$VMiEN zIFQ3=jb!ctekRVuNR;0aX=tQ?z#AfyED_Bv3+r-)HhjB7Z3!43Y#+CtZvVL17_5^T zn3^Jgypy`GMaWE_kD~eB`vMqzeeU%(e;TCeKhZIh$wx9QL`fB_P1k&;7L|17i-TSD z{sbo)domRx>j4*#*!xopiO$u!=CDwCz>v-qcBD8O9VkdBxZHm)SUJQI31#IT!P2;( z2L;|(J*Sps1XI2VcAoDsjESLmj>ZY!NS0``W|`2bBQHN{=cl zz4Ap1Ol9J~>kM^!pl;xiTk_an^1t$>s(ITHNrLtcxN;_+?yPC)8Fp4v9RXx5y7>rR z3!Dd_2h577H8`gJn?Qr?ko{H@8W%_D%k#OmHWp}zBLZoHxDtCwVJpds3Tu+c_)-Y~%@?zAg@9rzFM=3V8HB&Cf{KgU#B0U) z69oiXICDl13T!_}+Kfcl0k)!nFR0a)WQ}5CJw}-`G;z^*q3Z!C6?+tbbeidHTi#RK zCI$Bg*5kWWgT$S_-E&zeTMP8@j)9~oZNG`b@<)XzW%mio&MyrU1=8`gGJ<`J&3{+M z1{>$@$%Dz8_ZS`87}>g?%SBw6wtKK>4(RE-oS9P zfzdP#CoxHp19t|D?mIebVmfRut#1ko&?khV!<&4yz< z??R$T-v&-eeB@8=XlElLP5|I9pOA#EQP z7e~0~jm7z*y$Bs_9n{=RD$c-vuvC6X?dW)jvhNNDWBOVlHgYdZkpafEx+@d zWX*-3ZpVTJ5$f^vZS_$=@v^^c*^g~DE37GNCYdFd4kbM*&OiK}ZbT|RO$0_2bYEC? zpv|HUOYzDsDxMWn&NW`@iwFb)bX9Ev{}Jh$xWh;LQ5D>X?kDpyh%M zvv7`+CN26DH-%kQ9jBRsi2;pn2*07@Gi?uTfNZtL+-^Pk`<-fZhvv8;fsmu%r6`or zUnEz96V%^dgy9)46iot6S+KWL6ASel+NQIzDOfJ+gTyV~$@_(p*a5AzMo@19m@qOY z*WS%RO_>u^IEC%{bg33XGcA>HBXx_?`tC>HAKP4WG7e(QOe&b;HZZjsUkHCil>q#J zAgg5oF1(=Y?A*z1R8eO$%CAgR)@-Sv0$84>pKv(8pFaFF{rB?>8SsbO*8-d$dUi)WWpoKU(T)A!)lFs^4$#w5etPA4g{$7FE|pahd_?ZWuZx1OyzqhaPH% zl5Uii?(RnE6zLF9k#3L%Y3UB>4!`?;|IhQxopbNpbN1eA{nk%s09lEqTN^?mu`eu* z&E8y-29=&_q;wXPd%cW7ywb_)&)PlA#k3wCw2oW0kCTIu0p;}a3L5pTO51~v3WH?G zbglY=r8X=f{lI3lzK;BEwLMdF^K4-zf@CUAC4Y(w@>^M;2kLbU}Le>O~=LS_U6N0YbeC#%0OetK3)=E~mnzX9$nv5KyHXbACDyT7Fu4xV`?? z917-}Ux4IWntHmd3I(r*3TNE_z5YSdBBgl%h zdE5-xuc6W7PknD6`(mYTk9Z%uCB+{L&Bv$B2k=QXp7nbhF5UX3Wfv3cijpLU<-m2! zm)t{d;2WD7{zj1PRj>1hsR4-%{D6;%(PhsMq33FOh3!bJ))Q^R3)F6&aFxRin*87}sEcZ_U6P2B(1AJu@%$oH8Q$RmRI z5jaZPDG_B|J+u{L_gG`p*sX`Ec&5RiQOn&1xttkaIyt>GU#5l31WnECvQRJ*h>hpq zMl&#{o?51mmLG_TFG0qg4`<(aojjbZAEZ})cfZ4akfF|@q3`;Tkmed6KE~eFZ*srB z4vtx8M~5Pzm8S~^YGqlL#cNqQr`9({6P09_s>*Bv&Z9m2B%3Uug!#U)63T=vgNjoMsEPyGLh zFSlIbokLVeKbY5C3}r1QX$7U^HKiq1BjbYPU%enqN_)?8qUazb_b#*jSf&#bbFQ(D zQg?908>Bow`XJ>i!!gKE2OpVi#H|qzBsSpk+pKMuR`-LHY0F6M?P*Koad#on#gHtPmWw@fdK;J@yM(d5r(0`?L{=d7q+UElJ>0B(E#=}M9 zN0tER5!5^?F2Z!8u-hRO68^K#Q}Mizr}*?Y3EPvxx{T)Gg+C1nt61ryreFJQyLl}R z5HH;bKInti4&VN}fByp9QIy815DK21n@idi1w@s)I)e=~2!-EhF0^tf%!2~I`gu70 zjT#JdQ;2$+2wA835o#%{GUmsBkB>L6=2m;JevxaD3i-_;hg`lBn=3rJGL5$`A-M{8 zlM#=Ue;tib$=E5)2Z#L)RPM_I?nm;vZ$@oo(Wfc1NW!-owMug_a*uIX)5SzxB0OfIpE^ooxX@ zlGxujSl}PImfR(#Q=egtJ7ERWH3cy(hl_$LsnBk!_=Y*zU9lZ?rP~@=-I?zJcZ`5m zUhU}kxVCPdMNC*COLYKf!=zBc3=&;VI97aJf7~!C_834Zth9=1ds+VMPiZq&o?!aF!=ONH1p{G2E4yi$^%Ma@%)ZHI%FLK*_A?GvTM??W$|HBBHA#XA*LsS^lpA5)RSRJ2enSNk`j ztkq0&E~piEoSxD6FlqnGZ^&tKa~_(0*zqX~28Ku|v3E2cwf)y)qENp6PWucs8*od} zAVJ2Tw-luXjh&|cOx_w%Yg2A@qHNfI>lK~24S&x_5TbMubE>#)sBT0X6pi@uDQF!= z#m6i*t0`!L1dl#Tye=*>Ka7rC7-D*pay}oLRno8VbH$EDb4T2^jpS!4w;vmGhdvk> z9XJq_)!-sInv`gpw~_<1ZHlV*Qg&IQ)hj(kgDFzQQ`mabZGc_ZcbDeCB)-oNPfE%m zyJP`%HMHiCfutPtA`h%dkRe6DXCO@}zysr^E?!vBkebLMN-2?|=qrscye2-;u+T|y z++U0UfAiN7x95RoM0&eB2RV!z4cyyCEqyy#8#{h;8RtEA0TiGL#f0aKDq>b>pLA7k z4YLgUhQ*InRx0(VNw}He4S(zb!DYv5sW}f>aIZ?>UB~10KQ~HE?TMiZ0fK>Sf&@rG$KeQE?6t$Z1pAV@5N4 zEF-`S59Xn_W4b<|+Ds+(Ix!3DrGDRvRmz;#;YWv$$EwNNW6KwGkziJdCc!^DvGWc^ zjJ`lfjeO(tR7^!;vxPD`2*g4FPh<;2%C+M5?}}I7EvODAFF+#tg4F^kopv7b#@|P8 zWqv20N3IDgu%p^SNV}oQRx_Ma7T6S*swVbFN4wXl!QE0FQXO;r61mw_&_g2|yvH#jprX39qDHe^zKMgU^kWr~& z&KPmxg@hC%!c-FcF0btN@MZk0X3hC1I;lcOtS4qQx50bjc`_+>dE{q8=;Ir0Tmlzo zCIqd&nJp^4@R9kDarbT;YZ^n&Fmn0%K8KTFU-WUi`1;WtU7u!JpDHK);uf5P5V(`XpN=&PX$vAv8j z_uEsH3`(}j$c$mOIkNti44q0D+iTODgw;jlD4D6)AZZ2)Dx85EvUF{hi&w3iO8snZ zLmibbv6V`JCNsDiE+A(I&B4B0K?&r(@gFVJAGnZR)A0U@jaOF?VWAh_80Ly{@d? zpkBRYtuYcytgd!4SsE!LtVgH1Mf7vZ%1BAO19S&zphqPoqQLL1;rUZO__OYy>$!3H zFQNzE2g{c%edO)eO|@;O`x^hIPX5Jr&v1m5-Y$VWB<<^_SIO7aAsEch()r}{XE*rw z3+wg&0u~4I9*y5V9q2~}-M&pr8As^^*!={piqnD=HP!r!3SUonuXJTW%D(-l5XS2p z^zj$$dMcke*(oYhw_Z^!Tmn_{diM^&VfLHB7@7(jEqbyf8B-^bFdZGJA_uu#(y>?Hkq^8b%L75m0m~%lyI&Gb9x3tqkFfm`q;m}h-JdmjU*glWTO9SwR{e;w3ES-v6o!Rw`{i(Z_Q zBAe&t91LGkn=bf^8$Dyqjc%g2s3G^xy#((U62^}M+I8^~?8}`EPmP=liUqv#JbRM#iYj!JH+UH8xPQtGw3222K1CUNAI|OOUHu}sg;TTk zw{vc9crGnuxg+x1iZ{Nb5Cu3@fDk|K_wrxY)0Aa2!lpr3>;Ur1ZgpB2Oi*d?TCxq| zoIew~zPCmwEIf3;oTEw!5jCjdl0p%+$v?j2>{ zvgo1v8!nR-kM8wp zY{%(Wujjj6{`}E`uQW3HU(QivpqD-@D$=}>c2FXSwlezAPHDukmR)BVagTv=UM2{O z;|eC4@%lsBAONvLQy;cgIwo4dD5q2q zPJj|JnUu1FB9ACq55Cr3iiI(&u@|awc1Z8e2qwCKrRpy7Vc4@fpj?X-8WmTi@G((# zmhZVF@MYd%x4Io|RSGlFTlMFKqa1QSq>#uHF?crHoOB^c;pgw~PxN=Nk&I=xkfj22 z_`r+^tqh1mkuRB*So_2MAzbiP8q1ki-qSoTiAVIlyG)qMDvSHn?-Vo$k+xwcG-6?vhe)A>|K2+ z`fs81ClCq1xO_K1kgntQg=DOL#|;J@#H(&2Ui}MK-@WeE6O6nVI{^Dg%SqEC{K+N<*aKf9eUXVGSfh>$G&sn!c_AiaKyrj?@?`8ied z9>NGmN|Y`aQI`;pcrIbVj@I5|(MwPonRMqW=6%EDUIHhwmV0F7PDb*3xIOF@s8w+3znlMjQ6FDekB_a@QV9CC4dlvnNHg z%xlJOgP&`Zi-V|>QCj3-3uWa+N^M&ra_L-pMX>23xgZqDCQPN2?oe-3BtxBs%SfYU z5_5uD2iA;o7S&AQ6az|%i&GJ#glz$(l;DtUXOZ5}r>8^=X=cw#B_#q5dDoKEm|Wy~ z_qbFf$Bg1ktG$*CMb9hSKaW>9R5vR1?e29c^)Z#@7 zi73B>6Ha@VVf{Pr4Q1tnDhS74KK!lwk*Tz(15J+B zm4eglq`dxCBwpb?4jnZ{3U3`Ts|K)RJwGmXwe(6FlgLGzg}=f7d|LY&cy066+eOF| zL}@WU9Ar?_TburoS${&MQ$SdmQmrT{$&x>yn(l*kj!|?j{AFZ5pVtv|#dx%_vhMfv z<={ZOr;tr;z|&@+9wF9-AQYR6;9KqEfqfHK15nN@v&-yQoi>$FEjH^U(*(D z|IdD)*Rbs<|c8Ef5?rIg&Bi78$haso!IdIsM~PdEnXGGZ_rLbYKks;^iqXR7H~Z0 zoSk6-pPF&g-&!FHMpqhhb{)EZdq>lHmp9(haaFzYEt=#aMfXBB6Kk1av+(b0P`oqugzCn;dL zTmvgz47JiBW%gw?qARO6r4pCJEB<11h5pI_i)(E5CzJtMqz zL-_Qgl)-ZTz$9(I?z7jpeaM6XYEKpn%B4ekd>4>7lmA+H4lvNiR~$)m+!YaQl>T@3 zOh~+-5JY&F1WWt6-RWalZ}aq*^28{tN%0jv+^SY|5O+x4TVkZ{TKi$s4TiEGij z%i6b37wNTr+ZQr}ygny#f2hqJe2J+YWG^330n%P8d--;W(0}%1KR>i=;w%MhaoK3zz222^i4|Q@x6VME|V3I4TYFeSYF+-U3 zQ9yJTSkasEtv@xh{`8Sxh9g;BHr#uSyi0vfjhKQd=nLFuHJcUFOS5x0;erkKa>lw0 zq+K*J8KN+XyBJtLjOUR^xP#h@p9NJc<@R?;9<#~t>BYPKBzjEwlm^R&++BxJgv6%h ze`KKXT&ip`QaZuwLy}PVqbpZ}ILYZ#E~DW?Qo%n6ClA4L(>Yu5qY|V!YdIIr$-cmx3w&;>W%y1ODxH`oy$fTY#Kq8DWX9+a$O2cpEJ~fPEm8?cZFpM#G9iOv-9+3#DtcM8u~kTD1mqt;CWDf7YzmALSo$4 znDcOYQ#S`xkM~Hs%bK9GDgE~Ie94=)F}(Dosn4K4|4LO$)jRKbIpx|zUu+PC$7*-h; z);xfcmdjvo%$H$eXTmR}uz@B_Tpzpe@V2*-FQ4}`_r&kTxcCLlyEfk!v7fuvCkYz@ z@NfRo*D2-qKKb4Z`7ZqE4gaWC=JoIC#^w0lV{03yW`6>G_Te=~wHtd3%5f;hf89c( z?_S6Tl=CB1%O6^JjWPQlRaAFhq0wuSkd2`erMTg?)L8La#-9yQ&24~Yj1_T=k2oE#3KWVlrvKIcsbuExTZavs2KbAMC zNoQ#IUtd%;<|m2>Wj+HMisiERKUoMwBt!^9SC{x3*z0!8?0q2p3UN^J-`{(Sc>P2@ z-u!P(J=1JbcW8QjM#(yiLR_w`mfN@pmjbvwfrM_ugpQCW7R?LnjOy&i$ zmC(+#=t`T%3xG&0r|T4m;lnRmYUVK;~c%wkrjOowEjM2=x^PgTgv8H4_Hj^Im0pgUAv1 zk>q#DG+4m8*~;8|7IOBPK#gG7a_|#!I1*_|Av9-|8P8apNLTf$b;> zrQcviKHS8(P+ymQn8wP)bb{V={-kjAuvkB{t|uD_BTB()kDst~ zvK1&7kcxi!N@D;`6IRSako@R#=IgxPVO8iszB#v}lPyuuoU}u16B6)k<%-s*Th8H z)OJb7{+7;6cbale?1VH8Ehb_O977WLjJh&fv^sJ{SyHaeDs#;F%MngX-KSMt9I$6+_n6BG)lDP`BDspdq_mG%{Ifn>ZscFNMsJw188*j`VYU zwX^!eN&M9r1;xLH*kQjXLa$r+6RimNoRmImRnL>R{ ztgE$FZ*STZ;19dc=GV75aF1h zB#YhUV2K!$eGSAQ$ALXGQ-%xL%iNHmSpAj1m{%vg6|Ff9Hm-A*L?pzzzs}Wk&EpJH zT>6N|Y4pRX<4u7K*{?9=DG@H$sG3kdGUTnY)0N{JE&WEy7sy8^;=QFWb_-*$AMPdY zb;G@)+|JO5S>sJjebUcI2^rK=Bb0cG zU!bwe))T^^H*`Q$XMxg1qMVTZLIekSHU6%SiG2 zzWN@7=i+>fK=JvcnscK$W;StHwqCxYr+w}Os%IqP`XZiXT+-Q(5|()K5E_c=c-{tY z(*Pkm95QiRyGg-bS0cC>3i#@c6F#P z6T)}`+gqHTn#NT(5vu-?HNJ8_T?6c=#|3nF-~xh03~2}Mc{1T7Jjh~A_`9gCKZjQZ zanicFUe}94txtb{0x0GAg%yP*Z>4>Z@YwmK01`A6{uzeSemLR5Q^n8hL}ZI$6BjY& zDyW8OAt<1(s}k+`8KS*(;E=I3b2luvPu6#P8JdFS7q+oS(-Z(0f-0z{P(uT7EpUd-=zC1C z-cZO;$5yO{HdCUZVLTyM6v@4_izsM{&|_v1Frb!l_$n6-&$0scqARK$`&Z( zGFiZ4^5n`i&gvs;#swvZW+sd3M#RKFQN`%r=-N3(a;tN)>JPkCtLGB*M zh2xjsNHkx`(q!*By+k3(SBPQZ7JyWzm=bMnVwUe)$~=C8rz_>Ee|GvRm0<%Pv9ZlY z2l!b=d%%cr-AJVGQUF%;^4FGpH7O-oIDzTyf^~nl2W<%G@d(k$2Q6^NOX@X_0s>QT z6&wWrO%l3R2)R~jlCl8n;QehWZuU!kT_`xBjcB`0L#a%n`nakBOWD@z*g-%IDC(fuo6{k?W`KNO@%fi45MUl3q7T|OuHeh|(E{GSRv{sHeQ zed!-BDq9qi$@yjh9U28r#CPXsNYyBj-*su`v-|f7tR|}I-g3#r4{!96{WL;^^ehZQ zo+VisZizp#=jp)Gxad<8pWgTz)nxqj+IYyj=YP)2e7@8mer(descUKvZeXm=tl$PF z^a6A+Meyq>>?!tNIRvT(J+`qGoMu%ls5HS_X2;@%9{`djNAL+?1sV`n_6(#L`|+}o-2{t z;FV+AGdCr z#2F330D+T&iihgj+X3B<2LQC715QK=dKt>*%ybXwdV{ZC@a%u$!K?yAR^BEu4#^X+ z+>`Id3Q^T@-e9b1;_mV;&JYa{d)Jp@$S=)nd;1|ygW{0LSpb-q6oY5hg-KB(yy-Iz zH;Je?A~k+Jn|iQ_=V9EyS0tmQHyBGZ$NRP)C?P(yUpQ?*oqt<47RF5Y21rOPdGcl4 zG$s_~S?)tmJ=;h=3Sx-9foE7ri)rab1FrZPUEVI6xA)VM{w_k-kIpX8oCFt12D;%y z&96_1S{`)Fe&n@lE!B_FPm-j;Vq?CB+ z^2*!>(hbNkMM`HVNx$X(YD%F;2KoxxD>i4wx&V{29TLrAgMwq+MtK-!Wm)vlo}N0qI2aXa<9o3X*9 zU=pq}^UG#(S)_>Qxjb$JU5gzbm^@O#aR2M@51HX6>H@E#res4X8B%T)?j)BTEG7+D`DPR_9;y++c_ z%{3oQyvR!A%sn{_;iJU`~67{a4_syOd_$ggC7^h1rG^S;YWB~-@m%u`L)_RG=x<@imPjmhKHp* zyh;`FT_ulSqJ6h%HYv+IG$=@jj5Is_suH`+1RnsI!`~WeoG$!#b9rm}3v|yv-bPV0 zQ*Eki->47tTUGgCr(LtzDS*An%RKTO|LH9eGSFKjCuKc~Z=@k2MgCkHZlJ*-J1TGQ zr*^}W{*mwI&aW6LzL%2Ssu%=#i?gFR`@#_U_;E72rjs9Ljig&{}wq)Xs zS@Y8&zm>z2XjD=0tINgMV`7+jKSD@`TV7k z!C;;<9cEo3X(B<9Gdy$ZZH{+#8a<=EW}b7+m(O}J6{;x4&L36F+@TpnQ1&Co_e?2m zo9{VdVn#eDJ=jI<2qCjy)wP3uXMsPfkU=0#iyK#LsdUnz4aIFU zX$L{Q^iM+jQd5;&Ta>i308lG;4w>j^wTK-gQU-6zaC8WtO6qdEf*wMCamyk3gi0hN zYMkx>7U{T7E=zGW;#i?f3L>R~ z6N6=YHCjpS;lZBb7@x!e5?U^HIBD$E0FJfGVvHuz?WW}2=J>bcjSunlaQXy3iiD(X z^qAIy6^UOK1jU&?%}D8AI1iQ_P{GksTL^YF>hOx1WE;_h|HO_z!i$)Bp1-a55N~es z=lyu*PQb(0+!FOq{5+018yy3~@<2#^4PsbsNTh#VLEy)UdwEhdXzG;lH~>{gBO%D3 zBY_c-5OD7jer>??QsNR#Qj*|@RXXzLcQuVR)KYgj?a~Uys`xZxT;=uR#?SJ_EMr#lFaIsPT3^IKyffvI{$g>i;U;^HqhHA; z45k#TSzD0EL@A2ImqO_6FFQI#R51YWLL+{zHb!4{Nj@aq$~SBR_!ne|W&uNv2S9`+=^@Yryq=4L$)wPEbxrnt&E* zU-GjD7cqOgv!jbL4Q2He^>t0I*EwbLJ`UwS@&_Ex1w7%aFIB`0NI}dfr>CBLA=hSh z->59sp+>zLtce@^$|nT0(7t_S$v2s@Pzl9oyG#l{RU@>9)VK#6saoau&Hp0+a(&)u~sUxFuTanMhC~P;@BqHdi2M)DB zIhFs|%jWFo7lIT$`$kEkO&SzcgDS|c+B5~Y>pzZI!&6a$%nBvy^x{>A1oP5f6=Qv+ zBR53kP+7~DhjogdtkE(EdK3Get4Z0K3H*vyVfDsy672l$MYvuD1BAwOCMi|kRJX%* z0#T(<=C7hVqmZT;SkM($ukgD+z04u$dA>&v`nusjQS%?`-<7!QO-|8b6%uvYl+@n* zoGc$AR(&l@j_ECWHST>Ia@~iZSy2GyKtztra3-msj;>&UPKH!M_ASy)a5V{5FvsK^ zG?(C~cX{3`yI_moHbS^s;r_y{SS2&-%?~TIHDN2`9t$MKSme^&AJuy6n{OYCdfYv z63_&bz>6LBl@*39!Jl4X+2W$0DE+XU#|&mbDaV5=@3K=UQSyBn1sWixq_}Nwlt8-- zjS(PZBIN21paS9FY?1)U@9F8o8PLq5e*NLYP}VHwOemev5+N2Jwl^mhEs2aNZIk<# zqR>cws)S#<$jG`nw&GR-m8AUx1ALyu0O~Y2?fgaH<3QjeSI4tM$Mu^^X-VgSEuBo} z(K9_wEv_G1?r|hs>wgtv1MUec24c#vh?yM$XeKxjxH@tZShMV{;sV9 zE+4Nmq8g)?sD1Z{W(Un#p}6|fSoBX=b^^&tWs{%a=^tjpAwC6 zHsL^vY3M96mQspdFqiIH6nz%u@&-5a-+Awj+JQ5Uf+ zQor9MLS9kSyq^f}wzW@pCjHj&4U>b#M>n0b#~o?SRQ!`F&|!=_uI7oj8D?8lw?e$+ z!f)5tGM7V3p5IU@hzfEOwE4tCw(m`Dm7Es7xvT-5b%I*qV!g$d9yj4cS1M?v(oL6T zNB={p)LEY&1y2q^6#YOdX}T-1q^)*p6I_N0@CyWUOqn6D*(umbVU+FypUmC-Lwhm8 ze}H}T0IZ~E28onP?P`Oa;XOpp`B;JCzamqRttmazj- zLL9#|CpsxaMzbmwL!>mxBjKuBASWlMz=>?$Xtmc*B3yIBE%0(65Q5fy@_1kSuYY~I zg}&@Lfb;pEU0QGlK3QKPpVnjKzf<~W^?<*CUye&AYOW*=AXUQYtIb;Arn}4DG!UOK zV9l*3rKoYUZ8RB8*HOaW+V`?^tfOAtl?rhEMWk_uSxUdIMlN-}Tm!%BxS^A{D%U6+ zjOM6Fmz(yU$w-3HS_~O8@E%&mV+B`KoUY_9>5P6%M`D=S*TW?q@B<~yIxo=Yt>h(d z2wuXX!kjX5q8K-I(eMfPnD>$AyOJn&lej|*))pgvyA-P@vLb0xy&NF!@HuLvC!$m@ zw}QdRQn*q`Va{B?QjO$065HC^rj4*`UZMt>bmT8;yK=PV8tBs@1DO?)6jGddZA!?v zAz&_`7eHfrvJMV$3o^mx>EmQq_D1Vqp0CDf$vxyVGGyA7;Xq8YGp{BCC4nu&aGu7 zA!Shr3)9pA=H}WunVeLvu}D0)B|6M*iAYvFJ;p5kFJKI(!2})%>$Btcfz+WU^oC1@ znvm(Zl_fzbHd@|t91>o!p$jYn;u2r0^q?11pPi7=fB>qK9{l3`eDpuHLE<}Xcf{19T$vkJ0 zfOHk|%>ppoAi?iQE&7Bc44FJ_R!8`ckAs;^$arY#;+2DX5nDFHn4S(iIvKeJs5MRu zG|8&szj}SuVPP+0p>1G~{t|++Fpj*4t3>-TWT|P-@+l}JZI6n>?pkh%*%U&V>R(~h zqQF^gw!onw&@!YH+-%1{s{G)%V8(8dl5m{KO7@?0cWlqz_#e zFN+yhWzGUplz&38fzn+F0LnR5S6lcyMIBeu?gR`13hw{BvE={20|rm{Zm$-z9Enf-YAGtHVGt|1m%yNUDDTz5#BG8)y_A%(t{tBPmTP?oo*^AM z3kh~5QO1+|kCx>yC=_TC8DKBtMH4LsFTGBdrjb*k7W{}a%+0=Vn?zJmAK{nIaz|Gg zHKj>3<&AesCyKw=W`yS|D-yq}A^mpX<|y?fYBY)(h>%|a+`^>nJg0ytr%^5R!S}{2 zt`E3=vI|i%HQALH1sN*4G)B9p&$&zU%ZoB|o&e4ASV^D+KsecGi(HT83F8f8=vi(b zFfA4c49EbF>Y|1_ec3eDiq``z(CPFYj7_PwO(yYZngqC4J$)*f3*SC*3MK|MR3#x| zxySiwZ~!cI^S5TRs=odmg$f+DR4ky<hMd*NR>2Vi_d_u%FCzL>D>l- zz+aoQczu&DN8z4gUHsE_wlHVn`;-oNshL!We&&0Tw*#q zVP;dNdE~BTcx$a$`l0L^{Oy7%ABqzj!?$%^1GUeT8S{ur2%Ke#?5J9w7b`WPn`Ljk zke?<&?H&XnK0jb63icyAbe^w@59EoXs~rrdhBB%8Ij>1IDexjhye>fiX7b}GxhAv$ zZ>C`|w(PZ&5(io3#dA8Dth0o&O%(hF^B_86Z?zLmd>roDWd6t;5+;a|K=~6be7nJr zFf^N+wP%wShY>{9H+3$=fAC`pg#2}ZL|2z7CNV;H&!I{X?doRL_e30!1+<4mCend_ z3D{a`l87FXSW)1;G!w`x;^vAgW2@^o2cRBLnE1dr;a%WAWA2?7eg{Cx;MLQc8P4G1 z;HuBs_ke8{?oJoJ&klBeGs33Ena^1whlL}ER#Qo}wDg7|UIAnr+HAL0ND$V0RhfBu zeA13_LX+3#iM~06mQ79l1ydGq^S2zCiRBhlsBn|%fR}x4j7O~9+-v#(H`M(i)e3N( z%kxXJe-3%NkP`oVsMy$Bxfk3s5eQ;os%j`&Yu<$h?NH{!O0KC2*JXmXMQm9a5E0>z zLhNT~7`RHT*gkUm(a!eA${gh$yAWOUR_kJc_eeiR?TTUPm3mf)kbxouU#8;v+By^9 zvBlu^>g05H!rXo1HBjfQ2HT&tZX}OaIQ;YmOfunpsmKHv_j%WR-?v7;Z#&0+ceE1L zOcsNW8F5FJ=B-4m%8tuHgZ~qmMft6Y64vg{gh6qI1E2|+(Ty&uNv6#$&`;M4rE|<% z@A-KX35&`6@ZtUAm_u#bGbRu%aU!AoSeUl)O$PMcXB#^r6uF|J-%&u?IKzDyRay)^ zGYlZkFuljhs5v!OJVwbt*IYhG<`UQ=tQX9WJNxrKkbIZdNUon0B`oL#?V=|#AxdKf zmPIu@R!PbBS=@LRs|heb3Z}jctgYeCRVNH7OZA=pTxcQJOjWvW`C?S$5-wfEnWAtW z0+GMM?9}_1az`1BPLVf3g;Jo8Yf)ih(_jSs^+J;=BK%w^uY5r>E6R}dLx^+`;nLI%Q=yUy!c;$ zgU%kRG4EFz<#Zemtu6p1UrBVLC*BoxmBwaj>a)bnejH&13>vB4FN$Anc}Lf{QQ+NE z;5~dCCr|Pdn1wQR_Sicr*qp64^!hI=r@6~k zq_~hDf<1T0uP$|NCiq{w~29%Y1*0%or*Inh;iL=Y%H*WjeN7Rt2Aksg`M9 z+KV}Q4UG7LgXBAlj!ol(nk@-1IFzTOM~jW-7^CoBx+jHPZ_M6fkQqnnx8JGxZD{8g zgsRSv#Jchwr4u#+Sr##bP6`gU5swmpy?X5UNUF}=yF(GkUF4kf*wR#DjG+Vo4N+eJ zG(gXPZ?x5XmY9y80NNe4f#4wdkM5z>k=Vcq3^GBUVtY)#T&J$gUW+*F7k;R*(EA!5 z>q=o{Pi_4^#Z`)C4GQtQB&ZEI(e*n>&F^&=kS9kO65(RZqx>6B6e!Tij@!d0X@Rrj zgjq?dnkS2eMQ_wVaeVV|d-^QSUb@~EIjY*dP}WTJzLP=Yus6u8$_!m1jx^V&W;{4S z1O>{2$PGzW3&Bj>x@RM2=ay&6on2hM^a zO=O#AX!!IJoslw$~}Tc4wJn@2j;-31I5_F?bXR>rBifxJS)c;m5(O zDjh3Gostx~f@w0^C~!w18 zcGJ7#+_ZTyAX779kVWPrxK1NB4JE<`JH|%VfV!r0Ui**1;xB{sol#>TPMque-B~u! zU@q%w|De<4RWkzMpA>si#L1j?Cx0YxeaxXnqOCB&We9;sXl-{}Yl-;y6z?vv9J2$KJrIKCq#wQ8Jw$A57A|^q~$x`3m zoX``BS{1M0PQ>pnmT*1+P4)Wd_A>cz`@g4?O`y4aR<6+&R2?tmH?e{a zNvdgAg-`Q#So>|=oum>mm%2Ra5DKn*1B#&2BxzFz3)F1t!!H=JBQ~#EA4fC!KaD!S zv!R}=0g~kOxY}1{8lqo)j~Zi~$+j%D$dhFj=c!|kRTVS)B~&lBCQso>A`<6WQ^Lq_ zb~?#qTMgW)h#Dti&CbQRxR!*3q}RCjPtP$6lSJx256bbtrU;J$gdh;_*w6MsQhknH z9OpzIjOLhE=vy0HY_YWg_<%mW=Qo#r zH1Q^C9Qb3^4PAFIgeT2<^h?lY&nEkNGEqtfN-kT2$)CeQb~pE`5h-1m6Y*-UbhGy-l1m|eLU)<Z6dYRVEUW_q zwm%ahW)qe>a&8C!>^tqb-@=Ob@zop<-xfkHafK2GtMgVb)3;z~GSh36$s?B=o1_{R z)vL7hRTMeEf5E`#Dubp`%@LvfW|wGLC=ZQ^H81P+(e|m-b+Le0W>u>7p0N7%n_R1EDb^iz@b2Z6-I(a z!ep(3kw_qN>;lSI6A;CR~Y@GOd?`^~8+HZ_$5(j{%^t<~uHbGDXp(8(q;>q9ncj>O8 zui((VI;7I3vft2R6H@#|@eJ(GngZp2>1gSb8Dk@N7kk#pF_iIHqmoU_2M35w}=^sK_pLdl_YbP>p%ctz}`yVZoE38c5I3xc1EZt;$lws)*Q6X~YqmkEn}7Az%pY zD(*zG$f9@HH%r~-c9x45Ady=D0o!x6CbIuQbcL>O=u#jbtdVPuS|%D!zK0x&$t~8x ze9+aSdy6o>@gv5Rh`56ldfX^NLFT`Nj6oGC(3U)&1&`k@L%duDdC+@( zF9GZnEks!j0{Xp%sY{G>QYVdDh#nRvOmV6F=pvlI`Me_Wym9zegC>C`#CAInnp1(t zBHI@HO=9aChur1KAcqW`!Po3ibgI2;@1IYe?BzJD4G7nQ;SDBHw|53y>_1MP008#R~j5A1)Mr059=8cMNMhx2GyKp0)`{j9Jc+bn}$ z#eF={U^N(vvO0O2TX z4opDrBW`v!PnD?C^?w|lV{~2J7KTsE#X3}$ z5$XFzaV?ZJ*}#SOv({VL5J4{AsI-!17ZOk_NyAt*K4EOwaLAbmJJqJcBPm+c`KCY*$?a z5Ljty>Ddt~488dga2a3a#Pxiwg{}-e)`2J#SFvQ7Z8~8}x?DOfY!Lbq4H%S^({PA_ z&Uj*7vm99V^_0b*1uU$*u~OxyF6O^D&C*gFvD%PABvl&XAvO+mbXz_c^~NhknFJs{i^Pg2bD$RS7jvk~LKA&XlzPUIY-WZ>-Ct>mfbMlu(`(Z6+0 zG7>jhY3QL#Yr{hRz3z`7&J*Lvwa97U5MQP;8k$Ei9$pAdQ$94~ij5BOI8b6JN|EU? zXh4Gv#Yohvp=p&1haMT1ssD(xAe(nysnI?CiXSp(6*{SRper>qp_j=Zp1vxfF)vpF zhp>A+JTHku=t1cqG&R`IXv+i zN_)n0MF&M%t-iGE2evGyVTdg8tiQl3lBnV1^@a=g)l$xP)9(SuLXfFY&sMfIJ3VDK zb1HU8*&Ib=mJ)K&l2TR0cJhOMAq*3$08nU8qx=Qpu0_gXN(BD-{}jMn%4lM=k2SZ= zOL*GZeD3nzYsCX(qQXk}My*L_B6wPysw5X(Z44*{3>sqihB=AS7R3kz_h z42H5K^QOTVPdg#V^`BQ@L_)spdo3{w{P7`XqE5L71&(W$zGH1S42!;c&_OSwq+V9l z4>gDIUdkhX3^8bKeZ4V)_JWNCcx`Vaj(Ao`WF&U^k?^uFwU^bPOxY1^8Q6-vWUMH&f#+BEeruvRZFMnKNGy$<7Qa* zWUdl@74%m-s!xhx+rM{)`c7m}#XTPaWBO}*;M6%G;KcsPK)=F}AReLdTrsLNsoc}5 zPB!kF&;yalQkojvlHNQK8_t>Dtx+s7Y9Wwab*MfQnx7^|0%eo$O@v1;nrI0dw39&s z7d*hUosLoVSCx#k5Zt0^wL+R|ze$&H05&M)+B1p`qq&uQg5Sw8nGxRaYx0I*a&XxQ z)X=z?L85*evGg%A1%JZNFvdz3#NguunCqMTkRBi5%w0}5_5a)MX5RmNm8z4rpkVgB zfsWpw>LF`nogxVf*Ce0_BRf^=Igs{LMjH-_@CX)cqhvQpV*@TNq@^P~pAR!wb7!31 zZ!jnSveU(Qnf=D>8pMh0*`FCJG2gSP%aRFBFDcGoShZ5lq6-MZguSRd+?$V|TZ;`} z3xXho31|45PYj``p%BN|I3y@)O0GO&1{`XF(eNwDq6N&l#>*W~bfdJcQatIiD zeyz@1Ff(od$da&z>u9H&|3W(vgH&z1vtkMr_#~%!o9!ne8S^>PemnvOqrF|n*{Mbb z)-9+{B-jF5eMBj8*rT;-vK1jY)R&@KMSL6kj`*M1z9cHq#=rDvam3ZOZdVaguAfp* z8V)SUGVRKA-qfTPK^2LIT+fN(_)CWrsmVI5o4n@TO^xAuoYpm}X_zA^V`?AaX?~P3 zx?-?EpKzng0~uh2DZpa=rt@#jXANEBM$qKI5xDE>JkY`gm6+u^^$2 z*bNFU&I)I1ELSPBRaBRQHazs#|XH_-i(=`mT8zqczBvdC;*vC{{gDB=Rv$BF2 zT%u9w`snMr!F6InTZX{hTM-G?ROO@w8n7@DN;f^@_mZd_6fwZQe)0v+!F~yZ-_vh% z3FAbxr(mS9Nf#Hh={f32{(_h=Am7AWe?Tu)dH(nD);dB8##zCp&9ly&9@L z3duDqV>k0*evsBMt8ip>6NLn3CIPlsfvIWNntv1Qh>Bopl^BSEF zmL2Ad8k@GJuTwDi-%2SHEIl>Q__+JB`vqxp)mY++hUDuqMm%%rNJU;$&7<6HgGag2 z$m)Cq`D}xT55r7k_M6vylKC})48=%Hu|we8g)$wKP2e*d`)+O^0D69`6mKEV&2O?2 zP7Mr^)9Cw)p-*GRAU;G=XAKcFHjU@xtaOSso=_5Aq(;R>-*hX2{g3sg55FiM1^cu^IzNJzeMP*U@|1<^QOMqr?HeXB&DjomcbBnq@R$eJA7a^HLB_ z$%TtHdn@z)lS<0_A0a-T^>2Y&VN^XdW1l>cG`b@Ws|I+%Sj)c5#TY0ozoXHdFhs*h z1#jiNF*l^p$mP&tp#>QT1>#p%y#(4nQJ!hUQP8`&58m}rtU^g4uvWBm>)n5lU)hxK zy3_6e4h!wt0>c<5M$lX?e`c2lHW(&EJ}S!g3o@zhzknIpJ-`De#0(|z4N~v%f_!~# z06Y*n5LV>(S9p=k0-g?vT8O{Z_zeSL)g^jkVV z42`sQvoq$A&`_)?iv<6R?x0kEVe!eApK2U#lA&<$Bgyb?~7 zrM;6D`rqN?1S`G7xmxIPQUhGcXn+2w1Jf?GPPEn9Hy&8kVi!n>`%}YAho22zZLVbU zoW-d=SF-kli%|#TWyJw%qztyNR#4WzA@pgWtgRwUsvpR|lyKg3m-oPoA^5_JiP5sz zpV*`0s>p~~D=0SO25GJ)ipBLR;~Y~l+kzmb9WfAj=oxzqtc@agP#@M5Cu!H&6QHBSd*-dMAXUWFxJ`y z9s4eZoW5XcUDPeb2eqpo5HN|wv;g`jv`V{<3=tgf7?bzt=;-?HHUDAS53_NmQB{Q# zsYL+-6V%$)#wsW%`HDq3mv<%-MhZNU{u2coc_2t95QHtJg8BtWDoTjEp!h_x;tIZ* zqhZ2;83$63p+xWH(-@XP1P!EGaiIg61Nvo${ilXe$Af<+-FJI2o;Oj{b9P+xUr~l* zoRS99DMQI-BQyfFz)Kn4Unj!FSC~Jc)oK^WS+Wv(x!PJ;V2oe;(5m~;!!Wr&{KyMG zdMKm+lqtU}noWKZ*f8qpk$asA%nL+-&+bd0-s0Qcgl*`2m41#3_;OGDS*8%_q}GR} zCSOp{!H6*yt#8s3xdK4GoL;Bxec#aY#c*ftqTnM14DcM(>zSF^0IE4I3dxTv!nG0# z&CE7$;2tyxEwJ@oJI!n|1GB5*82%us_vf{aKBqJetLk-LYy}U2kj6C7MRUWdMX;?n zzMNiuaIrJkn02gSQ$q2@@He4hn0V*nne1u4Ax-cF7Zo2($-u@20oT$}L&q;@t>W7v zIh{6N?hm8CMTo5w7t$C~uELboO1KcnQh~(xusAsXM8vF>+8alPcbHZi=}J(RS=^S1*M_D^*R* z>M*W!Jedj+9i36Zb*pevULiQ%I4N@e4dJFK?tM z4O7dFP@0oBmx`M9Jk5NVC^vLvQ`VE69Q3}G_=0KC|MDJQZgBw(jTUIJ%WErXo&=94 z8p^6U!&e}uppq4CqEzTr$aFT+U%q|0e^it6yAgGdW+2j!W}{BE?KC95uGK?CrlzH< z()lT@5huk68^o8AqO-XI%;f?@&jNU4hem|$?Bb0pLlyOJJy7EVPq|_QDGU+l(?yjk z&pUdll)#KDpk=jA>M7cHVZ*Ms7>y3*i^!e*`nlS%j_=mBzf3n_MUWlmc)O$sxX6&b zuV6JvSqRK=j;bO1iZuvBRrJVWJJzorHN7j)YG_xoJNpXiIltvywdTHW)puSv|DegH zpe-#eW8vf+wovDvX39UDuRorTcVVU=JtwNEHum=JOl}#Ihb1J5C7W#K|F4QbG27p! z&0X8tyuvGSkr;f*(6v0_;oM7npsgAQF3;pi;)Ff@ix7^bh$|?TC`uxeMZltebY6AbPG8t4^uqurnI_3vL+;jTa} zJRr_a8Qm??uOdzQdqK!jJsUogCy(VNWO8PCv>=NA0m~om!ZlkWtaGdpaq|Kt2j9@n z{yqxcia}2N26pMDdjs5LNZ!2O1evaDiqCFNvv>&yumFs?Pc&Ieo?jNDShesc>Y122 zqlu@l)JmBRz!c|B*zJ3uyDJaPdInae3m~1hG;{>D#NE>c@{0;cjnI@Nj=;sT(#YM^ z{f_xzgfGHw?Riw2T#2`P-J-Lu1Kie)tjtvRB4bNDN^$F67PKKi4KIt0Uo(B<8E0YT zg{#0cR9Dsfn^z1SH0F-rmHymYwawn!yGIDNX*PJZ7l@AE(Syq0V_Ngw{=T7OPO^<( zBHetkWo3WkS+xN9gMYd{(YN)qtK|eYkTPr|GYm3Kjiy>M>CY3o+|RU;%zVSXk7qBS zgt?u!BI5F%H0>>S)$oZ4T^MMUbH$d~sOr|)vub*csE`!asI7UU<+GK7CYGSbG zc6f@?UZ@lDdEY%g1HA8CPZq{J<|%lgZBe&eAKszp>oLeIc=4v8X= z(gr;!Fu1k`-^`*CRQofF=VxQQ0y}E7#)USQO5 z8$6igsW+F;?Phj3=KCk{M~FOz@N<@G7_?R=mh z-Ox~<>p)5KI!xoO1T2-g8}#~it0Eo$^ol$e0?p2g+B}gF5i0<6LDGBi* zibejW?K-I>3l!;N;j3fv zqI^6q_wM$Ujc@13DRPm1c6m;3Z?5z$Y>+whx?tw43j#-E@TvqYFn!ZTOi@m%ay{;5 zJ`OK9+j6?RA3wrr;bX(eH-K<+ZUwH6excypkYi@Q&do}FiAWyiteUBxIaIDiG>4UQ ziJeZNJ{b!9z&sL7EO@nDZGz@(w0W(p*dUKPDK+Y_Rtc6f^$-SDX>)h#{ei>0ubjG_ zM^~g6R46HcHS?V|SzKp91o-cs64r@-DQ^tO;W+`gDqL?^l5{&9R)AR+IU6**c;C1G za$PAYEzv!AO_}p&K}Tf8X?rs|#Oo;YG5JxE6b+koM!gZ!1|bjBOJeY08(1IST>(6J zUmAWjf-_Po$mWyJq7_w(G~trQi|gnQ=!CpJemD92fQY2n^r_*@^nk^s8JGyevu=tS z8-ZSGlMYnL%*!1aj>(us#4JsJ*#9_Rw`y6tdmc~jT$xhju(WjAt>JEH4-oDQK^-a( zL4*1Iiu-V$6A>y(9tVUXkbXj{wRZP-{AB`G3r#MD@E(JGFOBLHL=V}F0$T)|0(Ol> z#3bAYtn}5>Yd+OhEJYcA5oEJUHytX@{c9u@brwnm$v4?VN9cx?WKSIH>;b$OJ04ei zrW|&-R4wC5Tyox9$mw7HSP8<{kQNrDCXARqQgSk8DjS_)H(}TX&q!%4nN&PWiq1(t zmQ76u0=6MhwtEwFXj3DQP5tcmnR9tvUS^N~PzRjt4a?&P%&)vT2;>Pn6+XELf0(tm zHAczc{bL!Ds0und;3(G6`MO;Y0V#q)`Oh5&2azol%<-3K#}w!q$v|ba6*kjdw~%!h zUR;5+)}jCbpCpDrwkT>oQ9MIMg2Rp@J2NjkPRYT{GNQ(qSr408k+yC+IN-HI_KZI~xDawq*WM8t4sL#ph# zmw1GBF`2;Dtj`z=O>UH|O$X5^6|0^+^s!dMEe68w@q*OeZPtn_QHr#bTHlHzdsa?Wh4IUcfHZ+5Y_Z6^m57XF zWi6cu3e`qhGIHkup-RyzFmpUbb?k0$Z*SuCS*UI4*3Uj0^l1LqP^g20E~E`RVkg?ctCGZ3CbVJtqpx{{opQ=B0V!)>wM$be8!=PLTR#N!uA{DHf zTq=Mp`UYdmeX;ik$ov0#KmTs#Vn!TKB=pZrt-oPB*H{}CUwEgo6Twj+_SvJY%c_&` zJeS|<(Wia&m_#u-!NceMyWq#re!lm~7;?2aZz2V0_7vo^6$tcSqv?PGGi>u-)6VV@ z0M|%KnL3r;5|701ovmhk2BYj%wnSoc>>LR_1wR#&1E@D5o z&xZt6(Cvl3TKA4;+Y8(M@RGA~;jsJP@enT#I(a1yBX+ch-a?)qMqo51Qa3#)bD3nM zMO-Wt^;yp+SdH??{eGMu$R7~J6A1?UA-pDX=yN=}-fTLw8UOx{V;~95uveBUR<$|e z?y)X!CZQ_v3&|X;hElI4lx0QF%%(Ez_?T8lbc9`xRss=%u|{+ZInmf(v}jJEOZ22U z&O%NAgt^oWOHmB(*&#m<5u`>FE25ix>53K+snf#|E5>GN%2Q#gi>!`^A$cs#?ua0P zRH_AQMY$r}8BBXosXf%rQ@B&ou#roxV^JvfX90UKR|y8f=q{Kv;o_cf(2)LkPC*ps z$uPwPO5@WqIm+ivclWS14f!O*pEy^^(hlrWqA4}SZ8Zs*!UgIi;O`@ij{!a{B@}&0 z0q`nIZ9;0-Vh0^qNYlZB7CS_qC*PM$r)Mi68c2a;q7Vhpt8s3~oYZ(YdXaq{F~mg5 z6K8d%Fw|h1@mZsY2T(U4X)pA|g~jD9PSBlPy}jYp)fv^ksANyKmeyLP#>o(c@xPv5 zaOs_M{XCBqCBekFv}x8rDP_|k3uOjFO140F#d_HNH%I z$kL#OyRb?)O)sPfglUbZvCgrN1#qY=shlFEih>gS?#%vM<(B2`;>RM+#;>oOsodY^ zUB2QsbhXXz>u4wVWt$bo02oDvY*1l~8{`D?&s*?%&wkLxiy{6-^y-=^e_+!- z*a3ELbF3~#85E3bF9Yh#>3Qc)Pdru^e)hs#L|!9hQZpH18?z6`Ac?ODYc@eqs9f)`@HV# zO!=jGJAMJUWIgkvk#af?ev@X5V?kxUWEeVhe?H^a33&T&^u#c;NHInuEU#IZieBi% zSGehDux=p2Fq)@4>}S|{cpP%NEVdOo+8bQwgVu^;+G1<7vq@cfs8G(*c}G)43Q}8s z8vUwCuTK)24~86I^dc|sNLCUy1v}C1i!mcEl({4rJ(PkGIKzFuIc~FBX5J5pREqzM z@*h|0+x;*?Phb?XCv|B^;>k=fRqXm`3K%8V-=tK1pj!%m@AnbLk1pD@&2Fwh+JWg~ zJ@u(yj+S^Z?RRba!6_@blJq`FM(TO=1yBBdmUrS#x(?{-aRwps$HxG1TM>>l`GN{8Kjgn(b-6>w>Yo}g$HKFE z(NS#TPe(ac2fS2&f5UfBreGTsmvT)5X)Fi=psD6tt_zbK9dE!rZ087w2fRDfMVO%o(s z^-T~TTS@;*<0-~8{%cj%#j~g=8V|Q3))W?PYn)UW@+*7=JKB-*5Yxtj>jzFjMhX; zk?6l^$iC^5-(MQqDq6C^zQd%0vq-wdZ)UkK`r|-uZDl}mw@@pf&9UwG`CyZMgrTE9v-$KKU(Jfpc_1!B7!&Tz|R>WFTr2clqcvA*P*u-N>t z_Oh{$D3pQS3|9;2%6opJ2|L62uez?hTD-;TD)JzRcqdW&JEF75s2$Xv{qzoNg(4c1 z?rSQlXhgk)We=t`#gq`FVXLdFcK|<;l@#g#i|8bIRx(r~(27Tu7&>yDUl$^U8=K#> zVc@l`N#atguKVt}3a=c!=d*`XkRH;OSjm&Cdg>*knDeG61@Zz3(hk{bVg~Z$+ z5X%)hNTK`*-%%h%baermKOLnu5uEi0`_zvdZ|Pl}affeOpKWT3;J()XEYCf+v5K)< zVk}i&8TJH;_)q6tX@e69{uJ`;!7Mihnh+-Gy9rR@zo~$k(OF{#*%(mLpOXh(@}{ua z3(8&wwm>7k-Z>gv=x7${o_6XUQCMr0>Qpxzpmkbu-uAFS8%=-n^MkM^CzQvCkE9{- zI-vCvt-{3p3Z)u+er`|Zjwi?EghGOd&QSyl*n0=Y$Key^e(0vKJEGm4v9D?@NCCj= zF?cX)@Py2&Q9N)aKujx6(1?+Kx)s2tqF_x0XtAscMB@+fvi;d=ebto@Xwj-z;mWHRb7hdEx6c8{+in-PH_UuX)fZ1O;-jH_DcR=UE;3 zyLA~>*VT~|Be@If2-IaDE@SynfMNeTv6ntvHw;l}UAN-M*{TzRCz(K~uB}<>Rv21o z(Uv2H=XmANc!UqWB&Cp(AtD~9%UX;LD6U_rN|OHr-529i((?HzM7m6Xdg_Z)k@g5t zk#9XLgan-Cmu7DQTwD-pENl@;cG40c4n5Gb^I3mlxZ?brM0og36i?Z1Q4~ZotE0yk z`TBUVdvZ8Y-x9wWqdtBzxkN|~#h_qa8RpGFq%T%Ok4(_-V72|s#Ya$7>oPgta-AF_ zDf?weJt0U`F}G0jluPYnt2kX`J_g&VdV9F&5GFG(>vdgO@cH2HNA4NTmRt9o-$A5$ znG!*C;X#~5(Hv6*pyn{o>_ z2~)Jy(;%vVRxaEDsw^i5o_(=3d8{MMNvOx zaG$=VEUsMjmy=gXS`+iB>iR-{R~y!lh-I$jtg@IULL306)GcRy`Mp-G!FJ9ewqMJ` z$1dp$cPj??#KZ)meJN$*sX+M+1;3Hpbg~pp>D7K;^W4?)NGevy2MFxd4qv~Jfl;H_ zi$f#!SWwazfK0L!Ar?7hOf)rE|KN$Zyu*DP)`drIV`}= zCit&t)$SwAa_jRhso(Lc>{D^4>9Vn?ugkwjI@#0c^h%9faXpSlcg$%&-6$nb_04Q5CDa3>WJW6tXB~%_#brIn^9K#wNHna>+1gdh|*J z2eJlrM(!WkKYk3|44T`d4Z=?GSmf}jR&D$v!YmDB#agAopEy#Au(C|A`;>iR%0u?w zowDzKRHf}6Uq=XTiWyV>-~%(g39RAAv|kJ){pn{Ngyp;$ZT z^6uHXnAkC#3l+{fz;58b;^~O#G%r_KDKV=&mG?fed9SaST|s?Y1I=_<g#dh!`lI@!3t67^6Ae_2XWdc4try#Z6T`)<8cD;@KG+MQh`dT7=ag7^Id7;G(HAi z#-$!W0Bv#MrEy{@b9Vo=Q78PqvSdA_$bH;uA@~a%&;SfME}zrWc7J@Kkb|?R;xGN=r`vO_SN(xh)x^Ij%>Kw@ zM^vU4Bzl~g+G?+k4%1i*jXx`sPB$X0tE7aIK()>{)~p7TPK+F&`$6G7!D=XNSiYzZ z_`0_$xFk|o+8{Z9ahh;vzBn=&gD!tU4~OlM`Tjv20|SXz7gv# zTuT&`wCx%3Q3{O8204P!-;J@l!>Ckz0+*ZuNT!7uS4?J_!~0maB{`CpAo2wdY%*B) zAgqmY(WdK^eF7OSs>(}e-vU*5QH+K^IFxLoJo$N9{kvw;KTGaVHjw>JV4`@Z;r`$> z>33D+HQU?}U8WnPy$Q{3cDoWT?>G4;h#7`nCzEkJK8|31TyDGtC_HP#e#YkZHfEPD z=3Op+4QM!R>Uw@Gl1_M&89x?*lQQW?7bBe1eHmA>K7?qPcdesHus(}l?K*rtZYLek z-!R>nb4Xwh6%1q+o7JrrmuJkMdSM3*&Je%WD!XP|l_ovbMech(&eRD*M89!^KfJon z5X!b?7)7eyG~w}K6z%Tub)@M=SdIzrc|6d z3pW-U$?~mCRFXByOk;?(YMAxRCQd%drMhZVNHwQ3Qm;GKogxw=O=uxh9xEs3zeN?z z8%#e0cJTM33U%tdkG2)n$W53X!$kZt<@^_7{`2X-F^w3xEE0e3my_G~8K$SjM z8OBWJnh}HkxplQWAHtKm;o1MDn!14M{k4fI4Og6&pt%~YTXyL;dU%n484J_iPX3$5 z+5lJGu|#h%a^%Jec7A`XM6KR@*MmqDXaBs7d3S4bz1{1UO4EMJCf;P=QfeQS--1W& zY*qE?5&Z1T@)Xt++QhRYnui~Ff zenrZQJozinB?it=jkArLYCgu;dY4S$;03Egbgb#9CSv@#N5=J^(xGAcN$41EPP5Xu%M0RT)nx9AEeT z@O?jSc^l71%iV7=k5$v>qga{(^_c@n45-ys)U2~GKIW{R8BoLsEbJs?>Hi9gCXmn2a$@M*83C^e>bN9e0KL5e!~9D|GdL5-xd~UdLya z+oWLY%9FUYM7v6#<$`7>U0jWXBMR1stvGBT)!tsR{*--81XK|YX9ioJQ{?k`?J=q! z1<*3fyS_jaXE2*3vm1;v&QV#8c}inxw49aOo@?mj^mJ5rLhTUx*C4x;Hopme0aWIWr6Q zwW@AC`A#+`^6QA2&}$Y^ZNE;fZS6k2b6mJk6o5Gz~G=kEFD-3~rs0gH=^kRo9yd6wxSy>k&TuT|G3{6mdT_T?5G5b#s~T=^iaH^KDL z#l-Y>gE07D%h|M)80KQ*aQh!MZUnIiFchs<4i%pTH+AkW5`8Yy)(_*I@IX+y&#}ux z_*F=7D0~tqQa~7e1$d7B&GSLZs5KY@loObDuOS}C43PYH4b{=7N;aFu7-2LfzDd~J zXjG(FMrrOA?szJAF|XK8*YlJc0rh7d)Cb=SvpP+xo~)uGX?T`IP_k5AfMgk%0iW>u zAFI#YUI>mHs|DCm#d!N1g40%;Yh@FID6;b5sbVbUB0Rpzo#k@+uL>X;rmv!9!rw+m z-U0;O_8I~nzPA^x=#Ir{3nU1-@1-*~vddzaIh!HOmB{-a9i`7AbuQNRR~D`bnOg46 za^C#Vx2gkq=6(i*GY9V=pnzEs@`qpj^~V}>nK84mfj5y@^zD=4bZnBveUfAky~2}s zC_U}2HbJa4@Pau#wav`^G4S>#pjX2sPa>0VH$W50cwC^Mq&T1xBck2;sG%y6m_EwA z742%^tSc8)6Q}6Ai_jZSp>)-c?2j@`BhHRk-`G7lZEa)6R8@SVHl+qH=2d^@=4W8F zD(!vw%xY7V+Edl!U1Q5wP(s0&o81iMgvEeR)DYUJ)gl-kwg5yRWx1(k!7-s=Js;$M z6SJ10buIgwGN6n*l^7|Xsbz;0ZFI41yPSn&#}rgwgW0es>o#okNKzkc^~LvuE_xDB ztkCP8%~vG*&vl>rT_&C7=1ZYKPFj*iHt)k~ezVj+CvLt`dz)Sv@9@UCEF69GjF7qP za_b)$OuA>AWbQ*rnu3JLp-JnNIBHeHIiaSREcHty$T_gK%;&d!1gBu zSbqMg1|6{Q`F+L7iCD0Mze6-5A4Sna$0}s0UUZ{z8_71a=L;5X%>4a{no`t(i=M$W z`b*FTE-hi~c~;9DA4l+R!oXDHo<+8mFXa}O-=tB zHGj0#JyXL%8n<8U1nF=~u7m3{8Wk58Y6Pl6(tAF!&soFv8~2Xt+55eG@11-^9-oUh z56)c%o=IfIp>$?Pz&3T%OCITw!jd_TonLCPO%1xuZKwB9_aH^*J1G7p%tc9s9aO5E zC-I8yPjr3E4m*&zD2PeScUra7=@om}Y7m^RTKq-43D7rR@5$F0bBx#5vm|g>lSGpZ zIYF4K#zTdOKxuHIOQC$JNn~RiWOcRv4ob#YG4m!1>+A7(yc+)cNtWk*g7|Q`Ju@N( zp};h0#(^h#0_x%_68rFz4Z{v5IIH@thw$8pt61D<^r~TLS0k`uP&=f-YC(QNKdZKM@hb9#r}JC&GZpjuS)$G=Z8pj8h1_> z8MFGtmtbNjIa-eZ6}p1jA5ZLenqBev8I z(*p<*KHjKsEfEZMG6s=?;0DOASd@F2dG8$7#wI32MXKT0U%kURcl9P!rkjkSS;b|w zarnIa4wI#DNMXf?%4Q1Q5rh+tQ>a-(#>Gs+%r^bw{XFXR(Z?lIVD~=+8l`yuIiJPZ z?$cXBFGI5UeS(z|)fS+J;~>5WKiut?F$eVeZ|w6&uO&}u_T|5B)cLOA_|V1{(aho@ zcwCyyDQ=zq4te6OP9=#Mj7uzt4AHoHVikj-0ocpZjKS3USUIZWu zvMMGv^MqUMGW8e2rB`t-D5`H%Yr=2!118{Yok9A#AClyXPH+EEIdT{!tQG8U%aK#! ze#D`el-C5Mx+8i~*d$}h(PkD(0HW5Pm4P5m^^EQJp6x+xqbIt&fQx-A3fg3zAR307 z#?S@Qi;Z68+fTk|30Wc6=0w-TDUxrRe^`b0D+kc{72-}*b~eMM7k#^a`BFAvQ(H6I zB16FtDBe)3YTTX{*oCDeVyBpjjhGM-`Q(kg!5%#uVo zfsdZF)R8^JM1K2Fq}}KUAXba`J%LtOFS7?3M=^Xm<45q-Yq#oYbNf~BQ$TZ`5}Z!s z_w9fSk*@-MBkNFFDsV%XXU|Mx+=$9@A}$w16E|nq>iA!s=P~NKov}{wZ8um^1hjs` zldxmiX5!fBB1+1^5lV*csKI-i;@t*3_Da8^=U+Lo9O!ubFx&Qu4?9H4?lWrm;}$d= zzkKZP;-e$=H&Ui%F0lAJ(- z9bIlqTe=|pG1y#|R^oTdKJqlOu+0svdGE<_=6WLA1UY``L%xc@Dt|Mh418+JA3ocD z!KEd<<}4_t?DGHFan6n3*87KZ%wwCr=Dcxm@YmVt_uR?+2)jE6)}V{ zE~?neE*1(c4MqX8qa$m4@A@T) zT8?JKgQyUX(g7G5UzH*4STD0Q8{+CFMIsc4jF_N*8VImz2MV>_hN0c7iUuE$*44DzQh1mX#FLd7t*q`XVPB0!1sD_fD z<0$>=Ll`qin!O?0tZL2K5ldxD7?{(ag%^v^qN^X#v;peV2epE|q4Zw3+V{>`bD+Gx z&4|CR5=U@S?#Vo#^pUa}dl~F85$%tKnLN>?e8&)HV>avv-ZG9HjVJ2=fS62BaeXeL z2oD@qpci$q7@3(1Ls3yx8N6=_rl)H}6ERCHoU9tIP5lqHCG^-a1F+YMGIR6#=gdYu ztNSe;TSLJKTY2mYwuu)~O%K~qk;K2!=*rEI5#^(=N5kFv!SgM7&<2{X+H?j*XY{7& z)!a2IkD&1zF7VQd0g0cYL_ISXKi~_sz+u<$56#58T4kTd13$V53OQ+O2hF6ZRR-(1Sh&>D*ilx-LmQ<#MeK7=j^ zqnRTOIqy$wZL}CdOM>8T*1hKbSW5^qd8?8h`2*lTX5kkM35iJ9bIE@tAQJQ*LWjho z#WbHTlG)|=0uwJ6s_T-Pan?M8<*>A1`6DOuKa$Qf5U%d);=0iXgVBvHh#tLnq9>w6 zkDll?I-?t%h!Bh(y%W7lMDL;#Bzo_>_xZm*`!I9QnS1uxd#&G!XN{(0VNGJjxuiGf zvjUod!qAP$G|ohqz`gW7bkW&h>(N3s|75osdFXcz1sdWVHDKYC&(EY2H1pT5@TX|d zgQBc9jA@vbL8=E)g`O-2v+>aV+mS>o&qyn8(yoqmu%7K0EDbfaenf)0OKWCAsSBJeWp~Ptzp;wsM{%{ys ziRu$B-KXs6hd-DHR#%UD8tf#x$RpZ(d}#GKNqggZFmU1Uwks#MzHsa~{S!$oJ7t-c zrJ0=CmT!pr4v!2j0!Zx>N|8=za!|=-t8m!@jxt&Q}@U5y0iqrH!wPhg$F8^7@VYz}@ zy4fO4C?n^~;Kb%pZ;jR9$*;TBgh5S-2(P+7tx*>ZGe?f+Nbi_~2fjfqu-j40aw1Iv zDN>JQNLe2EPROAo1XkZ`4%}2l)p%zK)V3=NDe;Uw!Rx@@@m-6kR;q|Hs zh8Tkz#~CxO-U&xs4IQ^~k<{^)KwjD1ZZH9GF({kdvu^3)am0Lw`C++cDB_GZ&oS>E zK?wuKUkMJh1d-pysO#4M%HGMcn%7ND-G8TQtOg+ybJ#*;)M>>0q1mI%|2?4lvZ_F` z)!S|1g^f2b4QfH!l5AHPM6ygsA49TAsGSg|7^e4+1#QXG-#f1g=!mqPS3TWU zbylR^YQ=F>S4sEm&y+=pQjg@i8IcJ2A8DeNe1r$W>Z1PMrWN?-IF1BHdDr{mq=^)SZ2eJ1Cs+cO0Qod{0#q7BLk7qf9 z0|Qu6k0)9(d*D3%>IlJ$!qj&ix@Y3)x{MzLPu99m>9S=S0viT=M9RV`jem+VN0u17 z#Uo?}YW9%>U@sCF;RAC4yymT;5uc{*nuE5zBD18|Bj@mB!Uue19vImf&8|B}kiv0O zP+V%_PCxzY!^0cp%K4$wtO0Vvc&_239m-lRSvb#GG98~2jD#8YQpEy06>Uax7INTwMvQeC@+RrWn=~HIw?P4_7`khAZHCI8AH(GfkKE$=}!8!a?*`^h=8MJ}5x=IsU$~)CP{XlfOrt z)s|@dXJ794Su00B<^2l0idiequIxdYXRKHI4UPu8L>513P##->fYD2Lptdx9Sm8vN zJ>fe4S%?n7OtsE}0H$U18 zz6b8H0v?_G8HcsM#dJ)0VjMaUYnC-ze5A<5c>DG=1guDQ9^Y_0IIgUVNNRe!w!E~I zt25OdCK7Neh)og3`wAp)Vhm3@57$PEW+j`lsSEk@2fIN*XYS*-j3knnotoJ_K~d&p zu;=WB&!E9fOe<4rnEA(*h>BUaP=ctpb4b;MOgb5x5@R+x0|=xm++GJz5BLMlBPnZj;@h}*fAM$rx{#~_@s2e0d-TeV;Yy2ry??BiIy^TeNljn; zthry40*Jr^V7(B+3|pBeXM>4pqu3r;eR)V4BsB(zje>6ZVp-uT8NU{XjyUv9=DTyX zef%`VRVO~$Q%R#QE^X6FLfgo% z&>V)@qs@fBz=cO%to3!EI}H1zWh@~6$`6WeE26NWS)b@ zNv4R?|G1zf4gAO}uzLo~Qe#a?q@SNlBckfIKLi=Jyq96i)|%`yQca zfZ7d()OCpM-RME5ZACz*K2=?UKA1}yzELiqw@34K&fL*i zZRXKC658*%gmw!!E!bcN#MnIy`R^Sxap%*u-Hfcu0KiIol6Fv zoXMZa3I>0a5S=Cz)XVUaysv6I#SJ_gHXG2>l8SEmY)`a6FrT5Q`ls|s&3=d-t_w3( zSK~2xOI!IJ-_3gO?@RBtSQ-Z>TWHSf1aCsGa!Z=I@NcXfv#mw1qn@)E;Hjycikpvz zkqR-;N0Nl+jc4s(p00y@)ANVip$3c((A(CYktc8eKZel=1YI28u9qLXy8LENW=-N< zX69E}$RKb*_z^-Z>6_l0zC~tPZehU5Qn$`4Z^2$lsfV1~yP42)7Gdy>tyQpB2UO3H zg{VgY0pxJ4jA1&I06SIY=Oi1k6{tzNvpV?44|^b?SYntR$C|SCJ$%KBV%dp^laq7z z;|i(unW$=R>)f5*G_<}4R!e=fZRx6#_`7v9(u*$Yp83R`iET& z9k_2>u-1@p3ByvAu@)9pMl>e+=A-PD2RZf)!X+Nx9)FeBM~f5u{4LvXdf#nO$>6wl zSyx3clOq-PhH}C*Mp-qS7c^uX9x352Fy-^_2iwUPvqyeY-#=+4V}%PR`}#&+hi4AC zqB@0gg&eHGLrA07KgV>Sn?Kk_*RE^wLA~JrmKDixVL$1OCmC86_;A|RMen~O&Rf|3 zYl(}Toc#D2@On6T;R3ioawSF7ler*V7*ESy$+&&|XJL_uONZPX`}hX81d+E1BVNi) zFyC&;^^N0G`Ck%7A+uD9I`?VV!^1&;cpi41Zn#i(-vGqCUKBcN>-;CVXNcTZ#ATs+ zVw*yegx9w_L&pfGzl*wxhw}r&wAoG+U5a0G0#c<7QtFn-gKum|C!`+-wb?W`W)Hpq z37oj`v_bfV+QEE)x+DZjFqGpXA_L5?A<8~Cg%l_Ib@XA$-w!?MIy7|fZ z8Q9AJ@sJ!$)gX>R0dN%pIXNyB4M0B-BzD!;fnaWR}i217*XZHAZ+v=nr@7DLZ(2^da^-?xTU zth{(>h?FVx-TF4~R7F%M2yCxOd|ti<*80?C?)3?$CPTFBP>=t%BrfCz)Hqb*7DTyV z7sWr!`^yc(0&q|zR8(lhxlsv|`Nnsf!`IE%1{Hd{!Mzp{yhBNNxyGqO{Qc$rA+qVP zc&2&YzJI5SzX56UShOBBU4tO$DzvX>VhfNI+`I0j6s4BR5BzViX~Ch zjQ#<^Y;2WO6I|x@5N@(yNu?5J`SI~6Uua^W=N`=xI?vt> zpdgZMsIdv@ddjNWLK7akh;q-Yg2*@eaN+__*=lAEENk_Bf*@VgZA}J?#8!Xe(N?C( zS1&S5C@epm9m%7_qGSSt9wrTjG^MJ!2WQl_2hyN}DwA17L#cqx+lD7ygS=ekp4d+k ztztW~MSAMs71rEFE>{Z4Z|#)ILS}yyhYbgC=r@T-Pda~~%=bp-1+7ys6c@Q%Ud(|@ zP}J4ccjMidUE>O7iYl3-fWd1FKuva>tJ+*YMfd-QEk#hu{IfQAbLaeS)(@J6K;@W5(Val3KK4=9W4Vsx@9kC z2=LK+$>D@}9&m=~`XwSX%cfxm{L6oiET4s1l#S5}8;0sa2aFWEO_W1M4(RSeso(YD z@2qwNuegAi2!1BXI?pRt{SGG-te<3miGvsB_NphNP3hKKZv|xKD3oNNcbgc#pn{DF zY$-!Jcm@3Ugli5Ud@ zGMW+QaY`}Ykbi~R$0~uXOZ^Lh-2r;JTbcd5x}HNdB>4hQJ## zK4fRSb=C9Xbk*{CA zcvrR48byd5Sc4v8?T9bif?h>E<3&i>d9x>BC9ZoXcGxUHK#gVG}W=4Ja%0yQy9<%$3II2BG!qpA519Y)EC#LFC zuKZs;vcnq^W9aE*v*9Q1b1_Y5^7!vcA&pJn=Z(x{sltKg5-jH6`SumJxg|1;Ii62I zJgfoRQKYRpI69icLyWdw`~y(j1HEz#3p};L`K4z`%p44)@82VitDY{7QX=IuE&n{q z3r=CN0{{EvL;V!1ST;Fxa9SiM)Uyf95#B{50o3nEZ6+K!c!kDrX1I62)tt#at+#Ra^d`yLAwd4lr8L)Vb9 z%ET0$ZgJv_5XU%GoQfODx-MY(HNT4d|7vcJd;w9}e;~Lw9rHpgR0{p6o762Y;XWv2 zz}6UHFAWdJq>=mx`CXRavfiUuB7;7FHCoa)CVN#^isgL?fUoc87{fUdo9g; zVny~C8f>EH7LM+uRXLJ)6At+o()W@j^p6%#mD%?b#POwbq60P!*-EeOI>aWYKf`7? z@G5tYrq`N~tIE~w1diMv+YgIt-xpk5ZrkWWit_4}{GU3GsFn=acSdEVU0R&*Ur*=O zSP=AzZ(-E+_a!9=Fsn~XX`{+K&2+|`vjw3M9j*2{+M4xu7s@Bb4A}z><8|f}-NvKK3?@haK@$43j0du8BbhsudHW7Un!nlbKuor9Ag{@a( z8{{sl@QN;XPlUyeyT+B4;`F)VatKx~HzT@B`tEXk=n40W@0;3c!@~{DujlW0{}H+D zZ&^V-T1Besx7sV_-pnyzg3G|1oYcGZUqn2PQ2?YnjC*{{eIDTNQ<;Bsz~XcqHpp0w zT**z)2|~e(2JCOV&0aG>Dl9C3SWv#|lZAs9u4-m3FvrIbL`g zIcdsNv+o{Z=)v>LkzdFKr+j$V);U}`pP=z?d#C$feme0$e7w4;sAR~Q9`~=8W4+L| zedt)46(82Flfs$<_vno5L)}C|6J@dl$3O3z`?}*P$J5BQw8vAI z8AD!%GjEyxO$_)xIeVO<|9vpRgm(S4osJdFkrVxrfTfOcDBiYP?qR)Mdyp94j}H~= zWRDUZmy3=D8QDxui8T$jp`M6MFp?MkyIRmyI23|jt_wI%g@_i#Rk2*_Iuaw=FQ~<;x%9@wtdTysu;~41HeGS-KvRp zR=&eyojVaJY+7UuVD_E&`+zatvQIUx;4^X}YU02PFpGs% zRDAG1N;_JQ)&sOntxvSIg)FI0=Q+2oL17g0q$rQURo;Hs96aToBqchO+P|Hdh2q1v z$YfC%0$u3ytp*cq`#;NeI&XzV66J(8fE7c`9f!y2-&Kg0*fJUq>mo00{^@Q66y=&> zAD0>-QLO^&l+b?!J($6+f8=zHd}(sI_(?`1>IPx?{bBUi=wz)LZh2LOtbOvHfw75V z)m$%|)QzfwYu_Y|jQ99p{~1Mfb8{5a-Iaxf>nz^bU*23pZ`FTE1G9zCnO`xKMfT=K z>~>|ezBVB!1JV`V1pfI1xJI%hTuJ(Km8~)uFtVmywD-(YzxlGa9?Hq9UM~Fc<>N!z zXL+2jkvup14xgEMJze~*sCw7?4rB9ItlD|C($BNaP}*I#6DRB35_RXg7vM2{PTl+v zeP*jXmSHnH%nCG+YLOypf`ASAHuxX(A&_2Q?HpS&bs$&pd|X3I1Idfo_(GVE=Fhk; z3`C~cam1^cBN3{^DYF=tC}>F|B^WtKCmyHAM&FCro3o#AHhh-ZS?-;CJgv&F?xdu#|`>W8_~u_VVz90sT9(2wVoa%FU!XVItDUeme<4EzqG-~1yU*t zL(#Gn>x{rUKdjdM`z1fTN%e>kEwVD4iJA!w-~}am5}fJ9m%mj z|Jl^Uq#uaw19I__mDNReMEY9^S%gw&%cD5kmA@Yc{zc;-?~6?)k(I$awjA&MLCOX! z;{DI6d;Ze#_yDe&9RbFd{fqi-w&x7wQb9ob%9?36(NY79VPKHepY(9|-xi78;mH-> z)pHB$nm&ho4SL*c_S+%+*iJVosF-fM>*UOoh-RNsA&w9+3U{kqJfCovTk! zjNCK-U&Ufo2ei}iMI#NIehJ?&?5K=Rt4)X!9SeBR!pP zTs8r{wj3kTILyME8li-4S?iJnA;Ql@hi^-vs$;OwA zs64rYPbqpSz_t%afa%~KDE-UgP*H3inoyw*)LHqO1&5&NKw;K%LWL}T*#f|f3AdU{ zsKf`sO9*hmU@xSF-ZuR!|^Pek- z#TZ*$28|j;^MW#h;wlZ@pPhbO{;;_O-@S+*Tqjv_)nL%HQ7a0e6L-~ zO?KwRzi~Id=GOeO7%w-ikE?@N)u&*Z{>8Vrv?RfS;0vFna^pQV30)o`a1Lk3a!0?G32W4lpJ-(K!#={(kb{0P~`|D}zW4C!!TQ0`#vr!pk zt2R_luasySb&q0^#iPg3qm3`C_pJZLXIgl9k*je4yphyKxdW)9PA18NDUqCk8LH@` zYy)1>3Z=T*3sE;_CXU=>4B);kQr#Q{oTNAj`gD__Z$QlUq+o#jsE-~(OC?d#{&c$& zJb$v&5Tv&y+QX0=3FFk}54Gm~xF$Gm_4@?9Yc)?#2hM0u3=93jFW}0FXi1O{qdX*E~>?^Yg^ln$W*k< zD!pVl)YI?%Q7No2f=s4tMutrThK^u}32=KYc5Gsi+wdts$Mg;diZ5VbrNjT;Kn*u0 zJS=6vAh!n#&~T#-Xa{nPkNa{fNK2e-7CYQ7T>@m<(Y7x>W8vrfla^Q5d+==Sf6> z`j@21c{OwvHCc(&*!T;33>pdAhz+$4jg^5B7p+Jz!0~81nWgRmh9t*YkCgj0R#J4W zgxyKIrW*!tbMW&T=P&PR;}1OH-%9%fM4=4hRN)-hlSYoo>{N~#KdB;w%Q5d!2e@yL zRLlP1O~=J3zm8yYu%O*Y@PqRcNYY^GyDuK_7nKYJjtb!2^GZiGy5itDaGGTnK;t6* zV+8<`C||&h=BHoJf!B6Bsh*Jq$Ts)6CY55?nI9G0ZHlmF@*l#raR&@o52s%^s1fVp zz6%hgLR`Le`r{kV1Bf<(tbsAl7S=rX3?Ov!x)Hs34Zw2nhc?E?f;#MdD2GbBri|_3CNqxjdBN6nGB4${n zkW=K^mZ9jkn>7wHLVD4-R_~)*^M93{;=3a@q%DQHCD$+UT-MU4o{fVb(GVqo&VWm- z056}&+jy2-E>M9Hs!c5R3^x%DW2BuF`Jq~(G7=q5{`4#+7ag(mOpu!3#qfqnMo<-r z_t8@SI#XmjL*AF5IcYzg>a@~UDI@tklmmTqRjMSvF9m(sFLdjvG%)ysahb%9Gy<)*4UiZ+iKKHIm z&8`GkwQ9Q$9)WESlh5u|X}UkB!x^5I~1%HLJXH0jC`fe{oK;M}#ch5;8r zs2kk(yZyC$-hu+( z79tNW#r<~~KLS%s&I)=INH)>weW)l_JEB$}7mqeBm&H3Kxd{Hg)p?Deom?01NAn)y zHy6(1i6;e+Ci&Qod4-CGHmwl(!Dq^NcF?Fc2JAKl_&9C~DXHCy-`W#QJMSKtxK)7zj9fY9j&f7h5nzz^XqYSWxt)aEs{H5N(&PyxuW5O&bveg7d zv&X|MRMf=H=ec5Cr~;kngEmxwI~BC^UcD2Zrp#$IcJCsHG~k8G9Uschh89ml)a#iG z7bi2n;gK*ya5;zv_$EaF;*sU*JsLSh(J`Vbh&F*v>h$D2K#8Njn|B8w)lz^SW?Y2? z02u*AqFkUo;`3kobH9KB)zHE)Y@klK(=OPT)*IxdaRwvf+BcWCe0ukyW z>BU0tQswL8KNJ7}2sXm5cXN1F4DV-D=lQ0k9vo)g^_t)bSRS0m)nza_i7>yyl94*W zI1YN?Io|%_42!Y)@4NJNOZ?q$GD_`_>jsc-nFxrQ<5G(scI?@i$j6NU)3?72)+&TY zeNn#`G7V}&|0r7%ze!a2K`{sM5Q(Xk$;EgjL-f^F2|ZEMy@VaL8~>$AP2CeP5bZ%w z3m-3?jrnzk0BZbwJ;xB<7`wcm>1D1o#8kbiImX9N`K)z1SBPBn5{dKr^KzGNqA`zF zM9N@%zVJ_%r$foCfP>dtz7d6y>IU;o^r|#W8dEj#B}488<7kVjxcGHw_9W(lzZPnf z4v*P~ePos6HYJ8ncGsCauua~3H;o@S<#X+hok=LCBLLS<_(34iKx*^(s1S{q4@$B( zuRaRU>I2P(AjVBnmw*$HF-j7BP9?kvFsy3Z`>!q7`j$S+W5$fQXb@6(CX@UEtW5m< zw^Wn)w$0Q3Ms)fND*ku&ubM3SEo}n82A=Nje(ig#0 z({uBzLgD0lMi8nEo5qD5iF-g9qN1+Wm6X9)uH|{5AYB3mbTMZlx+Qr-Dgfq}sPL{a zjQ|^<-dH#|BqwJlcHDH{j*>yFqw@#jr-XD#bO%+ax^mwc29)NKf#I;CBDN@hR^|es z`K6V<1Mw?x(Q0@qZbf~_r~&mvcktaxcQx*u8rk@$;HcV}~pK>F>So$)BSmrcKYs+TXG z4S{10RA(~Yh`=y0IVjIOx^PYVIFlP|tbrJk4H84@^|eltTL+~mzQ6e9hPzsFAfQbx z+45Mz%L4C;z&ajrs(RX#%}qKJPRGyT7ot2#eeyR5GtB-&Id{eo=A!2qCU)PRFa5yO zd_F)83=iZ<*mk}Bc3*lV77)k)%`PVV2zfy&0wD8DT)1+xlr3jKfhlAf=7*8$^B152 zMUf;(UIco)5e661&Ii)76BOtIg%`1<%&Wf4NhlyYL(=k84@(sDq3`J#pfKW&$DjqZ z#BdG%XVp=uI7uRs97ctvxllRss5)w=G8+^Lb~{-_k$u3EzjhrQ)9d4(J$_=(E6Le;W25&qvkqJd!jPTG zx<$a*wbJ5Cp_9wo6h!>xOJR=Q@8oBUc#Ashig?{4Gh`A*fx&IRCf?Vp7N#F58fx>~ zdl{)@asafl#rNhJDOEmIzk7fFdqy~_DI1X_Y=T?BIK+)ts0!1z!F=8kfGUQcXdJuu zzXpk3+`ByNyX(7^NQ)*SPRvVsk>JQC`nCDHOZf2UvR8a^>|c{15q*Y zqO__Jw9ESwmrL4!wPDpJ_B@~m97Y_1lh1p~=+S=o;`{RRP;_keJQ?!*? z(68BF@!f?WKi<7RvT^TE&mUgYv!85NH3E25*jbDqetG4vr zlN6hrNCqoL*#m8WcU?U(DIK5b*XYa5ZN!(1&tF-SdXWmicLkVDvS1mG@B=3bH3Iw3 zV=Gj;&&s8Zl)OI>EL10q3L-RqPJ*#P>A{rGL!7`Lk8hX#pnq5hX%>l~wUp#?xt)zM zE9`^jf<2Ed_V45@KH89v*x&)uU3tD|6Gu)=W6D4)#gCMa*Lg6Ne7xuPK3e*Blwxld z{CByq)6nm|lgH>B7H(?i={es0bEWL+Dvr4gtW~%>3l{iP_UQCC<8{qGe?Hs~eCmLY z`ELt=^1&96Tb&f^5Jg^w{9o>%!4x+j;~RzJQrp!4f+(zSQ%e2>U^jFi5s zd)kxMwwKQxK)9&(ss<{T{A#U2Zyw>=n`&rD|MQ%2{b>cmMMsShiGz4_2`(+AR8ds> zw0uxGH~jbN?mzAFSHDA11)bnpbt7qDqPH4w!ZK9b6&bYlADrH%h^_rPqp2ZvW}p5B zJnLX*`qJ7r9*eVEZZ2ckve;Rmro8hst!iz)#tI-1c3%!qWoB<@IDXQPQT329G=Q+M zVRpu)x1D_Aid~yl<6Mb=Y}UQ8EwZWz2SI!p&&Ke3K)#w-&vhmXo@p5Yf&k=#UGB_R z892$a?;%S0;pkHuyV0NdgG8i#V@$ z@8Yv$zEUKHgmM#v5n!eDDd<=tmn}d=3i%6t?3_uXzot|;#+i>`OKo2T^Wfm-kDJdp zeEEN04qP|_BLKKp>qy6dNA`wDgf5UuFx7lIi}|uatXfBI!(R@(XG}uE0eVJ%a5%u4 z>g7itt4+Ge76q{>vW)_79~yE;HN&fX-a?d#Ih)krV(-4j^xMrV8ya}9if@h4*eL)T zpce(R)24Mf0*X1m^tQJYu;hGZE@Ip2MS7^1u;i>+1F5K7v|1?X< zJQRaEDS;t$e)v8`4W-Rs=hr#&f5%#1W>vJ59g&awysWHj z$N$Qz*2eRC?HV)Z4?j$aGz$W^4>gSW`9+z!g>K&6&5;XFt*@j)e_7@z{i853JNubR zS)Wa{#F6&rVi~xJb_r%e39-LWJa2orOD^l1QzWs(16I@6fyDw~(}`C)u3yA34n|5{TNq8^gdQ%p`%&ze z1`;nH&=J1WI+4$Hb$JR@qPG(}o~;%ozL(cTvlSftP{0u#s@g9#>Q~1Xj6{> zXzB+~o;L@FNy#Mq_`JXX=5h9gLh|($vOytLL1N1D%!$qn^ZdybV&(NQ{k1wvJz-J- z&dG;@&>y($O8%-GxjiVXoG9rl0RLDF^cjcfm*$w;sqVSJnqVpf(Fm7G?ZdG3vW&M6 zeViq?v9Vzgt$DqS@%kDF@4RSz=4iL1m(EhFqeQ;G-^H$@M@+5|{4zO1>}{dy8D8+8 z8(-Rm%}V1Rb$2$c8V&&Ld`v8w&#ToWdE6_1c5&eZ=`TL|IbK(VW!&LK2ruJmTJY$% zX;h_N{6Y?5b_Bb&%1wvpb9mzV{2oG*>GAVA;V3F9-24Z==GUcVyFBnoe5lyf&#?T* z@4lu$q>1bCnykcGi0yG2g=trd`_4*QcLgMe5+pb|t;NN)aP#_U=(7@^92kZ0aFwV+ z2r#1p`yj7%xwqw$Ss&0b#R+{5VP#_j)b-K;;OHoSOfC(;m;PS<0Fosi0+{zu{MKx^b?nz) z)JOTlsH8WjQp6a)`XR3GydJyo?y1gDB3AF{&?+VzJfoOXsev(7{*0YGNBDYm0uf+E z_1OTd9WP_gBnGJ|Rt5l4lxDVAv?htw-?e160u5RbUYlydfjjXxFJN|*Ds~hOf8`He zap(wOA|u&&aQ!dJ%=*(f-<(8i1(J|vtD1_W%qH2|oF17bmJfj=Jl0rvEbTddk)W%c zgzBH6a|f{Hp}n?0y8hf|c_mW(Tj5AD+Ohz_ifryS(jr$&D#_Cw6_B^Gafm6mY}Znr zS!W+1*+Fif7cyr(dO`Xz5PuZX`(Tsog?+&7oAofH9H%@@F$Bq;k^LcK!SsfmliR}g zCXzSe6$wxKJ#JfdWMZ z94V?yicl61qg!)bxpF}P!_YVV{c!HGY#r_>jLadp(TQK8p!2K|QxqD8PG~_ABS>iT ziEPp)Ok2S;p{A8MUL}2v~nNjk0 zwa!Y7I*b=r$EA2TIkeTRT0HwNMo;3QCrRWZB~BQMPM_s0*4M4=QNp|x2ijWc!M;~H zpEEQ9VfvWrGI=AjzEGz-*t**)3Z(>52U)n*;rIL}h z{J6VIzZtEHCB!eertXSuP1K^JN13HgerRp{Oe?$o_og!@OY-?YzFtWth~BloI7+DY z3b(fC7n`qd)ZP02E10M@PKy^R@#W0}IF+;Nq7z-SW9Rh=meFf?fp! z*&toIx&T{Coz5t4Iat!E6>^qv{NQq4&>|>1Kc%skN*>n7Ji4}Kp+SuSdOs9ApFl&i8@{#H#z8o(OkWzy6axe>3}Xc5eJM80>1C-# z{k=WwKi^aWtWXIM#ZtXGcBsg zeDpq@msO5jUkGuIn%0xxLPzgmA?&Ip!4`tL59JOojF6gIQ<8}e`@dpo$KXfJAJP)n zRLa%dl8V}O%Xip0)_v8UCy98c-3okI&{jX8;~R6Mk@SaDQ<>fOPyi!NojO)>X2V`g zChkSDvJpqK$zq#x}{>N+vOSR`6ffmpy60O|vFpzm{%edLb~XhOw6=5hTg zS`s0^`wku82}W&zU6aiNtPsH5YTVu%+;-28i*hHrW>!vi7q8MZa^f3dbuBh{4hwSD zkG(Mj%lsOF;rH-lO9!0{WVlY8pPvUY)z|LD-dWuA`?cBnBn9oRXKwiftaG;4TG zab9ZxzMPOW<^SdjYO(D2eEUSzZTBc+Qg>XeY^?1AlYn1gwBwd4;o&gF0ghdT z4&g^T?tN;~Ds(0~X6(@(C`3_{sG$t%&w^W3SKm^jLoL)E&J*-^*yl-LY;AnK7f?~D zBsc4R1oAucQfcu18R4)VZr8;B$*2|G~>d99M{+{s8Tj$!S+=d7LSqf0aplOn-E(ZlG z7jU_6DT=bFeID7SGeqq0TZ8_D#x^U7H6 zM)J!%nsb1HRxBC9Hk#G#(i&M;)e!;kGe0)MyOMg9T~4=Dm)bl@8wFKTpkdvh8#|10 ziO|3UArBFori}1_=#=1cMC#J>mfo7St@)1b8mY}Alhr0ro~LtQ;3I{X=n^*gEefJR#4XnIr!%xej>){}ypi83*0z z??mKgt)9i89ldRjs9SxIrxAAp9q3~tc#k7tn$!gzhGnMkT$ESom?=vJinZI$AF_o? zUKO+#V6YY!F~GZ={r_SDy+FHG4SS;E8qLDbozRB^g*ZpaEuSoJGB6UOP zVJelT9wiS?t+_~O%)j^A;pwe7-WUIVbh5q}bHMX&Orp%COT z<9pAu&kP`#!DRQ|+Y@v#Dgpo>*CTTJu9zW)xQL^G5KyD2@xRsmRG4S|d^jtm2;3XI zK=A9erlMxGF{fS48wg9SDbbf@R6xB#HK>vTv4G~%0A8Uj&ZHua**SfV`PrR5{F(~p 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 Z34s0=eP^KA-W&k>QIu7csgW`d{XfW-8r=W@ literal 0 HcmV?d00001 diff --git a/Rect/Rect/Assets.xcassets/bodyPart.imageset/Contents.json b/Rect/Rect/Assets.xcassets/bodyPart.imageset/Contents.json new file mode 100644 index 0000000..e9cd40e --- /dev/null +++ b/Rect/Rect/Assets.xcassets/bodyPart.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "part.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/bodyPart.imageset/part.png b/Rect/Rect/Assets.xcassets/bodyPart.imageset/part.png new file mode 100644 index 0000000000000000000000000000000000000000..9511dadd08bbe2fda957666e503b4dd89582f8f7 GIT binary patch literal 2802 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 Ef-gu=p8x;= literal 0 HcmV?d00001 diff --git a/Rect/Rect/Assets.xcassets/enemy1.imageset/Contents.json b/Rect/Rect/Assets.xcassets/enemy1.imageset/Contents.json new file mode 100644 index 0000000..cc75052 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/enemy1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "enemy2.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/enemy1.imageset/enemy2.png b/Rect/Rect/Assets.xcassets/enemy1.imageset/enemy2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca34c7758dcb77f11874039fcb08ee3f4be70f27 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3HE>H7#}oQfx`y?k+$Y2!1;6t_M<_1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yR?WXgPGjZ9H5YFW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6z}(RaSZV|{&spGSAzkM^JLizvnwQRJL5LgapvV1C1(H0 z_|MineM+5*OR|~F&FZa3FIcMF{F<-wWi`jShHqUDaz4yvsA`C2nj|j4aOTXa4>upo zYG8S&;(vW<^~&OD?hp2TYhbr|z{vlj;K#YiTn3)6uD^Tx?_AM;3k&`4=UHZ3&evVg lbMDq9h4tQ_7OhxuLR{C;v2Myu24;|(Jzf1=);T3K0RXLoYK8y+ literal 0 HcmV?d00001 diff --git a/Rect/Rect/Assets.xcassets/enemy2.imageset/Contents.json b/Rect/Rect/Assets.xcassets/enemy2.imageset/Contents.json new file mode 100644 index 0000000..d39dd10 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/enemy2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "enemy1.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/enemy2.imageset/enemy1.png b/Rect/Rect/Assets.xcassets/enemy2.imageset/enemy1.png new file mode 100644 index 0000000000000000000000000000000000000000..9be3f15c1d6198ce5536d4cad4b8b82be38b0541 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI11|(N{`J4k%Y)RhkEUnfx)>bHL)Z$ zMWH;iBtya7(>EYRFO?lAUhV1P7~*mK?X``34GKIg7p&Q0zf}Ka{Trvg+{&||aYDlR z85epD_QZH*bS_$!dj8z?osv>rDyzTmbRyuFxyoch#l?n5GBJLI`#cmhje!}~`-{5rHgy&`; O_j$VdxvXFdgVpIutmT6}kFJrht!HZvrm#5q4VH#M&W$Yo$~E=o-- zNlj5G&n(GMaQE~LNYP7W2a0=ox;Tb-98V6p_2TpV#;OP0!pu_-u4oito_En;iNv4f z+Zyk)?d4{#m#CAkOtko+{FHes?;n?3=9w#V7uap(O_9{y=*}y{!^XrgRe~q3%KuFn O$Tm+`KbLh*2~7a_4nlFdgVpIusniSLT4&tIUBY-UJAiF1B#Zfaf$kjuc}T$Gwv zlA5AWo>`Ki;O^-gkfN8$4ivZbba4!^IQ{ngMotC=0hWVbU5gL?lQt3V+1e>=w?j7} z;q+adghek|3e#Qfx`y?k)`fL2$v|<&%LToCO|{ z#S9GG!XV7ZFl&wkP>{XE)7O>#KD)FC6W3*rjwe7N+02lL66gHf+|;}hAeVu`xhOTU zBsE2$JhLQ2!QIn0AVn{g9Vo8r>Eak-aXR@={Q7_M8>=2@3o}n;+{*jM@I~wi+ZVAO lrOcLY^QOD=%9u`&VPL4(%yMF1!k=!CiJq>0F6*2UngD*tIdK30 literal 0 HcmV?d00001 diff --git a/Rect/Rect/Assets.xcassets/player4.imageset/Contents.json b/Rect/Rect/Assets.xcassets/player4.imageset/Contents.json new file mode 100644 index 0000000..887e0a9 --- /dev/null +++ b/Rect/Rect/Assets.xcassets/player4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "player4.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Rect/Rect/Assets.xcassets/player4.imageset/player4.png b/Rect/Rect/Assets.xcassets/player4.imageset/player4.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6c37a0705bf31c443fcaec9cab375886909242 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W|!3HGjIoCP^DYhhUcNd2LAh=-f^2tCE&H|6f zVxTHv5N2eUHAey{$X?><>&kwgU0Q_6L`ZY0KTt?EGbEzKIX^cyHLnE7WngeFN=+KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C s024_>K~#9!Vz8?6{|^8F0RR6300Z~}1CPaScK`qY07*qoM6N<$f>xtVqW}N^ literal 0 HcmV?d00001 diff --git a/Rect/Rect/Base.lproj/LaunchScreen.storyboard b/Rect/Rect/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ b/Rect/Rect/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/Base.lproj/Main.storyboard b/Rect/Rect/Base.lproj/Main.storyboard new file mode 100644 index 0000000..c357626 --- /dev/null +++ b/Rect/Rect/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/GameScene.sks b/Rect/Rect/GameScene.sks new file mode 100644 index 0000000000000000000000000000000000000000..61eb4fe657965e9c20c56966c69eaa57a264d920 GIT binary patch literal 2140 zcmZ`)d2AF_7@wK%y`dn`ZOb9oQs^QgEp3726zjGH)Y?+JrQ3@>rZcbYl81cMPo6lf*!h{kwDjmjU!Bc5+|w*>_!+4;Wt-uL~!`)y;y z&}}C#uTPW!VfjpNwXdC8wr+;2eP&}TRUNy=r&wx>&c&5J$Bd*4;)d>LJ$Zvtl;-fw z(b&4qTW-JOt}R>d*>?W}4?gtpBRd{_tb6CK-Fx;v{=}0{J^jr7=bnGz$kDfsy|dgG zjvB_Np6tOxE*m;*c&aBYJ!8bkQKK&(Gj`ng3EqjBlO|{Rrd%=g%4t_k&(4{Vo0mUx z)@=Wrx%1{PSa|iKYYMLQ7Z&*!FIjqB;SGg1mX ziCVOlbX1s*;_xJDNW`>tm#ZgASZy(_a#IgGb;PtZY6UcnYQ&R98WnX_vt>rZT9Ij( zR-lecY#QeaSCCaSMzw(IqS(aaNqh&RjlqbeJCutq0w}B|N<#kvq`-2bhnvg>V$ldy zoXY-S8x0!PN==P6kn)o9mYA)pcA=@oE-+nMOV*Sp6Cs`qVz-!4Lo1?ThgwT?gTF&0 z7E~33y747WD-@f{^)r z8@I+QNF-6=kZBnj*KW}b&7$G@AWw-V{V;)zV`*#*8^NZq(M)18^D)FO=kmcUg}+C! z3^s{*`ByIg4Pj$h7MmD9oxs06oSV#su`4+p$x_*PZgUkI#IERVRJ|H)3Y7(C@R_n} zIZf_ZcQ=DGEqd#!+C;P5N>nFUcfc~rf~8T%?OL%OFQQ__cDEXB^<}~Hg6gv1viQcH zQN3oQn_&)U*$o4x0n1WiyDg`U`;YT(IPI&O;=Wby8rQ@lr1akEW$U|cbAz+_D6}g^ zoQ+UbR}6L;8|sm&*5+qt=67=Z4R>;|D#eJ>T^rhZH+tFKU7KBXi#Lc{vf*4Eh-c*5 zwRzc@d7asrYxDDF&d$!9J7->JXO@tBvI@>6xZdqvc5l~xbsQn$?x_or&LPCAg#CGo zi%bVF&NKZwNmLi<5&->L=j{ff;raA*ZDyHlC||1!QgD;+9Gq3~^`iZZo4ZWk;Ush9 z+Bnmn5Qo^uA*Q+zm#%_awF6vb+W)JZeeosl%dZ@K)&JU|*AEj#D_)ozUk5$ zx6(QDXUuckd;IN&fh#G#FuP8){YS#JPQDuomc;j`=j3~*PPf$uOA?n$8DF@nV2Mk3 zODm`yF~j`YNtdJ$-2s4GbLaPuFP6&O%r@}YF z&!Qxb5+{p!Vv!gUSBi#ciR;D9;tp}IctAWRo)SM7zm-I3lr%~5O95$_WJznJE@_jr zUFwmZkq$~nrBl*}(wEXX=`ToukuVy@z&Mxy6JZi$!4#MZ(_lK}KrZCNEbzlzm=6nK z5fnfGieND;h3laNN?{q?1VLC1A*g{mSOEkSP=P`-=&%afz=3seC)@=aVH0eF9k2%u z!XY>TeeeN%2p_{|a1MTgKM){}KV6YWMlXfN7_UP6b_adZZKguX!Eq3_X;=vOS_Avgn%$60s^o{AUX zg}4}(;wnsV6K=t+xC?K@oA4IggAd@N_$>Yee}#X*zu@2S@Ayyrw=BxCJV+ia50_Kr rG, withEvent event: UIEvent?) { + /* Called when a touch begins */ + var lastTouch = touches.first + + for touch in touches { + if touch.timestamp > lastTouch!.timestamp { + let location = touch.locationInNode(self) + let node = self.nodeAtPoint(location) + if node != map { + lastTouch = touch + } + } + } + + let location = lastTouch!.locationInNode(self) + let node = self.nodeAtPoint(location) + switch node.name { + case ("leftButton"?): + player.removeAllActions() + player.runAction(SKAction.repeatActionForever(SKAction.moveByX(-30, y: 0, duration: 0.1))) + case ("rightButton"?): + player.removeAllActions() + player.runAction(SKAction.repeatActionForever(SKAction.moveByX(30, y: 0, duration: 0.1))) + case ("jumpButton"?): + if (player.physicsBody?.velocity.dy == 0) { + player.physicsBody?.applyImpulse(CGVectorMake(0, 20 - CGFloat(player.bodySize) * 4)) + } + case ("overLay"?): + if player.shrink() { + shootBodyPart(location) + } + default: true + } + if (node.name == "leftButton") || (node.name == "rightButton") { + finalTouchName = node.name! + } + + } + + override func touchesEnded(touches: Set, withEvent event: UIEvent?) { + for touch in touches { + let location = touch.locationInNode(self) + let node = self.nodeAtPoint(location) + + if (node != map) { + switch node.name! { + case ("leftButton"), ("rightButton"): + if node.name == finalTouchName { + player.removeAllActions() + } + default: true + } + } + } + } + + func didBeginContact(contact: SKPhysicsContact) { + + if (contact.bodyA.node != nil) && (contact.bodyB.node != nil) { + let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask + + print(contactMask) + + switch contactMask { + case (BodyType.player.rawValue | BodyType.door.rawValue): + if player.bodySize == 1 { + levelNum++ + loadLevel(levelNum) + } + case (BodyType.bodyPart.rawValue | BodyType.player.rawValue): + if contact.bodyA.node?.name == "bodyPart" { + if (contact.bodyA.node as! bodyPart).collidedWithGround { + contact.bodyA.node?.removeFromParent() + player.enlarge() + } + } else { + if (contact.bodyB.node as! bodyPart).collidedWithGround { + contact.bodyB.node?.removeFromParent() + player.enlarge() + } + } + case (BodyType.bodyPart.rawValue | BodyType.ground.rawValue): + if contact.bodyA.node?.name == "bodyPart" { + contact.bodyA.node?.removeAllActions() + contact.bodyA.node?.physicsBody?.affectedByGravity = true + (contact.bodyA.node as! bodyPart).collidedWithGround = true + + } else { + contact.bodyB.node?.removeAllActions() + contact.bodyB.node?.physicsBody?.affectedByGravity = true + (contact.bodyB.node as! bodyPart).collidedWithGround = true + } + case (BodyType.player.rawValue | BodyType.button.rawValue): + if (contact.bodyA.node?.name == "button") { + let matchLiftName = "lift" + String((contact.bodyA.node as! button).matchLiftNum) + let matchLift = map.childNodeWithName(matchLiftName) as! lift + matchLift.moveLift() + + } else { + let matchLiftName = "lift" + String((contact.bodyB.node as! button).matchLiftNum) + print(matchLiftName) + let matchLift = map.childNodeWithName(matchLiftName) as! lift + matchLift.moveLift() + } + case (BodyType.bodyPart.rawValue | BodyType.button.rawValue): + if (contact.bodyA.node?.name == "button") { + let matchLiftName = "lift" + String((contact.bodyA.node as! button).matchLiftNum) + let matchLift = map.childNodeWithName(matchLiftName) as! lift + matchLift.moveLift() + } else { + let matchLiftName = "lift" + String((contact.bodyB.node as! button).matchLiftNum) + print(matchLiftName) + let matchLift = map.childNodeWithName(matchLiftName) as! lift + matchLift.moveLift() + } + if contact.bodyA.node?.name == "bodyPart" { + contact.bodyA.node?.removeAllActions() + contact.bodyA.node?.physicsBody?.affectedByGravity = true + (contact.bodyA.node as! bodyPart).collidedWithGround = true + + } else { + contact.bodyB.node?.removeAllActions() + contact.bodyB.node?.physicsBody?.affectedByGravity = true + (contact.bodyB.node as! bodyPart).collidedWithGround = true + } + case (BodyType.bodyPart.rawValue | BodyType.enemy.rawValue): + print(contact.bodyA.node, contact.bodyB.node) + if (contact.bodyA.node?.name == "enemy") { + if !(contact.bodyB.node as! bodyPart).usedOnEnemy { + (contact.bodyA.node as! enemy).hitted() + (contact.bodyB.node as! bodyPart).usedOnEnemy = true + } + } else { + if !(contact.bodyA.node as! bodyPart).usedOnEnemy { + (contact.bodyB.node as! enemy).hitted() + (contact.bodyA.node as! bodyPart).usedOnEnemy = true + } + } + if contact.bodyA.node?.name == "bodyPart" { + contact.bodyA.node?.removeAllActions() + contact.bodyA.node?.physicsBody?.affectedByGravity = true + (contact.bodyA.node as! bodyPart).collidedWithGround = true + + } else { + contact.bodyB.node?.removeAllActions() + contact.bodyB.node?.physicsBody?.affectedByGravity = true + (contact.bodyB.node as! bodyPart).collidedWithGround = true + } + case (BodyType.player.rawValue | BodyType.enemy.rawValue): + loadLevel(levelNum) + case (BodyType.player.rawValue | BodyType.refillBody.rawValue): + player.refill() + if contact.bodyA.node?.name == "refillBody" { + contact.bodyA.node?.removeFromParent() + } else { + contact.bodyB.node?.removeFromParent() + } + default: true + } + } + + } + + func didEndContact(contact: SKPhysicsContact) { + let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask + + switch contactMask { + case (BodyType.player.rawValue | BodyType.ground.rawValue): + true + case (BodyType.player.rawValue | BodyType.door.rawValue): + print("next level") + default: true + } + } + + func shootBodyPart(location: CGPoint) { + let aBodyPart = bodyPart() + let position = CGPointMake(player.position.x, player.position.y + player.frame.height - aBodyPart.frame.height) + aBodyPart.position = position + aBodyPart.runAction(SKAction.repeatActionForever(SKAction.moveBy(CGVector(dx: (self.map.convertPoint(location, fromNode: self.scene!).x - aBodyPart.position.x), dy: (self.map.convertPoint(location, fromNode: self.scene!).y) - aBodyPart.position.y), duration: 1))) + self.map.addChild(aBodyPart) + } + + override func update(currentTime: CFTimeInterval) { + /* Called before each frame is rendered */ + } +} diff --git a/Rect/Rect/GameViewController.swift b/Rect/Rect/GameViewController.swift new file mode 100644 index 0000000..e45e11a --- /dev/null +++ b/Rect/Rect/GameViewController.swift @@ -0,0 +1,54 @@ +// +// GameViewController.swift +// Rect +// +// Created by Peter Zhu on 15/10/31. +// Copyright (c) 2015年 Peter Zhu. All rights reserved. +// + +import UIKit +import SpriteKit + +class GameViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + if let scene = GameScene(fileNamed:"GameScene") { + // Configure the view. + let skView = self.view as! SKView + skView.showsFPS = true + skView.showsNodeCount = true + + /* Sprite Kit applies additional optimizations to improve rendering performance */ + skView.ignoresSiblingOrder = true + + /* Set the scale mode to scale to fit the window */ + scene.scaleMode = .AspectFill + + skView.presentScene(scene) + } + } + + override func shouldAutorotate() -> Bool { + return true + } + + override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { + /*if UIDevice.currentDevice().userInterfaceIdiom == .Phone { + return .AllButUpsideDown + } else { + return .All + }*/ + return .Landscape + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Release any cached data, images, etc that aren't in use. + } + + override func prefersStatusBarHidden() -> Bool { + return true + } +} diff --git a/Rect/Rect/Info.plist b/Rect/Rect/Info.plist new file mode 100644 index 0000000..44468d2 --- /dev/null +++ b/Rect/Rect/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Rect/Rect/JSTileMap.h b/Rect/Rect/JSTileMap.h new file mode 100755 index 0000000..8b0164b --- /dev/null +++ b/Rect/Rect/JSTileMap.h @@ -0,0 +1,200 @@ +// +// JSTileMap.h +// TMXMapSample +// +// Created by Jeremy on 6/11/13. +// Copyright (c) 2013 Jeremy. All rights reserved. +// + +#import +#import + +#import "LFCGzipUtility.h" + + +enum +{ + TMXLayerAttributeNone = 1 << 0, + TMXLayerAttributeBase64 = 1 << 1, + TMXLayerAttributeGzip = 1 << 2, + TMXLayerAttributeZlib = 1 << 3, +}; + +typedef enum +{ + TMXPropertyNone, + TMXPropertyMap, + TMXPropertyLayer, + TMXPropertyObjectGroup, + TMXPropertyObject, + TMXPropertyTile, + TMXPropertyImageLayer +} PropertyType; + +typedef enum +{ + kTileDiagonalFlag = 0x20000000, + kTileVerticalFlag = 0x40000000, + kTileHorizontalFlag = 0x80000000, + + kFlippedAll = (kTileHorizontalFlag | kTileVerticalFlag | kTileDiagonalFlag), + kFlippedMask = ~(kFlippedAll), +} TMXTileFlags; + +typedef enum +{ + OrientationStyle_Orthogonal, + OrientationStyle_Isometric +} OrientationStyle; + + +@interface TMXTilesetInfo : NSObject + +@property (readonly, nonatomic) NSString* name; +@property (readonly, nonatomic) unsigned int firstGid; +@property (readonly, nonatomic) CGSize tileSize; +@property (readonly, nonatomic) CGSize unitTileSize; +@property (readonly, nonatomic) unsigned int spacing; +@property (readonly, nonatomic) unsigned int margin; +@property (readonly, nonatomic) NSString* sourceImage; +@property (readonly, nonatomic) CGSize imageSize; +@property (readonly, nonatomic) int atlasTilesPerRow; +@property (readonly, nonatomic) int atlasTilesPerCol; +@property (readonly, nonatomic) SKTexture* atlasTexture; + +-(instancetype)initWithGid:(int)gid attributes:(NSDictionary*)attributes; +-(void)setSourceImage:(NSString *)sourceImage; + +-(int)rowFromGid:(int)gid; +-(int)colFromGid:(int)gid; +-(SKTexture*)textureForGid:(int)gid; + +/** Given the location of the upper left corner of a tile in this tileset, + returns a new SKTexture for that tile. */ +-(SKTexture*)textureAtPoint:(CGPoint)p; + +@end + +@class TMXLayer; + +@interface TMXLayerInfo : NSObject +@property (strong, nonatomic) NSString *name; +@property (assign, nonatomic) CGSize layerGridSize; +@property (assign, nonatomic) int* tiles; +@property (assign, nonatomic) BOOL visible; +@property (assign, nonatomic) CGFloat opacity; +@property (assign, nonatomic) unsigned int minGID; +@property (assign, nonatomic) unsigned int maxGID; +@property (strong, nonatomic) NSMutableDictionary *properties; +@property (assign, nonatomic) CGPoint offset; +@property (assign, nonatomic) TMXLayer* layer; + +-(int)tileGidAtCoord:(CGPoint)coord; + +// debugging +- (void)logLayerGIDs; + +@end + +@interface TMXImageLayer : NSObject +@property (strong, nonatomic) NSString* name; +@property (strong, nonatomic) NSMutableDictionary *properties; +@property (strong, nonatomic) NSString* imageSource; +//@property (strong, nonatomic) NSString* transparencyColor; // Will maybe support this in the future. I think this is what the "trans" property is... +@end + + +@interface TMXObjectGroup : NSObject +@property (strong, nonatomic) NSString *groupName; +@property (assign, nonatomic) CGPoint positionOffset; +@property (strong, nonatomic) NSMutableArray *objects; +@property (strong, nonatomic) NSMutableDictionary *properties; + +- (NSDictionary *)objectNamed:(NSString *)objectName; // returns the first object with the specified name. Nil, if no object matches +- (NSArray *)objectsNamed:(NSString *)objectName; // returns an NSArray of objects with the specified name +- (id)propertyNamed:(NSString *)propertyName; // returns the property with the specified name + +@end + +@class JSTileMap; + +@interface TMXLayer : SKNode +@property (strong, nonatomic) TMXLayerInfo* layerInfo; +@property (strong, nonatomic) NSMutableSet* tileInfo; // contains TMXTilesetInfo objects +@property (assign, nonatomic) CGSize mapTileSize; + +/** Returns the width of the layer (layerGridSize.width * mapTileSize.width) */ +@property (readonly,nonatomic) CGFloat layerWidth; + +/** Returns the height of the layer (layerGridSize.height * mapTileSize.height) */ +@property (readonly,nonatomic) CGFloat layerHeight; + +/** Returns the JSTileMap that contains this layer */ +@property (weak, nonatomic) JSTileMap* map; + +- (CGPoint)pointForCoord:(CGPoint)coord; +- (CGPoint)coordForPoint:(CGPoint)point; + +- (void)removeTileAtCoord:(CGPoint)coord; +- (SKSpriteNode*)tileAt:(CGPoint)point; +- (SKSpriteNode*)tileAtCoord:(CGPoint)coord; +- (int)tileGidAt:(CGPoint)point; +- (id) propertyWithName:(NSString*)name; +- (NSDictionary*)properties; + +@end + + +@interface JSTileMap : SKNode + +@property (assign, nonatomic) CGSize mapSize; +@property (assign, nonatomic) CGSize tileSize; +@property (assign, nonatomic) PropertyType parentElement; +@property (assign, nonatomic) int parentGID; +@property (assign, nonatomic) unsigned int orientation; + +// minimum and maximum range of zPositioning of the map. +@property (readonly) CGFloat minZPositioning; +@property (readonly) CGFloat maxZPositioning; + +// tmx filename +@property (strong, nonatomic) NSString *filename; + +// tmx resource path +@property (strong, nonatomic) NSString *resources; + +// tilesets +@property (strong, nonatomic) NSMutableArray* tilesets; + +// tile properties +@property (strong, nonatomic) NSMutableDictionary* tileProperties; + +// properties +@property (strong, nonatomic) NSMutableDictionary* properties; + +// layers +@property (strong, nonatomic) NSMutableArray* layers; + +// image layers +@property (strong, nonatomic) NSMutableArray* imageLayers; + +// object groups +@property (strong, nonatomic) NSMutableArray* objectGroups; + +// xml tile gids +@property (strong, nonatomic) NSMutableArray* gidData; + ++ (JSTileMap*)mapNamed:(NSString*)mapName; ++ (JSTileMap*)mapNamed:(NSString*)mapName withBaseZPosition:(CGFloat)baseZPosition andZOrderModifier:(CGFloat)zOrderModifier; + +-(TMXLayer*)layerNamed:(NSString*)name; +-(TMXObjectGroup*)groupNamed:(NSString*)name; + +-(TMXTilesetInfo*)tilesetInfoForGid:(int)gID; +-(NSDictionary*)propertiesForGid:(int)gID; + +// debugging +- (void)logGIDs; + + +@end diff --git a/Rect/Rect/JSTileMap.m b/Rect/Rect/JSTileMap.m new file mode 100755 index 0000000..a0be15d --- /dev/null +++ b/Rect/Rect/JSTileMap.m @@ -0,0 +1,1344 @@ +// +// JSTileMap.m +// TMXMapSample +// +// Created by Jeremy on 6/11/13. +// Copyright (c) 2013 Jeremy. All rights reserved. +// + + +#import "JSTileMap.h" + + +@interface JSTileMap () +{ + NSMutableString* currentString; + BOOL storingCharacters; + int currentFirstGID; + int layerAttributes; +} + +@property int zOrderCount; + +@end + +@interface TMXLayerInfo () +@property int zOrderCount; +@end + +@interface TMXObjectGroup () +@property int zOrderCount; +@end + +@interface TMXImageLayer () +@property int zOrderCount; +@end + +@interface TMXTilesetInfo () +@property (nonatomic,strong) NSMutableDictionary* textureCache; +@end + + +#pragma mark - + + +@implementation TMXLayer + + +- (CGPoint)pointForCoord:(CGPoint)coord +{ + return + CGPointMake(coord.x * _mapTileSize.width + _mapTileSize.width / 2, + [self layerHeight] - (coord.y * _mapTileSize.height + _mapTileSize.height / 2)); +} + +- (CGPoint) coordForPoint:(CGPoint) inPoint +{ + // invert y axis + inPoint.y = [self layerHeight] - inPoint.y; + + int x = inPoint.x / _mapTileSize.width; + int y = inPoint.y / _mapTileSize.height; + + return CGPointMake(x, y); +} + + +-(int)tileGidAt:(CGPoint)point +{ + // get index + CGPoint pt = [self coordForPoint:point]; + int idx = pt.x + (pt.y * self.layerInfo.layerGridSize.width); + + // bounds check, invalid GID if out of bounds + if(idx > (_layerInfo.layerGridSize.width * _layerInfo.layerGridSize.height) || + idx < 0) + { + NSAssert(true, @"index out of bounds!"); + return 0; + } + + // return the Gid + return _layerInfo.tiles[ idx ]; +} + + +- (SKSpriteNode*)tileAt:(CGPoint)point +{ + return [self tileAtCoord:[self coordForPoint:point]]; +} + +- (SKSpriteNode*)tileAtCoord:(CGPoint)coord +{ + NSString* nodeName = [NSString stringWithFormat:@"*/%d",(int)(coord.x + coord.y * _layerInfo.layerGridSize.width)]; + return (SKSpriteNode*)[self childNodeWithName:nodeName]; +} + + +//#warning need to write setTileGidAt: + + +-(void)removeTileAtCoord:(CGPoint)coord +{ + uint32_t gid = [self.layerInfo tileGidAtCoord:coord]; + + if( gid ) + { + int z = coord.x + coord.y * self.layerInfo.layerGridSize.width; + + // remove tile from GID map + self.layerInfo.tiles[z] = 0; + + SKNode* tileNode = [self tileAtCoord:coord]; + if(tileNode) + [tileNode removeFromParent]; + } +} + + +- (NSDictionary*)properties +{ + return self.layerInfo.properties; +} + + +- (id) propertyWithName:(NSString*)name +{ + return self.layerInfo.properties[name]; +} + + +#pragma mark - + + ++(id) layerWithTilesetInfo:(NSArray*)tilesets layerInfo:(TMXLayerInfo*)layerInfo mapInfo:(JSTileMap*)mapInfo +{ + TMXLayer* layer = [TMXLayer node]; + layer.map = mapInfo; + + // basic properties from layerInfo + layer.layerInfo = layerInfo; + layer.layerInfo.layer = layer; + layer.mapTileSize = mapInfo.tileSize; + layer.alpha = layerInfo.opacity; + layer.position = layerInfo.offset; + + // recalc the offset if we are isometriic + if (mapInfo.orientation == OrientationStyle_Isometric) + { + layer.position = CGPointMake((layer.mapTileSize.width / 2.0) * (layer.position.x - layer.position.y), + (layer.mapTileSize.height / 2.0) * (-layer.position.x - layer.position.y)); + } + + NSMutableDictionary* layerNodes = [NSMutableDictionary dictionaryWithCapacity:tilesets.count]; + + // loop through the tiles + for (int col = 0; col < layerInfo.layerGridSize.width; col++) + { + for (int row = 0; row < layerInfo.layerGridSize.height; row++) + { + // get the gID + UInt32 gID = layerInfo.tiles[col + (int)(row * layerInfo.layerGridSize.width)]; + + // mask off the flip bits and remember their result. + UInt32 flipXY = gID & (kTileHorizontalFlag | kTileVerticalFlag); + bool flipDiag = (gID & kTileDiagonalFlag) != 0; + gID = gID & kFlippedMask; + + // skip 0 GIDs + if (!gID) + continue; + + // get the tileset for the passed gID. This will allow us to support multiple tilesets! + TMXTilesetInfo* tilesetInfo = [mapInfo tilesetInfoForGid:gID]; + [layer.tileInfo addObject:tilesetInfo]; + + if (tilesetInfo) // should never be nil? + { + SKTexture* texture = [tilesetInfo textureForGid:gID]; + SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:texture]; + sprite.name = [NSString stringWithFormat:@"%d",(int)(col + row * layerInfo.layerGridSize.width)]; + + // make sure it's in the right position. + if (mapInfo.orientation == OrientationStyle_Isometric) + { + sprite.position = CGPointMake((layer.mapTileSize.width / 2.0) * (layerInfo.layerGridSize.width + col - row - 1), + (layer.mapTileSize.height / 2.0) * ((layerInfo.layerGridSize.height * 2 - col - row) - 2) ); + } + else + { + sprite.position = CGPointMake(col * layer.mapTileSize.width + tilesetInfo.tileSize.width/2.0, + (mapInfo.mapSize.height * (layer.mapTileSize.height)) - ((row + 1) * layer.mapTileSize.height) + tilesetInfo.tileSize.height/2.0); + } + + // flip sprites if necessary + if (flipDiag) { + if (flipXY == kTileHorizontalFlag) { + sprite.zRotation = -M_PI_2; // rotate clockwise by 90-degree + } else if (flipXY == kTileVerticalFlag) { + sprite.zRotation = M_PI_2; // rotate counter-clockwise by 90-degree + } else if (flipXY == (kTileHorizontalFlag | kTileVerticalFlag)) { + sprite.zRotation = -M_PI_2; // rotate clockwise by 90-degree + sprite.xScale *= -1; // hozontal flip + } else { + sprite.zRotation = M_PI_2; // rotate counter-clockwise by 90-degree + sprite.xScale *= -1; // hozontal flip + } + } else { + if (flipXY & kTileHorizontalFlag) { + sprite.xScale *= -1; // hozontal flip + } + if (flipXY & kTileVerticalFlag) { + sprite.yScale *= -1; // vertical flip + } + } + + // add sprite to correct node for this tileset + SKNode* layerNode = layerNodes[tilesetInfo.name]; + if (!layerNode) { + layerNode = [[SKNode alloc] init]; + layerNodes[tilesetInfo.name] = layerNode; + } + [layerNode addChild:sprite]; + +#ifdef DEBUG +// CGRect textRect = [texture textureRect]; +// NSLog(@"atlasNum %2d (%2d,%2d), gid (%d,%d), rect (%f, %f, %f, %f) sprite.pos (%3.2f,%3.2f) flipx%2d flipy%2d flipDiag%2d", gID+1, row, col, [tilesetInfo rowFromGid:gID], [tilesetInfo colFromGid:gID], textRect.origin.x, textRect.origin.y, textRect.size.width, textRect.size.height, sprite.position.x, sprite.position.y, flipX, flipY, flipDiag); +#endif + + } + } + } + + // add nodes for any tilesets that were used in this layer + for (SKNode* layerNode in layerNodes.allValues) { + if (layerNode.children.count > 0) { + [layer addChild:layerNode]; + } + } + + [layer calculateAccumulatedFrame]; + + return layer; +} + +-(CGFloat)layerWidth +{ + return self.layerInfo.layerGridSize.width * self.mapTileSize.width; +} + +-(CGFloat)layerHeight +{ + return self.layerInfo.layerGridSize.height * self.mapTileSize.height; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeObject:_layerInfo forKey:@"TMXLayerLayerInfo"]; + [aCoder encodeObject:_tileInfo forKey:@"TMXLayerTileInfo"]; +#if TARGET_OSX + NSPoint p = {.x = _mapTileSize.width, .y = _mapTileSize.height}; + [aCoder encodePoint:p forKey:@"TMXLayerTileSize"]; +#else + [aCoder encodeCGSize:_mapTileSize forKey:@"TMXLayerTileSize"]; +#endif + [aCoder encodeObject:_map forKey:@"TMXLayerMap"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super initWithCoder:aDecoder]) + { + _layerInfo = [aDecoder decodeObjectForKey:@"TMXLayerLayerInfo"]; + _tileInfo = [aDecoder decodeObjectForKey:@"TMXLayerTileInfo"]; +#if TARGET_OSX + NSPoint p = [aDecoder decodePointForKey:@"TMXLayerTileSize"]; + _mapTileSize = CGSizeMake(p.x, p.y); +#else + _mapTileSize = [aDecoder decodeCGSizeForKey:@"TMXLayerTileSize"]; +#endif + _map = [aDecoder decodeObjectForKey:@"TMXLayerMap"]; + } + return self; +} + +@end + + +#pragma mark - + + +@implementation TMXLayerInfo + +- (id)init +{ + self = [super init]; + if (self) { + self.properties = [NSMutableDictionary dictionary]; + } + return self; +} + +-(void)dealloc +{ + free(_tiles); +} + +-(int)tileGidAtCoord:(CGPoint)coord +{ + int idx = coord.x + coord.y * _layerGridSize.width; + + NSAssert(idx < (_layerGridSize.width * _layerGridSize.height), @"index out of bounds!"); + + return _tiles[ idx ]; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:_name forKey:@"TMXLayerInfoName"]; +#if TARGET_OSX + NSPoint p = {.x = _layerGridSize.width, .y = _layerGridSize.height}; + [aCoder encodePoint:p forKey:@"TMXLayerInfoGridSize"]; +#else + [aCoder encodeCGSize:_layerGridSize forKey:@"TMXLayerInfoGridSize"]; +#endif + [aCoder encodeObject:[NSData dataWithBytes:(void*)_tiles + length:sizeof(int)*(_layerGridSize.width*_layerGridSize.height)] + forKey:@"TMXLayerInfoTiles"]; + [aCoder encodeBool:_visible forKey:@"TMXLayerInfoVisible"]; + [aCoder encodeFloat:_opacity forKey:@"TMXLayerInfoOpacity"]; + [aCoder encodeInteger:_minGID forKey:@"TMXLayerInfoMinGid"]; + [aCoder encodeInteger:_maxGID forKey:@"TMXLayerInfoMaxGid"]; + + [aCoder encodeObject:_properties forKey:@"TMXLayerInfoProperties"]; +#if TARGET_OSX + [aCoder encodePoint:_offset forKey:@"TMXLayerInfoOffset"]; +#else + [aCoder encodeCGPoint:_offset forKey:@"TMXLayerInfoOffset"]; +#endif + [aCoder encodeObject:_layer forKey:@"TMXLayerInfoLayer"]; + [aCoder encodeInteger:_zOrderCount forKey:@"TMXLayerInfoZOrderCount"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super init]) + { + _name = [aDecoder decodeObjectForKey:@"TMXLayerInfoName"]; +#if TARGET_OSX + NSPoint p = [aDecoder decodePointForKey:@"TMXLayerInfoGridSize"]; + _layerGridSize = CGSizeMake(p.x, p.y); +#else + _layerGridSize = [aDecoder decodeCGSizeForKey:@"TMXLayerInfoGridSize"]; +#endif + + NSData* data = [aDecoder decodeObjectForKey:@"TMXLayerInfoTiles"]; + int* temp = (int*)[data bytes]; + _tiles = malloc(sizeof(int)*(_layerGridSize.width*_layerGridSize.height)); + for(int i = 0; i < (_layerGridSize.width*_layerGridSize.height); ++i) { + _tiles[i] = temp[i]; + } + + _visible = [aDecoder decodeBoolForKey:@"TMXLayerInfoVisible"]; + _opacity = [aDecoder decodeFloatForKey:@"TMXLayerInfoOpacity"]; + _minGID = [aDecoder decodeIntForKey:@"TMXLayerInfoMinGid"]; + _maxGID = [aDecoder decodeIntForKey:@"TMXLayerInfoMaxGid"]; + + _properties = [aDecoder decodeObjectForKey:@"TMXLayerInfoProperties"]; +#if TARGET_OSX + _offset = [aDecoder decodePointForKey:@"TMXLayerInfoOffset"]; +#else + _offset = [aDecoder decodeCGPointForKey:@"TMXLayerInfoOffset"]; +#endif + _layer = [aDecoder decodeObjectForKey:@"TMXLayerInfoLayer"]; + _zOrderCount = [aDecoder decodeIntForKey:@"TMXLayerInfoZOrderCount"]; + } + return self; +} + + +- (void)logLayerGIDs +{ + NSMutableString *str = [NSMutableString string]; + + // header row + [str appendString:@" grid "]; + for (int i = 0; i < _layerGridSize.width; i++) + { + [str appendFormat:@"%3d", i]; + } + [str appendString:@"\r"]; + + for (int x = 0; x < _layerGridSize.width * _layerGridSize.height; x++) + { + if (x % (int)(_layerGridSize.width) == 0) + [str appendFormat:@"\r %3ld ", lrint(x / _layerGridSize.width)]; + + [str appendFormat:@"%3d", _tiles[x]]; + } + + NSLog(@"Layer '%@':\r\r%@\r\r", _name, str); +} + + +@end + +@implementation TMXObjectGroup + +- (id)init +{ + self = [super init]; + if (self) { + self.objects = [NSMutableArray array]; + self.properties = [NSMutableDictionary dictionary]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:_groupName forKey:@"TMXObjectGroupName"]; +#if TARGET_OSX + [aCoder encodePoint:_positionOffset forKey:@"TMSObjectGroupPosOffset"]; +#else + [aCoder encodeCGPoint:_positionOffset forKey:@"TMSObjectGroupPosOffset"]; +#endif + [aCoder encodeObject:_objects forKey:@"TMXObjectGroupObjects"]; + [aCoder encodeObject:_properties forKey:@"TMXObjectGroupProperties"]; + [aCoder encodeInteger:_zOrderCount forKey:@"TMXObjectGroupZOrderCount"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super init]) + { + _groupName = [aDecoder decodeObjectForKey:@"TMXObjectGroupName"]; +#if TARGET_OSX + _positionOffset = [aDecoder decodePointForKey:@"TMSObjectGroupPosOffset"]; +#else + _positionOffset = [aDecoder decodeCGPointForKey:@"TMSObjectGroupPosOffset"]; +#endif + _objects = [aDecoder decodeObjectForKey:@"TMXObjectGroupObjects"]; + _properties = [aDecoder decodeObjectForKey:@"TMXObjectGroupProperties"]; + _zOrderCount = [aDecoder decodeIntForKey:@"TMXObjectGroupZOrderCount"]; + } + return self; +} + +- (NSDictionary *)objectNamed:(NSString *)objectName { + __block NSDictionary *object = nil; + [self.objects enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop) { + if ([[obj valueForKey:@"name"] isEqualToString:objectName]) { + object = obj; + *stop = YES; + } + }]; + + return object; +} + +- (NSArray *)objectsNamed:(NSString *)objectName { + NSMutableArray *objects = [NSMutableArray arrayWithCapacity:self.objects.count]; + [self.objects enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL *stop) { + if ([[obj valueForKey:@"name"] isEqualToString:objectName]) { + [objects addObject:obj]; + } + }]; + + return objects; +} + +- (id)propertyNamed:(NSString *)propertyName { + return [self.properties valueForKey:propertyName]; +} + +@end + + +@implementation TMXImageLayer + +- (id)init +{ + self = [super init]; + if (self) { + self.properties = [NSMutableDictionary dictionary]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:_name forKey:@"TMXImageLayerName"]; + [aCoder encodeObject:_imageSource forKey:@"TMXImageLayerSource"]; + [aCoder encodeObject:_properties forKey:@"TMXImageLayerProperties"]; + [aCoder encodeInteger:_zOrderCount forKey:@"TMXImageLayerZOrderCount"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super init]) + { + _name = [aDecoder decodeObjectForKey:@"TMXImageLayerName"]; + _imageSource = [aDecoder decodeObjectForKey:@"TMXImageLayerSource"]; + _properties = [aDecoder decodeObjectForKey:@"TMXImageLayerProperties"]; + _zOrderCount = [aDecoder decodeIntForKey:@"TMXImageLayerZOrderCount"]; + } + return self; +} + +@end + + +@implementation TMXTilesetInfo + +-(instancetype)initWithGid:(int)gID attributes:(NSDictionary*)attributes +{ + if((self = [super init])) + { + _name = [attributes[@"name"] copy]; + _firstGid = gID; + _spacing = [attributes[@"spacing"] intValue]; + _margin = [attributes[@"margin"] intValue]; + _tileSize = CGSizeMake([attributes[@"tilewidth"] intValue], + [attributes[@"tileheight"] intValue]); + + _textureCache = [NSMutableDictionary dictionary]; + + } + return self; +} + +-(void)setSourceImage:(NSString *)sourceImage +{ + _sourceImage = [sourceImage copy]; +#if TARGET_OSX + NSImageRep* atlas = [NSImageRep imageRepWithContentsOfFile:_sourceImage]; +#else + UIImage* atlas = [UIImage imageWithContentsOfFile:_sourceImage]; +#endif + _imageSize = atlas.size; +// _atlasTexture = [SKTexture textureWithImage:atlas]; // CML: There seems to be a bug where creating with Image instead of ImageNamed breaks the + _atlasTexture = [SKTexture textureWithImageNamed:_sourceImage]; // archiving. + + NSLog(@"texture image: %@\rSize (%f, %f)", _sourceImage, _atlasTexture.size.width, _atlasTexture.size.height); + + _unitTileSize = CGSizeMake(_tileSize.width / _imageSize.width, + _tileSize.height / _imageSize.height); + + _atlasTilesPerRow = (_imageSize.width - _margin * 2 + _spacing) / (_tileSize.width + _spacing); + _atlasTilesPerCol = (_imageSize.height - _margin * 2 + _spacing) / (_tileSize.height + _spacing); +} + +-(int)rowFromGid:(int)gid +{ + return gid / self.atlasTilesPerRow; +} + +-(int)colFromGid:(int)gid +{ + return gid % self.atlasTilesPerRow; +} + +-(SKTexture*)textureForGid:(int)gid +{ + gid = gid & kFlippedMask; + gid -= self.firstGid; + + SKTexture* texture = self.textureCache[@(gid)]; + if(!texture) + { + CGFloat rowOffset = ( (((self.tileSize.height + self.spacing) * [self rowFromGid:gid]) + self.margin) / self.imageSize.height); + CGFloat colOffset = ( (((self.tileSize.width + self.spacing) * [self colFromGid:gid]) + self.margin) / self.imageSize.width); + // reverse y axis + rowOffset = 1.0 - rowOffset - self.unitTileSize.height; + + // note that the width and height of the tiles are always the same in TMX maps or the atlas (GIDs) couldn't be calculated consistently. + CGRect rect = CGRectMake(colOffset, rowOffset, + self.unitTileSize.width, self.unitTileSize.height); + + texture = [SKTexture textureWithRect:rect inTexture:self.atlasTexture]; + texture.usesMipmaps = YES; + texture.filteringMode = SKTextureFilteringNearest; + self.textureCache[@(gid)] = texture; + + // tile data +#ifdef DEBUG +// NSLog(@"The regular atlas is %f x %f. Tile size is %f x % f plus %d spaces between each tile.", self.atlasTexture.size.width, self.atlasTexture.size.height, self.tileSize.width, self.tileSize.height, self.spacing); +// NSLog(@"Tile margins for this atlas are %d. This means the atlas image is inset by this amount, from both the top left and bottom right.", self.margin); +// NSLog(@"gid %d is row %d, col %d of the atlas. (map base gid is %d)", gid, [self rowFromGid:gid] + 1, [self colFromGid:gid] + 1, self.firstGid); +// NSLog(@"This means that the tile x offset is %f%% into the atlas and %f%% from the top-left of the atlas.", colOffset, rowOffset); +// NSLog(@"The adjusted tile size in percentages is %f wide and %f tall.", self.unitTileSize.width, self.unitTileSize.height); +#endif + } + return texture; +} + +-(SKTexture*)textureAtPoint:(CGPoint)p +{ + SKTexture *atlas = self.atlasTexture; + return [SKTexture textureWithRect: + CGRectMake(p.x / atlas.size.width, 1.0-((p.y + self.tileSize.height) / atlas.size.height), + self.unitTileSize.width, self.unitTileSize.height) + inTexture:atlas]; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:_name forKey:@"TMXTilesetName"]; + [aCoder encodeInteger:_firstGid forKey:@"TMXTilesetFirstGid"]; +#if TARGET_OSX + NSPoint p = {.x = _tileSize.width, .y = _tileSize.height}; + [aCoder encodePoint:p forKey:@"TMXTilesetTileSize"]; + p.x = _unitTileSize.width; p.y = _unitTileSize.height; + [aCoder encodePoint:p forKey:@"TMXTilesetUnitTileSize"]; + p.x = _imageSize.width; p.y = _imageSize.height; + [aCoder encodePoint:p forKey:@"TMXTilesetImageSize"]; +#else + [aCoder encodeCGSize:_tileSize forKey:@"TMXTilesetTileSize"]; + [aCoder encodeCGSize:_unitTileSize forKey:@"TMXTilesetUnitTileSize"]; + [aCoder encodeCGSize:_imageSize forKey:@"TMXTilesetImageSize"]; +#endif + [aCoder encodeInteger:_spacing forKey:@"TMXTilesetSpacing"]; + [aCoder encodeInteger:_margin forKey:@"TMXTilesetMargin"]; + [aCoder encodeObject:_sourceImage forKey:@"TMXTilesetSourceImage"]; + [aCoder encodeInteger:_atlasTilesPerRow forKey:@"TMXTilesetTilesPerRow"]; + [aCoder encodeInteger:_atlasTilesPerCol forKey:@"TMXTilesetTilesPerCol"]; + [aCoder encodeObject:_atlasTexture forKey:@"TMXTilesetAtlasTexture"]; + [aCoder encodeObject:_textureCache forKey:@"TMXTilesetTextureCache"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super init]) + { + _name = [aDecoder decodeObjectForKey:@"TMXTilesetName"]; + _firstGid = [aDecoder decodeIntForKey:@"TMXTilesetFirstGid"]; +#if TARGET_OSX + NSPoint p = [aDecoder decodePointForKey:@"TMXTilesetTileSize"]; + _tileSize = CGSizeMake(p.x, p.y); + p = [aDecoder decodePointForKey:@"TMXTilesetUnitTileSize"]; + _unitTileSize = CGSizeMake(p.x, p.y); + p = [aDecoder decodePointForKey:@"TMXTilesetImageSize"]; + _imageSize = CGSizeMake(p.x, p.y); +#else + _tileSize = [aDecoder decodeCGSizeForKey:@"TMXTilesetTileSize"]; + _unitTileSize = [aDecoder decodeCGSizeForKey:@"TMXTilesetUnitTileSize"]; + _imageSize = [aDecoder decodeCGSizeForKey:@"TMXTilesetImageSize"]; +#endif + _spacing = [aDecoder decodeIntForKey:@"TMXTilesetSpacing"]; + _margin = [aDecoder decodeIntForKey:@"TMXTilesetMargin"]; + _sourceImage = [aDecoder decodeObjectForKey:@"TMXTilesetSourceImage"]; + _atlasTilesPerRow = [aDecoder decodeIntForKey:@"TMXTilesetTilesPerRow"]; + _atlasTilesPerCol = [aDecoder decodeIntForKey:@"TMXTilesetTilesPerCol"]; + _atlasTexture = [aDecoder decodeObjectForKey:@"TMXTilesetAtlasTexture"]; + _textureCache = [aDecoder decodeObjectForKey:@"TMXTilesetTextureCache"]; + } + return self; +} + +@end + + +@implementation JSTileMap + + ++ (JSTileMap*)mapNamed:(NSString*)mapName +{ + // zOrder offset. Make this bigger if you want more space between layers. + // higher numbers act further away. + return [JSTileMap mapNamed:mapName withBaseZPosition:0.0f andZOrderModifier:-20.0f]; +} + + ++ (JSTileMap*)mapNamed:(NSString*)mapName withBaseZPosition:(CGFloat)baseZPosition andZOrderModifier:(CGFloat)zOrderModifier +{ + // create the map + JSTileMap* map = [[JSTileMap alloc] init]; + + // get the TMX map filename + NSString* name = mapName; + NSString* extension = nil; + + // split the extension off if there is one passed + if ([mapName rangeOfString:@"."].location != NSNotFound) + { + name = [mapName stringByDeletingPathExtension]; + extension = [mapName pathExtension]; + } + + // load the TMX map from disk + NSString* path = [[NSBundle mainBundle] pathForResource:name ofType:extension]; + NSData* mapData = [NSData dataWithContentsOfFile:path]; + + // set the filename + map.filename = path; + + // parse the map + NSXMLParser* parser = [[NSXMLParser alloc] initWithData:mapData]; + parser.delegate = map; + parser.shouldProcessNamespaces = NO; + parser.shouldReportNamespacePrefixes = NO; + parser.shouldResolveExternalEntities = NO; + BOOL parsed = [parser parse]; + if (!parsed) + { + NSLog(@"Error parsing map! \n%@", [parser parserError]); + return nil; + } + + // set zPosition range + if (baseZPosition < (baseZPosition + (zOrderModifier * (map.zOrderCount + 1)))) + { + map->_minZPositioning = baseZPosition; + map->_maxZPositioning = baseZPosition + (zOrderModifier * (map.zOrderCount + 1)); + } + else + { + map->_maxZPositioning = baseZPosition; + map->_minZPositioning = baseZPosition + (zOrderModifier * (map.zOrderCount + 1)); + } + + // now actually using the data begins. + + // add layers + for( TMXLayerInfo *layerInfo in map.layers ) + { + if( layerInfo.visible ) + { + TMXLayer *child = [TMXLayer layerWithTilesetInfo:map.tilesets layerInfo:layerInfo mapInfo:map]; + child.zPosition = baseZPosition + ((map.zOrderCount - layerInfo.zOrderCount) * zOrderModifier); +#ifdef DEBUG + NSLog(@"Layer %@ has zPosition %f", layerInfo.name, child.zPosition); +#endif + [map addChild:child]; + } + } + + // add tile objects + for (TMXObjectGroup* objectGroup in map.objectGroups) + { +#ifdef DEBUG + NSLog(@"Object Group %@ has zPosition %f", objectGroup.groupName, (baseZPosition + (map.zOrderCount - objectGroup.zOrderCount) * zOrderModifier)); +#endif + + for (NSDictionary* obj in objectGroup.objects) + { + NSString* num = obj[@"gid"]; + if (num && [num intValue]) + { + TMXTilesetInfo* tileset = [map tilesetInfoForGid:[num intValue]]; + if (tileset) // add a tile object if it is apropriate. + { + CGFloat x = [obj[@"x"] floatValue]; + CGFloat y = [obj[@"y"] floatValue]; + CGPoint pt; + + if (map.orientation == OrientationStyle_Isometric) + { +//#warning these appear to be incorrect for iso maps when used for tile objects! Unsure why the math is different between objects and regular tiles. + CGPoint coords = [map screenCoordToPosition:CGPointMake(x, y)]; + pt = CGPointMake((map.tileSize.width / 2.0) * (map.tileSize.width + coords.x - coords.y - 1), + (map.tileSize.height / 2.0) * (((map.tileSize.height * 2) - coords.x - coords.y) - 2)); + +// NOTE: +// iso zPositioning may not work as expected for maps with irregular tile sizes. For larger tiles (i.e. a box in front of some floor +// tiles) We would need each layer to have their tiles ordered lower at the bottom coords and higher at the top coords WITHIN THE LAYER, in +// addition to the layers being offset as described below. this could potentially be a lot larger than 20 as a default and may take some +// thinking to fix. + } + else + { + pt = CGPointMake(x + (map.tileSize.width / 2.0), y + (map.tileSize.height / 2.0)); + } + SKTexture* texture = [tileset textureForGid:[num intValue] - tileset.firstGid + 1]; + SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithTexture:texture]; + sprite.position = pt; + sprite.zPosition = baseZPosition + ((map.zOrderCount - objectGroup.zOrderCount) * zOrderModifier); + sprite.name = obj[@"name"]; + [map addChild:sprite]; + +//#warning This needs to be optimized into tilemap layers like our regular layers above for performance reasons. + // this could be problematic... what if a single object group had a bunch of tiles from different tilemaps? Would this cause zOrder problems if we're adding them all to tilemap layers? + } + } + } + } + + // add image layers + for (TMXImageLayer* imageLayer in map.imageLayers) + { + SKSpriteNode* image = [SKSpriteNode spriteNodeWithImageNamed:imageLayer.imageSource]; + image.position = CGPointMake(image.size.width / 2.0, image.size.height / 2.0); + image.zPosition = baseZPosition + ((map.zOrderCount - imageLayer.zOrderCount) * zOrderModifier); + [map addChild:image]; +#ifdef DEBUG + NSLog(@"IMAGE Layer %@ has zPosition %f", imageLayer.name, image.zPosition); +#endif + +//#warning the positioning is off here, seems to be bottom-left instead of top-left. Might be off on the rest of the sprites too...? + } + + return map; +} + + +- (CGPoint)screenCoordToPosition:(CGPoint)screenCoord +{ + CGPoint retVal; + retVal.x = screenCoord.x / self.tileSize.width; + retVal.y = screenCoord.y / self.tileSize.height; + + return retVal; +} + + +-(TMXTilesetInfo*)tilesetInfoForGid:(int)gID +{ + if (!gID) + return nil; + + for (TMXTilesetInfo* tileset in self.tilesets) + { + // check to see if the gID is in the info's atlas gID range. If not, skip this one and go to the next. + int lastPossibleGid = tileset.firstGid + (tileset.atlasTilesPerRow * tileset.atlasTilesPerCol) - 1; + if (gID < tileset.firstGid || gID > lastPossibleGid) + continue; + + return tileset; + } + + return nil; // should never get here? +} + + +-(NSDictionary*)propertiesForGid:(int)gID +{ + return self.tileProperties[@(gID)]; +} + + +-(TMXLayer*)layerNamed:(NSString*)name +{ + for(TMXLayerInfo* layerInfo in self.layers) + { + if ([name isEqualToString:layerInfo.name]) + return layerInfo.layer; + } + return nil; +} + +-(TMXObjectGroup*)groupNamed:(NSString*)name +{ + for(TMXObjectGroup* group in self.objectGroups) + { + if ([name isEqualToString:group.groupName]) + return group; + } + return nil; +} + +- (id)init +{ + self = [super init]; + if (self) + { + currentFirstGID = 0; + currentString = [NSMutableString string]; + storingCharacters = NO; + layerAttributes = TMXLayerAttributeNone; + + self.zOrderCount = 1; + self.parentElement = TMXPropertyNone; + self.tilesets = [NSMutableArray array]; + self.tileProperties = [NSMutableDictionary dictionary]; + self.properties = [NSMutableDictionary dictionary]; + self.layers = [NSMutableArray array]; + self.imageLayers = [NSMutableArray array]; + self.objectGroups = [NSMutableArray array]; + self.resources = nil; // possible future resources path + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + +#if TARGET_OSX + NSPoint p = {.x = _mapSize.width, .y = _mapSize.height}; + [aCoder encodePoint:p forKey:@"JSTileMapMapSize"]; + p.x = _tileSize.width; p.y = _tileSize.height; + [aCoder encodePoint:p forKey:@"JSTileMapTileSize"]; +#else + [aCoder encodeCGSize:_mapSize forKey:@"JSTileMapMapSize"]; + [aCoder encodeCGSize:_tileSize forKey:@"JSTileMapTileSize"]; +#endif + [aCoder encodeInt:_parentElement forKey:@"JSTileMapParentElement"]; + [aCoder encodeInteger:_parentGID forKey:@"JSTileMapParentGid"]; + [aCoder encodeInt:_orientation forKey:@"JSTileMapOrientation"]; + [aCoder encodeObject:_filename forKey:@"JSTileMapFilename"]; + [aCoder encodeObject:_resources forKey:@"JSTileMapResources"]; + [aCoder encodeObject:_tilesets forKey:@"JSTileMapTilesets"]; + [aCoder encodeObject:_tileProperties forKey:@"JSTileMapTileProperties"]; + [aCoder encodeObject:_properties forKey:@"JSTileMapProperties"]; + [aCoder encodeObject:_layers forKey:@"JSTileMapLayers"]; + [aCoder encodeObject:_imageLayers forKey:@"JSTileMapImageLayers"]; + [aCoder encodeObject:_objectGroups forKey:@"JSTileMapObjectGroups"]; + [aCoder encodeObject:_gidData forKey:@"JSTileMapGidData"]; + [aCoder encodeInteger:_zOrderCount forKey:@"JSTileMapZOrderCount"]; + + // parsing variables -- not sure they need to be coded, but just in case + [aCoder encodeObject:currentString forKey:@"JSTileMapCurrentString"]; + [aCoder encodeBool:storingCharacters forKey:@"JSTileMapStoringChars"]; + [aCoder encodeInteger:currentFirstGID forKey:@"JSTileMapCurrentFirstGid"]; + [aCoder encodeInteger:layerAttributes forKey:@"JSTileMapLayerAttributes"]; +} + +-(instancetype)initWithCoder:(NSCoder *)aDecoder +{ + if(self = [super initWithCoder:aDecoder]) + { +#if TARGET_OSX + NSPoint p = [aDecoder decodePointForKey:@"JSTileMapMapSize"]; + _mapSize = CGSizeMake(p.x, p.y); + p = [aDecoder decodePointForKey:@"JSTileMapTileSize"]; + _tileSize = CGSizeMake(p.x, p.y); +#else + _mapSize = [aDecoder decodeCGSizeForKey:@"JSTileMapMapSize"]; + _tileSize = [aDecoder decodeCGSizeForKey:@"JSTileMapTileSize"]; +#endif + _parentElement = [aDecoder decodeIntForKey:@"JSTileMapParentElement"]; + _parentGID = [aDecoder decodeIntForKey:@"JSTileMapParentGid"]; + _orientation = [aDecoder decodeIntForKey:@"JSTileMapOrientation"]; + _filename = [aDecoder decodeObjectForKey:@"JSTileMapFilename"]; + _resources = [aDecoder decodeObjectForKey:@"JSTileMapResources"]; + _tilesets = [aDecoder decodeObjectForKey:@"JSTileMapTilesets"]; + _tileProperties = [aDecoder decodeObjectForKey:@"JSTileMapTileProperties"]; + _properties = [aDecoder decodeObjectForKey:@"JSTileMapProperties"]; + _layers = [aDecoder decodeObjectForKey:@"JSTileMapLayers"]; + _objectGroups = [aDecoder decodeObjectForKey:@"JSTileMapObjectGroups"]; + _gidData = [aDecoder decodeObjectForKey:@"JSTileMapGidData"]; + _imageLayers = [aDecoder decodeObjectForKey:@"JSTileMapImageLayers"]; + _zOrderCount = [aDecoder decodeIntForKey:@"JSTileMapZOrderCount"]; + + // parsing variables -- not sure they need to be coded, but just in case + currentString = [aDecoder decodeObjectForKey:@"JSTileMapCurrentString"]; + storingCharacters = [aDecoder decodeBoolForKey:@"JSTileMapStoringChars"]; + currentFirstGID = [aDecoder decodeIntForKey:@"JSTileMapCurrentFirstGid"]; + layerAttributes = [aDecoder decodeIntForKey:@"JSTileMapLayerAttributes"]; + } + return self; +} + + +#pragma mark - debugging + + +- (void)logGIDs +{ + for (TMXLayerInfo *layerInfo in _layers) + { + [layerInfo logLayerGIDs]; + } + +} + +#pragma mark - parsing + + +// the XML parser calls here with all the elements +-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict +{ + if([elementName isEqualToString:@"map"]) + { + NSString* orientationStr = attributeDict[@"orientation"]; + if ([[orientationStr lowercaseString] isEqualToString:@"orthogonal"]) + { + self.orientation = OrientationStyle_Orthogonal; + } + else if ( [[orientationStr lowercaseString] isEqualToString:@"isometric"]) + { + self.orientation = OrientationStyle_Isometric; + } + else + { + NSLog(@"Unsupported orientation: %@", attributeDict[@"orientation"]); + [parser abortParsing]; + } + + self.mapSize = CGSizeMake([attributeDict[@"width"] intValue], [attributeDict[@"height"] intValue]); + self.tileSize = CGSizeMake([attributeDict[@"tilewidth"] intValue], [attributeDict[@"tileheight"] intValue]); + + // The parent element is now "map" + self.parentElement = TMXPropertyMap; + } + else if([elementName isEqualToString:@"tileset"]) + { + // If this has an external tileset we're done + NSString *externalTilesetFilename = attributeDict[@"source"]; + if (externalTilesetFilename) + { + NSLog(@"External tilesets unsupported!"); + [parser abortParsing]; + return; + } + + int gID; + if(currentFirstGID == 0) { + gID = [attributeDict[@"firstgid"] intValue]; + } else { + gID = currentFirstGID; + currentFirstGID = 0; + } + + TMXTilesetInfo *tileset = [[TMXTilesetInfo alloc] initWithGid:gID + attributes:attributeDict]; + [self.tilesets addObject:tileset]; + } + else if([elementName isEqualToString:@"tile"]) + { + if (!storingCharacters) + { + TMXTilesetInfo* info = [self.tilesets lastObject]; + NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithCapacity:3]; + self.parentGID = info.firstGid + [attributeDict[@"id"] intValue]; + (self.tileProperties)[@(self.parentGID)] = dict; + + self.parentElement = TMXPropertyTile; + } + else + { + if (!self.gidData) + self.gidData = [NSMutableArray array]; + + // remember XML gids for the data tag in the order they come in. + [self.gidData addObject:attributeDict[@"gid"]]; + } + + } + else if([elementName isEqualToString:@"layer"]) + { + TMXLayerInfo* layer = [[TMXLayerInfo alloc] init]; + layer.name = attributeDict[@"name"]; + layer.layerGridSize = CGSizeMake([attributeDict[@"width"] intValue], [attributeDict[@"height"] intValue]); + layer.visible = ![attributeDict[@"visible"] isEqualToString:@"0"]; + layer.offset = CGPointMake([attributeDict[@"x"] intValue], [attributeDict[@"y"] intValue]); + layer.opacity = 1.0; + if( attributeDict[@"opacity"] ) + layer.opacity = [attributeDict[@"opacity"] floatValue]; + + layer.zOrderCount = self.zOrderCount; + self.zOrderCount++; + + [self.layers addObject:layer]; + + self.parentElement = TMXPropertyLayer; + + } + else if([elementName isEqualToString:@"imagelayer"]) + { + TMXImageLayer* imageLayer = [[TMXImageLayer alloc] init]; + imageLayer.name = attributeDict[@"name"]; + imageLayer.zOrderCount = self.zOrderCount; + self.zOrderCount++; + + [self.imageLayers addObject:imageLayer]; + + self.parentElement = TMXPropertyImageLayer; + } + else if([elementName isEqualToString:@"objectgroup"]) + { + TMXObjectGroup *objectGroup = [[TMXObjectGroup alloc] init]; + objectGroup.groupName = attributeDict[@"name"]; + + CGPoint positionOffset; + positionOffset.x = [attributeDict[@"x"] intValue] * self.tileSize.width; + positionOffset.y = [attributeDict[@"y"] intValue] * self.tileSize.height; + objectGroup.positionOffset = positionOffset; + + objectGroup.zOrderCount = self.zOrderCount; + self.zOrderCount++; + + [self.objectGroups addObject:objectGroup]; + + // The parent element is now "objectgroup" + self.parentElement = TMXPropertyObjectGroup; + + } + else if([elementName isEqualToString:@"image"]) + { + if (self.parentElement == TMXPropertyImageLayer) + { + TMXImageLayer* imageLayer = [self.imageLayers lastObject]; + imageLayer.imageSource = attributeDict[@"source"]; + // imageLayer.transparencyColor = attributeDict[@"trans"]; + } + else + { + TMXTilesetInfo *tileset = [self.tilesets lastObject]; + + // build full path + NSString* imageName = attributeDict[@"source"]; + NSString* path = [self.filename stringByDeletingLastPathComponent]; + if (!path) + path = self.resources; + [tileset setSourceImage:[path stringByAppendingPathComponent:imageName]]; + } + } + else if([elementName isEqualToString:@"data"]) + { + NSString *encoding = attributeDict[@"encoding"]; + NSString *compression = attributeDict[@"compression"]; + + storingCharacters = YES; + + if( [encoding isEqualToString:@"base64"] ) + { + layerAttributes |= TMXLayerAttributeBase64; + + if([compression isEqualToString:@"gzip"]) + layerAttributes |= TMXLayerAttributeGzip; + else if([compression isEqualToString:@"zlib"]) + layerAttributes |= TMXLayerAttributeZlib; + } + } + else if([elementName isEqualToString:@"object"]) + { + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + + // The value for "type" was blank or not a valid class name + // Create an instance of TMXObjectInfo to store the object and its properties + NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:10]; + + // Parse everything automatically + NSArray *array = @[@"name", @"type", @"width", @"height", @"gid"]; + for( id key in array ) { + NSObject *obj = attributeDict[key]; + if( obj ) + dict[key] = obj; + } + + // But X and Y since they need special treatment + // X + NSString *value = attributeDict[@"x"]; + if( value ) + { + int x = [value intValue] + objectGroup.positionOffset.x; + dict[@"x"] = @(x); + } + + // Y + value = attributeDict[@"y"]; + if( value ) + { + int y = [value intValue] + objectGroup.positionOffset.y; + // Correct y position. (Tiled's origin is top-left. SpriteKit's origin is bottom-left) + y = (_mapSize.height * _tileSize.height) - y - [attributeDict[@"height"] intValue]; + dict[@"y"] = @(y); + } + + // Add the object to the objectGroup + [[objectGroup objects] addObject:dict]; + + // The parent element is now "object" + self.parentElement = TMXPropertyObject; + + } + else if([elementName isEqualToString:@"property"]) + { + if ( self.parentElement == TMXPropertyNone ) + { + NSLog( @"TMX tile map: Parent element is unsupported. Cannot add property named '%@' with value '%@'", attributeDict[@"name"], attributeDict[@"value"]); + } + else if ( self.parentElement == TMXPropertyMap ) + { + // The parent element is the map + (self.properties)[attributeDict[@"name"]] = attributeDict[@"value"]; + } + else if ( self.parentElement == TMXPropertyLayer ) + { + // The parent element is the last layer + TMXLayerInfo *layer = [self.layers lastObject]; + // Add the property to the layer + [layer properties][attributeDict[@"name"]] = attributeDict[@"value"]; + } + else if ( self.parentElement == TMXPropertyImageLayer) + { + TMXImageLayer* imageLayer = [self.imageLayers lastObject]; + [imageLayer properties][attributeDict[@"name"]] = attributeDict[@"value"]; + } + else if ( self.parentElement == TMXPropertyObjectGroup ) + { + // The parent element is the last object group + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + [objectGroup properties][attributeDict[@"name"]] = attributeDict[@"value"]; + } + else if ( self.parentElement == TMXPropertyObject ) + { + // The parent element is the last object + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + NSMutableDictionary *dict = [[objectGroup objects] lastObject]; + + NSString *propertyName = attributeDict[@"name"]; + NSString *propertyValue = attributeDict[@"value"]; + + dict[propertyName] = propertyValue; + } + else if ( self.parentElement == TMXPropertyTile ) + { + NSMutableDictionary* dict = (self.tileProperties)[@(self.parentGID)]; + NSString *propertyName = attributeDict[@"name"]; + NSString *propertyValue = attributeDict[@"value"]; + dict[propertyName] = propertyValue; + } + } + else if ([elementName isEqualToString:@"polygon"]) + { + // find parent object's dict and add polygon-points to it + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + NSMutableDictionary *dict = [[objectGroup objects] lastObject]; + dict[@"polygonPoints"] = attributeDict[@"points"]; + } + else if ([elementName isEqualToString:@"polyline"]) + { + // find parent object's dict and add polyline-points to it + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + NSMutableDictionary *dict = [[objectGroup objects] lastObject]; + dict[@"polylinePoints"] = attributeDict[@"points"]; + } + else if ([elementName isEqualToString:@"ellipse"]) + { + // find parent object's dict and add ellipse to it + TMXObjectGroup *objectGroup = [self.objectGroups lastObject]; + NSMutableDictionary *dict = [[objectGroup objects] lastObject]; + [dict setObject:[NSNumber numberWithBool:YES] forKey:@"ellipse"]; + } +} + + +- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName +{ + unsigned int len = 0; + + if([elementName isEqualToString:@"data"]) + { + storingCharacters = NO; + TMXLayerInfo *layer = [self.layers lastObject]; + + if (layerAttributes & TMXLayerAttributeBase64) + { + // clean whitespace from string + currentString = [NSMutableString stringWithString:[currentString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; + + NSData* buffer = [[NSData alloc] initWithBase64EncodedString:currentString options:0]; + if( ! buffer.length ) { + NSLog(@"TiledMap: decode data error"); + [parser abortParsing]; + return; + } + + len = (unsigned int)buffer.length; + + if( layerAttributes & (TMXLayerAttributeGzip | TMXLayerAttributeZlib) ) + { + unsigned char *deflated; + CGSize s = [layer layerGridSize]; + int sizeHint = s.width * s.height * sizeof(uint32_t); + + int inflatedLen = InflateMemoryWithHint((unsigned char*)[buffer bytes], len, &deflated, sizeHint); + NSAssert( inflatedLen == sizeHint, @"CCTMXXMLParser: Hint failed!"); + + if( ! deflated ) + { + NSLog(@"TiledMap: inflate data error"); + [parser abortParsing]; + return; + } + + layer.tiles = (int*) deflated; + } + else + { + char* tileArray = malloc(buffer.length); + memmove(tileArray, buffer.bytes, buffer.length); + layer.tiles = (int*) tileArray; + } + } + else + { + // convert to binary gid data + if (self.gidData.count) + { + layer.tiles = malloc(self.gidData.count * sizeof(unsigned int)); + int x = 0; + for (NSString* gid in self.gidData) + { + layer.tiles[x] = (int)[gid longLongValue]; + x++; + } + } + } + + [self.gidData removeAllObjects]; + currentString = [NSMutableString string]; + + } + else if ([elementName isEqualToString:@"map"]) + { + // The map element has ended + self.parentElement = TMXPropertyNone; + } + else if ([elementName isEqualToString:@"layer"]) + { + // The layer element has ended + self.parentElement = TMXPropertyNone; + } + else if ([elementName isEqualToString:@"objectgroup"]) + { + // The objectgroup element has ended + self.parentElement = TMXPropertyNone; + } + else if ([elementName isEqualToString:@"object"]) + { + // The object element has ended + self.parentElement = TMXPropertyNone; + } +} + + +- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string +{ + if (storingCharacters) + [currentString appendString:string]; +} + + +-(void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError +{ + NSLog(@"Error on XML Parse: %@", [parseError localizedDescription]); +} + + +@end \ No newline at end of file diff --git a/Rect/Rect/LFCGzipUtility.h b/Rect/Rect/LFCGzipUtility.h new file mode 100755 index 0000000..673c342 --- /dev/null +++ b/Rect/Rect/LFCGzipUtility.h @@ -0,0 +1,37 @@ +/** + @file LFCGzipUtility.h + @author Clint Harris (www.clintharris.net) + + Modified (added inflatefunction) By Jeremy Stone + + Note: The code in this file has been commented so as to be compatible with + Doxygen, a tool for automatically generating HTML-based documentation from + source code. See http://www.doxygen.org for more info. + */ + +#import +#import "zlib.h" + +@interface LFCGzipUtility : NSObject +{ + +} + +/*************************************************************************** + Uses zlib to compress the given data. Note that gzip headers will be added so + that the data can be easily decompressed using a tool like WinZip, gunzip, etc. + + Note: Special thanks to Robbie Hanson of Deusty Designs for sharing sample code + showing how deflateInit2() can be used to make zlib generate a compressed file + with gzip headers: + http://deusty.blogspot.com/2007/07/gzip-compressiondecompression.html + + @param pUncompressedData memory buffer of bytes to compress + @return Compressed data as an NSData object + */ ++(NSData*) gzipData: (NSData*)pUncompressedData; + +@end + +// taken from cocos2d and slightly modified +int InflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLengthHint ); diff --git a/Rect/Rect/LFCGzipUtility.m b/Rect/Rect/LFCGzipUtility.m new file mode 100755 index 0000000..99da94c --- /dev/null +++ b/Rect/Rect/LFCGzipUtility.m @@ -0,0 +1,268 @@ +/** + @file LFCGzipUtility.m + @author Clint Harris (www.clintharris.net) + + Note: The code in this file has been commented so as to be compatible with + Doxygen, a tool for automatically generating HTML-based documentation from + source code. See http://www.doxygen.org for more info. + */ + +#import "LFCGzipUtility.h" + +@implementation LFCGzipUtility + +/******************************************************************************* + See header for documentation. + */ ++(NSData*) gzipData: (NSData*)pUncompressedData +{ + /* + Special thanks to Robbie Hanson of Deusty Designs for sharing sample code + showing how deflateInit2() can be used to make zlib generate a compressed + file with gzip headers: + http://deusty.blogspot.com/2007/07/gzip-compressiondecompression.html + */ + + if (!pUncompressedData || [pUncompressedData length] == 0) + { + NSLog(@"%s: Error: Can't compress an empty or null NSData object.", __func__); + return nil; + } + + /* Before we can begin compressing (aka "deflating") data using the zlib + functions, we must initialize zlib. Normally this is done by calling the + deflateInit() function; in this case, however, we'll use deflateInit2() so + that the compressed data will have gzip headers. This will make it easy to + decompress the data later using a tool like gunzip, WinZip, etc. + + deflateInit2() accepts many parameters, the first of which is a C struct of + type "z_stream" defined in zlib.h. The properties of this struct are used to + control how the compression algorithms work. z_stream is also used to + maintain pointers to the "input" and "output" byte buffers (next_in/out) as + well as information about how many bytes have been processed, how many are + left to process, etc. */ + z_stream zlibStreamStruct; + zlibStreamStruct.zalloc = Z_NULL; // Set zalloc, zfree, and opaque to Z_NULL so + zlibStreamStruct.zfree = Z_NULL; // that when we call deflateInit2 they will be + zlibStreamStruct.opaque = Z_NULL; // updated to use default allocation functions. + zlibStreamStruct.total_out = 0; // Total number of output bytes produced so far + zlibStreamStruct.next_in = (Bytef*)[pUncompressedData bytes]; // Pointer to input bytes + zlibStreamStruct.avail_in = (unsigned int)[pUncompressedData length]; // Number of input bytes left to process + + /* Initialize the zlib deflation (i.e. compression) internals with deflateInit2(). + The parameters are as follows: + + z_streamp strm - Pointer to a zstream struct + int level - Compression level. Must be Z_DEFAULT_COMPRESSION, or between + 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives + no compression. + int method - Compression method. Only method supported is "Z_DEFLATED". + int windowBits - Base two logarithm of the maximum window size (the size of + the history buffer). It should be in the range 8..15. Add + 16 to windowBits to write a simple gzip header and trailer + around the compressed data instead of a zlib wrapper. The + gzip header will have no file name, no extra data, no comment, + no modification time (set to zero), no header crc, and the + operating system will be set to 255 (unknown). + int memLevel - Amount of memory allocated for internal compression state. + 1 uses minimum memory but is slow and reduces compression + ratio; 9 uses maximum memory for optimal speed. Default value + is 8. + int strategy - Used to tune the compression algorithm. Use the value + Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data + produced by a filter (or predictor), or Z_HUFFMAN_ONLY to + force Huffman encoding only (no string match) */ + int initError = deflateInit2(&zlibStreamStruct, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (15+16), 8, Z_DEFAULT_STRATEGY); + if (initError != Z_OK) + { + NSString *errorMsg = nil; + switch (initError) + { + case Z_STREAM_ERROR: + errorMsg = @"Invalid parameter passed in to function."; + break; + case Z_MEM_ERROR: + errorMsg = @"Insufficient memory."; + break; + case Z_VERSION_ERROR: + errorMsg = @"The version of zlib.h and the version of the library linked do not match."; + break; + default: + errorMsg = @"Unknown error code."; + break; + } + NSLog(@"%s: deflateInit2() Error: \"%@\" Message: \"%s\"", __func__, errorMsg, zlibStreamStruct.msg); + // [errorMsg release]; + return nil; + } + + // Create output memory buffer for compressed data. The zlib documentation states that + // destination buffer size must be at least 0.1% larger than avail_in plus 12 bytes. + NSMutableData *compressedData = [NSMutableData dataWithLength:[pUncompressedData length] * 1.01 + 12]; + + int deflateStatus; + do + { + // Store location where next byte should be put in next_out + zlibStreamStruct.next_out = [compressedData mutableBytes] + zlibStreamStruct.total_out; + + // Calculate the amount of remaining free space in the output buffer + // by subtracting the number of bytes that have been written so far + // from the buffer's total capacity + zlibStreamStruct.avail_out = (unsigned int)([compressedData length] - zlibStreamStruct.total_out); + + /* deflate() compresses as much data as possible, and stops/returns when + the input buffer becomes empty or the output buffer becomes full. If + deflate() returns Z_OK, it means that there are more bytes left to + compress in the input buffer but the output buffer is full; the output + buffer should be expanded and deflate should be called again (i.e., the + loop should continue to rune). If deflate() returns Z_STREAM_END, the + end of the input stream was reached (i.e.g, all of the data has been + compressed) and the loop should stop. */ + deflateStatus = deflate(&zlibStreamStruct, Z_FINISH); + + } while ( deflateStatus == Z_OK ); + + // Check for zlib error and convert code to usable error message if appropriate + if (deflateStatus != Z_STREAM_END) + { + NSString *errorMsg = nil; + switch (deflateStatus) + { + case Z_ERRNO: + errorMsg = @"Error occured while reading file."; + break; + case Z_STREAM_ERROR: + errorMsg = @"The stream state was inconsistent (e.g., next_in or next_out was NULL)."; + break; + case Z_DATA_ERROR: + errorMsg = @"The deflate data was invalid or incomplete."; + break; + case Z_MEM_ERROR: + errorMsg = @"Memory could not be allocated for processing."; + break; + case Z_BUF_ERROR: + errorMsg = @"Ran out of output buffer for writing compressed bytes."; + break; + case Z_VERSION_ERROR: + errorMsg = @"The version of zlib.h and the version of the library linked do not match."; + break; + default: + errorMsg = @"Unknown error code."; + break; + } + NSLog(@"%s: zlib error while attempting compression: \"%@\" Message: \"%s\"", __func__, errorMsg, zlibStreamStruct.msg); + // [errorMsg release]; + + // Free data structures that were dynamically created for the stream. + deflateEnd(&zlibStreamStruct); + + return nil; + } + // Free data structures that were dynamically created for the stream. + deflateEnd(&zlibStreamStruct); + [compressedData setLength: zlibStreamStruct.total_out]; + NSLog(@"%s: Compressed file from %d KB to %d KB", __func__, (int)[pUncompressedData length]/1024, (int)[compressedData length]/1024); + + return compressedData; +} + +@end + + + +// from cocos2d, un-zipping code: + +#define BUFFER_INC_FACTOR (2) + +static int inflateMemoryWithHintX(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int *outLength, unsigned int outlengthHint ) +{ + /* ret value */ + int err = Z_OK; + + int bufferSize = outlengthHint; + *out = (unsigned char*) malloc(bufferSize); + + z_stream d_stream; /* decompression stream */ + d_stream.zalloc = (alloc_func)0; + d_stream.zfree = (free_func)0; + d_stream.opaque = (voidpf)0; + + d_stream.next_in = in; + d_stream.avail_in = inLength; + d_stream.next_out = *out; + d_stream.avail_out = bufferSize; + + /* window size to hold 256k */ + if( (err = inflateInit2(&d_stream, 15 + 32)) != Z_OK ) + return err; + + for (;;) { + err = inflate(&d_stream, Z_NO_FLUSH); + + if (err == Z_STREAM_END) + break; + + switch (err) { + case Z_NEED_DICT: + err = Z_DATA_ERROR; + case Z_DATA_ERROR: + case Z_MEM_ERROR: + inflateEnd(&d_stream); + return err; + } + + // not enough memory ? + if (err != Z_STREAM_END) { + + unsigned char *tmp = realloc(*out, bufferSize * BUFFER_INC_FACTOR); + + /* not enough memory, ouch */ + if (! tmp ) { + NSLog(@"ZipUtils: realloc failed"); + inflateEnd(&d_stream); + return Z_MEM_ERROR; + } + /* only assign to *out if tmp is valid. it's not guaranteed that realloc will reuse the memory */ + *out = tmp; + + d_stream.next_out = *out + bufferSize; + d_stream.avail_out = bufferSize; + bufferSize *= BUFFER_INC_FACTOR; + } + } + + + *outLength = bufferSize - d_stream.avail_out; + err = inflateEnd(&d_stream); + return err; +} + +int InflateMemoryWithHint(unsigned char *in, unsigned int inLength, unsigned char **out, unsigned int outLengthHint ) +{ + unsigned int outLength = 0; + int err = inflateMemoryWithHintX((unsigned char*)in, inLength, out, &outLength, outLengthHint ); + + if (err != Z_OK || *out == NULL) { + if (err == Z_MEM_ERROR) + NSLog(@"ZipUtils: Out of memory while decompressing map data!"); + + else if (err == Z_VERSION_ERROR) + NSLog(@"ZipUtils: Incompatible zlib version!"); + + else if (err == Z_DATA_ERROR) + NSLog(@"ZipUtils: Incorrect zlib compressed data!"); + + else + NSLog(@"ZipUtils: Unknown error while decompressing map data!"); + + free(*out); + *out = NULL; + outLength = 0; + } + + return outLength; +} + + + diff --git a/Rect/Rect/Rect-Bridging-Header.h b/Rect/Rect/Rect-Bridging-Header.h new file mode 100644 index 0000000..c029463 --- /dev/null +++ b/Rect/Rect/Rect-Bridging-Header.h @@ -0,0 +1,7 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + + +#import "JSTileMap.h" +#import "LFCGzipUtility.h" \ No newline at end of file diff --git a/Rect/Rect/gameEntities.swift b/Rect/Rect/gameEntities.swift new file mode 100644 index 0000000..33588e7 --- /dev/null +++ b/Rect/Rect/gameEntities.swift @@ -0,0 +1,252 @@ +// +// Player.swift +// Rect +// +// Created by Peter Zhu on 15/10/31. +// Copyright © 2015年 Peter Zhu. All rights reserved. +// + +import UIKit +import SpriteKit + +class Player: SKSpriteNode{ + var groundCount = 0 + var bodySize = 1 // 1 is largest, 4 smallest + + init() { + super.init(texture: SKTexture(imageNamed: "player1"), color: UIColor(red: 0, green: 0, blue: 0, alpha: 0), size: CGSizeMake(20, 32)) + self.name = "player" + configPhysicsBody() + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func shrink() -> Bool { + if bodySize < 4 { + bodySize++ + self.texture = SKTexture(imageNamed: ("player" + String(bodySize))) + self.size = (self.texture?.size())! + configPhysicsBody() + return true + } else { + return false + } + } + + func enlarge() -> Bool { + if bodySize > 1 { + bodySize-- + self.texture = SKTexture(imageNamed: ("player" + String(bodySize))) + self.size = (self.texture?.size())! + configPhysicsBody() + return true + } else { + return false + } + } + + func refill() { + bodySize = 1 + self.texture = SKTexture(imageNamed: "player" + String(bodySize)) + self.size = (self.texture?.size())! + configPhysicsBody() + } + + func configPhysicsBody() { + self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size) + self.physicsBody?.affectedByGravity = true + self.physicsBody?.allowsRotation = false + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + //self.physicsBody?.mass = CGFloat(bodySize) + //print(self.physicsBody?.area) + self.physicsBody?.dynamic = true + self.physicsBody?.categoryBitMask = BodyType.player.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + } +} + +class bodyPart: SKSpriteNode { + + var collidedWithGround = false + var usedOnEnemy = false + + init() { + super.init(texture: SKTexture(imageNamed: "bodyPart"), color: UIColor(red: 0, green: 0, blue: 255, alpha: 0), size: CGSizeMake(16, 7)) + + self.name = "bodyPart" + self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size) + self.physicsBody?.affectedByGravity = false + self.physicsBody?.allowsRotation = false + self.physicsBody?.dynamic = true + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.bodyPart.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class lift: SKSpriteNode { + + var matchButtonNum = 0 + var finalPosition = 0 + var direction = "up" + var timerForCheckingEnemy = NSTimer() + + init(positionPt: CGPoint, size: CGSize) { + super.init(texture: nil, color: UIColor(red: 0, green: 0, blue: 0, alpha: 1), size: size) + + self.color = UIColor.blackColor() + self.position = positionPt + self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size) + self.physicsBody?.affectedByGravity = false + self.physicsBody!.dynamic = false + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.ground.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + } + + func checkConditioningLift() { + if (matchButtonNum == -1) { + timerForCheckingEnemy = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "checkEnemyClear", userInfo: nil, repeats: true) + } + } + + func checkEnemyClear() { + print("timer fire") + if (self.parent?.childNodeWithName("enemy") == nil) { + self.moveLift() + timerForCheckingEnemy.invalidate() + } + } + + func moveLift() { + if (direction == "up") || (direction == "down") { + //nodeY + nodeHeight / 2 + self.runAction(SKAction.moveToY((self.parent?.calculateAccumulatedFrame().height)! - (CGFloat(self.finalPosition) + self.size.height - self.size.height / 2), duration: 1)) + } else if (direction == "left") || (direction == "right") { + self.runAction(SKAction.moveToX(CGFloat(self.finalPosition) + self.size.width / 2, duration: 1)) + } + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +class button: SKSpriteNode { + + var matchLiftNum = 0 + + init(positionPt: CGPoint, size: CGSize) { + super.init(texture: nil, color: UIColor(red: 255, green: 255, blue: 255, alpha: 0), size: size) + + self.position = positionPt + self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size) + self.physicsBody?.affectedByGravity = false + self.physicsBody!.dynamic = false + self.physicsBody?.pinned = true + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.button.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +class enemy: SKSpriteNode { + + var enemySize = 1 + + init(positionPt: CGPoint, range: CGSize) { + super.init(texture: SKTexture(imageNamed: "enemy1"), color: UIColor(red: 255, green: 255, blue: 255, alpha: 0), size: CGSizeMake(32, 32)) + + self.name = "enemy" + self.position = positionPt + self.physicsBody = SKPhysicsBody(circleOfRadius: 16) + self.physicsBody?.affectedByGravity = true + self.physicsBody!.dynamic = true + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.enemy.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + + self.runAction(SKAction.repeatActionForever(SKAction.sequence([ + SKAction.moveToX(range.width + self.position.x, duration: 2), + SKAction.moveToX(self.position.x, duration: 2) + ]))) + } + + func hitted() { + if enemySize < 2 { + enemySize++ + self.texture = SKTexture(imageNamed: ("enemy" + String(enemySize))) + self.size = (self.texture?.size())! + self.name = "enemy" + + self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width / 2) + self.physicsBody?.affectedByGravity = true + self.physicsBody!.dynamic = true + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.enemy.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + } else { + self.removeFromParent() + } + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +class refillBody: SKSpriteNode { + init(positionPt: CGPoint, size: CGSize) { + super.init(texture: SKTexture(imageNamed: "refillBody"), color: UIColor(red: 58, green: 122, blue: 79, alpha: 1), size: size) + + //self.colorBlendFactor = 1 + self.color = UIColor(red: 58, green: 122, blue: 79, alpha: 1) + self.name = "refillBody" + self.position = positionPt + self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size) + self.physicsBody?.affectedByGravity = false + self.physicsBody!.dynamic = false + self.physicsBody?.pinned = true + self.physicsBody?.usesPreciseCollisionDetection = true + self.physicsBody?.friction = 0 + self.physicsBody?.restitution = 0 + self.physicsBody?.categoryBitMask = BodyType.refillBody.rawValue + self.physicsBody?.contactTestBitMask = BodyType.all.rawValue + self.physicsBody?.collisionBitMask = BodyType.all.rawValue + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} \ No newline at end of file diff --git a/Rect/Rect/gate.png b/Rect/Rect/gate.png new file mode 100644 index 0000000000000000000000000000000000000000..03adb2e10aca9dc96f51b7ba9cf6eae283556dad GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^3P5~-14uA9gxakFQk(@Ik;M!Q+`=Ht$S`Y;1W=H@ z#M9T6{XV;#Ag__{ak(6zkZfj1M2T~LZfEaj?aro^)Lq;I)(1Nf2xxD-ffJ`9R$0KoofiZGMN;-(=>FVdQ&MBb@00+w^ ATmS$7 literal 0 HcmV?d00001 diff --git a/Rect/Rect/level1.tmx b/Rect/Rect/level1.tmx new file mode 100644 index 0000000..5f431ce --- /dev/null +++ b/Rect/Rect/level1.tmx @@ -0,0 +1,22 @@ + + + + + + + + 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 + + + + + + + + + + + + + + diff --git a/Rect/Rect/level1_sprites.png b/Rect/Rect/level1_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..070fe26cd5c7a05b8099a98be635775ce07bef0c GIT binary patch literal 25715 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 literal 0 HcmV?d00001 diff --git a/Rect/Rect/level2.tmx b/Rect/Rect/level2.tmx new file mode 100644 index 0000000..481db6e --- /dev/null +++ b/Rect/Rect/level2.tmx @@ -0,0 +1,51 @@ + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/level2_sprites.png b/Rect/Rect/level2_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..bd83e94c3b592efb6ea89c52095c5d50e4a1a694 GIT binary patch literal 27288 zcmeIb2UJtpyEcA+0aQSoQL!LJ2SrDUii(I3Y@>*RV*#lV1yNckQbURbu%jSG6o{yZ ziZl^IOM;+ALq+dc@I2LAaAG))2g6{J|W4T3zES#H~WAoSxv^ZAg2o#e?j zfuVS>UU)`cy`y)AgBPK`-obtMw4>UK-%gLi?|lWyx+ZUtUA%^V_PtETR;HurWXpia z$bLapViJT(_Q;?=cH5|H+RYgd4Y5tSsbUs-|7jh|Snwx`Dv^aCysO&O+qDr3Kp&vP z_czQUNYAW+-&*{#=$sXNwT|>tZP}SGmP+qdhCiJpqxebsp(WgZ=p0_oU;3er9Q<}$ z>8XOLXUo8Em$X_qNiVK|-$B3nX&Xo{c7xyHr~Pd9r;&jp{B$X4jQk9spKt*?!cTDg zpO=9`b!Ot1o_OZ|>w%i%2$?08HOD_n)=QJ13}pEfS^<)&j-@pFLf~H&viCvmy{a>n zH5DK|$SM}TPNEB5KJaaj9HfR{S^?p88YOYy^}p#^X3ty_NZQX_3g(C>VsK}vIIeR+ zFdKWkA^-PF6(f0c#@m@JQ9rVc*t`^p>mE~dwL|X+^=Q0sns6+!80| zRTnHPwm-Iq7ZT{@*bvxvlFza!L9B~ozYB7Xjj2O5y40{oI!P=wQBlZ^4CNhF&eMpv z@t|-XQZ$~`%j#@?aL_kROjg@u9lm*u1*2J}-^gWfki+v+~ zXv`T{cEj|8ZK;jpDOjt(9zG}6uVa8We9y8rDhSd}Cnmjg*U>@`j~ll=I$yU{6KaUy zgcfjL&PxeyuOBYseB>OZ?@rKs%K9fu6*RIF#&T34VLwYU(<)?WK@C*;Q50R)c-y&my2OcSqo6EC_bHR? zl&%68vWT4`b%!Afp3O&H-E3ldazX{&s%1@UbwZ%)JIa}R#~^K9L(bT|vE&lN_0Vwf z%RRm6(>6J-tM#e*#)s!ad)=2B@+4fG@b@tyuMR0uOV${^G=5VNIwlFTs!EC8rvO#8 z^vp1-M+KmteHRc1!YV3-x>?Ywd;u<3Sg5a&l;X;~@|O{G)tg$ZO4%8$^=1JS8s@u| zKOk{JC1`)&d-uBWUXL~~T?yj1_Uh}?Q1YuB6rfm%CL-OpI$d*)I&`S+DPmxQf6ZX^ zcipb8wn~14>zzpA)Im@A30ZXHqRi%E#A5~M0tS^SgP*XnD|?ow-ZWF+Viz2vu~L$Z zmw{Bs9i83urh)|X*_hpbBF1pXs+5SB@pu{h5;>@1J-@C=fwcAejy7`QPUMy~E2@^= z!YCT4LzBYvEEQ z4BkJ^t1Lt!Ok*Y|{&M}B32ijS20QbgaxR7pEUcj?SQJt)4{ZE#jq zbx~D^4(6>KWGUf^1*?L$9IRp&N?sD$igBWJ5-ynA+K*~l|NR8S+XbwVlw~ke!r$>@ zDdLLh2VH6B9Ix>#`806%%LRe8qe&&mV#(fylN~o@pzmk5oJl|SA8@7UIUf7Fq2u z$Fp3!h^u2An5TPU2TfgHE(E#cI}nS?BJRE&Z*FCFF>dhQh&~kSLZoh3WR5mxR|qQ7 z8IepPPV<%Zll9PHnSH?HcTRB@NEuo#fG2morumJTGV`H_5s-GTMR&q!T{buPWE7ap zIT4X(30~^T&>{TwZ(Qq-mIBM#vVw|rZD69>2AA$>s~I#+Da_LcgRbCWYDJg|qh_VK z?NDiYkW%?PRzw_k%qB?EvZE?l)sEewg!6RJcoi&B2{-2goXkGiojgoHNfy=*nD*p* ze%Hx|e(d!bGjNij;$enF#Nu?|247|LqCa?;KzlFDSA=5MYni!lypBZ_tahRV8aow- zAVl1W*@JD*8OUf+l1G`kT+4;c-`k9H&aNi|a{I2Wow4#eL1Nebj}o_1X^h(@anqIW zz1Rfp3t7NTiHSNDVv@9~2G)aaz}9n<*nk&PN(jEPgnx%g%mSl(auWy9*RSsTl{+777n-nX0zPG-*JB5_?uDg zA6(SB50wVpSVA4PqHPB({B*{U)szMPFqGJzq|FSY0aUKW=OiDBhn24Bs znaD38B7((7j#DF2dvYsr=3Xv*Gq`vJP(ajVKX%83df2xSwjwa&;Vqj_pCWHK>PscK;pQkn zElwZi*AF2MjMBsIp^KN6&wfeCtYN}Yo8Xl71eX;cwzYSfD4!24?+!+RW?^JdhUUXf zmqHdDa!|jjrX_L+dtVW{;OtvS-)G|@ixEC48h%qE?;WhE;;mITdzrp7$RXA`>^M^wzT@ErbvJ2bQaX>fyoK(&CZn>E9)?@iuj zt>V!B;3^__WL*7T0CadaznCB%dsC>d+!=lYO@6}@w`oH2LmOe+4*jT+_0ZJ=q(T$G z4;lsRc=Uvd0J6xe)M$Vy@r`>KCP)Pg;Erd^DI>!O9NwG;Bvmf1$v zGBUa1;?#Ra2Qust19Fg@A<4D>3dc=Qe^hr%f20*mBRLDI3SAV;Oj3vuLyYl@;Rtb8 znY*h8^U-Fcr0QwB>!5h+ToiLxKJDHrD0?u}akBZ-gQpaaR+ifa7nwV;{RjKFs$8hF zv@(-}wW}D{+ViYSVQiaPU{e{c8uyn0nS6bOvhfqZG@d! zZjV(qS6N{Z)$b9jJF|&w+|yZ26AlM~lE$ESqggXq191BBLsa?F+ZPv>pQq;nrvUOUFfWUs*FlZ(E$lbsg3?(hW8Q@O`Q0n>b{oGfVxc(U#i@gPIMezzkg8nG@zlY?pZU__RC z(9`IChMY0n+7k{NCPx~Fa~I^r3_=#81H%)Qb~UrB<4fofD{yhUGQ0O?+C5?+oa7*$ zL2-@1xsZ`t^8-kXX_NIEeZpHAGW3A`R|~hj!YT?`5>(u3S=*7yjq_-U0U@%KaJxjA z-#<2wD@K2Mlh-S#=L!WN{lK-|5Eqq&yq?@-^E}_ z9}vE*4(<&IziZ4Bma-qYp_RG7s&B_YLQSJ?9p(D=_Ux7jlH6BTQr_+oFXJgdQ32$q zljNv1(B58mLLfE0Bm9{EKL=1MJABS;Oys)uRq$09kwpm0SP|;8OJqX>FGz#hFiZ$= zU+cZn^C;%#?_~*1(QFom*Sz$5f*Py$_tNJuR4SV-g&p{L0@mlud|2j?G#z}?_!JxY zd!70J@mU2s)n{s`6x#%!C4*WpwV0%~PEC}I&~v_K+v8PaF47z56BnYbldJ`z*iMnT z1g7uZX#VJJRIMawr0o?P$D#S2$1E9=$lg5H@fNvWc6K`X9yi2NEC6+)>+WQ>*T=e8 z@el@$w%p%Rxd2gY@C;cLI~M50)tV7!oAGX-D5=mtx0T(*9ebG{NEwO{Yde)-be#%< zOcU8fb3yI!4vqOkWaf(|u< zL{%+~XDU|BnJ`V6kmy)WP*tY zGOG?-CM?4KwM-6L$sJG{Tko@yACwh@bm`7hZ)<#H#K%P7xIqg-%Zg)T?Y6*5#sfx1 z4anKRT5PM#@`_5kXc6~jA$I?9;ltFsKQsxU5j9Uw#qmmhm)Yv#uk57p!qepU#Kh&+ zE;FzXUp-_@*+POc!?TkCwk?Qu|}1{-iN9;lO-U$d_% zU)^M9mj2|2&Dk~37=gr+JuZCQXI9dSE+zz?HVF&n1BoPo3@8bb=)@)w*1B(mhCjUM zE1`D#xsZ;?L6PvN)B(Ofb1vGngi8CMYQ8&q=bInfRld_Sr-`fMKe~?Bau3s*`}|_k z9L=HG6zYjXzvXM7DmkN`^&%6!mK?7aS&l3^p*RWckjp;I#_8h9eP}jkr>|sOdd(gI zUfuTMWo0?V*&W2tfW$I(0H+R5UMW=i5D94-wRW}&C_>4FW;9wt9x81croD=H7d2f; zXK22GELPAH4N2|u3?f0Tx9$@oqoG^Lr#so9I7xE7Y~>Og;&!^r2J@PeHB~81z;VW ztqc{A>b;s7DeUyQ%HyN41iF@KN?(c-$%$wfWJ(xS7J?#Ixt~3PFzSxPq#-mXe&A?- z*2((OD=8?m;3XL3WR#C-Ol!tx~z`yoDPr* za~vhV_)8t|wOG765W&b8uKdVrE9^_yj{HdWSk*ciX(cib=^P^8Maf-FydysGE-`uy zG~9LfmEWDQ-46(ay76~G%~dS}GuoFiI)r?W2fGbJ8v**QFr*{BA=l;14TVXGMFH!& zub!XMBfcp#^&r);^8+275{AZxCIMTY=1@LqA4HZ|Cx?mC9+a`wB@Uvy)lDDQe*ywo z`rKzoN^J55+y@0{)S09@p`o0oPU;dS^YxkK7t92Iv{b#!l$@RGRYPU_`LyQ=R8tA7 zuMgf5UV8CzhQeI9==m-nG@+fq#(*uOC1(DeANP_93%M*ZYk4Gt_l#hkW$BUCo*EP%KMD2n2NFkrcqjz8CSW%-S|~MU$rY z2x13qY%-?{6ib=}d1&rMiV7@s)Dj-j!y)akSHk4|X|;>bHtU*hvD)FmX8{Sx#GBq~ z7z9{b|Bbak%`3`?Wm_iKQF8|m@G*wF4aK8kfJ!zY=D4fLJK4SaLMn16ks7N`uDZ@@ z2W&bR$&QmMVnA%^ZGF9$)Q_`C`c*6*Ap6 z_g2QsAMW+n58HkU7UlW7p#10`j5w9{On{77aLbYDt@ML5_=Ba6*nd-10o)cG|Gpsd zt;PT2XKl-cgaBGy85LKmYu+!I2quNnGO-vcGNmkuu$d}I^!v^eW9xGIo; z$HY%4NJ9TpoP&|>A`>+BHKI6;aEy^g)Mpb3nvp6ATQ|&>c48((SeS-Wvn-)_ONz<9hkxCc;ARxms@5U5^0t z1uVTBevL3)!81wAbW$?hO{`_N16Q=?gk(D8ns-|YE|S=1L5=-U!0zzsBdtx-<>S_o zT&o!fv%+N>4jWE(IZgUsiOY#ko>s*Tncv4MzRoPKM#cF6t|PJ3nFxtFDBs^jg?zg1=t+w5)^f8>_QW{yRgBdHEgPL z_S)RRNtnPeQxb`BPFWQ8T*Qaj&*daD6{``6fUSdS(4^2JrN=y2TRXbfC#BZJ>4W z!r~9)4$;FD=e+4PR3YzFB1aGLFEiDrp;A>I!r4*`j0yRGFoAkXXBFR`&xJFO0yFV zyJ&_^GY|>uSH=+!R)OMNYE&Jt_(SMK=Acn*Do93)#0>>c?=pRE5cc=&-Awt>81EcM z5Z4(dlHbq8uD`cFP6p31bWTn_q|s-|?|$qNwbi34UWn~Y6%TZTyz^w5A$)>204?tr z!mv^Xf9lKVvH`glJ`KjQsYoEFgY<6yesFz%}n6}2B5-G30t$=z>J7z z&oktjKC%ZQXV*Pi`SrSfcCIF>ur8m?Hh=<6!;7ZaV4M17YRt8xg zd~PI`Xqcw_5jQAt;7;@lyg9q93+C}n=LpbQO}Xq8Wk|=cl6s8we6toSbn?)9)?x;G zwG)_#V1s-Ot3np6U41FYfwuu>do|qiNYDn%V7Pr2l->I}hjX6?V=TSF#`?iA|5z+c zjo^9@C-L>)e+VqA90NXKIRRE3)|mWttJAWsBg7iZNX8)xfX2Y!ihx!TeFVqu5Gavv zJ@*5OfnlWt=#jma<4A^KpJ)=Sq6A4Ytm8#!Wk%=qqNIyHv?B~^BDMG*k=J2X5k0B~ zRh)lMtbe2S=Y48D!0E<6M8+K8yBPBT-beWAru<;*U=5tVGks% zPoKphhHm+y>y1~2N^Ggi*OKz%MS7x+gb$I}A*I@G<&B$N zdg<2IoM0#N4X#fAPE|;U{wE4Z&)m7H;ru%S)L+H^URCTztfyvAmJjb6oAM;|Ez$|c zF6NRjdvTEBOd!Qn=G3pk+B&nTaUPA5M<;^psWd-l>!l>_uAz`lVe>`No^QOXbh!ou z>e$~w5QwjW7>u1gjv;0s-&pcN0Uu>bL@b{Syd9he>YMuOX3*7s4@vOz8o%N8T-T=i zCq(9A)_#w(RwTAt_`Y%8tws}8fc655o!B&>0i3ZG>zdh_895aO8kg9TvRSk^LJk#{ zG1)6PArCohvqY54)e=1%%OgiOs~#qQES4`2kL*dzwxYyczMoBrR{9oBtCs)c& z3Dx0k``|j2yR-)8#PAw_>ibF)OX9O&NlFk7WzN0>R+`;mPtas%tdXB~KIJISTHGSHqCp`(Z3m8oyJ(GRzjD3wZ=5P-LT zNq2z6ez(#o-LdlRPL$8LeM71$NsyOz^?@DYcc!fw(sPLf2mAz z(2W%EG#DwqUzPj%_-~XbH)zYgZ2}yR69KOax9x~~kh)aj+{cA0=!KseRp5fei~@F}-4zQmt3{{t7kwod+EZ2mt1W*!^=~{JG+_2XfV0_iOAYH_L%>D;wkHaHce!3f)r@&Vzcz()@Qpf3+2E!F)m#>iSaDupNEOvf zH%0yJ**dzLm&!pdGJl_kA56{HQ~#J6SPK59H5Wj`l2cz5Q}FPAYY6}H6(Ed)Ik-P< zLK6Oe<0?PsPrz>n04ilGLRfp|EO_@sC{X+613&nOF@Vi9X)<_1_xk&~5*pa%Hwg=#CMZTh$uCw9+9-2GU=_Pb46aAPr}5Jc;p5z7s;AFl zB4ay7Y+^+?sgG_el}*%9!dv4T#IZUtI8cmBl__mmwN@SY=`X&0`mfoLZiVcf+1mM3 zor-p%jzA)H|8scx4VG$95|kraYN;s!K4T0wYVnI+DR9G{U(O90T8>WYR*0$6I&jHh z8S7Yi3tbCuoMkKx0rX61l+Kd*+4Y}R|FOd?-Wxl+I-mO4k3KIVFFE}4^iP|>!16!E zAv(mmQdrgc46BhAAfI~UDnvF?oJ4&7YLC(>kW2w$3y4z8#!0ts0L+$Mx&X=+E#)Gn zKv=q+0D$l>FuxI44dJE|g6rpmFb!-qES(^Lbx>*kD2Go&zh=)`4$L`dSSXo-Y#Hqm=RJnCBZOJT?7h{bx98=y{J~{XhkKaT%~;vsNf=xwm@X!wchce(5~?^6|@81Cbe)wKty``-HzwUxpgPUaQbN z7Shd3XpCgA40$^a9Zpz4)i_4!POyid-&(hUkl9J1>OqtIxDFPGRU9}CLE19bAW-oq z1(mY+EQF<41Okm94}bDM?iStFrAm+*1aN0@MZ2LAJVu?;^A?uYrB-U-TNFD-C%4AZ zkZSPxo%q?OViWNMJ+PVbYR5>lP7E*{IIcpvux}XJgCa}2qFwbHD+b8AJOz7REn;a} z0P>!~*IURYPP^XmONpCIsVrV61_9c3hmj5c%Z6W$mB+`4`MA*v-L?de zk+_#Y`|jg8Q>qU+M_NS7z%1G)4vW6H?or$pR~bHBD3;&@gsiRp!f zCW}l0bQWzqxx7R$RNQvObZA;yV!*Dp$^#YSp3K(gXT}hLC5DvAB@*@^iKV$vUA^4i zBk3TYjG~Hy+nD@U>ZrHrFIlYol&#TGb}nJ516dhPg=^j>n-w?Hz#EH}oZ7KdJsG4Hhq_rs_xcZZlb&><0ci%Fui2P#jJI4DoB6cB#_YS4z0QK}eb%eug%GLYm+Ca$%6Kt_h z32G#iw+l8p=%Z9E74QI-EF*1F|b2=*t(P3jzMRe9= z)R1x{tbOjWgC$UPox5Rpi93KaX`k?AU;9)D%~HJPubnV=5mr3lfmlht z%)7o~e_2_ilBq_xZ9v#3{8%RenOPxg!R(K(bCtPsFNQ`EYprqHS5kS zkVwEa6j)D-r^s!ttZaGDEv7%7e}lmf4ePkJqfDRF6tG1Pnj^wEJ5SuDIUWPRC(Rqn z-+rFIQcIkONhva2xuM#d*DvCaS0a#$*3j%ixPwg6aCi7*TeKD83X5cpMR5|0Jk&HJ zY{8Z_O$X?l9QTHm@(4FE_~VHnBvde%&n&yU{o-TuKQjxvZdErl92%3yJ1jEP$C(*i zd?6oG;C3y^O$l;#4wi!E6!MA|{9-AEhn=H*+NtsWENV+eTXzhWb5H0q(Os3q%y2(# zhMqWU+!FeG1n2#ZwlO+_9(~t`Y8O%e?zsoB%Xqb{MT9^iU{k4_v4iQh@h-gNI)9nN z+@a>SlCi3Ee&{(lz9;qaR`L}>J{8;OPKZ3Cs2T;1I8T{7>6N~4DwxVA4-sdyEv2Aj z=_0X=Th_U??}>Ujee$u0B^nCJaA|XSXJL#@mRC|c3%t|LY|c+lL`ejRb-9)Y6!H)+CsJVYt0z+sS=2RL|Hx00;2&aIGrMh*p79NCVINwYq zt-Uyf%|HqRz#3aD_SY8FSQ+Lmv{2J1dquxi7aF>Vx~`PdTU%^4sTTqoJp`R&ZyW|e zmWSRhYAcT}7OsctltbDbCG-TNv}LqyB_(i>RLWX_VXw?ASc20%pHDP3eLfG`STrC_ zuTv?GZ!|3yI3@_ax8pHeTdw`Sql^x(Fy=eU;-5<@(=dePue_l2zExRIChR*E;p zgI(fpMPL>mqr40D)ZdHxxX1doxf%LE?dvK$d;(vbF2hMFJO$&huh) zo$1Y|>WafXvX&XHS(MQgNFJ*)or_D}m1$?&DQmG*D+VP&9C>jr;#b$VH&>^|AaSB` z*V+erf*hfToh!@L0n)1&H|^!~0J3isiJV2@*VZ6rlvCm4OVJbrRQl5U&vhiH?F zc=6V#>sU=z!r_n4PUsGRxS*W|&>FS*j6xniRCq%nu)9iM;L$}VYTeLxw9SQWu+qT( zx?n=d-cS#EQTZDy@@`F5Wd6V5mnGtnxhxeG72UVs(Mlp!^GR)|@ZQveD&{b5!qym+ z(5`4W^1~wJLxn9vG@LnBIGGJl+{F+74@6PQo_vHy0AYncSN zHBd0<-fk_N&|kc3;)bYI5z$lc_bi=0SMmOiD~nc)x1iabSzBTVk2<>t`o<0bDBEZN zy&y>tp~HuJ2PH@46lW@%1`iw`|AVcH5Uv6tm&O3lpZ=EQ+kDG#iFf1ErNA*e5y@-Z zcctNid#Y1-q=V;h%P7TV5BA(1MTETHKCkZNO&1Q}16fF{I=eAfSI?!Spl*;jJ}PVB z-T5Y7Lrkgqah8fm&7@B8CATSlbsZ4g|3rQT)72)470fjN?UK@4u&6LahXpukq6Fuq z^x0CuLQ1y-B!*J@3(iYRjen0E0t`1^yY_6P(mdevmlhb6Jv&kBfblMmQfa%s-+F~e z2xwQ8#58ocb@;6j{W|~CMZ-}^3sx|gl9RJKF{s{tP`o>@Ikf$9Sdu6?Q=EC1;12BD z7H{XWLg2O1E>k(zgYL^6xoAk)uxYaOjBDi$eb=$BcRU=)hj~LX*>xM`8-xx9n-c+r z%_ zbn>P-CVY=C^M)C}=U!@M?S~I@Ud3o3SfEr{2qikq)y=+czI%#Z!#GhC)*cs2_s z>R)FTRaE3-Dv;!(SdcmH{G1nm5d-C{! zO4o>pV$od&NDHD2tP8z=l*tmWPXt6U(wDge)9=Wd5rYtizKcnz@?}zla+x@Un)}ln&ztyROPg{D4fW#Kk zGAjYMtMPqwA9&`@k*6V?#{$nQ(vBIhe~;M|i|pQIAV7#mVutBBaqU;L?f7aovX~`k z;g$i$IjUuoxM8)#Wq7QcPRA`mOpFmFn<56ikp1KG_zjnQP3~X84Lz&1?$49QGkuHo z^&Fl(?4t+1TgT{N#ZgQNlr=YPDB;vt1(AI! zMa|oc#y)Jvd>+V^X~=hOGKiI^o787q%YObhihL_uUnR6uAS4bLlnV~kft=x z;BB;s;T+;TSz&|SH{tk;8~GVDi&Z2N3)qIDh`PrIUHd*fBIiTdXzq|-OIY_oQP?LR zW?ee}qSM5N4yoZnCcYV=-vh@#}shXvbc>N#7L@mJnJi$-?-)rdl~@j=^dadH(DNVnrYMS zm`!6pPsS8NSL+VnL=MW9f(R_nb}iq9&@v77ZYc0SngtRrDj^#bJGVrLhn=#epy(QX z9(;}dD^i|%`1$E<5J{TF1{xvE1jwxbVv=AVt9>yDxY2KRB_83G+V( zaPl)aH!rXYeq~`6V<`btO;&sxfYpE6XgK~51XsYlM`0V5UtPSl?9l_QvhW( zv@EKapM9eCfhH1qI6)^p0jaFXuUsXSsI~Fr!&(+=l)-pnKl|3LTV)f2%rR8^tmwu% z7cn5hX~!6;_o%uC@vy+Kj5Iicavn}civAb?j6pa_LsZ4Yc}{h_QiJ;P6%ZO4+Xl5* z@!DU7gAbR#gv$La370AntqL3Musu^dd7&2}>b2o<_2~div?)R82uEH!!3UH?87@f} zPS5*bR2z1@&Mt&+Qp_KJ60HWkx~xvXrAOY-G6i+){8fi78d-o5wOUJtCLi;a3`??^ z1Vl@{v%dD6LW53m@?<^S9D9tKu0|RJoECQNGL!Da{k2CQ_V_q*0@y4n>t8xi&(g1` zLlFayqa#g{@)oR@bR#4y1fG4#PSClF(*TL}93PzViL`8kcxm84;Sr2%C9RhrDg6hp3 zVF|m8*Qs}fgusRr0LQjM#IRzuv8vgmK#nY;+8-B>z)H(z8Fk|*JQ!X_l+!dWF)J)dhg^Yjjl!I3R4L#4qy|} zDEs_YHXu;JMWt8kPRQK(+FMq>HpOdmA=1>~2h-n?B}p_1{D|@HdYeElf>F_o@)BJc zvUvUmzr&!*JJO$zMr&bjQuBl(F(MuvSB0~w{KO5&;xKX->I1Wep_+@$~LjiXf5*Pop}ds)XBu0vD)b}TML>dAJ5dq^sl$13!oCufI_e0s`$a?So< zno{`LFaDhMVVuwb3xxQ$Qi<$*01#aNe+Y{I#e^4@m;dGE|JiEj|EkV|AIn1;LL^=K0UvykW7goW%iNcTczm!Y@7v`xXocKPC1`Y97bKm3E&c*U z2HK}^Rl(xt2f&J7M5>=A`LFeoD>xc;(LYvpl`T3aLxhzh|IiGf1OKmXxB}~#;Mj@R z1wV2ur!A*#BG!-u2u;OcH5(k-GRfelk(Kev_zr1T*^^+|8l1=f61v0ysG)11*ml;4 zA&uG&uTO*Hx7PCoV9)PsXy?=rem3yaL|?rKUbz3fj6Z#Nn-f?O2PyQ6rf?Oq0YAG9 z=kEWUi{M|D{hW2+2mgHg-`5&2u>3rJTHvPzep=wC1^!!Gpj5& + + + + + + + AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAIEAAACCAAAAgwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAAngAAAJ8AAACgAAAAoQAAAKIAAACjAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAADSAAAA0wAAANQAAADVAAAA1gAAANcAAADYAAAA2QAAANoAAADbAAAA3AAAAN0AAADeAAAA3wAAAOAAAADhAAAA4gAAAOMAAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAAEEBAABCAQAAQwEAAEQBAABFAQAARgEAAEcBAABIAQAASQEAAEoBAABLAQAATAEAAE0BAABOAQAATwEAAFABAABRAQAAUgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAMIAAADCAAAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACPAQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoBAACbAQAAnAEAAMIAAACeAQAAnwEAAKABAAChAQAAogEAAKMBAADBAQAAwgEAAMMBAADEAQAAxQEAAMYBAADHAQAAyAEAAMkBAADKAQAAywEAAMwBAADNAQAAzgEAAM8BAADQAQAA0QEAANIBAADTAQAA1AEAANUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADCAAAAwgAAAMIAAADfAQAA4AEAAOEBAADiAQAA4wEAAAECAAACAgAAAwIAAAQCAAAFAgAABgIAAAcCAAAIAgAACQIAAAoCAAALAgAADAIAAA0CAAAOAgAADwIAABACAAARAgAAEgIAABMCAAAUAgAAFQIAABYCAAAXAgAAGAIAABkCAAAaAgAAGwIAAMIAAADCAAAAwgAAAB8CAAAgAgAAIQIAACICAAAjAgAAQQIAAEICAABDAgAARAIAAEUCAABGAgAARwIAAEgCAABJAgAASgIAAEsCAABMAgAATQIAAE4CAABPAgAAUAIAAFECAABSAgAAUwIAAFQCAABVAgAAVgIAAFcCAABYAgAAWQIAAFoCAABbAgAAwgAAAMIAAABeAgAAXwIAAGACAABhAgAAYgIAAGMCAACBAgAAggIAAIMCAACEAgAAhQIAAIYCAACHAgAAiAIAAIkCAACKAgAAiwIAAIwCAACNAgAAjgIAAI8CAACQAgAAkQIAAJICAACTAgAAlAIAAJUCAACWAgAAlwIAAJgCAACZAgAAmgIAAJsCAACcAgAAwgAAAJ4CAACfAgAAoAIAAKECAACiAgAAowIAAMECAADCAgAAwwIAAMQCAADFAgAAxgIAAMcCAADIAgAAyQIAAMoCAADLAgAAzAIAAM0CAADOAgAAzwIAANACAADRAgAA0gIAANMCAADUAgAA1QIAANYCAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADCAAAA3gIAAN8CAADgAgAA4QIAAOICAADjAgAAAQMAAAIDAAADAwAABAMAAAUDAAAGAwAABwMAAAgDAAAJAwAACgMAAAsDAAAMAwAADQMAAA4DAAAPAwAAEAMAABEDAAASAwAAEwMAABQDAAAVAwAAFgMAABcDAAAYAwAAGQMAABoDAAAbAwAAHAMAAB0DAAAeAwAAHwMAACADAAAhAwAAIgMAACMDAABBAwAAQgMAAEMDAABEAwAARQMAAEYDAABHAwAASAMAAEkDAABKAwAASwMAAEwDAABNAwAATgMAAE8DAABQAwAAUQMAAFIDAABTAwAAVAMAAFUDAABWAwAAVwMAAFgDAABZAwAAWgMAAFsDAABcAwAAXQMAAF4DAABfAwAAYAMAAGEDAABiAwAAYwMAAIEDAACCAwAAgwMAAIQDAACFAwAAhgMAAIcDAACIAwAAiQMAAIoDAACLAwAAjAMAAI0DAACOAwAAjwMAAJADAACRAwAAkgMAAJMDAACUAwAAlQMAAJYDAACXAwAAmAMAAJkDAACaAwAAmwMAAJwDAACdAwAAngMAAJ8DAACgAwAAoQMAAKIDAACjAwAAwQMAAMIDAADDAwAAxAMAAMUDAADGAwAAxwMAAMgDAADJAwAAygMAAMsDAADMAwAAzQMAAM4DAADPAwAA0AMAANEDAADSAwAA0wMAANQDAADVAwAA1gMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAAABBAAAAgQAAAMEAAAEBAAABQQAAAYEAAAHBAAACAQAAAkEAAAKBAAACwQAAAwEAAANBAAADgQAAA8EAAAQBAAAEQQAABIEAAATBAAAFAQAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAAAfBAAAIAQAACEEAAAiBAAAIwQAAEEEAABCBAAAQwQAAEQEAABFBAAARgQAAEcEAABIBAAASQQAAEoEAABLBAAATAQAAE0EAABOBAAATwQAAFAEAABRBAAAUgQAAFMEAABUBAAAVQQAAFYEAABXBAAAWAQAAFkEAABaBAAAWwQAAFwEAABdBAAAXgQAAF8EAABgBAAAYQQAAGIEAABjBAAAgQQAAIIEAACDBAAAhAQAAIUEAACGBAAAhwQAAIgEAACJBAAAigQAAIsEAACMBAAAjQQAAI4EAACPBAAAkAQAAJEEAACSBAAAkwQAAJQEAACVBAAAlgQAAJcEAACYBAAAmQQAAJoEAACbBAAAnAQAAJ0EAACeBAAAnwQAAKAEAAChBAAAogQAAKMEAADBBAAAwgQAAMMEAADEBAAAxQQAAMYEAADHBAAAyAQAAMkEAADKBAAAywQAAMwEAADNBAAAzgQAAM8EAADQBAAA0QQAANIEAADTBAAA1AQAANUEAADWBAAA1wQAANgEAADZBAAA2gQAANsEAADcBAAA3QQAAN4EAADfBAAA4AQAAOEEAADiBAAA4wQAAA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/level3_sprites.png b/Rect/Rect/level3_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..344cfbf648b513b627d7a5eff480ea78863888de GIT binary patch literal 24662 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 literal 0 HcmV?d00001 diff --git a/Rect/Rect/level4.tmx b/Rect/Rect/level4.tmx new file mode 100644 index 0000000..f6410c9 --- /dev/null +++ b/Rect/Rect/level4.tmx @@ -0,0 +1,28 @@ + + + + + + + + AQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAIEAAACCAAAAgwAAAIQAAACFAAAAhgAAAIcAAACIAAAAiQAAAIoAAACLAAAAjAAAAI0AAACOAAAAjwAAAJAAAACRAAAAkgAAAJMAAACUAAAAlQAAAJYAAACXAAAAmAAAAJkAAACaAAAAmwAAAJwAAACdAAAAngAAAJ8AAACgAAAAoQAAAKIAAACjAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAAxwAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAADPAAAA0AAAANEAAADSAAAA0wAAANQAAADVAAAA1gAAANcAAADYAAAA2QAAANoAAADbAAAA3AAAAN0AAADeAAAA3wAAAOAAAADhAAAA4gAAAOMAAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAAEEBAABCAQAAQwEAAEQBAABFAQAARgEAAEcBAABIAQAASQEAAEoBAABLAQAATAEAAE0BAABOAQAATwEAAFABAABRAQAAUgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACPAQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAAChAQAAogEAAKMBAADBAQAAwgEAAMMBAADEAQAAxQEAAMYBAADHAQAAyAEAAMkBAADKAQAAywEAAMwBAADNAQAAzgEAAM8BAADQAQAA0QEAANIBAADTAQAA1AEAANUBAADWAQAA1wEAANgBAADZAQAA2gEAANsBAADcAQAA3QEAAN4BAADfAQAA4AEAAOEBAADiAQAA4wEAAAECAAACAgAAAwIAAAQCAAAFAgAABgIAAAcCAAAIAgAACQIAAAoCAAALAgAADAIAAA0CAAAOAgAADwIAABACAAARAgAAEgIAABMCAAAUAgAAFQIAABYCAAAXAgAAGAIAABkCAAAaAgAAGwIAABwCAAAdAgAAHgIAAB8CAAAgAgAAIQIAACICAAAjAgAAQQIAAEICAABDAgAARAIAAEUCAABGAgAARwIAAEgCAABJAgAASgIAAEsCAABMAgAATQIAAE4CAABPAgAAUAIAAFECAABSAgAAUwIAAFQCAABVAgAAVgIAAFcCAABYAgAAWQIAAFoCAABbAgAAXAIAAF0CAABeAgAAXwIAAGACAABhAgAAYgIAAGMCAACBAgAAggIAAIMCAACEAgAAhQIAAIYCAACHAgAAiAIAAIkCAACKAgAAiwIAAIwCAACNAgAAjgIAAI8CAACQAgAAkQIAAJICAACTAgAAlAIAAJUCAACWAgAAlwIAAJgCAACZAgAAmgIAAJsCAACcAgAAnQIAAJ4CAACfAgAAoAIAAKECAACiAgAAowIAAMECAADCAgAAwwIAAMQCAADFAgAAxgIAAMcCAADIAgAAyQIAAMoCAADLAgAAzAIAAM0CAADOAgAAzwIAANACAADRAgAA0gIAANMCAADUAgAA1QIAANYCAADXAgAA2AIAANkCAADaAgAA2wIAANwCAADdAgAA3gIAAN8CAADgAgAA4QIAAOICAADjAgAAAQMAAAIDAAADAwAABAMAAAUDAAAGAwAABwMAAAgDAAAJAwAACgMAAAsDAAAMAwAADQMAABMDAAATAwAAEwMAABMDAAATAwAAEwMAABMDAAATAwAAEwMAABcDAAAYAwAAGQMAABoDAAAbAwAAHAMAAB0DAAAeAwAAHwMAACADAAAhAwAAIgMAACMDAABBAwAAQgMAAEMDAABEAwAARQMAAEYDAABHAwAASAMAAEkDAABKAwAASwMAAEwDAABNAwAATgMAAE8DAABQAwAAUQMAAFIDAABTAwAAVAMAAFUDAABWAwAAVwMAAFgDAABZAwAAWgMAAFsDAADfAgAA3wIAAN8CAADfAgAA3wIAAN8CAABiAwAAYwMAAIEDAACCAwAAgwMAAIQDAACFAwAAhgMAAIcDAACIAwAAiQMAAIoDAACLAwAAjAMAAI0DAACOAwAAjwMAAJADAACRAwAAkgMAAJMDAACUAwAAlQMAAJYDAACXAwAAmAMAAJkDAACaAwAAmwMAAN8CAADfAgAA3wIAAN8CAADfAgAA3wIAAKIDAACjAwAAwQMAAMIDAADDAwAAxAMAAMUDAADGAwAAxwMAAMgDAADJAwAAygMAAMsDAADMAwAAzQMAAM4DAADPAwAA0AMAANEDAADSAwAA0wMAANQDAADVAwAA1gMAANcDAADYAwAA2QMAANoDAADbAwAA3AMAAN0DAADeAwAA3wMAAOADAADhAwAA4gMAAOMDAAABBAAAAgQAAAMEAAAEBAAABQQAAAYEAAAHBAAACAQAAAkEAAAKBAAACwQAAAwEAAANBAAADgQAAA8EAAAQBAAAEQQAABIEAAATBAAAFAQAABUEAAAWBAAAFwQAABgEAAAZBAAAGgQAABsEAAAcBAAAHQQAAB4EAAAfBAAAIAQAACEEAAAiBAAAIwQAAEEEAABCBAAAQwQAAEQEAABFBAAARgQAAEcEAABIBAAASQQAAEoEAABLBAAATAQAAE0EAABOBAAATwQAAFAEAABRBAAAUgQAAFMEAABUBAAAVQQAAFYEAABXBAAAWAQAAFkEAABaBAAAWwQAAFwEAABdBAAAXgQAAF8EAABgBAAAYQQAAGIEAABjBAAAgQQAAIIEAACDBAAAhAQAAIUEAACGBAAAhwQAAIgEAACJBAAAigQAAIsEAACMBAAAjQQAAI4EAACPBAAAkAQAAJEEAACSBAAAkwQAAJQEAACVBAAAlgQAAJcEAACYBAAAmQQAAJoEAACbBAAAnAQAAJ0EAACeBAAAnwQAAKAEAAChBAAAogQAAKMEAADBBAAAwgQAAMMEAADEBAAAxQQAAMYEAADHBAAAyAQAAMkEAADKBAAAywQAAMwEAADNBAAAzgQAAM8EAADQBAAA0QQAANIEAADTBAAA1AQAANUEAADWBAAA1wQAANgEAADZBAAA2gQAANsEAADcBAAA3QQAAN4EAADfBAAA4AQAAOEEAADiBAAA4wQAAA== + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/level4_sprites.png b/Rect/Rect/level4_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..7f674e2aaeb0faf7dbefa9ac69a681c655a5399a GIT binary patch literal 30794 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

-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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/level5_sprites.png b/Rect/Rect/level5_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0c1c1f802b92c98740b1f3e70fe96c32966421 GIT binary patch literal 16770 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Rect/Rect/level6_sprites.png b/Rect/Rect/level6_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..325d854cfedb03ebbfc7624e55a098cbdd76db0a GIT binary patch literal 17768 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 J^Hy#8?jOkL4}1Us literal 0 HcmV?d00001 diff --git a/Rect/Rect/lift.png b/Rect/Rect/lift.png new file mode 100644 index 0000000000000000000000000000000000000000..2f22deb0df10191b436e2c585ea8423a4a30f436 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^_kdV|gAGX5{yzrdFct^7J29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?X?_wfUrhf=o%??k)`f+xyS#2lCiUJbhi+@3YGZ3K@T& zrH}#?lFbZ>C~?lu%}vcK0dg4_oQqNuOHxx5$}>wc6x=<115)%-*@5EKo-U3d6>)Db zALMOt;9))}^Y=T?_XTZl(%m-29Go|^@_mEr`Tqx$9y&Ty2nfirw6HT$hq)o|88dr0 VqkYetUrRvl^K|udS?83{1OT`1Sw8>( literal 0 HcmV?d00001 diff --git a/Rect/RectTests/Info.plist b/Rect/RectTests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Rect/RectTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Rect/RectTests/RectTests.swift b/Rect/RectTests/RectTests.swift new file mode 100644 index 0000000..0c39824 --- /dev/null +++ b/Rect/RectTests/RectTests.swift @@ -0,0 +1,36 @@ +// +// RectTests.swift +// RectTests +// +// Created by Peter Zhu on 15/10/31. +// Copyright © 2015年 Peter Zhu. All rights reserved. +// + +import XCTest +@testable import Rect + +class RectTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measureBlock { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Rect/RectUITests/Info.plist b/Rect/RectUITests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Rect/RectUITests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Rect/RectUITests/RectUITests.swift b/Rect/RectUITests/RectUITests.swift new file mode 100644 index 0000000..23e6278 --- /dev/null +++ b/Rect/RectUITests/RectUITests.swift @@ -0,0 +1,36 @@ +// +// RectUITests.swift +// RectUITests +// +// Created by Peter Zhu on 15/10/31. +// Copyright © 2015年 Peter Zhu. All rights reserved. +// + +import XCTest + +class RectUITests: XCTestCase { + + override func setUp() { + super.setUp() + + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +}