diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..4d98340 Binary files /dev/null and b/.DS_Store differ diff --git a/IDNA/.DS_Store b/IDNA/.DS_Store new file mode 100644 index 0000000..9aeefd4 Binary files /dev/null and b/IDNA/.DS_Store differ diff --git a/IDNA/IDNA.xcodeproj/project.pbxproj b/IDNA/IDNA.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0292d3e --- /dev/null +++ b/IDNA/IDNA.xcodeproj/project.pbxproj @@ -0,0 +1,317 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 170B0806169A0EB9000DBF49 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 170B0805169A0EB9000DBF49 /* Cocoa.framework */; }; + 170B0810169A0EB9000DBF49 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 170B080E169A0EB9000DBF49 /* InfoPlist.strings */; }; + 170B0812169A0EB9000DBF49 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B0811169A0EB9000DBF49 /* main.m */; }; + 170B0816169A0EB9000DBF49 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 170B0814169A0EB9000DBF49 /* Credits.rtf */; }; + 170B0819169A0EB9000DBF49 /* IDNAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B0818169A0EB9000DBF49 /* IDNAppDelegate.m */; }; + 170B081C169A0EB9000DBF49 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 170B081A169A0EB9000DBF49 /* MainMenu.xib */; }; + 170B0828169A1273000DBF49 /* IDNCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B0827169A1273000DBF49 /* IDNCell.m */; }; + 170B082B169A1700000DBF49 /* IDNPopulation.m in Sources */ = {isa = PBXBuildFile; fileRef = 170B082A169A1700000DBF49 /* IDNPopulation.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 170B0801169A0EB9000DBF49 /* IDNA.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IDNA.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 170B0805169A0EB9000DBF49 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 170B0808169A0EB9000DBF49 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + 170B0809169A0EB9000DBF49 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + 170B080A169A0EB9000DBF49 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 170B080D169A0EB9000DBF49 /* IDNA-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "IDNA-Info.plist"; sourceTree = ""; }; + 170B080F169A0EB9000DBF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 170B0811169A0EB9000DBF49 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 170B0813169A0EB9000DBF49 /* IDNA-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "IDNA-Prefix.pch"; sourceTree = ""; }; + 170B0815169A0EB9000DBF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + 170B0817169A0EB9000DBF49 /* IDNAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IDNAppDelegate.h; sourceTree = ""; }; + 170B0818169A0EB9000DBF49 /* IDNAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IDNAppDelegate.m; sourceTree = ""; }; + 170B081B169A0EB9000DBF49 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + 170B0826169A1273000DBF49 /* IDNCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDNCell.h; sourceTree = ""; }; + 170B0827169A1273000DBF49 /* IDNCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IDNCell.m; sourceTree = ""; }; + 170B0829169A1700000DBF49 /* IDNPopulation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDNPopulation.h; sourceTree = ""; }; + 170B082A169A1700000DBF49 /* IDNPopulation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IDNPopulation.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 170B07FE169A0EB9000DBF49 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 170B0806169A0EB9000DBF49 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 170B07F6169A0EB9000DBF49 = { + isa = PBXGroup; + children = ( + 170B080B169A0EB9000DBF49 /* IDNA */, + 170B0804169A0EB9000DBF49 /* Frameworks */, + 170B0802169A0EB9000DBF49 /* Products */, + ); + sourceTree = ""; + }; + 170B0802169A0EB9000DBF49 /* Products */ = { + isa = PBXGroup; + children = ( + 170B0801169A0EB9000DBF49 /* IDNA.app */, + ); + name = Products; + sourceTree = ""; + }; + 170B0804169A0EB9000DBF49 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 170B0805169A0EB9000DBF49 /* Cocoa.framework */, + 170B0807169A0EB9000DBF49 /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 170B0807169A0EB9000DBF49 /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 170B0808169A0EB9000DBF49 /* AppKit.framework */, + 170B0809169A0EB9000DBF49 /* CoreData.framework */, + 170B080A169A0EB9000DBF49 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 170B080B169A0EB9000DBF49 /* IDNA */ = { + isa = PBXGroup; + children = ( + 170B0826169A1273000DBF49 /* IDNCell.h */, + 170B0827169A1273000DBF49 /* IDNCell.m */, + 170B0829169A1700000DBF49 /* IDNPopulation.h */, + 170B082A169A1700000DBF49 /* IDNPopulation.m */, + 170B0817169A0EB9000DBF49 /* IDNAppDelegate.h */, + 170B0818169A0EB9000DBF49 /* IDNAppDelegate.m */, + 170B081A169A0EB9000DBF49 /* MainMenu.xib */, + 170B080C169A0EB9000DBF49 /* Supporting Files */, + ); + path = IDNA; + sourceTree = ""; + }; + 170B080C169A0EB9000DBF49 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 170B080D169A0EB9000DBF49 /* IDNA-Info.plist */, + 170B080E169A0EB9000DBF49 /* InfoPlist.strings */, + 170B0811169A0EB9000DBF49 /* main.m */, + 170B0813169A0EB9000DBF49 /* IDNA-Prefix.pch */, + 170B0814169A0EB9000DBF49 /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 170B0800169A0EB9000DBF49 /* IDNA */ = { + isa = PBXNativeTarget; + buildConfigurationList = 170B081F169A0EB9000DBF49 /* Build configuration list for PBXNativeTarget "IDNA" */; + buildPhases = ( + 170B07FD169A0EB9000DBF49 /* Sources */, + 170B07FE169A0EB9000DBF49 /* Frameworks */, + 170B07FF169A0EB9000DBF49 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = IDNA; + productName = IDNA; + productReference = 170B0801169A0EB9000DBF49 /* IDNA.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 170B07F8169A0EB9000DBF49 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = IDN; + LastUpgradeCheck = 0450; + ORGANIZATIONNAME = "Dmitriy Zhukov"; + }; + buildConfigurationList = 170B07FB169A0EB9000DBF49 /* Build configuration list for PBXProject "IDNA" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 170B07F6169A0EB9000DBF49; + productRefGroup = 170B0802169A0EB9000DBF49 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 170B0800169A0EB9000DBF49 /* IDNA */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 170B07FF169A0EB9000DBF49 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 170B0810169A0EB9000DBF49 /* InfoPlist.strings in Resources */, + 170B0816169A0EB9000DBF49 /* Credits.rtf in Resources */, + 170B081C169A0EB9000DBF49 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 170B07FD169A0EB9000DBF49 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 170B0812169A0EB9000DBF49 /* main.m in Sources */, + 170B0819169A0EB9000DBF49 /* IDNAppDelegate.m in Sources */, + 170B0828169A1273000DBF49 /* IDNCell.m in Sources */, + 170B082B169A1700000DBF49 /* IDNPopulation.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 170B080E169A0EB9000DBF49 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 170B080F169A0EB9000DBF49 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 170B0814169A0EB9000DBF49 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 170B0815169A0EB9000DBF49 /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + 170B081A169A0EB9000DBF49 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 170B081B169A0EB9000DBF49 /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 170B081D169A0EB9000DBF49 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 170B081E169A0EB9000DBF49 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.8; + SDKROOT = macosx; + }; + name = Release; + }; + 170B0820169A0EB9000DBF49 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "IDNA/IDNA-Prefix.pch"; + INFOPLIST_FILE = "IDNA/IDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 170B0821169A0EB9000DBF49 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "IDNA/IDNA-Prefix.pch"; + INFOPLIST_FILE = "IDNA/IDNA-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 170B07FB169A0EB9000DBF49 /* Build configuration list for PBXProject "IDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 170B081D169A0EB9000DBF49 /* Debug */, + 170B081E169A0EB9000DBF49 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 170B081F169A0EB9000DBF49 /* Build configuration list for PBXNativeTarget "IDNA" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 170B0820169A0EB9000DBF49 /* Debug */, + 170B0821169A0EB9000DBF49 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 170B07F8169A0EB9000DBF49 /* Project object */; +} diff --git a/IDNA/IDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/IDNA/IDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3f20b0e --- /dev/null +++ b/IDNA/IDNA.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/IDNA/IDNA.xcodeproj/project.xcworkspace/xcuserdata/jdmbox.xcuserdatad/UserInterfaceState.xcuserstate b/IDNA/IDNA.xcodeproj/project.xcworkspace/xcuserdata/jdmbox.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..250ff41 Binary files /dev/null and b/IDNA/IDNA.xcodeproj/project.xcworkspace/xcuserdata/jdmbox.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..05301bc --- /dev/null +++ b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/IDNA.xcscheme b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/IDNA.xcscheme new file mode 100644 index 0000000..d6fa01d --- /dev/null +++ b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/IDNA.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/xcschememanagement.plist b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..73c6e48 --- /dev/null +++ b/IDNA/IDNA.xcodeproj/xcuserdata/jdmbox.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + IDNA.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 170B0800169A0EB9000DBF49 + + primary + + + + + diff --git a/IDNA/IDNA/IDNA-Info.plist b/IDNA/IDNA/IDNA-Info.plist new file mode 100644 index 0000000..6c60bd9 --- /dev/null +++ b/IDNA/IDNA/IDNA-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + ru.DvaZhuka.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2013 Dmitriy Zhukov. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/IDNA/IDNA/IDNA-Prefix.pch b/IDNA/IDNA/IDNA-Prefix.pch new file mode 100644 index 0000000..53fc94c --- /dev/null +++ b/IDNA/IDNA/IDNA-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'IDNA' target in the 'IDNA' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/IDNA/IDNA/IDNAppDelegate.h b/IDNA/IDNA/IDNAppDelegate.h new file mode 100644 index 0000000..36537d7 --- /dev/null +++ b/IDNA/IDNA/IDNAppDelegate.h @@ -0,0 +1,42 @@ +// +// IDNAppDelegate.h +// IDNA +// +// Created by Dmitriy Zhukov on 06.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import +@class IDNCell; +@class IDNPopulation; + +@interface IDNAppDelegate : NSObject + +@property (assign) IBOutlet NSWindow *window; + +@property NSInteger populationSize; +@property NSInteger DNALength; +@property NSInteger mutationRate; +@property NSInteger generationCount; +@property NSInteger distanceToTargetDNA; +@property NSInteger progress; + +@property IDNCell* goalDNA; +@property (weak) IBOutlet NSTextField *goalDNAField; + +@property IDNPopulation* workingPopulation; + +@property BOOL interfaceStatement; +@property BOOL startStatement; +@property BOOL pauseStatement; +@property BOOL pauseEvolutionFlag; +@property BOOL stopEvolutionFlag; + + +- (IBAction)loadDNAfromFile:(id)sender; +- (IBAction)saveData:(id)sender; +- (IBAction)startEvolution:(id)sender; +- (IBAction)pauseEvolution:(id)sender; +- (IBAction)stopEvolution:(id)sender; + +@end diff --git a/IDNA/IDNA/IDNAppDelegate.m b/IDNA/IDNA/IDNAppDelegate.m new file mode 100644 index 0000000..a4a2076 --- /dev/null +++ b/IDNA/IDNA/IDNAppDelegate.m @@ -0,0 +1,234 @@ +// +// IDNAppDelegate.m +// IDNA +// +// Created by Dmitriy Zhukov on 06.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import "IDNAppDelegate.h" +#import "IDNCell.h" +#import "IDNPopulation.h" + +@implementation IDNAppDelegate + +-(id)init { + self = [super init]; + if (self) { + self.populationSize=1000; + self.DNALength=10; + self.mutationRate=10; + self.generationCount=0; + self.progress=0; + self.distanceToTargetDNA=0; + self.interfaceStatement = true; + self.startStatement = true; + self.stopEvolutionFlag = true; + self.pauseEvolutionFlag = true; + self.pauseStatement = false; + + } + return self; +} + +-(void)dealloc { + [self removeObserver:self forKeyPath:@"DNALength"]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + // Insert code here to initialize your application + self.workingPopulation = [[IDNPopulation alloc] init]; //возможно исключить + + self.goalDNA = [[IDNCell alloc]init]; + [self.goalDNA fillDNAArrayWithCapacity:self.DNALength]; + [self.goalDNAField setStringValue:[self.goalDNA.DNA componentsJoinedByString:@""]]; + [self addObserver:self forKeyPath:@"DNALength" options:NSKeyValueObservingOptionOld context:@"DNALengthContext"]; + +} + + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if (context != @"DNALengthContext") { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + return; + } + [self.goalDNA fillDNAArrayWithCapacity:self.DNALength]; + [self.goalDNAField setStringValue:[self.goalDNA.DNA componentsJoinedByString:@""]]; +} + + +#pragma mark +#pragma mark - pause/run/reset + +- (IBAction)startEvolution:(id)sender { + self.interfaceStatement = false; + self.startStatement = false; + self.pauseStatement = true; + self.stopEvolutionFlag = false; + self.pauseEvolutionFlag = false; + if ([self.workingPopulation.population count]==0) { //Проверяем не пустой ли массив. Если пустой содаем рабочий. + [self.workingPopulation createPopulationWithCount:_populationSize andDNALength:_DNALength]; + } + [self performSelectorInBackground:@selector(evolution) withObject:nil]; +} + +- (IBAction)pauseEvolution:(id)sender { + self.pauseEvolutionFlag = true; + self.startStatement = true; + self.pauseStatement = false; + +} + +- (IBAction)stopEvolution:(id)sender { + self.stopEvolutionFlag = true; +} + +- (void)resetInterface { + self.stopEvolutionFlag = true; + self.pauseEvolutionFlag = true; + self.interfaceStatement = true; + self.startStatement = true; + self.pauseStatement = false; + IDNPopulation *newPopulation = [[IDNPopulation alloc]init]; + self.workingPopulation = newPopulation; + self.generationCount = 0; + self.distanceToTargetDNA = 0; + self.progress = 0; + +} + + +#pragma mark +#pragma mark - UpgradeInterface + +- (void)upgradeInterface { + self.generationCount = self.workingPopulation.generationNumber; + self.distanceToTargetDNA = self.workingPopulation.bestDNADistanseInPopulation; + self.progress = self.workingPopulation.progressToTarget; +} + +#pragma mark +#pragma mark - Evolution + +- (void) evolution { + for (;;) { + if (self.pauseEvolutionFlag) { + break; + } else if (self.stopEvolutionFlag){ + [self performSelectorOnMainThread:@selector(resetInterface) withObject:nil waitUntilDone:YES]; + break; + } + else { + [self.workingPopulation sortPopulationByHummingDistanceTo:self.goalDNA]; //первый этап + if (self.workingPopulation.bestDNADistanseInPopulation == 0) {//Если присутствует идеальное днк - прекращаем эволюцию. + + [self performSelectorOnMainThread:@selector(upgradeInterface) withObject:nil waitUntilDone:YES]; + [self performSelectorOnMainThread:@selector(modalArlertCall) withObject:nil waitUntilDone:YES]; //Вызываем модальное окно. + [self performSelectorOnMainThread:@selector(resetInterface) withObject:nil waitUntilDone:YES]; //Сбрасываем интерфейс + + break; + } else { + + [self.workingPopulation crossingBestDNA];//Второй этап + [self.workingPopulation populationMutate: self.mutationRate];//Третий этап + [self performSelectorOnMainThread:@selector(upgradeInterface) withObject:nil waitUntilDone:YES]; + +} +} +} +} + +#pragma mark +#pragma mark - load/save method + +- (IBAction)loadDNAfromFile:(id)sender { + NSOpenPanel* newOpenPanel = [NSOpenPanel openPanel]; + [newOpenPanel setAllowedFileTypes:[NSArray arrayWithObject:@"txt"]]; + + [newOpenPanel setAllowsOtherFileTypes:NO]; + NSInteger result = [newOpenPanel runModal]; + + if (result == NSOKButton) + { //do something + + NSString *selectedFile = [[newOpenPanel URL] path]; + NSError* error = nil; + + NSString*newGoalDnaString = [NSString stringWithContentsOfFile:selectedFile + encoding:NSUTF8StringEncoding + error:&error]; + + if (error != nil) { + [self modalArlertCantOpenFile:[error localizedDescription]]; + return; + } + + NSCharacterSet* checkingSet = [[NSCharacterSet characterSetWithCharactersInString:@"ATGC"]invertedSet]; + + if ([newGoalDnaString rangeOfCharacterFromSet:checkingSet].location != NSNotFound) + { + [self modalArlertCantOpenFile:@"Format of DATA is not wrang. Currectly like this: 'ATGCCGAATGTT'"]; + } else if (newGoalDnaString.length !=self.DNALength) { + + NSString *allertMessege = [NSString stringWithFormat:@"Wrong DNA long. Change it to %li",newGoalDnaString.length]; + [self modalArlertCantOpenFile:allertMessege]; + } else { + + NSMutableArray* myArray = [[NSMutableArray alloc]initWithCapacity:newGoalDnaString.length]; + + for (int i=0; i < newGoalDnaString.length; i++) { + NSString *ichar = [NSString stringWithFormat:@"%C", [newGoalDnaString characterAtIndex:i]]; + [myArray addObject:ichar]; + } + IDNCell *newGoalDNA= [[IDNCell alloc]init]; + newGoalDNA.arrayCapacity = [myArray count]; + newGoalDNA.DNA = myArray; + self.goalDNA = newGoalDNA; + [self.goalDNAField setStringValue:[self.goalDNA.DNA componentsJoinedByString:@""]]; +} +} +} + +- (IBAction)saveData:(id)sender { + NSSavePanel *newSavePanel = [NSSavePanel savePanel]; + [newSavePanel setAllowedFileTypes:[NSArray arrayWithObject:@"txt"]]; + [newSavePanel setAllowsOtherFileTypes:NO]; + NSInteger result = [newSavePanel runModal]; + + if (result == NSOKButton) + { + NSString *selectedFile = [[newSavePanel URL] path]; + NSString *arrayComplete = [self.goalDNA.DNA componentsJoinedByString:@""]; + + NSError* error =nil; + + [arrayComplete writeToFile:selectedFile + atomically:NO + encoding:NSUTF8StringEncoding + error:&error]; + if (error != nil) { + [self modalArlertCantSaveFile:[error localizedDescription]]; + } + } +} + +#pragma mark +#pragma mark - modalAlert + +- (void)modalArlertCall { + NSAlert *alertFindDNA = [NSAlert alertWithMessageText:@"Find ideal DNA" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"Generation left:%lu", self.workingPopulation.generationNumber]; + [alertFindDNA runModal]; +} + +- (void)modalArlertCantSaveFile:(NSString*)Problem { + NSAlert *alertFindDNA = [NSAlert alertWithMessageText:@"Can't save file" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", Problem]; + [alertFindDNA runModal]; +} + +- (void)modalArlertCantOpenFile:(NSString*)Problem { + NSAlert *alertFindDNA = [NSAlert alertWithMessageText:@"Can't open file" defaultButton:@"OK" alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", Problem]; + [alertFindDNA runModal]; +} + +@end diff --git a/IDNA/IDNA/IDNCell.h b/IDNA/IDNA/IDNCell.h new file mode 100644 index 0000000..0e69c11 --- /dev/null +++ b/IDNA/IDNA/IDNCell.h @@ -0,0 +1,22 @@ +// +// IDNCell.h +// IDNA +// +// Created by Dmitriy Zhukov on 07.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import + +@interface IDNCell : NSObject + +@property NSMutableArray *DNA; +@property NSString *rangeOfDNACellValues; +@property NSInteger arrayCapacity; +@property NSInteger unitDistanceToTargetDNA; + +- (void) fillDNAArrayWithCapacity: (NSInteger)fCapacity; +- (NSInteger) hammingDistance: (IDNCell*) anotherDNA; +- (void) mutate: (NSInteger) procentageOfMutations; + +@end diff --git a/IDNA/IDNA/IDNCell.m b/IDNA/IDNA/IDNCell.m new file mode 100644 index 0000000..62da9a2 --- /dev/null +++ b/IDNA/IDNA/IDNCell.m @@ -0,0 +1,70 @@ +// +// IDNCell.m +// IDNA +// +// Created by Dmitriy Zhukov on 07.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import "IDNCell.h" + +@implementation IDNCell + +- (id)init { + self= [super init]; + if (self) { + self.rangeOfDNACellValues = @"ATGC"; + self.unitDistanceToTargetDNA = 0; + self.arrayCapacity=0; + self.DNA = [[NSMutableArray alloc]init]; + } + return self; +} + +- (void) fillDNAArrayWithCapacity: (NSInteger)fCapacity { + self.arrayCapacity = fCapacity; + NSMutableArray* setDNA = [NSMutableArray arrayWithCapacity:self.arrayCapacity]; + + for (NSInteger i = 0 ; i < self.arrayCapacity; i++) { + [setDNA addObject:[NSString stringWithFormat:@"%C", [self.rangeOfDNACellValues characterAtIndex: arc4random() % [self.rangeOfDNACellValues length]]]]; + } + self.DNA = setDNA; +} + +- (NSInteger) hammingDistance: (IDNCell*) anotherDNA { + NSInteger count = 0; + for (NSInteger i = 0 ; i < self.arrayCapacity; i++) { + if ([[self.DNA objectAtIndex:i] isNotEqualTo:[anotherDNA.DNA objectAtIndex: i]]) { + count++; + } + } + return count; +} + +- (void)mutate: (NSInteger) procentageOfMutations { + + float a = (self.arrayCapacity*procentageOfMutations)/100.0; + NSInteger numberOfcells = ceil(a); + NSMutableIndexSet *indexSetDNA = [[NSMutableIndexSet alloc] init]; + + for (NSInteger i = 0; i < numberOfcells; i++) { + NSInteger indexGen = arc4random ()%self.arrayCapacity; + + if (![indexSetDNA containsIndex:indexGen]) { + [indexSetDNA addIndex:indexGen]; + + for(;;) { + NSString *changes =[NSString stringWithFormat:@"%C", [self.rangeOfDNACellValues characterAtIndex: arc4random() % [self.rangeOfDNACellValues length]]]; + + if (![[self.DNA objectAtIndex: indexGen] isEqualToString:changes]) { + [self.DNA replaceObjectAtIndex:indexGen withObject:changes]; + break; + } + } + + } else {i--;} + } +} + + +@end diff --git a/IDNA/IDNA/IDNPopulation.h b/IDNA/IDNA/IDNPopulation.h new file mode 100644 index 0000000..35d94a6 --- /dev/null +++ b/IDNA/IDNA/IDNPopulation.h @@ -0,0 +1,27 @@ +// +// IDNPopulation.h +// IDNA +// +// Created by Dmitriy Zhukov on 07.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import +@class IDNCell; + +@interface IDNPopulation : NSObject + +@property NSMutableArray* population; +@property NSInteger generationNumber; +@property NSInteger bestDNADistanseInPopulation; +@property NSInteger progressToTarget; + +- (void)createPopulationWithCount:(NSInteger)aPopulation andDNALength:(NSInteger)aDNALenght; +- (void)sortPopulationByHummingDistanceTo:(IDNCell*)aGoalDNA; +- (void)populationMutate: (NSInteger)percentage; +- (void) crossingBestDNA; +- (IDNCell*)halfByHalfCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell; +- (IDNCell*)oneByOneCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell; +- (IDNCell*)partsCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell; + +@end diff --git a/IDNA/IDNA/IDNPopulation.m b/IDNA/IDNA/IDNPopulation.m new file mode 100644 index 0000000..3e87345 --- /dev/null +++ b/IDNA/IDNA/IDNPopulation.m @@ -0,0 +1,169 @@ +// +// IDNPopulation.m +// IDNA +// +// Created by Dmitriy Zhukov on 07.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import "IDNPopulation.h" +#import "IDNCell.h" + +@implementation IDNPopulation + +- (id)init { + self= [super init]; + if (self) { + self.population = [[NSMutableArray alloc]init]; + self.generationNumber = 0; + self.bestDNADistanseInPopulation = 0; + self.progressToTarget =0; + } + return self; +} + +- (void)createPopulationWithCount:(NSInteger)aPopulation andDNALength:(NSInteger)aDNALenght { + + for (int i = 0; i < aPopulation; i++) { + IDNCell* unicDNA = [[IDNCell alloc]init]; + [unicDNA fillDNAArrayWithCapacity:aDNALenght]; + [self.population addObject:unicDNA]; + } + +} + +- (void)sortPopulationByHummingDistanceTo:(IDNCell*)aGoalDNA { + + //проставляем хамминг дистанс + for (IDNCell *uDNA in self.population) { + uDNA.unitDistanceToTargetDNA = [aGoalDNA hammingDistance:uDNA]; + } + + //Сортируем массив по хамминг дистанс + self.population = [NSMutableArray arrayWithArray: [self.population sortedArrayUsingComparator: ^(IDNCell* obj1, IDNCell* obj2) { + + NSInteger a = [obj1 unitDistanceToTargetDNA]; + NSInteger b = [obj2 unitDistanceToTargetDNA]; + + if (a > b) { + return (NSComparisonResult)NSOrderedDescending; + } + if (b < a) { + return (NSComparisonResult)NSOrderedAscending; + } + return (NSComparisonResult)NSOrderedSame; + }]]; + + //Выбираем лучшее значение + self.bestDNADistanseInPopulation = [[self.population objectAtIndex:0] unitDistanceToTargetDNA]; + + float a = 100.0-((([[self.population objectAtIndex:0] unitDistanceToTargetDNA]*1.0)/([aGoalDNA.DNA count]*1.0))*100); + self.progressToTarget = ceil(a); +} + +- (void) crossingBestDNA { + //Выборка 50% массива. + + float a = ([self.population count]*50.0)/100.0; + NSInteger numberOfBestCells = ceil(a); //первые 50 % ячеек + NSInteger numberOfLastCells = ([self.population count]-numberOfBestCells); //это те ячейки которые нужно заменить + + //Создаем массив с изменениями днк для худших особей + NSMutableArray *crossDNA = [[NSMutableArray alloc]initWithCapacity:numberOfLastCells]; + + for (int i = 0 ; i < numberOfLastCells; i++) { //прогоняем алгоритм столько раз, сколько ячеек нужно заменить + + //Генерируем два случайных неодинаковых индекса в интервале от 0 до numberOfBestCells + + NSInteger indexM = arc4random ()%numberOfBestCells; + NSInteger indexF; + + for(;;){ + indexF = arc4random ()%numberOfBestCells; + if (indexF != indexM) { + break; + }} + + //Выбор одного из трех алгоритмoв скрещивания + switch (arc4random ()%3) { + + case 0: + [crossDNA addObject:[self halfByHalfCrossing:[_population objectAtIndex:indexM]with:[_population objectAtIndex:indexF]]]; + break; + case 1: + [crossDNA addObject:[self oneByOneCrossing:[_population objectAtIndex:indexM]with:[_population objectAtIndex:indexF]]]; + break; + case 2: + [crossDNA addObject:[self partsCrossing:[_population objectAtIndex:indexM]with:[_population objectAtIndex:indexF]]]; + break; + } + } + for(NSInteger i = numberOfBestCells; i < [_population count]; i++) { + NSInteger crossIndex = i-numberOfBestCells; + [self.population replaceObjectAtIndex:i withObject:[crossDNA objectAtIndex:crossIndex]]; + } +} + +- (IDNCell*)halfByHalfCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell { + + NSInteger DNALengthInPopulation = [[firstCell valueForKey:@"DNA"]count]; + IDNCell* unDNA = [[IDNCell alloc]init]; + + float a = DNALengthInPopulation/2.0; + NSInteger n1 = ceil(a); + NSInteger n2 = (DNALengthInPopulation-n1); + + for (int i = 0 ; i < n1; i++) { + [unDNA.DNA addObject:[firstCell.DNA objectAtIndex:i]]; + } + for (int i = 0 ; i < n2; i++) { + [unDNA.DNA addObject:[secondCell.DNA objectAtIndex:i]]; + } + return unDNA; +} + +- (IDNCell*)oneByOneCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell { + NSInteger DNALengthInPopulation = [[firstCell valueForKey:@"DNA"]count]; + IDNCell* unDNA = [[IDNCell alloc]init]; + for (int i = 0 ; i < DNALengthInPopulation; i++) { + if (i & 1) { + [unDNA.DNA addObject:[secondCell.DNA objectAtIndex:i]]; + } else { + [unDNA.DNA addObject:[firstCell.DNA objectAtIndex:i]]; + } + } + return unDNA; +} + +- (IDNCell*)partsCrossing:(IDNCell*)firstCell with:(IDNCell*)secondCell { + + NSInteger DNALengthInPopulation = [[firstCell valueForKey:@"DNA"]count]; + IDNCell* unDNA = [[IDNCell alloc]init]; + + float a = DNALengthInPopulation*0.4; + NSInteger n13 = ceil(a); + float b = n13/2.0; + NSInteger n1 = ceil(b); + NSInteger n2 = DNALengthInPopulation - n13; + + for (int i = 0 ; i < n1; i++) { + [unDNA.DNA addObject:[firstCell.DNA objectAtIndex:i]]; + } + for (int i = 0 ; i < n2; i++) { + [unDNA.DNA addObject:[secondCell.DNA objectAtIndex:i]]; + } + for (NSInteger i = n1+n2; i < DNALengthInPopulation; i++) { + [unDNA.DNA addObject:[firstCell.DNA objectAtIndex:i]]; + } + return unDNA; +} + + +- (void) populationMutate: (NSInteger)percentage { + for (IDNCell *cell in _population) { + [cell mutate:percentage]; + } + self.generationNumber++; +} + +@end diff --git a/IDNA/IDNA/en.lproj/Credits.rtf b/IDNA/IDNA/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/IDNA/IDNA/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/IDNA/IDNA/en.lproj/InfoPlist.strings b/IDNA/IDNA/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/IDNA/IDNA/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/IDNA/IDNA/en.lproj/MainMenu.xib b/IDNA/IDNA/en.lproj/MainMenu.xib new file mode 100644 index 0000000..5f7ddc1 --- /dev/null +++ b/IDNA/IDNA/en.lproj/MainMenu.xib @@ -0,0 +1,5832 @@ + + + + 1080 + 12C60 + 2844 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2844 + + + IBNSLayoutConstraint + NSBox + NSButton + NSButtonCell + NSCustomObject + NSMenu + NSMenuItem + NSNumberFormatter + NSProgressIndicator + NSSlider + NSSliderCell + NSTextField + NSTextFieldCell + NSUserDefaultsController + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + IDNA + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + IDNA + + + + About IDNA + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide IDNA + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit IDNA + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save… + s + 1048576 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find and Replace… + f + 1572864 + 2147483647 + + + 12 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + + + Font + + 2147483647 + + + submenuAction: + + Font + + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligatures + + 2147483647 + + + submenuAction: + + Ligatures + + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + + + IDNA Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 390}, {515, 410}} + 1954021376 + IDNA + NSWindow + + + + + 256 + + + + 268 + {{18, 374}, {101, 17}} + + + + YES + + 68157504 + 272630784 + Population size + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{19, 346}, {77, 17}} + + + + YES + + 68157504 + 272630784 + DNA length + + + + + + NO + + + + 268 + {{17, 318}, {102, 17}} + + + + YES + + 68157504 + 272630784 + Mutation rate % + + + + + + NO + + + + 268 + {{182, 372}, {308, 21}} + + + + YES + + 67371264 + 0 + + + 10000 + 3 + 5000 + 0.0 + 0 + 0 + NO + NO + + NO + + + + 268 + {{182, 344}, {308, 21}} + + + + YES + + -2080112384 + 0 + + + 100 + 1 + 50 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{182, 316}, {308, 21}} + + + + YES + + -2080112384 + 0 + + + 100 + 0.0 + 50 + 0.0 + 0 + 1 + NO + NO + + NO + + + + 268 + {{198, 285}, {117, 22}} + + + + YES + + 68157504 + 272630784 + Generation: + + LucidaGrande-Bold + 14 + 16 + + + + + + NO + + + + 268 + {{160, 265}, {209, 17}} + + + + YES + + 68157504 + 272630784 + Best individual match: + + + + + + NO + + + + 268 + {{20, 238}, {475, 20}} + + + + 16392 + 100 + + + + 268 + {{367, 10}, {134, 32}} + + + YES + + 67108864 + 134217728 + Load goal DNA + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 10}, {132, 32}} + + + + YES + + 67108864 + 134217728 + Start evolution + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{146, 10}, {77, 32}} + + + + YES + + 67108864 + 134217728 + Pause + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{223, 10}, {68, 32}} + + + + YES + + 67108864 + 134217728 + Stop + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{126, 343}, {50, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + NO + + + + 12 + + + + 274 + + + + 268 + {{200, 150}, {65, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Goal DNA + + _NS:1535 + + + + + NO + + + + 268 + {{18, 14}, {441, 133}} + + + + _NS:9 + {250, 750} + YES + + -2074083327 + 272629760 + + + _NS:9 + + YES + + + + NO + + + {{1, 1}, {477, 172}} + + + + _NS:11 + + + {{19, 48}, {479, 188}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + + + LucidaGrande + 11 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 268 + {{126, 315}, {50, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + + + + NO + + + + 268 + {{126, 371}, {50, 22}} + + + + _NS:9 + YES + + -1804599231 + 272630784 + + + + + + + + + -∞ + + +∞ + + # + # + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + NO + YES + + _NS:9 + + YES + + + + NO + + + {515, 410} + + + + + {{0, 0}, {1920, 1178}} + {10000000000000, 10000000000000} + YES + + + IDNAppDelegate + + + NSFontManager + + + YES + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + performFindPanelAction: + + + + 535 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + window + + + + 532 + + + + goalDNAField + + + + 751 + + + + loadDNAfromFile: + + + + 752 + + + + saveData: + + + + 753 + + + + startEvolution: + + + + 756 + + + + pauseEvolution: + + + + 757 + + + + stopEvolution: + + + + 771 + + + + loadDNAfromFile: + + + + 772 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 722 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 726 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 730 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 673 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 742 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 680 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 744 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 686 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 746 + + + + displayPatternValue1: self.generationCount + + + + + + displayPatternValue1: self.generationCount + displayPatternValue1 + self.generationCount + + NSDisplayPattern + Generation: %{value1}@ + + 2 + + + 707 + + + + displayPatternValue1: self.distanceToTargetDNA + + + + + + displayPatternValue1: self.distanceToTargetDNA + displayPatternValue1 + self.distanceToTargetDNA + + NSDisplayPattern + Best individual match: %{value1}@ + + 2 + + + 706 + + + + value: self.progress + + + + + + value: self.progress + value + self.progress + 2 + + + 710 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + 2 + + + 718 + + + + enabled: self.startStatement + + + + + + enabled: self.startStatement + enabled + self.startStatement + 2 + + + 758 + + + + enabled: self.pauseStatement + + + + + + enabled: self.pauseStatement + enabled + self.pauseStatement + 2 + + + 750 + + + + value: self.DNALength + + + + + + value: self.DNALength + value + self.DNALength + 2 + + + 677 + + + + editable: self.interfaceStatement + + + + + + editable: self.interfaceStatement + editable + self.interfaceStatement + 2 + + + 691 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + + 2 + + + 736 + + + + value: self.mutationRate + + + + + + value: self.mutationRate + value + self.mutationRate + 2 + + + 683 + + + + editable: self.interfaceStatement + + + + + + editable: self.interfaceStatement + editable + self.interfaceStatement + 2 + + + 694 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + + 2 + + + 739 + + + + value: self.populationSize + + + + + + value: self.populationSize + value + self.populationSize + 2 + + + 670 + + + + editable: self.interfaceStatement + + + + + + editable: self.interfaceStatement + editable + self.interfaceStatement + 2 + + + 688 + + + + enabled: self.interfaceStatement + + + + + + enabled: self.interfaceStatement + enabled + self.interfaceStatement + + 2 + + + 733 + + + + enabled: self.pauseStatement + + + + + + enabled: self.pauseStatement + enabled + self.pauseStatement + 2 + + + 764 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 217 + + + + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + + + + + + + 75 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + + + + + + 126 + + + + + 205 + + + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + + + + + + 216 + + + + + + + + 200 + + + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 211 + + + + + + + + 212 + + + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + + + + + + 349 + + + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + + + + + + 372 + + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 6 + 1 + + 12 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 4 + 0 + + 4 + 1 + + 17 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 103 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 201 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 163 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 128 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 6 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 174 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 52 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 73 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 3 + 1 + + 45 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 3 + 1 + + 17 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 126 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 22 + + 1000 + + 3 + 9 + 3 + + + + 10 + 0 + + 10 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + + + + + + + + + + + + + + + + + + + + 375 + + + + + + + + 376 + + + + + + + + + 377 + + + + + + + + 388 + + + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + + + + + + 398 + + + + + + + + 399 + + + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + + + + 451 + + + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + + + + + + 491 + + + + + + + + 492 + + + + + 494 + + + + + 496 + + + + + + + + 497 + + + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 534 + + + + + 536 + + + + + + + + 537 + + + + + + + + 538 + + + + + + + + 539 + + + + + + 7 + 0 + + 0 + 1 + + 304 + + 1000 + + 3 + 9 + 1 + + + + + + 540 + + + + + + + + 541 + + + + + + + + 542 + + + + + + 8 + 0 + + 0 + 1 + + 22 + + 1000 + + 3 + 9 + 1 + + + + 7 + 0 + + 0 + 1 + + 111 + + 1000 + + 3 + 9 + 1 + + + + + + 543 + + + + + + 7 + 0 + + 0 + 1 + + 203 + + 1000 + + 3 + 9 + 1 + + + + + + 544 + + + + + + 545 + + + + + + + + 546 + + + + + + + + 547 + + + + + + + + 548 + + + + + + + + 549 + + + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 3 + 9 + 3 + + + + 5 + 0 + + 5 + 1 + + 201 + + 1000 + + 3 + 9 + 3 + + + + 6 + 0 + + 6 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 11 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 16 + + 1000 + + 8 + 29 + 3 + + + + + + + 550 + + + + + + + + 551 + + + + + + 7 + 0 + + 0 + 1 + + 50 + + 1000 + + 3 + 9 + 1 + + + + + + 553 + + + + + + + + 555 + + + + + + + + 558 + + + + + + + + 563 + + + + + 565 + + + + + 569 + + + + + + + + 571 + + + + + 572 + + + + + 573 + + + + + 574 + + + + + 575 + + + + + 576 + + + + + 577 + + + + + 578 + + + + + 579 + + + + + 580 + + + + + 582 + + + + + 583 + + + + + 584 + + + + + 585 + + + + + 588 + + + + + 589 + + + + + 590 + + + + + 591 + + + + + 596 + + + + + 597 + + + + + 598 + + + + + 599 + + + + + 605 + + + + + 607 + + + + + 609 + + + + + 610 + + + + + 611 + + + + + 612 + + + + + 614 + + + + + 616 + + + + + 620 + + + + + 621 + + + + + 624 + + + + + 627 + + + + + 628 + + + + + 629 + + + + + 630 + + + + + 631 + + + + + 632 + + + + + 634 + + + + + 635 + + + + + 636 + + + + + 637 + + + + + 638 + + + + + 639 + + + + + 640 + + + + + 641 + + + + + 642 + + + + + 643 + + + + + 644 + + + + + 645 + + + + + 647 + + + + + 648 + + + + + + 8 + 0 + + 0 + 1 + + 133 + + 1000 + + 3 + 9 + 1 + + + + + + 649 + + + + + 650 + + + + + 654 + + + + + 655 + + + + + 656 + + + + + 657 + + + + + 661 + + + + + 646 + + + + + 633 + + + + + 759 + + + + + 760 + + + + + 761 + + + + + 762 + + + + + + + + 763 + + + + + 768 + + + + + 769 + + + + + 770 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 772 + + + + + IDNAppDelegate + NSObject + + id + id + id + id + id + + + + loadDNAfromFile: + id + + + pauseEvolution: + id + + + saveData: + id + + + startEvolution: + id + + + stopEvolution: + id + + + + NSTextField + NSWindow + + + + goalDNAField + NSTextField + + + window + NSWindow + + + + IBProjectSource + ./Classes/IDNAppDelegate.h + + + + NSLayoutConstraint + NSObject + + IBProjectSource + ./Classes/NSLayoutConstraint.h + + + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + + YES + + diff --git a/IDNA/IDNA/main.m b/IDNA/IDNA/main.m new file mode 100644 index 0000000..86cf41d --- /dev/null +++ b/IDNA/IDNA/main.m @@ -0,0 +1,14 @@ +// +// main.m +// IDNA +// +// Created by Dmitriy Zhukov on 06.01.13. +// Copyright (c) 2013 Dmitriy Zhukov. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +}