diff options
author | Martin Willi <martin@revosec.ch> | 2014-12-16 17:13:44 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-12-17 16:53:45 +0100 |
commit | dacd667c84525cf335e61c8000922ca68686a4b6 (patch) | |
tree | 0e40cc7151e737681aef150c648d756df16ae788 | |
parent | 04337fed02e8dde1b184b3c163cc76138037905e (diff) | |
download | strongswan-dacd667c84525cf335e61c8000922ca68686a4b6.tar.bz2 strongswan-dacd667c84525cf335e61c8000922ca68686a4b6.tar.xz |
osx: Initial import of the Objective-C App graphical user interface
27 files changed, 4681 insertions, 9 deletions
diff --git a/src/frontends/osx/charon-xpc/charon-xpc-Info.plist b/src/frontends/osx/charon-xpc/charon-xpc-Info.plist index e8ddd24b0..85e2e4dc2 100644 --- a/src/frontends/osx/charon-xpc/charon-xpc-Info.plist +++ b/src/frontends/osx/charon-xpc/charon-xpc-Info.plist @@ -12,7 +12,7 @@ <string>1.0</string> <key>SMAuthorizedClients</key> <array> - <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Joe Developer"</string> + <string>identifier org.strongswan.osx and certificate leaf[subject.CN] = "Developer ID Application: revosec AG (SRXT3TB2PY)"</string> </array> </dict> </plist> diff --git a/src/frontends/osx/strongSwan.xcodeproj/project.pbxproj b/src/frontends/osx/strongSwan.xcodeproj/project.pbxproj index 3b77d2552..e7840e75a 100644 --- a/src/frontends/osx/strongSwan.xcodeproj/project.pbxproj +++ b/src/frontends/osx/strongSwan.xcodeproj/project.pbxproj @@ -7,22 +7,94 @@ objects = { /* Begin PBXBuildFile section */ + 5B04A712174558F100A13BDC /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B04A711174558F100A13BDC /* icon.png */; }; + 5B04A7211747800F00A13BDC /* icon-alt.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B04A7201747800F00A13BDC /* icon-alt.png */; }; + 5B313F9A17A93D590055C86A /* icon-large.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5B313F9917A93D590055C86A /* icon-large.icns */; }; 5B74989217311B200041971E /* xpc_channels.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B74989117311B200041971E /* xpc_channels.c */; }; 5B7498B8173275D10041971E /* xpc_logger.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B7498B7173275D10041971E /* xpc_logger.c */; }; + 5B7FA5A11754D5DB00264BAC /* LogController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA59F1754D5DB00264BAC /* LogController.m */; }; + 5B7FA5B01754EBC800264BAC /* ConnController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA5AE1754EBC800264BAC /* ConnController.m */; }; + 5B7FA5B51754F5AF00264BAC /* PasswordController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B7FA5B31754F5AF00264BAC /* PasswordController.m */; }; + 5B8D879B1A40658B008E5702 /* Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B8D879A1A40658B008E5702 /* Helper.m */; }; + 5B8D879C1A409E4D008E5702 /* LogWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D879E1A409E4D008E5702 /* LogWindow.xib */; }; + 5B8D879F1A409E5A008E5702 /* ConnWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D87A11A409E5A008E5702 /* ConnWindow.xib */; }; + 5B8D87A21A409E6D008E5702 /* PasswordWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */; }; + 5BAE9E9A17A94A2600858FE2 /* icon-active.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BAE9E9917A94A2500858FE2 /* icon-active.png */; }; + 5BD1CCB11726DB0100587077 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCB01726DB0100587077 /* Cocoa.framework */; }; + 5BD1CCBB1726DB0100587077 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCB91726DB0100587077 /* InfoPlist.strings */; }; + 5BD1CCBD1726DB0100587077 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCBC1726DB0100587077 /* main.m */; }; + 5BD1CCC11726DB0100587077 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCBF1726DB0100587077 /* Credits.rtf */; }; + 5BD1CCC41726DB0100587077 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCC31726DB0100587077 /* AppDelegate.m */; }; + 5BD1CCC71726DB0200587077 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCC51726DB0200587077 /* MainMenu.xib */; }; 5BD1CCD71726DB4000587077 /* charon-xpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCD61726DB4000587077 /* charon-xpc.c */; }; + 5BD1CCDF1726DC0A00587077 /* org.strongswan.charon-xpc in Copy Files */ = {isa = PBXBuildFile; fileRef = 5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */; }; + 5BD1CCEB1727CCA400587077 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 5BD1CCEA1727CCA400587077 /* README.md */; }; + 5BD1CCED1727D7AF00587077 /* ServiceManagement.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */; }; + 5BD1CCF31727DE3E00587077 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCF21727DE3E00587077 /* Security.framework */; }; + 5BD1CCFB1729365F00587077 /* Control.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BD1CCFA1729365F00587077 /* Control.m */; }; 5BF60F31173405A000E5D608 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCD31726DB4000587077 /* CoreFoundation.framework */; }; 5BF60F33173405AC00E5D608 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD1CCF21727DE3E00587077 /* Security.framework */; }; 5BF60F3E1734070A00E5D608 /* xpc_dispatch.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B74984C172AA3550041971E /* xpc_dispatch.c */; }; 5BF60F631743C57500E5D608 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BF60F621743C57500E5D608 /* SystemConfiguration.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 5BD1CCE81726E45200587077 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5BD1CCA31726DB0100587077 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5BD1CCD01726DB4000587077; + remoteInfo = "charon-xpc"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5BD1CCDE1726DBF100587077 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = Contents/Library/LaunchServices; + dstSubfolderSpec = 1; + files = ( + 5BD1CCDF1726DC0A00587077 /* org.strongswan.charon-xpc in Copy Files */, + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ + 5B04A711174558F100A13BDC /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; }; + 5B04A7201747800F00A13BDC /* icon-alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-alt.png"; sourceTree = "<group>"; }; + 5B313F9917A93D590055C86A /* icon-large.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "icon-large.icns"; sourceTree = "<group>"; }; 5B74984C172AA3550041971E /* xpc_dispatch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_dispatch.c; sourceTree = "<group>"; }; 5B74984E172AA3670041971E /* xpc_dispatch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_dispatch.h; sourceTree = "<group>"; }; 5B74989017311AFC0041971E /* xpc_channels.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_channels.h; sourceTree = "<group>"; }; 5B74989117311B200041971E /* xpc_channels.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_channels.c; sourceTree = "<group>"; }; 5B7498B7173275D10041971E /* xpc_logger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xpc_logger.c; sourceTree = "<group>"; }; 5B7498B9173275DD0041971E /* xpc_logger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xpc_logger.h; sourceTree = "<group>"; }; + 5B7FA59E1754D5DB00264BAC /* LogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogController.h; sourceTree = "<group>"; }; + 5B7FA59F1754D5DB00264BAC /* LogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LogController.m; sourceTree = "<group>"; }; + 5B7FA5AD1754EBC800264BAC /* ConnController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConnController.h; sourceTree = "<group>"; }; + 5B7FA5AE1754EBC800264BAC /* ConnController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConnController.m; sourceTree = "<group>"; }; + 5B7FA5B21754F5AF00264BAC /* PasswordController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasswordController.h; sourceTree = "<group>"; }; + 5B7FA5B31754F5AF00264BAC /* PasswordController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PasswordController.m; sourceTree = "<group>"; }; + 5B8D87991A406572008E5702 /* Helper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Helper.h; sourceTree = "<group>"; }; + 5B8D879A1A40658B008E5702 /* Helper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Helper.m; sourceTree = "<group>"; }; + 5B8D879D1A409E4D008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/LogWindow.xib; sourceTree = "<group>"; }; + 5B8D87A01A409E5A008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ConnWindow.xib; sourceTree = "<group>"; }; + 5B8D87A31A409E6D008E5702 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/PasswordWindow.xib; sourceTree = "<group>"; }; + 5BAE9E9917A94A2500858FE2 /* icon-active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-active.png"; sourceTree = "<group>"; }; + 5BD1CCAC1726DB0100587077 /* strongSwan.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = strongSwan.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5BD1CCB01726DB0100587077 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 5BD1CCB81726DB0100587077 /* strongSwan-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "strongSwan-Info.plist"; sourceTree = "<group>"; }; + 5BD1CCBA1726DB0100587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; }; + 5BD1CCBC1726DB0100587077 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; + 5BD1CCBE1726DB0100587077 /* strongSwan-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "strongSwan-Prefix.pch"; sourceTree = "<group>"; }; + 5BD1CCC01726DB0100587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; }; + 5BD1CCC21726DB0100587077 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; + 5BD1CCC31726DB0100587077 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; }; + 5BD1CCC61726DB0200587077 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = "<group>"; }; + 5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "org.strongswan.charon-xpc"; sourceTree = BUILT_PRODUCTS_DIR; }; 5BD1CCD31726DB4000587077 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 5BD1CCD61726DB4000587077 /* charon-xpc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = "charon-xpc.c"; sourceTree = "<group>"; }; 5BD1CCE01726DCD000587077 /* charon-xpc-Launchd.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "charon-xpc-Launchd.plist"; sourceTree = "<group>"; }; @@ -30,10 +102,22 @@ 5BD1CCEA1727CCA400587077 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.md; sourceTree = "<group>"; }; 5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ServiceManagement.framework; path = System/Library/Frameworks/ServiceManagement.framework; sourceTree = SDKROOT; }; 5BD1CCF21727DE3E00587077 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 5BD1CCF91729365F00587077 /* Control.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Control.h; sourceTree = "<group>"; }; + 5BD1CCFA1729365F00587077 /* Control.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Control.m; sourceTree = "<group>"; }; 5BF60F621743C57500E5D608 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 5BD1CCA91726DB0100587077 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BD1CCF31727DE3E00587077 /* Security.framework in Frameworks */, + 5BD1CCED1727D7AF00587077 /* ServiceManagement.framework in Frameworks */, + 5BD1CCB11726DB0100587077 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5BD1CCCE1726DB4000587077 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -51,6 +135,7 @@ isa = PBXGroup; children = ( 5BD1CCEA1727CCA400587077 /* README.md */, + 5BD1CCB61726DB0100587077 /* strongSwan */, 5BD1CCD51726DB4000587077 /* charon-xpc */, 5BD1CCAF1726DB0100587077 /* Frameworks */, 5BD1CCAD1726DB0100587077 /* Products */, @@ -60,6 +145,7 @@ 5BD1CCAD1726DB0100587077 /* Products */ = { isa = PBXGroup; children = ( + 5BD1CCAC1726DB0100587077 /* strongSwan.app */, 5BD1CCD11726DB4000587077 /* org.strongswan.charon-xpc */, ); name = Products; @@ -71,11 +157,44 @@ 5BF60F621743C57500E5D608 /* SystemConfiguration.framework */, 5BD1CCF21727DE3E00587077 /* Security.framework */, 5BD1CCEC1727D7AF00587077 /* ServiceManagement.framework */, + 5BD1CCB01726DB0100587077 /* Cocoa.framework */, 5BD1CCD31726DB4000587077 /* CoreFoundation.framework */, ); name = Frameworks; sourceTree = "<group>"; }; + 5BD1CCB61726DB0100587077 /* strongSwan */ = { + isa = PBXGroup; + children = ( + 5B04A711174558F100A13BDC /* icon.png */, + 5B04A7201747800F00A13BDC /* icon-alt.png */, + 5BAE9E9917A94A2500858FE2 /* icon-active.png */, + 5B313F9917A93D590055C86A /* icon-large.icns */, + 5BD1CCBF1726DB0100587077 /* Credits.rtf */, + 5BD1CCBE1726DB0100587077 /* strongSwan-Prefix.pch */, + 5BD1CCBC1726DB0100587077 /* main.m */, + 5BD1CCB91726DB0100587077 /* InfoPlist.strings */, + 5BD1CCB81726DB0100587077 /* strongSwan-Info.plist */, + 5BD1CCC21726DB0100587077 /* AppDelegate.h */, + 5BD1CCC31726DB0100587077 /* AppDelegate.m */, + 5B7FA59E1754D5DB00264BAC /* LogController.h */, + 5B7FA59F1754D5DB00264BAC /* LogController.m */, + 5B8D879E1A409E4D008E5702 /* LogWindow.xib */, + 5BD1CCC51726DB0200587077 /* MainMenu.xib */, + 5BD1CCF91729365F00587077 /* Control.h */, + 5BD1CCFA1729365F00587077 /* Control.m */, + 5B7FA5AD1754EBC800264BAC /* ConnController.h */, + 5B7FA5AE1754EBC800264BAC /* ConnController.m */, + 5B8D87A11A409E5A008E5702 /* ConnWindow.xib */, + 5B7FA5B21754F5AF00264BAC /* PasswordController.h */, + 5B7FA5B31754F5AF00264BAC /* PasswordController.m */, + 5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */, + 5B8D87991A406572008E5702 /* Helper.h */, + 5B8D879A1A40658B008E5702 /* Helper.m */, + ); + path = strongSwan; + sourceTree = "<group>"; + }; 5BD1CCD51726DB4000587077 /* charon-xpc */ = { isa = PBXGroup; children = ( @@ -95,6 +214,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 5BD1CCAB1726DB0100587077 /* strongSwan */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BD1CCCA1726DB0200587077 /* Build configuration list for PBXNativeTarget "strongSwan" */; + buildPhases = ( + 5BD1CCA81726DB0100587077 /* Sources */, + 5BD1CCA91726DB0100587077 /* Frameworks */, + 5BD1CCAA1726DB0100587077 /* Resources */, + 5BD1CCDE1726DBF100587077 /* Copy Files */, + ); + buildRules = ( + ); + dependencies = ( + 5BD1CCE91726E45200587077 /* PBXTargetDependency */, + ); + name = strongSwan; + productName = strongSwan; + productReference = 5BD1CCAC1726DB0100587077 /* strongSwan.app */; + productType = "com.apple.product-type.application"; + }; 5BD1CCD01726DB4000587077 /* charon-xpc */ = { isa = PBXNativeTarget; buildConfigurationList = 5BD1CCDA1726DB4000587077 /* Build configuration list for PBXNativeTarget "charon-xpc" */; @@ -117,7 +255,7 @@ 5BD1CCA31726DB0100587077 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0450; + LastUpgradeCheck = 0610; ORGANIZATIONNAME = "revosec AG"; }; buildConfigurationList = 5BD1CCA61726DB0100587077 /* Build configuration list for PBXProject "strongSwan" */; @@ -132,12 +270,48 @@ projectDirPath = ""; projectRoot = ""; targets = ( + 5BD1CCAB1726DB0100587077 /* strongSwan */, 5BD1CCD01726DB4000587077 /* charon-xpc */, ); }; /* End PBXProject section */ +/* Begin PBXResourcesBuildPhase section */ + 5BD1CCAA1726DB0100587077 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BD1CCBB1726DB0100587077 /* InfoPlist.strings in Resources */, + 5BD1CCC11726DB0100587077 /* Credits.rtf in Resources */, + 5BD1CCC71726DB0200587077 /* MainMenu.xib in Resources */, + 5BD1CCEB1727CCA400587077 /* README.md in Resources */, + 5B04A712174558F100A13BDC /* icon.png in Resources */, + 5B04A7211747800F00A13BDC /* icon-alt.png in Resources */, + 5B8D879C1A409E4D008E5702 /* LogWindow.xib in Resources */, + 5B8D879F1A409E5A008E5702 /* ConnWindow.xib in Resources */, + 5B8D87A21A409E6D008E5702 /* PasswordWindow.xib in Resources */, + 5B313F9A17A93D590055C86A /* icon-large.icns in Resources */, + 5BAE9E9A17A94A2600858FE2 /* icon-active.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 5BD1CCA81726DB0100587077 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5BD1CCBD1726DB0100587077 /* main.m in Sources */, + 5BD1CCC41726DB0100587077 /* AppDelegate.m in Sources */, + 5BD1CCFB1729365F00587077 /* Control.m in Sources */, + 5B7FA5A11754D5DB00264BAC /* LogController.m in Sources */, + 5B8D879B1A40658B008E5702 /* Helper.m in Sources */, + 5B7FA5B01754EBC800264BAC /* ConnController.m in Sources */, + 5B7FA5B51754F5AF00264BAC /* PasswordController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5BD1CCCD1726DB4000587077 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -151,12 +325,70 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 5BD1CCE91726E45200587077 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5BD1CCD01726DB4000587077 /* charon-xpc */; + targetProxy = 5BD1CCE81726E45200587077 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 5B8D879E1A409E4D008E5702 /* LogWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 5B8D879D1A409E4D008E5702 /* en */, + ); + name = LogWindow.xib; + sourceTree = "<group>"; + }; + 5B8D87A11A409E5A008E5702 /* ConnWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 5B8D87A01A409E5A008E5702 /* en */, + ); + name = ConnWindow.xib; + sourceTree = "<group>"; + }; + 5B8D87A41A409E6D008E5702 /* PasswordWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 5B8D87A31A409E6D008E5702 /* en */, + ); + name = PasswordWindow.xib; + sourceTree = "<group>"; + }; + 5BD1CCB91726DB0100587077 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 5BD1CCBA1726DB0100587077 /* en */, + ); + name = InfoPlist.strings; + sourceTree = "<group>"; + }; + 5BD1CCBF1726DB0100587077 /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + 5BD1CCC01726DB0100587077 /* en */, + ); + name = Credits.rtf; + sourceTree = "<group>"; + }; + 5BD1CCC51726DB0200587077 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 5BD1CCC61726DB0200587077 /* en */, + ); + name = MainMenu.xib; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 5BD1CCC81726DB0200587077 /* 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_WARN_EMPTY_BODY = YES; @@ -175,7 +407,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.7; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; }; @@ -185,7 +417,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_EMPTY_BODY = YES; @@ -198,15 +429,48 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.7; SDKROOT = macosx; }; name = Release; }; + 5BD1CCCB1726DB0200587077 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Developer ID Application"; + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "strongSwan/strongSwan-Prefix.pch"; + INFOPLIST_FILE = "strongSwan/strongSwan-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = macosx; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 5BD1CCCC1726DB0200587077 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Developer ID Application"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "strongSwan/strongSwan-Prefix.pch"; + INFOPLIST_FILE = "strongSwan/strongSwan-Info.plist"; + MACOSX_DEPLOYMENT_TARGET = 10.7; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + SDKROOT = macosx; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; 5BD1CCDB1726DB4000587077 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "Joe Developer"; + CODE_SIGN_IDENTITY = "Developer ID Application"; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO; @@ -224,6 +488,7 @@ ../../libcharon/.libs, ../../libhydra/.libs, ); + MACOSX_DEPLOYMENT_TARGET = 10.7; OTHER_CFLAGS = ( "-include", ../../../config.h, @@ -249,6 +514,7 @@ ); PRODUCT_NAME = "org.strongswan.charon-xpc"; PROVISIONING_PROFILE = ""; + SDKROOT = macosx; STRIP_STYLE = "non-global"; }; name = Debug; @@ -256,8 +522,8 @@ 5BD1CCDC1726DB4000587077 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_IDENTITY = "Joe Developer"; - COPY_PHASE_STRIP = YES; + CODE_SIGN_IDENTITY = "Developer ID Application"; + COPY_PHASE_STRIP = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = NO; GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO; @@ -275,6 +541,7 @@ ../../libcharon/.libs, ../../libhydra/.libs, ); + MACOSX_DEPLOYMENT_TARGET = 10.7; OTHER_CFLAGS = ( "-include", ../../../config.h, @@ -300,6 +567,7 @@ ); PRODUCT_NAME = "org.strongswan.charon-xpc"; PROVISIONING_PROFILE = ""; + SDKROOT = macosx; STRIP_STYLE = "non-global"; }; name = Release; @@ -316,6 +584,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 5BD1CCCA1726DB0200587077 /* Build configuration list for PBXNativeTarget "strongSwan" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BD1CCCB1726DB0200587077 /* Debug */, + 5BD1CCCC1726DB0200587077 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 5BD1CCDA1726DB4000587077 /* Build configuration list for PBXNativeTarget "charon-xpc" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/src/frontends/osx/strongSwan/AppDelegate.h b/src/frontends/osx/strongSwan/AppDelegate.h new file mode 100644 index 000000000..062da7d3d --- /dev/null +++ b/src/frontends/osx/strongSwan/AppDelegate.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Cocoa/Cocoa.h> + +#import "Control.h" + +/** + * Main application delegate, controls the status menu + */ +@interface AppDelegate : NSObject <NSApplicationDelegate,ControlDelegate> { + + /** + * Status menu controlled + */ + IBOutlet NSMenu *statusMenu; +} + +/** + * Action to add a new connection + */ +- (IBAction)addConnection:(id)sender; + +@end diff --git a/src/frontends/osx/strongSwan/AppDelegate.m b/src/frontends/osx/strongSwan/AppDelegate.m new file mode 100644 index 000000000..8fe997e0e --- /dev/null +++ b/src/frontends/osx/strongSwan/AppDelegate.m @@ -0,0 +1,358 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "AppDelegate.h" +#import "Control.h" +#import "LogController.h" +#import "ConnController.h" +#import "PasswordController.h" + +@implementation AppDelegate { + NSStatusItem *statusItem; + NSImage *active; + NSImage *inactive; + NSInteger nonConnectionItemCount; + NSMutableArray *connections; + Control *control; + ConnController *editor; + PasswordController *password; +} + +- (void)change:(connectionState)state withConnection:(NSDictionary*)conn +{ + NSInteger idx; + NSMenuItem *item; + + idx = [statusMenu indexOfItemWithRepresentedObject:conn]; + if (idx != -1) + { + item = [statusMenu itemAtIndex:idx]; + + switch (state) { + case STATE_DOWN: + [item setState:NSOffState]; + [item setAction:@selector(doConnection:)]; + [[[item submenu] itemAtIndex:0] setAction:@selector(doConnection:)]; + [[[item submenu] itemAtIndex:0] setTitle:@"Connect"]; + [[[item submenu] itemAtIndex:1] setAction:@selector(editConnection:)]; + [[[item submenu] itemAtIndex:2] setAction:@selector(removeConnection:)]; + [self updateIcon]; + break; + case STATE_WORKING: + [item setState:NSMixedState]; + [item setAction:@selector(undoConnection:)]; + [[[item submenu] itemAtIndex:0] setAction:@selector(undoConnection:)]; + [[[item submenu] itemAtIndex:0] setTitle:@"Disconnect"]; + [[[item submenu] itemAtIndex:1] setAction:nil]; + [[[item submenu] itemAtIndex:2] setAction:nil]; + [self updateIcon]; + break; + case STATE_UP: + [item setState:NSOnState]; + [self updateIcon]; + break; + } + } +} + +- (NSString*)createPasswordWithConnection:(NSDictionary*)conn +{ + return [password query]; +} + +- (void)raise:(NSString*)alert withConnection:(NSDictionary*)conn +{ + NSAlert *popup; + NSString *text; + + text = [[NSString alloc] + initWithFormat:@"Establishing connection %@ failed:", + [conn objectForKey:@"name"]]; + popup = [[NSAlert alloc] init]; + [popup setMessageText:text]; + [popup setInformativeText:alert]; + [popup runModal]; + [text release]; + [popup release]; +} + +- (void)log:(NSString*)line withConnection:(NSDictionary*)conn +{ + [[self findLog:conn] appendLine:line]; +} + +- (IBAction)undoConnection:(id)sender +{ + NSDictionary *conn; + + conn = [sender representedObject]; + [control disconnect:conn]; +} + +- (IBAction)doConnection:(id)sender +{ + NSDictionary *conn; + + conn = [sender representedObject]; + [[self findLog:conn] clear]; + [control connect:conn]; +} + +- (IBAction)addConnection:(id)sender +{ + NSMutableDictionary *conn; + + conn = [editor createConnection]; + if (conn) + { + [connections insertObject:conn atIndex:[connections count]]; + [self saveConnections]; + } +} + +- (IBAction)editConnection:(id)sender +{ + NSMutableDictionary *conn; + + conn = [sender representedObject]; + if ([editor editConnection:conn]) + { + [self saveConnections]; + } +} + +- (IBAction)removeConnection:(id)sender +{ + NSDictionary *conn; + + conn = [sender representedObject]; + [connections removeObject:conn]; + [self saveConnections]; +} + +- (void)loadConnections +{ + NSUserDefaults *defaults; + NSArray *array; + + defaults = [NSUserDefaults standardUserDefaults]; + array = [defaults arrayForKey:@"connections"]; + if (array) + { + [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + if ([obj isKindOfClass:[NSDictionary class]]) + { + NSMutableDictionary *dict; + + dict = [obj mutableCopy]; + [connections insertObject:dict atIndex:[connections count]]; + [dict release]; + } + }]; + } + [defaults addObserver:self + forKeyPath:@"connections" + options:NSKeyValueObservingOptionNew + context:NULL]; +} + +- (void)saveConnections +{ + NSUserDefaults *defaults; + + defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:connections forKey:@"connections"]; + [defaults synchronize]; +} + +- (void)viewLog:(id)sender +{ + [[sender representedObject] show]; +} + +- (LogController*)findLog:(NSDictionary *)connection +{ + NSInteger idx; + NSMenuItem *item; + + idx = [statusMenu indexOfItemWithRepresentedObject:connection]; + if (idx != -1) + { + item = [statusMenu itemAtIndex:idx]; + item = [[item submenu] itemAtIndex:3]; + return [item representedObject]; + } + return nil; +} + +- (void)addMenuItem:(NSDictionary *)connection +{ + NSString *name, *title; + NSMenuItem *item; + NSMenu *submenu; + LogController *ctl; + + name = [connection objectForKey:@"name"]; + if (name) { + /* create submenu first */ + submenu = [[NSMenu alloc] initWithTitle:@"submenu"]; + + item = [[NSMenuItem alloc] initWithTitle:@"Connect" + action:@selector(doConnection:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setRepresentedObject:connection]; + [submenu insertItem:item atIndex:0]; + [item release]; + + item = [[NSMenuItem alloc] initWithTitle:@"Edit..." + action:@selector(editConnection:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setRepresentedObject:connection]; + [submenu insertItem:item atIndex:1]; + [item release]; + + item = [[NSMenuItem alloc] initWithTitle:@"Remove" + action:@selector(removeConnection:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setRepresentedObject:connection]; + [submenu insertItem:item atIndex:2]; + [item release]; + + item = [[NSMenuItem alloc] initWithTitle:@"View Log..." + action:@selector(viewLog:) + keyEquivalent:@""]; + [item setTarget:self]; + ctl = [[LogController alloc] initWithWindowNibName:@"LogWindow"]; + title = [NSString stringWithFormat: @"strongSwan Log: %@", name]; + [[ctl window] setTitle:title]; + [item setRepresentedObject:ctl]; + [ctl release]; + [submenu insertItem:item atIndex:3]; + [item release]; + + item = [[NSMenuItem alloc] initWithTitle:name + action:@selector(doConnection:) + keyEquivalent:@""]; + [item setTarget:self]; + [item setRepresentedObject:connection]; + [item setSubmenu:submenu]; + [submenu release]; + [statusMenu insertItem:item atIndex: + [statusMenu numberOfItems] - nonConnectionItemCount]; + [item release]; + } +} + +- (void)repopulateMenu +{ + while ([statusMenu numberOfItems] > nonConnectionItemCount) + { + [statusMenu removeItemAtIndex:0]; + } + [connections enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop) { + if ([obj isKindOfClass:[NSDictionary class]]) { + [self addMenuItem:obj]; + } + }]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object change:(NSDictionary *)change + context:(void *)context +{ + [self repopulateMenu]; +} + +- (void)updateIcon +{ + NSMenuItem *item; + bool anyactive = FALSE; + int i; + + for (i = 0; i < [statusMenu numberOfItems] - nonConnectionItemCount; i++) + { + item = [statusMenu itemAtIndex:i]; + if ([item state] == NSOnState) + { + anyactive = TRUE; + break; + } + } + [statusItem setImage: anyactive ? active : inactive]; +} + +- (void)initializeMenu +{ + NSImage *icon; + NSString *path; + + statusItem = [[[NSStatusBar systemStatusBar] + statusItemWithLength:NSVariableStatusItemLength] retain]; + [statusItem setMenu:statusMenu]; + [statusItem setHighlightMode:YES]; + + path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"]; + icon = [[NSImage alloc] initWithContentsOfFile:path]; + [statusItem setImage:icon]; + inactive = icon; + + path = [[NSBundle mainBundle] pathForResource:@"icon-active" ofType:@"png"]; + icon = [[NSImage alloc] initWithContentsOfFile:path]; + active = icon; + + path = [[NSBundle mainBundle] pathForResource:@"icon-alt" ofType:@"png"]; + icon = [[NSImage alloc] initWithContentsOfFile:path]; + [statusItem setAlternateImage:icon]; + [icon release]; + + nonConnectionItemCount = [statusMenu numberOfItems]; + + [self repopulateMenu]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + [self loadConnections]; + [self initializeMenu]; +} + +- (id)init +{ + self = [super init]; + control = [[Control alloc] initWithDelegate:self]; + connections = [[NSMutableArray alloc] init]; + editor = [[ConnController alloc] initWithWindowNibName:@"ConnWindow"]; + password = [[PasswordController alloc] initWithWindowNibName:@"PasswordWindow"]; + return self; +} + +- (void)dealloc +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults removeObserver:self forKeyPath:@"connections"]; + [statusItem release]; + [active release]; + [inactive release]; + [connections release]; + [control release]; + [editor release]; + [password release]; + [super dealloc]; +} + +@end diff --git a/src/frontends/osx/strongSwan/ConnController.h b/src/frontends/osx/strongSwan/ConnController.h new file mode 100644 index 000000000..21134fe5a --- /dev/null +++ b/src/frontends/osx/strongSwan/ConnController.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Cocoa/Cocoa.h> + +/** + * Controller for the Connection Editor window + */ +@interface ConnController : NSWindowController { + + /** + * Text field for the connection name + */ + IBOutlet NSTextField *name; + + /** + * Authentication method select control + */ + IBOutlet NSPopUpButton *auth; + + /** + * Server address of connection + */ + IBOutlet NSTextField *server; + + /** + * Username used for client authentication + */ + IBOutlet NSTextField *user; + + /** + * Confirmation button to save/create connection + */ + IBOutlet NSButton *ok; +} + +/** + * Save the currently edited connection + */ +- (IBAction)saveConnEditor:(id)sender; + +/** + * Cancel editing the current connection + */ +- (IBAction)cancelConnEditor:(id)sender; + +/** + * Open a dialog to create a new connection. + * + * @return dictionary with connection settings, retained + */ +- (NSMutableDictionary*)createConnection; + +/** + * Open a dialog to edit a connection + * + * @param conn dictionary with connection settings, gets updated + * @return TRUE if connection has been updated, FALSE if aborted + */ +- (bool)editConnection:(NSMutableDictionary*)conn; + +@end diff --git a/src/frontends/osx/strongSwan/ConnController.m b/src/frontends/osx/strongSwan/ConnController.m new file mode 100644 index 000000000..cd7b9f1dc --- /dev/null +++ b/src/frontends/osx/strongSwan/ConnController.m @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "ConnController.h" + +@interface ConnController () + +@end + +@implementation ConnController + +- (void)moveWindowToActiveSpace +{ + NSInteger behavior, old; + + /* seems that NSWindowCollectionBehaviorMoveToActiveSpace does not work + * when a window is opened a second time. Fix that by changing the + * behavior forth and back. */ + old = behavior = [[self window] collectionBehavior]; + behavior &= ~NSWindowCollectionBehaviorMoveToActiveSpace; + behavior |= NSWindowCollectionBehaviorCanJoinAllSpaces; + + [[self window] setCollectionBehavior: behavior]; + [[self window] setCollectionBehavior: old]; + + [NSApp activateIgnoringOtherApps:YES]; +} + +- (IBAction)saveConnEditor:(id)sender +{ + [NSApp stopModal]; +} + +- (IBAction)cancelConnEditor:(id)sender +{ + [NSApp abortModal]; +} + +- (NSMutableDictionary*)createConnection +{ + NSMutableDictionary *conn = nil; + + [[self window] setTitle:@"Add new connection"]; + [name setStringValue:@""]; + [server setStringValue:@""]; + [user setStringValue:@""]; + [ok setEnabled:FALSE]; + [self moveWindowToActiveSpace]; + if ([NSApp runModalForWindow: [self window]] == NSRunStoppedResponse) + { + conn = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [name stringValue], @"name", + [server stringValue], @"server", + [user stringValue], @"username", + nil]; + } + [[self window] orderOut: self]; + return conn; +} + +- (bool)editConnection:(NSMutableDictionary*)conn +{ + bool edited = NO; + + [[self window] setTitle:@"Edit connection"]; + [name setStringValue:[conn objectForKey:@"name"]]; + [server setStringValue:[conn objectForKey:@"server"]]; + [user setStringValue:[conn objectForKey:@"username"]]; + [ok setEnabled:TRUE]; + [self moveWindowToActiveSpace]; + if ([NSApp runModalForWindow: [self window]] == NSRunStoppedResponse) + { + [conn setObject:[name stringValue] forKey:@"name"]; + [conn setObject:[server stringValue] forKey:@"server"]; + [conn setObject:[user stringValue] forKey:@"username"]; + edited = YES; + } + [[self window] orderOut: self]; + return edited; +} + +- (void)controlTextDidChange:(NSNotification *)notification +{ + [ok setEnabled: + [[name stringValue] length] && + [[server stringValue] length] && + [[user stringValue] length]]; +} + +@end diff --git a/src/frontends/osx/strongSwan/Control.h b/src/frontends/osx/strongSwan/Control.h new file mode 100644 index 000000000..4bcfb5583 --- /dev/null +++ b/src/frontends/osx/strongSwan/Control.h @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Foundation/Foundation.h> + +/** + * State of a connection during connect. + */ +typedef enum { + /** The connection is currently down */ + STATE_DOWN, + /** The connection is getting established, the daemon is working */ + STATE_WORKING, + /** The connection has been established successfully */ + STATE_UP, +} connectionState; + +/** + * This protocol defines callback functions to invoke during connect. + */ +@protocol ControlDelegate + +/** + * The connection has changed its state + * + * @param state new connection state + * @param conn connection that changed its state + */ +- (void)change:(connectionState)state withConnection:(NSDictionary*)conn; + +/** + * A password is required for authentication + * + * @param conn connection a password is required for + * @return a retained password string + */ +- (NSString*)createPasswordWithConnection:(NSDictionary*)conn; + +/** + * Show an alert message to the user + * + * @param alert alert message string + * @param conn connection an error has occurred + */ +- (void)raise:(NSString*)alert withConnection:(NSDictionary*)conn; + +/** + * Log a line for a specific connection + * + * @param line log line string + * @param conn connection the line is logged for + */ +- (void)log:(NSString*)line withConnection:(NSDictionary*)conn; +@end + +/** + * Implements connection connect/disconnect operations using a GUI delegate. + */ +@interface Control : NSObject + +/** + * Try to establish a connection + * + * @param conn connection configuration to initiate + */ +- (void)connect:(NSDictionary*)conn; + +/** + * Disconnect a previously established connection + * + * @param conn connection configuration to terminate + */ +- (void)disconnect:(NSDictionary*)conn; + +/** + * Initiate the Control class using a delegate for GUI operations + * + * @param delegate delegate to invoke callbacks on during connect operation + * @return class instance + */ +- (id)initWithDelegate:(id<ControlDelegate>)delegate; + +@end diff --git a/src/frontends/osx/strongSwan/Control.m b/src/frontends/osx/strongSwan/Control.m new file mode 100644 index 000000000..6bb0d0fa5 --- /dev/null +++ b/src/frontends/osx/strongSwan/Control.m @@ -0,0 +1,258 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "Control.h" +#import "Helper.h" + +@implementation Control { + /* Provides the XPC main connection to the privileged helper */ + Helper *helper; + /* active connection specific XPC channels, indexed by connection name */ + NSDictionary *active; + /* delegate to invoke callbacks on */ + id<ControlDelegate> del; +} + +- (NSString*)translateAlert:(const char*)alert +{ + if (strcmp(alert, "local-auth") == 0) + { + return @"Client authentication failed"; + } + if (strcmp(alert, "remote-auth") == 0) + { + return @"Server authentication failed"; + } + if (strcmp(alert, "dns") == 0) + { + return @"Resolving server hostname failed"; + } + if (strcmp(alert, "unreachable") == 0) + { + return @"Server is unreachable"; + } + if (strcmp(alert, "timeout") == 0) + { + return @"Server did not respond"; + } + if (strcmp(alert, "proposal-mismatch") == 0) + { + return @"No common cryptographic algorithms found"; + } + if (strcmp(alert, "ts-mismatch") == 0) + { + return @"No common traffic selectors found"; + } + return NULL; +} + +- (void)changeState:(connectionState)state withChannel:(xpc_connection_t)channel + andConn:(NSDictionary*)conn +{ + NSString *name; + + name = [conn objectForKey:@"name"]; + switch (state) + { + case STATE_WORKING: + xpc_dictionary_set_value(active, [name UTF8String], channel); + break; + case STATE_DOWN: + xpc_dictionary_set_value(active, [name UTF8String], NULL); + break; + case STATE_UP: + break; + } + dispatch_sync(dispatch_get_main_queue(), ^{ + [del change:state withConnection:conn]; + }); +} + +- (void)handleEvent:(xpc_object_t)request withChannel:(xpc_connection_t)channel + andConn:(NSDictionary*)conn +{ + xpc_connection_t client; + xpc_object_t reply; + const char *type, *rpc, *event; + client = xpc_dictionary_get_remote_connection(request); + type = xpc_dictionary_get_string(request, "type"); + if (type) + { + if (strcmp(type, "rpc") == 0) + { + reply = xpc_dictionary_create_reply(request); + rpc = xpc_dictionary_get_string(request, "rpc"); + if (rpc) + { + if (strcmp(rpc, "get_password") == 0) + { + __block NSString *password; + + dispatch_sync(dispatch_get_main_queue(), ^{ + password = [del createPasswordWithConnection:conn]; + }); + xpc_dictionary_set_string(reply, "password", + [password UTF8String]); + [password release]; + } + } + xpc_connection_send_message(client, reply); + xpc_release(reply); + } + if (strcmp(type, "event") == 0) + { + event = xpc_dictionary_get_string(request, "event"); + if (event) + { + if (strcmp(event, "log") == 0) + { + NSString *line; + + line = [[NSString alloc] initWithUTF8String: + xpc_dictionary_get_string(request, "message")]; + dispatch_async(dispatch_get_main_queue(), ^{ + [del log:line withConnection:conn]; + }); + [line release]; + } + if (strcmp(event, "alert") == 0) + { + NSString *msg; + const char *str; + + str = xpc_dictionary_get_string(request, "alert"); + if (str) + { + msg = [self translateAlert:str]; + if (msg) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [del raise:msg withConnection:conn]; + }); + } + } + } + if (strcmp(event, "connecting") == 0) + { + [self changeState:STATE_WORKING withChannel:channel andConn:conn]; + } + if (strcmp(event, "up") == 0) + { + /* IKE_SA up */ + } + if (strcmp(event, "down") == 0) + { + [self changeState:STATE_DOWN withChannel:channel andConn:conn]; + } + if (strcmp(event, "child_up") == 0) + { + [self changeState:STATE_UP withChannel:channel andConn:conn]; + } + if (strcmp(event, "child_down") == 0) + { + [self changeState:STATE_DOWN withChannel:channel andConn:conn]; + } + } + } + } +} + +- (void)connect:(NSDictionary*)conn +{ + xpc_object_t request; + xpc_connection_t service, daemon; + NSString *name, *server, *username; + + name = [conn objectForKey:@"name"]; + server = [conn objectForKey:@"server"]; + username = [conn objectForKey:@"username"]; + + daemon = [helper getConnection]; + if (!daemon) + { + [del raise:[helper getError] withConnection:conn]; + } + + request = xpc_dictionary_create(NULL, NULL, 0); + xpc_dictionary_set_string(request, "type", "rpc"); + xpc_dictionary_set_string(request, "rpc", "start_connection"); + xpc_dictionary_set_string(request, "name", [name UTF8String]); + xpc_dictionary_set_string(request, "host", [server UTF8String]); + xpc_dictionary_set_string(request, "id", [username UTF8String]); + + service = xpc_connection_create(NULL, NULL); + xpc_connection_set_event_handler(service, ^(xpc_object_t channel) { + + xpc_connection_set_event_handler(channel, ^(xpc_object_t event) { + + if (event == XPC_ERROR_CONNECTION_INTERRUPTED || + event == XPC_ERROR_CONNECTION_INVALID) + { + xpc_dictionary_set_value(active, [name UTF8String], NULL); + dispatch_sync(dispatch_get_main_queue(), ^{ + [del change:STATE_DOWN withConnection:conn]; + }); + } + else + { + [self handleEvent:event withChannel:channel andConn:conn]; + } + }); + xpc_connection_resume(channel); + }); + + xpc_connection_resume(service); + xpc_dictionary_set_connection(request, "channel", xpc_retain(service)); + xpc_connection_send_message_with_reply(daemon, request, + dispatch_get_main_queue(), + ^(xpc_object_t reply) {}); + xpc_release(request); +} + +- (void)disconnect:(NSDictionary*)conn +{ + xpc_connection_t tunnel; + xpc_object_t request; + + tunnel = xpc_dictionary_get_value(active, + [[conn objectForKey:@"name"] UTF8String]); + if (tunnel) + { + request = xpc_dictionary_create(NULL, NULL, 0); + xpc_dictionary_set_string(request, "type", "rpc"); + xpc_dictionary_set_string(request, "rpc", "stop_connection"); + xpc_connection_send_message_with_reply(tunnel, request, + dispatch_get_main_queue(), + ^(xpc_object_t reply) {}); + xpc_release(request); + } +} + +- (void)dealloc +{ + xpc_release(active); + [super dealloc]; +} + +- (id)initWithDelegate:(id<ControlDelegate>)delegate; +{ + self = [super init]; + helper = [[Helper alloc] init]; + active = xpc_dictionary_create(NULL, NULL, 0); + del = delegate; + return self; +} + +@end diff --git a/src/frontends/osx/strongSwan/Helper.h b/src/frontends/osx/strongSwan/Helper.h new file mode 100644 index 000000000..0fa7da8bd --- /dev/null +++ b/src/frontends/osx/strongSwan/Helper.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Foundation/Foundation.h> + +/** + * Privileged Helper abstraction. + * + * Manages the installation of the privileged helper charon-xpc binary + * using authorization, SMJobBless() installation using XPC and also + * checks the installed helper version. + */ +@interface Helper : NSObject + +/** + * Get the XPC connection singleton, installing helper if requried + * + * @return XPC service connection, as a singleton + */ +- (xpc_connection_t)getConnection; + +/** + * Return an errror string if if getConnection fails + * + * @return error string, unretained + */ +- (NSString*)getError; + +@end
\ No newline at end of file diff --git a/src/frontends/osx/strongSwan/Helper.m b/src/frontends/osx/strongSwan/Helper.m new file mode 100644 index 000000000..df4b4c248 --- /dev/null +++ b/src/frontends/osx/strongSwan/Helper.m @@ -0,0 +1,223 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "Helper.h" + +#include <ServiceManagement/ServiceManagement.h> +#include <Security/Authorization.h> + +/* to check strongSwan version */ +#include "../../../../config.h" + +@implementation Helper { + /* XPC connection to the helper */ + xpc_connection_t helper; + /* authorization instance, if authorized */ + AuthorizationRef auth; + /* string of last error occurred */ + NSString* errmsg; +} + +- (void)setError:(NSString*)error +{ + if (errmsg) + { + [errmsg release]; + } + errmsg = error; +} + +- (bool)authorize +{ + AuthorizationItem item = { kSMRightBlessPrivilegedHelper, 0, NULL, 0 }; + AuthorizationRights rights = { 1, &item }; + OSStatus status; + + if (auth) + { + return TRUE; + } + status = AuthorizationCreate(&rights, kAuthorizationEmptyEnvironment, + kAuthorizationFlagDefaults | + kAuthorizationFlagInteractionAllowed | + kAuthorizationFlagExtendRights, &auth); + if (status == errAuthorizationSuccess) + { + return TRUE; + } + if (errmsg) + { + [errmsg release]; + } + [self setError:[NSString stringWithFormat:@"Authorization failed: %@", + SecCopyErrorMessageString(status, NULL)]]; + return FALSE; +} + +- (bool)manage:(CFStringRef)label bless:(bool)bless +{ + bool done; + CFErrorRef error; + + if (![self authorize]) + { + return FALSE; + } + if (bless) + { + done = SMJobBless(kSMDomainSystemLaunchd, label, auth, &error); + } + else + { + done = SMJobRemove(kSMDomainSystemLaunchd, label, auth, TRUE, &error); + } + if (!done) + { + [self setError: + [NSString stringWithFormat:@"Installing privileged helper failed: %@", + CFErrorCopyDescription(error)]]; + CFRelease(error); + } + return done; +} + +- (bool)make:(CFStringRef)label +{ + char str[128]; + + if (!CFStringGetCString(label, str, sizeof(str), kCFStringEncodingUTF8)) + { + [self setError:@"converting XPC service name failed"]; + return FALSE; + } + helper = xpc_connection_create_mach_service(str, NULL, + XPC_CONNECTION_MACH_SERVICE_PRIVILEGED); + if (!helper) + { + [self setError:@"creating XPC mach service failed"]; + return FALSE; + } + + xpc_connection_set_event_handler(helper, ^(xpc_object_t event) { + if (xpc_get_type(event) == XPC_TYPE_ERROR) + { + if (event == XPC_ERROR_CONNECTION_INTERRUPTED || + event == XPC_ERROR_CONNECTION_INVALID) + { + if (helper) + { + xpc_connection_cancel(helper); + helper = NULL; + } + } + } + }); + xpc_connection_resume(helper); + + return TRUE; +} + +- (bool)checkVersion +{ + xpc_object_t request, response; + bool match = FALSE; + + request = xpc_dictionary_create(NULL, NULL, 0); + xpc_dictionary_set_string(request, "type", "rpc"); + xpc_dictionary_set_string(request, "rpc", "get_version"); + + response = xpc_connection_send_message_with_reply_sync(helper, request); + xpc_release(request); + if (xpc_get_type(response) == XPC_TYPE_DICTIONARY) + { + match = strcmp(xpc_dictionary_get_string(response, "version"), + PACKAGE_VERSION) == 0; + } + xpc_release(response); + return match; +} + +- (bool)makeAndCheck:(CFStringRef)label +{ + if (![self make:label]) + { + return FALSE; + } + if ([self checkVersion]) + { + return TRUE; + } + xpc_connection_cancel(helper); + helper = NULL; + /* version outdated, uninstall old helper */ + [self manage:label bless:FALSE]; + return FALSE; +} + +- (bool)blessAndMake:(CFStringRef)label +{ +#ifdef DEBUG + /* always update helper when debugging */ + [self manage:label bless:FALSE]; + [self manage:label bless:TRUE]; +#endif + + if (![self makeAndCheck:label]) + { + if ([self manage:label bless:TRUE]) + { + [self makeAndCheck:label]; + } + } + return helper; +} + +- (xpc_connection_t)getConnection +{ + if (!helper) + { + [self blessAndMake:CFSTR("org.strongswan.charon-xpc")]; + } + return helper; +} + +- (NSString*)getError +{ + return errmsg; +} + +- (id)init +{ + self = [super init]; + return self; +} + +- (void)dealloc +{ + if (helper) + { + xpc_connection_cancel(helper); + } + if (auth) + { + AuthorizationFree(auth, kAuthorizationFlagDefaults); + } + if (errmsg) + { + [errmsg release]; + } + [super dealloc]; +} +@end diff --git a/src/frontends/osx/strongSwan/LogController.h b/src/frontends/osx/strongSwan/LogController.h new file mode 100644 index 000000000..239dd5b05 --- /dev/null +++ b/src/frontends/osx/strongSwan/LogController.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Cocoa/Cocoa.h> + +/** + * Controller for a connection specific log Window + */ +@interface LogController : NSWindowController { + /** + * Text field for the log entries + */ + IBOutlet NSTextView *textView; +} + +/** + * Show the log window on the active Desktop + */ +- (void)show; + +/** + * Append a new log line to the log + * + * @param line log line to append + */ +- (void)appendLine:(NSString*)line; + +/** + * Clear the log window + */ +- (void)clear; + +@end diff --git a/src/frontends/osx/strongSwan/LogController.m b/src/frontends/osx/strongSwan/LogController.m new file mode 100644 index 000000000..56be8c893 --- /dev/null +++ b/src/frontends/osx/strongSwan/LogController.m @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "LogController.h" + +@interface LogController () + +@end + +@implementation LogController + +- (void)appendLine:(NSString*)line +{ + NSAttributedString* attr; + + attr = [[NSAttributedString alloc] initWithString:line]; + [[textView textStorage] appendAttributedString:attr]; + [attr release]; + + attr = [[NSAttributedString alloc] initWithString:@"\n"]; + [[textView textStorage] appendAttributedString:attr]; + [attr release]; + + [textView scrollRangeToVisible:NSMakeRange([[textView string] length], 0)]; +} + +- (void)clear +{ + [textView setString:@""]; +} + +- (void)show +{ + [self showWindow:self]; + [[self window] makeKeyAndOrderFront:self]; + [[self window] orderFrontRegardless]; +} + +@end diff --git a/src/frontends/osx/strongSwan/PasswordController.h b/src/frontends/osx/strongSwan/PasswordController.h new file mode 100644 index 000000000..eeaed0d35 --- /dev/null +++ b/src/frontends/osx/strongSwan/PasswordController.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Cocoa/Cocoa.h> + +/** + * Controller for the EAP password dialog. + */ +@interface PasswordController : NSWindowController { + + /** + * Text field the user enters the password + */ + IBOutlet NSTextField *password; +} + +/** + * Action invoked when the user confirms the password entry + */ +- (IBAction)confirm: (id)sender; + +/** + * Query the user for a password by invoking the modal dialog. + * + * @return password string, retained + */ +- (NSString*)query; + +@end diff --git a/src/frontends/osx/strongSwan/PasswordController.m b/src/frontends/osx/strongSwan/PasswordController.m new file mode 100644 index 000000000..2e0ce556a --- /dev/null +++ b/src/frontends/osx/strongSwan/PasswordController.m @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import "PasswordController.h" + +@interface PasswordController () + +@end + +@implementation PasswordController + +- (void)moveWindowToActiveSpace +{ + NSInteger behavior, old; + + /* seems that NSWindowCollectionBehaviorMoveToActiveSpace does not work + * when a window is opened a second time. Fix that by changing the + * behavior forth and back. */ + old = behavior = [[self window] collectionBehavior]; + behavior &= ~NSWindowCollectionBehaviorMoveToActiveSpace; + behavior |= NSWindowCollectionBehaviorCanJoinAllSpaces; + + [[self window] setCollectionBehavior: behavior]; + [[self window] setCollectionBehavior: old]; + + [NSApp activateIgnoringOtherApps:YES]; +} + +- (IBAction)confirm:(id)sender +{ + [NSApp stopModal]; +} + +- (NSString *)query +{ + [password setStringValue:@""]; + [self moveWindowToActiveSpace]; + [NSApp runModalForWindow: [self window]]; + [[self window] orderOut: self]; + + return [[password stringValue] retain]; +} + +@end diff --git a/src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib b/src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib new file mode 100644 index 000000000..37c74b4aa --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/ConnWindow.xib @@ -0,0 +1,1469 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> + <data> + <int key="IBDocument.SystemTarget">1080</int> + <string key="IBDocument.SystemVersion">12D78</string> + <string key="IBDocument.InterfaceBuilderVersion">2840</string> + <string key="IBDocument.AppKitVersion">1187.37</string> + <string key="IBDocument.HIToolboxVersion">626.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">2840</string> + </object> + <array key="IBDocument.IntegratedClassDependencies"> + <string>IBNSLayoutConstraint</string> + <string>NSButton</string> + <string>NSButtonCell</string> + <string>NSCustomObject</string> + <string>NSMenu</string> + <string>NSMenuItem</string> + <string>NSPopUpButton</string> + <string>NSPopUpButtonCell</string> + <string>NSTextField</string> + <string>NSTextFieldCell</string> + <string>NSView</string> + <string>NSWindowTemplate</string> + </array> + <array key="IBDocument.PluginDependencies"> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </array> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <string key="NS.key.0">PluginDependencyRecalculationVersion</string> + <integer value="1" key="NS.object.0"/> + </object> + <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">ConnController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="735050660"> + <int key="NSWindowStyleMask">1</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{121, 123}, {319, 191}}</string> + <int key="NSWTFlags">611845120</int> + <string key="NSWindowTitle">Window</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <nil key="NSUserInterfaceItemIdentifier"/> + <object class="NSView" key="NSWindowView" id="88276965"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <array class="NSMutableArray" key="NSSubviews"> + <object class="NSButton" id="260033587"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{223, 13}, {82, 32}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="238866077"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">OK</string> + <object class="NSFont" key="NSSupport" id="713244604"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="260033587"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSButton" id="458815142"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{141, 13}, {82, 32}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="260033587"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="85365463"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Cancel</string> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="458815142"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="150710550"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{20, 154}, {162, 17}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="112629631"/> + <string key="NSReuseIdentifierKey">_NS:1535</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="41274883"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Connection name:</string> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:1535</string> + <reference key="NSControlView" ref="150710550"/> + <object class="NSColor" key="NSBackgroundColor" id="817666927"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="585892195"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <object class="NSColor" key="NSColor" id="318412193"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="112629631"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{147, 151}, {152, 22}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="599769836"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="693045854"> + <int key="NSCellFlags">-1804599231</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="112629631"/> + <bool key="NSDrawsBackground">YES</bool> + <object class="NSColor" key="NSBackgroundColor" id="784757228"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="752414597"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textColor</string> + <reference key="NSColor" ref="318412193"/> + </object> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="599769836"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{20, 124}, {162, 17}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="336402053"/> + <string key="NSReuseIdentifierKey">_NS:1535</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="103441974"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Authentication:</string> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:1535</string> + <reference key="NSControlView" ref="599769836"/> + <reference key="NSBackgroundColor" ref="817666927"/> + <reference key="NSTextColor" ref="585892195"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSPopUpButton" id="336402053"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{145, 118}, {157, 26}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="37302032"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSPopUpButtonCell" key="NSCell" id="967115457"> + <int key="NSCellFlags">-2076180416</int> + <int key="NSCellFlags2">2048</int> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="336402053"/> + <int key="NSButtonFlags">109199360</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">400</int> + <int key="NSPeriodicInterval">75</int> + <object class="NSMenuItem" key="NSMenuItem" id="349822264"> + <reference key="NSMenu" ref="913040062"/> + <string key="NSTitle">IKEv2 EAP</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <int key="NSState">1</int> + <object class="NSCustomResource" key="NSOnImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + <string key="NSAction">_popUpItemAction:</string> + <reference key="NSTarget" ref="967115457"/> + </object> + <bool key="NSMenuItemRespectAlignment">YES</bool> + <object class="NSMenu" key="NSMenu" id="913040062"> + <string key="NSTitle">OtherViews</string> + <array class="NSMutableArray" key="NSMenuItems"> + <reference ref="349822264"/> + </array> + <reference key="NSMenuFont" ref="713244604"/> + </object> + <int key="NSPreferredEdge">1</int> + <bool key="NSUsesItemFromMenu">YES</bool> + <bool key="NSAltersState">YES</bool> + <int key="NSArrowPosition">2</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="37302032"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{20, 94}, {162, 17}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="708032587"/> + <string key="NSReuseIdentifierKey">_NS:1535</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="810993949"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Server address:</string> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:1535</string> + <reference key="NSControlView" ref="37302032"/> + <reference key="NSBackgroundColor" ref="817666927"/> + <reference key="NSTextColor" ref="585892195"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="708032587"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{147, 91}, {152, 22}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="252377551"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="835181265"> + <int key="NSCellFlags">-1804599231</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="708032587"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="784757228"/> + <reference key="NSTextColor" ref="752414597"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="252377551"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{20, 64}, {162, 17}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="781381545"/> + <string key="NSReuseIdentifierKey">_NS:1535</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="680381038"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Username:</string> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:1535</string> + <reference key="NSControlView" ref="252377551"/> + <reference key="NSBackgroundColor" ref="817666927"/> + <reference key="NSTextColor" ref="585892195"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + <object class="NSTextField" id="781381545"> + <reference key="NSNextResponder" ref="88276965"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{147, 61}, {152, 22}}</string> + <reference key="NSSuperview" ref="88276965"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="458815142"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="1016899923"> + <int key="NSCellFlags">-1804599231</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents"/> + <reference key="NSSupport" ref="713244604"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="781381545"/> + <bool key="NSDrawsBackground">YES</bool> + <reference key="NSBackgroundColor" ref="784757228"/> + <reference key="NSTextColor" ref="752414597"/> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + </array> + <string key="NSFrameSize">{319, 191}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="150710550"/> + <string key="NSReuseIdentifierKey">_NS:20</string> + </object> + <string key="NSScreenRect">{{0, 0}, {1366, 746}}</string> + <string key="NSMaxSize">{10000000000000, 10000000000000}</string> + <int key="NSWindowAnimationBehavior">3</int> + <int key="NSWindowCollectionBehavior">2</int> + <bool key="NSWindowIsRestorable">YES</bool> + </object> + </array> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <array class="NSMutableArray" key="connectionRecords"> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">auth</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="336402053"/> + </object> + <int key="connectionID">58</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">name</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="112629631"/> + </object> + <int key="connectionID">60</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">ok</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="260033587"/> + </object> + <int key="connectionID">61</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">server</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="708032587"/> + </object> + <int key="connectionID">62</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">user</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="781381545"/> + </object> + <int key="connectionID">63</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="735050660"/> + </object> + <int key="connectionID">64</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">saveConnEditor:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="260033587"/> + </object> + <int key="connectionID">65</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">cancelConnEditor:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="458815142"/> + </object> + <int key="connectionID">66</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="781381545"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">69</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="708032587"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">68</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="112629631"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">67</int> + </object> + </array> + <object class="IBMutableOrderedSet" key="objectRecords"> + <array key="orderedObjects"> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <array key="object" id="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="735050660"/> + <array class="NSMutableArray" key="children"> + <reference ref="88276965"/> + </array> + <reference key="parent" ref="0"/> + <string key="objectName">connEditor</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="88276965"/> + <array class="NSMutableArray" key="children"> + <reference ref="260033587"/> + <reference ref="458815142"/> + <reference ref="336402053"/> + <reference ref="781381545"/> + <reference ref="252377551"/> + <reference ref="708032587"/> + <reference ref="37302032"/> + <reference ref="599769836"/> + <reference ref="112629631"/> + <reference ref="150710550"/> + <object class="IBNSLayoutConstraint" id="191717939"> + <reference key="firstItem" ref="150710550"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="88276965"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="888271389"> + <reference key="firstItem" ref="150710550"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="88276965"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">23</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="301307470"> + <reference key="firstItem" ref="599769836"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="150710550"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="904961544"> + <reference key="firstItem" ref="599769836"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="150710550"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="273342708"> + <reference key="firstItem" ref="37302032"/> + <int key="firstAttribute">10</int> + <int key="relation">0</int> + <reference key="secondItem" ref="708032587"/> + <int key="secondAttribute">10</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="413934103"> + <reference key="firstItem" ref="37302032"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="599769836"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="1055671094"> + <reference key="firstItem" ref="37302032"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="599769836"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="873111545"> + <reference key="firstItem" ref="37302032"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="252377551"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="732345296"> + <reference key="firstItem" ref="252377551"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="37302032"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="318329324"> + <reference key="firstItem" ref="112629631"/> + <int key="firstAttribute">10</int> + <int key="relation">0</int> + <reference key="secondItem" ref="150710550"/> + <int key="secondAttribute">10</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="617034649"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="112629631"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="244493668"> + <reference key="firstItem" ref="112629631"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="336402053"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="355628358"> + <reference key="firstItem" ref="336402053"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="88276965"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">49</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="456332886"> + <reference key="firstItem" ref="336402053"/> + <int key="firstAttribute">11</int> + <int key="relation">0</int> + <reference key="secondItem" ref="599769836"/> + <int key="secondAttribute">11</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="137867301"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="336402053"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="705449622"> + <reference key="firstItem" ref="336402053"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="708032587"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="90621650"> + <reference key="firstItem" ref="708032587"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="88276965"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">78</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="390243852"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="708032587"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="416463027"> + <reference key="firstItem" ref="781381545"/> + <int key="firstAttribute">10</int> + <int key="relation">0</int> + <reference key="secondItem" ref="252377551"/> + <int key="secondAttribute">10</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="843035247"> + <reference key="firstItem" ref="781381545"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="88276965"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">108</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="97881575"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="781381545"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="77769865"> + <reference key="firstItem" ref="781381545"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="458815142"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="8157502"> + <reference key="firstItem" ref="781381545"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="708032587"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="183246038"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">4</int> + <int key="relation">0</int> + <reference key="secondItem" ref="458815142"/> + <int key="secondAttribute">4</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="20925965"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="260033587"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="688537540"> + <reference key="firstItem" ref="88276965"/> + <int key="firstAttribute">4</int> + <int key="relation">0</int> + <reference key="secondItem" ref="260033587"/> + <int key="secondAttribute">4</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">8</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="1018426303"> + <reference key="firstItem" ref="260033587"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="458815142"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">12</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="88276965"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">3</int> + </object> + </array> + <reference key="parent" ref="735050660"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="260033587"/> + <array class="NSMutableArray" key="children"> + <object class="IBNSLayoutConstraint" id="791978514"> + <reference key="firstItem" ref="260033587"/> + <int key="firstAttribute">7</int> + <int key="relation">0</int> + <nil key="secondItem"/> + <int key="secondAttribute">0</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">70</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="260033587"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">1</int> + </object> + <reference ref="238866077"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">okButton</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">8</int> + <reference key="object" ref="458815142"/> + <array class="NSMutableArray" key="children"> + <reference ref="85365463"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">cancelButton</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">9</int> + <reference key="object" ref="336402053"/> + <array class="NSMutableArray" key="children"> + <reference ref="967115457"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">typePopup</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="781381545"/> + <array class="NSMutableArray" key="children"> + <reference ref="1016899923"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">userText</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="252377551"/> + <array class="NSMutableArray" key="children"> + <reference ref="680381038"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">userLabel</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="708032587"/> + <array class="NSMutableArray" key="children"> + <reference ref="835181265"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">serverText</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="37302032"/> + <array class="NSMutableArray" key="children"> + <reference ref="810993949"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">serverLabel</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="599769836"/> + <array class="NSMutableArray" key="children"> + <reference ref="103441974"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">typeLabel</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="112629631"/> + <array class="NSMutableArray" key="children"> + <reference ref="693045854"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">nameText</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="150710550"/> + <array class="NSMutableArray" key="children"> + <object class="IBNSLayoutConstraint" id="831918914"> + <reference key="firstItem" ref="150710550"/> + <int key="firstAttribute">7</int> + <int key="relation">0</int> + <nil key="secondItem"/> + <int key="secondAttribute">0</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">156</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="150710550"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">1</int> + </object> + <reference ref="41274883"/> + </array> + <reference key="parent" ref="88276965"/> + <string key="objectName">nameLabel</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="191717939"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="888271389"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="301307470"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="904961544"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">21</int> + <reference key="object" ref="273342708"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="413934103"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="1055671094"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="873111545"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">25</int> + <reference key="object" ref="732345296"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">26</int> + <reference key="object" ref="318329324"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">27</int> + <reference key="object" ref="617034649"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">28</int> + <reference key="object" ref="244493668"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="355628358"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">30</int> + <reference key="object" ref="456332886"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">31</int> + <reference key="object" ref="137867301"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">32</int> + <reference key="object" ref="705449622"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">33</int> + <reference key="object" ref="90621650"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">34</int> + <reference key="object" ref="390243852"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">35</int> + <reference key="object" ref="416463027"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="843035247"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">37</int> + <reference key="object" ref="97881575"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">38</int> + <reference key="object" ref="77769865"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">39</int> + <reference key="object" ref="8157502"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">40</int> + <reference key="object" ref="183246038"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">41</int> + <reference key="object" ref="20925965"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">42</int> + <reference key="object" ref="688537540"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">43</int> + <reference key="object" ref="1018426303"/> + <reference key="parent" ref="88276965"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">44</int> + <reference key="object" ref="831918914"/> + <reference key="parent" ref="150710550"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">45</int> + <reference key="object" ref="41274883"/> + <reference key="parent" ref="150710550"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">46</int> + <reference key="object" ref="693045854"/> + <reference key="parent" ref="112629631"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">47</int> + <reference key="object" ref="103441974"/> + <reference key="parent" ref="599769836"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">48</int> + <reference key="object" ref="810993949"/> + <reference key="parent" ref="37302032"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">49</int> + <reference key="object" ref="835181265"/> + <reference key="parent" ref="708032587"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">50</int> + <reference key="object" ref="680381038"/> + <reference key="parent" ref="252377551"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">51</int> + <reference key="object" ref="1016899923"/> + <reference key="parent" ref="781381545"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">52</int> + <reference key="object" ref="967115457"/> + <array class="NSMutableArray" key="children"> + <reference ref="913040062"/> + </array> + <reference key="parent" ref="336402053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">53</int> + <reference key="object" ref="913040062"/> + <array class="NSMutableArray" key="children"> + <reference ref="349822264"/> + </array> + <reference key="parent" ref="967115457"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">54</int> + <reference key="object" ref="349822264"/> + <reference key="parent" ref="913040062"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">55</int> + <reference key="object" ref="85365463"/> + <reference key="parent" ref="458815142"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">56</int> + <reference key="object" ref="791978514"/> + <reference key="parent" ref="260033587"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">57</int> + <reference key="object" ref="238866077"/> + <reference key="parent" ref="260033587"/> + </object> + </array> + </object> + <dictionary class="NSMutableDictionary" key="flattenedProperties"> + <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="10.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="11.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableAttributedString" key="11.notes"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + </object> + <boolean value="NO" key="12.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="13.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableAttributedString" key="13.notes"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + </object> + <boolean value="NO" key="14.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableAttributedString" key="14.notes"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + </object> + <boolean value="NO" key="15.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <array key="16.IBNSViewMetadataConstraints"> + <reference ref="831918914"/> + </array> + <boolean value="NO" key="16.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <object class="NSMutableAttributedString" key="16.notes"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + </object> + <string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="21.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="25.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="30.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="31.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="38.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="43.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="46.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="47.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="48.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="49.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="5.NSWindowTemplate.visibleAtLaunch"/> + <string key="50.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="51.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="52.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="53.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="54.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="55.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <array class="NSMutableArray" key="6.IBNSViewMetadataConstraints"> + <reference ref="191717939"/> + <reference ref="888271389"/> + <reference ref="301307470"/> + <reference ref="904961544"/> + <reference ref="273342708"/> + <reference ref="413934103"/> + <reference ref="1055671094"/> + <reference ref="873111545"/> + <reference ref="732345296"/> + <reference ref="318329324"/> + <reference ref="617034649"/> + <reference ref="244493668"/> + <reference ref="355628358"/> + <reference ref="456332886"/> + <reference ref="137867301"/> + <reference ref="705449622"/> + <reference ref="90621650"/> + <reference ref="390243852"/> + <reference ref="416463027"/> + <reference ref="843035247"/> + <reference ref="97881575"/> + <reference ref="77769865"/> + <reference ref="8157502"/> + <reference ref="183246038"/> + <reference ref="20925965"/> + <reference ref="688537540"/> + <reference ref="1018426303"/> + </array> + <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <array key="7.IBNSViewMetadataConstraints"> + <reference ref="791978514"/> + </array> + <boolean value="NO" key="7.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="8.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="9.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> + <nil key="activeLocalization"/> + <dictionary class="NSMutableDictionary" key="localizations"/> + <nil key="sourceID"/> + <int key="maxID">69</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> + <object class="IBPartialClassDescription"> + <string key="className">ConnController</string> + <string key="superclassName">NSWindowController</string> + <dictionary class="NSMutableDictionary" key="actions"> + <string key="cancelConnEditor:">id</string> + <string key="saveConnEditor:">id</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="actionInfosByName"> + <object class="IBActionInfo" key="cancelConnEditor:"> + <string key="name">cancelConnEditor:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="saveConnEditor:"> + <string key="name">saveConnEditor:</string> + <string key="candidateClassName">id</string> + </object> + </dictionary> + <dictionary class="NSMutableDictionary" key="outlets"> + <string key="auth">NSPopUpButton</string> + <string key="name">NSTextField</string> + <string key="ok">NSButton</string> + <string key="server">NSTextField</string> + <string key="user">NSTextField</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> + <object class="IBToOneOutletInfo" key="auth"> + <string key="name">auth</string> + <string key="candidateClassName">NSPopUpButton</string> + </object> + <object class="IBToOneOutletInfo" key="name"> + <string key="name">name</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo" key="ok"> + <string key="name">ok</string> + <string key="candidateClassName">NSButton</string> + </object> + <object class="IBToOneOutletInfo" key="server"> + <string key="name">server</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo" key="user"> + <string key="name">user</string> + <string key="candidateClassName">NSTextField</string> + </object> + </dictionary> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/ConnController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSLayoutConstraint</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/NSLayoutConstraint.h</string> + </object> + </object> + </array> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <string key="NSMenuCheckmark">{11, 11}</string> + <string key="NSMenuMixedState">{10, 3}</string> + </dictionary> + <bool key="IBDocument.UseAutolayout">YES</bool> + </data> +</archive> diff --git a/src/frontends/osx/strongSwan/en.lproj/Credits.rtf b/src/frontends/osx/strongSwan/en.lproj/Credits.rtf new file mode 100644 index 000000000..5684d78b9 --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/Credits.rtf @@ -0,0 +1,32 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1265 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;\red0\green0\blue255;} +\paperw11900\paperh16840\viewkind1\viewscale96 +\deftab720 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardeftab720\ri0 + +\f0\fs24 \cf0 Based on the strongSwan Open Source project:\ +\ + {\field{\*\fldinst{HYPERLINK "http://www.strongswan.org"}}{\fldrslt \cf2 \ul \ulc2 http://www.strongswan.org}}\ +\ +The App and the +\i charon-xpc +\i0 privileged helper tool are licensed under the {\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt"}}{\fldrslt \cf2 \ul \ulc2 General Public License Version 2}}. The strongSwan source code is available for download at:\ +\ + {\field{\*\fldinst{HYPERLINK "http://download.strongswan.org/"}}{\fldrslt \cf2 \ul \ulc2 http://download.strongswan.org/}}\ +\ +The App and the +\i charon-xpc +\i0 helper sources are not part of the main strongSwan distribution, but available separately under:\ +\ + {\field{\*\fldinst{HYPERLINK "http://download.strongswan.org/osx/"}}{\fldrslt \cf2 \ul \ulc2 http://download.strongswan.org/osx/}}\ +\ +The +\i osx-sources +\i0 tarball should get extracted into the strongSwan sources root directory. The +\i README.md +\i0 in +\i src/frontends/osx +\i0 has more information about building +\i charon-xpc +\i0 and the App.}
\ No newline at end of file diff --git a/src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings b/src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..b92732c79 --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/InfoPlist.strings @@ -0,0 +1 @@ +/* Localized versions of Info.plist keys */ diff --git a/src/frontends/osx/strongSwan/en.lproj/LogWindow.xib b/src/frontends/osx/strongSwan/en.lproj/LogWindow.xib new file mode 100644 index 000000000..4c326185d --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/LogWindow.xib @@ -0,0 +1,587 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> + <data> + <int key="IBDocument.SystemTarget">1080</int> + <string key="IBDocument.SystemVersion">12D78</string> + <string key="IBDocument.InterfaceBuilderVersion">2840</string> + <string key="IBDocument.AppKitVersion">1187.37</string> + <string key="IBDocument.HIToolboxVersion">626.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">2840</string> + </object> + <array key="IBDocument.IntegratedClassDependencies"> + <string>IBNSLayoutConstraint</string> + <string>NSCustomObject</string> + <string>NSScrollView</string> + <string>NSScroller</string> + <string>NSTextView</string> + <string>NSView</string> + <string>NSWindowTemplate</string> + </array> + <array key="IBDocument.PluginDependencies"> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </array> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <string key="NS.key.0">PluginDependencyRecalculationVersion</string> + <integer value="1" key="NS.object.0"/> + </object> + <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">LogController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="995804331"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{121, 123}, {547, 312}}</string> + <int key="NSWTFlags">611845120</int> + <string key="NSWindowTitle">Window</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <nil key="NSUserInterfaceItemIdentifier"/> + <object class="NSView" key="NSWindowView" id="875316202"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <array class="NSMutableArray" key="NSSubviews"> + <object class="NSScrollView" id="12648948"> + <reference key="NSNextResponder" ref="875316202"/> + <int key="NSvFlags">256</int> + <array class="NSMutableArray" key="NSSubviews"> + <object class="NSClipView" id="710672467"> + <reference key="NSNextResponder" ref="12648948"/> + <int key="NSvFlags">2304</int> + <array class="NSMutableArray" key="NSSubviews"> + <object class="NSTextView" id="476923000"> + <reference key="NSNextResponder" ref="710672467"/> + <int key="NSvFlags">2322</int> + <string key="NSFrameSize">{525, 286}</string> + <reference key="NSSuperview" ref="710672467"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="757345988"/> + <string key="NSReuseIdentifierKey">_NS:13</string> + <object class="NSTextContainer" key="NSTextContainer" id="756204541"> + <object class="NSLayoutManager" key="NSLayoutManager"> + <object class="NSTextStorage" key="NSTextStorage"> + <object class="NSMutableString" key="NSString"> + <characters key="NS.bytes"/> + </object> + <nil key="NSDelegate"/> + </object> + <array class="NSMutableArray" key="NSTextContainers"> + <reference ref="756204541"/> + </array> + <int key="NSLMFlags">166</int> + <nil key="NSDelegate"/> + </object> + <reference key="NSTextView" ref="476923000"/> + <double key="NSWidth">525</double> + <int key="NSTCFlags">1</int> + </object> + <object class="NSTextViewSharedData" key="NSSharedData"> + <int key="NSFlags">10593</int> + <int key="NSTextCheckingTypes">0</int> + <nil key="NSMarkedAttributes"/> + <object class="NSColor" key="NSBackgroundColor" id="1072550816"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + <dictionary key="NSSelectedAttributes"> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">selectedTextBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">selectedTextColor</string> + <object class="NSColor" key="NSColor" id="120554890"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </dictionary> + <reference key="NSInsertionColor" ref="120554890"/> + <dictionary key="NSLinkAttributes"> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">1</int> + <bytes key="NSRGB">MCAwIDEAA</bytes> + </object> + <object class="NSCursor" key="NSCursor"> + <string key="NSHotSpot">{8, -8}</string> + <int key="NSCursorType">13</int> + </object> + <integer value="1" key="NSUnderline"/> + </dictionary> + <object class="NSParagraphStyle" key="NSDefaultParagraphStyle"> + <int key="NSAlignment">4</int> + <nil key="NSTabStops"/> + <int key="NSWritingDirection">1</int> + </object> + <nil key="NSTextFinder"/> + <int key="NSPreferredTextFinderStyle">1</int> + </object> + <int key="NSTVFlags">6</int> + <string key="NSMaxSize">{548, 10000000}</string> + <nil key="NSDelegate"/> + </object> + </array> + <string key="NSFrame">{{1, 1}, {525, 286}}</string> + <reference key="NSSuperview" ref="12648948"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="476923000"/> + <string key="NSReuseIdentifierKey">_NS:11</string> + <reference key="NSDocView" ref="476923000"/> + <reference key="NSBGColor" ref="1072550816"/> + <object class="NSCursor" key="NSCursor"> + <string key="NSHotSpot">{4, 5}</string> + <object class="NSImage" key="NSImage"> + <int key="NSImageFlags">12582912</int> + <array class="NSMutableArray" key="NSReps"> + <array> + <integer value="0"/> + <object class="NSBitmapImageRep"> + <object class="NSData" key="NSTIFFRepresentation"> + <bytes key="NS.bytes">TU0AKgAAEAj///8A////qwAAAP8AAAD/AwMD/BYWFtIFBQVuAAAABv///wD///8E6+vrTGhoaLYtLS3p +BAQE/QAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/AAAA/wAAAP8EBATSX19fK9HR0ZciIiLv +AAAA/wAAAP8AAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////CsPDw0CRkZG1FxcX9AAAAP8bGxvr +ICAg8AAAAP8ICAjlFRUVVQAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wrm5uab +FxcX9AAAAP8AAAD/AQEB3wAAAA////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///zaXl5fGAAAA/wAAAP8AAABR////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+rAAAA/wAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6sAAAD/AAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qwAAAP8AAAD/ +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+r +AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////CO7u7q8AAAD/AAAA/wAAAAz///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///80mpqaxQAAAP8AAAD/AAAATv///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////CuXl5ZYeHh7xAAAA/wAAAP8CAgLXAAAAD////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////EKurq0mOjo63FxcX9AAAAP8bGxvrICAg8AAAAP8ICAjlHh4eXAAAABj///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qwAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE1V9fXyvS0tKZICAg8AAAAP8AAAD/ +AAAA/wAAAP8AAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+rAAAA/wAAAP8AAAD/FBQU1AUFBXEAAAAG////AP///wTr6+tO +ZWVluC4uLuoAAAD/AAAA/wAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8AABABAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA +EM4BAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE +AAABFgADAAAAAQAgAAABFwAEAAAAAQAAEAABGgAFAAAAAQAAENYBGwAFAAAAAQAAEN4BHAADAAAAAQAB +AAABKAADAAAAAQACAAABUgADAAAAAQACAAABUwADAAAABAAAEOYAAAAAAAgACAAIAAgSAAAAACAAABIA +AAAAIAAAAAEAAQABAAE</bytes> + </object> + </object> + </array> + <array> + <integer value="0"/> + <object class="NSBitmapImageRep"> + <object class="NSData" key="NSTIFFRepresentation"> + <bytes key="NS.bytes">TU0AKgAABAj///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///+qAAAA/////6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///6oAAAD/////AP///wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+qAAAA/////wD///8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP////8A +////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////qgAAAP8AAAD/ +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///+q +AAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///6oAAAD/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///8A////qgAAAP////+qAAAA/////wD///8A////AP///wD///8A////AP///wD///8A +////AP///wD///9VQ0ND/wAAAP////8A////AP///6pDQ0P/AAAA/////wD///8A////AP///wD///8A +////AP///wD///8AAA4BAAADAAAAAQAQAAABAQADAAAAAQAQAAABAgADAAAABAAABLYBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQAQ +AAABFwAEAAAAAQAABAABHAADAAAAAQABAAABUgADAAAAAQACAAABUwADAAAABAAABL6HcwAHAAAHqAAA +BMYAAAAAAAgACAAIAAgAAQABAAEAAQAAB6hhcHBsAiAAAG1udHJSR0IgWFlaIAfZAAIAGQALABoAC2Fj +c3BBUFBMAAAAAGFwcGwAAAAAAAAAAAAAAAAAAAAAAAD21gABAAAAANMtYXBwbAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2Rlc2MAAAEIAAAAb2RzY20AAAF4AAAFbGNw +cnQAAAbkAAAAOHd0cHQAAAccAAAAFHJYWVoAAAcwAAAAFGdYWVoAAAdEAAAAFGJYWVoAAAdYAAAAFHJU +UkMAAAdsAAAADmNoYWQAAAd8AAAALGJUUkMAAAdsAAAADmdUUkMAAAdsAAAADmRlc2MAAAAAAAAAFEdl +bmVyaWMgUkdCIFByb2ZpbGUAAAAAAAAAAAAAABRHZW5lcmljIFJHQiBQcm9maWxlAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAB4AAAAMc2tTSwAA +ACgAAAF4aHJIUgAAACgAAAGgY2FFUwAAACQAAAHIcHRCUgAAACYAAAHsdWtVQQAAACoAAAISZnJGVQAA +ACgAAAI8emhUVwAAABYAAAJkaXRJVAAAACgAAAJ6bmJOTwAAACYAAAKia29LUgAAABYAAALIY3NDWgAA +ACIAAALeaGVJTAAAAB4AAAMAZGVERQAAACwAAAMeaHVIVQAAACgAAANKc3ZTRQAAACYAAAKiemhDTgAA +ABYAAANyamFKUAAAABoAAAOIcm9STwAAACQAAAOiZWxHUgAAACIAAAPGcHRQTwAAACYAAAPobmxOTAAA +ACgAAAQOZXNFUwAAACYAAAPodGhUSAAAACQAAAQ2dHJUUgAAACIAAARaZmlGSQAAACgAAAR8cGxQTAAA +ACwAAASkcnVSVQAAACIAAATQYXJFRwAAACYAAATyZW5VUwAAACYAAAUYZGFESwAAAC4AAAU+AFYBYQBl +AG8AYgBlAGMAbgD9ACAAUgBHAEIAIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQENAGsAaQAgAFIARwBC +ACAAcAByAG8AZgBpAGwAUABlAHIAZgBpAGwAIABSAEcAQgAgAGcAZQBuAOgAcgBpAGMAUABlAHIAZgBp +AGwAIABSAEcAQgAgAEcAZQBuAOkAcgBpAGMAbwQXBDAEMwQwBDsETAQ9BDgEOQAgBD8EQAQ+BEQEMAQ5 +BDsAIABSAEcAQgBQAHIAbwBmAGkAbAAgAGcA6QBuAOkAcgBpAHEAdQBlACAAUgBWAEKQGnUoACAAUgBH +AEIAIIJyX2ljz4/wAFAAcgBvAGYAaQBsAG8AIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBl +AHIAaQBzAGsAIABSAEcAQgAtAHAAcgBvAGYAaQBsx3y8GAAgAFIARwBCACDVBLhc0wzHfABPAGIAZQBj +AG4A/QAgAFIARwBCACAAcAByAG8AZgBpAGwF5AXoBdUF5AXZBdwAIABSAEcAQgAgBdsF3AXcBdkAQQBs +AGwAZwBlAG0AZQBpAG4AZQBzACAAUgBHAEIALQBQAHIAbwBmAGkAbADBAGwAdABhAGwA4QBuAG8AcwAg +AFIARwBCACAAcAByAG8AZgBpAGxmbpAaACAAUgBHAEIAIGPPj/Blh072TgCCLAAgAFIARwBCACAw1zDt +MNUwoTCkMOsAUAByAG8AZgBpAGwAIABSAEcAQgAgAGcAZQBuAGUAcgBpAGMDkwO1A70DuQO6A8wAIAPA +A8EDvwPGA68DuwAgAFIARwBCAFAAZQByAGYAaQBsACAAUgBHAEIAIABnAGUAbgDpAHIAaQBjAG8AQQBs +AGcAZQBtAGUAZQBuACAAUgBHAEIALQBwAHIAbwBmAGkAZQBsDkIOGw4jDkQOHw4lDkwAIABSAEcAQgAg +DhcOMQ5IDicORA4bAEcAZQBuAGUAbAAgAFIARwBCACAAUAByAG8AZgBpAGwAaQBZAGwAZQBpAG4AZQBu +ACAAUgBHAEIALQBwAHIAbwBmAGkAaQBsAGkAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAAcAByAG8AZgBp +AGwAIABSAEcAQgQeBDEESQQ4BDkAIAQ/BEAEPgREBDgEOwRMACAAUgBHAEIGRQZEBkEAIAYqBjkGMQZK +BkEAIABSAEcAQgAgBicGRAY5BicGRQBHAGUAbgBlAHIAaQBjACAAUgBHAEIAIABQAHIAbwBmAGkAbABl +AEcAZQBuAGUAcgBlAGwAIABSAEcAQgAtAGIAZQBzAGsAcgBpAHYAZQBsAHMAZXRleHQAAAAAQ29weXJp +Z2h0IDIwMDcgQXBwbGUgSW5jLiwgYWxsIHJpZ2h0cyByZXNlcnZlZC4AWFlaIAAAAAAAAPNSAAEAAAAB +Fs9YWVogAAAAAAAAdE0AAD3uAAAD0FhZWiAAAAAAAABadQAArHMAABc0WFlaIAAAAAAAACgaAAAVnwAA +uDZjdXJ2AAAAAAAAAAEBzQAAc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAA +wGw</bytes> + </object> + </object> + </array> + </array> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MCAwAA</bytes> + </object> + </object> + </object> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="862774956"> + <reference key="NSNextResponder" ref="12648948"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{510, 1}, {16, 286}}</string> + <reference key="NSSuperview" ref="12648948"/> + <reference key="NSWindow"/> + <string key="NSReuseIdentifierKey">_NS:83</string> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <reference key="NSTarget" ref="12648948"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.85256409645080566</double> + </object> + <object class="NSScroller" id="757345988"> + <reference key="NSNextResponder" ref="12648948"/> + <int key="NSvFlags">256</int> + <string key="NSFrame">{{1, 271}, {525, 16}}</string> + <reference key="NSSuperview" ref="12648948"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="710672467"/> + <string key="NSReuseIdentifierKey">_NS:33</string> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <int key="NSsFlags">1</int> + <reference key="NSTarget" ref="12648948"/> + <string key="NSAction">_doScroller:</string> + <double key="NSCurValue">1</double> + <double key="NSPercent">0.94565218687057495</double> + </object> + </array> + <string key="NSFrame">{{10, 10}, {527, 288}}</string> + <reference key="NSSuperview" ref="875316202"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="710672467"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <int key="NSsFlags">133170</int> + <reference key="NSVScroller" ref="862774956"/> + <reference key="NSHScroller" ref="757345988"/> + <reference key="NSContentView" ref="710672467"/> + <double key="NSMinMagnification">0.25</double> + <double key="NSMaxMagnification">4</double> + <double key="NSMagnification">1</double> + </object> + </array> + <string key="NSFrameSize">{547, 312}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="12648948"/> + <string key="NSReuseIdentifierKey">_NS:20</string> + </object> + <string key="NSScreenRect">{{0, 0}, {1366, 746}}</string> + <string key="NSMaxSize">{10000000000000, 10000000000000}</string> + <bool key="NSWindowIsRestorable">YES</bool> + </object> + </array> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <array class="NSMutableArray" key="connectionRecords"> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">textView</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="476923000"/> + </object> + <int key="connectionID">15</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="995804331"/> + </object> + <int key="connectionID">16</int> + </object> + </array> + <object class="IBMutableOrderedSet" key="objectRecords"> + <array key="orderedObjects"> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <array key="object" id="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="995804331"/> + <array class="NSMutableArray" key="children"> + <reference ref="875316202"/> + </array> + <reference key="parent" ref="0"/> + <string key="objectName">logWindow</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="875316202"/> + <array class="NSMutableArray" key="children"> + <reference ref="12648948"/> + <object class="IBNSLayoutConstraint" id="1012392115"> + <reference key="firstItem" ref="12648948"/> + <int key="firstAttribute">9</int> + <int key="relation">0</int> + <reference key="secondItem" ref="875316202"/> + <int key="secondAttribute">9</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="875316202"/> + <int key="scoringType">5</int> + <float key="scoringTypeFloat">22</float> + <int key="contentType">2</int> + </object> + <object class="IBNSLayoutConstraint" id="543576754"> + <reference key="firstItem" ref="12648948"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="875316202"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">14</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="875316202"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="191511330"> + <reference key="firstItem" ref="875316202"/> + <int key="firstAttribute">4</int> + <int key="relation">0</int> + <reference key="secondItem" ref="12648948"/> + <int key="secondAttribute">4</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">10</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="875316202"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + </object> + <object class="IBNSLayoutConstraint" id="878820173"> + <reference key="firstItem" ref="875316202"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="12648948"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <object class="IBLayoutConstant" key="constant"> + <double key="value">10</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="875316202"/> + <int key="scoringType">9</int> + <float key="scoringTypeFloat">40</float> + <int key="contentType">3</int> + </object> + </array> + <reference key="parent" ref="995804331"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="12648948"/> + <array class="NSMutableArray" key="children"> + <reference ref="862774956"/> + <reference ref="757345988"/> + <reference ref="476923000"/> + </array> + <reference key="parent" ref="875316202"/> + <string key="objectName">logView</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="862774956"/> + <reference key="parent" ref="12648948"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="757345988"/> + <reference key="parent" ref="12648948"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="476923000"/> + <reference key="parent" ref="12648948"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">45</int> + <reference key="object" ref="878820173"/> + <reference key="parent" ref="875316202"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">47</int> + <reference key="object" ref="191511330"/> + <reference key="parent" ref="875316202"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">48</int> + <reference key="object" ref="543576754"/> + <reference key="parent" ref="875316202"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">49</int> + <reference key="object" ref="1012392115"/> + <reference key="parent" ref="875316202"/> + </object> + </array> + </object> + <dictionary class="NSMutableDictionary" key="flattenedProperties"> + <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="47.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="48.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="49.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="5.NSWindowTemplate.visibleAtLaunch"/> + <array class="NSMutableArray" key="6.IBNSViewMetadataConstraints"> + <reference ref="878820173"/> + <reference ref="191511330"/> + <reference ref="543576754"/> + <reference ref="1012392115"/> + </array> + <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="7.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> + <nil key="activeLocalization"/> + <dictionary class="NSMutableDictionary" key="localizations"/> + <nil key="sourceID"/> + <int key="maxID">49</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> + <object class="IBPartialClassDescription"> + <string key="className">LogController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="outlets"> + <string key="NS.key.0">textView</string> + <string key="NS.object.0">NSTextView</string> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <string key="NS.key.0">textView</string> + <object class="IBToOneOutletInfo" key="NS.object.0"> + <string key="name">textView</string> + <string key="candidateClassName">NSTextView</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/LogController.h</string> + </object> + </object> + </array> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <bool key="IBDocument.UseAutolayout">YES</bool> + </data> +</archive> diff --git a/src/frontends/osx/strongSwan/en.lproj/MainMenu.xib b/src/frontends/osx/strongSwan/en.lproj/MainMenu.xib new file mode 100644 index 000000000..c7cce11e6 --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/MainMenu.xib @@ -0,0 +1,277 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> + <data> + <int key="IBDocument.SystemTarget">1080</int> + <string key="IBDocument.SystemVersion">12D78</string> + <string key="IBDocument.InterfaceBuilderVersion">2840</string> + <string key="IBDocument.AppKitVersion">1187.37</string> + <string key="IBDocument.HIToolboxVersion">626.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">2840</string> + </object> + <array key="IBDocument.IntegratedClassDependencies"> + <string>NSCustomObject</string> + <string>NSMenu</string> + <string>NSMenuItem</string> + </array> + <array key="IBDocument.PluginDependencies"> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </array> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <string key="NS.key.0">PluginDependencyRecalculationVersion</string> + <integer value="1" key="NS.object.0"/> + </object> + <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048"> + <object class="NSCustomObject" id="1021"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSCustomObject" id="1014"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1050"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSMenu" id="616737697"> + <string key="NSTitle"/> + <array class="NSMutableArray" key="NSMenuItems"> + <object class="NSMenuItem" id="325430392"> + <reference key="NSMenu" ref="616737697"/> + <bool key="NSIsDisabled">YES</bool> + <bool key="NSIsSeparator">YES</bool> + <string key="NSTitle"/> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <object class="NSCustomResource" key="NSOnImage" id="399365745"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuCheckmark</string> + </object> + <object class="NSCustomResource" key="NSMixedImage" id="358256706"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">NSMenuMixedState</string> + </object> + </object> + <object class="NSMenuItem" id="438443409"> + <reference key="NSMenu" ref="616737697"/> + <string key="NSTitle">Add connection...</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="399365745"/> + <reference key="NSMixedImage" ref="358256706"/> + </object> + <object class="NSMenuItem" id="124555692"> + <reference key="NSMenu" ref="616737697"/> + <string key="NSTitle">About</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="399365745"/> + <reference key="NSMixedImage" ref="358256706"/> + </object> + <object class="NSMenuItem" id="198783502"> + <reference key="NSMenu" ref="616737697"/> + <string key="NSTitle">Quit</string> + <string key="NSKeyEquiv"/> + <int key="NSMnemonicLoc">2147483647</int> + <reference key="NSOnImage" ref="399365745"/> + <reference key="NSMixedImage" ref="358256706"/> + </object> + </array> + </object> + <object class="NSCustomObject" id="976324537"> + <string key="NSClassName">AppDelegate</string> + </object> + <object class="NSCustomObject" id="755631768"> + <string key="NSClassName">NSFontManager</string> + </object> + </array> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <array class="NSMutableArray" key="connectionRecords"> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">terminate:</string> + <reference key="source" ref="1050"/> + <reference key="destination" ref="198783502"/> + </object> + <int key="connectionID">559</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">orderFrontStandardAboutPanel:</string> + <reference key="source" ref="1050"/> + <reference key="destination" ref="124555692"/> + </object> + <int key="connectionID">560</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="1021"/> + <reference key="destination" ref="976324537"/> + </object> + <int key="connectionID">495</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">statusMenu</string> + <reference key="source" ref="976324537"/> + <reference key="destination" ref="616737697"/> + </object> + <int key="connectionID">550</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">addConnection:</string> + <reference key="source" ref="976324537"/> + <reference key="destination" ref="438443409"/> + </object> + <int key="connectionID">561</int> + </object> + </array> + <object class="IBMutableOrderedSet" key="objectRecords"> + <array key="orderedObjects"> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <array key="object" id="0"/> + <reference key="children" ref="1048"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1021"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1014"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1050"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">420</int> + <reference key="object" ref="755631768"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">494</int> + <reference key="object" ref="976324537"/> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">536</int> + <reference key="object" ref="616737697"/> + <array class="NSMutableArray" key="children"> + <reference ref="198783502"/> + <reference ref="124555692"/> + <reference ref="325430392"/> + <reference ref="438443409"/> + </array> + <reference key="parent" ref="0"/> + <string key="objectName">statusMenu</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">538</int> + <reference key="object" ref="198783502"/> + <reference key="parent" ref="616737697"/> + <string key="objectName">quitItem</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">547</int> + <reference key="object" ref="124555692"/> + <reference key="parent" ref="616737697"/> + <string key="objectName">aboutItem</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">557</int> + <reference key="object" ref="325430392"/> + <reference key="parent" ref="616737697"/> + <string key="objectName">connSeparator</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">558</int> + <reference key="object" ref="438443409"/> + <reference key="parent" ref="616737697"/> + <string key="objectName">addItem</string> + </object> + </array> + </object> + <dictionary class="NSMutableDictionary" key="flattenedProperties"> + <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="420.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="494.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="536.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="538.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="547.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="557.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="558.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> + <nil key="activeLocalization"/> + <dictionary class="NSMutableDictionary" key="localizations"/> + <nil key="sourceID"/> + <int key="maxID">780</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> + <object class="IBPartialClassDescription"> + <string key="className">AppDelegate</string> + <string key="superclassName">NSObject</string> + <dictionary class="NSMutableDictionary" key="actions"> + <string key="addConnection:">id</string> + <string key="confirmPassword:">id</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="actionInfosByName"> + <object class="IBActionInfo" key="addConnection:"> + <string key="name">addConnection:</string> + <string key="candidateClassName">id</string> + </object> + <object class="IBActionInfo" key="confirmPassword:"> + <string key="name">confirmPassword:</string> + <string key="candidateClassName">id</string> + </object> + </dictionary> + <dictionary class="NSMutableDictionary" key="outlets"> + <string key="password">NSTextField</string> + <string key="passwordDialog">NSWindow</string> + <string key="statusMenu">NSMenu</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="toOneOutletInfosByName"> + <object class="IBToOneOutletInfo" key="password"> + <string key="name">password</string> + <string key="candidateClassName">NSTextField</string> + </object> + <object class="IBToOneOutletInfo" key="passwordDialog"> + <string key="name">passwordDialog</string> + <string key="candidateClassName">NSWindow</string> + </object> + <object class="IBToOneOutletInfo" key="statusMenu"> + <string key="name">statusMenu</string> + <string key="candidateClassName">NSMenu</string> + </object> + </dictionary> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">./Classes/AppDelegate.h</string> + </object> + </object> + </array> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes"> + <string key="NSMenuCheckmark">{11, 11}</string> + <string key="NSMenuMixedState">{10, 3}</string> + </dictionary> + <bool key="IBDocument.UseAutolayout">YES</bool> + </data> +</archive> diff --git a/src/frontends/osx/strongSwan/en.lproj/PasswordWindow.xib b/src/frontends/osx/strongSwan/en.lproj/PasswordWindow.xib new file mode 100644 index 000000000..1f4434348 --- /dev/null +++ b/src/frontends/osx/strongSwan/en.lproj/PasswordWindow.xib @@ -0,0 +1,578 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00"> + <data> + <int key="IBDocument.SystemTarget">1070</int> + <string key="IBDocument.SystemVersion">14B25</string> + <string key="IBDocument.InterfaceBuilderVersion">6254</string> + <string key="IBDocument.AppKitVersion">1343.16</string> + <string key="IBDocument.HIToolboxVersion">755.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">6254</string> + </object> + <array key="IBDocument.IntegratedClassDependencies"> + <string>IBNSLayoutConstraint</string> + <string>NSButton</string> + <string>NSButtonCell</string> + <string>NSCustomObject</string> + <string>NSSecureTextField</string> + <string>NSSecureTextFieldCell</string> + <string>NSTextField</string> + <string>NSTextFieldCell</string> + <string>NSView</string> + <string>NSWindowTemplate</string> + </array> + <array key="IBDocument.PluginDependencies"> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </array> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <string key="NS.key.0">PluginDependencyRecalculationVersion</string> + <integer value="1" key="NS.object.0"/> + </object> + <array class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">PasswordController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="114195528"> + <int key="NSWindowStyleMask">1</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{121, 123}, {246, 91}}</string> + <int key="NSWTFlags">611845120</int> + <string key="NSWindowTitle">Password required</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <nil key="NSUserInterfaceItemIdentifier"/> + <object class="NSView" key="NSWindowView" id="7448341"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <array class="NSMutableArray" key="NSSubviews"> + <object class="NSSecureTextField" id="799423857"> + <reference key="NSNextResponder" ref="7448341"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{98, 51}, {128, 22}}</string> + <reference key="NSSuperview" ref="7448341"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="302090053"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSSecureTextFieldCell" key="NSCell" id="450546837"> + <int key="NSCellFlags">342884416</int> + <int key="NSCellFlags2">272630848</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport" id="735681452"> + <bool key="IBIsSystemFont">YES</bool> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="799423857"/> + <bool key="NSDrawsBackground">YES</bool> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textColor</string> + <object class="NSColor" key="NSColor" id="709375487"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + <array key="NSAllowedInputLocales"> + <string>NSAllRomanInputSourcesLocaleIdentifier</string> + </array> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <int key="NSTextFieldAlignmentRectInsetsVersion">1</int> + </object> + <object class="NSTextField" id="101537030"> + <reference key="NSNextResponder" ref="7448341"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{21, 54}, {69, 17}}</string> + <reference key="NSSuperview" ref="7448341"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="799423857"/> + <string key="NSReuseIdentifierKey">_NS:1535</string> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="839790140"> + <int key="NSCellFlags">68157504</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Password:</string> + <reference key="NSSupport" ref="735681452"/> + <string key="NSCellIdentifier">_NS:1535</string> + <reference key="NSControlView" ref="101537030"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <reference key="NSColor" ref="709375487"/> + </object> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + <int key="NSTextFieldAlignmentRectInsetsVersion">1</int> + </object> + <object class="NSButton" id="302090053"> + <reference key="NSNextResponder" ref="7448341"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{144, 13}, {88, 32}}</string> + <reference key="NSSuperview" ref="7448341"/> + <reference key="NSWindow"/> + <string key="NSReuseIdentifierKey">_NS:9</string> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="202290476"> + <int key="NSCellFlags">67108864</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">OK</string> + <reference key="NSSupport" ref="735681452"/> + <string key="NSCellIdentifier">_NS:9</string> + <reference key="NSControlView" ref="302090053"/> + <int key="NSButtonFlags">-2038284288</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + <bool key="NSAllowsLogicalLayoutDirection">NO</bool> + </object> + </array> + <string key="NSFrameSize">{246, 91}</string> + <reference key="NSSuperview"/> + <reference key="NSWindow"/> + <reference key="NSNextKeyView" ref="101537030"/> + <string key="NSReuseIdentifierKey">_NS:20</string> + </object> + <string key="NSScreenRect">{{0, 0}, {1366, 745}}</string> + <string key="NSMaxSize">{10000000000000, 10000000000000}</string> + <int key="NSWindowCollectionBehavior">2</int> + <bool key="NSWindowIsRestorable">YES</bool> + </object> + </array> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <array key="connectionRecords"> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">password</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="799423857"/> + </object> + <int key="connectionID">21</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="114195528"/> + </object> + <int key="connectionID">22</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">confirm:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="302090053"/> + </object> + <int key="connectionID">23</int> + </object> + </array> + <object class="IBMutableOrderedSet" key="objectRecords"> + <array key="orderedObjects"> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <array key="object" id="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="114195528"/> + <array class="NSMutableArray" key="children"> + <reference ref="7448341"/> + </array> + <reference key="parent" ref="0"/> + <string key="objectName">passwordDialog</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="7448341"/> + <array class="NSMutableArray" key="children"> + <reference ref="302090053"/> + <reference ref="799423857"/> + <reference ref="101537030"/> + <object class="IBNSLayoutConstraint" id="716977026"> + <reference key="firstItem" ref="101537030"/> + <int key="firstAttribute">5</int> + <int key="relation">0</int> + <reference key="secondItem" ref="7448341"/> + <int key="secondAttribute">5</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBLayoutConstant" key="constant"> + <double key="value">23</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">3</int> + <bool key="placeholder">NO</bool> + </object> + <object class="IBNSLayoutConstraint" id="173643459"> + <reference key="firstItem" ref="101537030"/> + <int key="firstAttribute">3</int> + <int key="relation">0</int> + <reference key="secondItem" ref="7448341"/> + <int key="secondAttribute">3</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">0</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + <bool key="placeholder">NO</bool> + </object> + <object class="IBNSLayoutConstraint" id="291011649"> + <reference key="firstItem" ref="799423857"/> + <int key="firstAttribute">10</int> + <int key="relation">0</int> + <reference key="secondItem" ref="101537030"/> + <int key="secondAttribute">10</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBLayoutConstant" key="constant"> + <double key="value">0.0</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">6</int> + <float key="scoringTypeFloat">24</float> + <int key="contentType">2</int> + <bool key="placeholder">NO</bool> + </object> + <object class="IBNSLayoutConstraint" id="890267046"> + <reference key="firstItem" ref="7448341"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="799423857"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">0</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + <bool key="placeholder">NO</bool> + </object> + <object class="IBNSLayoutConstraint" id="215068406"> + <reference key="firstItem" ref="7448341"/> + <int key="firstAttribute">6</int> + <int key="relation">0</int> + <reference key="secondItem" ref="302090053"/> + <int key="secondAttribute">6</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">0</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + <bool key="placeholder">NO</bool> + </object> + <object class="IBNSLayoutConstraint" id="359266808"> + <reference key="firstItem" ref="7448341"/> + <int key="firstAttribute">4</int> + <int key="relation">0</int> + <reference key="secondItem" ref="302090053"/> + <int key="secondAttribute">4</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBNSLayoutSymbolicConstant" key="constant"> + <double key="value">20</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="7448341"/> + <int key="scoringType">0</int> + <float key="scoringTypeFloat">29</float> + <int key="contentType">3</int> + <bool key="placeholder">NO</bool> + </object> + </array> + <reference key="parent" ref="114195528"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="302090053"/> + <array class="NSMutableArray" key="children"> + <object class="IBNSLayoutConstraint" id="612120711"> + <reference key="firstItem" ref="302090053"/> + <int key="firstAttribute">7</int> + <int key="relation">0</int> + <nil key="secondItem"/> + <int key="secondAttribute">0</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBLayoutConstant" key="constant"> + <double key="value">76</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="302090053"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">1</int> + <bool key="placeholder">NO</bool> + </object> + <reference ref="202290476"/> + </array> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">8</int> + <reference key="object" ref="799423857"/> + <array class="NSMutableArray" key="children"> + <object class="IBNSLayoutConstraint" id="234306912"> + <reference key="firstItem" ref="799423857"/> + <int key="firstAttribute">7</int> + <int key="relation">0</int> + <nil key="secondItem"/> + <int key="secondAttribute">0</int> + <float key="multiplier">1</float> + <string key="multiplierString">1</string> + <object class="IBLayoutConstant" key="constant"> + <double key="value">128</double> + </object> + <float key="priority">1000</float> + <reference key="containingView" ref="799423857"/> + <int key="scoringType">3</int> + <float key="scoringTypeFloat">9</float> + <int key="contentType">1</int> + <bool key="placeholder">NO</bool> + </object> + <reference ref="450546837"/> + </array> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">9</int> + <reference key="object" ref="101537030"/> + <array class="NSMutableArray" key="children"> + <reference ref="839790140"/> + </array> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="716977026"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">11</int> + <reference key="object" ref="173643459"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">12</int> + <reference key="object" ref="291011649"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="890267046"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="215068406"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="359266808"/> + <reference key="parent" ref="7448341"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="839790140"/> + <reference key="parent" ref="101537030"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="234306912"/> + <reference key="parent" ref="799423857"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="450546837"/> + <reference key="parent" ref="799423857"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="612120711"/> + <reference key="parent" ref="302090053"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="202290476"/> + <reference key="parent" ref="302090053"/> + </object> + </array> + </object> + <dictionary class="NSMutableDictionary" key="flattenedProperties"> + <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="11.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="17.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="5.NSWindowTemplate.visibleAtLaunch"/> + <array class="NSMutableArray" key="6.IBNSViewMetadataConstraints"> + <reference ref="716977026"/> + <reference ref="173643459"/> + <reference ref="291011649"/> + <reference ref="890267046"/> + <reference ref="215068406"/> + <reference ref="359266808"/> + </array> + <string key="6.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <array key="7.IBNSViewMetadataConstraints"> + <reference ref="612120711"/> + </array> + <boolean value="NO" key="7.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <array class="NSMutableArray" key="8.IBNSViewMetadataConstraints"> + <reference ref="234306912"/> + </array> + <boolean value="NO" key="8.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="8.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + <boolean value="NO" key="9.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/> + <string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> + </dictionary> + <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/> + <nil key="activeLocalization"/> + <dictionary class="NSMutableDictionary" key="localizations"/> + <nil key="sourceID"/> + <int key="maxID">23</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <array class="NSMutableArray" key="referencedPartialClassDescriptions"> + <object class="IBPartialClassDescription"> + <string key="className">PasswordController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">confirm:</string> + <string key="NS.object.0">id</string> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">confirm:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">confirm:</string> + <string key="candidateClassName">id</string> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <string key="NS.key.0">password</string> + <string key="NS.object.0">NSTextField</string> + </object> + <object class="NSMutableDictionary" key="toOneOutletInfosByName"> + <string key="NS.key.0">password</string> + <object class="IBToOneOutletInfo" key="NS.object.0"> + <string key="name">password</string> + <string key="candidateClassName">NSTextField</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../strongSwan/PasswordController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">PasswordController</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">confirm:</string> + <string key="NS.object.0">id</string> + </object> + <object class="NSMutableDictionary" key="actionInfosByName"> + <string key="NS.key.0">confirm:</string> + <object class="IBActionInfo" key="NS.object.0"> + <string key="name">confirm:</string> + <string key="candidateClassName">id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../strongSwan/PasswordController.m</string> + </object> + </object> + </array> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string> + <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="4600" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + <bool key="IBDocument.UseAutolayout">YES</bool> + </data> +</archive> diff --git a/src/frontends/osx/strongSwan/icon-active.png b/src/frontends/osx/strongSwan/icon-active.png Binary files differnew file mode 100644 index 000000000..e470b083b --- /dev/null +++ b/src/frontends/osx/strongSwan/icon-active.png diff --git a/src/frontends/osx/strongSwan/icon-alt.png b/src/frontends/osx/strongSwan/icon-alt.png Binary files differnew file mode 100644 index 000000000..997652a16 --- /dev/null +++ b/src/frontends/osx/strongSwan/icon-alt.png diff --git a/src/frontends/osx/strongSwan/icon-large.icns b/src/frontends/osx/strongSwan/icon-large.icns Binary files differnew file mode 100644 index 000000000..209ff2170 --- /dev/null +++ b/src/frontends/osx/strongSwan/icon-large.icns diff --git a/src/frontends/osx/strongSwan/icon.png b/src/frontends/osx/strongSwan/icon.png Binary files differnew file mode 100644 index 000000000..07be18ecf --- /dev/null +++ b/src/frontends/osx/strongSwan/icon.png diff --git a/src/frontends/osx/strongSwan/main.m b/src/frontends/osx/strongSwan/main.m new file mode 100644 index 000000000..5fa29c3dd --- /dev/null +++ b/src/frontends/osx/strongSwan/main.m @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2013 Martin Willi + * Copyright (C) 2013 revosec AG + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#import <Cocoa/Cocoa.h> + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/src/frontends/osx/strongSwan/strongSwan-Info.plist b/src/frontends/osx/strongSwan/strongSwan-Info.plist new file mode 100644 index 000000000..56ab217ef --- /dev/null +++ b/src/frontends/osx/strongSwan/strongSwan-Info.plist @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string>icon-large.icns</string> + <key>CFBundleIdentifier</key> + <string>org.strongswan.osx</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>strongSwan OS X App</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>5.2.2</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1</string> + <key>LSApplicationCategoryType</key> + <string>public.app-category.utilities</string> + <key>LSMinimumSystemVersion</key> + <string>${MACOSX_DEPLOYMENT_TARGET}</string> + <key>LSUIElement</key> + <true/> + <key>NSHumanReadableCopyright</key> + <string>Copyright © 2013 revosec AG. All rights reserved.</string> + <key>NSMainNibFile</key> + <string>MainMenu</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> + <key>SMPrivilegedExecutables</key> + <dict> + <key>org.strongswan.charon-xpc</key> + <string>identifier "org.strongswan.charon-xpc" and certificate leaf[subject.CN] = "Developer ID Application: revosec AG (SRXT3TB2PY)"</string> + </dict> +</dict> +</plist> diff --git a/src/frontends/osx/strongSwan/strongSwan-Prefix.pch b/src/frontends/osx/strongSwan/strongSwan-Prefix.pch new file mode 100644 index 000000000..93e0dd127 --- /dev/null +++ b/src/frontends/osx/strongSwan/strongSwan-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'strongSwan' target in the 'strongSwan' project +// + +#ifdef __OBJC__ + #import <Cocoa/Cocoa.h> +#endif |