Browse Source

Initial Commit

Thomas Buck 8 years ago
commit
6523bbdf04

+ 416
- 0
OtaClock.xcodeproj/project.pbxproj View File

@@ -0,0 +1,416 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 46;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		E92321CA1B8128E700D79B33 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = E92321C91B8128E700D79B33 /* AppDelegate.m */; };
11
+		E92321CC1B8128E700D79B33 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = E92321CB1B8128E700D79B33 /* main.m */; };
12
+		E92321CE1B8128E700D79B33 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = E92321CD1B8128E700D79B33 /* Images.xcassets */; };
13
+		E92321D11B8128E700D79B33 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = E92321CF1B8128E700D79B33 /* MainMenu.xib */; };
14
+		E92321DD1B8128E700D79B33 /* OtaClockTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E92321DC1B8128E700D79B33 /* OtaClockTests.m */; };
15
+/* End PBXBuildFile section */
16
+
17
+/* Begin PBXContainerItemProxy section */
18
+		E92321D71B8128E700D79B33 /* PBXContainerItemProxy */ = {
19
+			isa = PBXContainerItemProxy;
20
+			containerPortal = E92321BB1B8128E700D79B33 /* Project object */;
21
+			proxyType = 1;
22
+			remoteGlobalIDString = E92321C21B8128E700D79B33;
23
+			remoteInfo = OtaClock;
24
+		};
25
+/* End PBXContainerItemProxy section */
26
+
27
+/* Begin PBXFileReference section */
28
+		E92321C31B8128E700D79B33 /* OtaClock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OtaClock.app; sourceTree = BUILT_PRODUCTS_DIR; };
29
+		E92321C71B8128E700D79B33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
30
+		E92321C81B8128E700D79B33 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
31
+		E92321C91B8128E700D79B33 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
32
+		E92321CB1B8128E700D79B33 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
33
+		E92321CD1B8128E700D79B33 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
34
+		E92321D01B8128E700D79B33 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
35
+		E92321D61B8128E700D79B33 /* OtaClockTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OtaClockTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
36
+		E92321DB1B8128E700D79B33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
37
+		E92321DC1B8128E700D79B33 /* OtaClockTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = OtaClockTests.m; sourceTree = "<group>"; };
38
+/* End PBXFileReference section */
39
+
40
+/* Begin PBXFrameworksBuildPhase section */
41
+		E92321C01B8128E700D79B33 /* Frameworks */ = {
42
+			isa = PBXFrameworksBuildPhase;
43
+			buildActionMask = 2147483647;
44
+			files = (
45
+			);
46
+			runOnlyForDeploymentPostprocessing = 0;
47
+		};
48
+		E92321D31B8128E700D79B33 /* Frameworks */ = {
49
+			isa = PBXFrameworksBuildPhase;
50
+			buildActionMask = 2147483647;
51
+			files = (
52
+			);
53
+			runOnlyForDeploymentPostprocessing = 0;
54
+		};
55
+/* End PBXFrameworksBuildPhase section */
56
+
57
+/* Begin PBXGroup section */
58
+		E92321BA1B8128E700D79B33 = {
59
+			isa = PBXGroup;
60
+			children = (
61
+				E92321C51B8128E700D79B33 /* OtaClock */,
62
+				E92321D91B8128E700D79B33 /* OtaClockTests */,
63
+				E92321C41B8128E700D79B33 /* Products */,
64
+			);
65
+			sourceTree = "<group>";
66
+		};
67
+		E92321C41B8128E700D79B33 /* Products */ = {
68
+			isa = PBXGroup;
69
+			children = (
70
+				E92321C31B8128E700D79B33 /* OtaClock.app */,
71
+				E92321D61B8128E700D79B33 /* OtaClockTests.xctest */,
72
+			);
73
+			name = Products;
74
+			sourceTree = "<group>";
75
+		};
76
+		E92321C51B8128E700D79B33 /* OtaClock */ = {
77
+			isa = PBXGroup;
78
+			children = (
79
+				E92321C81B8128E700D79B33 /* AppDelegate.h */,
80
+				E92321C91B8128E700D79B33 /* AppDelegate.m */,
81
+				E92321CD1B8128E700D79B33 /* Images.xcassets */,
82
+				E92321CF1B8128E700D79B33 /* MainMenu.xib */,
83
+				E92321C61B8128E700D79B33 /* Supporting Files */,
84
+			);
85
+			path = OtaClock;
86
+			sourceTree = "<group>";
87
+		};
88
+		E92321C61B8128E700D79B33 /* Supporting Files */ = {
89
+			isa = PBXGroup;
90
+			children = (
91
+				E92321C71B8128E700D79B33 /* Info.plist */,
92
+				E92321CB1B8128E700D79B33 /* main.m */,
93
+			);
94
+			name = "Supporting Files";
95
+			sourceTree = "<group>";
96
+		};
97
+		E92321D91B8128E700D79B33 /* OtaClockTests */ = {
98
+			isa = PBXGroup;
99
+			children = (
100
+				E92321DC1B8128E700D79B33 /* OtaClockTests.m */,
101
+				E92321DA1B8128E700D79B33 /* Supporting Files */,
102
+			);
103
+			path = OtaClockTests;
104
+			sourceTree = "<group>";
105
+		};
106
+		E92321DA1B8128E700D79B33 /* Supporting Files */ = {
107
+			isa = PBXGroup;
108
+			children = (
109
+				E92321DB1B8128E700D79B33 /* Info.plist */,
110
+			);
111
+			name = "Supporting Files";
112
+			sourceTree = "<group>";
113
+		};
114
+/* End PBXGroup section */
115
+
116
+/* Begin PBXNativeTarget section */
117
+		E92321C21B8128E700D79B33 /* OtaClock */ = {
118
+			isa = PBXNativeTarget;
119
+			buildConfigurationList = E92321E01B8128E700D79B33 /* Build configuration list for PBXNativeTarget "OtaClock" */;
120
+			buildPhases = (
121
+				E92321BF1B8128E700D79B33 /* Sources */,
122
+				E92321C01B8128E700D79B33 /* Frameworks */,
123
+				E92321C11B8128E700D79B33 /* Resources */,
124
+			);
125
+			buildRules = (
126
+			);
127
+			dependencies = (
128
+			);
129
+			name = OtaClock;
130
+			productName = OtaClock;
131
+			productReference = E92321C31B8128E700D79B33 /* OtaClock.app */;
132
+			productType = "com.apple.product-type.application";
133
+		};
134
+		E92321D51B8128E700D79B33 /* OtaClockTests */ = {
135
+			isa = PBXNativeTarget;
136
+			buildConfigurationList = E92321E31B8128E700D79B33 /* Build configuration list for PBXNativeTarget "OtaClockTests" */;
137
+			buildPhases = (
138
+				E92321D21B8128E700D79B33 /* Sources */,
139
+				E92321D31B8128E700D79B33 /* Frameworks */,
140
+				E92321D41B8128E700D79B33 /* Resources */,
141
+			);
142
+			buildRules = (
143
+			);
144
+			dependencies = (
145
+				E92321D81B8128E700D79B33 /* PBXTargetDependency */,
146
+			);
147
+			name = OtaClockTests;
148
+			productName = OtaClockTests;
149
+			productReference = E92321D61B8128E700D79B33 /* OtaClockTests.xctest */;
150
+			productType = "com.apple.product-type.bundle.unit-test";
151
+		};
152
+/* End PBXNativeTarget section */
153
+
154
+/* Begin PBXProject section */
155
+		E92321BB1B8128E700D79B33 /* Project object */ = {
156
+			isa = PBXProject;
157
+			attributes = {
158
+				LastUpgradeCheck = 0640;
159
+				ORGANIZATIONNAME = xythobuz;
160
+				TargetAttributes = {
161
+					E92321C21B8128E700D79B33 = {
162
+						CreatedOnToolsVersion = 6.4;
163
+					};
164
+					E92321D51B8128E700D79B33 = {
165
+						CreatedOnToolsVersion = 6.4;
166
+						TestTargetID = E92321C21B8128E700D79B33;
167
+					};
168
+				};
169
+			};
170
+			buildConfigurationList = E92321BE1B8128E700D79B33 /* Build configuration list for PBXProject "OtaClock" */;
171
+			compatibilityVersion = "Xcode 3.2";
172
+			developmentRegion = English;
173
+			hasScannedForEncodings = 0;
174
+			knownRegions = (
175
+				en,
176
+				Base,
177
+			);
178
+			mainGroup = E92321BA1B8128E700D79B33;
179
+			productRefGroup = E92321C41B8128E700D79B33 /* Products */;
180
+			projectDirPath = "";
181
+			projectRoot = "";
182
+			targets = (
183
+				E92321C21B8128E700D79B33 /* OtaClock */,
184
+				E92321D51B8128E700D79B33 /* OtaClockTests */,
185
+			);
186
+		};
187
+/* End PBXProject section */
188
+
189
+/* Begin PBXResourcesBuildPhase section */
190
+		E92321C11B8128E700D79B33 /* Resources */ = {
191
+			isa = PBXResourcesBuildPhase;
192
+			buildActionMask = 2147483647;
193
+			files = (
194
+				E92321CE1B8128E700D79B33 /* Images.xcassets in Resources */,
195
+				E92321D11B8128E700D79B33 /* MainMenu.xib in Resources */,
196
+			);
197
+			runOnlyForDeploymentPostprocessing = 0;
198
+		};
199
+		E92321D41B8128E700D79B33 /* Resources */ = {
200
+			isa = PBXResourcesBuildPhase;
201
+			buildActionMask = 2147483647;
202
+			files = (
203
+			);
204
+			runOnlyForDeploymentPostprocessing = 0;
205
+		};
206
+/* End PBXResourcesBuildPhase section */
207
+
208
+/* Begin PBXSourcesBuildPhase section */
209
+		E92321BF1B8128E700D79B33 /* Sources */ = {
210
+			isa = PBXSourcesBuildPhase;
211
+			buildActionMask = 2147483647;
212
+			files = (
213
+				E92321CC1B8128E700D79B33 /* main.m in Sources */,
214
+				E92321CA1B8128E700D79B33 /* AppDelegate.m in Sources */,
215
+			);
216
+			runOnlyForDeploymentPostprocessing = 0;
217
+		};
218
+		E92321D21B8128E700D79B33 /* Sources */ = {
219
+			isa = PBXSourcesBuildPhase;
220
+			buildActionMask = 2147483647;
221
+			files = (
222
+				E92321DD1B8128E700D79B33 /* OtaClockTests.m in Sources */,
223
+			);
224
+			runOnlyForDeploymentPostprocessing = 0;
225
+		};
226
+/* End PBXSourcesBuildPhase section */
227
+
228
+/* Begin PBXTargetDependency section */
229
+		E92321D81B8128E700D79B33 /* PBXTargetDependency */ = {
230
+			isa = PBXTargetDependency;
231
+			target = E92321C21B8128E700D79B33 /* OtaClock */;
232
+			targetProxy = E92321D71B8128E700D79B33 /* PBXContainerItemProxy */;
233
+		};
234
+/* End PBXTargetDependency section */
235
+
236
+/* Begin PBXVariantGroup section */
237
+		E92321CF1B8128E700D79B33 /* MainMenu.xib */ = {
238
+			isa = PBXVariantGroup;
239
+			children = (
240
+				E92321D01B8128E700D79B33 /* Base */,
241
+			);
242
+			name = MainMenu.xib;
243
+			sourceTree = "<group>";
244
+		};
245
+/* End PBXVariantGroup section */
246
+
247
+/* Begin XCBuildConfiguration section */
248
+		E92321DE1B8128E700D79B33 /* Debug */ = {
249
+			isa = XCBuildConfiguration;
250
+			buildSettings = {
251
+				ALWAYS_SEARCH_USER_PATHS = NO;
252
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
253
+				CLANG_CXX_LIBRARY = "libc++";
254
+				CLANG_ENABLE_MODULES = YES;
255
+				CLANG_ENABLE_OBJC_ARC = YES;
256
+				CLANG_WARN_BOOL_CONVERSION = YES;
257
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
258
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
259
+				CLANG_WARN_EMPTY_BODY = YES;
260
+				CLANG_WARN_ENUM_CONVERSION = YES;
261
+				CLANG_WARN_INT_CONVERSION = YES;
262
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
263
+				CLANG_WARN_UNREACHABLE_CODE = YES;
264
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
265
+				CODE_SIGN_IDENTITY = "-";
266
+				COPY_PHASE_STRIP = NO;
267
+				DEBUG_INFORMATION_FORMAT = dwarf;
268
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
269
+				GCC_C_LANGUAGE_STANDARD = gnu99;
270
+				GCC_DYNAMIC_NO_PIC = NO;
271
+				GCC_NO_COMMON_BLOCKS = YES;
272
+				GCC_OPTIMIZATION_LEVEL = 0;
273
+				GCC_PREPROCESSOR_DEFINITIONS = (
274
+					"DEBUG=1",
275
+					"$(inherited)",
276
+				);
277
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
278
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
279
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
280
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
281
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
282
+				GCC_WARN_UNUSED_FUNCTION = YES;
283
+				GCC_WARN_UNUSED_VARIABLE = YES;
284
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
285
+				MTL_ENABLE_DEBUG_INFO = YES;
286
+				ONLY_ACTIVE_ARCH = YES;
287
+				SDKROOT = macosx;
288
+			};
289
+			name = Debug;
290
+		};
291
+		E92321DF1B8128E700D79B33 /* Release */ = {
292
+			isa = XCBuildConfiguration;
293
+			buildSettings = {
294
+				ALWAYS_SEARCH_USER_PATHS = NO;
295
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
296
+				CLANG_CXX_LIBRARY = "libc++";
297
+				CLANG_ENABLE_MODULES = YES;
298
+				CLANG_ENABLE_OBJC_ARC = YES;
299
+				CLANG_WARN_BOOL_CONVERSION = YES;
300
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
301
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
302
+				CLANG_WARN_EMPTY_BODY = YES;
303
+				CLANG_WARN_ENUM_CONVERSION = YES;
304
+				CLANG_WARN_INT_CONVERSION = YES;
305
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
306
+				CLANG_WARN_UNREACHABLE_CODE = YES;
307
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
308
+				CODE_SIGN_IDENTITY = "-";
309
+				COPY_PHASE_STRIP = NO;
310
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
311
+				ENABLE_NS_ASSERTIONS = NO;
312
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
313
+				GCC_C_LANGUAGE_STANDARD = gnu99;
314
+				GCC_NO_COMMON_BLOCKS = YES;
315
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
316
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
317
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
318
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
319
+				GCC_WARN_UNUSED_FUNCTION = YES;
320
+				GCC_WARN_UNUSED_VARIABLE = YES;
321
+				MACOSX_DEPLOYMENT_TARGET = 10.10;
322
+				MTL_ENABLE_DEBUG_INFO = NO;
323
+				SDKROOT = macosx;
324
+			};
325
+			name = Release;
326
+		};
327
+		E92321E11B8128E700D79B33 /* Debug */ = {
328
+			isa = XCBuildConfiguration;
329
+			buildSettings = {
330
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
331
+				COMBINE_HIDPI_IMAGES = YES;
332
+				INFOPLIST_FILE = OtaClock/Info.plist;
333
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
334
+				PRODUCT_NAME = "$(TARGET_NAME)";
335
+			};
336
+			name = Debug;
337
+		};
338
+		E92321E21B8128E700D79B33 /* Release */ = {
339
+			isa = XCBuildConfiguration;
340
+			buildSettings = {
341
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
342
+				COMBINE_HIDPI_IMAGES = YES;
343
+				INFOPLIST_FILE = OtaClock/Info.plist;
344
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
345
+				PRODUCT_NAME = "$(TARGET_NAME)";
346
+			};
347
+			name = Release;
348
+		};
349
+		E92321E41B8128E700D79B33 /* Debug */ = {
350
+			isa = XCBuildConfiguration;
351
+			buildSettings = {
352
+				BUNDLE_LOADER = "$(TEST_HOST)";
353
+				COMBINE_HIDPI_IMAGES = YES;
354
+				FRAMEWORK_SEARCH_PATHS = (
355
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
356
+					"$(inherited)",
357
+				);
358
+				GCC_PREPROCESSOR_DEFINITIONS = (
359
+					"DEBUG=1",
360
+					"$(inherited)",
361
+				);
362
+				INFOPLIST_FILE = OtaClockTests/Info.plist;
363
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
364
+				PRODUCT_NAME = "$(TARGET_NAME)";
365
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OtaClock.app/Contents/MacOS/OtaClock";
366
+			};
367
+			name = Debug;
368
+		};
369
+		E92321E51B8128E700D79B33 /* Release */ = {
370
+			isa = XCBuildConfiguration;
371
+			buildSettings = {
372
+				BUNDLE_LOADER = "$(TEST_HOST)";
373
+				COMBINE_HIDPI_IMAGES = YES;
374
+				FRAMEWORK_SEARCH_PATHS = (
375
+					"$(DEVELOPER_FRAMEWORKS_DIR)",
376
+					"$(inherited)",
377
+				);
378
+				INFOPLIST_FILE = OtaClockTests/Info.plist;
379
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
380
+				PRODUCT_NAME = "$(TARGET_NAME)";
381
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OtaClock.app/Contents/MacOS/OtaClock";
382
+			};
383
+			name = Release;
384
+		};
385
+/* End XCBuildConfiguration section */
386
+
387
+/* Begin XCConfigurationList section */
388
+		E92321BE1B8128E700D79B33 /* Build configuration list for PBXProject "OtaClock" */ = {
389
+			isa = XCConfigurationList;
390
+			buildConfigurations = (
391
+				E92321DE1B8128E700D79B33 /* Debug */,
392
+				E92321DF1B8128E700D79B33 /* Release */,
393
+			);
394
+			defaultConfigurationIsVisible = 0;
395
+			defaultConfigurationName = Release;
396
+		};
397
+		E92321E01B8128E700D79B33 /* Build configuration list for PBXNativeTarget "OtaClock" */ = {
398
+			isa = XCConfigurationList;
399
+			buildConfigurations = (
400
+				E92321E11B8128E700D79B33 /* Debug */,
401
+				E92321E21B8128E700D79B33 /* Release */,
402
+			);
403
+			defaultConfigurationIsVisible = 0;
404
+		};
405
+		E92321E31B8128E700D79B33 /* Build configuration list for PBXNativeTarget "OtaClockTests" */ = {
406
+			isa = XCConfigurationList;
407
+			buildConfigurations = (
408
+				E92321E41B8128E700D79B33 /* Debug */,
409
+				E92321E51B8128E700D79B33 /* Release */,
410
+			);
411
+			defaultConfigurationIsVisible = 0;
412
+		};
413
+/* End XCConfigurationList section */
414
+	};
415
+	rootObject = E92321BB1B8128E700D79B33 /* Project object */;
416
+}

+ 7
- 0
OtaClock.xcodeproj/project.xcworkspace/contents.xcworkspacedata View File

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "self:OtaClock.xcodeproj">
6
+   </FileRef>
7
+</Workspace>

+ 43
- 0
OtaClock.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/OtaClock.xcscheme View File

@@ -0,0 +1,43 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0640"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+   </BuildAction>
9
+   <TestAction
10
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
11
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
12
+      shouldUseLaunchSchemeArgsEnv = "YES"
13
+      buildConfiguration = "Debug">
14
+      <Testables>
15
+      </Testables>
16
+   </TestAction>
17
+   <LaunchAction
18
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
19
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
20
+      launchStyle = "0"
21
+      useCustomWorkingDirectory = "NO"
22
+      buildConfiguration = "Debug"
23
+      ignoresPersistentStateOnLaunch = "NO"
24
+      debugDocumentVersioning = "YES"
25
+      allowLocationSimulation = "YES">
26
+      <AdditionalOptions>
27
+      </AdditionalOptions>
28
+   </LaunchAction>
29
+   <ProfileAction
30
+      shouldUseLaunchSchemeArgsEnv = "YES"
31
+      savedToolIdentifier = ""
32
+      useCustomWorkingDirectory = "NO"
33
+      buildConfiguration = "Release"
34
+      debugDocumentVersioning = "YES">
35
+   </ProfileAction>
36
+   <AnalyzeAction
37
+      buildConfiguration = "Debug">
38
+   </AnalyzeAction>
39
+   <ArchiveAction
40
+      buildConfiguration = "Release"
41
+      revealArchiveInOrganizer = "YES">
42
+   </ArchiveAction>
43
+</Scheme>

+ 27
- 0
OtaClock.xcodeproj/xcuserdata/thomas.xcuserdatad/xcschemes/xcschememanagement.plist View File

@@ -0,0 +1,27 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>SchemeUserState</key>
6
+	<dict>
7
+		<key>OtaClock.xcscheme</key>
8
+		<dict>
9
+			<key>orderHint</key>
10
+			<integer>0</integer>
11
+		</dict>
12
+	</dict>
13
+	<key>SuppressBuildableAutocreation</key>
14
+	<dict>
15
+		<key>E92321C21B8128E700D79B33</key>
16
+		<dict>
17
+			<key>primary</key>
18
+			<true/>
19
+		</dict>
20
+		<key>E92321D51B8128E700D79B33</key>
21
+		<dict>
22
+			<key>primary</key>
23
+			<true/>
24
+		</dict>
25
+	</dict>
26
+</dict>
27
+</plist>

+ 15
- 0
OtaClock/AppDelegate.h View File

@@ -0,0 +1,15 @@
1
+//
2
+//  AppDelegate.h
3
+//  OtaClock
4
+//
5
+//  Created by Thomas Buck on 16.08.15.
6
+//  Copyright (c) 2015 xythobuz. All rights reserved.
7
+//
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+@interface AppDelegate : NSObject <NSApplicationDelegate>
12
+
13
+
14
+@end
15
+

+ 26
- 0
OtaClock/AppDelegate.m View File

@@ -0,0 +1,26 @@
1
+//
2
+//  AppDelegate.m
3
+//  OtaClock
4
+//
5
+//  Created by Thomas Buck on 16.08.15.
6
+//  Copyright (c) 2015 xythobuz. All rights reserved.
7
+//
8
+
9
+#import "AppDelegate.h"
10
+
11
+@interface AppDelegate ()
12
+
13
+@property (weak) IBOutlet NSWindow *window;
14
+@end
15
+
16
+@implementation AppDelegate
17
+
18
+- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
19
+    // Insert code here to initialize your application
20
+}
21
+
22
+- (void)applicationWillTerminate:(NSNotification *)aNotification {
23
+    // Insert code here to tear down your application
24
+}
25
+
26
+@end

+ 680
- 0
OtaClock/Base.lproj/MainMenu.xib View File

@@ -0,0 +1,680 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6233" systemVersion="14A329f" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
3
+    <dependencies>
4
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6233"/>
5
+    </dependencies>
6
+    <objects>
7
+        <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
8
+            <connections>
9
+                <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
10
+            </connections>
11
+        </customObject>
12
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
13
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
14
+        <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModuleProvider="">
15
+            <connections>
16
+                <outlet property="window" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
17
+            </connections>
18
+        </customObject>
19
+        <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
20
+        <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
21
+            <items>
22
+                <menuItem title="OtaClock" id="1Xt-HY-uBw">
23
+                    <modifierMask key="keyEquivalentModifierMask"/>
24
+                    <menu key="submenu" title="OtaClock" systemMenu="apple" id="uQy-DD-JDr">
25
+                        <items>
26
+                            <menuItem title="About OtaClock" id="5kV-Vb-QxS">
27
+                                <modifierMask key="keyEquivalentModifierMask"/>
28
+                                <connections>
29
+                                    <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
30
+                                </connections>
31
+                            </menuItem>
32
+                            <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
33
+                            <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
34
+                            <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
35
+                            <menuItem title="Services" id="NMo-om-nkz">
36
+                                <modifierMask key="keyEquivalentModifierMask"/>
37
+                                <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
38
+                            </menuItem>
39
+                            <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
40
+                            <menuItem title="Hide OtaClock" keyEquivalent="h" id="Olw-nP-bQN">
41
+                                <connections>
42
+                                    <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
43
+                                </connections>
44
+                            </menuItem>
45
+                            <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
46
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
47
+                                <connections>
48
+                                    <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
49
+                                </connections>
50
+                            </menuItem>
51
+                            <menuItem title="Show All" id="Kd2-mp-pUS">
52
+                                <modifierMask key="keyEquivalentModifierMask"/>
53
+                                <connections>
54
+                                    <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
55
+                                </connections>
56
+                            </menuItem>
57
+                            <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
58
+                            <menuItem title="Quit OtaClock" keyEquivalent="q" id="4sb-4s-VLi">
59
+                                <connections>
60
+                                    <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
61
+                                </connections>
62
+                            </menuItem>
63
+                        </items>
64
+                    </menu>
65
+                </menuItem>
66
+                <menuItem title="File" id="dMs-cI-mzQ">
67
+                    <modifierMask key="keyEquivalentModifierMask"/>
68
+                    <menu key="submenu" title="File" id="bib-Uj-vzu">
69
+                        <items>
70
+                            <menuItem title="New" keyEquivalent="n" id="Was-JA-tGl">
71
+                                <connections>
72
+                                    <action selector="newDocument:" target="-1" id="4Si-XN-c54"/>
73
+                                </connections>
74
+                            </menuItem>
75
+                            <menuItem title="Open…" keyEquivalent="o" id="IAo-SY-fd9">
76
+                                <connections>
77
+                                    <action selector="openDocument:" target="-1" id="bVn-NM-KNZ"/>
78
+                                </connections>
79
+                            </menuItem>
80
+                            <menuItem title="Open Recent" id="tXI-mr-wws">
81
+                                <modifierMask key="keyEquivalentModifierMask"/>
82
+                                <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="oas-Oc-fiZ">
83
+                                    <items>
84
+                                        <menuItem title="Clear Menu" id="vNY-rz-j42">
85
+                                            <modifierMask key="keyEquivalentModifierMask"/>
86
+                                            <connections>
87
+                                                <action selector="clearRecentDocuments:" target="-1" id="Daa-9d-B3U"/>
88
+                                            </connections>
89
+                                        </menuItem>
90
+                                    </items>
91
+                                </menu>
92
+                            </menuItem>
93
+                            <menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
94
+                            <menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
95
+                                <connections>
96
+                                    <action selector="performClose:" target="-1" id="HmO-Ls-i7Q"/>
97
+                                </connections>
98
+                            </menuItem>
99
+                            <menuItem title="Save…" keyEquivalent="s" id="pxx-59-PXV">
100
+                                <connections>
101
+                                    <action selector="saveDocument:" target="-1" id="teZ-XB-qJY"/>
102
+                                </connections>
103
+                            </menuItem>
104
+                            <menuItem title="Save As…" keyEquivalent="S" id="Bw7-FT-i3A">
105
+                                <connections>
106
+                                    <action selector="saveDocumentAs:" target="-1" id="mDf-zr-I0C"/>
107
+                                </connections>
108
+                            </menuItem>
109
+                            <menuItem title="Revert to Saved" id="KaW-ft-85H">
110
+                                <modifierMask key="keyEquivalentModifierMask"/>
111
+                                <connections>
112
+                                    <action selector="revertDocumentToSaved:" target="-1" id="iJ3-Pv-kwq"/>
113
+                                </connections>
114
+                            </menuItem>
115
+                            <menuItem isSeparatorItem="YES" id="aJh-i4-bef"/>
116
+                            <menuItem title="Page Setup…" keyEquivalent="P" id="qIS-W8-SiK">
117
+                                <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
118
+                                <connections>
119
+                                    <action selector="runPageLayout:" target="-1" id="Din-rz-gC5"/>
120
+                                </connections>
121
+                            </menuItem>
122
+                            <menuItem title="Print…" keyEquivalent="p" id="aTl-1u-JFS">
123
+                                <connections>
124
+                                    <action selector="print:" target="-1" id="qaZ-4w-aoO"/>
125
+                                </connections>
126
+                            </menuItem>
127
+                        </items>
128
+                    </menu>
129
+                </menuItem>
130
+                <menuItem title="Edit" id="5QF-Oa-p0T">
131
+                    <modifierMask key="keyEquivalentModifierMask"/>
132
+                    <menu key="submenu" title="Edit" id="W48-6f-4Dl">
133
+                        <items>
134
+                            <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
135
+                                <connections>
136
+                                    <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
137
+                                </connections>
138
+                            </menuItem>
139
+                            <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
140
+                                <connections>
141
+                                    <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
142
+                                </connections>
143
+                            </menuItem>
144
+                            <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
145
+                            <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
146
+                                <connections>
147
+                                    <action selector="cut:" target="-1" id="YJe-68-I9s"/>
148
+                                </connections>
149
+                            </menuItem>
150
+                            <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
151
+                                <connections>
152
+                                    <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
153
+                                </connections>
154
+                            </menuItem>
155
+                            <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
156
+                                <connections>
157
+                                    <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
158
+                                </connections>
159
+                            </menuItem>
160
+                            <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
161
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
162
+                                <connections>
163
+                                    <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
164
+                                </connections>
165
+                            </menuItem>
166
+                            <menuItem title="Delete" id="pa3-QI-u2k">
167
+                                <modifierMask key="keyEquivalentModifierMask"/>
168
+                                <connections>
169
+                                    <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
170
+                                </connections>
171
+                            </menuItem>
172
+                            <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
173
+                                <connections>
174
+                                    <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
175
+                                </connections>
176
+                            </menuItem>
177
+                            <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
178
+                            <menuItem title="Find" id="4EN-yA-p0u">
179
+                                <modifierMask key="keyEquivalentModifierMask"/>
180
+                                <menu key="submenu" title="Find" id="1b7-l0-nxx">
181
+                                    <items>
182
+                                        <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
183
+                                            <connections>
184
+                                                <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
185
+                                            </connections>
186
+                                        </menuItem>
187
+                                        <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
188
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
189
+                                            <connections>
190
+                                                <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
191
+                                            </connections>
192
+                                        </menuItem>
193
+                                        <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
194
+                                            <connections>
195
+                                                <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
196
+                                            </connections>
197
+                                        </menuItem>
198
+                                        <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
199
+                                            <connections>
200
+                                                <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
201
+                                            </connections>
202
+                                        </menuItem>
203
+                                        <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
204
+                                            <connections>
205
+                                                <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
206
+                                            </connections>
207
+                                        </menuItem>
208
+                                        <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
209
+                                            <connections>
210
+                                                <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
211
+                                            </connections>
212
+                                        </menuItem>
213
+                                    </items>
214
+                                </menu>
215
+                            </menuItem>
216
+                            <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
217
+                                <modifierMask key="keyEquivalentModifierMask"/>
218
+                                <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
219
+                                    <items>
220
+                                        <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
221
+                                            <connections>
222
+                                                <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
223
+                                            </connections>
224
+                                        </menuItem>
225
+                                        <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
226
+                                            <connections>
227
+                                                <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
228
+                                            </connections>
229
+                                        </menuItem>
230
+                                        <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
231
+                                        <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
232
+                                            <modifierMask key="keyEquivalentModifierMask"/>
233
+                                            <connections>
234
+                                                <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
235
+                                            </connections>
236
+                                        </menuItem>
237
+                                        <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
238
+                                            <modifierMask key="keyEquivalentModifierMask"/>
239
+                                            <connections>
240
+                                                <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
241
+                                            </connections>
242
+                                        </menuItem>
243
+                                        <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
244
+                                            <modifierMask key="keyEquivalentModifierMask"/>
245
+                                            <connections>
246
+                                                <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
247
+                                            </connections>
248
+                                        </menuItem>
249
+                                    </items>
250
+                                </menu>
251
+                            </menuItem>
252
+                            <menuItem title="Substitutions" id="9ic-FL-obx">
253
+                                <modifierMask key="keyEquivalentModifierMask"/>
254
+                                <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
255
+                                    <items>
256
+                                        <menuItem title="Show Substitutions" id="z6F-FW-3nz">
257
+                                            <modifierMask key="keyEquivalentModifierMask"/>
258
+                                            <connections>
259
+                                                <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
260
+                                            </connections>
261
+                                        </menuItem>
262
+                                        <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
263
+                                        <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
264
+                                            <modifierMask key="keyEquivalentModifierMask"/>
265
+                                            <connections>
266
+                                                <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
267
+                                            </connections>
268
+                                        </menuItem>
269
+                                        <menuItem title="Smart Quotes" id="hQb-2v-fYv">
270
+                                            <modifierMask key="keyEquivalentModifierMask"/>
271
+                                            <connections>
272
+                                                <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
273
+                                            </connections>
274
+                                        </menuItem>
275
+                                        <menuItem title="Smart Dashes" id="rgM-f4-ycn">
276
+                                            <modifierMask key="keyEquivalentModifierMask"/>
277
+                                            <connections>
278
+                                                <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
279
+                                            </connections>
280
+                                        </menuItem>
281
+                                        <menuItem title="Smart Links" id="cwL-P1-jid">
282
+                                            <modifierMask key="keyEquivalentModifierMask"/>
283
+                                            <connections>
284
+                                                <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
285
+                                            </connections>
286
+                                        </menuItem>
287
+                                        <menuItem title="Data Detectors" id="tRr-pd-1PS">
288
+                                            <modifierMask key="keyEquivalentModifierMask"/>
289
+                                            <connections>
290
+                                                <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
291
+                                            </connections>
292
+                                        </menuItem>
293
+                                        <menuItem title="Text Replacement" id="HFQ-gK-NFA">
294
+                                            <modifierMask key="keyEquivalentModifierMask"/>
295
+                                            <connections>
296
+                                                <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
297
+                                            </connections>
298
+                                        </menuItem>
299
+                                    </items>
300
+                                </menu>
301
+                            </menuItem>
302
+                            <menuItem title="Transformations" id="2oI-Rn-ZJC">
303
+                                <modifierMask key="keyEquivalentModifierMask"/>
304
+                                <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
305
+                                    <items>
306
+                                        <menuItem title="Make Upper Case" id="vmV-6d-7jI">
307
+                                            <modifierMask key="keyEquivalentModifierMask"/>
308
+                                            <connections>
309
+                                                <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
310
+                                            </connections>
311
+                                        </menuItem>
312
+                                        <menuItem title="Make Lower Case" id="d9M-CD-aMd">
313
+                                            <modifierMask key="keyEquivalentModifierMask"/>
314
+                                            <connections>
315
+                                                <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
316
+                                            </connections>
317
+                                        </menuItem>
318
+                                        <menuItem title="Capitalize" id="UEZ-Bs-lqG">
319
+                                            <modifierMask key="keyEquivalentModifierMask"/>
320
+                                            <connections>
321
+                                                <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
322
+                                            </connections>
323
+                                        </menuItem>
324
+                                    </items>
325
+                                </menu>
326
+                            </menuItem>
327
+                            <menuItem title="Speech" id="xrE-MZ-jX0">
328
+                                <modifierMask key="keyEquivalentModifierMask"/>
329
+                                <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
330
+                                    <items>
331
+                                        <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
332
+                                            <modifierMask key="keyEquivalentModifierMask"/>
333
+                                            <connections>
334
+                                                <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
335
+                                            </connections>
336
+                                        </menuItem>
337
+                                        <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
338
+                                            <modifierMask key="keyEquivalentModifierMask"/>
339
+                                            <connections>
340
+                                                <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
341
+                                            </connections>
342
+                                        </menuItem>
343
+                                    </items>
344
+                                </menu>
345
+                            </menuItem>
346
+                        </items>
347
+                    </menu>
348
+                </menuItem>
349
+                <menuItem title="Format" id="jxT-CU-nIS">
350
+                    <modifierMask key="keyEquivalentModifierMask"/>
351
+                    <menu key="submenu" title="Format" id="GEO-Iw-cKr">
352
+                        <items>
353
+                            <menuItem title="Font" id="Gi5-1S-RQB">
354
+                                <modifierMask key="keyEquivalentModifierMask"/>
355
+                                <menu key="submenu" title="Font" systemMenu="font" id="aXa-aM-Jaq">
356
+                                    <items>
357
+                                        <menuItem title="Show Fonts" keyEquivalent="t" id="Q5e-8K-NDq">
358
+                                            <connections>
359
+                                                <action selector="orderFrontFontPanel:" target="YLy-65-1bz" id="WHr-nq-2xA"/>
360
+                                            </connections>
361
+                                        </menuItem>
362
+                                        <menuItem title="Bold" tag="2" keyEquivalent="b" id="GB9-OM-e27">
363
+                                            <connections>
364
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="hqk-hr-sYV"/>
365
+                                            </connections>
366
+                                        </menuItem>
367
+                                        <menuItem title="Italic" tag="1" keyEquivalent="i" id="Vjx-xi-njq">
368
+                                            <connections>
369
+                                                <action selector="addFontTrait:" target="YLy-65-1bz" id="IHV-OB-c03"/>
370
+                                            </connections>
371
+                                        </menuItem>
372
+                                        <menuItem title="Underline" keyEquivalent="u" id="WRG-CD-K1S">
373
+                                            <connections>
374
+                                                <action selector="underline:" target="-1" id="FYS-2b-JAY"/>
375
+                                            </connections>
376
+                                        </menuItem>
377
+                                        <menuItem isSeparatorItem="YES" id="5gT-KC-WSO"/>
378
+                                        <menuItem title="Bigger" tag="3" keyEquivalent="+" id="Ptp-SP-VEL">
379
+                                            <connections>
380
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="Uc7-di-UnL"/>
381
+                                            </connections>
382
+                                        </menuItem>
383
+                                        <menuItem title="Smaller" tag="4" keyEquivalent="-" id="i1d-Er-qST">
384
+                                            <connections>
385
+                                                <action selector="modifyFont:" target="YLy-65-1bz" id="HcX-Lf-eNd"/>
386
+                                            </connections>
387
+                                        </menuItem>
388
+                                        <menuItem isSeparatorItem="YES" id="kx3-Dk-x3B"/>
389
+                                        <menuItem title="Kern" id="jBQ-r6-VK2">
390
+                                            <modifierMask key="keyEquivalentModifierMask"/>
391
+                                            <menu key="submenu" title="Kern" id="tlD-Oa-oAM">
392
+                                                <items>
393
+                                                    <menuItem title="Use Default" id="GUa-eO-cwY">
394
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
395
+                                                        <connections>
396
+                                                            <action selector="useStandardKerning:" target="-1" id="6dk-9l-Ckg"/>
397
+                                                        </connections>
398
+                                                    </menuItem>
399
+                                                    <menuItem title="Use None" id="cDB-IK-hbR">
400
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
401
+                                                        <connections>
402
+                                                            <action selector="turnOffKerning:" target="-1" id="U8a-gz-Maa"/>
403
+                                                        </connections>
404
+                                                    </menuItem>
405
+                                                    <menuItem title="Tighten" id="46P-cB-AYj">
406
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
407
+                                                        <connections>
408
+                                                            <action selector="tightenKerning:" target="-1" id="hr7-Nz-8ro"/>
409
+                                                        </connections>
410
+                                                    </menuItem>
411
+                                                    <menuItem title="Loosen" id="ogc-rX-tC1">
412
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
413
+                                                        <connections>
414
+                                                            <action selector="loosenKerning:" target="-1" id="8i4-f9-FKE"/>
415
+                                                        </connections>
416
+                                                    </menuItem>
417
+                                                </items>
418
+                                            </menu>
419
+                                        </menuItem>
420
+                                        <menuItem title="Ligatures" id="o6e-r0-MWq">
421
+                                            <modifierMask key="keyEquivalentModifierMask"/>
422
+                                            <menu key="submenu" title="Ligatures" id="w0m-vy-SC9">
423
+                                                <items>
424
+                                                    <menuItem title="Use Default" id="agt-UL-0e3">
425
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
426
+                                                        <connections>
427
+                                                            <action selector="useStandardLigatures:" target="-1" id="7uR-wd-Dx6"/>
428
+                                                        </connections>
429
+                                                    </menuItem>
430
+                                                    <menuItem title="Use None" id="J7y-lM-qPV">
431
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
432
+                                                        <connections>
433
+                                                            <action selector="turnOffLigatures:" target="-1" id="iX2-gA-Ilz"/>
434
+                                                        </connections>
435
+                                                    </menuItem>
436
+                                                    <menuItem title="Use All" id="xQD-1f-W4t">
437
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
438
+                                                        <connections>
439
+                                                            <action selector="useAllLigatures:" target="-1" id="KcB-kA-TuK"/>
440
+                                                        </connections>
441
+                                                    </menuItem>
442
+                                                </items>
443
+                                            </menu>
444
+                                        </menuItem>
445
+                                        <menuItem title="Baseline" id="OaQ-X3-Vso">
446
+                                            <modifierMask key="keyEquivalentModifierMask"/>
447
+                                            <menu key="submenu" title="Baseline" id="ijk-EB-dga">
448
+                                                <items>
449
+                                                    <menuItem title="Use Default" id="3Om-Ey-2VK">
450
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
451
+                                                        <connections>
452
+                                                            <action selector="unscript:" target="-1" id="0vZ-95-Ywn"/>
453
+                                                        </connections>
454
+                                                    </menuItem>
455
+                                                    <menuItem title="Superscript" id="Rqc-34-cIF">
456
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
457
+                                                        <connections>
458
+                                                            <action selector="superscript:" target="-1" id="3qV-fo-wpU"/>
459
+                                                        </connections>
460
+                                                    </menuItem>
461
+                                                    <menuItem title="Subscript" id="I0S-gh-46l">
462
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
463
+                                                        <connections>
464
+                                                            <action selector="subscript:" target="-1" id="Q6W-4W-IGz"/>
465
+                                                        </connections>
466
+                                                    </menuItem>
467
+                                                    <menuItem title="Raise" id="2h7-ER-AoG">
468
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
469
+                                                        <connections>
470
+                                                            <action selector="raiseBaseline:" target="-1" id="4sk-31-7Q9"/>
471
+                                                        </connections>
472
+                                                    </menuItem>
473
+                                                    <menuItem title="Lower" id="1tx-W0-xDw">
474
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
475
+                                                        <connections>
476
+                                                            <action selector="lowerBaseline:" target="-1" id="OF1-bc-KW4"/>
477
+                                                        </connections>
478
+                                                    </menuItem>
479
+                                                </items>
480
+                                            </menu>
481
+                                        </menuItem>
482
+                                        <menuItem isSeparatorItem="YES" id="Ndw-q3-faq"/>
483
+                                        <menuItem title="Show Colors" keyEquivalent="C" id="bgn-CT-cEk">
484
+                                            <connections>
485
+                                                <action selector="orderFrontColorPanel:" target="-1" id="mSX-Xz-DV3"/>
486
+                                            </connections>
487
+                                        </menuItem>
488
+                                        <menuItem isSeparatorItem="YES" id="iMs-zA-UFJ"/>
489
+                                        <menuItem title="Copy Style" keyEquivalent="c" id="5Vv-lz-BsD">
490
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
491
+                                            <connections>
492
+                                                <action selector="copyFont:" target="-1" id="GJO-xA-L4q"/>
493
+                                            </connections>
494
+                                        </menuItem>
495
+                                        <menuItem title="Paste Style" keyEquivalent="v" id="vKC-jM-MkH">
496
+                                            <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
497
+                                            <connections>
498
+                                                <action selector="pasteFont:" target="-1" id="JfD-CL-leO"/>
499
+                                            </connections>
500
+                                        </menuItem>
501
+                                    </items>
502
+                                </menu>
503
+                            </menuItem>
504
+                            <menuItem title="Text" id="Fal-I4-PZk">
505
+                                <modifierMask key="keyEquivalentModifierMask"/>
506
+                                <menu key="submenu" title="Text" id="d9c-me-L2H">
507
+                                    <items>
508
+                                        <menuItem title="Align Left" keyEquivalent="{" id="ZM1-6Q-yy1">
509
+                                            <connections>
510
+                                                <action selector="alignLeft:" target="-1" id="zUv-R1-uAa"/>
511
+                                            </connections>
512
+                                        </menuItem>
513
+                                        <menuItem title="Center" keyEquivalent="|" id="VIY-Ag-zcb">
514
+                                            <connections>
515
+                                                <action selector="alignCenter:" target="-1" id="spX-mk-kcS"/>
516
+                                            </connections>
517
+                                        </menuItem>
518
+                                        <menuItem title="Justify" id="J5U-5w-g23">
519
+                                            <modifierMask key="keyEquivalentModifierMask"/>
520
+                                            <connections>
521
+                                                <action selector="alignJustified:" target="-1" id="ljL-7U-jND"/>
522
+                                            </connections>
523
+                                        </menuItem>
524
+                                        <menuItem title="Align Right" keyEquivalent="}" id="wb2-vD-lq4">
525
+                                            <connections>
526
+                                                <action selector="alignRight:" target="-1" id="r48-bG-YeY"/>
527
+                                            </connections>
528
+                                        </menuItem>
529
+                                        <menuItem isSeparatorItem="YES" id="4s2-GY-VfK"/>
530
+                                        <menuItem title="Writing Direction" id="H1b-Si-o9J">
531
+                                            <modifierMask key="keyEquivalentModifierMask"/>
532
+                                            <menu key="submenu" title="Writing Direction" id="8mr-sm-Yjd">
533
+                                                <items>
534
+                                                    <menuItem title="Paragraph" enabled="NO" id="ZvO-Gk-QUH">
535
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
536
+                                                    </menuItem>
537
+                                                    <menuItem id="YGs-j5-SAR">
538
+                                                        <string key="title">	Default</string>
539
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
540
+                                                        <connections>
541
+                                                            <action selector="makeBaseWritingDirectionNatural:" target="-1" id="qtV-5e-UBP"/>
542
+                                                        </connections>
543
+                                                    </menuItem>
544
+                                                    <menuItem id="Lbh-J2-qVU">
545
+                                                        <string key="title">	Left to Right</string>
546
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
547
+                                                        <connections>
548
+                                                            <action selector="makeBaseWritingDirectionLeftToRight:" target="-1" id="S0X-9S-QSf"/>
549
+                                                        </connections>
550
+                                                    </menuItem>
551
+                                                    <menuItem id="jFq-tB-4Kx">
552
+                                                        <string key="title">	Right to Left</string>
553
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
554
+                                                        <connections>
555
+                                                            <action selector="makeBaseWritingDirectionRightToLeft:" target="-1" id="5fk-qB-AqJ"/>
556
+                                                        </connections>
557
+                                                    </menuItem>
558
+                                                    <menuItem isSeparatorItem="YES" id="swp-gr-a21"/>
559
+                                                    <menuItem title="Selection" enabled="NO" id="cqv-fj-IhA">
560
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
561
+                                                    </menuItem>
562
+                                                    <menuItem id="Nop-cj-93Q">
563
+                                                        <string key="title">	Default</string>
564
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
565
+                                                        <connections>
566
+                                                            <action selector="makeTextWritingDirectionNatural:" target="-1" id="lPI-Se-ZHp"/>
567
+                                                        </connections>
568
+                                                    </menuItem>
569
+                                                    <menuItem id="BgM-ve-c93">
570
+                                                        <string key="title">	Left to Right</string>
571
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
572
+                                                        <connections>
573
+                                                            <action selector="makeTextWritingDirectionLeftToRight:" target="-1" id="caW-Bv-w94"/>
574
+                                                        </connections>
575
+                                                    </menuItem>
576
+                                                    <menuItem id="RB4-Sm-HuC">
577
+                                                        <string key="title">	Right to Left</string>
578
+                                                        <modifierMask key="keyEquivalentModifierMask"/>
579
+                                                        <connections>
580
+                                                            <action selector="makeTextWritingDirectionRightToLeft:" target="-1" id="EXD-6r-ZUu"/>
581
+                                                        </connections>
582
+                                                    </menuItem>
583
+                                                </items>
584
+                                            </menu>
585
+                                        </menuItem>
586
+                                        <menuItem isSeparatorItem="YES" id="fKy-g9-1gm"/>
587
+                                        <menuItem title="Show Ruler" id="vLm-3I-IUL">
588
+                                            <modifierMask key="keyEquivalentModifierMask"/>
589
+                                            <connections>
590
+                                                <action selector="toggleRuler:" target="-1" id="FOx-HJ-KwY"/>
591
+                                            </connections>
592
+                                        </menuItem>
593
+                                        <menuItem title="Copy Ruler" keyEquivalent="c" id="MkV-Pr-PK5">
594
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
595
+                                            <connections>
596
+                                                <action selector="copyRuler:" target="-1" id="71i-fW-3W2"/>
597
+                                            </connections>
598
+                                        </menuItem>
599
+                                        <menuItem title="Paste Ruler" keyEquivalent="v" id="LVM-kO-fVI">
600
+                                            <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
601
+                                            <connections>
602
+                                                <action selector="pasteRuler:" target="-1" id="cSh-wd-qM2"/>
603
+                                            </connections>
604
+                                        </menuItem>
605
+                                    </items>
606
+                                </menu>
607
+                            </menuItem>
608
+                        </items>
609
+                    </menu>
610
+                </menuItem>
611
+                <menuItem title="View" id="H8h-7b-M4v">
612
+                    <modifierMask key="keyEquivalentModifierMask"/>
613
+                    <menu key="submenu" title="View" id="HyV-fh-RgO">
614
+                        <items>
615
+                            <menuItem title="Show Toolbar" keyEquivalent="t" id="snW-S8-Cw5">
616
+                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
617
+                                <connections>
618
+                                    <action selector="toggleToolbarShown:" target="-1" id="BXY-wc-z0C"/>
619
+                                </connections>
620
+                            </menuItem>
621
+                            <menuItem title="Customize Toolbar…" id="1UK-8n-QPP">
622
+                                <modifierMask key="keyEquivalentModifierMask"/>
623
+                                <connections>
624
+                                    <action selector="runToolbarCustomizationPalette:" target="-1" id="pQI-g3-MTW"/>
625
+                                </connections>
626
+                            </menuItem>
627
+                        </items>
628
+                    </menu>
629
+                </menuItem>
630
+                <menuItem title="Window" id="aUF-d1-5bR">
631
+                    <modifierMask key="keyEquivalentModifierMask"/>
632
+                    <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
633
+                        <items>
634
+                            <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
635
+                                <connections>
636
+                                    <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
637
+                                </connections>
638
+                            </menuItem>
639
+                            <menuItem title="Zoom" id="R4o-n2-Eq4">
640
+                                <modifierMask key="keyEquivalentModifierMask"/>
641
+                                <connections>
642
+                                    <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
643
+                                </connections>
644
+                            </menuItem>
645
+                            <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
646
+                            <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
647
+                                <modifierMask key="keyEquivalentModifierMask"/>
648
+                                <connections>
649
+                                    <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
650
+                                </connections>
651
+                            </menuItem>
652
+                        </items>
653
+                    </menu>
654
+                </menuItem>
655
+                <menuItem title="Help" id="wpr-3q-Mcd">
656
+                    <modifierMask key="keyEquivalentModifierMask"/>
657
+                    <menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
658
+                        <items>
659
+                            <menuItem title="OtaClock Help" keyEquivalent="?" id="FKE-Sm-Kum">
660
+                                <connections>
661
+                                    <action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
662
+                                </connections>
663
+                            </menuItem>
664
+                        </items>
665
+                    </menu>
666
+                </menuItem>
667
+            </items>
668
+        </menu>
669
+        <window title="OtaClock" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
670
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
671
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
672
+            <rect key="contentRect" x="335" y="390" width="480" height="360"/>
673
+            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/>
674
+            <view key="contentView" id="EiT-Mj-1SZ">
675
+                <rect key="frame" x="0.0" y="0.0" width="480" height="360"/>
676
+                <autoresizingMask key="autoresizingMask"/>
677
+            </view>
678
+        </window>
679
+    </objects>
680
+</document>

+ 58
- 0
OtaClock/Images.xcassets/AppIcon.appiconset/Contents.json View File

@@ -0,0 +1,58 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "idiom" : "mac",
5
+      "size" : "16x16",
6
+      "scale" : "1x"
7
+    },
8
+    {
9
+      "idiom" : "mac",
10
+      "size" : "16x16",
11
+      "scale" : "2x"
12
+    },
13
+    {
14
+      "idiom" : "mac",
15
+      "size" : "32x32",
16
+      "scale" : "1x"
17
+    },
18
+    {
19
+      "idiom" : "mac",
20
+      "size" : "32x32",
21
+      "scale" : "2x"
22
+    },
23
+    {
24
+      "idiom" : "mac",
25
+      "size" : "128x128",
26
+      "scale" : "1x"
27
+    },
28
+    {
29
+      "idiom" : "mac",
30
+      "size" : "128x128",
31
+      "scale" : "2x"
32
+    },
33
+    {
34
+      "idiom" : "mac",
35
+      "size" : "256x256",
36
+      "scale" : "1x"
37
+    },
38
+    {
39
+      "idiom" : "mac",
40
+      "size" : "256x256",
41
+      "scale" : "2x"
42
+    },
43
+    {
44
+      "idiom" : "mac",
45
+      "size" : "512x512",
46
+      "scale" : "1x"
47
+    },
48
+    {
49
+      "idiom" : "mac",
50
+      "size" : "512x512",
51
+      "scale" : "2x"
52
+    }
53
+  ],
54
+  "info" : {
55
+    "version" : 1,
56
+    "author" : "xcode"
57
+  }
58
+}

+ 34
- 0
OtaClock/Info.plist View File

@@ -0,0 +1,34 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIconFile</key>
10
+	<string></string>
11
+	<key>CFBundleIdentifier</key>
12
+	<string>de.xythobuz.$(PRODUCT_NAME:rfc1034identifier)</string>
13
+	<key>CFBundleInfoDictionaryVersion</key>
14
+	<string>6.0</string>
15
+	<key>CFBundleName</key>
16
+	<string>$(PRODUCT_NAME)</string>
17
+	<key>CFBundlePackageType</key>
18
+	<string>APPL</string>
19
+	<key>CFBundleShortVersionString</key>
20
+	<string>1.0</string>
21
+	<key>CFBundleSignature</key>
22
+	<string>????</string>
23
+	<key>CFBundleVersion</key>
24
+	<string>1</string>
25
+	<key>LSMinimumSystemVersion</key>
26
+	<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
27
+	<key>NSHumanReadableCopyright</key>
28
+	<string>Copyright © 2015 xythobuz. All rights reserved.</string>
29
+	<key>NSMainNibFile</key>
30
+	<string>MainMenu</string>
31
+	<key>NSPrincipalClass</key>
32
+	<string>NSApplication</string>
33
+</dict>
34
+</plist>

+ 13
- 0
OtaClock/main.m View File

@@ -0,0 +1,13 @@
1
+//
2
+//  main.m
3
+//  OtaClock
4
+//
5
+//  Created by Thomas Buck on 16.08.15.
6
+//  Copyright (c) 2015 xythobuz. All rights reserved.
7
+//
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+int main(int argc, const char * argv[]) {
12
+    return NSApplicationMain(argc, argv);
13
+}

+ 24
- 0
OtaClockTests/Info.plist View File

@@ -0,0 +1,24 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>de.xythobuz.$(PRODUCT_NAME:rfc1034identifier)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>$(PRODUCT_NAME)</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>BNDL</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>1.0</string>
19
+	<key>CFBundleSignature</key>
20
+	<string>????</string>
21
+	<key>CFBundleVersion</key>
22
+	<string>1</string>
23
+</dict>
24
+</plist>

+ 40
- 0
OtaClockTests/OtaClockTests.m View File

@@ -0,0 +1,40 @@
1
+//
2
+//  OtaClockTests.m
3
+//  OtaClockTests
4
+//
5
+//  Created by Thomas Buck on 16.08.15.
6
+//  Copyright (c) 2015 xythobuz. All rights reserved.
7
+//
8
+
9
+#import <Cocoa/Cocoa.h>
10
+#import <XCTest/XCTest.h>
11
+
12
+@interface OtaClockTests : XCTestCase
13
+
14
+@end
15
+
16
+@implementation OtaClockTests
17
+
18
+- (void)setUp {
19
+    [super setUp];
20
+    // Put setup code here. This method is called before the invocation of each test method in the class.
21
+}
22
+
23
+- (void)tearDown {
24
+    // Put teardown code here. This method is called after the invocation of each test method in the class.
25
+    [super tearDown];
26
+}
27
+
28
+- (void)testExample {
29
+    // This is an example of a functional test case.
30
+    XCTAssert(YES, @"Pass");
31
+}
32
+
33
+- (void)testPerformanceExample {
34
+    // This is an example of a performance test case.
35
+    [self measureBlock:^{
36
+        // Put the code you want to measure the time of here.
37
+    }];
38
+}
39
+
40
+@end

Loading…
Cancel
Save