← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~dude-from-by/openlp/my-ios-remote into lp:openlp

 

andrei  has proposed merging lp:~dude-from-by/openlp/my-ios-remote into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~dude-from-by/openlp/my-ios-remote/+merge/315295
-- 
Your team OpenLP Core is requested to review the proposed merge of lp:~dude-from-by/openlp/my-ios-remote into lp:openlp.
=== added file '.bzrignore'
--- .bzrignore	1970-01-01 00:00:00 +0000
+++ .bzrignore	2017-01-21 18:06:11 +0000
@@ -0,0 +1,75 @@
+# Created by https://www.gitignore.io/api/xcode,swift
+
+.DS_Store
+
+### Xcode ###
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## Build generated
+build/
+DerivedData
+
+## Various settings
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+
+## Other
+*.xccheckout
+*.moved-aside
+*.xcuserstate
+
+
+### Swift ###
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## Build generated
+build/
+DerivedData
+
+## Various settings
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+xcuserdata
+
+## Other
+*.xccheckout
+*.moved-aside
+*.xcuserstate
+*.xcscmblueprint
+
+## Obj-C/Swift specific
+*.hmap
+*.ipa
+
+# CocoaPods
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
+#
+Pods/
+
+# Carthage
+#
+# Add this line if you want to avoid checking in source code from Carthage dependencies.
+# Carthage/Checkouts
+
+Carthage/Build
+

=== renamed file '.bzrignore' => '.bzrignore.moved'
=== added file 'LICENSE'
--- LICENSE	1970-01-01 00:00:00 +0000
+++ LICENSE	2017-01-21 18:06:11 +0000
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2008-2016 OpenLP Developers
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file

=== renamed file 'LICENSE' => 'LICENSE.moved'
=== added directory 'Media Kit'
=== added file 'Media Kit/LaunchScreen - iPhone-4S.png'
Binary files Media Kit/LaunchScreen - iPhone-4S.png	1970-01-01 00:00:00 +0000 and Media Kit/LaunchScreen - iPhone-4S.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Media Kit/LaunchScreen - iPhone-5.png'
Binary files Media Kit/LaunchScreen - iPhone-5.png	1970-01-01 00:00:00 +0000 and Media Kit/LaunchScreen - iPhone-5.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Media Kit/LaunchScreen - iPhone-6-Plus.png'
Binary files Media Kit/LaunchScreen - iPhone-6-Plus.png	1970-01-01 00:00:00 +0000 and Media Kit/LaunchScreen - iPhone-6-Plus.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Media Kit/LaunchScreen - iPhone-6.png'
Binary files Media Kit/LaunchScreen - iPhone-6.png	1970-01-01 00:00:00 +0000 and Media Kit/LaunchScreen - iPhone-6.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Media Kit/icon.svg'
--- Media Kit/icon.svg	1970-01-01 00:00:00 +0000
+++ Media Kit/icon.svg	2017-01-21 18:06:11 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="svg5740" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
+	 viewBox="0 0 467.4 467.4" style="enable-background:new 0 0 467.4 467.4;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:url(#rect4108_1_);}
+	.st1{fill:#FFFFFF;}
+</style>
+<linearGradient id="rect4108_1_" gradientUnits="userSpaceOnUse" x1="472.4221" y1="595.4525" x2="58.0621" y2="524.9225" gradientTransform="matrix(1 0 0 1 0 -321.31)">
+	<stop  offset="0" style="stop-color:#1E468C"/>
+	<stop  offset="1" style="stop-color:#507FDA"/>
+</linearGradient>
+<rect id="rect4108" x="1.1" class="st0" width="467.4" height="467.4"/>
+<path id="path6317" class="st1" d="M234.4,35.8c-109,0-197.3,88.4-197.3,197.3s88.3,197.3,197.3,197.3s197.3-88.4,197.3-197.3
+	S343.4,35.8,234.4,35.8z M233.8,52.3c99.8,0,180.8,81,180.8,180.8c0,14.8-1.8,29.5-5.4,43.8L283.1,175.8L153,71.4
+	C178.1,58.8,205.7,52.3,233.8,52.3z M107.2,104.1l158.6,94.3l128.4,76.4l-129-63.6L89.4,124.4C94.8,117.2,100.8,110.4,107.2,104.1z
+	 M63.1,173.4l190.5,63.4l131.5,43.8L253.6,248L56.2,199.2C57.8,190.4,60.1,181.8,63.1,173.4z M54.2,254.6l194,20.8L384.2,290
+	L244,286l-184.7-5.3C57,272.2,55.3,263.4,54.2,254.6L54.2,254.6z M389.6,298.5L240.9,326l-143,26.5c-5.8-6.6-11.2-13.7-16-21.1
+	l163.3-17.4L389.6,298.5z M400.8,302.7c-38.4,92.2-144.3,135.9-236.5,97.4c-8-3.3-15.8-7.3-23.2-11.7l107.5-35.5L400.8,302.7z"/>
+</svg>

=== added directory 'OLP RemoteTests'
=== added file 'OLP RemoteTests/APITest.swift'
--- OLP RemoteTests/APITest.swift	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/APITest.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,55 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import XCTest
+import Foundation
+
+
+@testable import Remote
+
+class APITest: XCTestCase {
+
+    override func setUp() {
+        super.setUp()
+    }
+    
+    override func tearDown() {
+        super.tearDown()
+    }
+
+    func test_api_base_withHTTPS() {
+        let defaults = TestUtils.defaults()
+        defaults.setBool(true, forKey:"server.useHTTPS")
+        let settings = UserSettings(defaults: defaults)
+        let api = API(settings: settings)
+        XCTAssert(api.base.hasPrefix("https"))
+    }
+
+    func test_api_base() {
+        let defaults = TestUtils.defaults()
+        let settings = UserSettings(defaults: defaults)
+        let api = API(settings: settings)
+        XCTAssertEqual(api.base, "http://100.200.200.200:123/api";)
+    }
+}

=== added file 'OLP RemoteTests/Info.plist'
--- OLP RemoteTests/Info.plist	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/Info.plist	2017-01-21 18:06:11 +0000
@@ -0,0 +1,24 @@
+<?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>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>

=== added file 'OLP RemoteTests/PollAPITests.swift'
--- OLP RemoteTests/PollAPITests.swift	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/PollAPITests.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,128 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import XCTest
+import Nimble
+import OHHTTPStubs
+
+@testable import Remote
+
+class PollAPITests: XCTestCase {
+
+    override func setUp() {
+        super.setUp()
+
+        stub(isPath("/api/poll")) { _ in
+            guard let path = OHPathForFile("poll_response.json", self.dynamicType) else {
+                preconditionFailure("Could not find expected file in test bundle")
+            }
+
+            return OHHTTPStubsResponse(
+                fileAtPath: path,
+                statusCode: 200,
+                headers: [ "ContentType": "application/json" ]
+            )
+        }
+        stub(isPath("/api/service/list")) { _ in
+            guard let path = OHPathForFile("service_response.json", self.dynamicType) else {
+                preconditionFailure("Could not find expected file in test bundle")
+            }
+
+            return OHHTTPStubsResponse(
+                fileAtPath: path,
+                statusCode: 200,
+                headers: [ "ContentType": "application/json" ]
+            )
+
+        }
+    }
+    
+    override func tearDown() {
+
+        super.tearDown()
+    }
+
+    class PollAPIServiceDelegateMock: PollAPIServiceDelegate {
+        var serviceList : [ItemModel]?
+        var selectedItem : String?
+        var projectionState: ProjectionState?
+
+        func updateServiceList(items: [ItemModel]) {
+            serviceList = items
+        }
+
+        func updateSelectedItem(itemId id: String) {
+            selectedItem = id
+        }
+
+        func updateProjectionState(state: ProjectionState) {
+            projectionState = state
+        }
+    }
+
+    class PollAPISlidesDelegateMock: PollAPISlidesDelegate {
+
+        var model: [SlideModel]?
+        var selectedSlide: Int?
+        var projectionState: ProjectionState?
+
+        func updateSlides(slides: [SlideModel]) {
+            model = slides
+        }
+
+        func updateSelectedSlide(row: Int) {
+            selectedSlide = row
+        }
+
+        func updateProjectionState(state: ProjectionState) {
+            projectionState = state
+        }
+    }
+
+    func getPollAPI(serviceDelegate: PollAPIServiceDelegate, slidesDelegate: PollAPISlidesDelegate) -> PollAPI {
+        let defaults = TestUtils.defaults()
+        defaults.setBool(true, forKey:"server.useHTTPS")
+        let settings = UserSettings(defaults: defaults)
+        let controllerAPI = ControllerAPI(settings: settings)
+        let serviceAPI = ServiceAPI(settings: settings)
+        let pollAPI = PollAPI(settings: settings, controllerAPI:controllerAPI, serviceAPI: serviceAPI)
+        pollAPI.serviceDelegate = serviceDelegate
+        pollAPI.slidesDelegate = slidesDelegate
+        return pollAPI
+    }
+
+    func test_emptyPollResponse() {
+        let serviceDelegate: PollAPIServiceDelegateMock = PollAPIServiceDelegateMock()
+        let slidesDelegate: PollAPISlidesDelegateMock = PollAPISlidesDelegateMock()
+        getPollAPI(serviceDelegate, slidesDelegate: slidesDelegate).poll()
+        expect(serviceDelegate.projectionState).toEventually(equal(ProjectionState.Desktop))
+    }
+
+    func test_pollSelectedItem() {
+        let serviceDelegate: PollAPIServiceDelegateMock = PollAPIServiceDelegateMock()
+        let slidesDelegate: PollAPISlidesDelegateMock = PollAPISlidesDelegateMock()
+        getPollAPI(serviceDelegate, slidesDelegate: slidesDelegate).poll()
+        expect(serviceDelegate.selectedItem).toEventually(equal("item1"))
+    }
+}

=== added file 'OLP RemoteTests/TestUtils.swift'
--- OLP RemoteTests/TestUtils.swift	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/TestUtils.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+
+class TestUtils {
+
+    static func defaults() -> NSUserDefaults {
+        let defaults = NSUserDefaults(suiteName:NSUUID().UUIDString)!
+        defaults.setValue("123", forKey: "server.port")
+        defaults.setValue("100.200.200.200", forKey:"server.ip")
+        return defaults
+    }
+    
+}
\ No newline at end of file

=== added file 'OLP RemoteTests/poll_response.json'
--- OLP RemoteTests/poll_response.json	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/poll_response.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,1 @@
+{"results": {"item": "item1", "twelve": true, "isAuthorised": true, "display": true, "slide": 1, "version": 2, "isSecure": false, "service": 6, "blank": false, "theme": false}}
\ No newline at end of file

=== added file 'OLP RemoteTests/service_response.json'
--- OLP RemoteTests/service_response.json	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/service_response.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,1 @@
+{"results": {"items": [{"selected": false, "id": "a5916da4-2821-11e6-9db7-34363bc4e588", "notes": "", "title": "\u0411\u043e\u0433 \u0438\u0441\u043a\u0443\u043f\u0438\u043b \u043d\u0430\u0441 \u0438 \u043f\u043e\u0435\u043c \u043c\u044b", "plugin": "songs"}, {"selected": false, "id": "a75b02e2-2821-11e6-8f22-34363bc4e588", "notes": "", "title": "\u0414\u0430\u0439 \u043c\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0435\u0440\u0434\u0446\u0435 \u0422\u0432\u043e\u0451, \u0434\u0430\u0439 \u043c\u043d\u0435 \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0433\u043b\u0430\u0441 \u043d\u0435\u0431\u0435\u0441\u043d\u044b\u0439 \u0422\u0432\u043e\u0439", "plugin": "songs"}, {"selected": false, "id": "ab246c58-2821-11e6-a684-34363bc4e588", "notes": "", "title": "\u042f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0442\u0438", "plugin": "songs"}]}}
\ No newline at end of file

=== added file 'OLP RemoteTests/slides_response.json'
--- OLP RemoteTests/slides_response.json	1970-01-01 00:00:00 +0000
+++ OLP RemoteTests/slides_response.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,1 @@
+{"results": {"item": "ab246c58-2821-11e6-a684-34363bc4e588", "slides": [{"text": "\u042f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0442\u0438,\n\u041f\u043e\u0442\u0435\u0440\u044f\u043b \u0441\u0435\u0431\u044f, \u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u0438 \u044f.\n\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c, \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0437\u0430 \u0422\u0435\u0431\u044f\n\u0414\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0437\u0430 \u0422\u0435\u0431\u044f \u0418\u0438\u0441\u0443\u0441, \u0418\u0438\u0441\u0443\u0441\n\u041e\u0447\u0438\u0441\u0442\u044c \u043c\u0435\u043d\u044f, \u0432\u043e\u0437\u044c\u043c\u0438 \u043c\u0435\u043d\u044f,\n\u0412 \u0421\u043b\u0430\u0432\u0435 \u0422\u0432\u043e\u0435\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u044f\n\u041e\u0447\u0438\u0441\u0442\u044c \u043c\u0435\u043d\u044f, \u0432\u043e\u0437\u044c\u043c\u0438 \u043c\u0435\u043d\u044f.\n\u0412\u0441\u044f \u0436\u0438\u0437\u043d\u044c \u043c\u043e\u044f \u0432 \u0422\u0432\u043e\u0438\u0445 \u0440\u0443\u043a\u0430\u0445", "html": "\u042f \u043d\u0435 \u043c\u043e\u0433\u0443 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0442\u0438,<br>\u041f\u043e\u0442\u0435\u0440\u044f\u043b \u0441\u0435\u0431\u044f, \u043f\u0430\u043b \u043d\u0430 \u043a\u043e\u043b\u0435\u043d\u0438 \u044f.<br>\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c, \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0437\u0430 \u0422\u0435\u0431\u044f<br>\u0414\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0437\u0430 \u0422\u0435\u0431\u044f \u0418\u0438\u0441\u0443\u0441, \u0418\u0438\u0441\u0443\u0441<br>\u041e\u0447\u0438\u0441\u0442\u044c \u043c\u0435\u043d\u044f, \u0432\u043e\u0437\u044c\u043c\u0438 \u043c\u0435\u043d\u044f,<br>\u0412 \u0421\u043b\u0430\u0432\u0435 \u0422\u0432\u043e\u0435\u0439 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u044f<br>\u041e\u0447\u0438\u0441\u0442\u044c \u043c\u0435\u043d\u044f, \u0432\u043e\u0437\u044c\u043c\u0438 \u043c\u0435\u043d\u044f.<br>\u0412\u0441\u044f \u0436\u0438\u0437\u043d\u044c \u043c\u043e\u044f \u0432 \u0422\u0432\u043e\u0438\u0445 \u0440\u0443\u043a\u0430\u0445", "tag": "\u04141", "selected": true}, {"text": "\u041d\u0430\u043f\u043e\u043b\u043d\u044f\u0439 \u0441\u0435\u0440\u0434\u0446\u0435 \u043c\u043e\u0451\n\u0416\u0438\u0437\u043d\u044c \u043c\u043e\u044f, \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0422\u0432\u043e\u0438\u0445 \u0440\u0443\u043a\u0430\u0445\n\u0412 \u0441\u043c\u0438\u0440\u0435\u043d\u0438\u0438, \u043f\u0440\u0438\u043f\u0430\u0434\u0443 \u043a\u043e \u0425\u0440\u0438\u0441\u0442\u0443\n\u0422\u043e\u0431\u043e\u044e \u043b\u0438\u0448\u044c \u0436\u0438\u0432\u0443", "html": "\u041d\u0430\u043f\u043e\u043b\u043d\u044f\u0439 \u0441\u0435\u0440\u0434\u0446\u0435 \u043c\u043e\u0451<br>\u0416\u0438\u0437\u043d\u044c \u043c\u043e\u044f, \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0422\u0432\u043e\u0438\u0445 \u0440\u0443\u043a\u0430\u0445<br>\u0412 \u0441\u043c\u0438\u0440\u0435\u043d\u0438\u0438, \u043f\u0440\u0438\u043f\u0430\u0434\u0443 \u043a\u043e \u0425\u0440\u0438\u0441\u0442\u0443<br>\u0422\u043e\u0431\u043e\u044e \u043b\u0438\u0448\u044c \u0436\u0438\u0432\u0443", "tag": "\u04142", "selected": false}]}}
\ No newline at end of file

=== added file 'Podfile'
--- Podfile	1970-01-01 00:00:00 +0000
+++ Podfile	2017-01-21 18:06:11 +0000
@@ -0,0 +1,27 @@
+# Uncomment this line to define a global platform for your project
+platform :ios, '8.0'
+use_frameworks!
+inhibit_all_warnings!
+
+target 'Remote' do
+    pod 'Alamofire'
+    pod 'AlamofireObjectMapper'
+    pod 'TPKeyboardAvoiding'
+    pod 'InAppSettingsKit'
+    pod 'BlockLooper'
+    pod 'UITextView+Placeholder'
+    pod 'CWStatusBarNotification'
+end
+
+target 'OLP RemoteTests' do
+    pod 'Alamofire'
+    pod 'AlamofireObjectMapper'
+    pod 'InAppSettingsKit'
+    pod 'BlockLooper'
+    pod 'UITextView+Placeholder'
+    pod 'CWStatusBarNotification'
+    pod 'OHHTTPStubs'
+    pod 'Nimble', '4.1.0'
+    pod 'OHHTTPStubs/Swift'
+end
+

=== added file 'Podfile.lock'
--- Podfile.lock	1970-01-01 00:00:00 +0000
+++ Podfile.lock	2017-01-21 18:06:11 +0000
@@ -0,0 +1,55 @@
+PODS:
+  - Alamofire (3.5.1)
+  - AlamofireObjectMapper (3.0.2):
+    - Alamofire (~> 3.2)
+    - ObjectMapper (~> 1.0)
+  - BlockLooper (0.0.3)
+  - CWStatusBarNotification (2.3.5)
+  - InAppSettingsKit (2.8)
+  - Nimble (4.1.0)
+  - ObjectMapper (1.5.0)
+  - OHHTTPStubs (5.2.1):
+    - OHHTTPStubs/Default (= 5.2.1)
+  - OHHTTPStubs/Core (5.2.1)
+  - OHHTTPStubs/Default (5.2.1):
+    - OHHTTPStubs/Core
+    - OHHTTPStubs/JSON
+    - OHHTTPStubs/NSURLSession
+    - OHHTTPStubs/OHPathHelpers
+  - OHHTTPStubs/JSON (5.2.1):
+    - OHHTTPStubs/Core
+  - OHHTTPStubs/NSURLSession (5.2.1):
+    - OHHTTPStubs/Core
+  - OHHTTPStubs/OHPathHelpers (5.2.1)
+  - OHHTTPStubs/Swift (5.2.1):
+    - OHHTTPStubs/Core
+  - TPKeyboardAvoiding (1.3)
+  - UITextView+Placeholder (1.2.0)
+
+DEPENDENCIES:
+  - Alamofire
+  - AlamofireObjectMapper
+  - BlockLooper
+  - CWStatusBarNotification
+  - InAppSettingsKit
+  - Nimble (= 4.1.0)
+  - OHHTTPStubs
+  - OHHTTPStubs/Swift
+  - TPKeyboardAvoiding
+  - UITextView+Placeholder
+
+SPEC CHECKSUMS:
+  Alamofire: 0dfba1184a543e2aa160f4e39cac4e8aba48d223
+  AlamofireObjectMapper: 70f97cbf45c01c48d26aa07a1a7059a60ed7411d
+  BlockLooper: 8bba05fef76734e8e52e39412a0212ac3474776c
+  CWStatusBarNotification: 3d2738b25c3207f60cc50201388d3c96182545ff
+  InAppSettingsKit: fe3e73f8f9530cdd6270065cd7df7b3773f557e6
+  Nimble: 97a0a4cae5124c117115634b2d055d8c97d0af19
+  ObjectMapper: 386645adca9d9d23b95eda43090b09d66444cf14
+  OHHTTPStubs: 3a42f25c00563b71355ac73112ba2324e9e6cef4
+  TPKeyboardAvoiding: a5138f318c06fb3e151f886e18ce4a72695d9cbe
+  UITextView+Placeholder: 77680995fcdd07c3f52ec92fe1150874a2ac89ff
+
+PODFILE CHECKSUM: 6c9b189ae9fcecc2916031b2ea56b185b35ae475
+
+COCOAPODS: 1.1.1

=== added directory 'Remote'
=== added directory 'Remote.xcodeproj'
=== added file 'Remote.xcodeproj/project.pbxproj'
--- Remote.xcodeproj/project.pbxproj	1970-01-01 00:00:00 +0000
+++ Remote.xcodeproj/project.pbxproj	2017-01-21 18:06:11 +0000
@@ -0,0 +1,840 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		462258CD1BE29EF300A509C8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462258CC1BE29EF300A509C8 /* AppDelegate.swift */; };
+		462395811BE505EC00B90146 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462395801BE505EC00B90146 /* SettingsViewController.swift */; };
+		462395831BE50C5A00B90146 /* ViewControllerUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462395821BE50C5A00B90146 /* ViewControllerUtil.swift */; };
+		4623B6931C078F70007FFE2B /* DisplayAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B6921C078F70007FFE2B /* DisplayAPI.swift */; };
+		4623B6971C07BC2E007FFE2B /* SlidesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B6951C07BC2E007FFE2B /* SlidesViewController.swift */; };
+		4623B6981C07BC2E007FFE2B /* SlidesViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4623B6961C07BC2E007FFE2B /* SlidesViewController.xib */; };
+		4623B69A1C07C47D007FFE2B /* SlideModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B6991C07C47D007FFE2B /* SlideModel.swift */; };
+		4623B69C1C07C569007FFE2B /* ControllerAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B69B1C07C569007FFE2B /* ControllerAPI.swift */; };
+		4623BF941BE418A2003A04FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4623BF911BE418A2003A04FB /* Assets.xcassets */; };
+		4623BF9B1BE419FE003A04FB /* ServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623BF991BE419FE003A04FB /* ServiceViewController.swift */; };
+		4623BF9C1BE419FE003A04FB /* ServiceViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4623BF9A1BE419FE003A04FB /* ServiceViewController.xib */; };
+		4623BF9F1BE42390003A04FB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4623BFA11BE42390003A04FB /* Localizable.strings */; };
+		4623BFA51BE424BB003A04FB /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4623BFA41BE424BB003A04FB /* LaunchScreen.xib */; };
+		463A91851C092E6B00D572E6 /* DictionaryUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91841C092E6B00D572E6 /* DictionaryUtil.swift */; };
+		463A91871C093A2300D572E6 /* LiveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91861C093A2300D572E6 /* LiveModel.swift */; };
+		463A91891C093AE100D572E6 /* ServiceListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91881C093AE100D572E6 /* ServiceListModel.swift */; };
+		463A918D1C093DD500D572E6 /* AlertsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A918B1C093DD500D572E6 /* AlertsViewController.swift */; };
+		463A918E1C093DD500D572E6 /* AlertsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 463A918C1C093DD500D572E6 /* AlertsViewController.xib */; };
+		463A91921C0965E900D572E6 /* AlertAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91911C0965E900D572E6 /* AlertAPI.swift */; };
+		4640F2911BE4274A00E2AA61 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2901BE4274A00E2AA61 /* API.swift */; };
+		4640F2931BE429B900E2AA61 /* PollAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2921BE429B900E2AA61 /* PollAPI.swift */; };
+		4640F2951BE42B6E00E2AA61 /* PollModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2941BE42B6E00E2AA61 /* PollModel.swift */; };
+		469DE5021BFC3B0000C7EB52 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 469DE5011BFC3B0000C7EB52 /* Settings.bundle */; };
+		46A6122F1C78D65F00B61DC8 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 463A918F1C094F7000D572E6 /* QuartzCore.framework */; };
+		46A612311C78E75D00B61DC8 /* ColorUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A612301C78E75D00B61DC8 /* ColorUtil.swift */; };
+		46A612351C79572600B61DC8 /* PluginModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A612341C79572600B61DC8 /* PluginModel.swift */; };
+		46A9EED61BFD85FF00E8D520 /* ItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EED51BFD85FF00E8D520 /* ItemModel.swift */; };
+		46A9EED81BFD89DF00E8D520 /* ServiceAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EED71BFD89DF00E8D520 /* ServiceAPI.swift */; };
+		46A9EEDC1BFD8FEE00E8D520 /* SuccessModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EEDB1BFD8FEE00E8D520 /* SuccessModel.swift */; };
+		46C133451C0A3A0F0093579F /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46C133431C0A3A0F0093579F /* SearchViewController.swift */; };
+		46C133461C0A3A0F0093579F /* SearchViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 46C133441C0A3A0F0093579F /* SearchViewController.xib */; };
+		46CC0CED1BE6972300423EB4 /* UserSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CC0CEC1BE6972300423EB4 /* UserSettings.swift */; };
+		46FD37871C7959EF00DED423 /* SearchAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD37861C7959EF00DED423 /* SearchAPI.swift */; };
+		46FD37891C796C9B00DED423 /* SearchResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD37881C796C9B00DED423 /* SearchResultViewController.swift */; };
+		46FD378B1C79770900DED423 /* LiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378A1C79770900DED423 /* LiveAPI.swift */; };
+		46FD378D1C797E2B00DED423 /* AddAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378C1C797E2B00DED423 /* AddAPI.swift */; };
+		46FD378F1C79867C00DED423 /* ErrorUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378E1C79867C00DED423 /* ErrorUtil.swift */; };
+		5BEE41450088359D269330AE /* Pods_OLP_RemoteTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BAC8A693E937F5B9F7CF9A6 /* Pods_OLP_RemoteTests.framework */; };
+		750831B91CFF44FC00CA9299 /* poll_response.json in Resources */ = {isa = PBXBuildFile; fileRef = 750831B81CFF44FC00CA9299 /* poll_response.json */; };
+		750831BB1CFF594400CA9299 /* service_response.json in Resources */ = {isa = PBXBuildFile; fileRef = 750831BA1CFF594400CA9299 /* service_response.json */; };
+		750831BD1CFF597D00CA9299 /* slides_response.json in Resources */ = {isa = PBXBuildFile; fileRef = 750831BC1CFF597D00CA9299 /* slides_response.json */; };
+		75219D021E276111001B6BC8 /* TabSwitchingToRightAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75219D011E276111001B6BC8 /* TabSwitchingToRightAnimationController.swift */; };
+		755A61C91E04878F00D035D4 /* ServiceViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755A61C81E04878F00D035D4 /* ServiceViewControllerDelegate.swift */; };
+		755C78CE1CCE9080001CF70D /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755C78CD1CCE9080001CF70D /* Service.swift */; };
+		75667B281CFCA8B1008FDFE0 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2901BE4274A00E2AA61 /* API.swift */; };
+		75667B291CFCA8C9008FDFE0 /* UserSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CC0CEC1BE6972300423EB4 /* UserSettings.swift */; };
+		75667B2B1CFCAE44008FDFE0 /* PollAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75667B2A1CFCAE44008FDFE0 /* PollAPITests.swift */; };
+		75667B4C1CFEE85A008FDFE0 /* TestUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75667B4B1CFEE85A008FDFE0 /* TestUtils.swift */; };
+		75667B4D1CFEE92C008FDFE0 /* ControllerAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B69B1C07C569007FFE2B /* ControllerAPI.swift */; };
+		75667B4E1CFEE930008FDFE0 /* PollAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2921BE429B900E2AA61 /* PollAPI.swift */; };
+		75667B4F1CFEE938008FDFE0 /* ServiceAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EED71BFD89DF00E8D520 /* ServiceAPI.swift */; };
+		75667B501CFEE938008FDFE0 /* SearchAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD37861C7959EF00DED423 /* SearchAPI.swift */; };
+		75667B511CFEE938008FDFE0 /* LiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378A1C79770900DED423 /* LiveAPI.swift */; };
+		75667B521CFEE938008FDFE0 /* AddAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378C1C797E2B00DED423 /* AddAPI.swift */; };
+		75667B531CFEE938008FDFE0 /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755C78CD1CCE9080001CF70D /* Service.swift */; };
+		75667B541CFEE93D008FDFE0 /* AlertAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91911C0965E900D572E6 /* AlertAPI.swift */; };
+		75667B551CFEE949008FDFE0 /* SuccessModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EEDB1BFD8FEE00E8D520 /* SuccessModel.swift */; };
+		75667B561CFEE949008FDFE0 /* ItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A9EED51BFD85FF00E8D520 /* ItemModel.swift */; };
+		75667B571CFEE949008FDFE0 /* PollModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4640F2941BE42B6E00E2AA61 /* PollModel.swift */; };
+		75667B581CFEE949008FDFE0 /* SlideModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B6991C07C47D007FFE2B /* SlideModel.swift */; };
+		75667B591CFEE949008FDFE0 /* LiveModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91861C093A2300D572E6 /* LiveModel.swift */; };
+		75667B5A1CFEE949008FDFE0 /* ServiceListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91881C093AE100D572E6 /* ServiceListModel.swift */; };
+		75667B5B1CFEE949008FDFE0 /* PluginModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A612341C79572600B61DC8 /* PluginModel.swift */; };
+		75667B5C1CFEFF7E008FDFE0 /* DictionaryUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 463A91841C092E6B00D572E6 /* DictionaryUtil.swift */; };
+		75667B5D1CFEFF83008FDFE0 /* ColorUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A612301C78E75D00B61DC8 /* ColorUtil.swift */; };
+		75667B5E1CFEFF86008FDFE0 /* ErrorUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46FD378E1C79867C00DED423 /* ErrorUtil.swift */; };
+		75667B5F1CFEFFA7008FDFE0 /* DisplayAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4623B6921C078F70007FFE2B /* DisplayAPI.swift */; };
+		756FA0FD1E28FF060011AE6F /* SlideCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756FA0FC1E28FF060011AE6F /* SlideCell.swift */; };
+		759464A51CEB8493001A56BF /* SettingsControllerPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759464A41CEB8493001A56BF /* SettingsControllerPresenter.swift */; };
+		759778AE1CF83AC400C2E4B4 /* APITest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759778AD1CF83AC400C2E4B4 /* APITest.swift */; };
+		863574EB78CF355A8463055D /* Pods_Remote.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3194E32378DD6BB8E273BB47 /* Pods_Remote.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+		0BAC8A693E937F5B9F7CF9A6 /* Pods_OLP_RemoteTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_OLP_RemoteTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		20B750141C8B3B45881386FA /* Pods-Remote.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Remote.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Remote/Pods-Remote.debug.xcconfig"; sourceTree = "<group>"; };
+		2AEEA392DC2D08B9EAF00B32 /* Pods-OLP RemoteTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLP RemoteTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-OLP RemoteTests/Pods-OLP RemoteTests.debug.xcconfig"; sourceTree = "<group>"; };
+		3194E32378DD6BB8E273BB47 /* Pods_Remote.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Remote.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		462258C91BE29EF300A509C8 /* Remote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Remote.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		462258CC1BE29EF300A509C8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+		462395801BE505EC00B90146 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = "<group>"; };
+		462395821BE50C5A00B90146 /* ViewControllerUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewControllerUtil.swift; sourceTree = "<group>"; };
+		4623B6921C078F70007FFE2B /* DisplayAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisplayAPI.swift; sourceTree = "<group>"; };
+		4623B6951C07BC2E007FFE2B /* SlidesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlidesViewController.swift; sourceTree = "<group>"; };
+		4623B6961C07BC2E007FFE2B /* SlidesViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SlidesViewController.xib; sourceTree = "<group>"; };
+		4623B6991C07C47D007FFE2B /* SlideModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlideModel.swift; sourceTree = "<group>"; };
+		4623B69B1C07C569007FFE2B /* ControllerAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerAPI.swift; sourceTree = "<group>"; };
+		4623BF911BE418A2003A04FB /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		4623BF931BE418A2003A04FB /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		4623BF991BE419FE003A04FB /* ServiceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceViewController.swift; sourceTree = "<group>"; };
+		4623BF9A1BE419FE003A04FB /* ServiceViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ServiceViewController.xib; sourceTree = "<group>"; };
+		4623BFA01BE42390003A04FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
+		4623BFA41BE424BB003A04FB /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = "<group>"; };
+		463A91841C092E6B00D572E6 /* DictionaryUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DictionaryUtil.swift; sourceTree = "<group>"; };
+		463A91861C093A2300D572E6 /* LiveModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveModel.swift; sourceTree = "<group>"; };
+		463A91881C093AE100D572E6 /* ServiceListModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceListModel.swift; sourceTree = "<group>"; };
+		463A918B1C093DD500D572E6 /* AlertsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertsViewController.swift; sourceTree = "<group>"; };
+		463A918C1C093DD500D572E6 /* AlertsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AlertsViewController.xib; sourceTree = "<group>"; };
+		463A918F1C094F7000D572E6 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		463A91911C0965E900D572E6 /* AlertAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlertAPI.swift; sourceTree = "<group>"; };
+		4640F2901BE4274A00E2AA61 /* API.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = "<group>"; };
+		4640F2921BE429B900E2AA61 /* PollAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PollAPI.swift; sourceTree = "<group>"; };
+		4640F2941BE42B6E00E2AA61 /* PollModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PollModel.swift; sourceTree = "<group>"; };
+		469DE5011BFC3B0000C7EB52 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
+		46A612301C78E75D00B61DC8 /* ColorUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorUtil.swift; sourceTree = "<group>"; };
+		46A612341C79572600B61DC8 /* PluginModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PluginModel.swift; sourceTree = "<group>"; };
+		46A9EED51BFD85FF00E8D520 /* ItemModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemModel.swift; sourceTree = "<group>"; };
+		46A9EED71BFD89DF00E8D520 /* ServiceAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceAPI.swift; sourceTree = "<group>"; };
+		46A9EEDB1BFD8FEE00E8D520 /* SuccessModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SuccessModel.swift; sourceTree = "<group>"; };
+		46C133431C0A3A0F0093579F /* SearchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = "<group>"; };
+		46C133441C0A3A0F0093579F /* SearchViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchViewController.xib; sourceTree = "<group>"; };
+		46CC0CEC1BE6972300423EB4 /* UserSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserSettings.swift; sourceTree = "<group>"; };
+		46FD37861C7959EF00DED423 /* SearchAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchAPI.swift; sourceTree = "<group>"; };
+		46FD37881C796C9B00DED423 /* SearchResultViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchResultViewController.swift; sourceTree = "<group>"; };
+		46FD378A1C79770900DED423 /* LiveAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveAPI.swift; sourceTree = "<group>"; };
+		46FD378C1C797E2B00DED423 /* AddAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddAPI.swift; sourceTree = "<group>"; };
+		46FD378E1C79867C00DED423 /* ErrorUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorUtil.swift; sourceTree = "<group>"; };
+		6B75984BB421CA7AAB01F229 /* Pods-Remote.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Remote.release.xcconfig"; path = "Pods/Target Support Files/Pods-Remote/Pods-Remote.release.xcconfig"; sourceTree = "<group>"; };
+		750831B81CFF44FC00CA9299 /* poll_response.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = poll_response.json; sourceTree = "<group>"; };
+		750831BA1CFF594400CA9299 /* service_response.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = service_response.json; sourceTree = "<group>"; };
+		750831BC1CFF597D00CA9299 /* slides_response.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = slides_response.json; sourceTree = "<group>"; };
+		75219D011E276111001B6BC8 /* TabSwitchingToRightAnimationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TabSwitchingToRightAnimationController.swift; sourceTree = "<group>"; };
+		755A61C81E04878F00D035D4 /* ServiceViewControllerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceViewControllerDelegate.swift; sourceTree = "<group>"; };
+		755C78CD1CCE9080001CF70D /* Service.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = "<group>"; };
+		75667B2A1CFCAE44008FDFE0 /* PollAPITests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PollAPITests.swift; sourceTree = "<group>"; };
+		75667B4B1CFEE85A008FDFE0 /* TestUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestUtils.swift; sourceTree = "<group>"; };
+		756FA0FC1E28FF060011AE6F /* SlideCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SlideCell.swift; sourceTree = "<group>"; };
+		759464A41CEB8493001A56BF /* SettingsControllerPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsControllerPresenter.swift; sourceTree = "<group>"; };
+		759778A31CF839C200C2E4B4 /* OLP RemoteTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "OLP RemoteTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+		759778A71CF839C200C2E4B4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		759778AD1CF83AC400C2E4B4 /* APITest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APITest.swift; sourceTree = "<group>"; };
+		BF194B8FEA335C68D241C125 /* Pods-OLP RemoteTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-OLP RemoteTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-OLP RemoteTests/Pods-OLP RemoteTests.release.xcconfig"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		462258C61BE29EF300A509C8 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				46A6122F1C78D65F00B61DC8 /* QuartzCore.framework in Frameworks */,
+				863574EB78CF355A8463055D /* Pods_Remote.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		759778A01CF839C200C2E4B4 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				5BEE41450088359D269330AE /* Pods_OLP_RemoteTests.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		11D502B12FB9CEA4D19EAC6E /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				463A918F1C094F7000D572E6 /* QuartzCore.framework */,
+				0BAC8A693E937F5B9F7CF9A6 /* Pods_OLP_RemoteTests.framework */,
+				3194E32378DD6BB8E273BB47 /* Pods_Remote.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		462258C01BE29EF300A509C8 = {
+			isa = PBXGroup;
+			children = (
+				462258CB1BE29EF300A509C8 /* Remote */,
+				759778A41CF839C200C2E4B4 /* OLP RemoteTests */,
+				462258CA1BE29EF300A509C8 /* Products */,
+				11D502B12FB9CEA4D19EAC6E /* Frameworks */,
+				9BD4CA2C346197F51290E305 /* Pods */,
+			);
+			sourceTree = "<group>";
+		};
+		462258CA1BE29EF300A509C8 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				462258C91BE29EF300A509C8 /* Remote.app */,
+				759778A31CF839C200C2E4B4 /* OLP RemoteTests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		462258CB1BE29EF300A509C8 /* Remote */ = {
+			isa = PBXGroup;
+			children = (
+				462258CC1BE29EF300A509C8 /* AppDelegate.swift */,
+				4623BF8B1BE418A2003A04FB /* Classes */,
+				4623BF901BE418A2003A04FB /* Resources */,
+				4623BF921BE418A2003A04FB /* Supporting files */,
+			);
+			path = Remote;
+			sourceTree = "<group>";
+		};
+		4623957F1BE505C200B90146 /* Settings */ = {
+			isa = PBXGroup;
+			children = (
+				759464A41CEB8493001A56BF /* SettingsControllerPresenter.swift */,
+				462395801BE505EC00B90146 /* SettingsViewController.swift */,
+			);
+			path = Settings;
+			sourceTree = "<group>";
+		};
+		4623B6941C07BC08007FFE2B /* Slides */ = {
+			isa = PBXGroup;
+			children = (
+				4623B6951C07BC2E007FFE2B /* SlidesViewController.swift */,
+				4623B6961C07BC2E007FFE2B /* SlidesViewController.xib */,
+			);
+			path = Slides;
+			sourceTree = "<group>";
+		};
+		4623BF8B1BE418A2003A04FB /* Classes */ = {
+			isa = PBXGroup;
+			children = (
+				4623BF8C1BE418A2003A04FB /* Controller */,
+				4623BF8D1BE418A2003A04FB /* Model */,
+				4623BFA61BE4257B003A04FB /* Network */,
+				4623BF8E1BE418A2003A04FB /* Util */,
+				4623BF8F1BE418A2003A04FB /* View */,
+			);
+			path = Classes;
+			sourceTree = "<group>";
+		};
+		4623BF8C1BE418A2003A04FB /* Controller */ = {
+			isa = PBXGroup;
+			children = (
+				463A918A1C093DBD00D572E6 /* Alerts */,
+				46C133421C0A39E80093579F /* Search */,
+				4623BF981BE419B6003A04FB /* Service */,
+				4623957F1BE505C200B90146 /* Settings */,
+				4623B6941C07BC08007FFE2B /* Slides */,
+			);
+			path = Controller;
+			sourceTree = "<group>";
+		};
+		4623BF8D1BE418A2003A04FB /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				46A9EEDB1BFD8FEE00E8D520 /* SuccessModel.swift */,
+				46A9EED51BFD85FF00E8D520 /* ItemModel.swift */,
+				4640F2941BE42B6E00E2AA61 /* PollModel.swift */,
+				4623B6991C07C47D007FFE2B /* SlideModel.swift */,
+				46CC0CEC1BE6972300423EB4 /* UserSettings.swift */,
+				463A91861C093A2300D572E6 /* LiveModel.swift */,
+				463A91881C093AE100D572E6 /* ServiceListModel.swift */,
+				46A612341C79572600B61DC8 /* PluginModel.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		4623BF8E1BE418A2003A04FB /* Util */ = {
+			isa = PBXGroup;
+			children = (
+				75219D011E276111001B6BC8 /* TabSwitchingToRightAnimationController.swift */,
+				462395821BE50C5A00B90146 /* ViewControllerUtil.swift */,
+				463A91841C092E6B00D572E6 /* DictionaryUtil.swift */,
+				46A612301C78E75D00B61DC8 /* ColorUtil.swift */,
+				46FD378E1C79867C00DED423 /* ErrorUtil.swift */,
+			);
+			path = Util;
+			sourceTree = "<group>";
+		};
+		4623BF8F1BE418A2003A04FB /* View */ = {
+			isa = PBXGroup;
+			children = (
+				756FA0FC1E28FF060011AE6F /* SlideCell.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		4623BF901BE418A2003A04FB /* Resources */ = {
+			isa = PBXGroup;
+			children = (
+				4623BFA41BE424BB003A04FB /* LaunchScreen.xib */,
+				4623BF911BE418A2003A04FB /* Assets.xcassets */,
+				4623BFA11BE42390003A04FB /* Localizable.strings */,
+				469DE5011BFC3B0000C7EB52 /* Settings.bundle */,
+			);
+			path = Resources;
+			sourceTree = "<group>";
+		};
+		4623BF921BE418A2003A04FB /* Supporting files */ = {
+			isa = PBXGroup;
+			children = (
+				4623BF931BE418A2003A04FB /* Info.plist */,
+			);
+			path = "Supporting files";
+			sourceTree = "<group>";
+		};
+		4623BF981BE419B6003A04FB /* Service */ = {
+			isa = PBXGroup;
+			children = (
+				755A61C81E04878F00D035D4 /* ServiceViewControllerDelegate.swift */,
+				4623BF991BE419FE003A04FB /* ServiceViewController.swift */,
+				4623BF9A1BE419FE003A04FB /* ServiceViewController.xib */,
+			);
+			path = Service;
+			sourceTree = "<group>";
+		};
+		4623BFA61BE4257B003A04FB /* Network */ = {
+			isa = PBXGroup;
+			children = (
+				4640F2901BE4274A00E2AA61 /* API.swift */,
+				463A91911C0965E900D572E6 /* AlertAPI.swift */,
+				4623B69B1C07C569007FFE2B /* ControllerAPI.swift */,
+				4623B6921C078F70007FFE2B /* DisplayAPI.swift */,
+				4640F2921BE429B900E2AA61 /* PollAPI.swift */,
+				46A9EED71BFD89DF00E8D520 /* ServiceAPI.swift */,
+				46FD37861C7959EF00DED423 /* SearchAPI.swift */,
+				46FD378A1C79770900DED423 /* LiveAPI.swift */,
+				46FD378C1C797E2B00DED423 /* AddAPI.swift */,
+				755C78CD1CCE9080001CF70D /* Service.swift */,
+			);
+			path = Network;
+			sourceTree = "<group>";
+		};
+		463A918A1C093DBD00D572E6 /* Alerts */ = {
+			isa = PBXGroup;
+			children = (
+				463A918B1C093DD500D572E6 /* AlertsViewController.swift */,
+				463A918C1C093DD500D572E6 /* AlertsViewController.xib */,
+			);
+			path = Alerts;
+			sourceTree = "<group>";
+		};
+		46C133421C0A39E80093579F /* Search */ = {
+			isa = PBXGroup;
+			children = (
+				46C133431C0A3A0F0093579F /* SearchViewController.swift */,
+				46C133441C0A3A0F0093579F /* SearchViewController.xib */,
+				46FD37881C796C9B00DED423 /* SearchResultViewController.swift */,
+			);
+			path = Search;
+			sourceTree = "<group>";
+		};
+		759778A41CF839C200C2E4B4 /* OLP RemoteTests */ = {
+			isa = PBXGroup;
+			children = (
+				759778A71CF839C200C2E4B4 /* Info.plist */,
+				759778AD1CF83AC400C2E4B4 /* APITest.swift */,
+				75667B2A1CFCAE44008FDFE0 /* PollAPITests.swift */,
+				75667B4B1CFEE85A008FDFE0 /* TestUtils.swift */,
+				750831B81CFF44FC00CA9299 /* poll_response.json */,
+				750831BA1CFF594400CA9299 /* service_response.json */,
+				750831BC1CFF597D00CA9299 /* slides_response.json */,
+			);
+			path = "OLP RemoteTests";
+			sourceTree = "<group>";
+		};
+		9BD4CA2C346197F51290E305 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				2AEEA392DC2D08B9EAF00B32 /* Pods-OLP RemoteTests.debug.xcconfig */,
+				BF194B8FEA335C68D241C125 /* Pods-OLP RemoteTests.release.xcconfig */,
+				20B750141C8B3B45881386FA /* Pods-Remote.debug.xcconfig */,
+				6B75984BB421CA7AAB01F229 /* Pods-Remote.release.xcconfig */,
+			);
+			name = Pods;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		462258C81BE29EF300A509C8 /* Remote */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 462258DB1BE29EF300A509C8 /* Build configuration list for PBXNativeTarget "Remote" */;
+			buildPhases = (
+				A942641CDE6E54B2447D4643 /* [CP] Check Pods Manifest.lock */,
+				462258C51BE29EF300A509C8 /* Sources */,
+				462258C61BE29EF300A509C8 /* Frameworks */,
+				462258C71BE29EF300A509C8 /* Resources */,
+				097501326E5B3EE754239743 /* [CP] Embed Pods Frameworks */,
+				86DECB90A25A9BBEE8B49C04 /* [CP] Copy Pods Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Remote;
+			productName = Remote;
+			productReference = 462258C91BE29EF300A509C8 /* Remote.app */;
+			productType = "com.apple.product-type.application";
+		};
+		759778A21CF839C200C2E4B4 /* OLP RemoteTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 759778AA1CF839C200C2E4B4 /* Build configuration list for PBXNativeTarget "OLP RemoteTests" */;
+			buildPhases = (
+				BCF6BCAAAC1529152D882FC6 /* [CP] Check Pods Manifest.lock */,
+				7597789F1CF839C200C2E4B4 /* Sources */,
+				759778A01CF839C200C2E4B4 /* Frameworks */,
+				759778A11CF839C200C2E4B4 /* Resources */,
+				F0EA71C50D6F72431C9A5B4E /* [CP] Embed Pods Frameworks */,
+				8AFF634069CB54C46B80A56F /* [CP] Copy Pods Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = "OLP RemoteTests";
+			productName = "OLP RemoteTests";
+			productReference = 759778A31CF839C200C2E4B4 /* OLP RemoteTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		462258C11BE29EF300A509C8 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				CLASSPREFIX = "";
+				LastSwiftUpdateCheck = 0730;
+				LastUpgradeCheck = 0710;
+				ORGANIZATIONNAME = OpenLP;
+				TargetAttributes = {
+					462258C81BE29EF300A509C8 = {
+						CreatedOnToolsVersion = 7.1;
+					};
+					759778A21CF839C200C2E4B4 = {
+						CreatedOnToolsVersion = 7.3.1;
+					};
+				};
+			};
+			buildConfigurationList = 462258C41BE29EF300A509C8 /* Build configuration list for PBXProject "Remote" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = 462258C01BE29EF300A509C8;
+			productRefGroup = 462258CA1BE29EF300A509C8 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				462258C81BE29EF300A509C8 /* Remote */,
+				759778A21CF839C200C2E4B4 /* OLP RemoteTests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		462258C71BE29EF300A509C8 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				463A918E1C093DD500D572E6 /* AlertsViewController.xib in Resources */,
+				4623BFA51BE424BB003A04FB /* LaunchScreen.xib in Resources */,
+				4623BF9F1BE42390003A04FB /* Localizable.strings in Resources */,
+				4623B6981C07BC2E007FFE2B /* SlidesViewController.xib in Resources */,
+				4623BF9C1BE419FE003A04FB /* ServiceViewController.xib in Resources */,
+				4623BF941BE418A2003A04FB /* Assets.xcassets in Resources */,
+				46C133461C0A3A0F0093579F /* SearchViewController.xib in Resources */,
+				469DE5021BFC3B0000C7EB52 /* Settings.bundle in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		759778A11CF839C200C2E4B4 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				750831BB1CFF594400CA9299 /* service_response.json in Resources */,
+				750831BD1CFF597D00CA9299 /* slides_response.json in Resources */,
+				750831B91CFF44FC00CA9299 /* poll_response.json in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+		097501326E5B3EE754239743 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Remote/Pods-Remote-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		86DECB90A25A9BBEE8B49C04 /* [CP] Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Copy Pods Resources";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Remote/Pods-Remote-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		8AFF634069CB54C46B80A56F /* [CP] Copy Pods Resources */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Copy Pods Resources";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-OLP RemoteTests/Pods-OLP RemoteTests-resources.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		A942641CDE6E54B2447D4643 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n";
+			showEnvVarsInLog = 0;
+		};
+		BCF6BCAAAC1529152D882FC6 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n";
+			showEnvVarsInLog = 0;
+		};
+		F0EA71C50D6F72431C9A5B4E /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-OLP RemoteTests/Pods-OLP RemoteTests-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		462258C51BE29EF300A509C8 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				46FD378B1C79770900DED423 /* LiveAPI.swift in Sources */,
+				4623B6971C07BC2E007FFE2B /* SlidesViewController.swift in Sources */,
+				46A9EED81BFD89DF00E8D520 /* ServiceAPI.swift in Sources */,
+				46FD37871C7959EF00DED423 /* SearchAPI.swift in Sources */,
+				4623B69C1C07C569007FFE2B /* ControllerAPI.swift in Sources */,
+				463A91851C092E6B00D572E6 /* DictionaryUtil.swift in Sources */,
+				462395831BE50C5A00B90146 /* ViewControllerUtil.swift in Sources */,
+				46CC0CED1BE6972300423EB4 /* UserSettings.swift in Sources */,
+				46FD37891C796C9B00DED423 /* SearchResultViewController.swift in Sources */,
+				463A918D1C093DD500D572E6 /* AlertsViewController.swift in Sources */,
+				4640F2951BE42B6E00E2AA61 /* PollModel.swift in Sources */,
+				75219D021E276111001B6BC8 /* TabSwitchingToRightAnimationController.swift in Sources */,
+				46A9EED61BFD85FF00E8D520 /* ItemModel.swift in Sources */,
+				755C78CE1CCE9080001CF70D /* Service.swift in Sources */,
+				46A9EEDC1BFD8FEE00E8D520 /* SuccessModel.swift in Sources */,
+				4640F2911BE4274A00E2AA61 /* API.swift in Sources */,
+				756FA0FD1E28FF060011AE6F /* SlideCell.swift in Sources */,
+				4623BF9B1BE419FE003A04FB /* ServiceViewController.swift in Sources */,
+				463A91891C093AE100D572E6 /* ServiceListModel.swift in Sources */,
+				463A91871C093A2300D572E6 /* LiveModel.swift in Sources */,
+				4623B69A1C07C47D007FFE2B /* SlideModel.swift in Sources */,
+				46A612311C78E75D00B61DC8 /* ColorUtil.swift in Sources */,
+				46C133451C0A3A0F0093579F /* SearchViewController.swift in Sources */,
+				462258CD1BE29EF300A509C8 /* AppDelegate.swift in Sources */,
+				4640F2931BE429B900E2AA61 /* PollAPI.swift in Sources */,
+				462395811BE505EC00B90146 /* SettingsViewController.swift in Sources */,
+				4623B6931C078F70007FFE2B /* DisplayAPI.swift in Sources */,
+				463A91921C0965E900D572E6 /* AlertAPI.swift in Sources */,
+				46FD378D1C797E2B00DED423 /* AddAPI.swift in Sources */,
+				46FD378F1C79867C00DED423 /* ErrorUtil.swift in Sources */,
+				46A612351C79572600B61DC8 /* PluginModel.swift in Sources */,
+				759464A51CEB8493001A56BF /* SettingsControllerPresenter.swift in Sources */,
+				755A61C91E04878F00D035D4 /* ServiceViewControllerDelegate.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		7597789F1CF839C200C2E4B4 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				75667B561CFEE949008FDFE0 /* ItemModel.swift in Sources */,
+				75667B591CFEE949008FDFE0 /* LiveModel.swift in Sources */,
+				75667B521CFEE938008FDFE0 /* AddAPI.swift in Sources */,
+				75667B5C1CFEFF7E008FDFE0 /* DictionaryUtil.swift in Sources */,
+				75667B5E1CFEFF86008FDFE0 /* ErrorUtil.swift in Sources */,
+				75667B5A1CFEE949008FDFE0 /* ServiceListModel.swift in Sources */,
+				75667B571CFEE949008FDFE0 /* PollModel.swift in Sources */,
+				75667B581CFEE949008FDFE0 /* SlideModel.swift in Sources */,
+				75667B281CFCA8B1008FDFE0 /* API.swift in Sources */,
+				75667B2B1CFCAE44008FDFE0 /* PollAPITests.swift in Sources */,
+				75667B4D1CFEE92C008FDFE0 /* ControllerAPI.swift in Sources */,
+				75667B5F1CFEFFA7008FDFE0 /* DisplayAPI.swift in Sources */,
+				75667B4E1CFEE930008FDFE0 /* PollAPI.swift in Sources */,
+				75667B541CFEE93D008FDFE0 /* AlertAPI.swift in Sources */,
+				75667B531CFEE938008FDFE0 /* Service.swift in Sources */,
+				75667B291CFCA8C9008FDFE0 /* UserSettings.swift in Sources */,
+				75667B4C1CFEE85A008FDFE0 /* TestUtils.swift in Sources */,
+				75667B5D1CFEFF83008FDFE0 /* ColorUtil.swift in Sources */,
+				75667B551CFEE949008FDFE0 /* SuccessModel.swift in Sources */,
+				75667B4F1CFEE938008FDFE0 /* ServiceAPI.swift in Sources */,
+				75667B5B1CFEE949008FDFE0 /* PluginModel.swift in Sources */,
+				759778AE1CF83AC400C2E4B4 /* APITest.swift in Sources */,
+				75667B511CFEE938008FDFE0 /* LiveAPI.swift in Sources */,
+				75667B501CFEE938008FDFE0 /* SearchAPI.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+		4623BFA11BE42390003A04FB /* Localizable.strings */ = {
+			isa = PBXVariantGroup;
+			children = (
+				4623BFA01BE42390003A04FB /* en */,
+			);
+			name = Localizable.strings;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		462258D91BE29EF300A509C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = "";
+			};
+			name = Debug;
+		};
+		462258DA1BE29EF300A509C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				SWIFT_VERSION = "";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		462258DC1BE29EF300A509C8 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 20B750141C8B3B45881386FA /* Pods-Remote.debug.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				DEFINES_MODULE = NO;
+				DEVELOPMENT_TEAM = "";
+				INFOPLIST_FILE = "Remote/Supporting files/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = org.openlp.Remote;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 2.3;
+			};
+			name = Debug;
+		};
+		462258DD1BE29EF300A509C8 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 6B75984BB421CA7AAB01F229 /* Pods-Remote.release.xcconfig */;
+			buildSettings = {
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				DEFINES_MODULE = NO;
+				DEVELOPMENT_TEAM = "";
+				INFOPLIST_FILE = "Remote/Supporting files/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = org.openlp.Remote;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 2.3;
+			};
+			name = Release;
+		};
+		759778AB1CF839C200C2E4B4 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = 2AEEA392DC2D08B9EAF00B32 /* Pods-OLP RemoteTests.debug.xcconfig */;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				INFOPLIST_FILE = "OLP RemoteTests/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = "com.openlp.OLP-RemoteTests";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 2.3;
+			};
+			name = Debug;
+		};
+		759778AC1CF839C200C2E4B4 /* Release */ = {
+			isa = XCBuildConfiguration;
+			baseConfigurationReference = BF194B8FEA335C68D241C125 /* Pods-OLP RemoteTests.release.xcconfig */;
+			buildSettings = {
+				CLANG_ANALYZER_NONNULL = YES;
+				INFOPLIST_FILE = "OLP RemoteTests/Info.plist";
+				IPHONEOS_DEPLOYMENT_TARGET = 9.3;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = "com.openlp.OLP-RemoteTests";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 2.3;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		462258C41BE29EF300A509C8 /* Build configuration list for PBXProject "Remote" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				462258D91BE29EF300A509C8 /* Debug */,
+				462258DA1BE29EF300A509C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		462258DB1BE29EF300A509C8 /* Build configuration list for PBXNativeTarget "Remote" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				462258DC1BE29EF300A509C8 /* Debug */,
+				462258DD1BE29EF300A509C8 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		759778AA1CF839C200C2E4B4 /* Build configuration list for PBXNativeTarget "OLP RemoteTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				759778AB1CF839C200C2E4B4 /* Debug */,
+				759778AC1CF839C200C2E4B4 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 462258C11BE29EF300A509C8 /* Project object */;
+}

=== added directory 'Remote.xcodeproj/project.xcworkspace'
=== added file 'Remote.xcodeproj/project.xcworkspace/contents.xcworkspacedata'
--- Remote.xcodeproj/project.xcworkspace/contents.xcworkspacedata	1970-01-01 00:00:00 +0000
+++ Remote.xcodeproj/project.xcworkspace/contents.xcworkspacedata	2017-01-21 18:06:11 +0000
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:Remote.xcodeproj">
+   </FileRef>
+</Workspace>

=== added directory 'Remote.xcworkspace'
=== added file 'Remote.xcworkspace/contents.xcworkspacedata'
--- Remote.xcworkspace/contents.xcworkspacedata	1970-01-01 00:00:00 +0000
+++ Remote.xcworkspace/contents.xcworkspacedata	2017-01-21 18:06:11 +0000
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:Remote.xcodeproj">
+   </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
+</Workspace>

=== added file 'Remote/AppDelegate.swift'
--- Remote/AppDelegate.swift	1970-01-01 00:00:00 +0000
+++ Remote/AppDelegate.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,117 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import BlockLooper
+
+@UIApplicationMain
+class AppDelegate: UIResponder, UIApplicationDelegate, UITabBarControllerDelegate, ServiceViewControllerDelegate {
+
+    var window: UIWindow?
+    var service: Service!
+    var settings: UserSettings!
+    var tabBarController: UITabBarController!
+    var useAnimator: Bool = false
+
+    enum OpenLPTab: Int {
+        case ServiceTab
+        case SlidesTab
+        case AlertsTab
+        case SearchTab
+    }
+
+    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
+
+        settings = UserSettings(defaults: NSUserDefaults.standardUserDefaults())
+        settings.registerDefaults()
+        service = Service(settings: settings)
+
+        var rootViewControllers = [UINavigationController]()
+        var navigationController: UINavigationController
+        
+        let serviceViewController = ServiceViewController(settings: settings, service: service, delegate: self)
+        navigationController = UINavigationController(rootViewController: serviceViewController)
+        rootViewControllers.append(navigationController)
+        
+        let slidesViewController = SlidesViewController(settings: settings, service: service)
+        navigationController = UINavigationController(rootViewController: slidesViewController)
+        rootViewControllers.append(navigationController)
+        
+        service.pollAPI.serviceDelegate = serviceViewController
+        service.pollAPI.slidesDelegate = slidesViewController
+        
+        let alertsViewController = AlertsViewController(settings: settings, service: service)
+        navigationController = UINavigationController(rootViewController: alertsViewController)
+        rootViewControllers.append(navigationController)
+        
+        let searchViewController = SearchViewController(settings: settings, service: service)
+        navigationController = UINavigationController(rootViewController: searchViewController)
+        rootViewControllers.append(navigationController)
+        
+        let tabBarController = UITabBarController()
+        tabBarController.viewControllers = rootViewControllers
+
+        self.tabBarController = tabBarController
+        tabBarController.delegate = self
+        
+        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
+        self.window?.rootViewController = tabBarController
+        self.window?.makeKeyAndVisible()
+        
+        settings.resetDefaultsIfNeeded()
+
+        BlockLooper.executeBlockWithRate(2.0) {
+            if self.settings.validateURL() {
+                if self.service.pauseLoopPolling == false {
+                    self.service.pollAPI.poll()
+                }
+            }
+            return false
+        }
+
+        return true
+    }
+
+
+    func withAnimator(block:()-> Void) -> Void {
+        useAnimator = true
+        block()
+        useAnimator = false
+    }
+
+
+    // MARK: - ServiceViewControllerDelegate
+    func serviceViewControllerDidSelectItem(item: ItemModel) {
+        withAnimator {
+            self.tabBarController.selectedIndex = OpenLPTab.SlidesTab.rawValue
+        }
+    }
+
+
+    // MARK: - TabBarControllerDelegate
+    func tabBarController(tabBarController: UITabBarController, animationControllerForTransitionFromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
+        return useAnimator ? TabSwitchingToRightAnimationController(tabBarController: self.tabBarController) : nil
+    }
+}
+

=== added directory 'Remote/Classes'
=== added directory 'Remote/Classes/Controller'
=== added directory 'Remote/Classes/Controller/Alerts'
=== added file 'Remote/Classes/Controller/Alerts/AlertsViewController.swift'
--- Remote/Classes/Controller/Alerts/AlertsViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Alerts/AlertsViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,170 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import UITextView_Placeholder
+
+// MARK: - AlertsViewController
+
+class AlertsViewController: UIViewController {
+    
+    @IBOutlet weak var textAlert: UITextView!
+    @IBOutlet weak var btShow: UIButton!
+    @IBOutlet weak var btShowBottomConstraint: NSLayoutConstraint!
+    
+    private var btCancel: UIBarButtonItem!
+    private let service: Service!
+    private let settingsPresenter: SettingsControllerPresenter!
+    
+    // MARK: Init
+
+    init(settings: UserSettings, service: Service) {
+        self.service = service
+        settingsPresenter = SettingsControllerPresenter(settings: settings, pollAPI: service.pollAPI)
+        super.init(nibName: "AlertsViewController", bundle: nil)
+        self.setupNavigationBar()
+        self.setupTabBar()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.service = nil
+        self.settingsPresenter = nil
+        super.init(coder: aDecoder)
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.setupAlertTextView()
+        self.setupShowButton()
+        self.setupObservers()
+    }
+    
+    // MARK: Setup
+    
+    private func setupNavigationBar() {
+        self.navigationItem.leftBarButtonItem = settingsPresenter.settingsBarButton(self)
+        
+        self.navigationItem.title = NSLocalizedString("Alerts", comment: "")
+        
+        let strCancel = NSLocalizedString("Cancel", comment: "")
+        self.btCancel = UIBarButtonItem(title: strCancel, style: .Plain, target: self, action: #selector(AlertsViewController.clear))
+        self.btCancel.enabled = false
+        self.navigationItem.rightBarButtonItem = self.btCancel
+    }
+    
+    private func setupAlertTextView() {
+        self.textAlert.placeholder = NSLocalizedString("Type here...", comment: "")
+    }
+    
+    private func setupShowButton() {
+        let strShow = NSLocalizedString("Show", comment: "")
+        self.btShow.setTitle(strShow, forState: .Normal)
+        self.btShow.enabled = false
+    }
+    
+    private func setupTabBar() {
+        self.tabBarItem.title = NSLocalizedString("Alerts", comment: "")
+        self.tabBarItem.image = UIImage(named: "ic_alerts")
+    }
+    
+    private func setupObservers() {
+        NSNotificationCenter.defaultCenter().addObserver(self,
+            selector: #selector(AlertsViewController.keyboardWillAppear(_:)),
+            name: UIKeyboardWillShowNotification,
+            object: nil)
+        NSNotificationCenter.defaultCenter().addObserver(self,
+            selector: #selector(AlertsViewController.keyboardWillDisappear(_:)),
+            name: UIKeyboardWillHideNotification,
+            object: nil)
+    }
+    
+    // MARK: My methods
+    
+    @objc private func clear() {
+        self.textAlert.resignFirstResponder()
+        self.textAlert.text = ""
+    }
+    
+    @IBAction func showAlert() {
+        self.service.alertAPI.alert(self.textAlert.text) { success, error in
+            if let error = error, message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            } else {
+                let strNotification = NSLocalizedString("Alert showed!", comment: "")
+                self.displayNotification(strNotification)
+                self.clear()
+            }
+        }
+    }
+    
+    // MARK: Keyboard
+    
+    @objc func keyboardWillAppear(notification: NSNotification) {
+        self.btCancel.enabled = true
+        
+        let keyboardRect = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
+        let animationDuration = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
+        self.btShowBottomConstraint.constant = keyboardRect.size.height + 8
+        UIView.animateWithDuration(animationDuration) {
+            self.view.layoutIfNeeded()
+        }
+    }
+    
+    @objc func keyboardWillDisappear(notification: NSNotification) {
+        self.btCancel.enabled = false
+        
+        let animationDuration = notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
+        self.btShowBottomConstraint.constant = 57
+        UIView.animateWithDuration(animationDuration) {
+            self.view.layoutIfNeeded()
+        }
+    }
+    
+}
+
+// MARK: - UITextViewDelegate
+
+extension AlertsViewController: UITextViewDelegate {
+    
+    func textViewDidChange(textView: UITextView) {
+        if textView.text == "" {
+            self.btShow.enabled = false
+        } else {
+            self.btShow.enabled = true
+        }
+    }
+    
+    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
+        
+        if text.containsString("\n") {
+            let newText = text.stringByReplacingOccurrencesOfString("\n", withString: " ")
+            let fullText = (textView.text as NSString).stringByReplacingCharactersInRange(range, withString: newText)
+            textView.text = fullText
+            return false
+        }
+        
+        return true
+    }
+    
+}

=== added file 'Remote/Classes/Controller/Alerts/AlertsViewController.xib'
--- Remote/Classes/Controller/Alerts/AlertsViewController.xib	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Alerts/AlertsViewController.xib	2017-01-21 18:06:11 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="AlertsViewController" customModule="Remote" customModuleProvider="target">
+            <connections>
+                <outlet property="btShow" destination="Ghe-De-cTK" id="osi-K2-d4M"/>
+                <outlet property="btShowBottomConstraint" destination="K4x-an-92n" id="1F0-Ne-xHI"/>
+                <outlet property="textAlert" destination="2pd-kX-chX" id="QmG-hg-GHI"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ghe-De-cTK">
+                    <rect key="frame" x="8" y="513" width="584" height="30"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="30" id="OBd-Io-d3I"/>
+                    </constraints>
+                    <state key="normal" title="Show"/>
+                    <connections>
+                        <action selector="showAlert" destination="-1" eventType="touchUpInside" id="ftd-z4-HVF"/>
+                    </connections>
+                </button>
+                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2pd-kX-chX">
+                    <rect key="frame" x="8" y="72" width="584" height="433"/>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    <color key="textColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                    <fontDescription key="fontDescription" type="system" pointSize="18"/>
+                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                    <connections>
+                        <outlet property="delegate" destination="-1" id="GU4-8w-rq1"/>
+                    </connections>
+                </textView>
+            </subviews>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="Ghe-De-cTK" secondAttribute="bottom" constant="57" id="K4x-an-92n"/>
+                <constraint firstItem="2pd-kX-chX" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="72" id="NMh-Oa-kWf"/>
+                <constraint firstAttribute="trailing" secondItem="2pd-kX-chX" secondAttribute="trailing" constant="8" id="cDZ-4H-D4w"/>
+                <constraint firstItem="2pd-kX-chX" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="8" id="rIu-Xi-k1Q"/>
+                <constraint firstItem="Ghe-De-cTK" firstAttribute="top" secondItem="2pd-kX-chX" secondAttribute="bottom" constant="8" id="rK5-8t-rdT"/>
+                <constraint firstItem="Ghe-De-cTK" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="8" id="vRB-rb-s4P"/>
+                <constraint firstAttribute="trailing" secondItem="Ghe-De-cTK" secondAttribute="trailing" constant="8" id="vx4-De-Ma7"/>
+            </constraints>
+            <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
+            <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+            <edgeInsets key="layoutMargins" top="72" left="8" bottom="57" right="8"/>
+        </view>
+    </objects>
+</document>

=== added directory 'Remote/Classes/Controller/Search'
=== added file 'Remote/Classes/Controller/Search/SearchResultViewController.swift'
--- Remote/Classes/Controller/Search/SearchResultViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Search/SearchResultViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,135 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+class SearchResultViewController: UITableViewController {
+    
+    private var items: [ItemModel]!
+    private let service: Service!
+    
+    init(items: [ItemModel], service: Service) {
+        self.items = items
+        self.service = service
+        super.init(style: .Plain)
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.service = nil
+        super.init(coder: aDecoder)
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.setupNavigationBar()
+        self.setupTableView()
+    }
+    
+    // MARK: Setup
+    
+    private func setupNavigationBar() {
+        self.navigationItem.title = NSLocalizedString("Results", comment: "")
+    }
+    
+    private func setupTableView() {
+        self.tableView.estimatedRowHeight = 44
+        self.tableView.rowHeight = UITableViewAutomaticDimension
+    }
+
+    // MARK: Table view data source
+    
+    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return self.items.count
+    }
+    
+    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        var cell = tableView.dequeueReusableCellWithIdentifier("Cell")
+        if cell == nil {
+            cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell")
+            cell!.textLabel?.numberOfLines = 0
+        }
+        let item = self.items[indexPath.row]
+        cell!.textLabel?.text = item.title
+        return cell!
+    }
+    
+    // MARK: Table view delegate
+    
+    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+        func showErrorNotification(error: NSError) {
+            if let message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            }
+        }
+        func itemAddedNotification() {
+            let message = NSLocalizedString("Item added.", comment: "")
+            self.displayNotification(message)
+        }
+        let item = self.items[indexPath.row]
+        let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
+        let goLiveStr = NSLocalizedString("Go Live", comment: "")
+        let goLiveAction = UIAlertAction(title: goLiveStr, style: .Default) { _ in
+            tableView.deselectRowAtIndexPath(indexPath, animated: true)
+            self.service.liveAPI.goItemToLive(item, plugin: Plugin(rawValue: item.plugin!)!) { error in
+                if let error = error {
+                    showErrorNotification(error)
+                    return
+                }
+                self.tabBarController?.selectedIndex = 1
+            }
+        }
+        let addStr = NSLocalizedString("Add to Service", comment: "")
+        let addAction = UIAlertAction(title: addStr, style: .Default) { _ in
+            tableView.deselectRowAtIndexPath(indexPath, animated: true)
+            self.service.addAPI.addItem(item, plugin: Plugin(rawValue: item.plugin!)!) { error in
+                if let error = error {
+                    showErrorNotification(error)
+                } else {
+                    itemAddedNotification()
+                }
+            }
+        }
+        let addAndGoStr = NSLocalizedString("Add & Go to Service", comment: "")
+        let addAndGoAction = UIAlertAction(title: addAndGoStr, style: .Default) { _ in
+            tableView.deselectRowAtIndexPath(indexPath, animated: true)
+            self.service.addAPI.addItem(item, plugin: Plugin(rawValue: item.plugin!)!) { error in
+                if let error = error {
+                    showErrorNotification(error)
+                    return
+                }
+                self.tabBarController?.selectedIndex = 0
+            }
+        }
+        let cancelStr = NSLocalizedString("Cancel", comment: "")
+        let cancelAction = UIAlertAction(title: cancelStr, style: .Cancel) { _ in
+            tableView.deselectRowAtIndexPath(indexPath, animated: true)
+        }
+        alertController.addAction(goLiveAction)
+        alertController.addAction(addAction)
+        alertController.addAction(addAndGoAction)
+        alertController.addAction(cancelAction)
+        self.presentViewController(alertController, animated: true, completion: nil)
+    }
+    
+}

=== added file 'Remote/Classes/Controller/Search/SearchViewController.swift'
--- Remote/Classes/Controller/Search/SearchViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Search/SearchViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,199 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import CWStatusBarNotification
+
+// MARK: - SearchViewController
+
+class SearchViewController: UIViewController {
+    
+    @IBOutlet weak var lbTitle: UILabel!
+    @IBOutlet weak var pickerView: UIPickerView!
+    
+    private var notifications: CWStatusBarNotification!
+    private var textField: UITextField!
+    private var plugins: [Plugin]!
+    private let service: Service!
+    private var settingsPresenter: SettingsControllerPresenter!
+    
+    // MARK: Init
+    
+    init(settings: UserSettings, service: Service) {
+        self.service = service
+        self.settingsPresenter = SettingsControllerPresenter(settings: settings, pollAPI: service.pollAPI)
+        super.init(nibName: "SearchViewController", bundle: nil)
+        self.setupNavigationBar()
+        self.setupTabBar()
+        self.setupOptions()
+        self.setupNotifications()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.service = nil
+        self.settingsPresenter = nil
+        super.init(coder: aDecoder)
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.setupPickerView()
+        self.setupGestures()
+    }
+    
+    // MARK: Setup
+    
+    private func setupNavigationBar() {
+        self.navigationItem.leftBarButtonItem = settingsPresenter.settingsBarButton(self)
+        
+        self.textField = UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 30))
+        self.textField.backgroundColor = UIColor.whiteColor()
+        self.textField.textAlignment = .Center
+        self.textField.clearButtonMode = .WhileEditing
+        self.textField.placeholder = NSLocalizedString("Type here...", comment: "")
+        self.textField.layer.borderWidth = 0.7
+        self.textField.layer.borderColor = kGreyColor.CGColor
+        self.textField.layer.cornerRadius = 5
+        self.textField.returnKeyType = .Search
+        self.textField.delegate = self
+        self.navigationItem.titleView = self.textField
+        
+        let btSearch = UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: #selector(SearchViewController.search))
+        self.navigationItem.rightBarButtonItem = btSearch
+    }
+    
+    private func setupPickerView() {
+        self.lbTitle.text = NSLocalizedString("Search for", comment: "")
+        self.pickerView.layer.borderColor = kGreyColor.CGColor
+        self.pickerView.layer.borderWidth = 0.7
+    }
+    
+    private func setupOptions() {
+        self.plugins = [
+            .Songs,
+            .Bibles,
+            .Presentations,
+            .Images,
+            .Media,
+            .Custom
+        ]
+    }
+    
+    private func setupGestures() {
+        var gesture: UIGestureRecognizer
+        gesture = UITapGestureRecognizer(target: self, action: #selector(SearchViewController.dismissKeyboard))
+        gesture.delegate = self
+        self.view.addGestureRecognizer(gesture)
+        gesture = UIPanGestureRecognizer(target: self, action: #selector(SearchViewController.dismissKeyboard))
+        self.pickerView.addGestureRecognizer(gesture)
+    }
+    
+    private func setupTabBar() {
+        self.tabBarItem = UITabBarItem(tabBarSystemItem: .Search, tag: 0)
+        self.tabBarItem.title = NSLocalizedString("Search", comment: "")
+    }
+    
+    private func setupNotifications() {
+        self.notifications = CWStatusBarNotification()
+        self.notifications.notificationLabelTextColor = UIColor.whiteColor()
+        self.notifications.notificationAnimationInStyle = .Top
+        self.notifications.notificationAnimationOutStyle = .Top
+    }
+    
+    // MARK: My functions
+    
+    @objc private func search() {
+        self.dismissKeyboard()
+        let plugin = self.plugins[self.pickerView.selectedRowInComponent(0)]
+        let text = self.textField.text!
+        service.searchAPI.search(plugin: plugin, text: text) { items, error in
+            if let error = error {
+                let message = NSLocalizedString("An error occurred. Try again...", comment: "")
+                self.notifications.notificationLabelBackgroundColor = kRedColor
+                self.notifications.displayNotificationWithMessage(message, forDuration: 3)
+                print(error)
+                return
+            } else if items?.count == 0 {
+                let message = NSLocalizedString("No results found", comment: "")
+                self.notifications.notificationLabelBackgroundColor = kBlueColor
+                self.notifications.displayNotificationWithMessage(message, forDuration: 3)
+                return
+            }
+            let resultsViewController = SearchResultViewController(items: items!, service: self.service)
+            self.navigationController?.pushViewController(resultsViewController, animated: true)
+        }
+    }
+    
+    @objc private func dismissKeyboard() {
+        self.textField.resignFirstResponder()
+    }
+    
+}
+
+// MARK: - UIPickerViewDataSource
+
+extension SearchViewController: UIPickerViewDataSource {
+    
+    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
+        return 1
+    }
+    
+    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
+        return self.plugins.count
+    }
+    
+}
+
+// MARK: - UIPickerViewDelegate
+
+extension SearchViewController: UIPickerViewDelegate {
+    
+    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
+        let option = self.plugins[row]
+        return option.name()
+    }
+    
+}
+
+// MARK: - UIGestureRecognizerDelegate
+
+extension SearchViewController: UIGestureRecognizerDelegate {
+    
+    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer,
+        shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
+            return true
+    }
+    
+}
+
+// MARK: - UITextFieldDelegate
+
+extension SearchViewController: UITextFieldDelegate {
+    
+    func textFieldShouldReturn(textField: UITextField) -> Bool {
+        self.search()
+        return true
+    }
+    
+}

=== added file 'Remote/Classes/Controller/Search/SearchViewController.xib'
--- Remote/Classes/Controller/Search/SearchViewController.xib	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Search/SearchViewController.xib	2017-01-21 18:06:11 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SearchViewController" customModule="Remote" customModuleProvider="target">
+            <connections>
+                <outlet property="lbTitle" destination="Fs3-0O-h5s" id="bX5-R7-uuQ"/>
+                <outlet property="pickerView" destination="uQH-Hu-pKq" id="dVv-fM-Qne"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uQH-Hu-pKq">
+                    <rect key="frame" x="-1" y="95" width="602" height="216"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="216" id="h0N-rj-bVq"/>
+                    </constraints>
+                    <connections>
+                        <outlet property="dataSource" destination="-1" id="srM-Kj-fVC"/>
+                        <outlet property="delegate" destination="-1" id="29G-bI-VU1"/>
+                    </connections>
+                </pickerView>
+                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Search for" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fs3-0O-h5s">
+                    <rect key="frame" x="0.0" y="75" width="600" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="j81-5V-cKH"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="system" pointSize="10"/>
+                    <color key="textColor" red="0.1803921568627451" green="0.1803921568627451" blue="0.1803921568627451" alpha="1" colorSpace="calibratedRGB"/>
+                    <nil key="highlightedColor"/>
+                </label>
+            </subviews>
+            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+            <constraints>
+                <constraint firstItem="Fs3-0O-h5s" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="8Xs-Iz-XNF"/>
+                <constraint firstAttribute="trailing" secondItem="Fs3-0O-h5s" secondAttribute="trailing" id="EmD-yx-Afe"/>
+                <constraint firstAttribute="trailing" secondItem="uQH-Hu-pKq" secondAttribute="trailing" constant="-1" id="Ubw-DG-2RK"/>
+                <constraint firstItem="Fs3-0O-h5s" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="75" id="q8W-QU-hlc"/>
+                <constraint firstItem="uQH-Hu-pKq" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="-1" id="raw-ce-rql"/>
+                <constraint firstItem="uQH-Hu-pKq" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="40" id="v0C-VM-VFg"/>
+                <constraint firstItem="uQH-Hu-pKq" firstAttribute="top" secondItem="Fs3-0O-h5s" secondAttribute="bottom" id="vzP-AH-6sj"/>
+            </constraints>
+            <variation key="default">
+                <mask key="constraints">
+                    <exclude reference="v0C-VM-VFg"/>
+                </mask>
+            </variation>
+        </view>
+    </objects>
+</document>

=== added directory 'Remote/Classes/Controller/Service'
=== added file 'Remote/Classes/Controller/Service/ServiceViewController.swift'
--- Remote/Classes/Controller/Service/ServiceViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Service/ServiceViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,203 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+// MARK: - ServiceViewController
+
+class ServiceViewController: UIViewController {
+    
+    @IBOutlet weak var tableView: UITableView!
+    @IBOutlet weak var segProjectionState: UISegmentedControl!
+    
+    private var items = [ItemModel]()
+    private var dicItemRow = [String: Int]()
+    private let service: Service!
+    private var settingsPresenter: SettingsControllerPresenter!
+    private let delegate: ServiceViewControllerDelegate!
+
+    // MARK: Init
+    
+    init(settings: UserSettings, service: Service, delegate: ServiceViewControllerDelegate) {
+        self.service = service
+        self.settingsPresenter = SettingsControllerPresenter(settings: settings, pollAPI: service.pollAPI)
+        self.delegate = delegate
+        super.init(nibName: "ServiceViewController", bundle: nil)
+        self.setupNavigationBar()
+        self.setupTabBar()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.service = nil
+        self.delegate = nil
+        super.init(coder: aDecoder)
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        self.setupTableView()
+        self.setupSegmentedControl()
+    }
+    
+    // MARK: Setup
+    
+    private func setupNavigationBar() {
+        let btAdd = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(ServiceViewController.goToSearchViewController))
+        self.navigationItem.leftBarButtonItems = [
+            settingsPresenter.settingsBarButton(self),
+            btAdd
+        ]
+        
+        self.navigationItem.title = NSLocalizedString("Service", comment: "")
+        
+        let imagePrevious = UIImage(named: "ic_arrow-up")
+        let btPrevious = UIBarButtonItem(image: imagePrevious, style: .Plain, target: self, action: #selector(ServiceViewController.previousItem))
+        let imageNext = UIImage(named: "ic_arrow-down")
+        let btNext = UIBarButtonItem(image: imageNext, style: .Plain, target: self, action: #selector(ServiceViewController.nextItem))
+        self.navigationItem.rightBarButtonItems = [
+            btNext,
+            btPrevious
+        ]
+    }
+    
+    private func setupTabBar() {
+        self.tabBarItem.title = NSLocalizedString("Service", comment: "")
+        self.tabBarItem.image = UIImage(named: "ic_service")
+    }
+    
+    private func setupTableView() {
+        self.tableView.rowHeight = UITableViewAutomaticDimension
+        self.tableView.estimatedRowHeight = 44
+        self.tableView?.decelerationRate = UIScrollViewDecelerationRateFast
+    }
+    
+    private func setupSegmentedControl() {
+        self.segProjectionState.selectedSegmentIndex = -1
+    }
+    
+    // MARK: My methods
+    
+    @IBAction func sementedControlValueChanged() {
+        let index = self.segProjectionState.selectedSegmentIndex
+        if let state = ProjectionState(rawValue: index) {
+            self.service.displayAPI.projectionState(state) { _, error in
+                if let error = error, let message = verifyError(error) {
+                    self.displayNotification(message, isError: true)
+                }
+            }
+        }
+    }
+    
+    @objc private func goToSearchViewController() {
+        self.tabBarController?.selectedIndex = 3
+    }
+    
+    @objc private func previousItem() {
+        self.service.serviceAPI.previous() { _, error in
+            if let error = error, let message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            }
+        }
+    }
+    
+    @objc private func nextItem() {
+        self.service.serviceAPI.next() { _, error in
+            if let error = error, let message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            }
+        }
+    }
+    
+}
+
+// MARK: - UITableViewDatasource
+
+extension ServiceViewController: UITableViewDataSource {
+    
+    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return self.items.count
+    }
+    
+    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        var cell = tableView.dequeueReusableCellWithIdentifier("Cell")
+        
+        if cell == nil {
+            cell = UITableViewCell(style: .Default, reuseIdentifier: "Cell")
+            cell!.textLabel?.numberOfLines = 0
+        }
+        
+        let item = self.items[indexPath.row]
+        cell!.textLabel?.text = item.title
+        
+        return cell!
+    }
+    
+}
+
+// MARK: - UITableViewDelegate
+
+extension ServiceViewController: UITableViewDelegate {
+    
+    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+        self.service.serviceAPI.set(row: indexPath.row) { success, error in
+            if let error = error, let message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+                tableView.deselectRowAtIndexPath(indexPath, animated: true)
+            } else if success {
+                self.delegate.serviceViewControllerDidSelectItem(self.items[indexPath.row])
+            }
+        }
+    }
+}
+
+// MARK: - PollAPIServiceDelegate
+
+extension ServiceViewController: PollAPIServiceDelegate {
+    
+    func updateServiceList(items: [ItemModel]) {
+        self.items = items
+        self.tableView.reloadData()
+        
+        if items.count > 0 {
+            for i in 0...items.count-1 {
+                let item = items[i]
+                self.dicItemRow[item.id!] = i
+            }
+        }
+    }
+    
+    func updateSelectedItem(itemId id: String) {
+        if let selectedRow = self.dicItemRow[id] {
+            if selectedRow < self.items.count {
+                let indexPath = NSIndexPath(forRow: selectedRow, inSection: 0)
+                self.tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: .None)
+            }
+        }
+    }
+    
+    func updateProjectionState(state: ProjectionState) {
+        self.segProjectionState.selectedSegmentIndex = state.rawValue
+    }
+    
+}

=== added file 'Remote/Classes/Controller/Service/ServiceViewController.xib'
--- Remote/Classes/Controller/Service/ServiceViewController.xib	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Service/ServiceViewController.xib	2017-01-21 18:06:11 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11542" systemVersion="16D17a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_0" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11524"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ServiceViewController" customModule="Remote" customModuleProvider="target">
+            <connections>
+                <outlet property="segProjectionState" destination="qVP-Yj-p1e" id="AbF-Sl-UQx"/>
+                <outlet property="tableView" destination="A9d-va-PLe" id="Bt5-Zw-0Tg"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <tableView clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="A9d-va-PLe">
+                    <rect key="frame" x="0.0" y="0.0" width="600" height="556"/>
+                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <connections>
+                        <outlet property="dataSource" destination="-1" id="5bH-k5-YRz"/>
+                        <outlet property="delegate" destination="-1" id="hnH-to-FEe"/>
+                    </connections>
+                </tableView>
+                <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bfe-Nb-Utk">
+                    <rect key="frame" x="0.0" y="507" width="600" height="44"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="IBR-6A-7Oo"/>
+                    </constraints>
+                    <items>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="xr9-Is-Mr0"/>
+                        <barButtonItem style="plain" id="nQb-HK-2zw">
+                            <segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" segmentControlStyle="bar" selectedSegmentIndex="0" id="qVP-Yj-p1e">
+                                <rect key="frame" x="150" y="7" width="300" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <segments>
+                                    <segment title="Blank"/>
+                                    <segment title="Theme"/>
+                                    <segment title="Desktop"/>
+                                    <segment title="Show"/>
+                                </segments>
+                                <connections>
+                                    <action selector="sementedControlValueChanged" destination="-1" eventType="valueChanged" id="YOp-zI-OuN"/>
+                                </connections>
+                            </segmentedControl>
+                        </barButtonItem>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="Hbq-ee-VXX"/>
+                    </items>
+                </toolbar>
+            </subviews>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="A9d-va-PLe" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="0X6-ik-XVD"/>
+                <constraint firstAttribute="bottom" secondItem="A9d-va-PLe" secondAttribute="bottom" constant="44" id="OCH-8f-c0t"/>
+                <constraint firstAttribute="trailing" secondItem="A9d-va-PLe" secondAttribute="trailing" id="d2N-qY-fUC"/>
+                <constraint firstAttribute="trailing" secondItem="bfe-Nb-Utk" secondAttribute="trailing" id="hJC-R9-UFZ"/>
+                <constraint firstAttribute="bottom" secondItem="bfe-Nb-Utk" secondAttribute="bottom" constant="49" id="tgT-e3-frG"/>
+                <constraint firstItem="bfe-Nb-Utk" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="u5M-Sh-09Q"/>
+                <constraint firstItem="A9d-va-PLe" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="y6U-4G-9aw"/>
+            </constraints>
+            <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
+            <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+        </view>
+    </objects>
+</document>

=== added file 'Remote/Classes/Controller/Service/ServiceViewControllerDelegate.swift'
--- Remote/Classes/Controller/Service/ServiceViewControllerDelegate.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Service/ServiceViewControllerDelegate.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+
+protocol ServiceViewControllerDelegate {
+    func serviceViewControllerDidSelectItem(item: ItemModel)
+}

=== added directory 'Remote/Classes/Controller/Settings'
=== added file 'Remote/Classes/Controller/Settings/SettingsControllerPresenter.swift'
--- Remote/Classes/Controller/Settings/SettingsControllerPresenter.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Settings/SettingsControllerPresenter.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,53 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+
+import UIKit
+
+class SettingsControllerPresenter: NSObject {
+
+    let pollAPI: PollAPI
+    let settings: UserSettings
+    var fromController: UIViewController?
+
+    init(settings: UserSettings, pollAPI: PollAPI) {
+        self.pollAPI = pollAPI
+        self.settings = settings
+        super.init()
+    }
+
+    func settingsBarButton(fromController: UIViewController) -> UIBarButtonItem {
+        self.fromController = fromController
+        let imageSettings = UIImage(named: "ic_gear")
+        let btSettings = UIBarButtonItem(image: imageSettings, style: .Plain, target: self, action: #selector(SettingsControllerPresenter.presentSettingViewController))
+        return btSettings
+    }
+
+
+    func presentSettingViewController() {
+        let settingsController = SettingsViewController(settings:settings,  pollAPI: pollAPI)
+        let navigationController = UINavigationController(rootViewController: settingsController)
+        fromController!.showViewController(navigationController, sender: nil)
+    }
+}

=== added file 'Remote/Classes/Controller/Settings/SettingsViewController.swift'
--- Remote/Classes/Controller/Settings/SettingsViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Settings/SettingsViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,105 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import InAppSettingsKit
+
+class SettingsViewController: IASKAppSettingsViewController {
+
+    private let hiddenSettingsKeys = ["auth.userID", "auth.password"] as Set<NSObject>
+    private let pollAPI: PollAPI!
+    private let settings: UserSettings!
+
+    init(settings: UserSettings, pollAPI: PollAPI) {
+        self.pollAPI = pollAPI
+        self.settings = settings
+        super.init(style: .Grouped)
+        self.setupSettingViewController()
+        self.setupNavigationBar()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.pollAPI = nil
+        self.settings = nil
+        super.init(coder: aDecoder)
+    }
+    
+    // MARK: My methods
+    
+    private func setupSettingViewController() {
+        self.showDoneButton = false
+        self.showCreditsFooter = false
+        self.delegate = self
+        
+        let needsAuth = settings.needsAuth
+        self.hiddenKeys = needsAuth ? [] : self.hiddenSettingsKeys
+        
+        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(SettingsViewController.settingsDidChange(_:)), name: kIASKAppSettingChanged, object: nil)
+    }
+    
+    @objc private func settingsDidChange(notification: NSNotification) {
+        if let object = notification.object {
+            if object.isEqual("auth.needsAuth") {
+                let enabled = settings.needsAuth
+                let hiddenKeys = enabled ? [] : self.hiddenSettingsKeys
+                self.setHiddenKeys(hiddenKeys, animated: true)
+            }
+        }
+    }
+    
+    private func setupNavigationBar() {
+        self.navigationItem.title = NSLocalizedString("Settings", comment: "")
+        
+        let strSave = NSLocalizedString("OK", comment: "")
+        let btSave = UIBarButtonItem(title: strSave, style: .Done, target: self, action: #selector(SettingsViewController.dismissViewController))
+        self.navigationItem.rightBarButtonItem = btSave
+    }
+    
+    @objc private func dismissViewController() {
+        if !settings.validateServerIP() {
+            let title = NSLocalizedString("Error", comment: "")
+            let message = NSLocalizedString("Please, verify if the server IP is valid.", comment: "")
+            UIAlertView(title: title, message: message, delegate: nil, cancelButtonTitle: "OK")
+                .show()
+        } else if !settings.validateServerPort() {
+            let title = NSLocalizedString("Error", comment: "")
+            let message = NSLocalizedString("Please, verify if the server port is valid.", comment: "")
+            UIAlertView(title: title, message: message, delegate: nil, cancelButtonTitle: "OK")
+                .show()
+        } else {
+            self.synchronizeSettings()
+            self.dismissViewControllerAnimated(true, completion: nil)
+        }
+    }
+    
+}
+
+// MARK: - IASKSettingsDelegate
+
+extension SettingsViewController: IASKSettingsDelegate {
+    
+    func settingsViewControllerDidEnd(sender: IASKAppSettingsViewController!) {
+        // This is required...
+    }
+}

=== added directory 'Remote/Classes/Controller/Slides'
=== added file 'Remote/Classes/Controller/Slides/SlidesViewController.swift'
--- Remote/Classes/Controller/Slides/SlidesViewController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Slides/SlidesViewController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,193 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+// MARK: - SlidesViewController
+
+class SlidesViewController: UIViewController {
+    
+    @IBOutlet weak var tableView: UITableView?
+    @IBOutlet weak var segProjectionState: UISegmentedControl?
+    
+    private var slides = [SlideModel]()
+    private let service: Service!
+    private var settingsPresenter: SettingsControllerPresenter!
+    private let settings: UserSettings!
+
+    private let cellIdentifier = "cell_id"
+    
+    // MARK: Init
+    
+    init(settings: UserSettings, service: Service) {
+        self.service = service
+        self.settingsPresenter = SettingsControllerPresenter(settings: settings, pollAPI: service.pollAPI)
+        self.settings = settings
+        super.init(nibName: "SlidesViewController", bundle: nil)
+        self.setupTabBar()
+        self.setupNavigationBar()
+    }
+    
+    required init?(coder aDecoder: NSCoder) {
+        self.service = nil
+        self.settingsPresenter = nil
+        self.settings = nil
+        super.init(coder: aDecoder)
+    }
+    
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        setupTableView()
+        setupSegmentedControl()
+    }
+
+    override func viewWillAppear(animated: Bool) {
+        self.tableView?.decelerationRate = settings.preciseSlidesScroll ? UIScrollViewDecelerationRateFast : UIScrollViewDecelerationRateNormal
+        self.tableView?.bounces = !settings.preciseSlidesScroll
+    }
+
+    // MARK: Setup
+    
+    private func setupTabBar() {
+        self.tabBarItem.title = NSLocalizedString("Slides", comment: "")
+        self.tabBarItem.image = UIImage(named: "ic_slides")
+    }
+    
+    private func setupNavigationBar() {
+        self.navigationItem.leftBarButtonItem = settingsPresenter.settingsBarButton(self)
+        
+        self.navigationItem.title = NSLocalizedString("Slides", comment: "")
+        
+        let imagePrevious = UIImage(named: "ic_arrow-up")
+        let btPrevious = UIBarButtonItem(image: imagePrevious, style: .Plain, target: self, action: #selector(SlidesViewController.previousSlide))
+        let imageNext = UIImage(named: "ic_arrow-down")
+        let btNext = UIBarButtonItem(image: imageNext, style: .Plain, target: self, action: #selector(SlidesViewController.nextSlide))
+        self.navigationItem.rightBarButtonItems = [
+            btNext,
+            btPrevious
+        ]
+    }
+    
+    private func setupTableView() {
+        self.tableView?.rowHeight = UITableViewAutomaticDimension
+        self.tableView?.estimatedRowHeight = 44
+        self.tableView?.registerClass(SlideCell.self, forCellReuseIdentifier: cellIdentifier)
+    }
+    
+    private func setupSegmentedControl() {
+        self.segProjectionState?.selectedSegmentIndex = -1
+    }
+    
+    // MARK: My methods
+    
+    @IBAction func segmentedControlValueChanged() {
+        let index = self.segProjectionState?.selectedSegmentIndex
+        if let state = ProjectionState(rawValue: index!) {
+            self.service.displayAPI.projectionState(state) { _, error in
+                if let error = error, message = verifyError(error) {
+                    self.displayNotification(message, isError: true)
+                }
+            }
+        }
+    }
+    
+    @objc private func previousSlide() {
+        self.service.controllerAPI.livePrevious() { _, error in
+            if let error = error, message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            }
+        }
+    }
+    
+    @objc private func nextSlide() {
+        self.service.controllerAPI.liveNext() { _, error in
+            if let error = error, message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+            }
+        }
+    }
+    
+    
+}
+
+// MARK:- UITableViewDatasource
+
+extension SlidesViewController: UITableViewDataSource {
+    
+    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return self.slides.count
+    }
+    
+    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        let cell: SlideCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! SlideCell
+        let slide = self.slides[indexPath.row]
+        cell.textLabel?.text = slide.text
+        return cell
+    }
+}
+
+
+// MARK: - UITableViewDelegate
+
+extension SlidesViewController: UITableViewDelegate {
+    
+    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
+        let cell = tableView.cellForRowAtIndexPath(indexPath) as! SlideCell
+        cell.spinner.startAnimating()
+        service.pauseLoopPolling = true
+        self.service.controllerAPI.liveSet(row: indexPath.row) { _, error in
+            self.service.pauseLoopPolling = false
+            cell.spinner.stopAnimating()
+            print("slide selection error: \(error)")
+            if let error = error, let message = verifyError(error) {
+                self.displayNotification(message, isError: true)
+                tableView.deselectRowAtIndexPath(indexPath, animated: true)
+            }
+        }
+    }
+}
+
+
+// MARK: - PollAPISlidesDelegate
+
+extension SlidesViewController: PollAPISlidesDelegate {
+    
+    func updateSlides(slides: [SlideModel]) {
+        self.slides = slides
+        self.tableView?.reloadData()
+        self.tableView?.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: true)
+    }
+    
+    func updateSelectedSlide(row: Int) {
+        if self.slides.count > 0 {
+            let indexPath = NSIndexPath(forRow: row, inSection: 0)
+            self.tableView?.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: .None)
+        }
+    }
+    
+    func updateProjectionState(state: ProjectionState) {
+        self.segProjectionState?.selectedSegmentIndex = state.rawValue
+    }
+    
+}

=== added file 'Remote/Classes/Controller/Slides/SlidesViewController.xib'
--- Remote/Classes/Controller/Slides/SlidesViewController.xib	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Controller/Slides/SlidesViewController.xib	2017-01-21 18:06:11 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="11542" systemVersion="16D17a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_0" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11524"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SlidesViewController" customModule="Remote" customModuleProvider="target">
+            <connections>
+                <outlet property="segProjectionState" destination="TgF-ve-9tk" id="aVH-pn-mQ0"/>
+                <outlet property="tableView" destination="yep-A9-X97" id="4O9-6e-WsY"/>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <tableView clipsSubviews="YES" contentMode="scaleToFill" misplaced="YES" alwaysBounceVertical="YES" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="yep-A9-X97">
+                    <rect key="frame" x="0.0" y="0.0" width="600" height="556"/>
+                    <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <connections>
+                        <outlet property="dataSource" destination="-1" id="IUL-yU-aAA"/>
+                        <outlet property="delegate" destination="-1" id="yTW-CE-U9j"/>
+                    </connections>
+                </tableView>
+                <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bd2-0o-H00">
+                    <rect key="frame" x="0.0" y="507" width="600" height="44"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="nTo-A6-Fmk"/>
+                    </constraints>
+                    <items>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="fG6-Eu-Rwq"/>
+                        <barButtonItem style="plain" id="h48-u1-r58">
+                            <segmentedControl key="customView" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" segmentControlStyle="bar" selectedSegmentIndex="0" id="TgF-ve-9tk">
+                                <rect key="frame" x="150" y="7" width="300" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <segments>
+                                    <segment title="Blank"/>
+                                    <segment title="Theme"/>
+                                    <segment title="Desktop"/>
+                                    <segment title="Show"/>
+                                </segments>
+                                <connections>
+                                    <action selector="segmentedControlValueChanged" destination="-1" eventType="valueChanged" id="77C-OW-bAd"/>
+                                </connections>
+                            </segmentedControl>
+                        </barButtonItem>
+                        <barButtonItem style="plain" systemItem="flexibleSpace" id="9fy-o8-6Wl"/>
+                    </items>
+                </toolbar>
+            </subviews>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="bd2-0o-H00" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="9Nx-QJ-WEy"/>
+                <constraint firstAttribute="bottom" secondItem="yep-A9-X97" secondAttribute="bottom" constant="44" id="K91-G1-wno"/>
+                <constraint firstItem="yep-A9-X97" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="X3H-ky-s6L"/>
+                <constraint firstItem="yep-A9-X97" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="dOO-1W-uhe"/>
+                <constraint firstAttribute="trailing" secondItem="bd2-0o-H00" secondAttribute="trailing" id="fI8-6i-Wmd"/>
+                <constraint firstAttribute="trailing" secondItem="yep-A9-X97" secondAttribute="trailing" id="nFF-kd-XEt"/>
+                <constraint firstAttribute="bottom" secondItem="bd2-0o-H00" secondAttribute="bottom" constant="49" id="vnf-NL-Kyz"/>
+            </constraints>
+            <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
+            <simulatedTabBarMetrics key="simulatedBottomBarMetrics"/>
+        </view>
+    </objects>
+</document>

=== added directory 'Remote/Classes/Model'
=== added file 'Remote/Classes/Model/ItemModel.swift'
--- Remote/Classes/Model/ItemModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/ItemModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,49 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+class ItemModel: Mappable {
+    
+    var id: String?
+    var idInt: Int?
+    var plugin: String?
+    var title: String!
+    var selected: Bool?
+    var notes: String?
+    
+    init() {}
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.id       <- map["id"]
+        self.plugin   <- map["plugin"]
+        self.title    <- map["title"]
+        self.selected <- map["selected"]
+        self.notes    <- map["notes"]
+    }
+    
+}

=== added file 'Remote/Classes/Model/LiveModel.swift'
--- Remote/Classes/Model/LiveModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/LiveModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,40 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+class LiveModel: Mappable {
+    
+    var item: String!
+    var slides: [SlideModel]!
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.item <- map["results.item"]
+        self.slides <- map["results.slides"]
+    }
+    
+}

=== added file 'Remote/Classes/Model/PluginModel.swift'
--- Remote/Classes/Model/PluginModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/PluginModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,51 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+enum Plugin: String {
+    case Songs = "songs"
+    case Bibles = "bibles"
+    case Presentations = "presentations"
+    case Images = "images"
+    case Media = "media"
+    case Custom = "custom"
+    
+    func name() -> String {
+        switch self {
+        case .Songs:
+            return NSLocalizedString("Songs", comment: "")
+        case .Bibles:
+            return NSLocalizedString("Bibles", comment: "")
+        case .Presentations:
+            return NSLocalizedString("Presentations", comment: "")
+        case .Images:
+            return NSLocalizedString("Images", comment: "")
+        case .Media:
+            return NSLocalizedString("Media", comment: "")
+        case .Custom:
+            return NSLocalizedString("Custom Slides", comment: "")
+        }
+    }
+}

=== added file 'Remote/Classes/Model/PollModel.swift'
--- Remote/Classes/Model/PollModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/PollModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,108 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+enum ProjectionState: Int {
+    case Blank = 0
+    case Theme = 1
+    case Desktop = 2
+    case Show = 3
+    
+    func string() -> String {
+        switch self {
+        case .Blank:
+            return "blank"
+        case .Theme:
+            return "theme"
+        case .Desktop:
+            return "desktop"
+        case .Show:
+            return "show"
+        }
+    }
+}
+
+class PollModel: Mappable {
+    
+    var item: String!
+    var version: Int!
+    var isSecure: Bool!
+    var isAuthorised: Bool!
+    private var blank: Bool!
+    private var display: Bool!
+    private var theme: Bool!
+    var twelve: Bool!
+    var slide: Int!
+    var service: Int!
+    var projectionState: ProjectionState {
+        if blank.boolValue || display.boolValue || theme.boolValue {
+            if (blank.boolValue) {
+                return .Blank
+            }
+            else if display.boolValue {
+                return .Desktop
+            }
+            else {
+                return .Theme
+            }
+        }
+        else {
+            return .Show
+        }
+    }
+    
+    init() {
+        self.item         = ""
+        self.version      = 0
+        self.isSecure     = false
+        self.isAuthorised = false
+        self.blank        = false
+        self.display      = false
+        self.theme        = false
+        self.twelve       = false
+        self.slide        = 0
+        self.service      = 0
+    }
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.item         <- map["results.item"]
+        self.version      <- map["results.version"]
+        self.isSecure     <- map["results.isSecure"]
+        self.isAuthorised <- map["results.isAuthorised"]
+        self.blank        <- map["results.blank"]
+        self.display      <- map["results.display"]
+        self.theme        <- map["results.theme"]
+        self.twelve       <- map["results.twelve"]
+        self.slide        <- map["results.slide"]
+        self.service      <- map["results.service"]
+    }
+
+
+
+    
+}

=== added file 'Remote/Classes/Model/ServiceListModel.swift'
--- Remote/Classes/Model/ServiceListModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/ServiceListModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,41 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+class ServiceListModel: Mappable {
+    
+    private var intern: Dictionary<String, [ItemModel]>!
+    var results: [ItemModel] {
+        return intern["items"]!
+    }
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.intern <- map["results"]
+    }
+    
+}

=== added file 'Remote/Classes/Model/SlideModel.swift'
--- Remote/Classes/Model/SlideModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/SlideModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,44 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+class SlideModel: Mappable {
+    
+    var tag: String!
+    var html: String!
+    var text: String!
+    var selected: Bool!
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.tag      <- map["tag"]
+        self.html     <- map["html"]
+        self.text     <- map["text"]
+        self.selected <- map["selected"]
+    }
+    
+}

=== added file 'Remote/Classes/Model/SuccessModel.swift'
--- Remote/Classes/Model/SuccessModel.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/SuccessModel.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,38 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import ObjectMapper
+
+class SuccessModel: Mappable {
+    
+    var success: Bool!
+    
+    required init?(_ map: Map) {}
+    
+    func mapping(map: Map) {
+        self.success <- map["results.success"]
+    }
+    
+}

=== added file 'Remote/Classes/Model/UserSettings.swift'
--- Remote/Classes/Model/UserSettings.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Model/UserSettings.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,101 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+struct UserSettings {
+    
+    private let userDefaults: NSUserDefaults
+
+    init(defaults: NSUserDefaults) {
+        userDefaults = defaults
+    }
+
+    var serverIP: String {
+        return userDefaults.valueForKey("server.ip") as! String
+    }
+    
+    var serverPort: String {
+        return userDefaults.valueForKey("server.port") as! String
+    }
+    
+    var useHTTPS: Bool {
+        return userDefaults.boolForKey("server.useHTTPS")
+    }
+    
+    var needsAuth: Bool {
+        return userDefaults.boolForKey("auth.needsAuth")
+    }
+    
+    var userID: String {
+        return userDefaults.valueForKey("auth.userID") as! String
+    }
+    
+    var password: String {
+        return userDefaults.valueForKey("auth.password") as! String
+    }
+
+    var preciseSlidesScroll: Bool {
+        return userDefaults.boolForKey("ui.preciseScroll")
+    }
+    
+    func registerDefaults() {
+        userDefaults.registerDefaults([
+            "server.ip": "",
+            "server.port": "4316",
+            "server.useHTTPS": false,
+            "auth.needsAuth": false,
+            "auth.userID": "",
+            "auth.password": "",
+            "ui.preciseScroll": false
+        ])
+    }
+    
+    func resetDefaultsIfNeeded() {
+        guard let _ = NSURL(string: serverIP + ":" + serverPort) else {
+            userDefaults.removeObjectForKey("server.ip")
+            userDefaults.removeObjectForKey("server.port")
+            return
+        }
+    }
+    
+    func validateServerIP() -> Bool {
+        guard let _ = NSURL(string: serverIP) else {
+            return false
+        }
+        return true
+    }
+    
+    func validateServerPort() -> Bool {
+        guard let _ = Int(serverPort) else {
+            return false
+        }
+        return true
+    }
+    
+    func validateURL() -> Bool {
+        return validateServerIP() && validateServerPort()
+    }
+    
+}

=== added directory 'Remote/Classes/Network'
=== added file 'Remote/Classes/Network/API.swift'
--- Remote/Classes/Network/API.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/API.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,54 @@
+//
+//  OLPAPI.swift
+/******************************************************************************
+* OpenLP iOS Remote                                                           *
+* --------------------------------------------------------------------------- *
+* Copyright (c) 2008-2016 OpenLP Developers                                   *
+* --------------------------------------------------------------------------- *
+* Permission is hereby granted, free of charge, to any person obtaining a     *
+* copy of this software and associated documentation files (the "Software"),  *
+* to deal in the Software without restriction, including without limitation   *
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+* and/or sell copies of the Software, and to permit persons to whom the       *
+* Software is furnished to do so, subject to the following conditions:        *
+*                                                                             *
+* The above copyright notice and this permission notice shall be included in  *
+* all copies or substantial portions of the Software.                         *
+*                                                                             *
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+* DEALINGS IN THE SOFTWARE.                                                   *
+******************************************************************************/
+
+import Foundation
+
+class API {
+    let settings: UserSettings
+
+    init(settings: UserSettings) {
+        self.settings = settings
+    }
+
+    var base: String {
+        let serverIP = settings.serverIP
+        let serverPort = settings.serverPort
+        let useHTTPS = settings.useHTTPS
+        
+        var scheme = "http"
+        if useHTTPS {
+            scheme += "s"
+        }
+
+        let components: NSURLComponents = NSURLComponents()
+        components.scheme = scheme
+        components.host = serverIP
+        components.port = Int(serverPort)
+        components.path = "/api"
+        
+        return components.string!//strUrl
+    }
+}
\ No newline at end of file

=== added file 'Remote/Classes/Network/AddAPI.swift'
--- Remote/Classes/Network/AddAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/AddAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,49 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+
+class AddAPI: API {
+    
+    func addItem(item: ItemModel, plugin: Plugin, completion: (NSError?) -> Void) {
+        let url = self.base + "/" + plugin.rawValue + "/add"
+        var params: [String: AnyObject] = [
+            "request": [
+                "id": (item.id == nil ? String(item.idInt!) : item.id!)
+            ]
+        ]
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.response { _, _, _, error in
+                completion(error)
+            }
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/AlertAPI.swift'
--- Remote/Classes/Network/AlertAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/AlertAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,59 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+import AlamofireObjectMapper
+
+class AlertAPI: API {
+    
+    func alert(text: String, completion: ((Bool, NSError?) -> Void)? = nil) {
+        let url = self.base + "/alert"
+        var params: [String: AnyObject] = [
+            "request": [
+                "text": text
+            ]
+        ]
+        
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.responseObject { (response: Response<SuccessModel, NSError>) in
+                let error = response.result.error
+                var success = response.result.value?.success
+                if success == nil {
+                    success = false
+                }
+                
+                if let completion = completion {
+                    completion(success!, error)
+                }
+            }
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/ControllerAPI.swift'
--- Remote/Classes/Network/ControllerAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/ControllerAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,101 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+import AlamofireObjectMapper
+
+class ControllerAPI: API {
+    
+    func liveText(completion: ([SlideModel]?, NSError?) -> Void) {
+        let url = self.base + "/controller/live/text"
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<LiveModel, NSError>) -> Void in
+            let error = response.result.error
+            let slides = response.result.value?.slides
+            completion(slides, error)
+        }
+    }
+    
+    private func action(action: String, completion: ((Bool, NSError?) -> Void)?) {
+        let url = self.base + "/controller/live/" + action
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<SuccessModel, NSError>) -> Void in
+            let error = response.result.error
+            var success = response.result.value?.success
+            if success == nil {
+                success = false
+            }
+            
+            if let completion = completion {
+                completion(success!, error)
+            }
+        }
+    }
+    
+    func livePrevious(completion: ((Bool, NSError?) -> Void)? = nil) {
+        self.action("previous", completion: completion)
+    }
+    
+    func liveNext(completion: ((Bool, NSError?) -> Void)? = nil) {
+        self.action("next", completion: completion)
+    }
+    
+    func liveSet(row row: Int, completion: ((Bool, NSError?) -> Void)? = nil) {
+        let url = self.base + "/controller/live/set"
+        var params: [String: AnyObject] = [
+            "request": [
+                "id": "+\(row)"
+            ]
+        ]
+        
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.responseObject { (response: Response<SuccessModel, NSError>) in
+                let error = response.result.error
+                var success = response.result.value?.success
+                if success == nil {
+                    success = false
+                }
+                
+                if let completion = completion {
+                    completion(success!, error)
+                }
+            }
+        } else if let completion = completion {
+            completion(false, nil)
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/DisplayAPI.swift'
--- Remote/Classes/Network/DisplayAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/DisplayAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,50 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+import AlamofireObjectMapper
+
+class DisplayAPI: API {
+    
+    func projectionState(state: ProjectionState, completion: ((Bool, NSError?) -> Void)? = nil) {
+        let url = self.base + "/display/" + state.string()
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<SuccessModel, NSError>) in
+            let error = response.result.error
+            var success = response.result.value?.success
+            if success == nil {
+                success = false
+            }
+            
+            if let completion = completion {
+                completion(success!, error)
+            }
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/LiveAPI.swift'
--- Remote/Classes/Network/LiveAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/LiveAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,49 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+
+class LiveAPI: API {
+    
+    func goItemToLive(item: ItemModel, plugin: Plugin, completion: (NSError?) -> Void) {
+        let url = self.base + "/" + plugin.rawValue + "/live"
+        var params: [String: AnyObject] = [
+            "request": [
+                "id": (item.id == nil ? String(item.idInt!) : item.id!)
+            ]
+        ]
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.response { _, _, _, error in
+                completion(error)
+            }
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/PollAPI.swift'
--- Remote/Classes/Network/PollAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/PollAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,132 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+import Alamofire
+import AlamofireObjectMapper
+
+protocol PollAPIServiceDelegate {
+    func updateServiceList(items: [ItemModel])
+    func updateSelectedItem(itemId id: String)
+    func updateProjectionState(state: ProjectionState)
+}
+
+protocol PollAPISlidesDelegate {
+    func updateSlides(slides: [SlideModel])
+    func updateSelectedSlide(row: Int)
+    func updateProjectionState(state: ProjectionState)
+}
+
+class PollAPI: API {
+    
+    private var poll: PollModel = PollModel()
+    var serviceDelegate: PollAPIServiceDelegate?
+    var slidesDelegate: PollAPISlidesDelegate?
+    private let controllerAPI: ControllerAPI
+    private let serviceAPI: ServiceAPI
+
+    init(settings: UserSettings, controllerAPI: ControllerAPI, serviceAPI: ServiceAPI) {
+        self.controllerAPI = controllerAPI
+        self.serviceAPI = serviceAPI
+        super.init(settings: settings)
+    }
+    
+    func poll(completion: ((PollModel?, NSError?) -> Void)? = nil) {
+        let url = self.base + "/poll"
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<PollModel, NSError>) in
+            let error = response.result.error
+            let poll = response.result.value
+            
+            if let completion = completion {
+                completion(poll, error)
+            }
+
+            self.handlePollResponse(poll)
+         }
+    }
+
+
+    private func updateService(completion: ((Void) -> Void)? = nil) {
+        self.serviceAPI.list { items, error in
+            if let items = items {
+                self.serviceDelegate?.updateServiceList(items)
+            }
+
+            if let completion = completion {
+                completion()
+            }
+        }
+    }
+
+
+    private func updateSlides(completion: ((Void) -> Void)? = nil) {
+        self.controllerAPI.liveText { slides, error in
+            if let slides = slides {
+                self.slidesDelegate?.updateSlides(slides)
+            }
+
+            if let completion = completion {
+                completion()
+            }
+        }
+    }
+
+
+    private func updateProjectionState(projectionState: ProjectionState) {
+        self.serviceDelegate?.updateProjectionState(projectionState)
+        self.slidesDelegate?.updateProjectionState(projectionState)
+    }
+
+
+    private func handlePollResponse(poll: PollModel?) {
+        if let poll = poll {
+            if self.poll.service != poll.service {
+                self.updateService({
+                    self.serviceDelegate?.updateSelectedItem(itemId: poll.item)
+                })
+            }
+            else {
+                self.serviceDelegate?.updateSelectedItem(itemId: poll.item)
+            }
+
+            if self.poll.item != poll.item {
+                self.updateSlides({
+                    self.slidesDelegate?.updateSelectedSlide(poll.slide)
+                })
+            }
+            else {
+                self.slidesDelegate?.updateSelectedSlide(poll.slide)
+            }
+
+            updateProjectionState(poll.projectionState)
+
+            self.poll = poll
+        }
+    }
+
+}

=== added file 'Remote/Classes/Network/SearchAPI.swift'
--- Remote/Classes/Network/SearchAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/SearchAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,68 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+
+class SearchAPI: API {
+    
+    func search(plugin plugin: Plugin, text: String, completion: ([ItemModel]?, NSError?) -> Void) {
+        let url = self.base + "/" + plugin.rawValue + "/search"
+        var params: [String: AnyObject] = [
+            "request": [
+                "text": text
+            ]
+        ]
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.responseJSON { (response: Response<AnyObject, NSError>) in
+                var result = [ItemModel]()
+                if let value = response.result.value as? NSDictionary,
+                    results = value["results"] as? NSDictionary,
+                    items = results["items"] as? NSArray {
+                        for item in items {
+                            let item = item as! NSArray
+                            let i = ItemModel()
+                            if let id = item[0] as? String {
+                                i.id = id
+                            }
+                            if let idInt = item[0] as? Int {
+                                i.idInt = idInt
+                            }
+                            i.title = item[1] as! String
+                            i.plugin = plugin.rawValue
+                            result.append(i)
+                        }
+                }
+                let error = response.result.error
+                completion(result, error)
+            }
+        }
+    }
+    
+}

=== added file 'Remote/Classes/Network/Service.swift'
--- Remote/Classes/Network/Service.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/Service.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,48 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+
+class Service {
+    let serviceAPI: ServiceAPI
+    let pollAPI: PollAPI
+    let displayAPI: DisplayAPI
+    let controllerAPI: ControllerAPI
+    let alertAPI: AlertAPI
+    let searchAPI: SearchAPI
+    let liveAPI: LiveAPI
+    let addAPI: AddAPI
+    var pauseLoopPolling = false
+
+    init(settings: UserSettings) {
+        serviceAPI = ServiceAPI(settings: settings)
+        controllerAPI = ControllerAPI(settings :settings)
+        pollAPI = PollAPI(settings: settings, controllerAPI:controllerAPI, serviceAPI: serviceAPI)
+        displayAPI = DisplayAPI(settings: settings)
+        alertAPI = AlertAPI(settings :settings)
+        searchAPI = SearchAPI(settings :settings)
+        liveAPI = LiveAPI(settings: settings)
+        addAPI = AddAPI(settings: settings)
+    }
+}

=== added file 'Remote/Classes/Network/ServiceAPI.swift'
--- Remote/Classes/Network/ServiceAPI.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Network/ServiceAPI.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,101 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import Alamofire
+import AlamofireObjectMapper
+
+class ServiceAPI: API {
+    
+    func list(completion: ([ItemModel]?, NSError?) -> Void) {
+        let url = self.base + "/service/list"
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<ServiceListModel, NSError>) in
+            let error = response.result.error
+            let items = response.result.value?.results
+            completion(items, error)
+        }
+    }
+    
+    func set(row row: Int, completion: ((Bool, NSError?) -> Void)? = nil) {
+        let url = self.base + "/service/set"
+        var params: [String: AnyObject] = [
+            "request": [
+                "id": "+\(row)"
+            ]
+        ]
+        
+        if let jsonString = jsonString(fromDictionary: params) {
+            params = ["data": jsonString]
+            let request = Alamofire.request(.GET, url, parameters: params).validate(statusCode: 200...200)
+            if settings.needsAuth {
+                request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+            }
+            request.responseObject { (response: Response<SuccessModel, NSError>) in
+                let error = response.result.error
+                var success = response.result.value?.success
+                if success == nil {
+                    success = false
+                }
+                
+                if let completion = completion {
+                    completion(success!, error)
+                }
+            }
+        } else if let completion = completion {
+            completion(false, nil)
+        }
+    }
+    
+    private func nextPrevious(action: String, completion: ((Bool, NSError?) -> Void)? = nil) {
+        let url = self.base + "/service/" + action
+        let request = Alamofire.request(.GET, url).validate(statusCode: 200...200)
+        if settings.needsAuth {
+            request.authenticate(user: settings.userID, password: settings.password, persistence: .None)
+        }
+        request.responseObject { (response: Response<SuccessModel, NSError>) in
+            let error = response.result.error
+            var success = response.result.value?.success
+            if success == nil {
+                success = false
+            }
+            
+            if let completion = completion {
+                completion(success!, error)
+            }
+        }
+    }
+    
+    func previous(completion: ((Bool, NSError?) -> Void)? = nil) {
+        self.nextPrevious("previous", completion: completion)
+    }
+    
+    func next(completion: ((Bool, NSError?) -> Void)? = nil) {
+        self.nextPrevious("next", completion: completion)
+    }
+    
+}

=== added directory 'Remote/Classes/Util'
=== added file 'Remote/Classes/Util/ColorUtil.swift'
--- Remote/Classes/Util/ColorUtil.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Util/ColorUtil.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,29 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+let kGreyColor = UIColor(red: 207/255, green: 207/255, blue: 207/255, alpha: 1)
+let kBlueColor = UIColor(red: 0, green: 122/255, blue: 255/255, alpha: 1)
+let kRedColor = UIColor.redColor()

=== added file 'Remote/Classes/Util/DictionaryUtil.swift'
--- Remote/Classes/Util/DictionaryUtil.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Util/DictionaryUtil.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,35 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import Foundation
+
+func jsonString(fromDictionary dictionary: [String: AnyObject]) -> String? {
+    do {
+        let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions(rawValue: 0))
+        let jsonString = String(data: jsonData, encoding: NSUTF8StringEncoding)!
+        return jsonString
+    } catch {
+        return nil
+    }
+}

=== added file 'Remote/Classes/Util/ErrorUtil.swift'
--- Remote/Classes/Util/ErrorUtil.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Util/ErrorUtil.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+func verifyError(error: NSError) -> String? {
+    if error.code == -6003 {
+        return NSLocalizedString("User not authenticated.", comment: "")
+    } else if error.code == -999 {
+        return NSLocalizedString("Verify your credentials of authentication.", comment: "")
+    } else if error.code == -6004 {
+        return nil
+    }
+    return NSLocalizedString("An error occurred. Try again...", comment: "")
+}

=== added file 'Remote/Classes/Util/TabSwitchingToRightAnimationController.swift'
--- Remote/Classes/Util/TabSwitchingToRightAnimationController.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Util/TabSwitchingToRightAnimationController.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,66 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+class TabSwitchingToRightAnimationController: NSObject, UIViewControllerAnimatedTransitioning {
+    let tabBarController: UITabBarController
+
+    init(tabBarController: UITabBarController) {
+        self.tabBarController = tabBarController
+    }
+
+    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
+        return 0.5
+    }
+
+    func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
+        if let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey),
+            let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) {
+            let fromView = fromVC.view
+            let toView: UIView = toVC.view
+
+            let containerView = transitionContext.containerView()
+            containerView.addSubview(toView)
+
+            var fromViewEndFrame = fromView.frame
+            fromViewEndFrame.origin.x -= containerView.frame.width
+
+            let toViewEndFrame = transitionContext.finalFrameForViewController(toVC)
+            let toViewStartFrame = CGRectMake(toViewEndFrame.origin.x + toViewEndFrame.size.width, toViewEndFrame.origin.y, toViewEndFrame.size.width, toViewEndFrame.size.height)
+
+            toView.frame = toViewStartFrame
+
+            containerView.backgroundColor = UIColor.whiteColor()
+
+            UIView.animateWithDuration(transitionDuration(transitionContext), delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
+                toView.frame = toViewEndFrame
+                fromView.frame = fromViewEndFrame
+
+                }, completion: { (completed) -> Void in
+                    transitionContext.completeTransition(completed)
+            })
+        }
+    }
+}

=== added file 'Remote/Classes/Util/ViewControllerUtil.swift'
--- Remote/Classes/Util/ViewControllerUtil.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/Util/ViewControllerUtil.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,81 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+import CWStatusBarNotification
+
+
+extension UIViewController {
+    func wrapedInNavigationController(controller: UIViewController) -> UINavigationController {
+        let navigationController = UINavigationController(rootViewController: controller)
+        return navigationController
+    }
+
+    
+    func displayNotification(message: String, isError: Bool = false) {
+        let notifications = CWStatusBarNotification()
+        notifications.notificationLabelTextColor = UIColor.whiteColor()
+        notifications.notificationLabelBackgroundColor = isError ? kRedColor : kBlueColor
+        notifications.notificationAnimationInStyle = .Top
+        notifications.notificationAnimationOutStyle = .Top
+        notifications.displayNotificationWithMessage(message, forDuration: 3)
+    }
+
+
+    func animateRightBetweenTabViews(fromViewController: UIViewController, toViewController: UIViewController, completion:()->Void) {
+
+        let toView = toViewController.view
+        let fromView = fromViewController.view
+
+
+ 
+        // Add the toView to the tab bar view
+        fromView.superview!.addSubview(toView)
+
+
+        // Position toView off screen (to the left/right of fromView)
+        let screenWidth = UIScreen.mainScreen().bounds.size.width;
+
+        let offset =  screenWidth;
+        toView.center = CGPoint(x: fromView.center.x + offset, y: toView.center.y)
+
+        // Disable interaction during animation
+        view.userInteractionEnabled = false
+
+        UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
+
+            // Slide the views by -offset
+            fromView.center = CGPoint(x: fromView.center.x - offset, y: fromView.center.y);
+            toView.center   = CGPoint(x: toView.center.x - offset, y: toView.center.y);
+
+            }, completion: { finished in
+
+                // Remove the old view from the tabbar view.
+                fromView.removeFromSuperview()
+                self.view.userInteractionEnabled = true
+                completion()
+        })
+    }
+    
+}

=== added directory 'Remote/Classes/View'
=== added directory 'Remote/Classes/View/Settings'
=== added directory 'Remote/Classes/View/Settings/Cells'
=== added directory 'Remote/Classes/View/Settings/Cells/Button'
=== added directory 'Remote/Classes/View/Settings/Cells/Switch'
=== added directory 'Remote/Classes/View/Settings/Cells/Text field'
=== added file 'Remote/Classes/View/SlideCell.swift'
--- Remote/Classes/View/SlideCell.swift	1970-01-01 00:00:00 +0000
+++ Remote/Classes/View/SlideCell.swift	2017-01-21 18:06:11 +0000
@@ -0,0 +1,44 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+import UIKit
+
+class SlideCell: UITableViewCell {
+
+    let spinner: UIActivityIndicatorView
+
+    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
+        spinner = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
+        spinner.hidesWhenStopped = true
+        super.init(style: style, reuseIdentifier: reuseIdentifier)
+        accessoryView = spinner
+        textLabel?.numberOfLines = 0
+        textLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
+    }
+
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+}

=== added directory 'Remote/Resources'
=== added directory 'Remote/Resources/Assets.xcassets'
=== added directory 'Remote/Resources/Assets.xcassets/AppIcon.appiconset'
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json'
--- Remote/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,44 @@
+{
+  "images" : [
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small@xxxxxx",
+      "scale" : "2x"
+    },
+    {
+      "size" : "29x29",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small@xxxxxx",
+      "scale" : "3x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small-40@xxxxxx",
+      "scale" : "2x"
+    },
+    {
+      "size" : "40x40",
+      "idiom" : "iphone",
+      "filename" : "Icon-Small-40@xxxxxx",
+      "scale" : "3x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-60@xxxxxx",
+      "scale" : "2x"
+    },
+    {
+      "size" : "60x60",
+      "idiom" : "iphone",
+      "filename" : "Icon-60@xxxxxx",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx'
Binary files Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@xxxxxx	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/Contents.json'
--- Remote/Resources/Assets.xcassets/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added directory 'Remote/Resources/Assets.xcassets/Icons'
=== added file 'Remote/Resources/Assets.xcassets/Icons/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_alerts.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/ic_alerts.pdf'
Binary files Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/ic_alerts.pdf	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/Icons/ic_alerts.imageset/ic_alerts.pdf	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_arrow-down.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/ic_arrow-down.pdf'
--- Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/ic_arrow-down.pdf	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_arrow-down.imageset/ic_arrow-down.pdf	2017-01-21 18:06:11 +0000
@@ -0,0 +1,112 @@
+%PDF-1.3
+%����+4 0 obj
+<< /Length 5 0 R /Filter /FlateDecode >>
+stream
+xu��� �w������qw��/�1�����	���B����g�v��1KlI�A���#�!�PS()�	ˬL&�����P��%���endstream
+endobj
+5 0 obj
+111
+endobj
+2 0 obj
+<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 27 15]
+>>
+endobj
+6 0 obj
+<< /ProcSet [ /PDF ] /XObject << /Fm1 7 0 R >> >>
+endobj
+7 0 obj
+<< /Length 8 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType
+1 /BBox [0 0 27 15] /Resources 9 0 R /Group << /S /Transparency /CS 10 0 R
+/I true /K false >> >>
+stream
+xe��+�D�9]��{��B+�?������,�4$�(��\1C,h"J�ƴM�IA���XqF�޸��F�'9����c܄��+�W�;ΗU0�o��h\��<#����g)���q�:�F9�
+endstream
+endobj
+8 0 obj
+162
+endobj
+9 0 obj
+<< /ProcSet [ /PDF ] /ColorSpace << /Cs2 11 0 R >> >>
+endobj
+12 0 obj
+<< /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x��wTS��Ͻ7��" %� �HQ�I�P��&vDF)VdT�G�"cE��b���DE�k	��������P��4�X�\��X�ffG��=���HƳ�d���P&s��"7C$
+E�<~&�S��2���)2�12�	��"�l��ɘ�&�Y��4���Pޚ%ᣌ�\�%�|e�TI�����_�&�l�2E����r��x�g��Ib�טi�f�b1+���L���0��o�E%Ym�h����h�~S���A��Y�������U�m@�O��ޜ�^��'��s�k.+���oʿ�9��?�#I3eE妧�KD����9i������Q���h��<�X�.d
+��6'~�khu_}�9P�I�=C#$n?z}�1
+Ⱦ�h���s�2z��\�n�"S��dr%�,�߄l��t�
+4�.0,`
�3p���H�.Hi@�A>�
+A1�v�jpԁz�N�6p\W�p�G@
+��0ށi��A����B�ZyCAP8����@�*���CP=��]��4��
���ٰ;G�����>���,�_“@��X�X$!k�"��E�����H�q���a�����a�J0՘c�VL�3����X'�?v	6��-�`�`[�������~�\2n5��׌����x�*�����
+ߏƿ'�	Zk�!� $l$T���Q��Ot"�y�b)����I&N�I�$R$)���TIj"]&=&�!��dGrY@^O�$� _%�?P�(&OJEB�9J�@y@yC�R
�n�����ZO�D}J}/G�3������k��%O�חw�_.�'_!J�������V�F�=�IE���b�b�b�b��Q%�����O�@�%�!BӥyҸ�M�:��G7����e[�����`����������6�i^��)���"�f����LUo�՝�m�O�j&jaj��ϧ��ϝ_4��갺�z��=���U�4��n�ɚ�4ǴhZ�Z��^0���f%��9������ݫ=�c��Xg�N��]�.[7A�\�SwBOK/X/_�Q�Q�����G�[����A������a�a�������Z�;�c�q��&���I�I��S��`�ϴ�k�4�5�Ǣ��Y�F֠9���y��X���_,�-�Y)YXm���Ěk]c}džj�Φ����-����]���N����x���(��}������{'���ߝY��Σ�r��r�.d.�_xp��ە���m������G�ǔ���^���W�W�����:>�>�>�v��}/�v����	��FV>2	u���/�$\�B�5]�4�&�Ux~xw-bEDCĻH�����KwF���ME{E�EK�X,Y��Z� �={$vr����
+�3\�����Ϯ�_�q*���©��������]���������cI�II�A��_�����)3�ѩ����a��+]3='�/��0C���U�@ёL(sYf����L��%�Y�j��Ge��������~5f5wug�v�����֮\۹Nw]��� mH��ˍe���Q�Q��`h��B�BQ��l�l���jۗ"^�b���ܒ�}W����w��X�bY^�������a[q`i�d��2���J�jGէ�����{���׿����>��Pk�Am�������g_D����G���u��7�7�6�Ʊ�o��������<��}�����Z��։��6i{L{��ӝ�-?��|����Kϑ���9�w~���:Wt>����������^�۽�g�9];}�}�������_��m���}��}�����^���?�8��'
+O*��?����`ϳ�g���C/���ϩ�F�F�Gό�������)����~w��k��?Jި�9�d�wi獵�ޫ�?����?w|	����endstream
+endobj
+13 0 obj
+2612
+endobj
+11 0 obj
+[ /ICCBased 12 0 R ]
+endobj
+14 0 obj
+<< /Length 15 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x�U��>�oR�? XG��ůUS[���I�����$������O{�7�H<!
b{��IS�*�IH{�!&��b'S����^�=_i��U�����������M�ҳ�ԫ���.����������"O�}�k�K������}�x�'=N!?	����<��/�a_ȓ��"f����ar�/�q�1�.�u�X�����?׵��_��Ia�xQ�t�G__���{��M���%�#8�g������葨�i��}��_�qV�˳Z��#�d�����?�����:73��n��Aڮ�YQ��m��”��v��J���fzg���ڐ���y��:/���b����#N-bթJ;�P�2�ĽF6<%2Ȅ��a1"O�l�9�����-�Q�;ǯp�ɱX?S��g��7؛���
+rm:*�(�uT:NP�(�Q��͏����K+�14[�hu7��kk?����kt�m��nƶ�د�-�z����v�x#=\�
�Y�Rڱ����&���������n�_��;j�;�$}*}+��"�.9�⦅%��_a݊]h��5'SN������_������+�jM�{-�%��Tń�tY۟��R6��#�v\�喊x:��'H����������0::�L%��qVE���]~��I�v��Wٯ��)	|ʸ2]����(6w��‹�$��"���m�����[�}��چ�3�����S:��������D;7��7;_"���qx
+endstream
+endobj
+15 0 obj
+1047
+endobj
+10 0 obj
+[ /ICCBased 14 0 R ]
+endobj
+3 0 obj
+<< /Type /Pages /MediaBox [0 0 27 15] /Count 1 /Kids [ 2 0 R ] >>
+endobj
+16 0 obj
+<< /Type /Catalog /Pages 3 0 R /Version /1.4 >>
+endobj
+17 0 obj
+(Mac OS X 10.10.5 Quartz PDFContext)
+endobj
+18 0 obj
+(D:20150907222814Z00'00')
+endobj
+1 0 obj
+<< /Producer 17 0 R /CreationDate 18 0 R /ModDate 18 0 R >>
+endobj
+xref
+0 19
+0000000000 65535 f 
+0000005073 00000 n 
+0000000226 00000 n 
+0000004833 00000 n 
+0000000022 00000 n 
+0000000207 00000 n 
+0000000328 00000 n 
+0000000393 00000 n 
+0000000764 00000 n 
+0000000783 00000 n 
+0000004796 00000 n 
+0000003588 00000 n 
+0000000852 00000 n 
+0000003567 00000 n 
+0000003625 00000 n 
+0000004775 00000 n 
+0000004914 00000 n 
+0000004978 00000 n 
+0000005031 00000 n 
+trailer
+<< /Size 19 /Root 16 0 R /Info 1 0 R /ID [ <54ad588bb24b0fdf1811f0a0bc913603>
+<54ad588bb24b0fdf1811f0a0bc913603> ] >>
+startxref
+5148
+%%EOF

=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_arrow-up.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/ic_arrow-up.pdf'
Binary files Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/ic_arrow-up.pdf	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/Icons/ic_arrow-up.imageset/ic_arrow-up.pdf	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_gear.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/ic_gear.pdf'
Binary files Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/ic_gear.pdf	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/Icons/ic_gear.imageset/ic_gear.pdf	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_service.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_service.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/ic_service.pdf'
Binary files Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/ic_service.pdf	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/Icons/ic_service.imageset/ic_service.pdf	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "ic_slides.pdf"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/ic_slides.pdf'
Binary files Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/ic_slides.pdf	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/Icons/ic_slides.imageset/ic_slides.pdf	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage'
=== added file 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json'
--- Remote/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/LaunchImage.launchimage/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,43 @@
+{
+  "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "iPhone-6-Plus.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "iPhone-7.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
+    {
+      "orientation" : "portrait",
+      "idiom" : "iphone",
+      "filename" : "iPhone-4S.png",
+      "extent" : "full-screen",
+      "minimum-system-version" : "7.0",
+      "scale" : "2x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "retina4",
+      "filename" : "iPhone-5.png",
+      "minimum-system-version" : "7.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-4S.png'
Binary files Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-4S.png	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-4S.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-5.png'
Binary files Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-5.png	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-5.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-6-Plus.png'
Binary files Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-6-Plus.png	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-6-Plus.png	2017-01-21 18:06:11 +0000 differ
=== added file 'Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-7.png'
Binary files Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-7.png	1970-01-01 00:00:00 +0000 and Remote/Resources/Assets.xcassets/LaunchImage.launchimage/iPhone-7.png	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/Assets.xcassets/Logos'
=== added file 'Remote/Resources/Assets.xcassets/Logos/Contents.json'
--- Remote/Resources/Assets.xcassets/Logos/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Logos/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added directory 'Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset'
=== added file 'Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Contents.json'
--- Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Contents.json	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Contents.json	2017-01-21 18:06:11 +0000
@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "Logo.pdf",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
\ No newline at end of file

=== added file 'Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Logo.pdf'
--- Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Logo.pdf	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Assets.xcassets/Logos/openlp-logo.imageset/Logo.pdf	2017-01-21 18:06:11 +0000
@@ -0,0 +1,385 @@
+%PDF-1.5
%��+1 0 obj
<</Metadata 2 0 R/OCProperties<</D<</ON[5 0 R 40 0 R]/Order 41 0 R/RBGroups[]>>/OCGs[5 0 R 40 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<</Length 32481/Subtype/XML/Type/Metadata>>stream
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
+<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c111 79.158366, 2015/09/25-01:12:00        ">
+   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";>
+      <rdf:Description rdf:about=""
+            xmlns:xmp="http://ns.adobe.com/xap/1.0/";
+            xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/";
+            xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/";
+            xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#";
+            xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/";
+            xmlns:dc="http://purl.org/dc/elements/1.1/";
+            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/";>
+         <xmp:CreatorTool>Adobe Illustrator CC 2015 (Macintosh)</xmp:CreatorTool>
+         <xmp:CreateDate>2016-03-18T20:44:22-03:00</xmp:CreateDate>
+         <xmp:ModifyDate>2016-03-18T20:45:28-03:00</xmp:ModifyDate>
+         <xmp:MetadataDate>2016-03-18T20:45:28-03:00</xmp:MetadataDate>
+         <xmp:Thumbnails>
+            <rdf:Alt>
+               <rdf:li rdf:parseType="Resource">
+                  <xmpGImg:width>256</xmpGImg:width>
+                  <xmpGImg:height>256</xmpGImg:height>
+                  <xmpGImg:format>JPEG</xmpGImg:format>
+                  <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FUl8yedPKnlmFZNd1W3sC4rFDI4M0m4X91CvKWTc9EU5OMJS5BBkBzYbqv50lFD6R5euZbY&#xA;sQL/AFeaPRrZ07PGLjndOD2/cZk49FKX7N2nJqIx5/bswfVvzm80zLSTzFZ6eVYn09D057pyD+y1&#xA;xqLxx7eKw5nY+yj1HzP6nAydqQHI/Ifrpit/+Y9xPM0suo+YL5nryMuqmyjNeoEGnxWygf7LMqPZ&#xA;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&#xA;nWRS7FXYq7FXYq7FXYq7FXYq7FX/2Q==</xmpGImg:image>
+               </rdf:li>
+            </rdf:Alt>
+         </xmp:Thumbnails>
+         <xmpTPg:NPages>1</xmpTPg:NPages>
+         <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency>
+         <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
+         <xmpTPg:MaxPageSize rdf:parseType="Resource">
+            <stDim:w>471.126464</stDim:w>
+            <stDim:h>471.652944</stDim:h>
+            <stDim:unit>Points</stDim:unit>
+         </xmpTPg:MaxPageSize>
+         <xmpTPg:PlateNames>
+            <rdf:Seq>
+               <rdf:li>Cyan</rdf:li>
+               <rdf:li>Magenta</rdf:li>
+               <rdf:li>Yellow</rdf:li>
+               <rdf:li>Black</rdf:li>
+            </rdf:Seq>
+         </xmpTPg:PlateNames>
+         <xmpTPg:SwatchGroups>
+            <rdf:Seq>
+               <rdf:li rdf:parseType="Resource">
+                  <xmpG:groupName>Grupo de amostras padrão</xmpG:groupName>
+                  <xmpG:groupType>0</xmpG:groupType>
+               </rdf:li>
+            </rdf:Seq>
+         </xmpTPg:SwatchGroups>
+         <dc:format>application/pdf</dc:format>
+         <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
+         <xmpMM:DocumentID>uuid:43bacd78-51b1-a349-9552-a34560bf3908</xmpMM:DocumentID>
+         <xmpMM:InstanceID>uuid:8cf0c54c-2db2-8747-b2e5-b17bdba629f6</xmpMM:InstanceID>
+      </rdf:Description>
+   </rdf:RDF>
+</x:xmpmeta>
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                                                                                                    
+                           
+<?xpacket end="w"?>
endstream
endobj
3 0 obj
<</Count 1/Kids[7 0 R]/Type/Pages>>
endobj
7 0 obj
<</ArtBox[6.85759 8.71846 463.295 465.156]/BleedBox[0.0 0.0 471.126 471.653]/Contents 42 0 R/CropBox[0.0 0.0 471.126 471.653]/Group 43 0 R/LastModified(D:20160318204528-03'00')/MediaBox[0.0 0.0 471.126 471.653]/Parent 3 0 R/PieceInfo<</Illustrator 44 0 R>>/Resources<</ExtGState<</GS0 45 0 R/GS1 46 0 R>>/Properties<</MC0 40 0 R>>/Shading<</Sh0 47 0 R/Sh1 48 0 R/Sh2 49 0 R>>>>/Thumb 50 0 R/TrimBox[0.0 0.0 471.126 471.653]/Type/Page>>
endobj
42 0 obj
<</Filter/FlateDecode/Length 1644>>stream
+H��n\7��G���t�AͶ�q�qQ;m��}?�vzY
+ÀG����u��fyX�I���~����쐿Ǐ��~������I%�S7!�����m����5�f���s��]��X�M������cz2Un?�O���h�o���n]�*���=��.v�g��Z�xX���S���.�ܔ����Ϛ��&S	�K���������-�i�r���Zv-{�-�j3g�->�Jp�(T�jp�4���3�����r���Lt�,�K�5����퀚�m!���Y#��kbq6���BgK� �xWq��k|�$�/̹���=y��$ؚ�9)�����ZfKD#[J�&4b-M����u���D���́8W��mhP;V���O���fK삖l)N��h[���$�,`R�Aϸ�'�:)7xM{���P����b���'��4����'��`_IMd�/6J&@&���4��	r�N�7ke��h�����T�_=%C���q7QE�^�*"Hr��;b�6Bw<�`OH��M�ς4��|�J��!�2����q�;ğ��\*���"ݩ��B_��	��
+yS�t��Z��׭!&[蝔^UF�u�h��xȊ0ρC�|�}m
�)B�b��JT��_�5�sL���&�i�D������ݵ�.D$3
+4K�@�h�9r��ڂ���������Z���ȇ\ꨝFI4�C���_o^)Lx�Ԛ�����o=R�ެ��+a+7�����q8\p��?yrz�/2�dr���@�	#
+υ��f/�<����y7<�Ȼ��S��ܾ���P&J�C�
+h�2Y7<3�
+���mź����5��Z�awpȻ�+ͽg�Uӭ��zgP
+�k��%��	 ǹ������̤��V:�
+����q%�kz���B��Z_���S���{P+����G�ڼ���`>�AA�k*�=�Kz8]L
+q�x��[��Z�&k�a�<�x�kK�ĸ�|7y��+�1 ~^v.W�PP�a'+=�'�P����/�����U^B��pĢv�M�[�t��������n?XVF�)k��d�Kq���!��49�� Ʒ��iq�n�3�w�F*�U�3�����+���O]�sN
+�2�O1Z���r�+����2ņ�-m�*�!����g�Ʈ��hg�e�'e!�;��k�<D�����<dڔv߆,�Z�	 /�G晷ٝ�p��J����
Ku�	)O�.�e,����������[���c�q
endstream
endobj
43 0 obj
<</CS/DeviceRGB/I false/K false/S/Transparency>>
endobj
50 0 obj
<</BitsPerComponent 8/ColorSpace 51 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 58/Length 1068/Width 58>>stream
+8;W:k=aKBV%#(H(fLt^,?nF5h-%!1.&*mXc=%?`lOOj8u\5&*61bb/7F'2-GpYG9s
+WZ6EUI]Je%+(ZVlaMR0&K%0Ve]3&_Sd<`F03Vo[q3JGDqjH\Jf@eX-MHj,W`9Xcb.
+fm>$1%#[HCjP[9_dd&(>IbbS(Uj98.h'pLk^+P22ha)g$QfCmiVTU@G4/>/ZdW;3r
+V%S[%M$]`ACRe-Eh/&>oVG=Bo8alFLi/VKGhq@-_?Yn_08S^lI@[F67^k+ILdtLhW
+a2BB85H#W&2p$'Ee./9Z,"(CM6o@Q4C8@`g\#':o@KJKc/FQ5o=M`f`Uq#[94N`X>
+GME(ZTK:jLAaWOVqR#iWW3<Q*KG54X`E5rBm;A%Lfeh-LoM/'2.X),!UYV44g,[kg
+2259M-GHC\Q)r9d3C/X_N_Q1<abY-7hb*!$R96FqOP>qO8.W+bRTiAQ^'M.GQV^>3
+gcNW>Tca+.f>tfqZoc#[E:]5?R![8F,dltdJ=Y=;P#K=1'!<p0iM!]B&`chap6dX"
+6R%^&%Dt;+$;5YJ)fkNDPAa?2D'0qQ@h=OTMQi>^*Ll..')f38_U-@PHh7o!H(G;L
+11aL<Bc7l5#EA`I*1g>p*nR1./.pU21GRTG1FMe]M=^)8>CKf9'L"'@2S!j4A&9h*
+&P/u5oqWWXHT1f'\SY-TerI47Z<L.a2sM5HM"!%rX*:[\Y9Ij)1.PLL<kL0`[\L2^
+)C/mZX@++4?1ZPr7,,;aGJ6I@]hk(HLf?I7mpbg%IBR."k/lL3[A0&.]sC>NqJJ15
+4sf?J26:'?c>]$E4Kh,=/llbI6*g4_cKgsm/CR@,d0r/nVu9eojEJ%,5@&50k&MfJ
+qdtc7Bp+d1jml*NWCY6q-!QkPm:Eu"LJu;L;U_"Cs('5N9/!$]l3X07PG\;-+Wg3$
+h!3.)YbB-N"LRtZ=jre77qp*i]rL8[<!&qBQ?&32CO+C:Vc257]fZN+nLU3/LNDiT
+4R9@830,V'l#F'A#<+\#do?nfk,0GL5+JG97*H`p'()(mk3#Zj'8KMNj\J2hO1CZs
+AH)l7@dLN/~>
endstream
endobj
51 0 obj
[/Indexed/DeviceRGB 255 52 0 R]
endobj
52 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
+VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
+PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
endstream
endobj
47 0 obj
<</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 53 0 R/ShadingType 2>>
endobj
48 0 obj
<</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 54 0 R/ShadingType 2>>
endobj
49 0 obj
<</AntiAlias false/ColorSpace/DeviceRGB/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 55 0 R/ShadingType 2>>
endobj
55 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[56 0 R]>>
endobj
56 0 obj
<</C0[1.0 1.0 1.0]/C1[1.0 1.0 1.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>>
endobj
54 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[57 0 R]>>
endobj
57 0 obj
<</C0[0.0 0.0509804 0.14902]/C1[0.313726 0.498039 0.854902]/Domain[0.0 1.0]/FunctionType 2/N 1.0>>
endobj
53 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[58 0 R]>>
endobj
58 0 obj
<</C0[0.803922 0.803922 1.0]/C1[0.921569 0.921569 1.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>>
endobj
40 0 obj
<</Intent 59 0 R/Name(svg5740)/Type/OCG/Usage 60 0 R>>
endobj
59 0 obj
[/View/Design]
endobj
60 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>>
endobj
45 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>>
endobj
46 0 obj
<</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 61 0 R/Type/ExtGState/ca 1.0/op false>>
endobj
61 0 obj
<</G 62 0 R/S/Luminosity/Type/Mask>>
endobj
62 0 obj
<</BBox[-32768.0 32767.0 32767.0 -32768.0]/Group 63 0 R/Length 118/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 45 0 R>>/Shading<</Sh0 64 0 R>>>>/Subtype/Form>>stream
+q
+0 g
+/Perceptual ri
+/GS0 gs
+-0.5867751 135.2120819 -124.931221 -0.6350621 235.2438965 259.0587769 cm
+BX /Sh0 sh EX Q
+
endstream
endobj
63 0 obj
<</CS/DeviceGray/I false/K false/S/Transparency/Type/Group>>
endobj
64 0 obj
<</AntiAlias false/ColorSpace/DeviceGray/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 65 0 R/ShadingType 2>>
endobj
65 0 obj
<</Bounds[]/Domain[0.0 1.0]/Encode[0.0 1.0]/FunctionType 3/Functions[66 0 R]>>
endobj
66 0 obj
<</C0[0.25098]/C1[0.0]/Domain[0.0 1.0]/FunctionType 2/N 1.0>>
endobj
44 0 obj
<</LastModified(D:20160318204528-03'00')/Private 67 0 R>>
endobj
67 0 obj
<</AIMetaData 68 0 R/AIPDFPrivateData1 69 0 R/AIPDFPrivateData2 70 0 R/AIPDFPrivateData3 71 0 R/AIPDFPrivateData4 72 0 R/ContainerVersion 11/CreatorVersion 19/NumBlock 4/RoundtripVersion 19>>
endobj
68 0 obj
<</Length 1439>>stream
+%!PS-Adobe-3.0 
%%Creator: Adobe Illustrator(R) 17.0
%%AI8_CreatorVersion: 19.2.0
%%For: (Daniel Borges) ()
%%Title: (Logo.pdf)
%%CreationDate: 18/03/16 20:45
%%Canvassize: 16383
%%BoundingBox: 520 281 977 738
%%HiResBoundingBox: 520.04250756004 281.160003506366 976.479786920048 737.597282866374
%%DocumentProcessColors: Cyan Magenta Yellow Black
%AI5_FileFormat 13.0
%AI12_BuildNumber: 111
%AI3_ColorUsage: Color
%AI7_ImageSettings: 0
%%RGBProcessColor: 0 0 0 ([Registro])
%AI3_Cropmarks: 513.184913904822 272.441538689962 984.311377583494 744.094482421875
%AI3_TemplateBox: 525.5 371.594482421875 525.5 371.594482421875
%AI3_TileBox: 469.248145744157 128.268010555919 1028.24814574416 911.268010555918
%AI3_DocumentPreview: None
%AI5_ArtSize: 14400 14400
%AI5_RulerUnits: 2
%AI9_ColorModel: 1
%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI17_Begin_Content_if_version_gt:17 1
%AI9_OpenToView: 123.330939917354 819.760961454131 0.787474337788505 1288 697 26 0 0 -5 38 0 0 0 1 1 0 1 1 0 1
%AI17_Alternate_Content
%AI9_OpenToView: 123.330939917354 819.760961454131 0.787474337788505 1288 697 26 0 0 -5 38 0 0 0 1 1 0 1 1 0 1
%AI17_End_Versioned_Content
%AI5_OpenViewLayers: 7
%%PageOrigin:220 -24.905517578125
%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
%AI9_Flatten: 1
%AI12_CMSettings: 00.MS
%%EndComments

endstream
endobj
69 0 obj
<</Length 27425>>stream
+%%BoundingBox: 520 281 977 738
%%HiResBoundingBox: 520.04250756004 281.160003506366 976.479786920048 737.597282866374
%AI7_Thumbnail: 128 128 8
%%BeginData: 27242 Hex Bytes
%0000330000660000990000CC0033000033330033660033990033CC0033FF
%0066000066330066660066990066CC0066FF009900009933009966009999
%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
%6666006666336666666666996666CC6666FF669900669933669966669999
%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
%9933009933339933669933999933CC9933FF996600996633996666996699
%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
%000011111111220000002200000022222222440000004400000044444444
%550000005500000055555555770000007700000077777777880000008800
%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
%524C45FD33FFA9AF7D7E595952532E59535953595359FD05537E7D7EA8FD
%64FF7D7D52535359535A5A7E5A5A2F5A365A2F5A355A595A5A7E535A5359
%2E53597EA8FD5BFFA859535359537E5A5A30360D0E070D0D0D070D0D0D07
%0D070D070D070D0D36595A5A7E5353537EA8FD55FFA8535353595A5A3030
%070D070D070D0D0D070D070D070D070D070D070D060D060D06070607062F
%535A53532E7D84FD50FF7D59537E5A5B30360D0E0D300D300D300D300D30
%0D0D0D300D0D0D2F0D0D070D0D0D070D070D060D060D062F597E53595384
%FD4BFFA87D2E595A5A300E0D0E0D300D0E0D0E0D0D0D0E0D0D070D0D0D07
%0D070D070D070D060D070D060D060D060D06070607062F2F7E535353FD48
%FF5353598536360E300D360E300D300D300D300D300D300D0D0D30FD060D
%070D0D0D070D070D060D070D060D060D060D060606595A7E2E7DA8FD42FF
%A859285A5A360D0E0D300D0E0D300D0E0D0EFD060D070D070D070D070D07
%0D070D060D070D060D060D060D0607060D06060607FD05065A535353FD40
%FF7D5359FFFF850E360E360E360D360E300D360D300D300D300D300D300D
%300D0D0D2FFD060D070D0D0D070D070D060D060D060D060D060D0606062F
%5A7E2E84FD3CFFA82853A8FFFD04A9300E0D300D0E0D300D0E0D300D0D0D
%0EFD060D070D070D070D070D060D070D060D060D060D0607060D0607060D
%FD08062E7E5353A8FD39FF7D28A9FFFFA9FFA9FFA9FF360E0D360E300D30
%0D300D300D300D300D0E0D30FD060D070D0D0D070D0D0D070D070D060D06
%0D060D060D060D0607060DFD0506597D5353FD36FFA82E53FD05A9A8FD04
%A9FF5A0E0D300D0E0D0E0D0D0D0E0D0D070D0D0D070D070D070D070D060D
%070D060D060D060D0607060D06070607FD0C06000653592EA8FD33FF7D2F
%7EFFA9FFA9FFA9FFA9FFA9FFA9FF7E360D300D360D300D300D300D300D30
%0D300D0D0D300D0D0D2F0D0D070D0D0D070D070D060D070D060D060D060D
%060D060D0606060DFD04062F7E2E7EFD31FF5253A9FFA9A9A9FFA9A9A9FF
%A9A9A9FFA9FF7E360D0E0D300D0E0D30FD060D070D0D0D070D070D070D07
%0D060D060D060D060D060D0607060D06060607FD0D067E5353FD2FFF287E
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA95A0D300D300D0E0D300D0E
%0D300D0D0D2F0D0D070D0D0D070D0D0D070D070D060D070D060D060D060D
%060D060D0606060DFD09065A5953A8FD2BFFA8287EFD04A9A8A9A9A9A8A9
%A9A9A8FFA9A9A8FFA9FFA95A0D0D0D0E0D0D070D0D0D070D070D070D070D
%070D070D060D060D060D060D060D0607060D06060607FD0E060006002F59
%53A8FD29FFA828A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%FF850D300D300D300D300D300D0D0D300D0D0D2F0D0D070D0D0D070D070D
%060D070D060D060D060D060D060D0607060DFD0A06002F7E537EFD27FF84
%06FD08A9FFA9A9A9FFA9A9A9FFA9A9A9FFA9A9A9FFCBA90D0E0D0D0D0E0D
%0D070D0D0D070D070D070D070D060D070D060D060D060D0607060D060606
%07FD0E060506060600287D2F7DFD25FF8428A9A9FFA9AFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFAF2F0E0D300D300D0D0D30FD060D
%070D0D0D070D070D060D070D060D060D060D060D060D0607060DFD0E0600
%067E537DFD23FF84287F5AFD05A9A8A9A9A9A8A9A9A9A8AFA9A9A8FFA9A9
%A8FFA9A9A9FFA9FF540D070D070D070D070D070D070D070D060D060D060D
%060D060D0607060D06060607FD0E0605060506000600060006592F7DFD21
%FFA8288536363085A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FF7E0E0D300D300D300D2F0D2F0D0D0D2F0D0D070D0D0D070D
%070D060D060D060D060D060D060D060D0606060DFD0C0605067E5384FD1F
%FFA8287F0E360E360E377ECBA9AFA9A9A9FFA9A9A9FFA9A9A9FFA9A9A9FF
%A9FFA9FFA9FFA9FF842F072F0D0D070D0D0D070D070D070D070D060D060D
%060D060D060D0607060D06060607FD0E0605060506000600065953A8FD1E
%FF28853636303736360E365AA9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA93607300D2F0D2F0D2F0D2F0D0D072F0D0D072F07
%0D060D070D060D060D060D060D060D0606060DFD0E06050605287E53A8FD
%1CFF287E36360E360E360E360E360E7FA8FFA9A9A8A9A9A9A8FFA9A9A8FF
%A9A9A9FFA9FFA9FFA9FFA9FFA95A070D0D0D072F070D070D070D060D060D
%060D060D060D0607060D06060607FD0E0605060506000605060006002859
%53FD1BFF535A5B37363730373637303736360E5B85FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFF850D2F0D300D2F0D2F0D2F0D2F
%0D2F072F0D2F072F072F062F060D062F060D062F060D062F060C060D0606
%060CFD0A0600535959FD19FF59535A360E3630360E3630360E3630360E36
%5AA9A9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFCBA92F0D
%072F0D2F072F070D072F070D062F060D062F060D060D0607060D0606060D
%FD0E0605060506050605060059537DFD17FFA82FA9853636303736373037
%36363036303630363085A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFFFFF2F0D0D2F0D2F0D2F0D2F072F0D2F072F0D2F062F072F062F
%062F062F062F062F060C062F0606062EFD0A0605060606007E2EA8FD15FF
%CF2F7EA9A9A95A360E3630360E3630360E3630360E360D367EFFA9A9A8FF
%A9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FF590D072F072F072F072F
%062F060D062F060D062F060D060D0606060DFD0E06050605060506050600
%060505057E2EFD15FF7D53FFA9FFA9FFA985363730373637303736363036
%303630365AA9CBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA9FFFFFF
%7E2F0D2F0D2F0D2F0D2F2F2F0D2F0D2F072F0D2F062F062F062F062F062F
%062F062F062E062F0628062E0628062806060628060605062E7E53FD13FF
%A828FD09A95A360E36303630363036303630362F36307EA9FFA9A9A9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF7E2F072F072F0D2F062F072F06
%2F062F062F062F062F060D062F0606062F06060628FD0A06050605060506
%050605065953A8FD12FF2E85A9AFA9A9A9FFA9A9A9FFA985303636363036
%3036303630363036305A7EFFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFF
%A9FFFFFFA85A0D2F0D2F2F2F0D2F0D2F072F0D2F062F062F062F062F062F
%062F062F062E062F062E062E062806280628062806280528060605287E53
%FD11FF5953A9A9A8A9A9A9A8A9A9A9A8CBA9A95A360E36303630362F3630
%362F360D3030A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA8
%5A062F062F072F062F062F062F062F062F062F062F062E062F0606062E06
%0606280606062806060506050605060506050605060053537DFD0FFFA853
%A9FFA9FFA9A9A9FFA9FFA9FFA9FFA9FFA985FD0436305A30363036303630
%363085A9FFA9FFA9FFA9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFF840DFD0B
%2F072F2F2F062F2E2F062F062F062F062F062F062E062F062E062E062806
%2E0628062806280528057E2EFD0FFF5953FFFD0FA9FFA9A95A3630363036
%30362F362F362F360D367EFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFFFA82F2F0D2F062F072F062F062F062F062F062F062F062F062E062F
%0628062E0628062806280628060605280606052805060506285953FD0EFF
%28FD06A9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA985363630363036303630
%362F3630305AA9FFFFA9FFA9FFA9FFA9FFA9FFFFFFA9FFFFFFA9FFFFAFFD
%082F072F2F2F062F2E2F062F282F062F062F062F062E062F062E062E0628
%062E0628062806280528062805065953A8FD0CFF525AA9A9A8A9A9A9A8A9
%A9A9A8A9A9A9A8A9A9A9A8FD05A95A360D362F362F362F302F362F300D7E
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFCBFF532F062F062F062F
%062F062F062F062F062F062E062F0628062E062806280628062806280528
%06280528050605280506002E5353FD0BFFA853A9AFA9FFA9A9A9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9853636305A3036305A30362F362F
%5A7EFFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD05FF7E2F0DFD072F2E2F2F
%2F282F2E2F282F282F062F282F062F282E062F282E062E062E062E062806
%2E0628052E057E2FFD0BFF7D53FFFD13A9FFA9A9A9FFA9FFA9A97E360D36
%2F362F362F302F362F2F2FA9CBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FF842F062F2F2F062F282F062F062F062F062F062F062E062F062E062E
%0628062E06280628062805280628052805280506285953FD0AFF2EFD06A9
%FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA985303630
%362F5A30362F5A2F302F7EA9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9
%FFA95906FD072F282F2E2F282F2E2F282F282F062F282E062F282E062E28
%2E062E2828062E06280628062805285953FD09FF7D53A9A9A8A9A9A9A8A9
%A9A9A8A9A9A9A8A9A9A9A8A9A9A9A8A9A9A9A8FFA9A9A8FFA9A97E5A2F30
%2F362F302F302F2F0D367EFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A95A062F282F062F062F062F062F062F062E062F062E062E0628062E0628
%062806280528062805280528052805280053537EFD08FF537EFFA9FFA9A9
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9853636305A2F5A2F5A2F5A2F3053A9FFFFA9FFFFFFA9FFFFFFA9FFFFFF
%A9FD04FF84FD062F2E2F2F2F2E2F2E2F282F2E2F282F282F282F282E282F
%282E062E282E062E282E062E2828062E057E53FD07FFA828FFFD13A9AFA9
%A9A9FFA9A9A9FFA9A9A9FFA9A9A9FFA9A97E5A2F302F362F302F362F2F2F
%7EA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFCBA92F2F282F2E2F282F28
%2F062F282F062F282E062F282E062E0628062E0628062E06280528062805
%28052805285353A8FD06FF597EA9FFA9A9A9AFA9A9A9FFA9A9A9FFA9AFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9855A362F5A2F
%362F5A2F362F5A7EFD05FFA9FFFFFFA9FFFFFFA9FD04FFAF2F2F2E2F2F2F
%2E2F2E2F282F2E2F282F282F282F282F282F282E282E282E062E282E062E
%2828062E2828052E597DFD05FFCF535A5B7EFD07A9A8A9A9A9A8A9A9A9A8
%A9A9A9A8A9A9A9A8AFA9A9A8FFA9A9A8FFA9A9A9FFA9FFA9FF7E5A2F302F
%2F2F30FD052FA8A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF532F062F28
%2F282F282F062F282E062F282E062E062E062E0628062E06280628062805
%28052805280528007D2EFD05FFA85385365B5A8585AFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFF
%A9A95A362F5A2F5A2F5A2F302F7EA9FD05FFA9FFFFFFA9FFFFFFA9FFFFFF
%7EFD072F2E2F2E2F2E2F2E2F282F2E2F282F282F282F282E282E282E282E
%282E282E282E28285359A8FD04FF535A5A5A365B365A368584A9A9FFFD07
%A9AFA9A9A9FFA9A9A9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FF
%7E5A2F302F2F2F36FD042F7EFFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FF7E
%2F282F282F282F282F282F282F282E282F282E282E282E062E2828062E28
%28062E282805280528052E537DFD04FF535A5B5A5B365B5A5B365B5A8585
%AFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9A953362F5A2F5A2F5A2F2F53A9FD04FFA9FFFFFFA9FF
%FFFFA9FFFFFFA8592E2F2E2F2E2F2E2F2E2F282F2E2F282F282F282F282E
%282F282E282E282E282E282E282E2828057E53FD04FF287F305B365A365B
%365A365A365A36857EA9A9FFA9A9A8A9A9A9A8A9A9A9A8FFA9A9A8FFA9A9
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFCBFF7E5AFD092F5AA8FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA859062F282F282F282F282E282F282E282E282E062E
%282E062E2828062E2828052E0628052805275353A8FFFF7D595B5B5A5B5A
%5B5A5B5A5B5A5B5A5B365B5A8585FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFCBFFFFA9595A2F5A2F5A2F592F
%5A7EFD05FFA9FFFFFFCBFFFFFFA9FFFF7E2E2F2F2F2E532E2F2E532E2F2E
%2F2E2F282F2E2F282F282E282F282E282E282E282E282E27595384FFFF7D
%535B365B365A365B365A365B365A365B5A5B365A5A7E7EAFA9FFA9FFA9A9
%A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFF7E5A
%2F2F2F59FD052F84A9FFA9FFA9FD07FFA9FFFF84282F2E2F282F282F282F
%282F282F2E2F282F282E282F282E282E2828282E2828052E2828287D59FF
%FF527F3637365B5A5B5A5B5A5B5A5B5A615A5A28280000F800055359A9A9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA9FFFF
%FFA9A9592F2F5A2F592F532F5AA8FFFFFFA97D5253525352FFA9FFFFA9FD
%042F2E532E2F2E2F27282728272805282728052E282E282E282E282E282E
%282805055359FFA853360E0E360E36305A365B5A5A365B2E00F8F8002806
%2E0505F8F8F8527EFFA9FFA9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FF7E5AFD082F59FFFFFF27FD04F800A8FFA9FFCB
%FF532F282F282F282F2800F8F8F800F8F8F800F800F8000528282E282805
%280000F800F8532EFFA953A95B5B30370E370E373637375A05F800535A5B
%5A615A615A5A2F28F8052F8585FFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FD04FFA95A532F5A2F592F5353A9FF52F800F8
%0000FD07FF7E2F2E532E532E530000F8050000F8050000F8050000F82828
%2800060005000500002E7EA87D53A9CBA9A97E5B36360E140E2FF8000636
%365BFD065A365B5A2FF8F8065A5A8584A9A9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF845AFD072F5A2700F800F805A8
%FFA9FFA9FFA9FF7E2F282F2E2F2800F800F800F800F800F800F800F800F8
%050000000500000005F828537E7E5AFFA9A9A9CBA9FFA9855B53F8000D37
%0E360E373636365B5A5A5A5B5A5A05F8285A305A5A8584FFCBFFA9FFA9FF
%A9FFA9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFA959592F532F59
%2F28F805000000FFFFFFA9FFFFFFA9FFA85928532F53F8000000F8000005
%F800F800F8050000F8270505000500050005005959537EA9A9A8FD06A9A8
%F800598530360E0E0E360E300D360E362F36365A00F8285A2F5A305A5A85
%85FFA9FFA9FFA9FFA9FD0BFFA9FFA9FFA9FFA9FFCBFF7E7E2F2F2E5905F8
%F800F800A8FFA9FFA9FFA9FFA9FFA959062E0600F800F800002805050027
%F800F800F800F827FD0600F800537D5385AFA9FFA9A9A9FFA9FF27F87DFF
%A9FFA9A95A5B36360E360E360E360E360E3600002F36365A282F282E287D
%84FD05FF537D537D537D537D537DA9A87DFFFFFFA9FFFFFFCBFFA8522E5A
%2F28F805000000FFFFFFA9FFFFFFA9FD04FF7E050600050000F828060600
%280528FD0400F8050028000500050005007D5328FD08A9FF53F828FFA9A9
%A9FFA9CBA9A97E7F36360E0E0D300D0E0E2FF8060D0E0DF8F800F8F8F800
%285A7EFFA900FD09F8A97D007EFFA9FFA9FFA9FFFF84F853A97E0500F800
%F8002FFFFFFFA9FFA9FFA9FFA9FFFF7E0500F800F8000006000500060006
%0000F800F8FD0400050000F80053532FA9FFA9A9A9AFA9A9A928F8A9A9FF
%A9A9A9FFA9FFA9FFCBFFA9A95A5A30360E0E0D28F82F0E2FF8282F302F2F
%00F8002F0D5A0027A8FFA8A9A8A9A8A9FFA8F827A8FFFFFFA9FFFFFF7EF8
%53FFFF52F800F80000060684FFFFA9FFFFFFA9FD04FFA90000F805F82805
%06050600060028F8000000F827000500050005F8595328FD05A9A8A9A97E
%F828A9A9A8A9A9A9A8A9A9A9A8FD04A9FFA9A97E7F363606F8060E060005
%0E0D0E0D2F05F8050D0600005A7EFFFFFFA9FFA9FF7D00F828A9FFA9FFA9
%FFFF7EF853FFFF27F8F800F8000606002F7EFFA9FFA9FFA9FFA9FFA805F8
%00F80000060006000500050500F800F80000050000F80000002E5353A9FF
%A9A9A9FFA9FF53F853FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFF
%A9A9F828302FF8280D300D300D3000050D300027070D0D5A84FD04FFA800
%28F852FFFFA9FFFFFF7E0053FFFF52F800F80500FD050653FFFFFFA9FD05
%FF0000F805F828050605060006000600050000F828000500050005F85353
%2FFD08A952F884FD0BA9FFA9A9A9FFA9A9A9FFA9FFA92700A959F828360D
%0D070D0D28F82F0700000D070D070D0D5A7EFF7DF85352F859FFFFA9FFFF
%84F859FFFF2700F800F8278459FD05067EA9FFA9FFA9FFA805F800F80005
%060006000500050000F800F8000005000000050000285353FD07A9FF2800
%A8FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF2800A9A8F853
%FFA95A5A2F300600060DF8280D0D070D0D0D060D0D59F87DFF28F87EFFFF
%A9FF7EF853FFFF52F805000000FFFFA953060606002F84FD05FFFD0400F8
%2805060006050600280000F805F827000500050005F8525328A9A9A9A8A9
%A9A9A827F8FD05A9A8A9A9A9A8A9A9A9A8A9A9A9A8FFA9A9A8FFA952F8A9
%7EF828FFA9FFA9FFA92EF82F0700000D070D070D070D060D06F8005A5900
%F8A8FFFFA984F853FFFF27F8F800F800A8FFCBFF8459060600062FA9FFFF
%A800F800F8F827530005000500050000F800F8000005F8000000F8002853
%53A9A9A9FFA9A9A9FF2700A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FF2E00A8A8F853FFFFA9FFFFFF2700A8A9F8283030FD040D070D
%0D2FF806070D060000A9FFFF7EF853FFFF52F805000000FFFFFFA9FFFFA9
%53060506067EFFFFFD0400F852FF7D0006050605270000F8050028000500
%050005F8535328FFFD07A928F8FD0AA9FFA9A9A9FFA9A9A9FFA9A9A9FFA9
%28F8A97EF828FFA9FFA9FF59F805FFA90000845953062F062F060D060000
%0D060D06F8005A7E84F853FFFF28F8F800F800A8FFA9FFA9FFFFFF845906
%00002F7E05F800F8F828FFFF8405060500F800F800F805000000050000F8
%00285353FD05A9FFA9FF28007EFFA9FFA9AFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FF0505A9A8F853FD04FF5300F8A8FFFF0000F800F800F800F8
%530D2FF806070D070D0600000D060052FFFF52F800F80000FD05FFA9FD05
%FF530600060000F805F827525352280005F800F805000000050005000500
%00F853532FFD05A9A8A9A953F87DA9A9A8A9A9A9A8A9A9A9A8A9A9A9A8AF
%A9A9A8FFA9FF7E0027FF7D0000282728F8F8F87EFFFFA800007D537D597D
%537DA8FF59F8062F0607060700F8052EF80606592700F800F805A8FFA9FF
%A9FFA9FFA9FFA9FFA8590000F800F800FD05F800F800F800F8000005FD04
%00F800F800285353A9FFA9A9A9FFA9FF7E0028FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFFF7DF87DFFA8F8050028055253FD05FF0028FD09
%FFA8F87DFFAF7E5A2F2F00002727050D0628F800F80000FD05FFA9FFFFFF
%A9FD04FFA90000F8050000F8050000F8050000F805052800050005000500
%05F8535328FD09A900007EFFFD05A9AFA9A9A9FFA9A9A9FFA9A9A9FFA9FF
%00007EFF7DF82EFFA9FFA9FFA9FFA9FFA80005FFA9FFA9FFA9FFA9FF7DF8
%52FFA9FFFFFFA88400F8F80606060000F800F8007EFFCBFFA9FFA9FFA9FF
%A9FFA9FFA827F800F800F800F800F800F800F8000005000000050000F800
%00F8525353A9FFA9FFA9CBA9FFA97EF852A9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FF7DF828FFFFA8F853FFFFA9FFA9FFA9FFFFFFF828FD09FF
%A8F87DFFFFA9FD04FFA900F8287E2F28F8050000F80606597EFFFFFFCBFF
%FFFFA9FFFFFFFD0400F800F800F805F800277D7E28F80500050005000500
%05F85953287F5A7F7E8584A9A8A9A927F87EFD06A9A8A9A9A9A8A9A9A9A8
%FFA9FF8400F8A8A9FF7DF828FFA9FFA9FFA9FFA9FFA800F8282728272827
%2805A87EF852FFA9FFA9FFA9FFFF84F853FFFF27F8F800F8000606000606
%537EA9A9FFFFFFA9FFA800F800F8000053000005A8A8FFFFFFA82EF80000
%00F800F800F80053537E5A370E373037305B36613000F87EA9AFA9FFA9FF
%CBFFA9FFA9FFA9FFA9FFA928F87DFFFFFFA8F853FFFFA9FFFFFFA9FFFFFF
%00270000F8050000F8007EA9F87DFFFFA9FFFFFFA9FFFF7D52FFFF52F805
%0000002E062806280506287D7D7E7DFFFFFFFD0400F852FFFF53282EA9FD
%05FF59000500050005000500597D535A36360E360E360E360E370DF8F82F
%0E37365A5A857E857EFD04A9FFA828F852CBFFA9FFA9A9A8FFA9FFA9FFA9
%FFA9FFA9A9A8FFA8A9A8FFA8A9A8FFA9A9A8FFA9FFA9FFA9FFA9FFA9A9A9
%FF28F8F800F800F800F800F800F800F800F8F853FFA900F800F8F827FFFF
%FFA8530553A8FFA9FFFF7E000000050000F827537D7E535B0E360E373036
%0E3730372F00F82F0E370E140E360E360E36365B5327F82E85AFA9FFA9FF
%FFFFCBFFFFFFA9FFFFFFA9FD0BFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD04FF
%52F800F8050000F8000000F8000000F800000605530000F805F852FD06FF
%532E59FD04FFA9050000050000277E7DA85336360E360E360E360E360E37
%0D05F80006300E360E360E300D2F00F8F82F0E0E0D302F362F5A5A847EA9
%A8AFA9FFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FF27F8F800F800F800F800F800F800F800F8002E2F0000F800F8F8
%28FFA9FFA9FFA9FFA8592884A9FFFFA927F8F800F82E53A8FF2E850E370E
%3736370E3736370E37362F0021F827052E28280000F80506360E300D360D
%0E0D0E0D0E0D300D302FFD045A8584A9A9FD0FFFA9FFFFFFA9FD04FF2EF8
%00F800F800F800F800F800F800F800F8A8FFAFF800F800F8277DFD09FF59
%7DA8FFFFFF520000005259FFFF535A360E360E360E360E360E360E360E36
%0D280500F800F827052F0D300D300D0E0D300D0E0D0E0D0D070D0D0D070D
%070D070D070D072F2F5A59847EA8A8FFA9FFA9FFFFFFCBFFA9FFA9FFA9FF
%535252522E5352522E5352522E5352522853A8FFA9532E522E53522E0553
%59A9A9FFA9FFA9FFA87E7DFFFFFF5300F85953FFFF7D5A363730360E3730
%360E3730360E360E370E360E360D3630360E360E300D360D300D300D300D
%300D0E0D300D0D0D300D0D070D0D0D070D070D060D070D072F2F5A597E7E
%A9A8FFA9FD20FFA97D592E537DA9FFFFA9FFFFA9A8FFFFFF7E28537EFFFF
%7E53370E140E0E0E360E0E0E360E0E0E360E0E0E360E0E0D300D0E0D0E0D
%0E0D0E0D0E0D0E0D0D070D0D0D070D070D070D070D070D070D060D060D06
%0D06070607060606070606062F2F532F5A7E847EA9A9FFA9FFFFFFCBFFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA87E537E7DA9A8FFA9FFA9
%FFA9FFA9597DFFFFA9537F615A615A5B5A5B5A5B365B365B303630363036
%0E360E360E360E300D300D0E0D0E0D0E0D0E0D0D0D0EFD060D070D0D0D07
%0D0D0D070D070D060D070D060D060D060D0607FD05060D062F2E59535A59
%A8A8A9A9FD0FFFA9FD05FFA9A984FFFFFFA9FD05FF53FD04FF2EA9A9CBA9
%A9A9CBFD0CA985A984A97E857E857E857E855A5A5A7EFD065A2F5A2F302F
%302F2F072F0D0D070D070D060D06070607FD0E06000606060006000600FD
%04062F2F53537E7EA8A8FFA9FD05FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA853FD04FF7D59FFA9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFCBFFA9FFFFFFCBFFFFFFCBFFFFFFCBFFFFFFA9FFFFFFA9FFA9FFA9FFA9
%A9A8AFA9A97EA984A97E847E845A7E5A7E595A535A53592F532F2F2E2F28
%2F0606062806060006000500060506052E2E53537D7D8484AFA9FFA9FFFF
%FFA9FFFFFFA9FFFF7E53FD04FF7E53A9A9A8A9A9A9A8A9A9A9A8A9A9A9A8
%A9A9A9A8A9A9A9A8FFA9A9A8FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFCBFFA9FFCBFFCBFFFFFFCBFFFFFFA9FFFFFFA9
%FFA9FFA9FFA9FFA8FFA8A9A8A9A8A984A87E847E84597E537D53532E5953
%53527E7D7E7DA9A9FFA9FFA9FFA9FF2FA8FD05FF2EA9A9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFF
%A9FFFFFFA9FD23FFA9FFA9FFA9FFFFFFA9FFA953FD06FF7D53FFFD0DA9FF
%A9A9A9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFFFFFA9FFA9FFFF7E53FD06FFA853A9A9A9FFA9A9A9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFF
%A9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD
%07FFA9FFA8A984A8A8FFA9FFFFFF2EA9FD07FF2885A9A9A8A9A9A9A8A9A9
%A9A8A9A9A9A8A9A9A9A8FFA9A9A8FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FD05FFA9FFA8A97E
%7E53595253527D7DA8A8FFA9FFFFFF7E53FD08FF8453FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFF
%FFA9FFFFFFA9FD0FFFA9AF848459592F2E0628052E2E597DA8A8FD07FFA8
%7D53597DFD08FFA853FD0BA9FFA9A9A9FFA9A9A9FFA9A9A9FFA9A9A9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FD07FFA9FFA8A87E7E59592E2F0606000500
%0000282E597EA9A9FD05FFA9FFFFFF7E592700F8592FFD0AFF537EA9A9A9
%FFA9AFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD0BFFA8
%A97E7E595A2F2F0628060600060000000606535384A8FFA9FD07FFA9FFFF
%FF847D2800F8000028537EFD0AFFA928A9A9A9A8A9A9A9A8A9A9A9A8A9A9
%A9A8AFA9A9A8FFA9A9A8FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFCBFFCBFFA9FFA8AFA8A87E7E53532F2FFD04060006
%000600060006050606535984A8FFA9FFCBFFA9FFA9FFA9FFA9FFFFFF7E59
%0500F8000000F8005353A8FD0BFF5959FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA9FD0BFFA9FFA8
%A97E845A5A2F2F070D060D06060607FD09062F2F7E7EA9A9FD07FFA9FFFF
%FFA9FD05FFA87D28050005000500050005277E53FD0CFFA82FFD07A9AFA9
%A9A9FFA9A9A9FFA9A9A9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA9
%FFA9A984857E5A2F5A2F2F060D060706070606060D06060607FD07062F2F
%5A7EA9A9FD05FFA9FFA9FFA9FFA9FFA9FFA9FFFFFF7E5905050000000500
%0000050000F87D2FA9FD0DFF537ECBA9A9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFFFFFCBFFA9FFA9A984855A7E5A5A2F300D0D070D070D
%060D070D060D070D060D060D060D0606060D062F538484AFA9FD07FFA9FF
%FFFFA9FFFFFFA9FD05FF845906060005000600050005000500050028537D
%FD0FFF28A9A9A9A8A9A9A9A8FD04A9FFA9FFA9FFA9CBA8A9A8A97E855A5A
%2F360D0D070D070D070D070D070D070D060D070D060D060D060D06070606
%06070659597E7EFFA9FFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%CBFF7E5305050000000500050005000000050000F8005353A8FD0FFF8453
%FFA9FFA9FFA9FFA9FFA9FFA9A97E855A5B365A30360D300D0E0D0E0D0E0D
%300D0E0D300D0D0D2FFD060D070D070D060D072F2F5A7EA9A9FD07FFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FD07FF847E2806000605060006000600060005
%0005000500002E5A7DFD11FF537EA97EA97E7F5A5B36360E360E0E0D0E0D
%0E0D0E0D0E0D300D0D0D0EFD060D070D070D070D070D060D060D062F2F5A
%7EA9A9FFCBFFFFFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%FFFF7E5906060006000600060005000500050005000000050000007E2EFD
%12FFA8537F360E360E0E0E360E360E360E360D360E300D360D300D300D30
%0D300D0E0D300D0D070D070D070D0D302F8484A9A9FD07FFA9FFFFFFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFF7E5906060006050600060506
%0006050600060005000500050005F87D2FA9FD13FF5253360E0E360E300D
%300D300D300D0E0D300D0E0D0E0D0D0D0E0D0D070D070D070D070D0D3659
%7E7EAFA9FFCBFFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFFFFF7E59060600060006000600060006000500050005000500
%0000050000F82E5359FD15FF2E7E363630360E360E360E360E360E360E30
%0D360D300D300D0E0D0E0D302F5A5A85A8FD07FFCBFFFFFFA9FFFFFFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD05FF8459060605FD050605060506
%0506050600060506000600050006000500287E53FD16FFA828850E360E30
%0E360E300D300D0E0D300D0E0D0E0D0D0D302F5A5AA9A8FFA9FFFFFFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%CBFF7E590606000605060506000605060006000600060005000600050005
%0005000500005353A8FD17FF7E53850E360E360E360E360D360E0E0D300D
%3636857EA9A9FFFFFFCBFFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9
%FFFFFFA9FFFFFFA9FFFFFFA9FD05FF7E59FD0C0605060606050605060006
%05060006000500060005000053597DFD19FF53535B0D360E0E0D0E0D0E0D
%36367E7EA9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFCBFF7E53060600060506060600
%060506000600060006000600060005000500050005000500050000287E52
%FD1BFF535A5B0E36305B5A8585FFA9FFCBFFCBFFA9FFA9FFA9FFA9FFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FFFFFFA9FD07FF7E5A0606
%0607FD12060506050600060506000600060006000027842FFD1CFFA82E7E
%8584A9A9FFA9FFA9FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9
%FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFAF7E5AFD0E0605060606
%00060506000600060006000500060005000500050000007E28FD1EFFA82E
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%FFFFA9FFFFFFA9FFFFFFA9FFFFFFCBFFFFFF7E5A0706060D0607060DFD0E
%060506060605060506000605060006000500060005007E2EA8FD1FFF7D28
%A8FFA9A9A8FFA9A9A8FFA9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFCBA97E59FD12060506060600060506000600
%060006000500060005000500050000007E28A8FD21FF7E2FA9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFFFFFA9FFFFFFA9FFFFFFA9FD
%05FF7E5A070D060D060D060D060D060D060D0606060DFD0E060506050605
%060506000600060005007E2EA8FD23FF7D28A9FFA9FFA9A9A9FFA9FFA9FF
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFCBFFCBFF7E5906070607
%060D0607060DFD1206050605060006050600060006000600050005000000
%7E287EFD25FF7D2FA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FFFFFFA9FD05FF7E5A070D060D060D060D060D060D060D0607060DFD12
%060506050600060506000605060005057E2EA8FD27FF7D287EFFA8FFA9A9
%A9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9FFA9A97E3506070607060D
%0607060D06070607FD0E0605060606000605060006000600060006000600
%0500050000057E28A8FD29FFA82F7EFFA9FFA9FFA9FFA9FFA9FFA9FFA9FF
%A9FD07FF7E5A0D0D070D0D0D070D070D060D070D060D060D060D060D060D
%0607060DFD0E060506050605060506000600052E842EA8FD2BFFA82E53FF
%A9A9A9FFA9FFA9FFA9FFA9FFA9FFA9FFCBA97E5A0D0D060D070D060D070D
%060D060D060D0607060D06060607FD0E0605060506000605060006000600
%0600050005535928FD2FFF532FFFFFFFA9FFA9FFA9FFA9FFA9FFFFA97E5A
%0D0D070D0D0D070D0D0D070D070D060D070D060D060D060D060D060D0606
%060DFD0E06050606060006050600060028595953FD31FF7D28A8A9FFA9FF
%A9FFA9FFA9A95A360D0D070D070D070D070D060D060D060D060D060D0607
%060D06060607FD0E0600060506000600060006000600060005002F592F53
%FD34FF2E5AA9FFA9FFCBAF7E5A0D0E0D0D0D300D0D0D2F0D0D070D0D0D07
%0D070D070D070D060D060D060D060D060D060D060DFD0E06050606060506
%0505057E5953A8FD36FF532E7EFF5A360D0D070D070D0D0D070D070D070D
%070D060D070D060D060D060D0607060D0606060DFD0E0605060606000605
%060006000600062E7E2E7DFD39FFA8535384300D0D300D0D0D30FD060D07
%0D0D0D070D070D060D070D060D060D060D060D060D0607060DFD0E060506
%06060506002E597E53A8FD3CFF7D285A5A30070D070D070D070D070D070D
%060D070D060D060D060D0607060D06060607FD0E06050606060006050600
%060005067D535359FD40FF59535385300D0D300D0D0D2F0D0D0D2F0D0D07
%0D0D0D070D070D060D060D060D060D060D060D060D0606060DFD0C06052F
%597E537DA8FD42FFA853287E5A36070D070D070D070D070D070D060D060D
%060D0607060D0607060DFD120600060006287E535353FD48FF5953537E5A
%360D0D070D0D0D070D0D0D070D070D060D060D060D060D060D0607060DFD
%0C06050606595959537EA8FD4AFFA87E5253537E2F2F060D060D060D060D
%060D0607060D06070607FD0E0600060006065353592E537DFD50FFA87E53
%59597E5A5A0D0D070D070D070D060D070D060D060D060D060D060DFD0706
%2F2F5A597E535359A9FD55FF847D2E535359595A2F2F070D060706070606
%0607FD0A062859535A5359535353A8FD5BFFA8847D59527E535A537E5A5A
%595A535A2F5A535A2F5A595A597E59595359537E7DFD64FFA87E597D5253
%2E532E5353532E53535328532E53537D7DA8A8FD32FFFF
%%EndData

endstream
endobj
70 0 obj
<</Filter[/FlateDecode]/Length 16849>>stream
+H��io��X���c�`y���cy��v�_�W���%o��H���O�W�xӞ�gك���`��=�f;R�gL�Ǡ����L����s���b��{x���ݶo�d�f���g����~�I~�
u7�f��:��Ű[�������S���_��q-
w��i������<,��	Nz�N�5,w7�9��)�~7��=
�GV����-�i�L(�',�u���Ԭ�O؂Yz�f�x|���v��;X�(~�#������ӌ�`}�*�)�tr��0���,x=SB(�:h洞�K�6_�7�=Nk��SN���i�惒8W[�������1A&8��ࠄ8����6��>n�R��};���FRSH�=��&����E��W�?i>�%њp��:���>��/�K���~9����fJ�N��,H�a+3�Z�7������q��+p@��]����7ۨ׫�'�+&n�6��	.���^H��Գ���/�I�h�������G�}��!>�+�Ȕ�"���rQ>=�>{z��9�8oH���������Z������G㰻}�~;d��?�K},vB�_�͛�7�fܾ�Rn��`�!F��%m��g���]���oX�D-B���7��i���vW-�o�z�U�׸�3��wϮڷ�q:���l�]h�}i�/�"�⻱a�B���ڳUs�O���u���;�t�2��#+��9�S�&�R
�M�l�����]�6'+=m7˞��S�Yz�ݲ�zln�˯{7n�Cˆ���ܽ��wj��B��jL,�-MS��������W�W2����{D��7C�H~������}{��m�^!��v��1U��z��F^�x����b��~>�U�ҋ)���e�.����ժR�*T�_+NYe�VR	�\ֲ���z[ip+VRH.��(E������S&~i�9p��ʺ�W���T�+S�U�
+U^UU��浨e�j]����:�4 2�,���?�^�(�뻍D�.���rm�Q�f���y��i�6ػ�.�����x����{�9Z_i9�~�������=�g�>瀘#*��`#\���!� |?���`���=AM�Ȝ���O5yP	��Op��0:BE i�'���d�ʪ��!����L�H�B�?�t����6?�<%~dbhb�>��'��f���&9��$�"��Gu)��iUBK�.���+W@��/8�/AR��&��T.r�%��,`����$̳�z�C+}?�G��rɛ�)�d��#��fj*a � 3>�A
+�T���Q����+�w���b\
+��@�����+-G,׈���&3�#G��A[���汘P5
+S)I����Rbc-���*$�K15��������%�Ǔ}�Hy	�h���B� �o\IpT���6�"�h(@4Q+-��lS���LT������r���#܏d�������� ��a�"��b�;BT5*�<E�T����;�@�C^����T'�P`▣2�'#��%&N2�Ds!��R]�tN��B��0R��
+���(9������O�p��9C��tsB.&>�/�$!]F@����e�W{��J���+��#��={"'��������=:����}��=/HD5�dA�����xa�8T�qi,=�Ԙ�NRXR
�0R���Nf�Eہ�b|TS�5��$�]���|b(�I�݁�֑��%Y�ǻ�-H�׋ 0Zd�5�Ȧm�c���������}�z�L��n�x$`�	\��r�^CbH��(���� fp2(�ْ �@f���$��-��h[���CI"�Do����1����\�]���Z�h�G0����ꐯ&x�}�ozpz�����K�k���^�&��K���\�l�ۦf�0�H��*���
��wĔn��W��T̚��Q.
+���l��-b�0`�P!g ��}���e�b����XF���U?���}�����zѰ*����!�z
+R��]΀���mM��t�E7����3br^��q��htqrLN�|TZ���O��z��dz��w����㔓����^����9
�gg{8��P�RF�9�~,|��4����x,���*��]���t���fc�>Hn�,~���a��5��,�����IBq�R��V���
S|
T`uyͭ|���������&t���Y���g���m9��Hn�_�?�ɿ��k����tc>Ⳁ$��Bv��n����Ƚ;RHt�bi�h����slb���4��\���C'ԫ^��i~_���_�\a���fb��mx�3X���W���TŇחC�8^�K٫������,������_]O��({�rtG����]��!.Nr��d"�Z�t���L��i�?R(8 y	s!tB;�|��j��N��qPw�O�(��,��He[g����=/6ȃ|�T�S�2U�:o�mGwM�m�t���58�txak��k�m�,K�q�\�lM�+���N�5c��_"���~g_*�((�|��H�ɜ~�6���H�W�ɱ�P�q��N$��<�O$��_~�����֠W��������#ȣ�:f�P��幭}����)�k�6�
*���5�ܛ+�f�{s�7%�V�c+7<�%6����s���Yʷps�����N�w������.ݯ3
՚�Zy����x������N'J���S*$�0��XmW1IX{n-�Z�0g������5�����T���*���!I�̻%~��S��i胡�6H���_U��v@D1,�M��*��.Dw����&�Mw�ϗ�	�F��X�|�^�)?C�&��\I@�?:��t[�]�U�:C�����D:�o���RJ�dp��@cơ
�'~�6��|g� 5���n��nY��8kr�kT���UC3U�l�P��EL�G,�=�i�<�&�k��c�%��=8}�9��%a#���7�f[v�������'1)��=�i��SM�(��r�(��{�=���IZ0ᢰ�֎J�}�pz���\����HW��P��f 
��4�KZGf�EF���<\�.���>�>�Ӑi�Z�=�.��z��c��\I���������ܣT�
�3V��:��jDg}�`Ce��ڹ���"}����ku
+�����F&m
����E�2	�����+Ky@C�$<f�E[�
+[ar��r��r��ܶ�+������	�yg]�t�||����]�a�K"V��y"�����ݔ3e�N�U�)�
�wЕ똥Q�(M8�(�ن>����we �w����

 CW5M����$����Y����������V��9�u�yu����nۦ�������Mݱ׵��QC|d���mYBKN�REz 3�6�<rl��B��
�I7�c�O&8
�HH���}���@����������˄+O��{�HrS���P~N<,��Ȼ�*��D�hE��#0=�����CH�
+�)����W%+E㒠!��I
��Vd���*��a���@�J��Q��,�K�:�8���+�Gt")�#��ȧ�iPv��b�P��
+����*��!U:�e^����F�q0��
B��@�\ЄfF��k���[����*�ߓ�Ro�qΦն�
+՚c�
+�Z�ra�(�]�p������\�+pXȠa
+C"1AA�TB�XUo;���0�����W�r%8��D[��*=YF�+'�V�����I��{#h��M:�
+
�M����r�y��y��+�'Q�hs��|��1��W�9��إ�� ��*���j�/FK.�!+������&nխ+#��Ev��6�6��G#��/˩P�L,`�
�Ν�-�>����ZM�]�� �C�*��kf�(��d��8��l��Mę��]��${5�����\���U}��}9�/+�B4}&�K���o�G1��Ɇ}��>k
+����|�̣��}�����g*>���D�(�A���,u+3�������U�x�͠��)S�9�A���)���bjÙW�o��A�e����&Y�m�]E���/��~W �t�%�|�C�
��@�o�
q>���밥mC��;u@�C
+<�8���×���A}l|4����ҀrOT���P]UaO�������]�O3��������źO�m�����H4��]���b6f��~���]kK"��p��qHUB�_	���ԁ��xװD�e�챮���'�φ�*�[�
�H��	��ª�Y�L�K��Z���>[4Q�#�Ŭ����M0��ŷP~/�I}뭧�܊�� o�S̑�iS4��o�ce��Z*��ʿ^������������z������"��CTzgn֒��m�HzT΀Co����>J6+7���~m?c$C����w��$�k������`C���nq|�1Fv��v����[�/Sn���,4��@��˝�iq��W��Y>bT��T�ei�4决�	�8M��'�U��R�����j�aI�PL�x:�L~�#�:�;�����d��Re��n�4�VZ�vQ��RU�@���-�E#������%�;���G^MT;���Y���d�����M�
+OtΌM1>��pIV�v��>��>uIvBO�;Zp#��������#L6����o|Y.�����l������_�1�h.t'p�uV���$��藆���'�h'�I�5��Smߐ��|�fRh�]�qr����C*�_I���!��rN��]��������5@se�-F����#?���-�0�C�R���S�}=%��ّ�	��������b_9
+$?���_T�x�"ž#,���B�I�9�*/�o��yu6����O�x�i�_��b,1m~���(����f��
^mio�x`���=B�p�æ��/�6&�
+�z�C}�lʺ��6�f�k�?�����d1����@��t���k۵���Ľq�ՂΩs��@�'��u���t��O	<T�c����2N�Lˎ�Zb^*�]16���zcT��<=y�C�AXͬ"���4_�X5&��
+
�ieT�44���h�y���dw3��IgM�dw�$��]�1@�B�g�����oz�H���L$K���c��J���T��H���6��N������љ�D\c+�I
+���=Y���<��#�����J������d���Dshq�J�b_�M�Jx؃����X㉁U_�u��q
+�^�C0Oim���T�%�ŭ��W���ӧ�+.W����Ӳ��8��!����}$��*��\���LB��T�R���}�p���"3Q����K1TTH��A$���5��+͎����E/nl��u݅՟�y�������TGv�G���&:L��9�3�=�gݙ���S咴�%m!˪{�]A���18��:U|�9��)��R��So�1Z|9��tp��G`rO�N�=F��e����۔r�S�OTс�]�-�~"�N"��8�|�lU�B��r��v���8��Ey���ů	�"��淤�.�g_���aQ��`��j,�ī	ST��t`�i���=�Ȁ���OťC�e?�z�r3�C�s��D(A�+*��r�
+����0k�e�o�P��sy{/ӈ����+W���x(���Ia6�@�+�/)X��q9�;(%nGum�O(~��8�i�/�{���Z�����R�^������xa�1�%(�摫Q����v�d���p2���,��3?��=5�V������C�Fт۩k��&��(|��4�����X��Y�~\�����L�aB���m��r��i��(�\��������-����ɀm��_7�+9�!\`�c�c�������}���r��Y�km���G~ZbT<��iz����i�������P\
��F�����{6����[{�_�.�y3WSm	��<.aKkU��+�=�$���(DfW���Z�$�Ed���~��O.{\IS�Aje��0����<a6�?>�ayH��ك�D|^.1�:U{z��G�7����������Ǭ��ρ}�V[^�e�l�ۖa"�����&+�2�����M��L�E��3S`���Qc�L�~t��	lh8��*���vՅ}ʷ8�j
+�cY+�F���
�3���;����&�JE��~f��Ϫ5�U���^`r�������8�T��ϓ�n������YC��b�8���mX`r��7Eܫyᓡ��*xz�B5�����"��ɮα��Y��@��=T7K.�ΥJ�p�d��,�x$����p~e�.��M���躄]�,*3g���{@�����R�s��7�����IJi8���{��
h݄���*�k;��`b����)y��#?�3��j�*��⠌)b���@wN�>9����9{�x1���uy��AZS����`4
+C�y�!Ǜ�����I^Y�{Yh21)����|�"����,'7�F���^���yS����W穚�9���%��Ԇ�英݊	��%�j���%���=r��������-I�����:|""1w��R��H�s���mNnMO����5����D:�v��Ɋѵ$/R)�� ��JO��Q���ӄ'���$4���a&�hr	����%����+�@8N8�q��Xz�Xj���"Mw���:R���۬T��+T���e~V2�XT_�6R$�9�}�����Q�2
�Iud�;K�\���vg�DX�#K�[��c�`/t��`���2j��P{p��f����j٘�/��+�]�٥Bn�H5)���=\>*�xM�RW���k�I��+[L۾V��{)��5P%�`�����$I}b��M{6%�����\��ceUxxQ��nO"vMuA�-�h����f�ŗ��A����bCi��ZA���c!,}�IV�|�#X���VE���ݟ��'ܠ�������_U*��q$E
+�C	KG��j�����wR�)ߣ@]����7S��1��X�Z�J�h&�+2�ɩ;b����c{����/�������
����.��R�^��|AV���\>������沧�I][��@���i�T��p�{�+��h�@�����Q^mk�#]��� r���(QP<k%) R1�8�1/�<G��J	s�ծ}\{�ݽjEmF�~��}��wg���%��D����T��A;�4�d82�V�<6i-^��z����z735~���g�⋢>�p��h=�*����!���/�|�3]���U�W^ݿy��.�}z����[��v4�-vs6$k��L����k{#Y�ݾ�G�I�/���*��U��o�{����ݨ�_nAv�c���,�8����!at_5��i�[M"T�A�~,t�
���Vv�g%��g�Ҕ���&������jaS�GZ:\y�:2����,K���x�{|�x�A]hm�Er�k(����{^�7���(r���P�s�3_3c{��rM����	|�Z��6�f����4�~�C�����)�OU.uo4�d�T�Ž��*�g5�n�Y������������ ؀���̌Kכ[��ȇ�l|l5%�4^@8����>\�9o>/�݌�iH�E4������b@��h��v��؈?��^6������<CG�������4��AY�/�7_�M��.������X����g���f����������v9�gn~d�Dꉓ������]Ƕ�lJ�`���vy�v�a�,������[W'7�b�W"B�1��2/
+<�}����Tm};�('��PH��l�������Sۅ��L��J����������nl����g�S"rW:U�fr�(��/sm�ɵ
lb��Q.١��
,\�1v,��4��rQi.Y#De���|aC۔S4N"c��
+]Ħ����,�*�2¦��&��ā���|�k��R�aÍ�A�_�ay�*�*��>�ꪢsup\��<p
��?��ٜ?��A&��\
�H�����&��f�f���Q�	H�?<�z���������AE��%̹޹;�g�En��X"��z}�7� Y�i2w��8����M-:g	�C,��forB��W9�Vߕ����$���<ə��$4����h$!� ��HU���̑���#��94��8ܞ��L�0���2(�[M�����29�즽mSPeK�ew�DG��6~��ڐ��ț۠���J��X;���>��N��ˤ0�A��Å-��a�P���L���CU�,C
�2���(e��PqM$%���4�닩t8V$t�����ӱJ8��X�Ձ��b�q�����"�s����
+�j���Me�!�3a�!K�WX�����+(�"ST�k��9�V���D4(=5uBCbaȩ���\�.dц� [V�\.���KP�����"�����(SB*�����tU����aM��S5�<>����q!��(�5$�8�zʤ����
w���u���NG)�	&o�g�u�����'F^
+a����f�V5���¹����a���8зa�S_H���5�_�#cdκ�x�X�AS�hBV���ha|�&���L�r��
+�{!�6@7|��<��X7Z�-5ͬ�Ih�8s�@@�1�}xh���Q� ���'D���-eA����:}����Q��HXk�W"�*HU��  ѥV�fH��l-40-��?�
+œ��<]���W�M��&���z�ب��I!-��(���M#4��V=%��O[EN��4��E�N������+rc�}>mT����/,��B�$t8y.���
��U������1n�X R����4�ANP$o�Qm\����)�~b���>����S���#oQr�
m�|�G���x��Jk��bI{��ֻ��

�kJ �c�Ȥ�2�)����>u����(s�Bo�D:�ic�o���<I��(b?��5P>�q�~�sI�So��9��aVc���NL����x�/����!@kD�Ũ�b��KP��
+Ȩ��g�����h6UK2'A�<2��&ą䪧G���3�Hi4"���40��4P��*�(-{t|�k���r���x�]vSAEX�jr�R��GpU�l`S)>�$�\\J�=�.��.��)��鏰/���M_�R"!ZA�j8@�PE��y_�яj�X}�th7�B;JH��4�Y����&�̟��C �{��~�(mU�忨Pg���_����9%�<��q������>n;j������������m���
�Sl��TTQ��G�����Ubxv�aĖt�7NPu�<�=cw�w�"�&�F]�g��=Jh��b����\w��]�JKl����ԫC�-fcoّ`#���j����]%��u(xW������X49��&B���Y�Bc��y�j�Uԫn���3�;�R��%99�Ff�S�VV�)!AU���/���q�F_��tD����,9�(���X9��L�M�o!X��U��������<f����QWl10(O�}��O��m<���/�C��l��޻^�#�M��@��YM;A�*ƾ�T�p���*�1(�=��Ep[�������P���+r���ˑ�qp/N�ghe�YVq�:|�t�V_.mU�@������@ѳ��������O��瑬��(ŗ��E���pq�p�M�nM�
��Y��B�sr����#+=�����Q¢h&���(:�q'�[UG�,e�U���72O�����*�y���Q[w�Z����R�^�a��=T
+ދ/�9���t>�٤�xx���ۥ��^��<�Aw�_]�Kg�i��=uei���24\:�~>B�^��D�)�����������K���y����pi�O�mR��|sCw��	*]��*E�09С��4��ҏոQ�{�@����(d�)TZ�3X�J��I��DҾ��ϣM��C�H٤�D_&���t��f)���������pf�f�re4�wnm��BCI-�4��R]­oӲ��|�oT��d�0n���!����B�cdg�;�*Zv���/�XAw��dm��u�Z���cY���4C�������g[Yyb��
�	���\g���PF��s?�V��(po��BA���٪�T�ń-k��@��0s���(T�	�U�P�iZb:M�`�'�����A�S�}��Ffƽ3�����ީ����5��2r�˕�n㙀�D�CVҜ����D�~���].!��
+�9'�C�
+p�����
0-�9|r���ͦ<~Z��cz�����3G�[�����w=���M|%T�͞�����G'��g�Jz��'�-h2C=k��/���Ͻ؜~�1Tg�) ���mz�A�>���ro�7�G�l9������ߍ���������sz��(������K=��e�6�޳jv���C��pr/D�@!pX߅W�W)Q[�*_Ib�l{��h��o9Z|!ٲQ����q���#�S�~e�6
+vL:�ҟ5�^�����؄GnR��P�����	���n�|v:J����Y����F���my?�OB浛|q1@f��@85�r7�}Z4���R&̀-;�/NoaF��Mw��v%$�ːL�5�'��;��o�
��ш�s���&�:xQ�"Y;X[a��{���}Y��EL��LR+�uC�k*u����;��%ܶ����[��K|]����a�տ�Y��؎�C�<v���?��Sb����Q��K����;l���_����\h#cr=K��=�e�
+�����xpEnd`��X{˿PD�oRDC��W�:}�>D� �@qTo�2 ��x����$-m�&m
+����{���QA��̰ԜZY4���
+'�΢�
+:�d�(A��a����"Kx��)��p�H	,�;cW�p���,z��@�<-�vZ��7��X_�{�)����ƾ���X�x?f�x+�g_�+^J��䊷�i���dt�������Ʌ�����_�2����E@E��m����T�3*"^N �%I�V��f[�03s���InX�Cb�����,$�E��!9�੔akKX���0VM��>^")
��x8R�MIiƾԮr�
+���A�a�X:��!@�mX1��-��$���ŝs4�m��)�s)�Oz(uS?���c&Z˂ڐDǛd1-[��GZ�ְ���>���h�Oщp&�u���ٮ
���v�����&å)�098�D_`�IO`����oYV<�İC\��fj���4V�-���ǘ��z�ԛp�!��z���A����m�&�w%4f"���R�M�P)����D�߳���������K)E��~wcD�3�6D���R:l�o�р�h�m'�!;�"�������iw�:y�
��hq��ߗ�l���_a�/$��mlQ�þpAx�K3���f���ٺ�Q��z���
�))%v4�w֔�_`���䎕����~�h<����Y�Tҷ�N�#,�c��LI�䗥�|��I�
����������߳�J�����/ۡ����v6��+�a.���l.$�W�
G��΅����g�t�~4��%x)9Zߡ>w�����K����
+&��%�ռ���d�A={y����
+Jp"�E����"���9֑fV��@LDžɢ�����jI���Ft��l���B�*~p50v��������\��Y4�q�
��Y49��(}�����b"�B�y_/d�\��t>���ہ3[J���d��_�9�[2���?�
Y�_�sc��I��*��X��unSs��%
���bV�N�Z!�������p�|�����^r��ݯ��l�ۃ[ʩ�`���+r�/��j�5�J����ӽ���S;�B�*�9���>0�N�r�tT,y55|�d������{�S�/�[m��e;ݗ�0�g���{(ss�����N���L�����ӏH�;�ك���)�U����>������呟πH�R+�id��|[��*X3He�O��1=�={x�5�^R�qTݰ�����b��		C���]k���Ť��䠈��#�m�u�~�<��NG��x���X|��O{���{���X���~�� (p��#��߰�
�k2A�y�H�a�w\]=�XznFސ�[,�+�����O�*��s夶��&r�S#w�K��y����KHu�b�|�1�����H!��UL��χh���ϐ�s]m�_.¬��������go��O%��{W��������Y�-�������1�xŀ�[����X���ޏ��,�0j�k�
endstream
endobj
71 0 obj
<</Filter[/FlateDecode]/Length 14123>>stream
+H��W�J}�<K�`Ao �uDDF��dy�۝��;t�;�w�T��
+�T��b�6j��+�b^��W���t*w�J����2��&��
~���2R�J����"��N���0�����kܸ݁���1�������>��������_�R���#�e�
+�y�ҵ�����q�����\�Jr�E��']��+�-=�+z��dگئ`]N06
�U����19��VOIRc�=�y׾
+1���XF�$������k�*�kǀ�� !����5���1-���������P�RDm�3
+��-J��k�E���F�Կ���	� �'�Zz6�U:z�"��w$x
��<L���s��mq�>����Dp����0 !&�	���Y!�P�G�
��+E*[^�:��z���&*��T�dk�9F�͖�ύXK����S����w��J�۶'�l�b(N�@z�Y�A�xC�=��ΞB�"�^�G�s�9u̶I��ཁ+�,���E��
��$P+q����(���5� ,$C(�A~��1N��u�Oé�SD�
+&"�Ϭ�
+���׳�&�5��BFV�5�GMHI�'����C��
���=|����)'�qP��dy#��K�m��Xv:`�e�.�ҽpϚ��&~h EDoWX2a�J‡��Aj������1Z�e�3�ҡ���J��?�f�2����04��^I�Ɇ����xA�[�Z�u]u����+����"_w�a(���9�r[p�Nh
+l�{��ߚG��V�.0-�9��VO�cX��<kZr�3�dU���d��RC��G�I1�K�h�x�pP\![���Xy��Wx�&�a�uy��0]��AD8$TkQ0�˸��b�e���.��a�ELG�JB7��I���/��Ӹ�Yd�h"�P-���)w��U6�+X�y���+�_�R������/��}�'�� ����+s�^�S<4������>8h� ��	����M�<Z�C�s�����`%q��൓:%C�v�K{˔�y����E��-����,"�c�$"�����s����p�`l��D��!�P���
he��;`��:�hG�������V����:=�����
+qN&4�� rѰ��L���-6\�\[��$���u1��tc���ok��Ƣ.�f��p�=����I+t����������ta�oK�2q 
��� Pځ�4DG��P�9��@.c��<,(��7e������:���4LF�`�PI���)A���Ɇ��8����u���ٛNU�q�?s#�5��f��=�����V����^���W�z�_����QV��%Ք�����ov�����{2�9���v����c2���0��@G���v����t��Kn�ǠN���Iv������[���n)N������[-�G�NC���)H��o�?o]�o��� �nswA�z7��T������NA.X��T������N1Ԛͧ������B�`?�C���Vt5��g�}�sO-��|��	���螸��s�NCWk�G� �U���>��.:U;����}��
F��)�U$F����v%uB�A�����>-��mX��F���4=��b'����ΐ89=��������_2����8�q�q�EhNO!{���.G������Rת�-�̿�����U�-�����8�����%�����Y�����։�%zj �I�h'���>����b�s�њ!�/�a�'0C��N������[$Xܟd>Y/ϦW�O�
+8&�7ӟ���n�N8L������W��)�q%bjT0`�j.��9��~�����0�{Q��TI�A���h#����vP]A$�q�c���+B����n���5���JG���ZAǼg�j�������!�µ%0ƺU<$iw�^�퉈��!w���ZF��q [����6qLw&���WJ�s�BԞ�&��%fb�e~��N���M\[:�1�|L�E)��/�-���z���""�iҳ���J��l���+/�Ӭ�m��x�� u����������R\�b!�@]��?������2E;f�7�~O�$�xpoH�+���m���V|8m�����e
+{�����t�� (���')$�NLpq�.�K�y�M�	C��Jrc㸈��
+��&�}E�Qnrݕ�N2D��x,ԑ��8����n%������@�qFf( Ȉ:8�8*K=9��KB���?]�9��������O@�M��c�V+_�~$�D$��$��F
�&��P�=^P��ˤ��d�����Wy����-bjI��1ͫΑ�����u�G[�8?��B�.��*�_��7��i������/z��5E��N���Y)�Ԅ�����P���(�e��ޕnY�])U��r���ڻ,��T{I�㚝�/���p�]�=x�����
+�����+�2c?\�����R��6�B�8c4iYw����<�ZJ����<a�qo����)�
+��������O6�����W���5������)�!�IgЏ�ǝě��%4��9>L��=;T��wPK�s8%9'���w��D���!���P<���D�������h�����n�9��*�Y ��4��������|Z�r�'�Fd)�-���|#�!EB4�Z�k	�HA�q,*
�)��EC
+Ż+NtHC
+ş�08�4�P�ݸ�ç�����BaB�������8s̘m�}Mf����7^ ?ۑul��ls��L���=L��K(��9%\\c}#��٠��P�N�%�	��ɽ��;E��Ӽ��]Ls�3���?9)�S�
�z�we�D4���ݍd�	>�\@�q��Iv_ʩRP��6��+}�#�؇���y���#\�=���5�H�����f�c輂���5��%��(܍<]��	���(�H�$9;>�K��h_�^���m0�w&���kJ(q#��)g=����X��B3<��.��}E���c��f6��f�W�+��Z�5���
+Z5ִO�a�[,���Z��_��ry��X=����o�j�q;����ѧ��V��{���G���z��ïW�Y�}tk-���E���?n��G��	���/�d2��W�A��~yM�j���-����Y֣�bv�{?��_�Σ����2������������ְEv5����n�X��3F��������^ ���>u�cu6瓷�Q��Q���n���&%v3����)Eؕ�~�an�����z��-�(�Ɗ��L̿.؛o�\s/�����u��Z�:���*&ɮ�?c�� �2F���~�]�([���u[6?�c��H��DH�J��EwC���������V�yreM�R��O������o��=^l������k�Pg����}����k2�EN
9}?5��{Ig�tŚ4u�������N	��K�"	�X�,�Zr�&�iFs�+'�̶yl��I{�YK)LK�ΎO���97�ì���-Ra8���6�9B��R䳰�ϏK��[t����0��ix�[�b��M�\�bi	߻��}[��`_�j�@V#�蟠0��тG�F����\�$�KMRZgǘ�:w��$��v�~s�,5	7N��u����%�B����S1�R�??�e����P�ꀭg"������xo{)�n�i�­�%����P�Iw�����>��.+��!\��*s�C�?Bbw�	�q��4BQ���&��
���"X\�#s�NK�ܡ��d���'%oW�r*]����b�Wiy�H�&��p��p���V�{*��{"f��jn�ۗaҜ1|;�Z'�dd�#�h�R�^�7�S����W25\��['�J�I�5���}��!$BRT������P�=Չa!h�$[�#�wF����s���ʕ��e�����N:��Ôњ�I:PN_B�x�9����+
+����.��j)�f��<`��j��g�T���	zN�$�#V�����b�b�"Yr�����C��YH\�+ 
{��
;x���a/ֆz����aX��쏓��&�����G�w �r��F�n�|�W�Z��LV��+�u����J u������I[��3]�2��%����ޢ�r��@y����^��
+U@�K�rNq�@y��clE��p����,�޴���Z�K��� B���q�������','$�	FZM
������dE���K
md����P����`�l����*%�/��[K���g:01c�J��a(뮨��t,(p�{Aӈ�4��gQ���w�ؕ�3� #���q��}��Wq���BҰ���QO�����!���Fl��4�ECj�Ŝq/�E�PBǸ4/�4�w��Y����{�����p"��'����B�Z{f��P�J�-������gp����/3��>���ft����G�1:.�����W&Kh:���J��h��@\Fѳ34��łqʩ|�5�n1G�j��������/<F�{ߣ�����^��O�����C��ƢjV5��P���?�z��$'���O�p�0��
�d�Ŏ��d�f1;�JprJ}�M䅹l,���%�.P*Ȕ�11��f�ļ�J��+!���/@*D�r�o�Pc�5q�"~&U�"�*w�K~(�!D���%�6".q�����Ƣc#����/�l�h�L���5�8�����0�[b����+������z8&�94�#�|�A���A}�6����xxק��Zmf��j�(&��z�bA���SmoI����u��}`>?�;�E�KӔ�#h%M��)��0"ȧh���7�9J�+��S'�,!9���ݾ�2Y뎧��?�>5.Ù�?����������Y��>����'5��E�Y GTs1����둽��qj9~�˥�
+�oqB.*샗���Q�-$��ivB��VSK���^� �i��6t�� ���~E��#|�H#����/��wD�dz��wW��ķ���.=(��R�����õ��O��i���_�?>�ǀ���R���������+4��s�E"���n��ߔΓ�����
�zH�e?b��^U�5��1���ZW[��X�,�P�kDv|OC�o����3����$���;t"���~��+�y?Go�z�@t�x�h������3xC���`4)���ZL2�/��{Ќs�$�C��=\Ȳ����2W��%�������pa�86j�'b���H��hI���@te	�B���./
+<T
�����D�L�,�?�S[�Q�Z˞�����	*�IιI^=�s��bd�i=�]�J��ޜ���<�;�CX3!~A������9{�c�eao1P~�r�騣��*b���4]oF����6%ᄚA'ϕ��h�]��)�-Z�/ꯚӺ�<��7����)|���׍�/`"!Bނ4^�c�I�qWڝ��cۅ�o�
�Η�7V6����z���]6tߟ�����3���WM�U������{5��X}|�@c��hԲ��r�&�gק�I9���K�󐠻���rLl��"��"Aj��{�	�<<���Qy�p�>�����]A�����B"�G��3�9t�c�]�����yP�+؄7Vջ�L�A���c��D7ztY[}�w��y�,�Fz�H���X
C4�D��C�ԟ����uN�x��������,pEg�G^K?|	����(���!z�h��N�&�IELd︍�8��좿�Ä�&@D�x����A\��B)&ٽm+Cb��H�
��{FVN�0���3������_WՐ|wc�
��Tj�r��������F�c�埂3 h����z�cz���c��������0�]��G���z2E��e�Еz��2/k�����i9����:�J0�v��,��ګ�H<��]�8��xND/�Pc.�G�Z�It��}�����\�T͛w������I㸇����$=.� � �������k����Z" �8ɠ ,���/�����K�?��jҰ7s�ap�^\N-m���L��6V���7������V�٨�\������:�*�������*di����$,`��I/0�,�����Q��̊D����j����\�a�����~<�(�3��ܵQ�C�yf� ��3����ٜ��?���	3��}����B9����5vC�orf��+��v���I>�����Z��_v�3�ap���_�(�I-G�
&N�����4z�a���������c0�n�Ab]�N�n�C�������E� A	�" %����80`�#*(�b��.k�a(L¨���li���zxJ�Y˹7�Fn�Z��S��2�V5���g^�A��Pf����tz�D�\�k9]'��i��7��J?���v��G��Ü���2��i��Dm��p�Ż��G���v��D��5[x�G&�ɒCޮ~�ϰ'��q��Qf�Wa�&�'lZ��\T����.Y4&*������:��G�
+�*Q���F[��<����vK�?CW�w�#�q���
+����_l��{�H�è��%7^���F{�[ox����������u�����+���R^Gf��c'��l��^G�K���Sr�ⴸ��egq���8,.��N�_]��*v�s�E"2\���G����x������3��:�P�q���~��ļ�a�S�،SL�/�?,�p�����+�����U�Yl-V���j�A���ȳҲ��E����zqL%����Gs7q�oԧd<t~�9�f���6��ؿ`oi�5[@7b�
+���d��.`2Ӱ��x�U���&����t&Ӡ���N��J߁ZYn��)�k�y�d�H폴	�dt��E:㭷�g	r��y�Y`)�}���q�ن�Ph�)�vTa�|	�@����~:����/����� 9�����N<;���ӣͻ0SC1�Y2����- ��-H�[?��Ag��ݫ�����U��o�}f���/�]��Y��-��u`e���"tĂE̻t4no}��sK��V��<.2��;, ��J�(b�"�Wr��c�w���S8�����?�����nT��J
+���:?��N\|�Ġ��\L����uh�J85��o��W��3�?N�,	��t~;����4�����m�k�f|�e��m���=w���M>qn�� hH��+`�	����2� �yd��*����|�$�A`
4�-$ H�M^�q� �«G��<Hǫk-��ԵA���8C�K��Ÿ�vxL8���l H���"xxEX�n����c7^�p(�U)��47�n�
�z�w�T6��#E�݉��m���n�>�S�hab�"D&G�����2�a��u�ESl4z��)"�V�IeK)�Sڌ�sjJaľDbOm���_w���D<�eha�b+����k��V��0`�mnw�6`��iqfO*�<�9v�%���5k��(��]�)�_��/�k�6,S�h�ȥ�,"��Ӵi�e"��
s񛤲��v+���I�������:h"c�&�\�C���kΧ������^��^e���}��W�f�>eh�R��	������Xh���/�}�,bߜ�R�4d��`�b_Y��J���}"l�gaJ�_���Q�l�����勲k	v_[̈́�5�����qhpփq�,Ь_��=Eݲ�oi���k=���U@�P�Ǫ�{� �|U�$
+^�€XU��G�K����.��)Re����yc��C��NytJ��U63��k�T��>��!��X�y��P�(��]1�����^���*z���]ZƷ���&�<�L��hI��
'{�e���3��a�9�� ����Ib|�-�b�ĥ��0��qR��������GA�k��5}ɟ.�4k&�D�j�B\R��L>"������^r���z�TI�f)e3��ǜ�Q}Iͩ��p��--�A,�r�~7���^�����P�T����1܆B��\�*���h4K���]�)9Vz��}���i(6'4�� !���OM|!�4�8?n�ZIAWB�	��{
+d�����*�Ggg+� A�i����� �K
�}ƥ�����0�P�z�S2.�����,��OnͤjÿWi-��P�*=�T�����Q��u�库�OQ�����������w�66n�BI��:
������${���5�iQ�S��p8쌆�N��Q)(�Ѩ�o7���N֑p��IU�����e{pƝ|�S�V�!YY�+lG����C<`
+��X�d���|+�+�ک�|'Ҷ�����?�H�I������;�`���\J�P��~x~&�uݒ
+��RB��S��b��a𺨎��<,
��T.��QS��j�v��Qi����\+��u:�U3oD �vu�3�,�Wٻ�x���e�F��5�XF���,��܀)�Љ�M&0q�2-����B�Z����G'~@&�oH�G�����|&�	���	��M1~B0�����C1�F�ѱR����)���IiC��Ju�F3���[��Q'�1b��`6A��H4��O}���-�������N�Q�������'�T�����/����B��xv�^<�������XirLV��#g�Ԫ�HP�XӬ0X�7.Np�=8%u%�ML����	�].,�����.�LH�W�k��E��1�q�BV[���.��ۄ�S~�Ċ�$"vݕLջ+P�z��k�GL����4;2�0!���N��Ѫ9~�Iu�+aEneUM-=�^��f��1ё�W������y������TC�m'R�`���m��
Zv�]��:�Tt4F���Hk(M��A߻���W�g��/B&C_���8���|���)���$MeF��Ub)l<�L<�!
�A���M��u!�r
+'eťO��UD�/?�K-�1�X{D���3<v$С��~�"С}$��',�[�lN ��pB�����Y[.���@�L��cڱ��B����p����.����H>s��\bm�c?O_�.�L8������p�4;:�#͵�(��l^~��ƈ�8%)���OUذ���xWAq��q���8�vH~�����U���Hl�T�{������e�WU`vT~��v\���
+f1.?Ta�����_o
>���6�Qix�,T~��*rga�l��-�޴u09�}�����0v.�;ƾ���
+ƾu
;ƾy��0vj�
c�V�ё	�<��H�|o;��Py�
����D|ԑ?����-[��ݎ쿀�D?+��M��k�!����ۤY��euBEr��IL:名b�����n�;H<�!4غ!A�x"��|��lLE�x��KG8e��6r܉.V�����ț���~�sl�2
�+�������x�dYK�o��6D%�I���K`?�����\������a���	0,7�n���L\ܒs#tW�ny����ư+�?7�K���UN۴$�JV���_u��H�cѠ���5v�Z$:7�S��|�6���B�vc�oLW;m8t�\���4��f��jlE���j8�6r�Ɋ� �Q\�_cp� �����>���X���$���򲩧������+ĥHϧ�CHEHS1f����Ni����[������z2A�#A��������k-�E��k�0�:�>H�;��U1�����bk����������wjM�Н���kw���q����%\*J�Ql
+aCڤ���PRF����5��������A�,sS�c�	���
+rU*�%�b>�b5�@
+����c��k�d_Q�Q�VxH�
+ ��X�
q�]Y���[g���\K��H��qmK��5Aՠq��庋�u%�E�fv�z%�0���^��BQCs�X	��	����8-nW]�����X�����}���:D�����S��N)��Z�/���������m��Z�{U�wZ$��$La7�h'��V��>����-���W�S�������l�=���n�=����2���U|�6D��<�u.��!p{�,&$�>�~����^	l4G�)�1Y������h�n��ֹ Ƞ#�n�i0���Km]�ڏ�}ז㎥I�Ƈt�9���C��<�k,�Z�jۜ�0�3{��`����~7��|V�ndstream
endobj
72 0 obj
<</Filter[/FlateDecode]/Length 9573>>stream
+H��o��	���?�M�H�����$&��IN�����Rғ�p�5C���ތ��}�v��|��2
+s{pc�2�ك���|St����Ga1���OVU�\L*[��"�2�;����Z-���j����+|�U>�py���3X4�z:�8���>�w�Mg��&�QU�A>)�X����r@1l�/�"�ہ;*lX%76ʮ����)H�6F5@m
�[|���3 l���/��~
+�sj��Bpl��k�\fq�Å�RD���p�ช7�ր���e�����Ȗ�o��5+��y9b���)Of/�MPx.���u?lor��Z��_N����w��n#w<K%4���xJ����g��sG������VT�x�4�1W���Xi��$�MM:���X-q�g����%q���!4�����Yp��j��� 4�����m�}��a�p����l�����s@o��^U^�����O��|�~X�}�6���0�<{4��t�v'��;���qv��v|$�y���c��K�r5�^��~��I�L��As�I\�^@��c��A�IkT�M�3���Wrg����6$,�1�	yxe�)݆��]w���y%U�w��	p2�k:��x�]���v{U4�p�&T�\o����HIۀn��u�}�&м迲������UU6�E�Fk΀'�=�����;�
`��+�A7�Yۢ�Y�A��&�_��Cvj�)�o^��~��UY����6���)O�5d����G�:��I��)�\�=FhoNm�f=<�d�d��똟���I~
O7!w�W�zv�n�x^�#�s�-��-�("�n~�_a��>�� (�����
+H�h����U��.�.>���џ.�4���@خ@��@������˨e�#Dh$��n9������	ʼnBZ	���`�bB�$�����+I$���zc�Q#�	1���Y��B%��M.�`�S�
�J#/��F>\	�g��W/��ҵ']V#Έx���꓍�^�_��O'�psz<d�HX4���/�����HE4�40ȍ�I<	8(fgTJe���}��.-STq����*L�d�A�4�	!C�JLa[4�Vql�6�ݰqHi�!u!�����EA:`���9|�d*�0��T����R��Xȳ���
IF�
+T��ɳp�<j<+�]/����˽�|�,��A�/��������'�qva�����5�"��Ί�2[�\^���M�L#X+���!̟Y�:�����!|px��v������"��������j��U�2��
T��d2��ڠ��-O�1�
++��x��ׁ;��}b�]¼k�F��4�̨�F��Ps����u��a58����IU����g�Z�
+]<�l�UR�.�1�(~��D�@3��@b�	!A�t6 ��" 94
+��p]DJU	趴k����+7���0t
+}@��AP��z�k���40�������"��g#"��X��-p>�w�e���ai��+�,��ljg�E�~w���x����F���Vڇ������N,�N,_0wby'�wb������"o�q�f����KUE@*AA�rLE@,�93��Lؙ�
S��u�)P���4� �(���t�����ɽ���R>'A�l.@�'�hC.���H��i�V<�Y/���.z��q�Q
+�b��8H`�,�M	(gC5aF�F0P��}
��PK�T64��΍��?̹a�f���q��(e��z�ұ!ZB/������k�`����4W�B #���a@bxY	m���S
+�������Q��`���_�B"�d;"!
�ƒ�c܌!v<��U{�}[��a��p��6�4Kp��#�T}mp�<ĘS��&m<RD��=b�����І��66����������w���:���̾���ד��&w_�_Ov?��ؓ{�b?V�OR�=I��)f��b����gzyXYv����h��ui�b����l�q����f!������ۢM.�"yU����PCZ.̺!���Z�@���J
�|��8��P��֊*�ۣ�i7"�\����2��Sp`�Mc�غ��h�t�偖c�-i�Қ��.�[��	1"���-�i�8ĵX!޵8S���p0�����RC4ƒ�dbt	��iJ���Qm	gB�P�T{H%� @K�v�8d�:�}�(_B3�1$�%�x�ݓ|@s�6�'��R�4Z����*��ޡ���$6��ǁ1�u�e�<��BA����HpD>!�(���^��2*�n�d�P,�R��'B��W�M�;Z0�	!*%Y�D �0lA�J�B2)��p%�Ȣ(�/�!�#�H'�P7�AEž<�|6�+���nL���B�.���o�����Q�`�m%�e������"�����(�EM�j<�*�@s�=�T�,N"
+I�d,�,ob(g��{�=��������m�g�T�%3C��T9d����C�+j��ͦ	�"�d�}��s�i�MnV���M�˚c�(�����zf�S(P,X��T~O�U���!���c1E
T�T����(��]z�.�Z�������D�4Nz2bӨ����1�{5�[��12����^�M^l2^��bH�q�fɉ�],���p`�\�-7���8'˵�&�#>{�OBd>y��ʦ��u����6F������0Z%��e
+�����]?^xJgTø�^���~Q�����=������óF,�3�!L��x��k}�ef<;��ôe0�s���KߴQe�%��]�m�l8ꄩ<f��/�ac�����瀐��Q�Y^
+>����>�!>�����3������� �E�W6׷.+��^?�����]<~y~q<����_f�~�O�[�r���h��si�EM�2�v�7��;>O��`���{�ѷ�~�����K�����K�_�_�1⋯�����^��o޾����O,���!�WN|����N�o��޲���t0o�(�\ڢ
�ְmk�}��$���(2,�H����_�<��6h^E�N��Ƶ"XxQ��j'���^z�TR�^ͯ�(hV�RfIR��n�z_!�;tRLQ����r���w=;��(Q磻�&B�XŊ	!����%�ڀL�`�����d.����(W��W�G`�������r�"�h&D[m�]#j0D<F����Ǣ@�-R���~F�y6�{"o��K��j^��aR�:8wi��U��҂_�5RV�vsXu�<�אi�[�qċu$���D�ĺ<w�#ጜ��R�+JD�ԙ(\
+��26H�jIBwTU!�"bQtG�$�o�N΂�	���~BozYP���ݤj�T��hQn�f�G�W���֦����,�M��܃�sKN���G�T;=��K��O�F�����n�"����(�cf
+l�0J)U�O��@����L3�J��������/I9�+-K�
+���q��$���3S<Bf�j�MUA��P-E�����%��-�����L$[��h'
+��?��Wj`]�|��6/,�Ŝ�}N�T��������p���H���_)���?���+s��m�u�x���y����O�v-�{�����}�O�Ɵpp������Q����{��;�Fz���������5��v�c�E��+k`p6�i�=Ғ�i�X�a�FxHEt>0|5h��=��UO1[�v�h����'1�,x��̀o�B<���E�L�<m�o�)��߁�@�er��܆�a'��=vj�����������u�<�
+ Yqf$�2 Ej��`G������]-pB���P�����QDdLa�[��ҥ2
+��[�SΎ���4@��z��Q�1'�_'�HB�=�%��:
+0��Œ*կ���2L��[i��\=H�桻�\LOv�p�Z�F�'��8������X!�Xqn�BAS��XqwxM|A@\�,�ϲtmX���2<�����m݁�q�9�`�lŌ��U5��+ �]���<M�A���x��RM�9XF&���FV���K�伟g���#>K��9����Y�n �as��������t��E�(�:&��}V�!�4S{�J��#��i�R������A
+��"n��sc�p�V|�R2� �:�
+\���Y>�"y[@F#);�
�W�7��v-wLe�h����K��bw���]@�fB�Z���჌of&�Af2p���i;�+p"�Y�E�EX��6
+u�_AT�y6��hRpi�XޅS��(m�	�[��IVp'Y�!.��(�J��v���F��71s�Y��E�1\�y@��V
+�)�����w�
+!gu:���Ec�D��X�V���JR�)��h	��>J��:.ғ_�D�b�T����=����Ud�4X1ͲL�`�Kp��.x��9ӘXP��h-������v$[S�-��lT��"^K���Lk	Ԗ�k�~�������xmX��Lc�ӿl�ª
+B�6��"=�rFv'�� �*�D"+�Nu�B�CJ��C�mR�T������G��̰�5�KHv�5�e [���!�j����F�+�uP�@5�%��$Χ)�G0���݀��C��}�;$FB~�9`�8���fn
��
+����m#��a�uJ"������ɳ��7D�������H;�'�ÚN�s�{����~�}�����_NmܦB����<�7_:�����R׾���Y��UDq,U���|@Ш3A��뾀5���X��Vs}lx/v	��
6S:��ǖ`�8i���}.q��XY�\��wR�_�0;�1�F�
Q�D�G��W���^��Nk�M�6N�塢�cJs�=V����+3�h��h+<����CՈ�|(n����(�
�&�Eʷ���	���e7�;)İ|
+5._�y�o%� ����2��S~����<0������FINǞU!*��"FGkPi�[�#��R�l����������*���‚���̼����_��36�$#��4�36{6-�
8�S�0�P��lq}ʟL�6C#E,Z?�}��^��.W[�f<�-�M��G�ń��������(�(�Q�B޵�qIy�l@��$�y@sn��T�+
+*���
+�N���ƫ;"tg¤5��z��@���|q�m6@���@��R���X�.��а
+���,����J���Qw�H��-��W��,	之B<��!*8S�����S�;�Y��&gj�b�L�w.K���K#G�>Ƀ��UuC[�ؕ6@,�Z�b��Y�tqR� Pn�:�Fi�OZ�T~�IHiH��FWa��]�UA�-����T�c��ql3H�9b6�"��A
+bN��<�,!h�3jFFêP4`��B;$z�nJW����<Ut�B��̮߳��}��j���q�(��"h9:v|H���kqlM���P,T�	SK��
���)�9��j�*�k���Q�n}�ǩ�r��P�F�� +|	^��F� ~G��B���
+�$��z�*�lf��<�ln��0Q����F
+!�	5�x:)�.QgCTot�y��fz�̴S�‹v�⃸El�,��L#T�$�(��Ҧ	ߚ$l�	�g�T��
ie��€2e�y��)��jhu6B͗�Z�'p�����MG�����~�ڃ�#N=}�q�/~|x�����^n7O��l��3����d>`z�y��~{���/8��!��>p؜���Ho.ƫ�|���D���|w�>�qdivX�ş��cʮ���f�.�����O��/?��*�|t���\�������kZh�G�q�+A-�
+�]y��1�h���3�,
�yf1��[O�����_�@
+ι_��*M�J�R*!U2�������)x�!�{��og������~�O��xNc�©7�7|�+�%�
+]G�FS��>��6_j�b®e��_�}s�e�&��Š�ã�K{��1@�t��H�#�.U�U>
+�L`
+�-���������� ���D`$7R��P(����-�6R�dXY������h8�
+��l�;�֪JѩE��U
+����f�p]=L��q��t:�0�N��ճ�����U6�5��Df�bW�t�z�C�M)e�J�N�{h;)��1#�1er����Y3@⎣0)`��oob�`[Ǫ��`V�l!L��k�x�2��}��`�0�F,�t���O�L�#��.�ΐ��������P0�"e̮�U��_�qaI�"x0]�g��2������ ��3���D��r����`\)j`t� Ry����&L�Z�A�1֭Y9�Nx��՘����M����^;��4:����,3��X1��r
+�6�
��:Ͻd��F=�w�K��[��u�a8�X%ce%hVG&�u�ֶ.�{����]Se�/`�|�[����_<�����2�*�"�#U�)Lb,
+>K�EW'���T ,����g���+�l\����{�D�q���9,Y���\�QU� �l���܄DR) �V{M�dÛ��3���b�~J��	`��3�$���8���{�
+�@4B'�0"TRZLH�/��z����d\Tg�ɻ%Q��UE��W��ʛY}Ĭbd�T
r`azSR�%W8v>��j�cBƅ�(JQk�
��8<!X�H����;���*�N��ۯ#Ӓ=�e:8�p5��e&J/��r��S���� ���lcd�|��3�jd�\��1$!�y�HD��pH	_�H��*�x9t�U}sv/�s̪�i�f��T?��ӝaM&qE,{��s.��$���ij
A)����m�d�ʸC��a<݄3-�(� �����"�N>q��"���i)W-8-ۆ�	�=j+�+�a�������$_��Ё��퇋s"zw��k����^y>O{��/�F~��!����������?w�+y��.����wC�Ɠ�����9c�ک^"J\W���o���x�O��} �s���뫋w���a}��q�ί�m������������_���z��%V
endstream
endobj
5 0 obj
<</Intent 25 0 R/Name(svg5740)/Type/OCG/Usage 26 0 R>>
endobj
25 0 obj
[/View/Design]
endobj
26 0 obj
<</CreatorInfo<</Creator(Adobe Illustrator 19.2)/Subtype/Artwork>>>>
endobj
41 0 obj
[40 0 R]
endobj
73 0 obj
<</CreationDate(D:20160318204422-03'00')/Creator(Adobe Illustrator CC 2015 \(Macintosh\))/ModDate(D:20160318204528-03'00')>>
endobj
xref
0 74
0000000004 65535 f
+0000000016 00000 n
+0000000159 00000 n
+0000032717 00000 n
+0000000016 00000 f
+0000109012 00000 n
+0000000000 00000 f
+0000032768 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000109082 00000 n
+0000109113 00000 n
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000000000 00000 f
+0000037807 00000 n
+0000109198 00000 n
+0000033219 00000 n
+0000034933 00000 n
+0000039000 00000 n
+0000037994 00000 n
+0000038107 00000 n
+0000036769 00000 n
+0000036915 00000 n
+0000037061 00000 n
+0000034998 00000 n
+0000036208 00000 n
+0000036256 00000 n
+0000037602 00000 n
+0000037392 00000 n
+0000037207 00000 n
+0000037302 00000 n
+0000037487 00000 n
+0000037697 00000 n
+0000037878 00000 n
+0000037909 00000 n
+0000038222 00000 n
+0000038275 00000 n
+0000038603 00000 n
+0000038680 00000 n
+0000038827 00000 n
+0000038922 00000 n
+0000039074 00000 n
+0000039282 00000 n
+0000040772 00000 n
+0000068249 00000 n
+0000085171 00000 n
+0000099367 00000 n
+0000109223 00000 n
+trailer
<</Size 74/Root 1 0 R/Info 73 0 R/ID[<D305AE425F1D4820AA6451E023D92D8B><E2CC7E20C3E74E6E83FB100BF7D06435>]>>
startxref
109364
%%EOF
\ No newline at end of file

=== added file 'Remote/Resources/LaunchScreen.xib'
--- Remote/Resources/LaunchScreen.xib	1970-01-01 00:00:00 +0000
+++ Remote/Resources/LaunchScreen.xib	2017-01-21 18:06:11 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9531" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="openlp-logo" translatesAutoresizingMaskIntoConstraints="NO" id="Giq-f4-5fU">
+                    <rect key="frame" x="175" y="175" width="250" height="250"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="250" id="1QC-g5-fhC"/>
+                        <constraint firstAttribute="height" constant="250" id="Hk9-wV-ipl"/>
+                    </constraints>
+                </imageView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="Giq-f4-5fU" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="1nE-bf-yIO"/>
+                <constraint firstItem="Giq-f4-5fU" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="GAY-Xj-93x"/>
+            </constraints>
+        </view>
+    </objects>
+    <resources>
+        <image name="openlp-logo" width="472" height="472"/>
+    </resources>
+</document>

=== added directory 'Remote/Resources/Settings.bundle'
=== added file 'Remote/Resources/Settings.bundle/Root.inApp.plist'
--- Remote/Resources/Settings.bundle/Root.inApp.plist	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Settings.bundle/Root.inApp.plist	2017-01-21 18:06:11 +0000
@@ -0,0 +1,127 @@
+<?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>StringsTable</key>
+	<string>Root</string>
+	<key>PreferenceSpecifiers</key>
+	<array>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Server IP</string>
+			<key>Key</key>
+			<string>server.ip</string>
+			<key>DefaultValue</key>
+			<string></string>
+			<key>IsSecure</key>
+			<false/>
+			<key>KeyboardType</key>
+			<string>NumbersAndPunctuation</string>
+			<key>AutocapitalizationType</key>
+			<string>None</string>
+			<key>AutocorrectionType</key>
+			<string>No</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Server port</string>
+			<key>Key</key>
+			<string>server.port</string>
+			<key>DefaultValue</key>
+			<string>4316</string>
+			<key>IsSecure</key>
+			<false/>
+			<key>KeyboardType</key>
+			<string>NumberPad</string>
+			<key>AutocapitalizationType</key>
+			<string>None</string>
+			<key>AutocorrectionType</key>
+			<string>No</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
+			<string>Use HTTPS</string>
+			<key>Key</key>
+			<string>server.useHTTPS</string>
+			<key>DefaultValue</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
+			<string>Needs auth</string>
+			<key>Key</key>
+			<string>auth.needsAuth</string>
+			<key>DefaultValue</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>User ID</string>
+			<key>Key</key>
+			<string>auth.userID</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Password</string>
+			<key>Key</key>
+			<string>auth.password</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
+			<string>Use precise slides scroll</string>
+			<key>Key</key>
+			<string>ui.preciseScroll</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>DefaultValue</key>
+			<string>openlp.org</string>
+			<key>File</key>
+			<string>http://openlp.org/</string>
+			<key>Title</key>
+			<string>About OpenLP</string>
+			<key>Type</key>
+			<string>IASKOpenURLSpecifier</string>
+			<key>IASKTextAlignment</key>
+			<string>IASKUITextAlignmentCenter</string>
+		</dict>
+	</array>
+</dict>
+</plist>

=== added file 'Remote/Resources/Settings.bundle/Root.plist'
--- Remote/Resources/Settings.bundle/Root.plist	1970-01-01 00:00:00 +0000
+++ Remote/Resources/Settings.bundle/Root.plist	2017-01-21 18:06:11 +0000
@@ -0,0 +1,95 @@
+<?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>StringsTable</key>
+	<string>Root</string>
+	<key>PreferenceSpecifiers</key>
+	<array>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Server IP</string>
+			<key>Key</key>
+			<string>server.ip</string>
+			<key>DefaultValue</key>
+			<string></string>
+			<key>IsSecure</key>
+			<false/>
+			<key>KeyboardType</key>
+			<string>NumbersAndPunctuation</string>
+			<key>AutocapitalizationType</key>
+			<string>None</string>
+			<key>AutocorrectionType</key>
+			<string>No</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Server port</string>
+			<key>Key</key>
+			<string>server.port</string>
+			<key>DefaultValue</key>
+			<string>4316</string>
+			<key>IsSecure</key>
+			<false/>
+			<key>KeyboardType</key>
+			<string>NumberPad</string>
+			<key>AutocapitalizationType</key>
+			<string>None</string>
+			<key>AutocorrectionType</key>
+			<string>No</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
+			<string>Use HTTPS</string>
+			<key>Key</key>
+			<string>server.useHTTPS</string>
+			<key>DefaultValue</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSGroupSpecifier</string>
+			<key>Title</key>
+			<string></string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSToggleSwitchSpecifier</string>
+			<key>Title</key>
+			<string>Needs auth</string>
+			<key>Key</key>
+			<string>auth.needsAuth</string>
+			<key>DefaultValue</key>
+			<false/>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>User ID</string>
+			<key>Key</key>
+			<string>auth.userID</string>
+		</dict>
+		<dict>
+			<key>Type</key>
+			<string>PSTextFieldSpecifier</string>
+			<key>Title</key>
+			<string>Password</string>
+			<key>Key</key>
+			<string>auth.password</string>
+		</dict>
+	</array>
+</dict>
+</plist>

=== added directory 'Remote/Resources/Settings.bundle/en.lproj'
=== added file 'Remote/Resources/Settings.bundle/en.lproj/Root.strings'
Binary files Remote/Resources/Settings.bundle/en.lproj/Root.strings	1970-01-01 00:00:00 +0000 and Remote/Resources/Settings.bundle/en.lproj/Root.strings	2017-01-21 18:06:11 +0000 differ
=== added directory 'Remote/Resources/en.lproj'
=== added file 'Remote/Resources/en.lproj/Localizable.strings'
--- Remote/Resources/en.lproj/Localizable.strings	1970-01-01 00:00:00 +0000
+++ Remote/Resources/en.lproj/Localizable.strings	2017-01-21 18:06:11 +0000
@@ -0,0 +1,64 @@
+/******************************************************************************
+ * OpenLP iOS Remote                                                           *
+ * --------------------------------------------------------------------------- *
+ * Copyright (c) 2008-2016 OpenLP Developers                                   *
+ * --------------------------------------------------------------------------- *
+ * Permission is hereby granted, free of charge, to any person obtaining a     *
+ * copy of this software and associated documentation files (the "Software"),  *
+ * to deal in the Software without restriction, including without limitation   *
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,    *
+ * and/or sell copies of the Software, and to permit persons to whom the       *
+ * Software is furnished to do so, subject to the following conditions:        *
+ *                                                                             *
+ * The above copyright notice and this permission notice shall be included in  *
+ * all copies or substantial portions of the Software.                         *
+ *                                                                             *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  *
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    *
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      *
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING     *
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER         *
+ * DEALINGS IN THE SOFTWARE.                                                   *
+ ******************************************************************************/
+
+// SERVICE
+"Service" = "Service";
+
+// SLIDES
+"Slides" = "Slides";
+
+// ALERTS
+"Alerts" = "Alerts";
+"Cancel" = "Cancel";
+"Type here..." =  "Type here...";
+"Show" = "Show";
+"Alert showed!" = "Alert showed!";
+
+// SEARCH
+"Search" = "Search";
+"Search for" = "Search for";
+"Songs" = "Songs";
+"Bibles" = "Bibles";
+"Presentations" = "Presentations";
+"Images" = "Images";
+"Media" = "Media";
+"Custom Slides" = "Custom Slides";
+"No results found." = "No results found.";
+"Results" = "Results";
+"Go Live" = "Go Live";
+"Add to Service" = "Add to Service";
+"Item added." = "Item added.";
+"Add & Go to Service" = "Add & Go to Service";
+
+// SETTINGS
+"Settings" = "Settings";
+"OK" = "OK";
+
+// ERRORS
+"Error" = "Error";
+"Please, verify if the server IP is valid." = "Please, verify if the server IP is valid.";
+"Please, verify if the server port is valid." = "Please, verify if the server port is valid.";
+"User not authenticated." = "User not authenticated.";
+"Verify your credentials of authentication." = "Verify your credentials of authentication.";
+"An error occurred. Try again..." = "An error occurred. Try again...";

=== added directory 'Remote/Supporting files'
=== added file 'Remote/Supporting files/Info.plist'
--- Remote/Supporting files/Info.plist	1970-01-01 00:00:00 +0000
+++ Remote/Supporting files/Info.plist	2017-01-21 18:06:11 +0000
@@ -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>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>OLP Remote</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>3</string>
+	<key>ITSAppUsesNonExemptEncryption</key>
+	<false/>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UIStatusBarHidden</key>
+	<true/>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+	</array>
+</dict>
+</plist>