From 6fb1f520ffcb8b4269d2107c902c0bf78f1bf4ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Mon, 21 Jun 2021 22:31:38 +0200 Subject: [PATCH 1/7] Initial commit --- .../Sources/Minimax.playground/Contents.swift | 1 + .../Minimax.playground/Sources/Minimax.swift | 1 + .../Minimax.playground/contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 + .../Tests/Tests.xcodeproj/project.pbxproj | 306 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + Minimax/Sources/Tests/Tests/Info.plist | 22 ++ .../Sources/Tests/Tests/MinimaxTests.swift | 24 ++ 9 files changed, 380 insertions(+) create mode 100644 Minimax/Sources/Minimax.playground/Contents.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Minimax.swift create mode 100644 Minimax/Sources/Minimax.playground/contents.xcplayground create mode 100644 Minimax/Sources/Minimax.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100644 Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj create mode 100644 Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Minimax/Sources/Tests/Tests/Info.plist create mode 100644 Minimax/Sources/Tests/Tests/MinimaxTests.swift diff --git a/Minimax/Sources/Minimax.playground/Contents.swift b/Minimax/Sources/Minimax.playground/Contents.swift new file mode 100644 index 000000000..3fa4fedf4 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Contents.swift @@ -0,0 +1 @@ +import Cocoa diff --git a/Minimax/Sources/Minimax.playground/Sources/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Minimax.swift new file mode 100644 index 000000000..fecc4ab44 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Minimax.swift @@ -0,0 +1 @@ +import Foundation diff --git a/Minimax/Sources/Minimax.playground/contents.xcplayground b/Minimax/Sources/Minimax.playground/contents.xcplayground new file mode 100644 index 000000000..1c968e7d1 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Minimax/Sources/Minimax.playground/playground.xcworkspace/contents.xcworkspacedata b/Minimax/Sources/Minimax.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..ca3329e1a --- /dev/null +++ b/Minimax/Sources/Minimax.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj new file mode 100644 index 000000000..a27eb9701 --- /dev/null +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj @@ -0,0 +1,306 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB8564D268129FE0046878A /* MinimaxTests.swift */; }; + 9DB8565626812B170046878A /* Minimax.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB8565526812B170046878A /* Minimax.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 9DB8564A268129FE0046878A /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DB8564D268129FE0046878A /* MinimaxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinimaxTests.swift; sourceTree = ""; }; + 9DB8564F268129FE0046878A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9DB8565526812B170046878A /* Minimax.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimax.swift; path = ../Example.playground/Sources/Minimax.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9DB85647268129FE0046878A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9DB8563F268129EF0046878A = { + isa = PBXGroup; + children = ( + 9DB8565526812B170046878A /* Minimax.swift */, + 9DB8564C268129FE0046878A /* Tests */, + 9DB8564B268129FE0046878A /* Products */, + ); + sourceTree = ""; + }; + 9DB8564B268129FE0046878A /* Products */ = { + isa = PBXGroup; + children = ( + 9DB8564A268129FE0046878A /* Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9DB8564C268129FE0046878A /* Tests */ = { + isa = PBXGroup; + children = ( + 9DB8564F268129FE0046878A /* Info.plist */, + 9DB8564D268129FE0046878A /* MinimaxTests.swift */, + ); + path = Tests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9DB85649268129FE0046878A /* Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9DB85650268129FE0046878A /* Build configuration list for PBXNativeTarget "Tests" */; + buildPhases = ( + 9DB85646268129FE0046878A /* Sources */, + 9DB85647268129FE0046878A /* Frameworks */, + 9DB85648268129FE0046878A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Tests; + productName = Tests; + productReference = 9DB8564A268129FE0046878A /* Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9DB85640268129EF0046878A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1250; + LastUpgradeCheck = 1250; + TargetAttributes = { + 9DB85649268129FE0046878A = { + CreatedOnToolsVersion = 12.5; + }; + }; + }; + buildConfigurationList = 9DB85643268129EF0046878A /* Build configuration list for PBXProject "Tests" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9DB8563F268129EF0046878A; + productRefGroup = 9DB8564B268129FE0046878A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9DB85649268129FE0046878A /* Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9DB85648268129FE0046878A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9DB85646268129FE0046878A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */, + 9DB8565626812B170046878A /* Minimax.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 9DB85644268129EF0046878A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + 9DB85645268129EF0046878A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + 9DB85651268129FE0046878A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.example.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 9DB85652268129FE0046878A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; + INFOPLIST_FILE = Tests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.example.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9DB85643268129EF0046878A /* Build configuration list for PBXProject "Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DB85644268129EF0046878A /* Debug */, + 9DB85645268129EF0046878A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9DB85650268129FE0046878A /* Build configuration list for PBXNativeTarget "Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DB85651268129FE0046878A /* Debug */, + 9DB85652268129FE0046878A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9DB85640268129EF0046878A /* Project object */; +} diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Minimax/Sources/Tests/Tests/Info.plist b/Minimax/Sources/Tests/Tests/Info.plist new file mode 100644 index 000000000..64d65ca49 --- /dev/null +++ b/Minimax/Sources/Tests/Tests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Minimax/Sources/Tests/Tests/MinimaxTests.swift b/Minimax/Sources/Tests/Tests/MinimaxTests.swift new file mode 100644 index 000000000..241ebf314 --- /dev/null +++ b/Minimax/Sources/Tests/Tests/MinimaxTests.swift @@ -0,0 +1,24 @@ +import XCTest + +class MinimaxTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } +} From ae7463287bed16b2eca241523b651ab5442c107a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Mon, 21 Jun 2021 22:53:40 +0200 Subject: [PATCH 2/7] Add empty README.md --- Minimax/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Minimax/README.md diff --git a/Minimax/README.md b/Minimax/README.md new file mode 100644 index 000000000..e69de29bb From c9126fb95279c0962e000c009f84914b6e0d1589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Tue, 22 Jun 2021 17:19:07 +0200 Subject: [PATCH 3/7] Add working version --- .../Sources/Minimax.playground/Contents.swift | 6 +- .../Minimax.playground/Sources/Minimax.swift | 1 - .../Sources/Model/Board.swift | 150 +++++++++++ .../Sources/Model/GameModel.swift | 107 ++++++++ .../Sources/Model/GameModelAI.swift | 23 ++ .../Sources/Model/Minimax.swift | 94 +++++++ .../Sources/Model/Player.swift | 21 ++ .../Sources/View/BoardView.swift | 240 ++++++++++++++++++ .../Minimax.playground/contents.xcplayground | 2 +- .../Minimax.playground/timeline.xctimeline | 6 + .../Tests/Tests.xcodeproj/project.pbxproj | 8 +- 11 files changed, 651 insertions(+), 7 deletions(-) delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Minimax.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Board.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Player.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift create mode 100644 Minimax/Sources/Minimax.playground/timeline.xctimeline diff --git a/Minimax/Sources/Minimax.playground/Contents.swift b/Minimax/Sources/Minimax.playground/Contents.swift index 3fa4fedf4..3e1437dbc 100644 --- a/Minimax/Sources/Minimax.playground/Contents.swift +++ b/Minimax/Sources/Minimax.playground/Contents.swift @@ -1 +1,5 @@ -import Cocoa +import UIKit +import PlaygroundSupport + +PlaygroundPage.current.needsIndefiniteExecution = true +PlaygroundPage.current.liveView = BoardView(frame: CGRect(origin: .zero, size: CGSize(width: 500, height: 550))) diff --git a/Minimax/Sources/Minimax.playground/Sources/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Minimax.swift deleted file mode 100644 index fecc4ab44..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Minimax.swift +++ /dev/null @@ -1 +0,0 @@ -import Foundation diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift new file mode 100644 index 000000000..f38c8a843 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift @@ -0,0 +1,150 @@ +import Foundation + +public enum BoardStatus { + + case continues + + case win + + case draw +} + +public struct Board { + var table: [[String]] = [] + var size = 0 + + init(size: Int) { + self.size = size + table = Array(repeating: Array(repeating: "0", count: size), count: size) + } + + mutating func makeMove(player: Player, position: (column: Int, row: Int)) { + let symbol = player.symbol + table[position.column][position.row] = symbol + } + + func check(player: Player) -> BoardStatus { + let playerSymbol: String = player.symbol + + // Searching WIN in row's + for i in 0...size-1 { + var symbolsInRow = 0 + + for j in 0...size-2 { + if table[i][j] == table[i][j+1] && (table[i][j] == playerSymbol){ + symbolsInRow += 1 + } + else { + symbolsInRow = 0 + } + } + + if symbolsInRow == size-1 { + return BoardStatus.win + } + } + + // Searching WIN in column's + for j in 0...size-1 { + var symbolsInColumn = 0 + + for i in 0...size-2 { + if table[i][j] == table[i+1][j] && (table[i][j] == playerSymbol){ + symbolsInColumn += 1 + } + else { + symbolsInColumn = 0 + } + } + + if symbolsInColumn == size-1 { + return BoardStatus.win + } + } + + // Searching WIN in slant's + var symbolsInSlant = 0 + + for i in 0...size-1 { + for j in -(size-1)...0 { + if(table[-j][i] == playerSymbol){ + var k: Int = -j + var l: Int = i + symbolsInSlant = 0 + + while l < size && k >= 0 { + if table[k][l] == playerSymbol { + symbolsInSlant += 1 + } + else { + symbolsInSlant = 0 + } + k -= 1 + l += 1 + + if symbolsInSlant == size { + return BoardStatus.win + } + } + symbolsInSlant = 0 + } + symbolsInSlant = 0 + } + symbolsInSlant = 0 + } + + symbolsInSlant = 0 + + for i in 0...size-1 { + for j in 0...size-1 { + if(table[j][i] == playerSymbol){ + var k: Int = j + var l: Int = i + symbolsInSlant = 0 + + while l < size && k < size { + if table[k][l] == playerSymbol { + symbolsInSlant += 1 + } + else { + symbolsInSlant = 0 + } + k += 1 + l += 1 + + if symbolsInSlant == size { + return BoardStatus.win + } + } + symbolsInSlant = 0; + } + symbolsInSlant = 0; + } + symbolsInSlant = 0; + } + + // Searching not draw + for i in 0...size-1 { + for j in 0...size-1 { + if table[i][j] == "0" { + return BoardStatus.continues + } + } + } + + return BoardStatus.draw + } + + mutating func clear() { + table = Array(repeating: Array(repeating: "0", count: size), count: size) + } + + func printBoard() { + for row in table { + for element in row { + print(element, terminator: " ") + } + print(" ") + } + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift new file mode 100644 index 000000000..1661fb971 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift @@ -0,0 +1,107 @@ +import Foundation + +public class GameModel { + var playersList: [Player] + public var board: Board + var gameStatus: BoardStatus + var movementsSequence: [Int] + var actualPlayerIndex: Int + var actualPlayer: Player { + get { + return playersList[actualPlayerIndex] + } + } + + init(boardSize: Int, playersList: [Player]) { + self.playersList = playersList + self.movementsSequence = [] + self.board = Board.init(size: boardSize) + self.gameStatus = BoardStatus.continues + self.movementsSequence = [] + self.actualPlayerIndex = 0 + + self.generateMovementsSequence() + self.changeActualPlayer() + } + + public func update() { + gameStatus = boardCheck() + + switch gameStatus { + case BoardStatus.continues: + changeActualPlayer() + break + case BoardStatus.win: + addPointActualPlayer() + break + case BoardStatus.draw: + changeActualPlayer() + break + } + } + + public func playerMakeMove(selectedPosition: (column: Int, row: Int)) { + guard board.table[selectedPosition.column][selectedPosition.row] == "0" else { + return + } + board.makeMove(player: actualPlayer, position: selectedPosition) + update() + } + + public func newRound() { + board.clear() + gameStatus = BoardStatus.continues + generateMovementsSequence() + changeActualPlayer() + } + + public func findWinner() -> Player? { + var counter = 0 + var winner = playersList[0] + for player in playersList { + if player.points > winner.points { + winner = player + } + else if player.points == winner.points { + counter += 1 + } + } + if counter < playersList.count { + return winner + } + else { + return nil + } + } + + private func generateMovementsSequence() { + movementsSequence = [] + + let playersCount = playersList.count + let movesCount = (board.size * board.size) + + var move = Int.random(in: 0...playersCount-1) + movementsSequence.append(move) + + for _ in 0...movesCount-2 { + move += 1 + movementsSequence.append(move % playersCount) + } + } + + private func boardCheck() -> BoardStatus { + let gameResult = board.check(player: actualPlayer) + return gameResult + } + + private func changeActualPlayer() { + if !movementsSequence.isEmpty { + actualPlayerIndex = movementsSequence.first! + movementsSequence.removeFirst() + } + } + + private func addPointActualPlayer() { + playersList[actualPlayerIndex].points += 1 + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift new file mode 100644 index 000000000..3f6a96b4d --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift @@ -0,0 +1,23 @@ +import Foundation + +public class GameModelAI: GameModel { + var searchingDepth: Int = 5 + + override init(boardSize: Int, playersList: [Player]) { + super.init(boardSize: boardSize, playersList: playersList) + } + + public func makeMoveAI() { + guard actualPlayer.name == "Computer" else { + return + } + + let selectedPosition: (column: Int, row: Int) = minMaxMove(board: board, player: playersList[0], opponent: playersList[1], depth: searchingDepth) + guard board.table[selectedPosition.column][selectedPosition.row] == "0" else { + return + } + + board.makeMove(player: actualPlayer, position: selectedPosition) + update() + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift new file mode 100644 index 000000000..ff2963b95 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift @@ -0,0 +1,94 @@ +import Foundation + +public func evaluatePosition(board: Board, player: Player, opponent: Player) -> Int { + if board.check(player: player) == BoardStatus.win { + return +10 + } + else if board.check(player: opponent) == BoardStatus.win { + return -10 + } + else if board.check(player: player) == BoardStatus.draw || board.check(player: opponent) == BoardStatus.draw { + return 0 + } + + return 1 +} + +public func minMax(board: Board, player: Player, opponent: Player, depth: Int, alpha: Int, beta: Int, maximizingPlayer: Bool) -> Int { + var alpha = alpha + var beta = beta + + let gameResult = evaluatePosition(board: board, player: player, opponent: opponent) + guard depth != 0 && gameResult != -10 && gameResult != 10 && gameResult != 0 else { + return gameResult + } + + if maximizingPlayer { + var maxEval = -Int.max + + for i in 0...board.size-1 { + for j in 0...board.size-1 { + if board.table[i][j] == "0" { + var tempBoard = board + tempBoard.makeMove(player: player, position: (i,j)) + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth-1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) + maxEval = max(maxEval, eval) + alpha = max(alpha, eval) + + if beta <= alpha { + break + } + } + } + } + return maxEval + } + else { + var minEval = Int.max + + for i in 0...board.size-1 { + for j in 0...board.size-1 { + if board.table[i][j] == "0" { + var tempBoard = board + tempBoard.makeMove(player: opponent, position: (i,j)) + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth-1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) + minEval = min(minEval, eval) + beta = min(beta, eval) + + if beta <= alpha { + break + } + } + } + } + return minEval + } +} + +public func minMaxMove(board: Board, player: Player, opponent: Player, depth: Int) -> (Int, Int) { + var bestVal = -10 + var bestMoves: [(Int, Int)] = [] + + for i in 0...board.size-1 { + for j in 0...board.size-1 { + if board.table[i][j] == "0" { + var tempBoard = board + let move = (i, j) + + tempBoard.makeMove(player: opponent, position: (i, j)) + let moveVal = minMax(board: tempBoard, player: opponent, opponent: player, depth: depth, alpha: -10, beta: 10, maximizingPlayer: false) + + if moveVal > bestVal { + bestVal = moveVal + bestMoves = [] + bestMoves.append(move) + } + else if moveVal == bestVal { + bestMoves.append(move) + } + } + } + } + + return bestMoves[Int.random(in: 0...bestMoves.count-1)] +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift new file mode 100644 index 000000000..dea5303f3 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift @@ -0,0 +1,21 @@ +import Foundation + +/* +enum PlayerSymbol: Int { + case Null + case Circle + case Cross +}*/ + +public typealias PlayerSymbol = String + +public struct Player { + var name: String + var symbol: PlayerSymbol + var points = 0 + + public init(name: String, symbol: PlayerSymbol) { + self.name = name + self.symbol = symbol + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift new file mode 100644 index 000000000..af1c365ca --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift @@ -0,0 +1,240 @@ +import UIKit + +public class BoardView: UIView { + // MARK: -- Public + public var gameModel: GameModelAI! + public let gameModelQueue: DispatchQueue = DispatchQueue.init(label: "gameModelQueue") + public let mainQueue: DispatchQueue = DispatchQueue.main + public var players: [Player] = [Player(name: "Player", symbol: "❌"), + Player(name: "Computer", symbol: "⭕️")] + + // MARK: -- Override's + public override init(frame: CGRect) { + super.init(frame: frame) + + self.setupBoard() + self.setupResetButton() + self.setupIndicator() + self.startGame() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + } + + // MARK: -- Private + private var buttons: [UIButton] = [] + + private var stackView: UIStackView! + + private var resetButton: UIButton! + + private var indicator: UIActivityIndicatorView! + + private func startGame() { + gameModelQueue.async { + self.gameModel = GameModelAI.init(boardSize: 3, playersList: self.players) + + self.blockViewForUser() + + sleep(1) + + self.gameModel.makeMoveAI() + + self.unblockViewForUser() + } + } + + private func updateUI() { + if gameModel.gameStatus != BoardStatus.continues { + + blockButtons() + } + + boardToButtons() + } + + private func boardToButtons() { + var buttonIndex = 0 + + for row in 0 ..< 3 { + for column in 0 ..< 3 { + let symbol = gameModel.board.table[row][column] + if symbol != "0" { + self.buttons[buttonIndex].setTitle(PlayerSymbol(symbol), for: .normal) + self.buttons[buttonIndex].isUserInteractionEnabled = false + } + buttonIndex += 1 + } + } + } + + private func setupBoard() { + self.stackView = UIStackView() + self.stackView.translatesAutoresizingMaskIntoConstraints = false + self.stackView.axis = .vertical + self.stackView.alignment = .fill + self.stackView.distribution = .fillEqually + self.stackView.spacing = 10 + + self.addSubview(self.stackView) + + for index in 1 ... 3 { + let boardRow = self.createBoardRow(rowNumber: index) + self.stackView.addArrangedSubview(boardRow) + } + + // constraints + let constraints = [ + self.stackView.topAnchor.constraint(equalTo: self.topAnchor, constant: 10), + self.stackView.centerXAnchor.constraint(equalTo: self.centerXAnchor), + self.stackView.widthAnchor.constraint(equalTo: self.widthAnchor, constant: -20), + self.stackView.heightAnchor.constraint(equalTo: self.stackView.widthAnchor) + ] + NSLayoutConstraint.activate(constraints) + } + + private func createBoardRow(rowNumber: Int) -> UIStackView { + let stackView = UIStackView() + stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.axis = .horizontal + stackView.alignment = .fill + stackView.distribution = .fillEqually + stackView.spacing = 10 + + for index in 1 ... 3 { + let button = UIButton() + let id = String(index + ( (rowNumber - 1) * 3 ) ) + button.restorationIdentifier = id + button.backgroundColor = .lightGray + button.addTarget(self, action: #selector(buttonPressed(_:)), for: .touchUpInside) + + self.buttons.append(button) + stackView.addArrangedSubview(button) + } + + return stackView + } + + private func blockViewForUser() { + DispatchQueue.main.async { + self.blockButtons() + self.updateUI() + + self.resetButton.isHidden = true + self.indicator.isHidden = false + self.indicator.startAnimating() + } + } + + private func unblockViewForUser() { + DispatchQueue.main.async { + self.unblockButtons() + self.updateUI() + + self.resetButton.isHidden = false + self.indicator.isHidden = true + self.indicator.stopAnimating() + } + } + + @objc private func buttonPressed(_ sender: UIButton) { + let position = buttonIDtoPosition(id: sender.restorationIdentifier!) + + gameModelQueue.async { + self.gameModel.playerMakeMove(selectedPosition: position) + + self.blockViewForUser() + + sleep(1) + + self.gameModel.makeMoveAI() + + self.unblockViewForUser() + } + } + + private func setupResetButton() { + self.resetButton = UIButton(type: .system) + self.resetButton.translatesAutoresizingMaskIntoConstraints = false + self.resetButton.setTitle("Reset", for: .normal) + self.resetButton.backgroundColor = .lightGray + self.resetButton.addTarget(self, action: #selector(resetButtonPressed(_:)), for: .touchUpInside) + + self.addSubview(self.resetButton) + + // constraints + let constraints = [ + self.resetButton.topAnchor.constraint(equalTo: self.stackView.bottomAnchor, constant: 10), + self.resetButton.bottomAnchor.constraint(equalTo: self.bottomAnchor), + self.resetButton.widthAnchor.constraint(equalTo: self.widthAnchor) + ] + NSLayoutConstraint.activate(constraints) + } + + @objc private func resetButtonPressed(_ sender: UIButton) { + self.gameModel.newRound() + self.clearButtons() + self.startGame() + } + + private func setupIndicator() { + self.indicator = UIActivityIndicatorView() + self.indicator.translatesAutoresizingMaskIntoConstraints = false + self.indicator.backgroundColor = .lightGray + + self.addSubview(self.indicator) + + // constraints + let constraints = [ + self.indicator.topAnchor.constraint(equalTo: self.stackView.bottomAnchor, constant: 10), + self.indicator.bottomAnchor.constraint(equalTo: self.bottomAnchor), + self.indicator.widthAnchor.constraint(equalTo: self.widthAnchor) + ] + NSLayoutConstraint.activate(constraints) + } + + private func buttonIDtoPosition(id: String) -> (Int, Int) { + switch id { + case "1": + return (0, 0) + case "2": + return (0, 1) + case "3": + return (0, 2) + case "4": + return (1, 0) + case "5": + return (1, 1) + case "6": + return (1, 2) + case "7": + return (2, 0) + case "8": + return (2, 1) + case "9": + return (2, 2) + default: + return (0, 0) + } + } + + private func clearButtons() { + for button in self.buttons { + button.setTitle("", for: .normal); + button.isUserInteractionEnabled = true + } + } + + private func unblockButtons() { + for button in self.buttons { + button.isUserInteractionEnabled = true + } + } + + private func blockButtons() { + for button in self.buttons { + button.isUserInteractionEnabled = false + } + } +} diff --git a/Minimax/Sources/Minimax.playground/contents.xcplayground b/Minimax/Sources/Minimax.playground/contents.xcplayground index 1c968e7d1..cf026f228 100644 --- a/Minimax/Sources/Minimax.playground/contents.xcplayground +++ b/Minimax/Sources/Minimax.playground/contents.xcplayground @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/Minimax/Sources/Minimax.playground/timeline.xctimeline b/Minimax/Sources/Minimax.playground/timeline.xctimeline new file mode 100644 index 000000000..bf468afec --- /dev/null +++ b/Minimax/Sources/Minimax.playground/timeline.xctimeline @@ -0,0 +1,6 @@ + + + + + diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj index a27eb9701..66fdcfd22 100644 --- a/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB8564D268129FE0046878A /* MinimaxTests.swift */; }; - 9DB8565626812B170046878A /* Minimax.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB8565526812B170046878A /* Minimax.swift */; }; + 9DB856582681344F0046878A /* Minimax.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB856572681344F0046878A /* Minimax.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 9DB8564A268129FE0046878A /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 9DB8564D268129FE0046878A /* MinimaxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinimaxTests.swift; sourceTree = ""; }; 9DB8564F268129FE0046878A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DB8565526812B170046878A /* Minimax.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimax.swift; path = ../Example.playground/Sources/Minimax.swift; sourceTree = ""; }; + 9DB856572681344F0046878A /* Minimax.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimax.swift; path = ../Minimax.playground/Sources/Minimax.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -32,7 +32,7 @@ 9DB8563F268129EF0046878A = { isa = PBXGroup; children = ( - 9DB8565526812B170046878A /* Minimax.swift */, + 9DB856572681344F0046878A /* Minimax.swift */, 9DB8564C268129FE0046878A /* Tests */, 9DB8564B268129FE0046878A /* Products */, ); @@ -123,7 +123,7 @@ buildActionMask = 2147483647; files = ( 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */, - 9DB8565626812B170046878A /* Minimax.swift in Sources */, + 9DB856582681344F0046878A /* Minimax.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 525304833b0a5149499e19b85e33f5ae8014f5d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Wed, 23 Jun 2021 02:07:58 +0200 Subject: [PATCH 4/7] Algorithm refactor and more tests --- .../Sources/Minimax.playground/Contents.swift | 5 +- .../Sources/Model/Board.swift | 150 ----------------- .../Sources/Model/Board/Board.swift | 159 ++++++++++++++++++ .../Sources/Model/Board/BoardPosition.swift | 1 + .../Sources/Model/Board/BoardStatus.swift | 8 + .../Sources/Model/GameModel.swift | 107 ------------ .../Model/GameModel/DifficultLevel.swift | 8 + .../Sources/Model/GameModel/GameModel.swift | 95 +++++++++++ .../Sources/Model/GameModelAI.swift | 23 --- .../Sources/Model/Minimax.swift | 94 ----------- .../Model/Minimax/GameStateValue.swift | 8 + .../Sources/Model/Minimax/Minimax.swift | 102 +++++++++++ .../Sources/Model/Player.swift | 21 --- .../Sources/Model/Player/Player.swift | 12 ++ .../Sources/Model/Player/PlayerSymbol.swift | 8 + .../Sources/Model/Player/PlayerType.swift | 6 + .../Sources/View/BoardView.swift | 64 ++++--- .../Minimax.playground/timeline.xctimeline | 6 - .../Tests/Tests.xcodeproj/project.pbxproj | 52 +++++- Minimax/Sources/Tests/Tests/BoardTests.swift | 145 ++++++++++++++++ .../Sources/Tests/Tests/MinimaxTests.swift | 66 ++++++-- Minimax/Sources/Tests/Tests/PlayerTests.swift | 25 +++ 22 files changed, 709 insertions(+), 456 deletions(-) delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Board.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardPosition.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift delete mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Player.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift create mode 100644 Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift delete mode 100644 Minimax/Sources/Minimax.playground/timeline.xctimeline create mode 100644 Minimax/Sources/Tests/Tests/BoardTests.swift create mode 100644 Minimax/Sources/Tests/Tests/PlayerTests.swift diff --git a/Minimax/Sources/Minimax.playground/Contents.swift b/Minimax/Sources/Minimax.playground/Contents.swift index 3e1437dbc..fc7ee8cea 100644 --- a/Minimax/Sources/Minimax.playground/Contents.swift +++ b/Minimax/Sources/Minimax.playground/Contents.swift @@ -1,5 +1,8 @@ import UIKit import PlaygroundSupport +let boardSize = CGSize(width: 500, height: 550) +let boardView = BoardView(frame: CGRect(origin: .zero, size: boardSize)) + PlaygroundPage.current.needsIndefiniteExecution = true -PlaygroundPage.current.liveView = BoardView(frame: CGRect(origin: .zero, size: CGSize(width: 500, height: 550))) +PlaygroundPage.current.liveView = boardView diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift deleted file mode 100644 index f38c8a843..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Board.swift +++ /dev/null @@ -1,150 +0,0 @@ -import Foundation - -public enum BoardStatus { - - case continues - - case win - - case draw -} - -public struct Board { - var table: [[String]] = [] - var size = 0 - - init(size: Int) { - self.size = size - table = Array(repeating: Array(repeating: "0", count: size), count: size) - } - - mutating func makeMove(player: Player, position: (column: Int, row: Int)) { - let symbol = player.symbol - table[position.column][position.row] = symbol - } - - func check(player: Player) -> BoardStatus { - let playerSymbol: String = player.symbol - - // Searching WIN in row's - for i in 0...size-1 { - var symbolsInRow = 0 - - for j in 0...size-2 { - if table[i][j] == table[i][j+1] && (table[i][j] == playerSymbol){ - symbolsInRow += 1 - } - else { - symbolsInRow = 0 - } - } - - if symbolsInRow == size-1 { - return BoardStatus.win - } - } - - // Searching WIN in column's - for j in 0...size-1 { - var symbolsInColumn = 0 - - for i in 0...size-2 { - if table[i][j] == table[i+1][j] && (table[i][j] == playerSymbol){ - symbolsInColumn += 1 - } - else { - symbolsInColumn = 0 - } - } - - if symbolsInColumn == size-1 { - return BoardStatus.win - } - } - - // Searching WIN in slant's - var symbolsInSlant = 0 - - for i in 0...size-1 { - for j in -(size-1)...0 { - if(table[-j][i] == playerSymbol){ - var k: Int = -j - var l: Int = i - symbolsInSlant = 0 - - while l < size && k >= 0 { - if table[k][l] == playerSymbol { - symbolsInSlant += 1 - } - else { - symbolsInSlant = 0 - } - k -= 1 - l += 1 - - if symbolsInSlant == size { - return BoardStatus.win - } - } - symbolsInSlant = 0 - } - symbolsInSlant = 0 - } - symbolsInSlant = 0 - } - - symbolsInSlant = 0 - - for i in 0...size-1 { - for j in 0...size-1 { - if(table[j][i] == playerSymbol){ - var k: Int = j - var l: Int = i - symbolsInSlant = 0 - - while l < size && k < size { - if table[k][l] == playerSymbol { - symbolsInSlant += 1 - } - else { - symbolsInSlant = 0 - } - k += 1 - l += 1 - - if symbolsInSlant == size { - return BoardStatus.win - } - } - symbolsInSlant = 0; - } - symbolsInSlant = 0; - } - symbolsInSlant = 0; - } - - // Searching not draw - for i in 0...size-1 { - for j in 0...size-1 { - if table[i][j] == "0" { - return BoardStatus.continues - } - } - } - - return BoardStatus.draw - } - - mutating func clear() { - table = Array(repeating: Array(repeating: "0", count: size), count: size) - } - - func printBoard() { - for row in table { - for element in row { - print(element, terminator: " ") - } - print(" ") - } - } -} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift new file mode 100644 index 000000000..7e50a19a3 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift @@ -0,0 +1,159 @@ +public struct Board { + // MARK: -- Public variable's + public var size: Int + + // MARK: -- Private variable's + private var table: [ [PlayerSymbol?] ] + + // MARK: -- Public function's + public init(size: Int) { + self.size = size + self.table = [] + self.clear() + } + + public mutating func clear() { + self.table = Array(repeating: Array(repeating: PlayerSymbol.empty, count: size), count: size) + } + + public func hasEmptyField() -> Bool { + for i in 0 ..< self.size { + for j in 0 ..< self.size { + if self.table[i][j] == PlayerSymbol.empty { + return true + } + } + } + return false + } + + public func symbol(forPosition position: Position) -> PlayerSymbol? { + guard position.row < self.size, position.column < size else { return nil } + return self.table[position.row][position.column] + } + + public mutating func makeMove(player: Player, position: Position) { + guard self.symbol(forPosition: position) == PlayerSymbol.empty else { return } + guard self.symbol(forPosition: position) != player.symbol else { return } + + self.table[position.row][position.column] = player.symbol + } + + public func check(player: Player) -> BoardStatus { + let playerSymbol: PlayerSymbol = player.symbol + + if self.foundWinInRows(playerSymbol) { return BoardStatus.win } + if self.foundWinInColumns(playerSymbol) { return BoardStatus.win } + if self.foundWinInSlants(playerSymbol) { return BoardStatus.win } + + if self.hasEmptyField() { return BoardStatus.continues } + else { return BoardStatus.draw } + } + + // MARK: -- Private function's + private func foundWinInRows(_ playerSymbol: PlayerSymbol) -> Bool { + for i in 0 ..< self.size { + var theSameSymbolsInRowCount = 0 + + for j in 0 ..< self.size - 1 { + if self.table[i][j] == self.table[i][j+1] && (self.table[i][j] == playerSymbol){ + theSameSymbolsInRowCount += 1 + } + else { + theSameSymbolsInRowCount = 0 + } + } + + if theSameSymbolsInRowCount == self.size - 1 { + return true + } + } + + return false + } + + private func foundWinInColumns(_ playerSymbol: PlayerSymbol) -> Bool { + for j in 0 ..< self.size { + var theSameSymbolsInColumnCount = 0 + + for i in 0 ..< self.size - 1 { + if self.table[i][j] == self.table[i+1][j] && (self.table[i][j] == playerSymbol){ + theSameSymbolsInColumnCount += 1 + } + else { + theSameSymbolsInColumnCount = 0 + } + } + + if theSameSymbolsInColumnCount == self.size - 1 { + return true + } + } + + return false + } + + private func foundWinInSlants(_ playerSymbol: PlayerSymbol) -> Bool { + var theSameSymbolsInSlantCount = 0 + + for i in 0 ..< self.size { + for j in -(self.size - 1) ... 0 { + if(self.table[-j][i] == playerSymbol){ + var k: Int = -j + var l: Int = i + theSameSymbolsInSlantCount = 0 + + while l < self.size && k >= 0 { + if self.table[k][l] == playerSymbol { + theSameSymbolsInSlantCount += 1 + } + else { + theSameSymbolsInSlantCount = 0 + } + k -= 1 + l += 1 + + if theSameSymbolsInSlantCount == self.size { + return true + } + } + theSameSymbolsInSlantCount = 0 + } + theSameSymbolsInSlantCount = 0 + } + theSameSymbolsInSlantCount = 0 + } + + theSameSymbolsInSlantCount = 0 + + for i in 0 ..< self.size { + for j in 0 ..< self.size { + if(self.table[j][i] == playerSymbol){ + var k: Int = j + var l: Int = i + theSameSymbolsInSlantCount = 0 + + while l < self.size && k < self.size { + if self.table[k][l] == playerSymbol { + theSameSymbolsInSlantCount += 1 + } + else { + theSameSymbolsInSlantCount = 0 + } + k += 1 + l += 1 + + if theSameSymbolsInSlantCount == self.size { + return true + } + } + theSameSymbolsInSlantCount = 0; + } + theSameSymbolsInSlantCount = 0; + } + theSameSymbolsInSlantCount = 0; + } + + return false + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardPosition.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardPosition.swift new file mode 100644 index 000000000..4599da3af --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardPosition.swift @@ -0,0 +1 @@ +public typealias Position = (row: Int, column: Int) diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift new file mode 100644 index 000000000..ead629d0f --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift @@ -0,0 +1,8 @@ +public enum BoardStatus { + + case continues + + case win + + case draw +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift deleted file mode 100644 index 1661fb971..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel.swift +++ /dev/null @@ -1,107 +0,0 @@ -import Foundation - -public class GameModel { - var playersList: [Player] - public var board: Board - var gameStatus: BoardStatus - var movementsSequence: [Int] - var actualPlayerIndex: Int - var actualPlayer: Player { - get { - return playersList[actualPlayerIndex] - } - } - - init(boardSize: Int, playersList: [Player]) { - self.playersList = playersList - self.movementsSequence = [] - self.board = Board.init(size: boardSize) - self.gameStatus = BoardStatus.continues - self.movementsSequence = [] - self.actualPlayerIndex = 0 - - self.generateMovementsSequence() - self.changeActualPlayer() - } - - public func update() { - gameStatus = boardCheck() - - switch gameStatus { - case BoardStatus.continues: - changeActualPlayer() - break - case BoardStatus.win: - addPointActualPlayer() - break - case BoardStatus.draw: - changeActualPlayer() - break - } - } - - public func playerMakeMove(selectedPosition: (column: Int, row: Int)) { - guard board.table[selectedPosition.column][selectedPosition.row] == "0" else { - return - } - board.makeMove(player: actualPlayer, position: selectedPosition) - update() - } - - public func newRound() { - board.clear() - gameStatus = BoardStatus.continues - generateMovementsSequence() - changeActualPlayer() - } - - public func findWinner() -> Player? { - var counter = 0 - var winner = playersList[0] - for player in playersList { - if player.points > winner.points { - winner = player - } - else if player.points == winner.points { - counter += 1 - } - } - if counter < playersList.count { - return winner - } - else { - return nil - } - } - - private func generateMovementsSequence() { - movementsSequence = [] - - let playersCount = playersList.count - let movesCount = (board.size * board.size) - - var move = Int.random(in: 0...playersCount-1) - movementsSequence.append(move) - - for _ in 0...movesCount-2 { - move += 1 - movementsSequence.append(move % playersCount) - } - } - - private func boardCheck() -> BoardStatus { - let gameResult = board.check(player: actualPlayer) - return gameResult - } - - private func changeActualPlayer() { - if !movementsSequence.isEmpty { - actualPlayerIndex = movementsSequence.first! - movementsSequence.removeFirst() - } - } - - private func addPointActualPlayer() { - playersList[actualPlayerIndex].points += 1 - } -} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift new file mode 100644 index 000000000..3ba50327a --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift @@ -0,0 +1,8 @@ +public enum DifficultLevel: Int { + + case easy = 2 + + case medium = 3 + + case hard = 5 +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift new file mode 100644 index 000000000..7d958b510 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift @@ -0,0 +1,95 @@ +import Foundation + +public class GameModel { + // MARK: -- Public variable's + public var board: Board! + + public var gameStatus: BoardStatus + + // MARK: -- Private variable's + private var playersList: [Player]! + + private var movementsSequence: [Int]! + + private var actualPlayerIndex: Int! + + private var actualPlayer: Player { + get { + return playersList[actualPlayerIndex] + } + } + + private var difficultLevel: DifficultLevel = DifficultLevel.hard + + // MARK: -- Public function's + public init(boardSize: Int, playersList: [Player], difficultLevel: DifficultLevel) { + self.board = Board.init(size: boardSize) + self.playersList = playersList + self.difficultLevel = difficultLevel + self.gameStatus = BoardStatus.continues + + self.generateMovementsSequence() + self.changeActualPlayer() + } + + public func update() { + self.gameStatus = board.check(player: actualPlayer) + + switch self.gameStatus { + case BoardStatus.continues: + changeActualPlayer() + case BoardStatus.draw: + changeActualPlayer() + default: break + } + } + + public func playerMakeMove(selectedPosition: (row: Int, column: Int)) { + guard board.symbol(forPosition: selectedPosition) == PlayerSymbol.empty else { return } + guard board.hasEmptyField() == true else { return } + + board.makeMove(player: actualPlayer, position: selectedPosition) + update() + } + + public func makeMinimaxMove() { + guard actualPlayer.type == PlayerType.computer else { return } + guard board.hasEmptyField() == true else { return } + + sleep(1) + + let selectedPosition: Position = minimaxMove(board: board, player: playersList[0], opponent: playersList[1], depth: self.difficultLevel.rawValue) + board.makeMove(player: actualPlayer, position: selectedPosition) + update() + } + + public func newRound() { + board.clear() + gameStatus = BoardStatus.continues + generateMovementsSequence() + changeActualPlayer() + } + + // MARK: -- Private function's + private func generateMovementsSequence() { + self.movementsSequence = [] + + let playersCount = playersList.count + let movesCount = (board.size * board.size) + + var move = Int.random(in: 0 ..< playersCount) + movementsSequence.append(move) + + for _ in 0 ..< movesCount - 1 { + move += 1 + movementsSequence.append(move % playersCount) + } + } + + private func changeActualPlayer() { + if !movementsSequence.isEmpty { + actualPlayerIndex = movementsSequence.first! + movementsSequence.removeFirst() + } + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift deleted file mode 100644 index 3f6a96b4d..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Model/GameModelAI.swift +++ /dev/null @@ -1,23 +0,0 @@ -import Foundation - -public class GameModelAI: GameModel { - var searchingDepth: Int = 5 - - override init(boardSize: Int, playersList: [Player]) { - super.init(boardSize: boardSize, playersList: playersList) - } - - public func makeMoveAI() { - guard actualPlayer.name == "Computer" else { - return - } - - let selectedPosition: (column: Int, row: Int) = minMaxMove(board: board, player: playersList[0], opponent: playersList[1], depth: searchingDepth) - guard board.table[selectedPosition.column][selectedPosition.row] == "0" else { - return - } - - board.makeMove(player: actualPlayer, position: selectedPosition) - update() - } -} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift deleted file mode 100644 index ff2963b95..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax.swift +++ /dev/null @@ -1,94 +0,0 @@ -import Foundation - -public func evaluatePosition(board: Board, player: Player, opponent: Player) -> Int { - if board.check(player: player) == BoardStatus.win { - return +10 - } - else if board.check(player: opponent) == BoardStatus.win { - return -10 - } - else if board.check(player: player) == BoardStatus.draw || board.check(player: opponent) == BoardStatus.draw { - return 0 - } - - return 1 -} - -public func minMax(board: Board, player: Player, opponent: Player, depth: Int, alpha: Int, beta: Int, maximizingPlayer: Bool) -> Int { - var alpha = alpha - var beta = beta - - let gameResult = evaluatePosition(board: board, player: player, opponent: opponent) - guard depth != 0 && gameResult != -10 && gameResult != 10 && gameResult != 0 else { - return gameResult - } - - if maximizingPlayer { - var maxEval = -Int.max - - for i in 0...board.size-1 { - for j in 0...board.size-1 { - if board.table[i][j] == "0" { - var tempBoard = board - tempBoard.makeMove(player: player, position: (i,j)) - let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth-1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) - maxEval = max(maxEval, eval) - alpha = max(alpha, eval) - - if beta <= alpha { - break - } - } - } - } - return maxEval - } - else { - var minEval = Int.max - - for i in 0...board.size-1 { - for j in 0...board.size-1 { - if board.table[i][j] == "0" { - var tempBoard = board - tempBoard.makeMove(player: opponent, position: (i,j)) - let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth-1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) - minEval = min(minEval, eval) - beta = min(beta, eval) - - if beta <= alpha { - break - } - } - } - } - return minEval - } -} - -public func minMaxMove(board: Board, player: Player, opponent: Player, depth: Int) -> (Int, Int) { - var bestVal = -10 - var bestMoves: [(Int, Int)] = [] - - for i in 0...board.size-1 { - for j in 0...board.size-1 { - if board.table[i][j] == "0" { - var tempBoard = board - let move = (i, j) - - tempBoard.makeMove(player: opponent, position: (i, j)) - let moveVal = minMax(board: tempBoard, player: opponent, opponent: player, depth: depth, alpha: -10, beta: 10, maximizingPlayer: false) - - if moveVal > bestVal { - bestVal = moveVal - bestMoves = [] - bestMoves.append(move) - } - else if moveVal == bestVal { - bestMoves.append(move) - } - } - } - } - - return bestMoves[Int.random(in: 0...bestMoves.count-1)] -} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift new file mode 100644 index 000000000..6a03f02ab --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift @@ -0,0 +1,8 @@ +public enum GameStateValue: Int { + + case min = -1 + + case null = 0 + + case max = 1 +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift new file mode 100644 index 000000000..43a07ff98 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift @@ -0,0 +1,102 @@ +public func minimaxMove(board: Board, player: Player, opponent: Player, depth: Int) -> Position { + var bestVal = GameStateValue.min + var bestMoves: [Position] = [] + + for i in 0 ..< board.size { + for j in 0 ..< board.size { + if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { + var tempBoard = board + let move = Position(i, j) + + tempBoard.makeMove(player: opponent, position: (i, j)) + let moveVal = minMax(board: tempBoard, player: opponent, opponent: player, + depth: depth, + alpha: GameStateValue.min.rawValue, beta: GameStateValue.max.rawValue, + maximizingPlayer: false) + + if moveVal.rawValue > bestVal.rawValue { + bestVal = moveVal + bestMoves = [] + bestMoves.append(move) + } + else if moveVal == bestVal { + bestMoves.append(move) + } + } + } + } + + return bestMoves[Int.random(in: 0 ..< bestMoves.count)] +} + +public func minMax(board: Board, player: Player, opponent: Player, depth: Int, alpha: Int, beta: Int, maximizingPlayer: Bool) -> GameStateValue { + var alpha = alpha + var beta = beta + + if let gameResult = evaluateGameState(board: board, player: player, opponent: opponent) { + guard depth != 0 && gameResult != GameStateValue.min && gameResult != GameStateValue.max && gameResult != GameStateValue.null else { + return gameResult + } + } + + if maximizingPlayer { + var maxEval = GameStateValue.min + + for i in 0 ..< board.size { + for j in 0 ..< board.size { + if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { + var tempBoard = board + tempBoard.makeMove(player: player, position: Position(i, j)) + + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth - 1, + alpha: alpha, beta: beta, + maximizingPlayer: !maximizingPlayer) + + maxEval = GameStateValue(rawValue: max(maxEval.rawValue, eval.rawValue))! + alpha = max(alpha, eval.rawValue) + + if beta <= alpha { break } + } + } + } + + return maxEval + } + else { + var minEval = GameStateValue.max + + for i in 0 ..< board.size { + for j in 0 ..< board.size { + if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { + var tempBoard = board + tempBoard.makeMove(player: opponent, position: (i,j)) + + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth - 1, + alpha: alpha, beta: beta, + maximizingPlayer: !maximizingPlayer) + + minEval = GameStateValue(rawValue: min(minEval.rawValue, eval.rawValue))! + beta = min(beta, eval.rawValue) + + if beta <= alpha { break } + } + } + } + + return minEval + } +} + +public func evaluateGameState(board: Board, player: Player, opponent: Player) -> GameStateValue? { + if board.check(player: player) == BoardStatus.win { + return GameStateValue.max + } + else if board.check(player: opponent) == BoardStatus.win { + return GameStateValue.min + } + else if board.check(player: player) == BoardStatus.draw || board.check(player: opponent) == BoardStatus.draw { + return GameStateValue.null + } + + return nil +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift deleted file mode 100644 index dea5303f3..000000000 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Player.swift +++ /dev/null @@ -1,21 +0,0 @@ -import Foundation - -/* -enum PlayerSymbol: Int { - case Null - case Circle - case Cross -}*/ - -public typealias PlayerSymbol = String - -public struct Player { - var name: String - var symbol: PlayerSymbol - var points = 0 - - public init(name: String, symbol: PlayerSymbol) { - self.name = name - self.symbol = symbol - } -} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift new file mode 100644 index 000000000..9758811f0 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift @@ -0,0 +1,12 @@ +public struct Player { + // MARK: -- Public variable's + public var type: PlayerType + + public var symbol: PlayerSymbol + + // MARK: -- Public function's + public init(type: PlayerType, symbol: PlayerSymbol) { + self.type = type + self.symbol = symbol + } +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift new file mode 100644 index 000000000..27b4b23e8 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift @@ -0,0 +1,8 @@ +public enum PlayerSymbol: String { + + case empty = "" + + case circle = "⭕️" + + case cross = "❌" +} diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift new file mode 100644 index 000000000..65651ca39 --- /dev/null +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift @@ -0,0 +1,6 @@ +public enum PlayerType { + + case computer + + case human +} diff --git a/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift index af1c365ca..5d1c5743c 100644 --- a/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift +++ b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift @@ -2,11 +2,10 @@ import UIKit public class BoardView: UIView { // MARK: -- Public - public var gameModel: GameModelAI! - public let gameModelQueue: DispatchQueue = DispatchQueue.init(label: "gameModelQueue") - public let mainQueue: DispatchQueue = DispatchQueue.main - public var players: [Player] = [Player(name: "Player", symbol: "❌"), - Player(name: "Computer", symbol: "⭕️")] + public var gameModel: GameModel! + + public var players = [Player(type: .human, symbol: .circle), + Player(type: .computer, symbol: .cross)] // MARK: -- Override's public override init(frame: CGRect) { @@ -32,14 +31,13 @@ public class BoardView: UIView { private var indicator: UIActivityIndicatorView! private func startGame() { - gameModelQueue.async { - self.gameModel = GameModelAI.init(boardSize: 3, playersList: self.players) + self.gameModel = GameModel.init(boardSize: 3, playersList: self.players, difficultLevel: .hard) + + DispatchQueue.global(qos: .userInteractive).async { self.blockViewForUser() - sleep(1) - - self.gameModel.makeMoveAI() + self.gameModel.makeMinimaxMove() self.unblockViewForUser() } @@ -47,10 +45,11 @@ public class BoardView: UIView { private func updateUI() { if gameModel.gameStatus != BoardStatus.continues { - + self.resetButton.setTitle("New game", for: .normal) blockButtons() + } else { + self.resetButton.setTitle("Reset", for: .normal) } - boardToButtons() } @@ -59,9 +58,9 @@ public class BoardView: UIView { for row in 0 ..< 3 { for column in 0 ..< 3 { - let symbol = gameModel.board.table[row][column] - if symbol != "0" { - self.buttons[buttonIndex].setTitle(PlayerSymbol(symbol), for: .normal) + let symbol = gameModel.board.symbol(forPosition: Position(row, column)) + if symbol != PlayerSymbol.empty { + self.buttons[buttonIndex].setTitle(symbol?.rawValue, for: .normal) self.buttons[buttonIndex].isUserInteractionEnabled = false } buttonIndex += 1 @@ -107,6 +106,7 @@ public class BoardView: UIView { let id = String(index + ( (rowNumber - 1) * 3 ) ) button.restorationIdentifier = id button.backgroundColor = .lightGray + button.titleLabel?.font = UIFont(name: "Helvetica", size: 50) button.addTarget(self, action: #selector(buttonPressed(_:)), for: .touchUpInside) self.buttons.append(button) @@ -118,12 +118,12 @@ public class BoardView: UIView { private func blockViewForUser() { DispatchQueue.main.async { - self.blockButtons() - self.updateUI() - self.resetButton.isHidden = true self.indicator.isHidden = false self.indicator.startAnimating() + + self.blockButtons() + self.updateUI() } } @@ -141,14 +141,12 @@ public class BoardView: UIView { @objc private func buttonPressed(_ sender: UIButton) { let position = buttonIDtoPosition(id: sender.restorationIdentifier!) - gameModelQueue.async { + DispatchQueue.global(qos: .userInteractive).async { self.gameModel.playerMakeMove(selectedPosition: position) self.blockViewForUser() - sleep(1) - - self.gameModel.makeMoveAI() + self.gameModel.makeMinimaxMove() self.unblockViewForUser() } @@ -194,28 +192,28 @@ public class BoardView: UIView { NSLayoutConstraint.activate(constraints) } - private func buttonIDtoPosition(id: String) -> (Int, Int) { + private func buttonIDtoPosition(id: String) -> Position { switch id { case "1": - return (0, 0) + return Position(0, 0) case "2": - return (0, 1) + return Position(0, 1) case "3": - return (0, 2) + return Position(0, 2) case "4": - return (1, 0) + return Position(1, 0) case "5": - return (1, 1) + return Position(1, 1) case "6": - return (1, 2) + return Position(1, 2) case "7": - return (2, 0) + return Position(2, 0) case "8": - return (2, 1) + return Position(2, 1) case "9": - return (2, 2) + return Position(2, 2) default: - return (0, 0) + return Position(0, 0) } } diff --git a/Minimax/Sources/Minimax.playground/timeline.xctimeline b/Minimax/Sources/Minimax.playground/timeline.xctimeline deleted file mode 100644 index bf468afec..000000000 --- a/Minimax/Sources/Minimax.playground/timeline.xctimeline +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj index 66fdcfd22..2ee08e4e0 100644 --- a/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.pbxproj @@ -7,15 +7,37 @@ objects = { /* Begin PBXBuildFile section */ + 9D029435268265690015843C /* BoardTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D029434268265690015843C /* BoardTests.swift */; }; + 9D02946D268285E20015843C /* PlayerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02946C268285E20015843C /* PlayerTests.swift */; }; + 9D0294852682B1850015843C /* Minimax.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02947A2682B1840015843C /* Minimax.swift */; }; + 9D0294862682B1850015843C /* PlayerSymbol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02947B2682B1840015843C /* PlayerSymbol.swift */; }; + 9D0294872682B1850015843C /* Board.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02947D2682B1840015843C /* Board.swift */; }; + 9D0294882682B1850015843C /* Player.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02947E2682B1840015843C /* Player.swift */; }; + 9D0294892682B1850015843C /* BoardPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D02947F2682B1840015843C /* BoardPosition.swift */; }; + 9D02948A2682B1850015843C /* PlayerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0294802682B1840015843C /* PlayerType.swift */; }; + 9D02948B2682B1850015843C /* GameModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0294812682B1840015843C /* GameModel.swift */; }; + 9D02948C2682B1850015843C /* DifficultLevel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0294822682B1840015843C /* DifficultLevel.swift */; }; + 9D02948D2682B1850015843C /* BoardStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0294832682B1840015843C /* BoardStatus.swift */; }; + 9D02948E2682B1850015843C /* GameStateValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0294842682B1850015843C /* GameStateValue.swift */; }; 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB8564D268129FE0046878A /* MinimaxTests.swift */; }; - 9DB856582681344F0046878A /* Minimax.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DB856572681344F0046878A /* Minimax.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 9D029434268265690015843C /* BoardTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoardTests.swift; sourceTree = ""; }; + 9D02946C268285E20015843C /* PlayerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerTests.swift; sourceTree = ""; }; + 9D02947A2682B1840015843C /* Minimax.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimax.swift; path = ../Minimax.playground/Sources/Model/Minimax/Minimax.swift; sourceTree = ""; }; + 9D02947B2682B1840015843C /* PlayerSymbol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PlayerSymbol.swift; path = ../Minimax.playground/Sources/Model/Player/PlayerSymbol.swift; sourceTree = ""; }; + 9D02947D2682B1840015843C /* Board.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Board.swift; path = ../Minimax.playground/Sources/Model/Board/Board.swift; sourceTree = ""; }; + 9D02947E2682B1840015843C /* Player.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Player.swift; path = ../Minimax.playground/Sources/Model/Player/Player.swift; sourceTree = ""; }; + 9D02947F2682B1840015843C /* BoardPosition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BoardPosition.swift; path = ../Minimax.playground/Sources/Model/Board/BoardPosition.swift; sourceTree = ""; }; + 9D0294802682B1840015843C /* PlayerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PlayerType.swift; path = ../Minimax.playground/Sources/Model/Player/PlayerType.swift; sourceTree = ""; }; + 9D0294812682B1840015843C /* GameModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GameModel.swift; path = ../Minimax.playground/Sources/Model/GameModel/GameModel.swift; sourceTree = ""; }; + 9D0294822682B1840015843C /* DifficultLevel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DifficultLevel.swift; path = ../Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift; sourceTree = ""; }; + 9D0294832682B1840015843C /* BoardStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BoardStatus.swift; path = ../Minimax.playground/Sources/Model/Board/BoardStatus.swift; sourceTree = ""; }; + 9D0294842682B1850015843C /* GameStateValue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GameStateValue.swift; path = ../Minimax.playground/Sources/Model/Minimax/GameStateValue.swift; sourceTree = ""; }; 9DB8564A268129FE0046878A /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 9DB8564D268129FE0046878A /* MinimaxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinimaxTests.swift; sourceTree = ""; }; 9DB8564F268129FE0046878A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9DB856572681344F0046878A /* Minimax.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimax.swift; path = ../Minimax.playground/Sources/Minimax.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -32,7 +54,16 @@ 9DB8563F268129EF0046878A = { isa = PBXGroup; children = ( - 9DB856572681344F0046878A /* Minimax.swift */, + 9D02947D2682B1840015843C /* Board.swift */, + 9D02947F2682B1840015843C /* BoardPosition.swift */, + 9D0294832682B1840015843C /* BoardStatus.swift */, + 9D0294822682B1840015843C /* DifficultLevel.swift */, + 9D0294812682B1840015843C /* GameModel.swift */, + 9D0294842682B1850015843C /* GameStateValue.swift */, + 9D02947A2682B1840015843C /* Minimax.swift */, + 9D02947E2682B1840015843C /* Player.swift */, + 9D02947B2682B1840015843C /* PlayerSymbol.swift */, + 9D0294802682B1840015843C /* PlayerType.swift */, 9DB8564C268129FE0046878A /* Tests */, 9DB8564B268129FE0046878A /* Products */, ); @@ -50,6 +81,8 @@ isa = PBXGroup; children = ( 9DB8564F268129FE0046878A /* Info.plist */, + 9D02946C268285E20015843C /* PlayerTests.swift */, + 9D029434268265690015843C /* BoardTests.swift */, 9DB8564D268129FE0046878A /* MinimaxTests.swift */, ); path = Tests; @@ -122,8 +155,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9D029435268265690015843C /* BoardTests.swift in Sources */, + 9D02948E2682B1850015843C /* GameStateValue.swift in Sources */, 9DB8564E268129FE0046878A /* MinimaxTests.swift in Sources */, - 9DB856582681344F0046878A /* Minimax.swift in Sources */, + 9D0294872682B1850015843C /* Board.swift in Sources */, + 9D0294892682B1850015843C /* BoardPosition.swift in Sources */, + 9D02948A2682B1850015843C /* PlayerType.swift in Sources */, + 9D02948B2682B1850015843C /* GameModel.swift in Sources */, + 9D02948C2682B1850015843C /* DifficultLevel.swift in Sources */, + 9D0294862682B1850015843C /* PlayerSymbol.swift in Sources */, + 9D02948D2682B1850015843C /* BoardStatus.swift in Sources */, + 9D0294882682B1850015843C /* Player.swift in Sources */, + 9D02946D268285E20015843C /* PlayerTests.swift in Sources */, + 9D0294852682B1850015843C /* Minimax.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Minimax/Sources/Tests/Tests/BoardTests.swift b/Minimax/Sources/Tests/Tests/BoardTests.swift new file mode 100644 index 000000000..f287e1732 --- /dev/null +++ b/Minimax/Sources/Tests/Tests/BoardTests.swift @@ -0,0 +1,145 @@ +import XCTest + +class BoardTests: XCTestCase { + + private var sut: Board! + + private var boardSize = 3 + + override func setUp() { + super.setUp() + sut = Board(size: boardSize) + } + + override func tearDown() { + sut = nil + super.tearDown() + } + + func testInit() { + XCTAssertEqual(sut.size, boardSize) + XCTAssertEqual(allFieldsAreEmpty(), true) + } + + func testSymbolForPosition() { + let player = Player(type: .human, symbol: .circle) + let position = Position(0, 0) + + sut.clear() + XCTAssertEqual(sut.symbol(forPosition: position), PlayerSymbol.empty) + + sut.makeMove(player: player, position: position) + XCTAssertEqual(sut.symbol(forPosition: position), player.symbol) + } + + func testClear() { + let player = Player(type: .computer, symbol: .circle) + let position = Position(0, 0) + + sut.makeMove(player: player, position: position) + + XCTAssertEqual(allFieldsAreEmpty(), false) + + sut.clear() + + XCTAssertEqual(allFieldsAreEmpty(), true) + } + + func testHasEmptyField() { + let player = Player(type: .computer, symbol: .circle) + + sut.clear() + + XCTAssertEqual(sut.hasEmptyField(), true) + + sut.makeMove(player: player, position: Position(0, 0)) + sut.makeMove(player: player, position: Position(0, 1)) + sut.makeMove(player: player, position: Position(0, 2)) + + sut.makeMove(player: player, position: Position(1, 0)) + sut.makeMove(player: player, position: Position(1, 1)) + sut.makeMove(player: player, position: Position(1, 2)) + + sut.makeMove(player: player, position: Position(2, 0)) + sut.makeMove(player: player, position: Position(2, 1)) + sut.makeMove(player: player, position: Position(2, 2)) + + XCTAssertEqual(sut.hasEmptyField(), false) + } + + func testMakeMove() { + let firstPlayer = Player(type: .human, symbol: .circle) + let secondPlayer = Player(type: .human, symbol: .cross) + let position = Position(0, 0) + + sut.clear() + sut.makeMove(player: firstPlayer, position: position) + sut.makeMove(player: secondPlayer, position: position) + + XCTAssertEqual(sut.symbol(forPosition: position), firstPlayer.symbol) + } + + func testCheck() { + let firstPlayer = Player(type: .computer, symbol: .circle) + let secondPlayer = Player(type: .computer, symbol: .cross) + + sut.clear() + + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.continues) + XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) + + sut.clear() + sut.makeMove(player: firstPlayer, position: Position(0, 0)) + sut.makeMove(player: firstPlayer, position: Position(0, 1)) + sut.makeMove(player: firstPlayer, position: Position(0, 2)) + + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) + XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) + + sut.clear() + sut.makeMove(player: firstPlayer, position: Position(0, 0)) + sut.makeMove(player: firstPlayer, position: Position(1, 0)) + sut.makeMove(player: firstPlayer, position: Position(2, 0)) + + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) + XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) + + sut.clear() + sut.makeMove(player: firstPlayer, position: Position(0, 0)) + sut.makeMove(player: firstPlayer, position: Position(1, 1)) + sut.makeMove(player: firstPlayer, position: Position(2, 2)) + + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) + XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) + + sut.clear() + sut.makeMove(player: firstPlayer, position: Position(0, 0)) + sut.makeMove(player: secondPlayer, position: Position(0, 1)) + sut.makeMove(player: secondPlayer, position: Position(0, 2)) + + sut.makeMove(player: secondPlayer, position: Position(1, 0)) + sut.makeMove(player: firstPlayer, position: Position(1, 1)) + sut.makeMove(player: firstPlayer, position: Position(1, 2)) + + sut.makeMove(player: secondPlayer, position: Position(2, 0)) + sut.makeMove(player: firstPlayer, position: Position(2, 1)) + sut.makeMove(player: secondPlayer, position: Position(2, 2)) + + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.draw) + XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.draw) + } + + private func allFieldsAreEmpty() -> Bool { + var allFieldAreEmpty = true + + for row in 0 ..< sut.size { + for column in 0 ..< sut.size { + if sut.symbol(forPosition: Position(row, column)) != PlayerSymbol.empty { + allFieldAreEmpty = false + } + } + } + + return allFieldAreEmpty + } +} diff --git a/Minimax/Sources/Tests/Tests/MinimaxTests.swift b/Minimax/Sources/Tests/Tests/MinimaxTests.swift index 241ebf314..269a3b63b 100644 --- a/Minimax/Sources/Tests/Tests/MinimaxTests.swift +++ b/Minimax/Sources/Tests/Tests/MinimaxTests.swift @@ -1,24 +1,56 @@ import XCTest class MinimaxTests: XCTestCase { - - override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. + override func setUp() { + super.setUp() } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. + + override func tearDown() { + super.tearDown() } - - func testExample() throws { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - func testPerformanceExample() throws { - // This is an example of a performance test case. - measure { - // Put the code you want to measure the time of here. - } + + func testEvaluateGameState() { + var board = Board(size: 3) + let firstPlayer = Player(type: .human, symbol: .cross) + let secondPlayer = Player(type: .human, symbol: .circle) + + board.clear() + + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), nil) + + board.makeMove(player: firstPlayer, position: Position(0, 0)) + + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), nil) + + board.makeMove(player: firstPlayer, position: Position(0, 1)) + board.makeMove(player: firstPlayer, position: Position(0, 2)) + + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .max) + XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .min) + + board.clear() + board.makeMove(player: secondPlayer, position: Position(0, 0)) + board.makeMove(player: secondPlayer, position: Position(0, 1)) + board.makeMove(player: secondPlayer, position: Position(0, 2)) + board.makeMove(player: firstPlayer, position: Position(1, 0)) + + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .min) + XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .max) + + board.clear() + board.makeMove(player: firstPlayer, position: Position(0, 0)) + board.makeMove(player: secondPlayer, position: Position(0, 1)) + board.makeMove(player: secondPlayer, position: Position(0, 2)) + + board.makeMove(player: secondPlayer, position: Position(1, 0)) + board.makeMove(player: firstPlayer, position: Position(1, 1)) + board.makeMove(player: firstPlayer, position: Position(1, 2)) + + board.makeMove(player: secondPlayer, position: Position(2, 0)) + board.makeMove(player: firstPlayer, position: Position(2, 1)) + board.makeMove(player: secondPlayer, position: Position(2, 2)) + + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .null) + XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .null) } } diff --git a/Minimax/Sources/Tests/Tests/PlayerTests.swift b/Minimax/Sources/Tests/Tests/PlayerTests.swift new file mode 100644 index 000000000..f3e622a1f --- /dev/null +++ b/Minimax/Sources/Tests/Tests/PlayerTests.swift @@ -0,0 +1,25 @@ +import XCTest + +class PlayerTests: XCTestCase { + + private var sut: Player! + + private var playerType: PlayerType = .human + + private var playerSymbol: PlayerSymbol = .circle + + override func setUp() { + super.setUp() + sut = Player(type: playerType, symbol: playerSymbol) + } + + override func tearDown() { + sut = nil + super.tearDown() + } + + func testInit() { + XCTAssertEqual(sut.type, playerType) + XCTAssertEqual(sut.symbol, playerSymbol) + } +} From b967abdb82043c7767fa77cca03c4bb57f947130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Wed, 23 Jun 2021 22:16:44 +0200 Subject: [PATCH 5/7] Add resources --- Minimax/README.md | 69 +++++++++++++++++++++++++++++++++++ Minimax/Resources/demo.gif | Bin 0 -> 742634 bytes Minimax/Resources/image1.jpg | Bin 0 -> 58547 bytes 3 files changed, 69 insertions(+) create mode 100644 Minimax/Resources/demo.gif create mode 100644 Minimax/Resources/image1.jpg diff --git a/Minimax/README.md b/Minimax/README.md index e69de29bb..2dd47ee23 100644 --- a/Minimax/README.md +++ b/Minimax/README.md @@ -0,0 +1,69 @@ +# Minimax algorithm + +

+ +## Runtime environment + + + + +## Table of contents +* [General info](#general-info) +* [Functionality](#functionality) +* [Pseudocode](#pseudocode) +* [Demo](#demo) +* [Sources](#sources) + +## General info +It is an example of implementation and use ``minimax algorithm`` in ``Tic Tac Toe`` game. Minimax is an algorithm that searches deeply into all possible states in the game. There are two types of players in the algorithm. One that wants to maximize the state of the game and one that wants to minimaze the state of the game. There are three states in the tic-tac-toe game: +- `` -1 `` - if the minimizing player wins +- `` 0 `` - in case of a tie +- `` 1 `` - if the maximizing player wins + +``Alpha-beta prunning`` this is a method that interrupts the search of those branches that do not lead to win. Alpha for maximizing player and beta for minimizing player. Alpha-beta prunnings reduce the time complexity of the algorithm. + +Parameters: +- ``searching depth`` - how many moves in depth is to be calculated by the algorithm + +Input: +- ``actual board state`` - in the form of an array for players symbols (cross/circle) +- ``two player symbols`` - cross / circle + +Output: +- ``the best move for autonomus(AI) player`` - Position(row: Int, column: Int) + +## Functionality +- example of use in Swift Playground with interactive UIView +- unit tests in XCode + +## Pseudocode + +``` +function alphabeta(node, depth, α, β, maximizingPlayer) is + if depth = 0 or node is a terminal node then + return the heuristic value of node + if maximizingPlayer then + value := −∞ + for each child of node do + value := max(value, alphabeta(child, depth − 1, α, β, FALSE)) + if value ≥ β then + break (* β cutoff *) + α := max(α, value) + return value + else + value := +∞ + for each child of node do + value := min(value, alphabeta(child, depth − 1, α, β, TRUE)) + if value ≤ α then + break (* α cutoff *) + β := min(β, value) + return value +``` + +## Demo + +

+ +## Sources +* Minimax algorithm: https://en.wikipedia.org/wiki/Minimax +* Alpha-beta prunning: https://en.wikipedia.org/wiki/Alpha–beta_pruning diff --git a/Minimax/Resources/demo.gif b/Minimax/Resources/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c1906660f0a4761e9013f94199e02e1c2e80443 GIT binary patch literal 742634 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

INfuuP|vgPil-!YQ3A(`8K)zZWV_TlhN@h{Dmpg z<|*@_DJYHwKEc=@%(UYQQ-9v1L(nV7=2y;RubjTUa%Gvef5+Ht$fuYFxp7BDi6uhq zFjDK=bnuqf2e!Qq{Wi^*uiHg>eYE-Yv9Z@6^?CdozxiYuKW=94yQU#>nHy>l!neSC zlV*|wG8=#8$^9d)s>9d0mB6U?b0?dhNuFibagaFdk17j>caF~1?PUo(?#lFm75+gp z_&zd4#RcWzOG=%qzl%ah^F7Z8v*McJ#2XFAXQqQ08*V_#B)Z2RNL^MRXb&2j#$MZ6 zJ(r5Yu)D*c3$9FgHyAqv1gZq?U3gO-v}=KJTcNC8Ot z;Vmn>UvS^?*3!jX3P&MMw5f)BctdfcZi1&TUf6y2c#*FVve9QI(Cz&WGPed4rF`v^ zK-ee33(SL~$l^FlT+SlVEf0B-{fHoMssgeMOI=AT&K`Q>9Frv(hF zcJ3aWhi3j|`t?(H+0!plsLz5g_bJpT_QTuvO`Tho00@Qpgfst=$IF(5$;XhQ{Yi+> zA|^s*{AM2SZ>UeS>L=Ujfj9yFcR-8(IDM{enHiw(TpJI)9TPjs^!{*(e;) zvnzEKa;=?5I-}$w$ch9wXC6bO^wT#ZE zbN;-;dWbWs^f>3OnO)zGt*r=|`jz7_+oCgpRW|$&gdAdwX1GyA%N9=*kyPidj} zG5mJmE5!ZcHsrNfrl=J9#AH2110}=i=CWYS{uW5f)*~8rLwU3b$Wr7MSO7sH27|?4 zBF3m9dU(?fGAoW{&f}pKSE3dQCC(IHGtK_?xg^iKs`?rRu@50q#dvJ*6*HAY7vBn1 z2hS1<^(P?`=NyefI?)G4@~!FlzN9J8XQ1vD3BeS*Ma4nF-H3GJ;f^v}XY(-;^giKkv|>}9 zd75lIJp_zx2J94$cDT?ZeY>S?6u_Zc3XrUfG_{VR+8hj`xT{pX&!}$=Z<7*q70N&B zJKga5L2)Jmv;(w=G)Vi8n*K#j?KI_SVOu19u&0Z)$o08*nDzwFTgH^;pDVedwXd3( zi_O2!*2V(Ru@0AwRKJKjE6D*(@D}xemCFV-eafciJ3Ix!M$-Z#+<t@B}jS?+Mpo;}A)X-cvn|`(Q1gurN^HdXcCQlw|}c?JbnB4z--<26Cm|@`vjT%o<(7S4huyO66mJx z0;qZ{QHn%ljd6#GX>dU-2cx(;+-YyW#4?8slA{G-9tcAXJ+|z@7zqOphMo0#=-R

|*z0&mw~g0X=o+bKuEL$X7ORxy{leK-xJ z?}{<(q~!6AY)_r>PIhB5^M^qh6|+NRct3Z_5+IC9xkIV?i!Yydtr}^u6oLP4EjQ=t zyDx;wrXPb%nOk$>^{&M@$Li!O#u4#G7pCZ-s4fhjrU^+WGxIb@B3mQjKc2_?@1;Hw zhKf5-+%d&l<$5dv!93o(H6S}zh7;@x zOdnP{->7hGn!44YWnXxvlV+PV&iP@ZeQj<_rMO~`%Y-wsp=+fw?2ydv*QTV#;gu`L z@5s1+(jql4tz3;`mi45QA+@o6tV*+xC3|r(61tQ>R%fTm`bZ@AZey00(^mmwY^@vO zIa+GOW#0O0A8>x46?3CvXJCK@O^ht$2sn91C`lLdiROpimeNv%MD)dQ(KB>?r75e;t7y7(V1sNHx zyx-mu$>Lk2iJ14y!L?Eriz|G+`=@|VngxYMa|E8nlp7J{5fh7K$#w7x{Q^Rt-T`#L zJIt|9V%njk#M|GFe_I#%_Qm(2(>W!Hi@^GQNhp6006^*YMKI#%B}SzLN=B*^1(=_= z`eZpJgop_;NM!;#6cto>*~qK9GbN_=4i`^kwRdLFs0ke(W97jRp&?pcd7+-8qSt!R zr);`%ysd4F&U^VhDbc7%$wIKk*GqZ{nUqdl>u*bg?BMoAFHWU)-4dNKjs@rBjPgJg zn}z1<`F&zQiVYjuk>%Qe;UJrI2o0Q0F9@?TW1vbN>R7NlU|POb$QDD-t-Oe#<>*ws zU!O3s%ss9O-)d)LT$D`FL{sf{I-F;?f&N(&73(Kzc-(MsJ0Z8JiMpp7hKav$G~X!% zMKI9hgU2zo&U@9JA9b3bJd=e2uENzv69yWJ@C&uqTA;C5U;?(-5v#sCZs4=sU2Wm4 znP<_ZJ56_=(7&T*qij!MML&Y9s1MnD#Oy#*XkLB}x3gEC3EFvJC{Eqz{PUAiQL4!p*@zm-{jE&RUl7V9oe-!^;hnQbjPjds5I#-TTizdnGqbbQ&c zMVAG%0_X*e7RdJ!)>do+D(mcJoYSkO!Np=V1sA=${K_*b%_PbvW zxi7<^`N->w@ng=@1tq&*Kdb287V)<3b#uh~qQ-9#i&vRX9Q%+iM?SXVw3Tjn<%Qd+ z!>g}LZXf^hzWbu=+R+Va^s^fP(ZE8`Bm$kPJM>6F+Sjdv8;iw!Um<#XaIrW#CZbr6 z`({V{b+O26!UdJ`VBmrS{R5YFOUHQZ&I)1VSZm{yOz~iuy_Dh@-i9vAiB$^K=x9i3 z$qfhR1xVWDw6CL+J|n{Fe(X8{of0H{*A?= z+U+U;qSo_Er}8xp(xHu!BNhr2N5xH=|GV>Kcce9lIIc9aYVJ*Lsg5FoPQ`5jW^ZKd&6Eb=+ z$Jd2~?}X6o;5SDaN_M2w@bX_c&><8PZL*cF@e~PjWxdC}EmKvOjuQ zblhGkRuKXiOenh64g>TWr9Sq<`h;2AGXBS};J`Rw5XV|IC3J3%&NIf$Gub?w@crXM z1h^lRrR)f)3Mf?pr7ECQ1(d3QQWa3D0{VYj0j)jGNu;@e#pVqke}D0M)0k{k+_U$0 z=p-@0rom^wjGFOWKeefV&iscI(EfzC=f8Y?jb&{djJI6A#J4_!w`v?deRsK7dwteA zz41YbPPYr#N@mC`~Yk_OnERTu0 zPyL)(z%@nBiLjfK{oMR(vAS>GeL9vejQ*Me-j!ceXi(WyK=+5F?f9;Ms^9y3H{#oe zJl3We@Z-bbv)`5}3aG=qwMRF>j}OzE=6$WcJbm`QwwYJLcG=2 zmwe>a9;@c1)AznkYm+|@rZ+E_Sgp^wkk>};HGizTxBf1I{AHZ=cI;}m)wiXy;gAqCQl3lL~KA;m!YF;mw6O z4KS@b_q%T+fk4Mm(X=Ro$^N)|B!MJp+DuJKHIyfQ4riIaB7mlYF*1 zNDNf_l4@U4?aLn$!%vZB|4-SM*AEDCRA=iRHV^R$RmOj~f~YOxTdo_gT!c3e_V}7cCR(kpatuCdkkQ75d z8gwZpUIA$$x1D#=wp1}reKcRs)U)E4;<8s=RzB7y_j{z-jc$Nk`R|GpXOB63v?Mdl zhGfU2f5B7_4v4otQ8@;sM;8RAv8_8{2-%r=BDt|L1md7zt0%g8bxep)D{tvg=A~`9 zl7A5v`Hx4Mo$h;3thG{Romy^JV*0S$`Co0I!SkAWkWQq+{A+adeASmCR6Sr;x&sW7+jdFG6uEcl*1Q$=GR+!qH|(Y z;)o`GO150*RpVt;Tj`5=3bKauif{y>TO+NRF5Q?{a+`oe&t9w>!DPVmUm_iUj|P7E zb94N5XGxxoDO?ttFeuUq1?I-@GBpUUitAI;}E*!}`K|e(U|Myk<)XQEHW>5N@ z!@|BWw0q-T#@&HpFh50Q{)Stl@|INIlFD2DSM!$cr`>T{kUmEK@tHVvrc&89k9Gkj z*~ivoJ2 zGn`6tBD8VJj26c2%V2Oh#s=UyilTxh7~BAN?&|=+zOxLos{_hiT__f}&x3Js=3ndv zeJ}g2KbQTe|2c2@)DGJ%+-|WwGw%E!PE|Jh>_0J8q576o-%^(9TT*??0^Y|xU{E~D z=sK8`{G#Wg;|P?q8VeWrT)^l!qn93GcTXuCk{mUl$6ktY$2?~5HvH2;@x6Wa;LX>6 z0BZYQaCv@HaJ8l!gjM_u?Gb;>YW%yvA}VW1Wi6?!<-eA-ymBU1u_eAm|Byc4I6zS6 z#h1uJ0RFpq;}<_Jruzc`$92Vvw69?-)_x)a&yjK3BT8)=ku;pZAgvlOejeTCFOUm# zD!&7gzdRYVn9`t?B#Tbad-G4m?>BX$U5W2d%g`rS`~ZupBPdAbmA}2RE8u^P@78*{ zm=-=zu;o)v_qMe^sjr{$WE2m&1~NvmGCo5UR%_zu7QCS>FmAGAZW^5z+=<%Nz_+I( zGrK7fE^Fk$_W9_ws?99`j=5)4c;eS|82~rWC7|nA{0){*XH|@Q<<@ z|MK>9x%dj`Wd`MTrf;^V|H&H(Dwj#+GO1kV|D4M_=R}5bOU|Pdtv*-rYc_|pXll{` zOC!cK{mZNe^V&G;u(8_WGh*$U?L2%Bx>Tn!SXk_(_~DCjGNVeVj4bUjyF9yvRr3?D z8tvSQQ<<7^6ATXAit)Rgm>DsCn#c2W3Ys<=rNH~%SdbNj9~+2-vz@2cP$ZHu>M-%bjCZUJpgY#|iHH{oYG zWqD^>#NX1OpGqdEG*7UE*;$*6OZKQ1d!%_2+R)7lopfgk)3A9jS*%@zvcfZxoS51J zlwH|0kJ}(+UM<99nSR`yg=jHV^`rg@Km0$hr&%Z#_FleS18wms0~WI7T)oda^t1u6 zRYg1Xj!4p=FI0i}=8(xV@FTnn1Viae8`EbG%1>QWic`*lm^l6$UH0$KeZ7CUo_-fM zZR77I=?Gi2>(M}e4PyKcsqPv-Amaet8TX3ss=JJRQR_KIIt@|N+DZy!+$>g4!Wtk# zU(HcecQ-1xN#!=F+~#k&O@Jv6p!=QbzCc8#Y^d(zsu%^%fjnCEo>rEl3(**+e1tK+ zjV*T}M$$Z=!J(%O-MA2|n3B)ri*M(B`WL6XYk%XES7~?V%}e|DWo(z5?&97xaDi)Y z0h0qBYTuS%$ki=*c7Cdl6TW9ppf!YGGXO8?+2U-TQ3o0_TMB^A7+f|peAk_ui@ z!AnzQ4`O^^hO}^L2t@@iso*6QyrhDcRPd4tUQ)qJDtJi+FR9=q6}+T^msIeQ3SRzy z4PIhTEw=Ghm(dbenM|QATtrn~1S>K73H)}{7CtZDT&5r#>}&=GmZ>4gx;OuxJ>%ui89Lh+$87b6p5 zdde$Abxce|FUBbM6=AA`Qd;B}DmA6*js=~syk#ey9W;VM@N<3<_RFG;GM_P)e_?Kc z9c??3k=H9}0AiL*G1slOKNn^#Wn_L9w*`QkvXX`5Sa5!s+XZ9o#11ed8D3==673N< zu?%3U@Y~_1O0UiJ_vMu<5(sqa44x`>4sNkqg+QP(!33yD+3K)MTiE#St`qP_4^4_5 z6vjvGV^({ztK>c@nK+I2!q7zF4cY8ydGPGsb+6FC0V8jlD1ckFln``peZ}&#pCQ75 zjouS$75X|g)Dd`4bgviTfXBNXB}djcFqC8>Ko{~Q01Jcotlrz7*a0e)Uj^{H)%m)( zwIUWHl~a<%@Tg01t4$hvPDYE+aiJxwXKG@qXn?lpP|uHEXA>j1O@2s~^FH~BlaBiP zMlxwIqx4$YridXL;YGW&iE{(1H)C71TljpGsTRo;QQwA~W7k9{sz-yTUg<8XW3 zwf*q+fI?|HH( zXT(U4ZP>N6K!lfqi_?JT5`!K1ahaaB^H6qnP07~40Gpdnhvg?Q^Fs_Y=qf^+Fac64 zCkvqUN1pX%*H*Fj?2C0lPTb9|@6>%4OmFL2^_-!hKk^+m=dA0boTZr!%7@+7-t{K#@y%)Y{)4^!#*G4AJK;_bBT^5<>yGAQs>~eekX3G1>Cu2LHtL;d zIr=8&6l(TBKbt+=wC$C{<S;x8CWmQR9u`~3?J#t^3RVu%=SBS*wUUU;n0)r-a# zcdt*g2zWKR3A%kdwq_+Vj-dgfV59rrkm-=6q31j$u=S$jX_zC{!~`80!5EUrxbQJj z4KdCPq0FE@Ri)3my{%nHp1}#9$!cYw)cIQ0E`b%OABPfJ-p=J6T7Z>uWfQ99 zwym)-Q%FtdV`+HS2W8}dLSoo&wb$6~;JJ3aOZ)4|(&1>1opW|hSC3`kmH8>o`xiV08MV!+V<3y)K8aAU8mKaPyNbybKmuQM$d*z?)%() zn_L^F9n>Hc6%lmv{WibATc5&i1~rpub%I;zByI(Vt*GfNCZil~g+#1}=^W?<8B4>1 zvK2ZX0)-ymI%uZ(NhfqWj;m=|NkLurkdci8g|Up+4SS+}HmK~-)Q;|pPY%DPFqZox zvE%U)&8v?Em9`zBsj%K)EH4y$*qdq|eRGkolamN*Y>s%IMf6sB-+hl6ZCx+1J@Sr^ z$*a>&p-M)PpW*k%ICuFt`5#|j)cZf|-HAWc{r*4x_lz0FKDIGgGWK0awy3cW*^=zb z*q0(nlD5HELRl&#)!0R{?_#o(UE$J3)}$h`wE3Z~&UIa%)49&M&bhAB_x#@f#N+mS zJ)iIQ<9_bk`dG)a^#|s3jvG}{jxX+EPsc@5$oGm<`{7}C)n&FA%O*VKu1Ylq|K7hb zmI=K?VNC~`&2wRSZ|IKAbD^RJ$6#-mLX!i-=DBdWH+(P55gDqe$%pET(9v{czEY_v zB;R-5h`7aAikbCAnm0M3$||?ch4wHfbhDziY(n2(!dPl%P&<1B6FcJ*5JfJMZnySX zzI~fO)h;M?LbTJ4c`*@2EhHU&tJ6_-F^NJ~NH$Tl%hhD@DzF|QB$s`w%hPu;S@1Dd zv02Hm=rRfRwA4k}MHK2EiQ#?aC#*iY*6rVa>H2c?wAz$tPvG0d8=pIc)s}DdoMm3R zNl8D0r4;K8mR%w-7>EF<+}<#grBu{~9O~?4HeLuu5UxnpWRUKU)gxvIUTD+R+F&d% zZZMXi5qbt4{a33?v!u^N=(`2LMI?wc#-kp_LCU77s4F=-yF5)|Mh1vWmsM!70L2|j zAV(GtS%hLC0D+JvM$WTq76a;L4-%uxJYh12EL(F23yQDYrqUI+84?>R?|+x?eqG$| zW$sYTtYE>}C*t@IVuSU}@`YjChi%pZ%@~7Q`P!5?ZWu57gl}VVw&Pa3M>%NK&qEhv zT1eNa4H-=?nA78>Aa`QJfRO^?75*z)ZCzRYTtID5+3}-ZS`o;+y_y+H-gvzu)MABS_j|BGD#%Cgh0D{Q<>-Wt# zFhQR(#5Ds6lD5gjr{r1y;3Bjkmv$4SJ^{f#_e9T(Gb8`@!}I1JexND|s*<28396Ey zDhaBRpep&_P$j)D$_6l9edaMy)qeKyUV!P9`IwtwBpG6a!Ss68uk<{%JA$%cdA%}4 z!HQILsT%6?zV4#IBgkrQW#!51k;e0UX$I$^tY&o)f zK5X~LF=R|-ld$1Jr1i(==$^_Jh3=zHN_WPoRhwWiP8!O zkRG)Zhfz5>zRy10*kMhEqKPpU5{DrZO;nw(At!1lgpJlZtUo{Jsjr>-^Hs^nKc-41 z5ojt2p?!c|3qc+N7lj7t#aV~m^PEhSV;yEaM@FiSAK^qZ%gHjyIR^2rGMQkV7AaBT zNJ>o%^1ffNESl+HzZ25}h2koOT0g}$xe!h!-Z#7?ETfI5uxop}BQyasP{CX+4 zqO|5H^iI#mZAIy=F&K?VF5Tjc_DEsY8#e95nfDW=ojOuT0D*f_^iF zsSU2}B#o%;k_n@30JkA9Og^yd#ZaNseLKC&ujU?A9((z;tES@3Gja$mk6~@)!g$*y zPP*LMs>K9Tnx{To+~g&YmIP_Z|1Daw-MU3e`XBev@D6aqvTyspeKh|zEt$^c;8vj| z=7y%+ul;N;g3BBrv)pm##4UxMjX&6Tf(D6H-m$)c3rF{>_;D)Lmz9^`0 zwe+pe+e;+6Oc5R34wJ7|n)zSc>MiiynlHJ_je$KHPY6APFTsh}c+zf^0s{buOpdZd zJX$x~Ul@8ZN`>Y%fPGQ(VTJP~bE(&7(i#eIe>~I|+@iq+Ou(KIV9J-FfcS(fh)jaW z0Z-9xiEv2Ema{dFzWTxW|S&4)E9>$*7?}agFK!OG&Xh4Dn-^WX1%>u@!@%F2VvECD6~i7np4j&p-H0m3HA|S>yKi?xhrMWZqvLkJzEc7f zigKYz^s*YATSDuB5@|{ilQ_CVZ{1LZ^F)QU^eEShiz-tp*~&xh-Tu{!*XN_NRi<@& z0!J2ad?~Aq|0~1z`{J*+pS{Dpr_STvhhJyrZ$`s!XXbxm*>Fi@w;%SG%Z9FNihI?8 zLI)^;5-ou98OCJ)yll92Ae(`UD+uAp8@OH=j9?Krlz(C+{a|J>6B= z-#`r@wzGHZSC_sR$jL|9{1im$c(Ac-xbcKN#In2e?<^a{?YlX>b*DSipQ#k3g`11P zkKpV-IMtjeJAyyH&bD;77Bm|{v+)Nu8$TZin*hF7eoJFDAB_Iv<+rQPE2Gx6sxZx@8R*Dbv|1GfaEet_VvFPp0K%Q{5+g+btDsh6yFu!U{@NU4^ zx2L|ob!{;}JVcGcaq3wRV$TxjDT1Ej&kKa;$fq|UDMc5zD^<36fAB&`5Xi4ehPpqz zAye)6IN!v6T#qvFc*#3OrR zCT4u=9+VdF>{5DNUvT!L;iW~TPmykC(G;sIZ`Ol4R-g4P36Y^3^Mdbp;~NjBk|~wv zgQ#p;q%gR9|2Pbt#>0Z8F<9~MHi7@Uo7cmaW&QV8D=rHY$_b&8@~*8E_Z(3z2t3b| zbOlqgW9;h<27*o$rH>*F3rU7k5&{hO(#s8qKC}gvAfcIiL|+ zcGOAjF-}|aUs}EXg%T~T(b3nlDr>9`ieHVHZ_n&+`S|DE^g#*{q!2+0@!zKqmmbOb zGi^?m1cd(Yy#57Q8{YH#>G@Gk`s1F_ zGUB$CY0BU@k(VF+l#N-Es%6vw&sdK!IjnL2FV{dQM{;~40uPRdIjUR>lcipW& zYi0yFLy$9UUSrD!Sb0It@DFf?HTj*-*EU|;>)&^`E;Il&`v2DIap^m&NB8=Y{W1#a zK3WoY0yteNp`MgQ%@BM2SQHWTz>fb{v`(ESR9K(hoMPAIxwBwvKqdj2%$nq?&v z?V6G9g)eHEd%>iz_8}cZrTe1}hv_Hs7Mcd=N9Yh+KPYa!mN&lR1PQ_uAVJ9VVjYur zJBh*4Q^V*v4Vj^K)~YvOy}#WxUjQTsL4pt@2tk4nBnUx*5E&ctQ>h}9B{q&l8zcxp zf)FGKL4pt@2tk4nBnUx*5F`jef)FGKL4pt@2tk7I-zNyE-)q;>aAMR+>H)|c$PHvL zzS{4Hs)&F1J3{o+AANGu}Qa8nxe`l&f_pWB5^Y48Cz;<4PK z;INW!I-L`q+JuqjM}=s4JRFSMDORaugE4j{~9u4i3Rbbh?7${Y$fZqr2viLq2o zK4LIq;yf_{!G=%*SQH@Ju-e!c<9%GoJ=I=J4MUB^VgwI{yH-n6-Ouc3=VgMgtfw*n z-pViUi9Eey5x1CKk zahC~$jn(*cJ-x#iWF3MpXbEb=ez<_4N$c{t|0ek49@^l;K>7W>Cr&+hzl0Jo57DPm zeMj0Ii#YUft5cNfRG|N(HSLf7Ps)U*?>;#vy!+T__>rm;&tr7QG|cdy8Wg8w6p+be+_A4b?N_xkll7+rIlc_FW4DZuM<%9)+*BuZ(BcpZ)Nrb?><_ zJBdi{>EX5T&oD(S6xB;uGiimeRbnYQ42|iD7|%4M8jV?RFr|Joe3v5H0@1XNf{ox2 z&zNaVH`+j}rNho^R;rhELfN1TS{_Rc>Ku_;+d6Q1CZ3fVMNR7Ambd}3gGVnATNFG{ma+NQuGVt~vxb_U@ zw%IA_n=p_vt?8!xu*%TCeBk;UqMOR3l2PE`Vl*E)8$lOubOuGd`Jq!7yCB+omU-gl zXF3ses@&dSh6xg-fruu%SYH^;L@L7t5pChzzDVe38mdbKry$mUF`>v*SnI{z&gVhg zSIC(=LOt{iqz|y5iCMcO+YG$)2CjFPW-AIt7#`~wNPS1BK9(MUphMe&pT zBO$bpAHVglta#{kG&IlVc?+t_9`;C0{$Q+u!H~#_;YMzn=T(8n0mw6hWJ^ddg#fAh zh6j_i+ULUXQt3Gie4|SF`KhP*tF(f1F0>e!qwV|L<~m-r;FqX)%1oj=h9HZpu(P%T zqRZ;tiXea@MqZ3eDSR3rbIVD@VrL}ip!*B=)7c>>v>-?eg0vt=3xc#DNDG3r zAV>>>v>-?eg0vt=3xc#DNDG3rAV>>>v>-?eg0vt=3xc%ZUqK6&nEUPtT*E85ZhKKs z-+jdrdvwxbu70{J!SwLh_Q3g`XLBg?*Bq3D8-3w>Wo+#t>pyq8-g|uZ)5>)Hxpj6) zN}10J*rFvorVd95VVhy2km?PxOC6>VRNOiPvj1<_XV#OCz4gNq%Y}q2BAxm+D>Q5rnl<@iX~Tj*K4!nN^}jFyvZA9 zz-$XW<6y7u{*(e%HD#?>g3LsQ-)cHGl&nx>84}6G>1!Ci&TzEbz;FgXcvq_vbF@uL*R8K9p zKVE$zgWo_@-&|}UVb4USbS;z>r4ARFc#y3MpEU~QFim54n4|g7L)}mB1{_0xm{VX6 zY%3(3gpdFL3mjxCe3);>2G~3iQzu*P3XVQ_8?P#EKEN>;l2n%OekRXqykoGqq3n+D zU2)rYjzf2!mlXtl60@gxIdl&?n1536CFMOQrU@>3kyDk8$jojA7xCf~tpIy9t5?z_LzsyNJ`r zlF#mhvVtHh z2(p6zX;!diWb9P5g-Bz=p~MX}FeuW3VoZ_fKl>t^6ec#C zlab&lh7$r=!T&*4&_ckT&I!djfzO^u%{(3L$T5ouN2ry>oYSX34M?}rs6C`NP}JbO z)BB8W$E3Q~#5m^&IZS1}zeq#J_99o*YS>Oz8CnNiLBu)rP(J8Fgv&5}WDIkdY(f#8 zBYwf8L!^hT9@iq9yb$fKpUyFa%cYzM{gZU8;!_BtcQMYg{64w@^EK(Ry zPLDHv509NcAd-H(LB&ua8bV_V+j+IQXruIIjM`m(`s$$EMRd{CF7Lp_Yom18imkfc zzR8OzGy2~LSx$ey-1w0Cm5A!f5l|K?T=@ooqBsc8>RGo^N zLV`}OJpWOJ&v-`{g3kdGPCvCtuM|A15C#O06a=+!TGw?kyUxm@@wmhES*1P=P$=zQ zokVR(f)JAm>1yP!#Xd?56X2!=R@8)i0gb-A^%_&g+G97-4F$!MAZo z@TxZr@4kQFJXmt*nKujL3dj{Qk=9*iZ^M)EdDOIP)FSz{%WN$eIQ8($!Y0(AxuQ0q zyt(4eKr{6cI$H~P=@DOE@iLGr{8<~gUGe(;%feQv4|AnPbyPsigF7GePriEnD{Vly z;G@?Ei8mh?d)<}{mL8ZNxvM^4&!f6y#Qx5{mA+@tvr8S(M?SC3WEXsXAM>W+?7~z; z!IOt?Sn2^N?SpmOkIx=v{;L0Q?h+4_eU*7Zdj9w#(;&sc#87Hz3=3+5UWp5iq7R%8 z+31AzQ5M_u22heAuURhlM>zfi$HE`!OD=&dHpF|;oB<#5`S6vFsG13vpnxD6bFL6{1F=U!JE*{!!JYXIR!jQ&8n+YfQZg)FP`;x5 zUkT)Me{~=$zq{34!oH2v5hrK73-i592Gv4PEdOKfq;?#QA(@Y@J$CBk<^9}V|NM|l{4Zp(@r7K| zY^$U*p+UJ^M?*}13n+Y}xxNm|pi{WrLrnM8`2CwavikSf6!k_j1hMgRZwG z6Kwon2)YVI6!uctCwK^H3k6^|wio51Ow!&hqS-qmmxQOU2Uz*xZk+D7P@~~sm1{_5 z^^sG9`M$g59w{0<8k-)a9cYOTVU@d@k>r~DA}i&~_F~qWIxWF-_Et`EYZ#kZ#%%6k zSirhtujrMu%b-*E|Cm!KeYPop1QY%}n#;Vc0aZO8D*auW>w9J4|Ht-***ue2rP791 zIig(ToFwEEwcl4lS&KF%*%4f8O;^#yfX?(E*(p5V;1m~hol7@F`L|`^-+~Y{3PGbV zge@;&1ps0M{K9eRToVXgLMa3*RwZ=k0TsMRT8#!!oL5KiHcP_+&?x+QYw%w-3U6KG z(N8F%ML4#jI`Eiji6n6+VmQ|*4nrjgzi6RI!Sw+>mi-t)(@js|AojpiQIm?nN3oH6 zE@CXBA42eO4`I&1gfXlOyIiycuuSI=qe$V&C>L0v-@fQH*6hCpVcEnMb7)PM{+q3V zeD%VAXpMW_mDZZ20A>cn4a=C;h6o2yiji zqaF6|vy)o%vt$$7J6)9*ul7b~$z|(yd0H(d4|it$i(3P?KXF2p3)oN&jdt~G-2|1x zc2=&*+Uj>NE$RIl4ELi~-i$V$T5sa7OZNlB13I0%d>X=n_jYhL?T`JO5w%05120v- z*M8;AT5D`zEVcWnweq*E>20~^wK^AEusayjdIZ%!Ogm7RE^PEB9F=_04 zb-vk+2$j;D?Vxf9Du;inayac4P2KSVy}7ad1~u?Pp0!-Ma(sJ2g9^w&R7_i|IAo8X5*b6A&}ty{Jcn3&hto#@)<|V zQy_E*LWe&zbok*PS~l!9l&B-=bmnwUQRP>gB*==_EC^{1&O`$VZ5bs8fOO8o?}DTa zgkTx41hPfhY;{;c008&~zkez~_)p6J=DhVqz*!wKD*h}SQlQM+V3hz??^N3%>` zv2eZRax5&#uPp%&T_I5IJ|o=^W6EHgO0K+$hXSI7qQVvqbSB2=A zWwIM}uxlv{FlEi1NsHe8juNeFl7>U?n80hLXYL}kOC;$%Xw1CsxxDcnm%iMpTfjPj z07$G&dT3ty^|zEjU#RCH9akv10VV;E^ALis$WYn?(Y=S%Y$lQYv^-7tcm(+=hX{O! z0hVlN$Hpp&6GSE-BJKr{p{0ELS0BPWGIs^J^EZ1CnIsO9Tyan0?~CM!H#@wk!-2@* z$G4q3y-qLwsL0{F@8n@by;I7C$nv9b36(J#V`GM>(yJR!Wk{qcK-R-YcS#t=MFn?4 z@gC6^q#XCh&NlCtFUfhvy%KS2$J>P%0$s+Bn1|XPW)o^|9BJE--$_DHIqavwG$_b1 zl0Rl#-4T#;bDdo^@IAw1dUMasm8kU{w*fNk($D<-h&^bmrnY;`t&u@~ z9%CQEwVcIqhQoV!EJC0zjN+8w*U9kbB>ee;qYZssv2nqn6rG6G{F;OUX6vgZUoSWs z$(ROp9%E2B1eL?TPC0z>oh1CK9CC1?LKagbmxWMO99sUh5uDZ;eD-%R<6ak!(waXu z{0}WIb#yySlHXp=(a#h!Z|^XxetV@bI#a?;_rBH0+l0!_OsNy?_wC-lO(fH0Nr&rp zI&v%~wf&Qe%NLJ5Ri67b%Kq|xy)g!Yq#;Ne=7FT)dWNA|Hgzc#;GyWJ!wJlfQu@$d zPdTE$+szLo4MEZnBn?5*5F`yj(hy&-hC6_Ko9+!1(t)HQNE(8qAxIj6q#;Nef}|lx z8iJ%DNE(8qAxIj6q~Sk98g}aCst2u7ka>XR7ZkkKZJ4&C*h&#i4K{NwI&@IO+EfGE z_ejGE6`~92Of;;2(=}|@70S*qk#LA4lEb8-HROt^T-dRiCL8D>!Va`B+Rb*Y2Sc+c4?1qHOnIt1_BMpKd zFX%7=&`YHUjA~^2YHriz(oi4*e9|%UdtJ&NUhS}oqxcCK%uLu}+q}!%_QYhFxjk)v zMtHF2r!ott?DUx53WrVw&Hj4SP<$^5S`1fsJmac0W5!JFh&MVq1{UnvikU*{T3)&z`J1V^O#SlEshi>zO`hOu3h z&X>-p^AaqytCjNXw2jAtO;^Tj%5G)c=-XLs$NR~ztQ4ARtnXY|v7tS|G z>fJ4TMm+xIODtdhKDWEahqg#Vx9q$AkB%@7`#wHV!0!F@+!6B=qv1Vf0ncOB9|lZp zl7`ba!}kQf$Tp8lS;=YrLK>cWQ%|+`^a5{}&*{bM{NW^*CFS}vkGr?e1g`ZK%U9b+^N@h!OAqM80vvrcR?}E<-mlsJoFBFLKBk77|G)vYWVm4 z3H_Hd_M9ByBtFUF(4uLL6*t8TV@w# zQ9~IerMEi(KoJ<&ZUPjaJ#^dU70$A27Fm|XmhUE*XFX0cR3@L1?|0>p?N|U@3_C`1 z7CvVW=d@^G7%U9cx{XitK`y(8LTD`rFD#hIg!V`_Ac|Vtg@^N}E^1iuP02PlUQVmN zcvLBjDSzPbL8}MF{+L_4Ub$PJ8X2k{EGf5@^g5FF=y6ARd2Q&c!)Iz9jV+s%-8;xP z%n+X&oDo^2UDde#wQ+3MyF3a6S!$q;hOiyu;P-|#YMAD2xN3%$Bb6xjG(fVOM`hwg zM0Z#Nys^{eLlST3shQ0xV&y~xH7Pty)w)BidZ2{7Wq1@lK!z0UhsZ0AQ2?){9fDwK zZVt#c!iBfb)SD{Ya6TigbiPbN7__8(5P-NG<^Wti!MOcSl&^t)QtCsOnw{GFu)nAk z`1SPmzUsdT2zj12GiI5NPi1_dek5 zm+MqM*?uXGt)e4PA`Uu-h^JzUAZtjg zQ}1LJx~nB*6Hz+K8ce6bxEHoR6Up7s$SXx-iHm14cP?svB4--G2vm+j3Cy-lGCJH! zERwu%g~}tOaZ2VRI{Y!3veHN)y!*WnG)`7eG&`eMPrSe;E}jS3K)-KCJ#2ta67imo zB^Zf@vKeTr9mN&2#rr}L7!f)mhfj==2BT{Hx-N0pF~?Yw zC)7`CuDqBG4aEXuuvdJOr3bj)%p39PFp8Oq8X0LFSC++aA%g30p*fO!4`h}NR&lwD z2!%<(@bRIjk`6P6@UEy(2)=!WtZ?3?+_ESuE*nb&9NI}Q^**PMZ+psQ`J)^&w7V)< zCAi=ESkLwIs%VIXk81Ep8iKgLZ{zwG85rI6fbP{~#j~rhcR2fVR6@h)`+^}P8Q}E7 z6_S%l6$`=Almb5(yrTsToY+PK5FEK^V8A0;p(^L|5~>dSByUrY=z*}qS6zaqc2!M9 z2^L;{NL+@JfotbJ|D>ACTa0#3f918}o|))c?U8*mOxg2Rc2@PeXI?>z@}c~Ssp>-o z^_0607qtr294_h6-tAR3ct)cQ0s z>ZmLfQJK~rZRJ^6Vrmm^&7V@Mu}o5yonm>_)uy! zoYmao)Lnm)_R(hlCnqD}DBBZMpR>9{gr5pI>F?P7+A%`6ZY?Gd-InN_l6{tcCa?7@ zKcQs0?(6lhRk;52Vvo+=Gw+7n>d&k^3*UQoZ92RD?1wk4d(VB53^%WTa78S1^ZKWW zhq6^-Ddl^&u75v(WH`=XAg#k9K)iTdvyJ-|u2r?WC?-H9V*6rStJ?dbSb{(VhC;VZ zi=#L$f-8cLrM*p8xi~%+MiAiFZ8xwgzLeDYlu}bk&m=MvCb&AmeNah1nKkhH}NrqL~ zB?YY1fT$=LBIFDBMjqgslylSURqFOFzLfG>Us!YSWVe6+;`Qa|X^p9?b>dhDUQ>el zUO0zwFv9~9Tx&*+EzNEv)#}nLX#-J%W1a)opPTMb{v>J?GCL3lEz40?72EGJa^Ny5 zW;aTSp_5P?zWZ?mW_*@REl)N%_8E`37CCNFNev90o;*mi4REEDB^JtRWpEXVsjJJg zO#!3yUhw~G6T0`p;vH!Wxy4r5I_)#e%E2ffeHHLoTnKWA#R&O94V>=04_os(r-6W^3!Ob zPrI;J0rM|@E8aYL92N{^!-f=~K_kq9jmp{=3_3AkI}r z(d_&cr^t9Whr1M=s7pR@v6i`&)7zZpL*KBE!PBDaggCK5A}Rru37&yA5;Hv+Gzd#qxH|LJ@ubgde%RG*syHS1gIhbWlH&{FUS%@DIxSM7!jY7k z803AqU@0`y!G0&E1q!)U3blTUZA-zNOvo?aJpGkTfQnyuD~l3O)fxO(-b&mo^Ii%q zm7>5`-l|TpG8U_e@SEJ?t?aKw1B!*GVkv-)A>0(VT2TaggP=E)w>~lxa9J%bE4Ps zPwwK9ngA)|)v}H@Kt7~7AhP&B=nb~rWB9^bA#`vXywz{YQh5hBV%fKi%!esg`=?z`za+<9B54s zQ^hrH(-KpJM41Xu#5YoBh)cJ(8wS3;M54-Ps$z>85TG_L{di<%EBoF|z}y*`uHP=Nd6p}yc24K82;_KW~iz6=G#CtNj|0EuBt z2(7jSk;nj*)>PA=V}dbjVvAr*>?o16Q~A7Rj*byOxi&J$+|Jn!h__T~MDKtWJ`DsO z`!q5rUfh6As$TUrYN}+kI>lhO3IqQJotSxS6$WlWCobkeRm(0qCea>KSKYI2O(h>L ze=&81Xa_r=vPIoLjSIImhC@3n;L2?~x4t0k323*QF=RlxPf{>A)cgN0|rNAhZ;J*YdY zp0{c0R>yBBF|18oHuqkeOme%kHkDG65nXpZoMA{HE%E1m|Nlu9(A79pW2&c$^i3DZi)CjCf!?qU0L|s^F^gbqyxY+0n0b$*CJ*&6zNu3ju=+V6fe`;(_ zFGfSOj$XuVyAuoRAwr@y5>)j(SM%L~WkYCc16z7hs5rA_$@gMYdFjt#S~pa{ErCk! zVXoD?T#K$;vx<&~cLLw#;py`%TJ;8tli%HTH^{RZ>KH7qewXiaAznZAqi@4$OJRY>K#6z!gP+&8#?WA zU|vh2*R6B03CdO-5h@w^lm22Q6m_dG^kHt*O)uYnn%fTjujTl`hBxhx zsPWra_rlJHEj3V$#Ivd+?k7CzOO}k&C7<1%WD31ClU(Bw?sk-xV8en&FyrCd95nZ_ z`O(HxJGUQ_*2yntZM{eLa)ypK4v^Lo!1uE6Yc$rrwm-kYL{6)jqo+c+MOPks588bJ z)ej40#zNo>ta@)d>voNdB4TrgG+E?MDZBSzsU(+rHQ9f?m`KcyzP;c4)t~??x6`{p zLyv}EEhe(_{p|-tN|qn(yhpY2*l);dszSE9cHPR+Vp3f}FYpVth^FT@vqy&lV-m7B~!gp4mw|r_`9go$qi&cm> z_pTbdY=3rDGFjo%zUlBq==-tO=$}^&|7A*$%BDpM^LwVM)A*JHDE?hj_21mky7FSU zm@+momy1+-a0xjXT9x<0sGQ;9j~{bxSdxN|H2?qw^{wsJWGMQK^F*MdL(~P`_`OlJ z&Vi#DKf;Dq@_+?kj)0I!jqsAQEaG;Zl`@*;lx$Xt4v-*t>cyRho_1DAh6U5? zMw$*+mA)9rx#GB*QeF0PsL<*D4TGBUSC1->y?okLQ}N~*9TNr5)77TP?Un_skJW0G z981f;gc#@^XOx?2;YOQan9oaEj4 zpj*P{jpqt_{g;BM&z748CqKOC9GqH84M z*uqigPLf8{_Uo)-8{v2$&#vn?;iw>YyXM4mHsQ0UGfn2h-o!M-ROlZ-UVfW&1h0D2 z@GgH4r~vK<$b589jxvkGnbx6X5qMXF7H&(W&RM20xdu#(0yh|Hk?OiiP10~$nI?R! zIZ%i+q2a(;n;?d_zdV#?Qmv^*aR_>-Hy*P;HX~OslQ3Nl%@RhXs6u=oR|L34HJK#u ziN{k%7w-cVz#m!xod1W`i$&*i6UPO4$regf2|CoT7R_m0*??)mI2}?{(6%;)vfW3A zahMNi0iBLN^b=cH&Q@!?Z*}U`zkEVO?vnob11Q5M+v4&Dzl0#_WoRe^n$ibRdi&8< z2-YBBjZh}06w+1*60TSQg)5^^%Y(Ki#08Be04Y%F0}Y0>CT&cJD(o6+q1*`ODgEk= z2~kfbK>N2L_;o@ghYZx3_=Gz?2cma!^VL>8lfRR)@8;7!tne&rXi#R;?kfUwqm4%E z!UufdApHl@e?;~@OQT^Yy7oN}ooxshs!(}aCcE*x-n!%~9j`guU8)p!O6t8HEvAq> zBN%+~{p{Z^`Hta+A6``+66Ls2wetGI8?xI&yZL)#z9Y00%mqI<{WtcV5Dcidw73vi zv004>0i+y@9Z$7c;JjhmhT2-beE@}PRUTRRu|jaCObH*O`~b4^w|DQq zVD$R~pM7R=0VEtiQg5i=9Q`^i_=urOf_^iFsSOh?o2fUK@R}On3^@BG_4HHI{?F*Q znR+K0Np&H#M|3ksFElknxOnUWStX`=)AtSOjXv;;Y^n9E?!LQwT=l7H*t+N{G#q69 zbac~eVK`18!{lXwgy1ZhmN%BQkySdAq?RareqOM!H&PA?53kcyOJMa=gaJmH`%D-e zAR{aQyS{WnrI5jBdd0PJtA6xc%c&~_nR}d6I_0d+c+CP$bp(J%_G_IhX?tWr2b5?H zP;k%(Gtp99i@cdmDXtC4*!j*fmV#G~)bHNEo#P&YMU!+CWd8m-=I?iwio_JjmW1Xf z6ZhFle6-k4uteEsK+T+L>385Wqpb-IZ1MZXy`p6zO?~!XEI$vI@C|K!H1qu8naf?= zC6}&aIo`%b{Fv`z!&$TO)NIb`ZIEBwoHsrO0{K6X{{#6yCy@VpzBgplf!CV_$FYY! zzCTnmgzCJ*USOUlQZXOo|3Ll^DS4-lRTdxc!{`C0NNbR0=eX$4o8VUY$?jQ;MZe6@m=Mo7ta(%Ud{v3zqX51d6y1IVQUJ zliFv-9Z5>e+u8^ilQ`HFHOl@B%Omv{Oo9Opxg5Z!M{wD4%~vaDh>6;fY~(kcdC>O# zjmtiv#QDq$`+eoN>OE#vg{;;nFpt!xqB{mB{M>~bs)MyxlXxN(Yl)F|{?*jOBcJ9Y`#E>klZBqlP zNbw5d;0)V^k7;s6B3(2tA_*?@P&Vaj4h)GVX_lQ0GJ^dM$P129-l^&lI$V0^P4?3* zV*1Xj?boKcS-Hny)FaZ|ubmObM~89jixTa7&fc8EEa>MD?WXC(@vu@`zP#_k5uy{< zq@s@UVBf_PO-|e2RqE_n?u$7GbH>1xaO$Z3*l|m9iS$Y4J0-}qAi_$);!TyAbCKsvWRr~Cg z`xEP7uF|1O`i`i9q*hH=*(+80uJQv{dx)-bnMwwpW&_DX>rJlmWmN{={sY&Z!Q2#^ zl?;6o22!Rq-IO0z8TywGTz^A!Q<+pU3LG4`vC`zW=UtW2S=R%wb=Dv?fTK5<&XfeG z&g^B;GY&?Vk`QNd)cHGlgA_|sk#{%wzx_cLrD^C-IocW>`+VuN?$-{pDQ4D|Oii&FrjfZZt^WWw`KWp^3>vCKS;`9SlU z!Gm{Bf6B989ErV4gDMR9G|rX-go;ZK7F`IP`{*RdY1v^oSR8BHpf;S&Mk#@Z_-FwX z>a^y7#8iITt2sAoVPsEvIVS(z+#v^X>mg=XIez@%VXwSLL5~y4i=KFSow{#5$gEJ& zASvY=L;HA4Y^dU%i??rjjm_gdLs7?ex8>2i6??@o$#AMtL(M9@kO4!kwL2sZ1QKA6 z-VI0`7jNTPjzz_CX8;Qj;Ovt_tmjjm>kdPR*y@^RB})ndxcMjQ{UlZ-y?_bj$wV(p zTA++sQ9>R7sAjd{!=uEF#$=5MI5Q$UR1L!!d2!bLYC<1~aASeQYA|NONf+8R&0)iqSC<1~a zASeQYA|NONf+8R&0)iqSC<1~aASeQYBH;gP~CdOy9Z5xDp&c9#Pq#fnnOl_^YNlmjI^e7mjk<8#17DwM>49eKgU zi%}ABz#zhyQ0j^icBy@@Up=X(nq~al$-wPAa`UGB`q|G$TQnd-p!Ze&X9i7V&V~&r ztX3(2j3K?mnDnU8?wG(OeMCXru4)0jNR429&YVgjhDAn;%{+QW1I6<*5XgR{Nk-8( ztUXRMbQK`bN&yivTOy!xKXb58$U3EoH)c6LqqyT~=Ng^Ph7u^!5P~k0)t6}%DAC{9 zlM+!bAi4(O-7F;TzV)Eim^QesjfjDTVYM#pcjt;=QKAwo?Twc}kFH-1HIXgduj7_B za8H4ak3f<}dII%23X^{6xE&MByyfWr(gO#KF0`dso3S1drtO*#)H;JToCsK z-bfp#nK1U7irR!rE)EE^=lEa{@1dx)av?!^E05jBNU2F^-=mvopr_T53lFa7p(qK0 z{Eqd5ZQ8N>PBWSFUo#2^SS$QDIN_hjjX4_O5|U?0l)ps78=68>qTAol{HgHJ1yR2?h zp}L~uF?9FDv#o>RbguWU<6$~`PEIDe)va}-{PqOC$UgCjX|~`^0nJ>+R}oOhde49h z%BexezGSfn>WXR{2;VF1;(b+1!`_BT?PQUe<)B2>Iv2TR%D zB1mJSOCczd0B2}Iv!!5GBGsbl{Cn5MRnZYU;>XmO_25K7%~VtU1a(w-Z|Dx91D%Va z2FGA;m_m~S!|_Uu?aRI4dtr{qP(@8XR9}RSrX%x}N=+g8zVk*zN7hV5EitpcNb@E~ zR9U5#lz(58JbMKUCvpu=~p{Flov6*>!-8iN_4xt ztS(`OYqR7V+q;ei9>a`&%u*cC?LMB&0?epnE04E#pR7I*&Pm=l2#O{!Unbq?g1O6T zNgFc>5I01?HZ^*^-cW|pRD^1TI!j0IdF9eHq+o<5zh2)3tI~8dcZBxNj=s3S(hLlo zfYaCz0h3EJMV|2fR3|G4WMlwTNo^3n$OGp$4uVVz9)@2Jf=Fslqpt@+MqM%H0w6Th z7(#QPdG=sg^1(aa5A$r{dFHp0k-52U5Ck3=0es9TB}Vap2ml~Q&EOBp?i_&=Y+ptq z?p)EP+H)`s+sVypEf zmLb$eOm9#S6zEP!HRmIki0{H9R9flvQ>D~cQ)Ag?JupXfla96eQUHE{syP~gxD`dU z%#guoPTTu1B{)sPncWz#oD{{}00WR(wMT!_qY#kBoN2}}wq`~pevV3H2M83%ZR*7E z-YlLJq?D0up%oOmReFQiIOj=hp7cP85R?c(i4c?sL5UEQ2tkSP2ayP=fVF_Q6RbfL zH?UaJ!>O3lg72n%3KVE>%dDJQgwP;TOrFeNtmrOIW!xxG(s?ViW6yG2DU+Jgvq!e` zOc2BQV9t-D2&2jd_U?HP8H_c3Ol6a>;XL5RhPs!_Yd*d5 ziK%(K!;Kb0fgL{9nkX&;adv3p>p$6=DB~DJV>>+15cGy!!g&8m6BXUa#hBU&VWYJU z`;>`a!ks?bzF>svK|EU+;p#Vx&@@>3 zXN*w(3r5Hq0%C*-rZi7|xVXtn(}g|X!@65|um>JM{n*P)&DR_sE zNIsBuMq>?_FiKtv4*#@%u1|-Dz_1pM3PSL$Gz9Os4UlO8q5Z~4HNe;*7)?p_zz}=T zSWRs=lY1kB{QRhWn1~P+TaeI=q~}r6ufr(L$_%=XUr?ON8NaBqyrF7gDMcq@HBlZD z+6>zRCgSyfscH$Dt*;*2Qne-%jgm19>O2GwArK=3F~V{6A?9Z4c>+S81Z5wVjF*Yk zgPkVj(g@w7v6>HVw{DS={_kOgN!m3KY@nZJw}=f>k%~|&+l~2jUu>U_n$R?R35moT zJ|5`|A;m^oG#4A@yc;E z)FBU*itF+uk#qF~RZcDVcW5y!m{T3t1+j8BkhV8xvw0Mk&r{JE$Hsqs>}}^c?wNiR z@F1>Ff>}wUt@eN>w8g)>@AP9<052n>4_KSx)K25%ntKi0baMNeRY|`4U@MyUpy#hH z_rYejoRyrs{(g%C;teelKRq^~;pZBj*0IgY6?fYo02+jtCZQLF5ur7_%!zGHLdr#a z9ivZKvT@B~Rtu39ooT3wwq~iog(y5-I=b~|y45LTLlE3my>P)NI-P6!KigcWM`@RP zg-=;q%|wRIA`-y{BsEExy5EP~gR-iWgvtc2ZMTRHPHf`pm9T+CJHPiu6&a`Pd=k>> zVYQe%+?gd`(ca}9_)ptaCx4xmOC*FrjyiisZ`hw=5L#hR#Rc8s)TKB;@r%78C<$JE zl3Ms$+g5cQYE)MXN`jyy2ugxKq$JoM@vzDz$^=4-ob6XDLTjnHuHOID31yoR=Y1b} za)W;fzRDQc%$lm(<@txwIN+~L<6Y$i(h^try>Xt{FQf4{*#N`?%Z}iWud^-Ptp)Kw z8qNauH4Qcp4-8p-9?f|tU_59MTGdyrzkO9Qf$FvYRLY6hYty9gx;ZHt27Kbo($x^9 z+1rcd0F<`$#{1dN3*sB4-qUwJysq6W_4XNH_&DEW8uQHP?fdsD zZ`Rj89|)TOaAYXQ*F{1bnNs;bg$Mplz3s+m++1EIDU}n|Y7xfHJ`riL(P^8GP7gjD zM`In`z-DVYe%gDC#!kcuT~Y{_nV8|RwTX_QPKK`ox^3z|ZoTcu;*HhL>^&!s(MZV7 z9pm>PyM2wvtsD5?n^h4kVm57ssg2=Ce!Uc2QCf2pdZ*{(wxaab7>q_Fmu|6h0}H2q zu1$M!=KVxzr;Zfek}QL8W&lqHFu@_T?A|oodZjsi>9|W`T4HL!pcw%4R5@1@X}u)^+L%70Q5u%TjIJ36ZdW#FCX)~_raYYb>l z+pGcCtBl~^cVh#7!QDFo!OiqKXu#_eHsBY73`$?ff zhH9;93E6Q#Qm8bSZo8hnp3(6Kwcl{1wvrdRA)xGeojqWvHqYCe$Wz(lx|tIijw`#bt(=g|+LuQ$-_f3fEqMmSC%-g1%kP zZ$)aU)lsK68XFMnu}=oiqZPKldwwyyYv07pS@n}66*f1@Ws|=Ql~UEGYnwm}+M2Gv)S{vs!{5lxR8+-JrT90R3gC{C?*C z9*>|V$dIGj7-I8kfr4>mp4oDgX>0V;`dUt{VkO__m>}%9=;(=>R}}&Dz`VyxJl&WR z=Y>5QmFfX-iy=;isROyMg1OI3zY0MHqsBsol3d2Fpt5tv!X(S5?GK!#^atK{FrMItP_b=PI*VYgHuj5 zC)q+i;HmapME63OGub9nE3eu@0I?!5Q7bz-Q`}|m$-JqX7glGcZs93YovHnuN}+%m zJbyYpf_H@yp=+A1gV;H4tC^7{PiT=$(d%!>y5YJC0MY1#$GU~^aTq{=H|iny>9-as zfu0~&&=veY>I$y>ejI+(tP-1j#BNcN?tY34Ej1#-KCmQk!aj}XNM?GteIUIgAvnw` z(^DbCgF@6cHcb4Xj6zwppc~3rc<<~&G@dT=XN*JXV;19BXU_B;UsbK|w~gPE@ZUEW zg4W=dB>d&vtOa>j@x!am?IaW;J>x7HkH=|=O(dv)dB%y$6ONMvJSLKCIcMQ)*4OiVB!LI0rm5Sw@VmNiwpNb+2FA8vaY!8d=V!0;;Gtu?xVs!Z~7B+BG9C`RJ z=jN;wr+hIT5x3cym_yL@ncRBe{0X6O59S62^O#m^Ns6p3Na*d-)iaY9nXzo*N3qhR?=J-Ok9g}#qosdNzj_Zv&yU3V{#mN74Rl&Y=xPR>3%uW$6>tv%zV z(sA_O&(DG@8i^m@R=ofGY5ruG=Z4l#V-2cYA17IZBjYPQ8hp0Pw1U%E^~ET8 z$G7*JUk=Ow>1PE&lL4?TfDAT_EF#qTbHRAO-6!&iNBrIvCbK0TCB-1-`${k*;oBCb zG-bqkXx-O^fiTz!WMRJyLN2m(MU zv65ESxV%A7h&hfl_p&zDkOr|RC&!gO(-B&t?lNErIn6k%Czp0j%)n+yQ%ng&_OY= z=}#c~mX5vmtGx4ruPZC+p#2a49mb{-xl#pcgP=ADYJ+s3HW){V_RUfEK>CS45jrw= zM@Q}>igm;A7(ex)P*58LwLwrD1hqj>8w9mM=1WIKnVdotp=j(Fs11VJAgB$3+90S6 zg4!Uc4T9Prs11VJAgB%gL)zdDcTD{{Igt-oogwEx*oK#=UYM!Z@@1_*rRW z4djpa;S_ZrdQ#rEljPnu25oj3tInMhYCSPcjUy~G^^P$Giag!5WukdrRy#%Du~0M5 z0rcP9T zCXHa}Nue<0Cz25z?l-C9h$Q#d(PS~B+@Zs2my@NSM-6f5CP4BhRxRu&jzo7!c?&MPb!rmbT3cj`2(n%aJ>!+&`T~ z=U_)|8kn2r!{M&z5cz9fFw&UUeH8VD7vv`Kf(gzKBd^;b4K%UJsce;vj80O8605T3i;6K^o-MGlWI7G--+ZI_FR zZn%$zACy)++0q_rStEQ!>>XTh$DeOn*-2ft{8wg5$C3Q+;wZYXTQvo0sM#qBlV-F;d)1%bL^1J<6#tD>$C=Cwro?wRYG=@l& zmS}!Y7|nP(dk0Eqw|H+9WHf`9UQACrzc=n)tohEMncDU-Kb}M)NgF(7WLUJH6%m-D zD%EU!v9&MlU1=^xI20G4*Pq2%mZ!rLY8v0#pQl`wk7Elp%g`IRYh8BRiUMy@(mGIl zuI!HOiHxfk6omZ|B!VyHnK})6@I*^u0Z-cTLp*VoH6sHB-g6SRTls^*^QVjagzq2= zF%&49wBqQ~Zkvw$dk(Z%B;8Ane9OX6&wCebOGXgfTlv#l;$Y5DmmHTsR;7%FQshA8; zL>>*v7z|X34iZ~r!fgWssOYK9X|H0X>jP;En?#rZY`+m5u>LNs>2!;GB%^m}b*^Re zacbDFyGj4H5d^tGkQ)TKL692+xj~Q{1i3+w8w9yQkQ)TKL692+xj~Q{1i3+w8w9yQ zkQ)TKL692+xj~Q{1i3+w8?62B;s#Z%k5#^Z{Qd;ol9DC#!piRbBw8>f{6yBu6dxTs z4!S6Oas30MTawwOs}!?qyNOkm_Ur}SL7!oj#7b0*A0s?`1DX5Kp2@+VV_A=paxC1@ zwtFkUv}cq`6U7!E*&QgVVMk+L`M-)AoU}DS8?XumrZj0Z%S7t7A7v=H+N=^P8{b0W z21`=Aw}e9FGPb$Fl50cUp$aA2++fM|Q7B%qVVfH)xiOvjigH}Z_*_^PRM>Y)W<|+> zd3isSdSPlGGYbyCUP9PZ$;B|Lb^CFWxWS9LYSi`JLEGHmgIo)K)VA`Lbgg9?E^GiwW6#JH#~3oa?*EvXY}kKdT-r z-Y9{w<2S>r?a$&g&o>&#H{a$4!_0F;8uMlk01yOT0SHVaqg6xzGyni4n3J8nc-)!{ z7_1NoEN~KRJ~XE{_@KV5@U&{^Ve+=Yy7jUme20V`>+zu`0gIg^Zm^uh4GvYQedPuz zo?F$FcdM|QFg(HE3)us|f~0ywq*fqWUi)kdE29xPY()bMT?jfrvjcFVlnorR*DTjW!(@6O>H9p5SME0Dy#O_x&Jmejb&r{`tc|e=3Sbn_2re4s zFP)*{57alMy_59q<35lXd^1#X{AK5ZPiH`85M%~HW)NfsL1qwS20>fgf*K0x~4k5Xj1K6ak}yrd?mG_7sC-h1uya<1`%S<9~VC-*umh#+4Ikz@Z_XavS|93qxLVP*`R@GI zr%}e*wp7xn zGr(g63=#Ls&yeb{+Yaj`%>8~HHWyufP1O>}4vNp_W+u6c>xf*>pN&5xS3P^X(|pTy z@>^jIG3+3zum%!ZKos%$-dDr&_MW8qERmK!2HpTiXA!WeqF0JUN`}MaAQbTrHLzFV znTk-r_>{gWqn*q%R)E6*opfKskdRrOGilw6SX(`x7$CF2MWtO17qZhR)KG%~woJX6 z{v~S?2k7XYEA)|b()%;hGPdavvRU?Nk>%_XwvHj^mm|a-A2H&rgRyGZdNqFr*}4XGe=e-B$7Aj*>D;tF~+R_rC&9l94!pvyvO>$aMb4&Av1S>l#0trpdbiA51vlFqtq*3TA`D%-Q9eOlTM zuP-JO>9Wxwy6yIyODW9;*|Nzk?M})|SGyy!<#PU6x<&YR>#)BkP3+IFZg6|c8=t%5J{b{^Nk!|I$sMnPJEKwuJ&?XHY8PhoqV9y zcZ5%M=d&XP`X72;LM|=0Mx6ZoaXP2)^Lq6A`b!Iwp@lC7-m}({1egA;LmMv#vbMGW zIs!oT)meEP&j;aHV_87YpI%~qLT;WML=A~%Wp5`?#`=fTpPLUr(xrJQqv}~wafXvc zP1JiHlU~zza!Zff&^Y8Od0&VQ9&EdLWHF?HcYQttLubFfh4|SBLQ-;i2^HbAJ|0#= zTD9B5ix3o2RF1S4BJ0^64Ndq&dD2>~L4XnhRNP6d{VlW)S)4*~CiS09&i^by_{?~l zAmr3-F#Ro1@Lj$7REn5eNE=110rR4BGj55SX=<6#WaHXbnkoG+}) zq1Mv8{W&Z`R=(d^m-Sx1MrtZ99jlgKSeHGqcj|7?QYkLCloxzqU3l{5k$#~tqqkpK zm%tb7X2V5fW28A&|E9{l>AD*%FwP=_s*d59|Z|QkRbd? z3Br=lms0$4w1+b7+4DkQNPox(x7vWP6(K|}`!a|757)Ei;IacE$Y}7o-up`ML81jM zdMzu}qP<8lrkV zVb;s(h>l#X-K{-Q=aw^&^m#hkdcAR}%b6&{JUz?S-lXc~EOca^fwNv;>a*o+#g059 zpVq#c>&rP9`g~l7UVl30O0JG!zG-r6f41^U9xgK9EJtr3-+CqA>cRBG`j~;JO0wI( zy=VBI&)=qHE`>h@Wa3eKPW@dzs{uuJq@G8FkdDU?^2dB;;O6#&+4BeISe3ZGXf3-v zSjcrzORjESeCP|i)mA>&NK4D3aouFT5m&LzZnagsZ_cNs)hI3MEqv7w$|_+b3B^;; z((t{rA+cK%Z7G@~@|C^y)Buc^qtl?ebfz!&F1yWBKSFE&c0Rx02sqGL>iuS<<9@~a zmp`yu5=T0@+;ykgGhV6`r-xXIQ=HT}^2y=852zACeYfnp#S+sKK$Xy+!+q@)(?w7v z{4KlHKvD^Vr!O3C$KA8Bi$L3>*ovpqcd$ZfEL~1SLRcv8wZgQ?4!OZk-4VRFmh%`o zQT(%3g8!1wV)YKOemA*w162NOW(6ri=La6$R1$d9kf3U`{~iG6)m2;j_~X*ukN_;X z{p3qO*xu#(GXQ#egh?Ih2W7@dVxecKopSB4Y-UBg0Uy~;HPG(~tbBC^l{Bc%D4dis z_KivSr5rp;Wp(;{IXLxmHZ75-rssb|wT^vZ5=f|)lVUv#=J#|W#Zg*L4aS?0H<_xs zW1;P=+cv6o>dCRG8z>`NwN&5L1DVt!Yho@(zf^(;h-@R|(qE}js&Mp3T-@T&# ztC{um^Fj^wp77G5v~L6D-^&XBE@K812|@k5>lek3m+4 z9FtG1K6S~tyZX%HT`c8u4^Sj*Ph;?D{&xME&h+QZbwzWN^tpv_Te{Z<%c75Dl?^#4 zcD;7Dx1)8)W!_yf&j6S*hdb2tC=_*b0`{JdpOf(G>v&D^^-wO$%Gj84B_RQhmY-83 z6jky$O~rdYtozz;58M9%bp``{Rr<}iwjLlGEVOM1nEAU&hwZ|bwT96E?l_aw==NdzFr7&umYj+3?C6)nw)fmkAf{;4v3+}~e*-Q~ zI&5!WhE|tt8`s}2LwC#Fx$iT^CVJ^Ymg#)(`{?@U3WNPj35zKwZB=g>JrMNUKOiR3 zHqt*J_-?d8VvBMAJO#)RYU33LD~mb3EO&S_4ad9CExn4rvmTnJ=7$pDKrBi?Ux=CG#Ll6yg!nV3w+rh@+0U zr$3V?(evs(apeKal{?$}{7V@ucT!4}Uo7Lb0^kYSnv#+=(ifsHOcmMFyCBu{-KF4I z7=3Q(Q=QXV=z1t~=%?aZftcrmFfs14q8CgwWJ;n0Ts|#zYjB+SO*YD>w0X#`4CtAt z#mZXwT#Oqy93u5&HpUt?$UpZuvP=cUHU5s)`hS!o-1vQe>$`FNg(G}Alz#b8LZl2) zk@gU(0b%DDDQm-j#e`ar-PYi>YquiJLDE+XUZ?2Ao#bgP#~0*#KV~2(eol^%bQyYW zTzs*#kNyeW59LzZyZY~e`0pAPL68sx37bB$x6Uw;(bRS8L-^Lt zI{=Y(S=a=}gau-3FVj7t>^H)g~-no{qn$*;Mug8J?~~PP;WM!CZhB9 z5UU}fCKJ~5?9NiB%5Rf!b4K<$YEEu{g38xp^N&f$W|%=Y{d4RaXp*Y)Gw*f*|3qlJKikz0W#$yl9B)Xr&s$W}IFeKwmj9zB8iIj{@aHcKa=X zbXG<*?RXh_?LZ|20i+1>IFr*VIGv2H{3wV#_WBW)^QQ#~?Po1sr{!=}?;!iiw1ONV z$PsqqVi_QL&+Uu>CAV&yt zgdj%K-M+kC+AV&ytgdj%eKLiytOy~|m zC;hME2oLK)x8QzQfV115&Wr%4PVZyY!}%jh3ESnPg00+RTmD_G|@m<*(Oys1V z&i&_g$i}PhR(6&NdS~5MpFd}L|A~3Qh0WVXmY&5tpkXfxpdV+;1%f2dPl_Xh-flPu za~)_kdU7x3P(5}igN;(smdryFAXlTc1SBW#rq8`~HWX#*DlbRgU3q)lPU7Go3$)xk zV8HFf?dN{ON#(^aPMkR3cJK+y?uvRTX|HJ7;aB2=6?I45y)y3G4DYRoaM=@@OCumY z$2q}pzET})Fj&ZdB-ZRdE&-gw2M(^VO1Vlj^R33Phw)?r3uM5h7x&=-X^s!w$O19d z_g|JS?-tUje4*A$NMNFG#8L7mpEy7Zl(7s+Dv;#Gel3cj(LhF^QazM{C6o|^MKUYs z1<)?MB=D!X^6zTaOtF1cHUxzrLsPGipva1co~grJh>f5< zgWD3{v1|*=vX^B}`roJ#az{`H9`g^Ri%)^cILU+*IGHY8g>GFD zk;}>JaP?YBC2tW?s1WOPk6XG1z(f@v=XHABTe`k$7^5z{be85Q289}(Xzfc|FU`eV48;Zb zQlKOQX>hi#W@*aic@~NJmSwIMh0po}<;+!SF#vftB~T=5OGZVGAp`LE5^>^PcTEXk zWY!|EeZUP`eEiT<{$RyoVgXf)gzX3Mp@%H1g}ywJ_O!Q$8fJxyqYg=yI&w)2J~maj zmvqC;cE@>3_SDA$t#zEZRgVw>=5bpd#X8DW>pniZGz(&5n;sc(tq`rxPfl#d1Oo@} zG$smWX~KH57rB8NzY6b#6PlsOJNq=omE3Lhys6V+K`}UE^0WH&QG1fO00Q}RRXs*_ z$VMf>2YIp58ecF8hx4da;~{-@HVI5303P)`vdw}M=|?srp>+{pa!qY7i=WpuG&fW$sLeL@vEke*D1T8|)BK)^mgzT3- zwc0cLkSs#>a*U=V&iw;^2EtxFI+gNir0`&){rQq^sCcISTBumnLQHhcxTx{R)`OoH z3zhDv03<8HA;T6az#2|ipu?K_dTqly{;6w1sL?+c;9$W|( zIay{odq4g)W>bvA8YO!O6Qu@{sqK`%EP~m**MWI~Tyc#Y+e^MfE`W=f2>|&)4{jdf z@>G#_U47?+`#yJ}Mi;koT-tAEFHHAok7SHEr1FRFh8#*I@y`iE?8UGCB5 z!!vvgVfTXxe5m*T(oO@2d}*h_+4&tMTEFi6lw_=*g>Y zdNX)cTUUkQ(qoKR-Yhw|+ z->tol(UvA5TH2qDCsLfF%6F&wyi*#we);pNR65ls{h5l-+8zGrs%Qsr?-3a zjrI(Uk1isbD*_^k5ZE$<J@0rW>ZpRO&TF@SJXJz~_${PB7%fh562($-5dl0k-zqWW4 z3$%`ouzoLiO=tgJew~4Mtn)}Vbs@sVz#$Vcx=+4(A<`ovgL_KnvGTKpDBt!B-Ve=> z_pblzeTH5_;uj`DN&VUvTH-K74~i~#UF6{i2r%(F>%5Z;%|V)_J>@BZ5;(gEhw6~4 zo&Sp3>h(vlsl1%_7iw3h_pb^xn8?RbX8a)m3!;M`BYG$nZ6lR^!u^#;oEuGIK4)H) zO}h1R-|#7Sgd8{g76VXA5+0*2L;&eeba)tIeYAa0io@Q z7D+~AF=Z;&U}7qtPRFSpB3ilcX|yGcweSSND3uZ4j40)Il?^ewheyX^brkyJ-BqWx zdt!98#Dp)a+}ZsL;Iciv+6IeFrZ^@Yo4o2GPz3?#v&Brk+#en21`%vUWu9Vn zY06A{NT5WeXuh%5Ha5cfrZc?2_KU{}dez`On1g@1le3PDkvD z#I=Vp1Nh(EEP&u32o8ea;MN?e@|%ibc<=vFaB$&I4210wxq-}!Yv)nQ0P9eom14bxD=dUppc%CKg3xNjmGcSwCA$s%+1a_GxK5yuO%Bq{~K! z=(gK)E~PXZWXmSEv^yy;UG4t!5!sn0T9fj$mk|B*Z{dUQDfn$d1&KkB7>pJ=6{3^D zJr2|T0>e~^9Pg*1C`Myx0L6JV7=II*0+6(6Q_~f5DY~m85K4Gk$!!EAM-+;OLla00Fy8q@MTbC*pXXD@jgYj3ObDWc3CZIeuVp!HA9X&H9!dVwLR?c-9fxjA-9XkjVSaNi z|4wmzn@G77xNVw?(i%dT1of`#6sI?ZBX+qCHy39-jz+47aqHg8YzY&E-?VADm(`Yx zc4)n>Tas-U&jQ#I0i=HbEeFGy(X%DFJsCRj;)hyGkLggeNP;$D4eE7-+_#Otpw`w} z$v5n03=-+?Efbc|I8*#XH8D~LUGkk+n=zNxpE*hRv`oJu+_PiY87Gc1>l3ELhG~! zhtmB{M;J=F6+c#a^yvJhh>quwpEeQ?O^Gj7_R$ai_K5yH5J8)ealxufl!~aDO*b+9 zn(8LbuAcHEttX;CnzeRoRO}9t34naw4fWR9$gy?LKjh)(N-JAReu3GdnJbXpDfd-y z?gD`~1R0DP3l&Oo8M}h|jmX7vT02s4GWT_q%IY*J5S7Qf_F>tNjmPSUmYWH+iGTH$rD;6Q}p^9vTnGp0zfo6;jwNZd>jT4 z;Ej3+e)_FNN}wmm^|-bZgjf%i1c&Gbpd&#FVAC8yTcrnjF!y?xV+`6Qpjc=_g7 z*U7ETwW&hVjQHXG))qhtL_z;BvcuGjdFbEFh}aisqBPsL8S$S8#PvU%5ign)gw-fL zdRpXiZQ7%r?e3WU2`3W_PN-YYKB7a?D3%tWb6_tivgUNi2)BY~p7T!VkmRR^4@4 zDn%i^^1IJTcJ)Ky${36W?9{~Uwq1QBn;RhL00g!A+HJeK-AW)ZNJ;qAbWvLU_@k6v z$4A~Ky`u)Wd@oHJRF}^58KkBEon8HAq~pF%1L0u+?MdCN(a6RoGHwtkoSlg|1YMuW ztryOp5DNETZeTEvX|sY58N|4RCZ80h=s( zWnQ?bJ4_Bj5%N$2n*=|l2nCEa^i3J<$eytR90us5N)f}+jEZaJ*1d?gkIpCJW$L)7 zw9Da+wi<;RYA|41tiD{*{M?ET0D(dtrD`j_le5px>l=M|YtMM8bR50+^RwWJM&ie} z74JzeLQjTyZfIp2*Jghl`7sXv@W?zWhurxu#NpdNj6-qj9w&$U>F)Niw{4Cw?=IKT zd}yb%`1$fYF*S`i}o^(rV*>Uw9Dp2XVx*`YwrNl~FS>y5sNdf3p13`vsS9>kZzBs-Z z)lA87ZIQ>IGCv8;R)r}&SXun~Ff$r@R0Oqv{b#6Dny%=Xq^ zrh7qj{t?ty!qvnbi<{brWEd41E~FYk&6g>c>?V^xz<-5uy@$YiNa$X3wW8cTB=wzY zz54hR16e(>+Goy4xAZ__FdA~7STUImExCWXoO8d}gRs_|*8A%ME(w&u2B>EAR1LkZ z@{X{qYw}kU+K}Y$p>nwUxL7Z)a{wH*r5aeO2u;(42Fdjj+B0Gd{f8H{839Oq>3-vV zs$voW`Sk#VcNhgT!dV_Q7x8NKiY0%_W_gHTLE=t}GGJ^6j|2%)?ABEw%!a=78&CAM3$H4%Y(d$Xvhss!0gX{)b#hG=&;+S4ya9_I7ZC*=6boN|oL ziII@5cAv3m?GfMcUM+EA2so z0DCSnhVHZ?g7jvbBT%h}A;_2GFe*y!I`I`#qGB?VCR0v7aLmS5hJdp0lrk)}XCLqv zkaR5$tVaZMG_57_!88zuxE(mJm}<$Fdy45z`*TewYAZkKiSlW5;9aTI-n-fpeHrSA zq)^gPWABX#(Qp)CtJ2X@=#7mIbQBU+($%x*jZ1EH6p^peH9FH9e+zmPrKzN6n$(++ zqj6N+yh_iayf?8h@TlZbC4K8By-5{~N2O0!=^tM0O|FGHp@WnR?AiNL9&0$sCRQ0Z zDfC_K3UrdoQZjV4=t~{kYIIU4t1@&y(|7G9)LF4f$;d0I@A{O6v+_Wd(V6nT8}9?1 zx2s3bJ?Xpoq0xEoN|o`Y)xKL>P!|k^GR~j9pFpMQqQ+K@8^1zK6F@hs^IJ1r(IQok zocxbaeyJYS*{vKC<@Kd{R8LzxCN6F{Q`%6>z>)@^bZ({MMs;XC_PpVm4n;j)}ciJ9j6vNndP*~NS(I^Ty-E2pH z(5jyDOmWl+$t`=X^r7ax7WWcrAZ!GWppG+1CAU`GT(Enrdy-a5^c7*}OY89zlB0z% zTfl9L2H&(MUw-Gb)LUq;^$2@l#od*;lL5~U`frpUFK2Q0jNilbnt`LTRan|P`Tp}6 zf!)>p4+>7-l6dh}fus6)leBNyd7JlRChk;Nb1W|LaK^A5qYn!9mf;B*wBP6W1quvf z3}H|3y&!jrj}5%NW5oe*NO36|25r=O<-yNgBPVn!@+f5$j8$)g{Tc>< z9=I(7Kv`-+cm^kG)H@COXZ??$YK4D%C-Lhw;oC23LY}{^3B5x9XiX?1AclDLI{3#m z;kz$uLOzJF8xc>2fl`qk)S_qzWO#bri+W$*NtkBYzGy9bMavC|owrTtug5~^`A;2c zE5G|#5-6xStzS{_BHmXyRT1SkQzuE=Qf_yk621g!yhT4^99R$DMyu8W;bQy*1Nzs!ZI@@rPVrzcT3OczLvh?_@J z7D0Cz)U;P=8tm%Q@RnYQ${eQ(^w8gBq?BXLsxAdv7hv^gLO|FIwTeBFMw3FN-P!FX zaa-E7lxw)O1iBzO(`$}xOh!R4B#JJO6K`y4yl()-?LXV@p&vM8pSz#5CQKBNwd{A7 zpq0dJGlioC=7)SP!c2tT!*BxTjI(B9hokBD_xqt9#6{3j`4e{9^Sid0Iu^<=n)C3u zphSY%ceum_v6s*s^u8;}q03H*7Z!X5AeL>;`UpL4JvNSwfe;~v0pWXtOG87>Qi&** zuu-})qN5*5R@%|)c66)qk;N3L`aesD1={gUu3=9sILHb(aBx;R#K#&WV+>WrKRPBK zVSf{63%Jk$M;e8vQ_MJTXsRB!qqHXaER>|A0RZYz8U`qma>==s6!wI5xF52$2Y3cx zT5sPKadF74rMxdh?Q&5e?E!#Bx|K~VnQN}q1W!+uO+BHvr<2Iu^PXz%$^DbH>cXK< zYpF!JGs(JGmdE<0HBv^yc%~@sCd^4PaX8`s-4{M?$H)~u|*pSUP!Xeps0rlw`Lx^%K6h z{$b}^cASkJ{T39FVp3_3r)t!fw0$K7RX|Ixd)q<>?CC!0&Yy2W22;rUCi2oXZgI2> z*}~F#vCK(K;u5>Qt_jP#gLVem(H&J(=X}x~yt~nk;dG@s?`n6*KBzrYkfMeFdrzpg zhCNGSrG|(?&lTf9dw7^>QW6 zNti(}dNdyRE8N6vxx{8ePfq3=PnNUymWknfXku?pF6U^`i<^e5$E33?(BQ0KY=n8U ze4~MU^QKwzvQ+Z|SGIg=zkFYIJV2RA4>%kpLg18m2mp||nqzEUS6cwh@&&NsH&0=4 zmNn1H3cWVp9Ac~=tXnTD!mHk~{op#(Bv4))Hb7h9AoymeMXkIb?t$ddUB?g9@3ko0 zxg4b#mmyDh`-(wRAhcfD!=HYQEoUD>tswXcM=}J^Ivksnf!-Cv-_9;^Y69lUe6KW5 zkqS6DKWBqK$Si<(!^rFz#g(#X&Shwt8_ zTX&QwG(!mPgol}E53xXM0IBEm`d%WX4sjoFEtWS>KUsQ)W9Lo)phC(*DH-bw_aXUh zl3Z=epwKT04u}+jNFj(6k`4P-7?e4+$bd*8h!lcIA&3Vq5t^Lq7 zQqEFqn?Ug-@Y92j00q?O?7K7f4>~{X4vARWk(yD%QeVF1&U1w)uJkJ%YoVBO&DXV4oH|GxPDh*E= zeW-rE`OdfN{>X>U4-Y?WzQ;4xj8Yk|)pLEG4>hhCo%igGDgkzf zf(xC#SnrM!x-;yn8?A0K)RqK+rF5#RGDf$~#isEBt+0!4oQ*#{d;a+ry7s|4pRP|M zpFV#eGCrISG2R&C+FENiez=(2wK2J8>tlEH!{r>~&Dn!n>qA`+S1Y4xwOYj`GvAB&w}dnZY85w!?Y}b8nwldT)2wRJ?yl44~yRs;OLf-5k$F zmtRx0lw?LT0;+~duHrf(*YjuN56M-}-tIKta-ICvX+sP90Wu3; zDs6=9{#I$@U$Q1~fR66DLLWINy+1Q8W1Ai!n`NICSlku=IYQj=5hKnz7^{Y@ zSM%rWq7w$M>ftk)BEEMHvl@0^$b$9IoLKJB5xx8C*6jzgve&Kd%I{Bbn_C&Q4Ut+M za!fw4`qV{2N&_Hd&aM96Qw?*keJb`a$~@0ccNCTLxu?ibCPANk(W_y2yeQ;I>x~y% zc!b6}Gqb@ym9Zq7+(u!};wv_K0`S{HO=3oQVHSZbtR>A~YhURy5Z9a=WVU&(4F>kU z=0}@}#gXdPg4{mKkCY&~QD@qjd6$~C-^>+9qw@ukr4Kf8dTAH<#7h_{0 zGKEBSTlB0K<5Jo)MRvEuJ@NEXp$G_)7Fg9?Zm(x=Mc9iK3q~A{^-AnCp_EjyqcwA* zN*dasDXvHsZYD&Y+@+f(f&XXhfj@5DKK$3WZb$EUa^B+^({6&?kI!MZBlkOW@U2Dh zAAk-RcntD?T`L>H1h}OD1Tso$7IzvRz0$9>vYNBRy4WmS#<%CN$g|2D__A-cVYCYn zH7aUyNxE;fVXYl70Xwn~`pGY~VJ|C00U;)GJT`>ZX-k~+9Jcs%tQ&oHsYg8oLc5Re z_(*$Ii8Fwp$$pDLPfYdY?!PS(&c8gn9l19R@0ZX07`b~!klT?Pc^N56E&gON_N1-q zEu#nP{fSYw#E;^|=a9)*fke8;7 zY_`L14J&de_V!pU?0Li!J@81Cvn}e{VmfRraaN`(j)g3FI@U7xVzW4fevI6Z z-p5}c*2{rawsdo?J!kKSmfXKS zauqxBjC@-AZmuuqVCeI4A$tAkoWDzPS+C?v%Aveml@)f_F1y4(tXF_(wLrF%~pn z@}rbC*I%s?b2I=Q#UmfLXas|hoC~2k2I>EQj^dgM*F6*K>GOiz69_5ZUS?}gM*j*6b{bZP61FIw;(t8)zV`0ivoU@ zMLljYA=f~dfX-{RXzfWTpo2>|8oBZ%pyi`Dy{-0P~A0NH) zjMvZb(3E_bCw#QBo|RIDQmL>}8CbKw{^q)=ByJ(xYFh2aLWHTfeQXWQ!FKzYj|OoA z5WQ}H&Se73FjtMEwLAE)@IOb*I`hUaAzQhggbJoYXn;$>F{ah%bWp;{R}b5m7#Gf;P*% zkIa?Ltus1Z7;tM03EM4P&up)E+Ip8=_TF4I!^EPXuzN^4!KV5hTCR8n8#sgaP!7)` zld?CihvU`-5RZK^d~pl9 zHYyqM?YV!>j+GM9V|KAH3fMtuaoifd;r-o`rpzrIRivSK^oa28rJ+s}q)TMO)a8CwKw)0R zue$UN=|*GfL|9S5?_VOnKEoAPwK%oQ^78`nL>{ifLhoTeu$<1yM?^iJe^|2VP);lt-!X zCq3r(ze)+(RZ|>&@p||EMU19oDK_HhMuX?h>j`_3Vi`RE;*Phr+6-G#6Lij}0$4H> zA1wyM#Jph;;5?uOTvZgagJ+&HyWYQ%okF@q_LQ3Yl%A<5`ba0XI3g+z$;o&6(Ntv` zk`C6*N!9mANhIuyP3dbwf3CLX0O?QC2qGz(9%I*MqJv9W1z2@+G-YLt{4e})iR@@j zllNsPKI$ce(pJ(jieu4FS2>zskk=}nbuZEQoG=Nn)jZI9Pv=g}QOVQ)C1CrOi!9@c z;L%EZM1PHmxNX{%1CD)K#WDQAn?ThP6w*dNF4AoCP6rUTn6ey9<9myRG`tfzwueO2zF5m}5AVCBYL?Hiq1Tq{R zP62U+Q+SiaGe!8>V-PqzA^uKHd>z9V;K$DVk!by{#DYK(jkK%1IrTel%uAho-O_5E zlFHGG)4#Ll5q(8tJ&$Wk@ZRez)LQ{4jd|u`z4$!>iE+6aVlu^7j5!71IXX?^)(c@) z?EkH9% zy3F4Le&nuw7Wl|x#r^tH!ks7ydomhJoM`;ORZVfX9^In|@`MJZU@04!Dmx9P#D*SC za=PIiqG@+4JoR`TLE-cSY^r#|D9{B*;q6Wih|NaP@0O0iW)+dB1J?*M5=V@RTK!lNJomGh;$L@AfmiMof*fS z+1+QKncdmvz4IUBm*aC@=XGDl_kGRU6Z#uDyMWNO6#AUlqJ5*QSWREXXe|v<(JFE8 zaPR4SJ1Qrns;-+DBN|4PQ9Oh>uPKR#(gl4isOFA%F#r={yCmRktS(h_liTUzN|!qG zkDpw~#kP4!ul4H~t42y&T)Z09f9#h}F4A+?ha(N@RmTRy{2e#?6SHs24hd z2{xNIVk*KUiJe^vNnYV*S@La=y3qaiq4SXj)jj<4DQ-4WA;vWjCR`uYfXnM(OQIT< z8|_pQc1u;3Mi3^S&o(q z%Tk|RcCCC#t)B2gt=I#CBWl`Z*OZyn(EjW&`mgMoj+B??v&xd)ZNuMwKhaxd;t^;! z4us0Eb5~Wol7AGh``~3aN??xB-zTkp|83s+u{y&YfkPf7ph5{Mlzz+yR>uM^KGPld zpTm0%lqtU~ktS>#K1{}*e57>#u}ep>Qsfo!Egec^e$5OY?&j89PT9iN+x#Z+kMnkc z1|Q#*pB7?GsMuH_Y#UDYA6u+_eRi0Vm_F|hQYe36*Shl4Yk1B-@}c%ijI0u<t&EXn3#f9Q&-YWZLsA^V;F;!}&WL;OK8~wn&CLHrD$jRf{JODK z?}^V3!bDrs-m*yMk)~7E^-d0o7i^$1E+7o4Z1AGyB*C*%YDc$|S(-47(z~Cm>7}p^ zH2->Id&a#8_L}{=J^bh(H&cA_2*)LRKI{5%<_v5D^6EKC4M+_lL6HPlEys+q5Hn`d zI`CbRp|mJIb?a$2uOK-&U~l34AKBQ-{Db@y(D^!~jt=BB-|EJt`Xqk)^cUnSgBz<( zRdzht|3>AdO2CfLCM2+j0*P0UrK#CYy({6B@nDBp!!(0sq~=5I71 z3uWJUbM^31Rxi znv?j$MD&*&J-6vKWpc|m#E$WtxEzEMiL4AwkRe^3{Ut|>wJI;Y^CAxX*f|^acz@@S z?MJH@@WlGwOT8b?#=#+6@3&XFI&-~O`^;bcQG8_=*T@xQEWJQ2xtWLV_~XPFLBTtu z6B@o5uaU5%iHd@-2*08Iw$X$+lvjf=hw5>`ZxiNF*31BTUV7?tEUCYmL)XQ8zs#W- z_jc#dPQo1OOqfFp33F(uF;h`S^6ng(N0>vE{2HVlVL}~$BS)8RdbOu;Y&16=;O|E8 zufFlLA_B}Ev?98RG=**an`Z>yAQC+qq=LGeU&DCJZ~IZ_Xr5`-yDaVOBa0C{_*cI9 z>JC2j&g@NrpxTI0*Y{_6fbata%wfxAmYqIa*+Oj}q)kHaewvQ;#=BQ-T02jk&gU{l zDu~*kGD&=HkvkAU5H84Av;fRA@hbe(VWUfyMnqVK*-SD{V8Pa_i)l%&k0bCfR&YF! z^N5dapg`pvTXzvT!M#R|J^(;EdS7ygWUoyZ8Y^>Qnj285*?echg{IX4&bZO@wFDte^1mxRK~L5|QcI z^781bIx-@FeV~8|3YchKQ3=sz;vG=H1O-e`z+?pl%qx0_Dp0gdWY)60WH;v&FL36r zECE>Oa~O3rC}4sDCMaNn0wyS6f&yk_8pMZ)FY^|u^VOIC?%IDz$9 zVy>gj$mZCHa>064218}Nsx8(Z+{?=DL{{U80@KaKoJtD(tsq8eZN4&9J_Hw6 zK38as_+oAaUtXx&{oLZ!*87PQAIS2a!dTOM*cn>sbmh#6B`asW<1`w|8VT+tWT0NA zvjR&;a4)wR1i!JDtLm~l#u{kWTgZ#s-Ne`$L|U;)^2=4YXE60@VWRAjpPmj#3Rk6wRr8%ca~V`9xdsRnFFGKI+WUyy()m zGZMHDIq00bfsfs%&yFukgq8B|Ei0_zG2<1i7k}(pc5t6M&x#jO1qx^9%m4(xntCB_ zReD+{sey$))xD0!5Jq&&*CwyQry27x3`vnpb*63Lh?gqmSr?$R?cl+jBU|f;W^-RX zGL`co`y&KT_aDD5a&GYC^cC9-=O&elqhG3R3nnzyUwx^zy~_C6Yx1%FwM)~x)wa)Y zcb;Ch(I`7`MdRMU(<|?*$qsri-9UJFuXJi1yz1X!R(*Bj)y^@N6Rm;O*FL^~Z=jYk zSX+I4XNSxNc%M#9gy_POc@HJgme=6beFy@k4YaO|@(HF3=W5(2>Pbg=v>vx}jTy>i zA-f!6xy_9z+O&ZkZe}{B=)9-OsfXgk=55P%ycBnwE%hBcN~a`l|9#M8L-pujyI6rB zEw> zKDG;>mV~;l(N8@13>Q=-%j&{WPb8A+3#u~7R#J(Lq`)_2wEz28xsuE-Z;aIUpCX{$H`#U5nj ztJ9apT9S!j3NpFXN)RwhvW!TurYXAuW=XaMd&*sp7=-a2LiMZBuo^}FbJxt#J)J9Z?7i?nK-c-aOOqlTc_M*U5{(#`c!8&$|aiy#00isuj z<1C4~hENrGsA@hittU~s4(o%L2i!&5Fa?kysUG|kfq z=`Y<}e(dNGAhe{~wtxswl#~~)ArM8EVp>{8yv zWbV+N6vTDY$?gUa#F7+zMvBbTH}9P~9h&?D35tx3Z8O?c5|Zy5s&a(Hfrg20wu@Sm zy5dljCWT)r+K^P}gqwt{ECP^cRgXrGy3QKK#E&AUVwqmsOx>ltPadOYXD~Zuclv3? zAQjDFp_6LrHZkgG6UKsRG-}h*4|NR!K!IzdbKSIYqeE;d5&MLN%#nbkaT@7i3RP8l z8(BJiiBk@|RQpWTeNk!2ai`Q}i-+e@LE&Rpl}Ham!NP7 z3YVa82@02>a0v>Rpl}Ham!NP73YVa82@02>aQWXUT;6|cSL5*-;_tJKcuC?hZ=(ye zdcHe5^EQzmcXUVPRpb4~DGH-cRNy1i9%gaAHR1t#`i_1$JLT0Y-vlFSL6Z}sB}4OR z@wM+L!c@sPk8OM5+4nUo8y@>~d7V96&dpE?LM;s-G5Me5KVSR2zgOu*`oR+3jGM?y zMm`z)iI^QEd2Gkka?ybL-kCB#yEM zl}@>h6)MIBQHXU%j+1UZ(&P$kf2T=}j>RTHXzZ{Ufd_ulIzs8G%Uov@cOgrc>_T0M z`?#=QL6&p`$nvQlLAcZ{w80)i=r|jwY)llD27DzfF?oh+G-)$Ct<<;FgTw+TG-OS* z@8|r?SC+dGgv;B@)Sq~9tBI<&A#(j(Ot+)pB)f9uA+A#)x`*8x&dZRo2H!~1AdPcK zYRG9Vv9MRMw*@Suqo}Y7;r{Z&H4h^NP!zyv87lEDY&SPYDv5$si5W|?a*gsS6RYzB z)^k-%M1oz)U(iaEp$3Il5obeT{r=ni3N}8M==*rEWSWY$_r%FbflY7nm_&P%3I?nt zckyA{Fom0#V*wB#ktGm9gq6Q(s5!)=XV_&DG7C5nV>xZF-A%l5s8LD6Oeq@ZHD?&6 z1c=Y_S2_juJl>NW8s^A4>2)t)tMq=#!^)jG--o69PUn_QRi4hPZoJ5xQ_KI@rKt0O zr%Ukwskv+EtAPD(70irR+#bJg-2Z-RWLLP{AyxLMeJtM;Q%j?ze5QfdA8o~3YXSzv~;wd6bYN0d~$x^c%aIKbQdYBJC>o5DjWG8 z2ip|u&XaM7oN&84i9T*cC+IbqV#1Fwa?$4dFqwXlg2^0pqk(B8bDAULcJcAdD@*5x zuOaPQId_)qg0!oz-n-1we8*uV{W$;T+ot0WaVyi`t^r9DQIOqhKy@1kQ#p!MzU#|1 zAfF(6!^s3AKf3D5}!ObomLW|Mi5+yZaeTd!Xb66MS@0+ImL{ zZ{6Nb<)^{7=wB|3PE<}4Bv)-Ujw`&K;hiQ-hHpJwSs0UFl_pArYO@?Jyi>lNCQejN zWQXXD-Q_89ceNeOOrV_vo-%QdzMtNqUEy*{rbzpluSHSZu5ek`qL1?`y0n zUIT7L1n*n?=2IF+-Rw){)0ovh9A^@f#h6M?PA|rFq?4e*vx}!%juSviFo( z*0sZ#Yi&0*f@EZNc}i*S=89dOQjsZ%z*DC4lQUn3VC9ZS-c}{W-t~do<{NSeU({L* zrj63)Qv$r|?3?I^f@z5kUk}2Z9jRgLqF1M*7ZX z@;@O|iobX-yFB7>u#^+)v7S9rD8&kxLw2CJx z2A;XyKcU7c&21h&tbfdVp2wL7C;g=C@fgp-$5#LiL8vrX#O>W4>$O9b(snEc?B9M( z8(v;7V6YT?bekYlmNzPNoUvDW^oCre!5aOj_MNu+W8R$&4jM!hi4bw(l@PrO(i?cJ z`CbS7r`r`9fQrKXJ7-=TpsDN%G+0gE`)LMaSlM%@WA)+wPqRkhm3`?3YgtD>%~^C- zJ}>K7dvxW~TN|3kgG~nOh4((qI~hJ69_UyvJ>G#pCHUu$-jpymf;8iUG*V}8O56(@ zXMQ$yrP|JiqMY)84eG#Gp>lu1IOp}M2?4_otw%pE$97gtDRh45xbk@=k><&amf=>< zz0a!|hEL|qJGY)c{=AkS{$&2EP`O^-`L7C<-v1+^5_XMh>;$nBgHZ%GSq5XpVV0c6 ztJ+0a{UtJZx6EgLA1*Wx1Db~_$cK}QL{{G2<_ydh1%(voam3>2jQLa$bO#r4Ux`WK zaypQh1c}LvRFIfFt==oRvOY>hPE@nEO?hXx|8Puf6MaC>Ps<5!z4lYjU znbG=eNa*XjS*j3saY1P?{`%*2v1GE3y0h*pxUCmWIY0Gv9mq1+KR7YA%+g%u8&(5> ztx`KIL>7n=+Q9{O`??eeJu@T2)K{n4^!)k_oq)$zSY$$@53dO(pNa&s1DFKkS}6kdWjI`L9r;Q2py<* zVipB|Eya;V97}s5sY3I&QrRS!76wlrx9BIRmqcOSj7L;1`kS3X9kapIu?{c((%1D} z-{Chh=T7q%VZkUg`Il1JWJK97#N==Fb@7nDBL!w#mJ|s_P5nX;o4FS*yoIQNgXj{Q zDPV(O!gO<~=hb_#H9%3z_qu>zP4(*VkpVM)g(&dR}cmG31x;NO$|U zf5d412}l8?A=T*s(LtmyrKW|SA2mc$9jykZgVL*`3ZQh%2*Knlxm;#;c0ogqb<|Qh z861E}W4T(W1SJ3EWnjdkj#}~N%$x9vcU^Vr%BfBE;VAyhi6}k!*>9Cxre@BQw=Enq zCu6KG%$_j!saQXuWfJNFm@!kKw7#gJ+&QPv7^NBG^kjq1cEAS4f33 zRLL&a^d|=Kv-;3gGkWSIM=Vq{)1<%);DD=o*6iH?S*R{E2^YGX>t0Od1TiZRfls0U zX-JWi#$G!k7Ycc5^p{?NG~`zra_PoDh|0(#@Woeqeyle9rIPFS`?r78c>gvk`G_Ub zbm-VqkeMu+A{u@a0O2KsaQr0JMk+XYkJ_F0uTO~kC?#4FM1=a0Nm09`dWXuBu^rx> z5-HlxP90f^8*G0lU)J)>?efaKF?hOSlXl11xWA9loc}H=|6E;+{nnG_h`z8?uFN0H z5r0l%(0K%%N6>i$LcKR$pTCj6sEgxSP;}+-w!ys)H-8j23fQ=Pn95pf|1g~xD84n5 zdS{okNhyX4WR_8jYa~<>N@j}(+z2JJ(~mwbRPC0`p4e9eU#x%SdHlPfwM$Fl6QLZ@ zUBz$5D(})XhRdBnd#N!grRlyG|eMP!q6%&a-0L61aln^5u9}T zGPFK6$1@Rz*0bD!;x2}e^QSL^awrD88} zSl8p?XbKw`3tIH2#R!*D|6CIL{o9gQKg;A!Yv03tYneu2S*Gd1-2|{Pi~UTU>9-O2 zXFcKPU{adblv~_j9Gb8VC(`D?Zj~`F@MIG zmJngSqy%!15#DN|jP*Dc$ITere#UxY9BY8!xSDFq#_K?yhZ)>g6(`EZLnIpo--OEk z)LMH}d7UsKqk=bwT+zY28j+Y`Pp$7q#9yBk~bXOoDfh1)74DQ5GM^=pl=So?Xjy3Kj|-i%1F4yllzh%P4y{ zmC#x{`!N2(+-!Pcz}!*td%nuGKlgY4oP^&-)PG`G0IG}l z3xMRzOIkIk50uVG6b-#V?wDbVW-`s^@cqE#Sx2?sul)55!I%Lx8orp=-$_DJp@|4} z1o;alP5vR1D>}cmEO1oB!(cu`ld%rsvZ^qSXu`5UWzSOEC6`8_>3GlGWr3i9jcT0N zx@9Uk|E7@Bi7&0)zWiA;$)WOdGbs_8!p@dH2Enu!4qLFEV5W1L6T%5q5oywyh~qWj z`yIA~E>k(#83|)!cNodJB29;UnX+Rx002}M|9jNM-4XTgCt-2OUJ5)GNL%#({UrQF zuKmp<{QDy+o#x&vDc9|6DNXAkOlK#;#ch%(l_5y%CDBePFCxn0qV|Y5MG_=&MS>;F zH}dU`H{4v>f3dwP$KQ^qf_tv>N&6ph@F$`A?w$Vbe)UhMV?f^!^bJAZ@Q?QmzdP0c z5SeC^uF95o$^P~#>W_#_J*rK7`8~@SJX6sO)1Gq-ls2gl1R&YSdhQ&hQTaH_xvDTp z&B$Pf2|9%W7Js%Ki@nw};SuFZyxhz!&6@j`BP0Ite)U(U`agPjyimDve=#&&d0M;k z^6*N+X1f5x#q(qdmvQ;`{sY(aAWI0cgdj`UYB=5I1S=faCTu*9udh5mnRnG~Vy5tF zUg32^VWshu;j14WMA<8Cxv0IQC!TNmY2&%4B77&YbpHL$&YyX(Ui~`<>jH20$Kx)9 zX>r!cSRU`uAPPh@NK`g5XDlY~v6j&^k3JKYS>P|m|C++IW=Sqnu#w$*rBUU7bNBRT zW}^XrMX>U;C$a30m+*i3kO=yM-!_c&=e5EVr!wAr+c55%=sbx2=3)^p;Y(-Gw~U^% z5U$Tz7`|M>pEwr~>)9M*1KGfm?Y}D71Eou4nu;sGYXbp<@`VH}Y~dzG*UwF5PA7P; z&rUzUlE$4R$2k^50aM1^b2Y~rDT}sAGKNKB!bT${O)jxTG*+jtF75uQb;7|}GP+4S zk8uJ9Br?|Puy9fBERzD={-;1+@V~|v{At5jYmc=?{wW*A`Um~Vv3o6MAU3AORFaOy zPegn85yM0%;ry9~0YPGfk(!2Rj%njyD4r=Et05fK-8fW^3p?)_CY9sB*E;#T2=;$^ zNR)Oqn?RprP5yDi_;V8ec~Z6FPtxisl^L7tfiKdkh*?@~JSCYTug;gJG;f~rl}Dh| zVV;w7qlBk4#~-o*i5MVJ6<-~+E3H~^`}r&JdCue~;U^k*rPcYE1#)1o*R`+Gs$Np^ zvEPzbFV-bK^`&&zP8$oWZy;jhJa(B;bc*nlWCmB=DuRoSjcCYkE56gVxmD^aU+P!32rHl?X>Urv_FksiGzFyS)g765c zNTZjSl?q2kNqjH(K?qrmuzB>Qx6AgEsQ}u@l3<=!$lXpe!S^S5J%|||OTyB`a&JBqk9ZW@FgS?WOZY~Uu?XwWGK;x4Js%mKf0qaN3~N?pU5*IS zOa1E|mkk?6PAM;Y*2#Z=|GfLW@RzF35oCU1Ep9K2!|LnvLQdh(-+NvtMlIy^nkO(? z(!MobyXfJwdy0F8n_G&epK$;ls2L<0f+b}LWv%a`Cp1s8OK!&Nlw|d1TV#s2w3eJ! z+oKE>udU4|v{I6yMJ9bW3WQbPf*_FA`)5|xTNvZEGv+I>-#Yi$$po)){ z7rbd=6!Vmvsi~>k6Jy9i#l1*2(U~am@DvL<;b;)i=g;NH@kz(&WWYA zJf&thPEkW$HFu;dSGA|bF_-sU7r$l&YqX2DtbDyaT0)lb9hxd$(pYEUEVQnaHIqUF z{zObSN2Bd!>kFExQ=TWRW^laX>hh?XS^c4XCDz2V6b`(0QfDMxH7`;SWuq1tWj&mp zsCu5nQO)wZs5hZv1hj?$qlah);(XOi@~1V6Xx*9TMllyDJm)m_yg5mG?7h4vo;pFP z7*GDzadk;sPRp}MErmnYwT)b+Pptz&=h}UTTf2s551Z5zb9TVnCkuU!#Z-%zs@7u> zecf(CRCi1pi7@7;PkNlX_L4OB3gezQ2YbMKT!Mw#XnH|1I0g?nu^xF zHCn9IB(_jc`~$^5Q2YbMKT!Mw#XnH|`eb=SOGsI3X|;P zDGSqLybhJdJm$@x6NVWIn_&3vY`0c1{3QM<@qZQn>ZLPwu|FbChVcSjnM1qS-~2}t zabK7+q3UxQe)@aoZw4ycb=yyANf$S=q_sl>Kp2XRwR|t*+I46sH zZ*!MK5D(GrqX$G(G~^B+Ha}6)?~kuFxy3;t+<*9}@d+bUand-RNFO+in@QVfj{{QQ zO+$W&lMjYM`%)MY#J~G{nUW5nd4q@)(kIOfEX4GdYnkXN%8s7veC8s213Bm^K#j^k zSYMjfr=rQ&Cwwu{wJo*m_{dW^8Td6mLAvCC#>s)>{>%%`-w}Uudm0trBpShxF_AEm zMCmXs{tCXIh`&UOUE+^M^I%+w!##J7pNKz$1|_E?vcgs)PO8!MBh=1NGi`V*V?rdPe7=C!Ll`>a#i`&_5{!uD>}=M&Ff zL#A1o2O0;O+Rw zjh$9R_^t8dK-n^fbr1$i#@1Q@9hb60cKIBeVC)Qg>ATMEnqN0)u-o; zCS{l^eVqCp1Y?ktkp+H?+@3|$&sO^ylGZjyGC;w*8Gfc*Ekcm+NjcPx)?ZPb8_^x4 zrEW)myIh@LzWauupB-bGqK2?pcd&WA9ipUML;OPbe}VXytO*_1Ve~=g-+hL2IdpGu zdrIzit3G{xuKF|t28$9lx6=<0w;Hkqw-LX`*NuihROQP}5Am=>=@zsk?CMj^z z5XdsVadtHs+9IgAEB-~TrVx`0VYIS(q6$}2A=*MZ=EA)(J*#OzkdWTVtlqd~LUR=( zLt9Uw5HTl_hN!H<%;fTyrOxZ{8k27Te{vr|m zIVUvUTK318l|Jgvb+X2z2UD0xMQw;M8UXQfuqhxqm2o-utu?a%?PEkK(!b=bEnT)n z9X+%FCDUJT$1XDDqa0IkMP}HXvD@NYGh5>0TE%~GS;u<@QR43NHgbpL=28S6<8tyJi|nyuOvBC zxDffFPVKkOH&x)pG>@qEBt}#Fyh9G26}2Tonl4;uASL|O{tRGm{2~!>u_g}%St^u- zL7!*}xpO`GD9sD#+mTkl7=}d<_fP;-`K<&H^Ei-bfTWc2rS7vidMkLy-}Hw5a-uK~0UE14;yYfH!s3Qmu+J&dg58 z+FMw247!k4u||7JYr^e>IHuFCSPiQD63Sn-7Zo86s7Ij@+Q{O2-M4`*pbq_(u~^t} zSyYXl=1ifbQ8B#b{Cm|}y&F`3)Fvh11G(?vhLg9sOiRzf5uIHC@!1=BA5eBOx&$P$ z8Ivn#Sap$$jPX=I<|2`)9vIUu5> z4AO6F#CuGJcTo*7&O-yh1*PHY&RxZUr?}sBlL85eXUVJr0i?FoB_h!9OGbx!;U&@W z`dpyl2O55$;RhOipy3A^exTt88h)VR2O55$;RhOipy3A^exTt88h)VR2O55$;RhOi z|0~0f{kRaGa3gn`(VUb%=)!1=2`R!b^t5Z*Xy66~!U(#|cX9kq^{E)sYj+zkQ|T95 zZ(CY*Yh0QubJw}DP(7{fwJ0YM5WCdblo{ybtxbA$!`Wo#>IY|GuWKLQHyynGY2*Kj z;kVok4VOi$BKK(f>6t`DR88>6Xt(%U6h_4o3_rCNZJbx(tzE}S;b-5X z1C$ru-ZlKrX}5iHt+`VTeQ2R$gtIp2i4A8&OKU{Xo)Bl?dgky@I^}M=^S%{i*N*o? zS%Tr`dgK;zuxi)vdv@mXIpo;(!(GGgd>jKXqr7YQbzG{vb^YK+od_Tz3c_Z?O$KBf zyA#xTv$ z1axI;Hj+F5Y@V4rq(urQ05!@1Ho%UHxkh`i+*G#GhWxvFuHCnFAl>(puhwwq z;&l7trm@OA*a(-U3b5WDxcCH@B69E|iiS?6x;QL5bWML+)69L0t`{p5NoR(T_wWx# zLyH|y0=h%ecO{P-OS6lnv_nwBQRR#Q=ZWy@L0SvWX1(lJnt55Sjzz)Mxcy)1iPT_*1bMhgNC2u}Sv1K(O-A&o zeQY0$?gBGixVwzESrSP^)SV~e%fc+}j!VEyPb3^>J*iH2oswHj>(r@@xd@ zK9KGM>ApXj?z>`}n!SFz0{6)E4$DCSsSr$)id_n@Jj#OzF;=u-DJa)4-Jq5<2h@-V ze(&n}%!>__dV@Ec24Z=>(tWBQ75@!%U&#N6?o-4B8&pk_fxhY5~z?5%_`zAyb9WAg(CI%Gi5c zoJ#SQUExu&>cgBeEq}{X{h1Yk9e-1wntouT1^Ks)(;2GFTTgADoJ?{{Jc;_wqX$ht zHwK!GF@~TQJ7&iD{x?IEDHZ_K?BkCcdoR%!yM9jmfB>9E2D)*LYHYv+^c5DmFB$@f zOgMt3-{4IawbGF+O(LQM7Eg-&!OxPeWzUU)8g2lbPgF=%g$ zY(tm+Nv*8z29?CKy3h^vTF8yN>)p^fdK3`}bw+kikHsMoe52^lhzSJ`+u*d8b#@kL z`q^#mupsOCXY+&nA9MW{Sn?Y+{ePzEH%Z)iUulA{ci31TaEyFwqzrvIy^pXYCeW@}f#zSSh!unctpo$lZx ztH~_SGBg!hyKi1zO+iv+VzhL6qT*Il1@$v^%v*b6Dp%7a!!q?w>h#79uRc_KmT7RY zwKrjFH62BjWfZ8>m(04BAzi?{Cn76SmQ4=%dqE76ejw=wl71lRN8fOlonog_o#dL6+3x4&in&hHT2&V#F!sQKb`)pBWqa}&*n5X zm`HOk)Kgi0(^){;Png6VbNr+I(OZJf{z8OnDvVGu-gWZh9^O zDncXoqt&eWLq3oQUt&=}l8DkSiqRL%V|BC(dLv*JPc|IIs0wR~dC?sw7O7oxjU(0+ zk~tIi*g5dz8A_}b0}G7ahGdVex-OF^WfZwX%V|li+)~D-TKL-;I9DVfsljX0#jIOr zqNTCa@zQ(a|99GN`|k(@gn;%V(0(k*D`%w8jR00WYBE^znlZXX`pq7)`Y$9) zy+z7(KOa%K)-wl~_xiKHZ*Ds9R}~0;S}!PuYmi=YCG0X zJo&_Co(2rrRNU?w3Fm-yHK}cH4X%BmfG3H;h7)8Por%iIq z+Au&~kML647fMccb(l@3IHNlSb4%D-xW~tr2UPw*Q6uF=ryE`k@>a`{rR;0b4vbsxC`k0f!-hJ{r#oAzpcM> z+CFo|{V}(zOZP#s)S7mGeoX8p3*@+AI-ill@-l~I0;B_Qa@Ujj8k`4IP=)q4bc z_4zg)cIGBf(5AQ}r`oRcqjj~rd`!;>70}nx?<4FTdA_%I)!b*J7C!Dnptd0d-e5O0@KZo}kC{un}A{}M!_F*#i^FA-sU%nf1I}qH2Cb=sX6@E{t6ce5~_gv><9GSfKSuqV|BX1TdNrOLbkDdiIJnd}KqS$Tw$;{HJ{}lk zKFvTlKO+&9`8_Q5ZzwEM@d!IBdzW!RtzoZ%n_lfH92&jz4^kPYC;yu-h`t_g(f1@zpfj6Ss^sg(job;*fY%PNPh| zC{e&;GRB5=7Ry-c=ln3DO);wOu1h2AhIVkVP`W3z=LsAcNg7rFVD&KdA*O2=%5djN zmBgzF!LyvqtQbvo z6}wWU1*iMm@D*Kyjd?qoYsC|i2R;u6l-1XKm@j+(`QxH{@R@DRhlbS;KfL_=0rPvazl@eOrf!b*NhHY}71!rHE$pS|z6eT) z|M{ewq@-I=YMh(SXJzcU8A4c|1+dtwX1HWOT=EqF;MlO|(Efq7MmmU6fuyiexT_Gnts6?SoWFF@vmRwpQ-}H4 z7&-a`x2SjF)Cx#Mui4g6UhvrAFUZ#rZH+oe6XU_heK~>ra4db8vJsNn>h+S}>uQ$g z5xfU!gCwn-)Hp6f1682hnCLElfIU3Em)e0b&-b?e>~ zTmaoD)N!_OC4NC~8udK0<3i8M{q@jv)Ra)?<>i%x&+P)hdS>S}`qc-dR8BM+B}M^_ zZK53c#^k*FjDyYkpv-bUXvw&4oQr7+%cmI)wN_)CS8)nbB@=TmK;fWhL2ik~tKd|MA8gKwO09*QOcJb(u(seqw>%%P-Vx(v;JuES|_ zrfFM!IcLvjo4LZws)rBf+bvO;V)0Bpm1ZTSw{zXkpSF6vZ=h8CHFCb2f*6sHeaMX^ zy5=ejAnN+6=WgePFf<=yI!fEHaJwMv>U^smd5=ZnU5dh6Pv%jAdo7#n%nIY4x!9?l z9_kD(Elwryeuj@NJ0CtTex%`g!ZKSmlb!bvNlTw=*x5jpktAfu6>~CLNvj7!On?ds zKT-UFDT`@><_bo)mf8fn2_#mwF||H1f>@UVs>sR)af{-;^t=vkT+T*1fi)LsUG(J( z0L4>YkL`#759}#ZES13~fZe}pj`Z=eWP$b^OUWps9l5%P9?LJ~Yvo72%oL)J1Rx3I zEI`*NG48F&QP}%5$MaHdferNEy$AU9^&TkufwCVc`#rlF`I_bRp@`Fv$w^Ycy{3?s z!+q=p>A2YxbV<{l<)RUT$nBOiHHY$U%~xdP%Mo)zvmxE&DzW6q7>+ImK8ayO^CLS8D(^t4Pt;4z67ddCff$t3=2BVzf`NsMiRQHE^>6)iuyyR1s5Z zo7$VxjOy!jX*4x&=!U#$ku_q`p{OFy)r%UFuht-oLfJtd5z?$@4)Y>B&XJsERV5E% z%;ygH;PXz;gqTTkOz1f|PQ!)wps3Hpsjw@=j*2+tQ1xW4n*fUU2rWH%P|`Iz=cAfA zucL8Z)HDgc&2j7LbYpNMIx->X_6{2;`{^Jfm2XoYK@ndCWj|2%17$x@_5)==Vts~aSY z=9-o*7hbg#@-ZFteE;d^JxE_hmo)53=9eL%){& z1`B>)_G|bjWxs$QWIyrWko}H>vR{hs1A`}(Yi|dOPQU7S^6>&F`^nkv9I=i-yz3Iq zDWAH`PJcYIQtD^~q+;MCZW|ZhWfM0GT%n81;rKQa;s>Y1BNd~j?ss% znkB`UNo+btM$^5Wg-&oknF<@RK^$p|mKek%s7vovBg$dJU=iC2c-utuvuW6z?X}W^ z<6$gn-e(3JR+t-+j<<8=hh`rU+7(Du#JZxdC|ez<=@_QPBwfPQ3OKtIZ_pdaZq?G@}d(9iK3=ttM= z^8@I|J&5}T`bmBR{lr1g4+Q;$=RnX81pV5R{z%X-^bI)=f73*}D)S?Z8GDGmLdAV* z#MO}$kJOWthULlUac~1pf1+ShsB|R$E29M!ILmJJIXowvWkJwS!=@Wbm$-9cE{7z}CYzk{1G!*s)jCrnl7xKl?e}Nd z%Vw%YaBB;aV)wILA|)W`=SC-Q!*gD@6kuSOYe4@0?8z{7wehbx0jj) z^0r++itZL=om|x?6lJ+TQSCj>sUk6a{E_ZP_bbS?)z(n=&mX=t1%|)JUt5|A${X!} z&rl6ODEoG-w_o+A?d$;XM1Txa17Tgn&fnsMFmKW?NiLpWp?gkz_>Mn0B%A@!o=6&r z3!%Ea=!=9WdF&I!)5jURoY zC!Oo9>%(KjasJ|tws5P3^gE9k?iU(DJd|L>Xl!X`LF^Ek6DzCH_XC6wYW@Gb#*>MG= zTNIrdZ7s3?c@iP%H^01?Pg5UPa+#Tdc-Qx$+)7IRN8e?$E0&p6$)ZMOY2_B)0bD+qWf* zGW%L~6rX$h^4a6E_pfSvDLD=Cw4B5hksrZWvAEpxnpU#U@ zP}|&@S-tD4G?%kdN*G{^6Sn3)FNqLJw5K0^T&UVD(e~)2CXB|0ZewW;gwc4pU7=c5 zT&Q(yn=l%4Dy}|1nRhi}YOwHAPuBIkVx{r$_g6n?-8-bTbyGwW`f;&IVrP4G!2P;o z_$$NZt*zfL(f-yUOL1fo$3hs56`E_QzmCQ*Eev5aUi1^xOQJAu#v>{h{Ut+_;3qM4 ztiy`|iof0`to+>$S&MeNCEoM~@ylm!#I9(dt)xOEwx;b$Jv2l^Z8eE}>=2J^?DtNW zmp<$MOLoY9m&Y;uhJz!G?=EB~nisfk;^Y~4oC;RHTo*#TF7|Z{$RsK;` z$PTCBwQLaX^JU78*#LlWUe7>G3flxs8(U0-60YDs-A6`JAc>{`6c<%tTn&;W00{T} zv?2%%e))hXzThT@QhBr6M^~6Aw&q>YK*z6E1lg09m)m_AO;;Sq1|?RHoJN0I8$4NE zDIs_{=hMbmAdTY2_#O8H;S)1wpY|2!ampzzROemWHn_E-^eOn{H5TGcLJs=0ZocYX z<=Fs=^N(||IAkvc9t))Xy&T;62RWFGC~GF<;8KVUJcXqR(>~uGEY)<3ai!z}Dbu4M|2-FpDRXnB6!HO$ zT0pW%p~Df8x!E8Jb!r+~ZDlIWu;;Y5hXYvmh#{2`HF)Y@RO!<{%XF!4Ho*B? z82)^${y7Z)tSJ#R`aq)(H2VJHM&HukhT+F#HpWZmLW}gfjkyHDeSdqob1-z-XE+q3i+H2PNJXY|td-H{bpj+UY7 z_@-6;Z3_N*a5D(?flwa|u%YeIxL(x!!U7HyY4j4aQsL+*iSGqJNFf!`BubT8vy33- zl1=P!>fvCmg)yino@rQqxagwSk2jr3;>XNeGw3H)rNSD9b5=T(f0Rl;%}U1$zLPx^ ztt__IXKL>Hy;RDip8_9ruwNwuqM~!xHNta$kV^kIP~TC{_PHpD`pa(*`FK}GG&+>Q zfua6Kk0o1267;0W=+xThyC@!nN|%Td8_ITBFzAU@5151~_7|&$ueJ*EC@*z?{#+&Z zY|!3Nc1H9NCD4N5440kktAoqbMz>tum^I`K-h8J<9JV^{C-GF}S-IwRz|#J)XW?em zJetxk&1u|%!o5op8@B2N!n`oy*zEmdd7U=xVsU^&Ai zbu4Wbn#2tX)bztCxGA+)>(LN4#8d{BeLHb;N7G4_C`-~;N4vA!J2u4zBOV}A^?JX9 z6r99BgHmtAc-8w%m}7KZz(|Ic_@mb$(tN}>EQSmamc^Ab{dQM*MYWXb2ZERHzYneJ z?O^SHLwUocAY>)NUa62SjIPuj0r7rKQNT^?Gk-?iRqp}x3fI$P^}dLbj6m5LC#}__ zrO4Q`DT=1H&1Z8|*&ZbNlfAK^F}G4^DtpAU3{8dB?wglaQ;<}d7%iQisJPWsLH$e}^VXi2%GETv;BIq z8~22oS0y8G*6dQydn#D|7`X-vsn{{w0L`jox_eg}9G$y^G)3(r?`Y`13pNgYcHud- zV~{J4-HRd3ci5r}nXXi)752aAi772ADan;P*A{2X-&v4&e%?t#cVwu(Yfrn^f=E1_ znxibUynn-}NNf_^-lgn9+t~DZ{h}v$N5h2C(YIa$Z7^j` zT-S7ge+em+00||89(s`ykS0X}gx--ZBE3l$5qlCKARq(;1VjX>DoU>+(z^;swNj<1 zR4G;tuC;cZYi9O2Q_h@y_#5DQ^1aXfzV}agV4CT|ZabE#B39pIhUMmNhqzfqoZY|- z`q6GDF0mrP+hmsO)oz!{vx>yC1G9YJcDwORmDCuMIYI6(JqBi#DK`e@MAg3ZS|nDc z7MsjV9{-R$4vwYxICeKn_aIMpFCt*zx?00PsJvUjw&J6;z&8`=cM#_KnR?#FAV zHWGVaOgA_7aKU5aAb-0{xyTmt*19&d4q4C-W0f}4Cm)WK=8?T#=ypQ9>b3sPT!+stEw2_NEiTt zcdEy3H5_=22VSH5f!8>r89C)D5Xfr4b(AAzIGPX%zv`+9tntUGJP`V_c3mrlmdL5? z5vDkT`M|@XLsBnPlp1-x_%*jZnr9trk=+YBFN)m1M@l0mE||JqPld^NxNU)Z*;70f zC@Rc?l0L24Y;;5&E&?>3jaEp=N+aHP1(5T)514kx$S9n6n30qd~!k~HG@LsA^Y394SsY8ec9cC_R`Z%&63h9-PX- z9e9lgUgMX&r%&Z#vaTL@jR#)if!C;T;5D{H3n@uzPm%y6NV?*R_}JNG{djmQjEgl@ z_P}dA@EQ-i#sjbMz-v748VAk@=w8K0AZMbI1P;8$1F!Lave$^}XhC-15FN-3Hp{id z3SP-owmZY?FL{?ST64f2718UmA$k%;r^#KCtBE|pGW&63F=G*9$slt4Gdu**ixeA5 zImCgKmK_9msL(!S7yCNcG~@$5DRCqawU(=H_zrc1U(6|t3&s?p(1*;=*?RPep=NE1 z3AJ6_s+%Z{%*sKXlc0+e_~iGbt{uCHPX4T*Dg4w^RpW1o#|x`BZzr;x=11W)xu0Dw z^cFxidMzd;^>znuUS|fjESMOkw^5*-B$5zPKt-#(P%E4W$U8%{x)Hhp$xfuRw49r zI8X}!z?!`h00C{g+JHCB(cE?`uVdebnIgO%I5ecPUIH1UBLvMGIhCb4eDg?nB#k+4 z#ln8Wqc2VRYrwh4q4&3=u+-^i8;NdZ4 zLn>)9kKsT0^WwCqskw=lKj)I`4rx{C{n4+1j*IG)VZ1ihE)_)7_{tZx-x>Gl9@8E7 z6$YtHSBSefj#S%-Z0iwy2?ES`ZsK&=?L6d!?oWiS)iN^C;6WsR$P^gxar*@3Jr0pK z5IA0a%0MWIAa5ulCuGvtl^!K;Bq6~XY;-N+HEq(N>hels*(aqB43~QRXxXiuLVPkk z&A574aqprIo7HthnMDGEj+8uQAVU{xF$Ynw(7JKwm^KVOgWtn)!9A-jvGE@FEq1vu z>v#BhI~88+I)Cg#8;U^ktP;_K)z-%r`aX@sGvN$SG4?i!whkh*)%VSBsU_#B!z;;6 zwq-clw3BF~U|aVj-SC2&UL$zyMT}&R8Vug1lj|8i9W9^$?+eF9L0A+WLXy9Gy}p|T zZQ%#Dm)Zr6_uzb#6Y9k~oGz?J8}OasZQSaI+0x`9`5=D8dWy@bMJa$yiPrTZKSjlX z&d*Kyb*5k!X7&VkbPEMn-{eBDIxIR_duB$p!6T`h$0v1M(9Pa6bM`!QpY?3VMsM`J zTMgc~pT42wkRcm20@6$&J}I|vm?<66bKvXYz493#?im-At(==sx#STmioi~3A>)uh+0vqNT^leSg+xN^g?1Wdp!Z%=i5(zMQY^=4gmM4{@F#RZ` zTObun4B(WU3h9^CG!2M(Ng2n&!n)MMWIynwx<#tmKNEPN>;3plU04SlIEGP`M1xc~ zt8wO40D@ zssc?QCFCim{GN}PN;KSd@C@-4EgM=}iy^#x?@Wx#;KPV@=~JA-=v7h<+-9+gQ!B~@ zh3cU9oKS^KNz=A~Gw?mcR%M8*Kzx=fGCx#Z%VA22Q6&|bCf>-ld`-a2$&Jls43v$t zh_mx&KvmT1Hv1;WpMK_>!N<7;kWH^|i ze{_2&=}G}DFX)JYHhP#ELlCC+gxnw~4JRi>c?gRfF*LFrPPx%Bhu9fKhkFcPzYXye z*X2|_lQ5iGOqjo$nr>ukBuf7vYQCcFFp{}*INfY|5J%R^is=22{=}m%IwcP=%;TQk zLMXB-XU+0ZVwLO+_EPZNi1XaF+V>i>X%#sH8Gt4-`elcgiirFJPnF0++%)){A`!E2 znF1r2YuBNS3U1HRs#_jxFj+a8Y$R`_4$O5hP&@3o+)q5Vtz1-#y%8BHGm^(_sm;On zo7Z@Uqti!EvC%Ryd?cSA>T95@YL${cQXr=5Yh=@Cm0mkiC>!l-;;DKpYiy)QxzpF| zOyjYf?U7q1qVd$yzZ>^l8yYZ`4HhL7Gq z2|Z=sscKu9K3eLnd&+UN(YCgB^g&ScDW`c=yT-B6hi5xaId3)EHE)lWU4i<$K-KKq z&|~E>y8dqLkLuDP0r*Q5iz@4tGmDyE#-4xC z|Mp8`UGo}m?8RB*cRya%J=tZCy}a4~4)m?A1%MHWG$vC}?)p~Rz=c!j$jnJj0D$lE z>(ZA`_t`|X^N!(Sq&KEf@e}Q$OzRZm(izq&l}>C9?N!6`P)YnWy;9fuwKLi7e5(`P z8nDX58-qxfAF&_?`<6ZAd<#*;J3|WNwUK;1n?S-&_Ayk*r&MImOP`#?Ixt~@me-!r zS2Fv(wm0xy3Ge0ae;EigJDv7UYC$Fb+_Uh9n_1JZy;L_jpI09EIPqfGHL zT9#7rWQC@}6Es>}I;uPKk~A)D4=M4CKntnHV%kDvh6Y$E_a{LFFS`!9It8AHweDu7 z19kA}uyjCNI7H=@(3H_?CJqiYYw{a$=Qdq7zpP?iUj zS45!U?7(LZuYRp0uqCc zI)iWkeb}B-rR=`P9xtVXi3U^YX`^UZT5g$PLbWKt{tiOD+C!pV$cGvQP)Tvx4M92p zjqXTESD@W6qD8HMh@SOAe0p))WDY08RDp&WEh9>wkMt)4=FBLzS7#nXTT3`XLg%&9 zA;Nq_3&my#5t}Dc&5m454XaSH6PLVfC7y&iEzrPo^)Qr7@O10QcoEfO zBy5Ykt>r;et5v`c!jb5$8NiC_v6Tg2e1gib0M1A2Zne#x;ltzu%F>hus@cLO0hd|T16bmnQVE1ye)lU@rF=P!OWp|p! zofGuD5{xVdIl3Sw-mZneSz;$KvGSvOgEg5f*NzR7^X1;c&&n}YEMfO#CtHz-Q!i!_ zc^lEg_QXCjLJFx_#L%}3npn2^n`wH2#jmKPBY;B|QDkW%0D%XwksW8=@JyK6$O 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⪻K`^{ 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

h0HU%y5pvw_Cc7Wu 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¥YgtVrefXp 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Ⓢ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%0Dj<3IS*&)MVlp*W4!m2iJVL!4{zD}OCA-m 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

l(t-CX_K=-P*mg?Bsog%i~2FNx^ zT1`rfLyAn)#!}uf3*TJ-08=pXQHMOQIf zh9l>3)j`_kU&t5BJ|t@H7`)&amB8n2f5xsP&dp`C2~+Uy%$1ykOpl@Jm;V-A;F`3a zJ3{FsZv~S&r3UHGmGt}8!M`SHusheg&GJVI+r6ST`vxA#&6&gq}y zIaJzTepT#Ry%kWR*VkZzwRLhd@%1|bgyAG1E}N_-*+2aM(z^`j2iLA zD=dk?9ea${Y1aIGK0f5I^|Q67J|$LZ^Xs3$2d60qe<8cE2U@Rb`}{3CrKWMjrMW{7 z|Mp!qv`ciZmj}efU%ZlF+i30&+HlPpEau37OYdHS4#D+ON#cXD9NUMh88@*Dn#e|kfoC2`9QiGc#g#3|ba zrh_!8`0e~mirKlL#-|0|U(-v=9vD@-g&KLo*8{c3?@9b-tX*>7T{wrGeRs=8c1ZuH zVJdlz4JnI>MIUM5Sm-|f>Xf=6YGt-t_TCe5_Y7+>_9-?BanSAG3 z34FKDb`Kb2)tU^7hSY72_GtjI#@8S<5b&ZIWzPi4VaROrWOfXv9**GD>GE$rKpYe@ zhiTca1)1YVnG@LeN~A6xCwC#r_fUPW&R-)k*Ux?a)CkEA|l~F`3}(0-nr)AJD-Ih=&Aa`4LgXG&gLvePvz_BsI1q z8O%y%+)v1p>ox2=zf#FdPm7fW9m>K1dPQxK+WGLEw1nmKd#tEb;;%VwE+QT9Zn@>|U(Z;%I<5C)1 zMbkW^O)b+Nt#3|0p_8c4nO&hzNMkY4<(mSAd%oNRul1Cud4`}F&xaZl_?rl3g9D7e zTn>G`5c;bDor9#m+C^U^(SM_jvt#LRvgq%M=)Vi;?0Wj!Zu%cm`kxv)FiU^GOkZ86 z|79?dVBj(6cC8oBiY?@8i^A6O_@6r_N_xZis)@Cxu&>Ku|BAyl48noCVI{K@U)CoI zq#!&Qx~Wohc$2!dlh7-Zup5(l_rvv>;oQXV%IiiD^w5?BR^?7WjEvABM?B}8{g|3zCzT~Im`7V^sv{;jojFVEfH($Yz&ex!YCKE{AGU|ew~A4)mwu0 zG6g}u@OL}%i*w6|FwDHhv1?7<*-*Qw&G?^YpEl(tDy0+{AR&5J=taE+`j%S5 zvC*W-X!eqJc$dTZa)H>Rm|7vcyjDKq47CMVMdzb$;sp?-K5V}K;UjI*ec_9YnOkmF aiNSo#hZ)RZ+YYjF6h9e%MZf|8&;J4(5}9!T literal 0 HcmV?d00001 diff --git a/Minimax/Resources/image1.jpg b/Minimax/Resources/image1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6e9388bef7647a8e00c8d6cfc12c05f7bbdb62b9 GIT binary patch literal 58547 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 literal 0 HcmV?d00001 From 4f0a1df2f7be7a29d57a6babf2e514a69f953227 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Nowak?= Date: Wed, 23 Jun 2021 23:03:34 +0200 Subject: [PATCH 6/7] Add author on the end of README file --- Minimax/README.md | 3 + .../Sources/Minimax.playground/Contents.swift | 2 +- .../Sources/Model/Board/Board.swift | 87 +++++++++--------- .../Sources/Model/Board/BoardStatus.swift | 6 +- .../Model/GameModel/DifficultLevel.swift | 6 +- .../Sources/Model/GameModel/GameModel.swift | 38 ++++---- .../Model/Minimax/GameStateValue.swift | 6 +- .../Sources/Model/Minimax/Minimax.swift | 48 +++++----- .../Sources/Model/Player/Player.swift | 4 +- .../Sources/Model/Player/PlayerSymbol.swift | 6 +- .../Sources/Model/Player/PlayerType.swift | 4 +- .../Sources/View/BoardView.swift | 88 +++++++++---------- .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++ .../xcshareddata/WorkspaceSettings.xcsettings | 8 ++ Minimax/Sources/Tests/Tests/BoardTests.swift | 78 ++++++++-------- .../Sources/Tests/Tests/MinimaxTests.swift | 28 +++--- Minimax/Sources/Tests/Tests/PlayerTests.swift | 10 +-- 17 files changed, 220 insertions(+), 210 deletions(-) create mode 100644 Minimax/Sources/Minimax.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/Minimax/README.md b/Minimax/README.md index 2dd47ee23..974c0d32d 100644 --- a/Minimax/README.md +++ b/Minimax/README.md @@ -67,3 +67,6 @@ function alphabeta(node, depth, α, β, maximizingPlayer) is ## Sources * Minimax algorithm: https://en.wikipedia.org/wiki/Minimax * Alpha-beta prunning: https://en.wikipedia.org/wiki/Alpha–beta_pruning + +## Author +Written by Michał Nowak(mnowak061) diff --git a/Minimax/Sources/Minimax.playground/Contents.swift b/Minimax/Sources/Minimax.playground/Contents.swift index fc7ee8cea..e6508923c 100644 --- a/Minimax/Sources/Minimax.playground/Contents.swift +++ b/Minimax/Sources/Minimax.playground/Contents.swift @@ -3,6 +3,6 @@ import PlaygroundSupport let boardSize = CGSize(width: 500, height: 550) let boardView = BoardView(frame: CGRect(origin: .zero, size: boardSize)) - + PlaygroundPage.current.needsIndefiniteExecution = true PlaygroundPage.current.liveView = boardView diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift index 7e50a19a3..3b637df85 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board/Board.swift @@ -1,21 +1,21 @@ public struct Board { // MARK: -- Public variable's public var size: Int - + // MARK: -- Private variable's private var table: [ [PlayerSymbol?] ] - + // MARK: -- Public function's public init(size: Int) { self.size = size self.table = [] self.clear() } - + public mutating func clear() { self.table = Array(repeating: Array(repeating: PlayerSymbol.empty, count: size), count: size) } - + public func hasEmptyField() -> Bool { for i in 0 ..< self.size { for j in 0 ..< self.size { @@ -26,93 +26,89 @@ public struct Board { } return false } - + public func symbol(forPosition position: Position) -> PlayerSymbol? { guard position.row < self.size, position.column < size else { return nil } return self.table[position.row][position.column] } - + public mutating func makeMove(player: Player, position: Position) { guard self.symbol(forPosition: position) == PlayerSymbol.empty else { return } guard self.symbol(forPosition: position) != player.symbol else { return } - + self.table[position.row][position.column] = player.symbol } - + public func check(player: Player) -> BoardStatus { let playerSymbol: PlayerSymbol = player.symbol - - if self.foundWinInRows(playerSymbol) { return BoardStatus.win } + + if self.foundWinInRows(playerSymbol) { return BoardStatus.win } if self.foundWinInColumns(playerSymbol) { return BoardStatus.win } - if self.foundWinInSlants(playerSymbol) { return BoardStatus.win } - - if self.hasEmptyField() { return BoardStatus.continues } - else { return BoardStatus.draw } + if self.foundWinInSlants(playerSymbol) { return BoardStatus.win } + + if self.hasEmptyField() { return BoardStatus.continues } else { return BoardStatus.draw } } - + // MARK: -- Private function's private func foundWinInRows(_ playerSymbol: PlayerSymbol) -> Bool { for i in 0 ..< self.size { var theSameSymbolsInRowCount = 0 - + for j in 0 ..< self.size - 1 { - if self.table[i][j] == self.table[i][j+1] && (self.table[i][j] == playerSymbol){ + if self.table[i][j] == self.table[i][j+1] && (self.table[i][j] == playerSymbol) { theSameSymbolsInRowCount += 1 - } - else { + } else { theSameSymbolsInRowCount = 0 } } - + if theSameSymbolsInRowCount == self.size - 1 { return true } } - + return false } - + private func foundWinInColumns(_ playerSymbol: PlayerSymbol) -> Bool { for j in 0 ..< self.size { var theSameSymbolsInColumnCount = 0 - + for i in 0 ..< self.size - 1 { - if self.table[i][j] == self.table[i+1][j] && (self.table[i][j] == playerSymbol){ + if self.table[i][j] == self.table[i+1][j] && (self.table[i][j] == playerSymbol) { theSameSymbolsInColumnCount += 1 - } - else { + } else { theSameSymbolsInColumnCount = 0 } } - + if theSameSymbolsInColumnCount == self.size - 1 { return true } } - + return false } - + private func foundWinInSlants(_ playerSymbol: PlayerSymbol) -> Bool { var theSameSymbolsInSlantCount = 0 - + for i in 0 ..< self.size { for j in -(self.size - 1) ... 0 { - if(self.table[-j][i] == playerSymbol){ + if(self.table[-j][i] == playerSymbol) { var k: Int = -j var l: Int = i theSameSymbolsInSlantCount = 0 - + while l < self.size && k >= 0 { if self.table[k][l] == playerSymbol { theSameSymbolsInSlantCount += 1 - } - else { + } else { theSameSymbolsInSlantCount = 0 } k -= 1 l += 1 - + if theSameSymbolsInSlantCount == self.size { return true } @@ -123,37 +119,36 @@ public struct Board { } theSameSymbolsInSlantCount = 0 } - + theSameSymbolsInSlantCount = 0 - + for i in 0 ..< self.size { for j in 0 ..< self.size { - if(self.table[j][i] == playerSymbol){ + if(self.table[j][i] == playerSymbol) { var k: Int = j var l: Int = i theSameSymbolsInSlantCount = 0 - + while l < self.size && k < self.size { if self.table[k][l] == playerSymbol { theSameSymbolsInSlantCount += 1 - } - else { + } else { theSameSymbolsInSlantCount = 0 } k += 1 l += 1 - + if theSameSymbolsInSlantCount == self.size { return true } } - theSameSymbolsInSlantCount = 0; + theSameSymbolsInSlantCount = 0 } - theSameSymbolsInSlantCount = 0; + theSameSymbolsInSlantCount = 0 } - theSameSymbolsInSlantCount = 0; + theSameSymbolsInSlantCount = 0 } - + return false } } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift index ead629d0f..d09fc7840 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Board/BoardStatus.swift @@ -1,8 +1,8 @@ public enum BoardStatus { - + case continues - + case win - + case draw } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift index 3ba50327a..e246d7f61 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/DifficultLevel.swift @@ -1,8 +1,8 @@ public enum DifficultLevel: Int { - + case easy = 2 - + case medium = 3 - + case hard = 5 } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift index 7d958b510..bacd3c899 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/GameModel/GameModel.swift @@ -5,36 +5,36 @@ public class GameModel { public var board: Board! public var gameStatus: BoardStatus - + // MARK: -- Private variable's private var playersList: [Player]! - + private var movementsSequence: [Int]! - + private var actualPlayerIndex: Int! - + private var actualPlayer: Player { get { return playersList[actualPlayerIndex] } } - + private var difficultLevel: DifficultLevel = DifficultLevel.hard - + // MARK: -- Public function's public init(boardSize: Int, playersList: [Player], difficultLevel: DifficultLevel) { self.board = Board.init(size: boardSize) self.playersList = playersList self.difficultLevel = difficultLevel self.gameStatus = BoardStatus.continues - + self.generateMovementsSequence() self.changeActualPlayer() } - + public func update() { self.gameStatus = board.check(player: actualPlayer) - + switch self.gameStatus { case BoardStatus.continues: changeActualPlayer() @@ -43,49 +43,49 @@ public class GameModel { default: break } } - + public func playerMakeMove(selectedPosition: (row: Int, column: Int)) { guard board.symbol(forPosition: selectedPosition) == PlayerSymbol.empty else { return } guard board.hasEmptyField() == true else { return } - + board.makeMove(player: actualPlayer, position: selectedPosition) update() } - + public func makeMinimaxMove() { guard actualPlayer.type == PlayerType.computer else { return } guard board.hasEmptyField() == true else { return } - + sleep(1) let selectedPosition: Position = minimaxMove(board: board, player: playersList[0], opponent: playersList[1], depth: self.difficultLevel.rawValue) board.makeMove(player: actualPlayer, position: selectedPosition) update() } - + public func newRound() { board.clear() gameStatus = BoardStatus.continues generateMovementsSequence() changeActualPlayer() } - + // MARK: -- Private function's private func generateMovementsSequence() { self.movementsSequence = [] - + let playersCount = playersList.count let movesCount = (board.size * board.size) - + var move = Int.random(in: 0 ..< playersCount) movementsSequence.append(move) - + for _ in 0 ..< movesCount - 1 { move += 1 movementsSequence.append(move % playersCount) } } - + private func changeActualPlayer() { if !movementsSequence.isEmpty { actualPlayerIndex = movementsSequence.first! diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift index 6a03f02ab..6924d0c1c 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/GameStateValue.swift @@ -1,8 +1,8 @@ public enum GameStateValue: Int { - + case min = -1 - + case null = 0 - + case max = 1 } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift index 43a07ff98..6a597e774 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Minimax/Minimax.swift @@ -1,88 +1,86 @@ public func minimaxMove(board: Board, player: Player, opponent: Player, depth: Int) -> Position { var bestVal = GameStateValue.min var bestMoves: [Position] = [] - + for i in 0 ..< board.size { for j in 0 ..< board.size { if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { var tempBoard = board let move = Position(i, j) - + tempBoard.makeMove(player: opponent, position: (i, j)) let moveVal = minMax(board: tempBoard, player: opponent, opponent: player, depth: depth, alpha: GameStateValue.min.rawValue, beta: GameStateValue.max.rawValue, maximizingPlayer: false) - + if moveVal.rawValue > bestVal.rawValue { bestVal = moveVal bestMoves = [] bestMoves.append(move) - } - else if moveVal == bestVal { + } else if moveVal == bestVal { bestMoves.append(move) } } } } - + return bestMoves[Int.random(in: 0 ..< bestMoves.count)] } public func minMax(board: Board, player: Player, opponent: Player, depth: Int, alpha: Int, beta: Int, maximizingPlayer: Bool) -> GameStateValue { var alpha = alpha var beta = beta - + if let gameResult = evaluateGameState(board: board, player: player, opponent: opponent) { guard depth != 0 && gameResult != GameStateValue.min && gameResult != GameStateValue.max && gameResult != GameStateValue.null else { return gameResult } } - + if maximizingPlayer { var maxEval = GameStateValue.min - + for i in 0 ..< board.size { for j in 0 ..< board.size { if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { var tempBoard = board tempBoard.makeMove(player: player, position: Position(i, j)) - + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth - 1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) - + maxEval = GameStateValue(rawValue: max(maxEval.rawValue, eval.rawValue))! alpha = max(alpha, eval.rawValue) - + if beta <= alpha { break } } } } - + return maxEval - } - else { + } else { var minEval = GameStateValue.max - + for i in 0 ..< board.size { for j in 0 ..< board.size { if board.symbol(forPosition: Position(i, j)) == PlayerSymbol.empty { var tempBoard = board - tempBoard.makeMove(player: opponent, position: (i,j)) - + tempBoard.makeMove(player: opponent, position: (i, j)) + let eval = minMax(board: tempBoard, player: player, opponent: opponent, depth: depth - 1, alpha: alpha, beta: beta, maximizingPlayer: !maximizingPlayer) - + minEval = GameStateValue(rawValue: min(minEval.rawValue, eval.rawValue))! beta = min(beta, eval.rawValue) - + if beta <= alpha { break } } } } - + return minEval } } @@ -90,13 +88,11 @@ public func minMax(board: Board, player: Player, opponent: Player, depth: Int, a public func evaluateGameState(board: Board, player: Player, opponent: Player) -> GameStateValue? { if board.check(player: player) == BoardStatus.win { return GameStateValue.max - } - else if board.check(player: opponent) == BoardStatus.win { + } else if board.check(player: opponent) == BoardStatus.win { return GameStateValue.min - } - else if board.check(player: player) == BoardStatus.draw || board.check(player: opponent) == BoardStatus.draw { + } else if board.check(player: player) == BoardStatus.draw || board.check(player: opponent) == BoardStatus.draw { return GameStateValue.null } - + return nil } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift index 9758811f0..4236b7b0b 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/Player.swift @@ -1,9 +1,9 @@ public struct Player { // MARK: -- Public variable's public var type: PlayerType - + public var symbol: PlayerSymbol - + // MARK: -- Public function's public init(type: PlayerType, symbol: PlayerSymbol) { self.type = type diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift index 27b4b23e8..3f858db15 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerSymbol.swift @@ -1,8 +1,8 @@ public enum PlayerSymbol: String { - + case empty = "" - + case circle = "⭕️" - + case cross = "❌" } diff --git a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift index 65651ca39..01a65094d 100644 --- a/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift +++ b/Minimax/Sources/Minimax.playground/Sources/Model/Player/PlayerType.swift @@ -1,6 +1,6 @@ public enum PlayerType { - + case computer - + case human } diff --git a/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift index 5d1c5743c..68e86409f 100644 --- a/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift +++ b/Minimax/Sources/Minimax.playground/Sources/View/BoardView.swift @@ -3,10 +3,10 @@ import UIKit public class BoardView: UIView { // MARK: -- Public public var gameModel: GameModel! - + public var players = [Player(type: .human, symbol: .circle), Player(type: .computer, symbol: .cross)] - + // MARK: -- Override's public override init(frame: CGRect) { super.init(frame: frame) @@ -16,33 +16,33 @@ public class BoardView: UIView { self.setupIndicator() self.startGame() } - + required init?(coder: NSCoder) { super.init(coder: coder) } - + // MARK: -- Private private var buttons: [UIButton] = [] - + private var stackView: UIStackView! - + private var resetButton: UIButton! - + private var indicator: UIActivityIndicatorView! - + private func startGame() { self.gameModel = GameModel.init(boardSize: 3, playersList: self.players, difficultLevel: .hard) - + DispatchQueue.global(qos: .userInteractive).async { - + self.blockViewForUser() - + self.gameModel.makeMinimaxMove() - + self.unblockViewForUser() } } - + private func updateUI() { if gameModel.gameStatus != BoardStatus.continues { self.resetButton.setTitle("New game", for: .normal) @@ -52,10 +52,10 @@ public class BoardView: UIView { } boardToButtons() } - + private func boardToButtons() { var buttonIndex = 0 - + for row in 0 ..< 3 { for column in 0 ..< 3 { let symbol = gameModel.board.symbol(forPosition: Position(row, column)) @@ -67,7 +67,7 @@ public class BoardView: UIView { } } } - + private func setupBoard() { self.stackView = UIStackView() self.stackView.translatesAutoresizingMaskIntoConstraints = false @@ -75,14 +75,14 @@ public class BoardView: UIView { self.stackView.alignment = .fill self.stackView.distribution = .fillEqually self.stackView.spacing = 10 - + self.addSubview(self.stackView) - + for index in 1 ... 3 { let boardRow = self.createBoardRow(rowNumber: index) self.stackView.addArrangedSubview(boardRow) } - + // constraints let constraints = [ self.stackView.topAnchor.constraint(equalTo: self.topAnchor, constant: 10), @@ -92,7 +92,7 @@ public class BoardView: UIView { ] NSLayoutConstraint.activate(constraints) } - + private func createBoardRow(rowNumber: Int) -> UIStackView { let stackView = UIStackView() stackView.translatesAutoresizingMaskIntoConstraints = false @@ -100,7 +100,7 @@ public class BoardView: UIView { stackView.alignment = .fill stackView.distribution = .fillEqually stackView.spacing = 10 - + for index in 1 ... 3 { let button = UIButton() let id = String(index + ( (rowNumber - 1) * 3 ) ) @@ -108,59 +108,59 @@ public class BoardView: UIView { button.backgroundColor = .lightGray button.titleLabel?.font = UIFont(name: "Helvetica", size: 50) button.addTarget(self, action: #selector(buttonPressed(_:)), for: .touchUpInside) - + self.buttons.append(button) stackView.addArrangedSubview(button) } - + return stackView } - + private func blockViewForUser() { DispatchQueue.main.async { self.resetButton.isHidden = true self.indicator.isHidden = false self.indicator.startAnimating() - + self.blockButtons() self.updateUI() } } - + private func unblockViewForUser() { DispatchQueue.main.async { self.unblockButtons() self.updateUI() - + self.resetButton.isHidden = false self.indicator.isHidden = true self.indicator.stopAnimating() } } - + @objc private func buttonPressed(_ sender: UIButton) { let position = buttonIDtoPosition(id: sender.restorationIdentifier!) - + DispatchQueue.global(qos: .userInteractive).async { self.gameModel.playerMakeMove(selectedPosition: position) - + self.blockViewForUser() - + self.gameModel.makeMinimaxMove() - + self.unblockViewForUser() } } - + private func setupResetButton() { self.resetButton = UIButton(type: .system) self.resetButton.translatesAutoresizingMaskIntoConstraints = false self.resetButton.setTitle("Reset", for: .normal) self.resetButton.backgroundColor = .lightGray self.resetButton.addTarget(self, action: #selector(resetButtonPressed(_:)), for: .touchUpInside) - + self.addSubview(self.resetButton) - + // constraints let constraints = [ self.resetButton.topAnchor.constraint(equalTo: self.stackView.bottomAnchor, constant: 10), @@ -169,20 +169,20 @@ public class BoardView: UIView { ] NSLayoutConstraint.activate(constraints) } - + @objc private func resetButtonPressed(_ sender: UIButton) { self.gameModel.newRound() self.clearButtons() self.startGame() } - + private func setupIndicator() { self.indicator = UIActivityIndicatorView() self.indicator.translatesAutoresizingMaskIntoConstraints = false self.indicator.backgroundColor = .lightGray - + self.addSubview(self.indicator) - + // constraints let constraints = [ self.indicator.topAnchor.constraint(equalTo: self.stackView.bottomAnchor, constant: 10), @@ -191,7 +191,7 @@ public class BoardView: UIView { ] NSLayoutConstraint.activate(constraints) } - + private func buttonIDtoPosition(id: String) -> Position { switch id { case "1": @@ -216,20 +216,20 @@ public class BoardView: UIView { return Position(0, 0) } } - + private func clearButtons() { for button in self.buttons { - button.setTitle("", for: .normal); + button.setTitle("", for: .normal) button.isUserInteractionEnabled = true } } - + private func unblockButtons() { for button in self.buttons { button.isUserInteractionEnabled = true } } - + private func blockButtons() { for button in self.buttons { button.isUserInteractionEnabled = false diff --git a/Minimax/Sources/Minimax.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Minimax/Sources/Minimax.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..08de0be8d --- /dev/null +++ b/Minimax/Sources/Minimax.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded + + + diff --git a/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000..08de0be8d --- /dev/null +++ b/Minimax/Sources/Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded + + + diff --git a/Minimax/Sources/Tests/Tests/BoardTests.swift b/Minimax/Sources/Tests/Tests/BoardTests.swift index f287e1732..e07f35d07 100644 --- a/Minimax/Sources/Tests/Tests/BoardTests.swift +++ b/Minimax/Sources/Tests/Tests/BoardTests.swift @@ -1,137 +1,137 @@ import XCTest class BoardTests: XCTestCase { - + private var sut: Board! - + private var boardSize = 3 - + override func setUp() { super.setUp() sut = Board(size: boardSize) } - + override func tearDown() { sut = nil super.tearDown() } - + func testInit() { XCTAssertEqual(sut.size, boardSize) XCTAssertEqual(allFieldsAreEmpty(), true) } - + func testSymbolForPosition() { let player = Player(type: .human, symbol: .circle) let position = Position(0, 0) - + sut.clear() XCTAssertEqual(sut.symbol(forPosition: position), PlayerSymbol.empty) - + sut.makeMove(player: player, position: position) XCTAssertEqual(sut.symbol(forPosition: position), player.symbol) } - + func testClear() { let player = Player(type: .computer, symbol: .circle) let position = Position(0, 0) - + sut.makeMove(player: player, position: position) - + XCTAssertEqual(allFieldsAreEmpty(), false) - + sut.clear() - + XCTAssertEqual(allFieldsAreEmpty(), true) } - + func testHasEmptyField() { let player = Player(type: .computer, symbol: .circle) - + sut.clear() - + XCTAssertEqual(sut.hasEmptyField(), true) - + sut.makeMove(player: player, position: Position(0, 0)) sut.makeMove(player: player, position: Position(0, 1)) sut.makeMove(player: player, position: Position(0, 2)) - + sut.makeMove(player: player, position: Position(1, 0)) sut.makeMove(player: player, position: Position(1, 1)) sut.makeMove(player: player, position: Position(1, 2)) - + sut.makeMove(player: player, position: Position(2, 0)) sut.makeMove(player: player, position: Position(2, 1)) sut.makeMove(player: player, position: Position(2, 2)) - + XCTAssertEqual(sut.hasEmptyField(), false) } - + func testMakeMove() { let firstPlayer = Player(type: .human, symbol: .circle) let secondPlayer = Player(type: .human, symbol: .cross) let position = Position(0, 0) - + sut.clear() sut.makeMove(player: firstPlayer, position: position) sut.makeMove(player: secondPlayer, position: position) - + XCTAssertEqual(sut.symbol(forPosition: position), firstPlayer.symbol) } - + func testCheck() { let firstPlayer = Player(type: .computer, symbol: .circle) let secondPlayer = Player(type: .computer, symbol: .cross) - + sut.clear() - + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.continues) XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) - + sut.clear() sut.makeMove(player: firstPlayer, position: Position(0, 0)) sut.makeMove(player: firstPlayer, position: Position(0, 1)) sut.makeMove(player: firstPlayer, position: Position(0, 2)) - + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) - + sut.clear() sut.makeMove(player: firstPlayer, position: Position(0, 0)) sut.makeMove(player: firstPlayer, position: Position(1, 0)) sut.makeMove(player: firstPlayer, position: Position(2, 0)) - + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) - + sut.clear() sut.makeMove(player: firstPlayer, position: Position(0, 0)) sut.makeMove(player: firstPlayer, position: Position(1, 1)) sut.makeMove(player: firstPlayer, position: Position(2, 2)) - + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.win) XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.continues) - + sut.clear() sut.makeMove(player: firstPlayer, position: Position(0, 0)) sut.makeMove(player: secondPlayer, position: Position(0, 1)) sut.makeMove(player: secondPlayer, position: Position(0, 2)) - + sut.makeMove(player: secondPlayer, position: Position(1, 0)) sut.makeMove(player: firstPlayer, position: Position(1, 1)) sut.makeMove(player: firstPlayer, position: Position(1, 2)) - + sut.makeMove(player: secondPlayer, position: Position(2, 0)) sut.makeMove(player: firstPlayer, position: Position(2, 1)) sut.makeMove(player: secondPlayer, position: Position(2, 2)) - + XCTAssertEqual(sut.check(player: firstPlayer), BoardStatus.draw) XCTAssertEqual(sut.check(player: secondPlayer), BoardStatus.draw) } - + private func allFieldsAreEmpty() -> Bool { var allFieldAreEmpty = true - + for row in 0 ..< sut.size { for column in 0 ..< sut.size { if sut.symbol(forPosition: Position(row, column)) != PlayerSymbol.empty { @@ -139,7 +139,7 @@ class BoardTests: XCTestCase { } } } - + return allFieldAreEmpty } } diff --git a/Minimax/Sources/Tests/Tests/MinimaxTests.swift b/Minimax/Sources/Tests/Tests/MinimaxTests.swift index 269a3b63b..0ace9f133 100644 --- a/Minimax/Sources/Tests/Tests/MinimaxTests.swift +++ b/Minimax/Sources/Tests/Tests/MinimaxTests.swift @@ -4,52 +4,52 @@ class MinimaxTests: XCTestCase { override func setUp() { super.setUp() } - + override func tearDown() { super.tearDown() } - + func testEvaluateGameState() { var board = Board(size: 3) let firstPlayer = Player(type: .human, symbol: .cross) let secondPlayer = Player(type: .human, symbol: .circle) - + board.clear() - + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), nil) - + board.makeMove(player: firstPlayer, position: Position(0, 0)) - + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), nil) - + board.makeMove(player: firstPlayer, position: Position(0, 1)) board.makeMove(player: firstPlayer, position: Position(0, 2)) - + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .max) XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .min) - + board.clear() board.makeMove(player: secondPlayer, position: Position(0, 0)) board.makeMove(player: secondPlayer, position: Position(0, 1)) board.makeMove(player: secondPlayer, position: Position(0, 2)) board.makeMove(player: firstPlayer, position: Position(1, 0)) - + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .min) XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .max) - + board.clear() board.makeMove(player: firstPlayer, position: Position(0, 0)) board.makeMove(player: secondPlayer, position: Position(0, 1)) board.makeMove(player: secondPlayer, position: Position(0, 2)) - + board.makeMove(player: secondPlayer, position: Position(1, 0)) board.makeMove(player: firstPlayer, position: Position(1, 1)) board.makeMove(player: firstPlayer, position: Position(1, 2)) - + board.makeMove(player: secondPlayer, position: Position(2, 0)) board.makeMove(player: firstPlayer, position: Position(2, 1)) board.makeMove(player: secondPlayer, position: Position(2, 2)) - + XCTAssertEqual(evaluateGameState(board: board, player: firstPlayer, opponent: secondPlayer), .null) XCTAssertEqual(evaluateGameState(board: board, player: secondPlayer, opponent: firstPlayer), .null) } diff --git a/Minimax/Sources/Tests/Tests/PlayerTests.swift b/Minimax/Sources/Tests/Tests/PlayerTests.swift index f3e622a1f..801b30d58 100644 --- a/Minimax/Sources/Tests/Tests/PlayerTests.swift +++ b/Minimax/Sources/Tests/Tests/PlayerTests.swift @@ -3,21 +3,21 @@ import XCTest class PlayerTests: XCTestCase { private var sut: Player! - + private var playerType: PlayerType = .human - + private var playerSymbol: PlayerSymbol = .circle - + override func setUp() { super.setUp() sut = Player(type: playerType, symbol: playerSymbol) } - + override func tearDown() { sut = nil super.tearDown() } - + func testInit() { XCTAssertEqual(sut.type, playerType) XCTAssertEqual(sut.symbol, playerSymbol) From ac67157757493c5f95bd9dba92abb71a529e573a Mon Sep 17 00:00:00 2001 From: michalnowak061 <47181362+michalnowak061@users.noreply.github.com> Date: Wed, 21 Jul 2021 20:23:32 +0200 Subject: [PATCH 7/7] Fix demo.gif file bug in README.md --- Minimax/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Minimax/README.md b/Minimax/README.md index 974c0d32d..a4aae2c4b 100644 --- a/Minimax/README.md +++ b/Minimax/README.md @@ -3,9 +3,7 @@

## Runtime environment - - - + ## Table of contents * [General info](#general-info) @@ -62,7 +60,7 @@ function alphabeta(node, depth, α, β, maximizingPlayer) is ## Demo -

+

## Sources * Minimax algorithm: https://en.wikipedia.org/wiki/Minimax