From 68b34cd8de099ea4a5794b77d52806a124764d3c Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 10 Jan 2022 06:09:31 +1300 Subject: [PATCH 01/21] New map view --- .../Map/Custom/PositionAnnotationView.swift | 52 +- MeshtasticClient/Views/Map/MapView.swift | 18 +- .../Views/Map/MapViewModule.swift | 746 ++++++++++++++++++ MeshtasticClient/Views/Nodes/NodeMap.swift | 89 ++- .../Views/Settings/AppSettings.swift | 10 +- 5 files changed, 879 insertions(+), 36 deletions(-) create mode 100644 MeshtasticClient/Views/Map/MapViewModule.swift diff --git a/MeshtasticClient/Views/Map/Custom/PositionAnnotationView.swift b/MeshtasticClient/Views/Map/Custom/PositionAnnotationView.swift index 8e97bb98..f00858c6 100644 --- a/MeshtasticClient/Views/Map/Custom/PositionAnnotationView.swift +++ b/MeshtasticClient/Views/Map/Custom/PositionAnnotationView.swift @@ -26,38 +26,38 @@ class PositionAnnotation: NSObject, MKAnnotation { class PositionAnnotationView: MKAnnotationView { private let annotationFrame = CGRect(x: 0, y: 0, width: 32, height: 32) - private let label: UILabel + private let label: UILabel - override init(annotation: MKAnnotation?, reuseIdentifier: String?) { - self.label = UILabel(frame: annotationFrame.offsetBy(dx: 0, dy: 0)) - super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) - self.frame = annotationFrame - self.label.font = UIFont.preferredFont(forTextStyle: .caption2) - self.label.textColor = .white - self.label.textAlignment = .center - self.backgroundColor = .clear - self.addSubview(label) + override init(annotation: MKAnnotation?, reuseIdentifier: String?) { + self.label = UILabel(frame: annotationFrame.offsetBy(dx: 0, dy: 0)) + super.init(annotation: annotation, reuseIdentifier: reuseIdentifier) + self.frame = annotationFrame + self.label.font = UIFont.preferredFont(forTextStyle: .caption2) + self.label.textColor = .white + self.label.textAlignment = .center + self.backgroundColor = .clear + self.addSubview(label) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) not implemented!") + } + + public var name: String = "" { + didSet { + self.label.text = name } + } - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) not implemented!") - } + override func draw(_ rect: CGRect) { + guard let context = UIGraphicsGetCurrentContext() else { return } - public var name: String = "" { - didSet { - self.label.text = name - } - } + let circleRect = CGRect(x: 1, y: 1, width: 30, height: 30) - override func draw(_ rect: CGRect) { - guard let context = UIGraphicsGetCurrentContext() else { return } + context.setFillColor(CGColor(red: 0, green: 0.5, blue: 1.0, alpha: 1.0)) - let circleRect = CGRect(x: 1, y: 1, width: 30, height: 30) + context.fillEllipse(in: circleRect) - context.setFillColor(CGColor(red: 0, green: 0.5, blue: 1.0, alpha: 1.0)) - - context.fillEllipse(in: circleRect) - - } + } } diff --git a/MeshtasticClient/Views/Map/MapView.swift b/MeshtasticClient/Views/Map/MapView.swift index ddc5f896..4f2d6431 100644 --- a/MeshtasticClient/Views/Map/MapView.swift +++ b/MeshtasticClient/Views/Map/MapView.swift @@ -10,13 +10,13 @@ import UIKit import MapKit import SwiftUI import CoreData - +#if false // wrap a MKMapView into something we can use in SwiftUI struct MapView: UIViewRepresentable { var nodes: FetchedResults - weak var mapViewDelegate = MapViewDelegate() + var mapViewDelegate = MapViewDelegate() // observe changes to the key in UserDefaults @AppStorage("meshMapType") var type: String = "hybrid" @@ -36,6 +36,12 @@ struct MapView: UIViewRepresentable { map.register(PositionAnnotationView.self, forAnnotationViewWithReuseIdentifier: NSStringFromClass(PositionAnnotationView.self)) + let overlay = MKTileOverlay(urlTemplate: //"http://tiles-a.data-cdn.linz.govt.nz/services;key=7fa19132d53240708c4ff436df5b9800/tiles/v4/layer=50767/EPSG:3857/{z}/{x}/{y}.png") + "http://10.147.253.250:5050/local/map/{z}/{x}/{y}.png") + overlay.canReplaceMapContent = true + self.mapViewDelegate.renderer = MKTileOverlayRenderer(tileOverlay: overlay) + map.addOverlay(overlay) + return map } @@ -129,6 +135,8 @@ private extension MapView { class MapViewDelegate: NSObject, MKMapViewDelegate { + var renderer: MKTileOverlayRenderer? + func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { guard !annotation.isKind(of: MKUserLocation.self) else { @@ -144,6 +152,11 @@ class MapViewDelegate: NSObject, MKMapViewDelegate { return annotationView } + + func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { + return self.renderer! + + } private func setupPositionAnnotationView(for annotation: PositionAnnotation, on mapView: MKMapView) -> PositionAnnotationView { let identifier = NSStringFromClass(PositionAnnotationView.self) @@ -157,3 +170,4 @@ class MapViewDelegate: NSObject, MKMapViewDelegate { return annotationView } } +#endif diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift new file mode 100644 index 00000000..088ff3e2 --- /dev/null +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -0,0 +1,746 @@ +// +// MapView.swift +// MapViewTest +// +// Created by Cem Yilmaz on 05.07.21. +// +import SwiftUI +import MapKit +import CoreData + +#if canImport(MapKit) && canImport(UIKit) +public struct MapView: UIViewRepresentable { + + @Environment(\.managedObjectContext) var context + + //@Binding private var region: MKCoordinateRegion + + private var customMapOverlay: CustomMapOverlay? + @State private var presentCustomMapOverlayHash: CustomMapOverlay? + + private var mapType: MKMapType + + private var showZoomScale: Bool + private var zoomEnabled: Bool + private var zoomRange: (minHeight: CLLocationDistance?, maxHeight: CLLocationDistance?) + + private var scrollEnabled: Bool + private var scrollBoundaries: MKCoordinateRegion? + + private var rotationEnabled: Bool + private var showCompassWhenRotated: Bool + + private var showUserLocation: Bool + private var userTrackingMode: MKUserTrackingMode + @Binding private var userLocation: CLLocationCoordinate2D? + + //private var annotations: [MKPointAnnotation] + + private var overlays: [Overlay] + + @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "lastHeard", ascending: false)], animation: .default) + private var locationNodes: FetchedResults + + public init( + //region: Binding = .constant(MKCoordinateRegion()), + customMapOverlay: CustomMapOverlay? = nil, + //mapType: MKMapType = MKMapType.standard, + mapType: String = "hybrid", + zoomEnabled: Bool = true, + showZoomScale: Bool = false, + zoomRange: (minHeight: CLLocationDistance?, maxHeight: CLLocationDistance?) = (nil, nil), + scrollEnabled: Bool = true, + scrollBoundaries: MKCoordinateRegion? = nil, + rotationEnabled: Bool = true, + showCompassWhenRotated: Bool = true, + showUserLocation: Bool = true, + userTrackingMode: MKUserTrackingMode = MKUserTrackingMode.none, + userLocation: Binding = .constant(nil), + //annotations: [MKPointAnnotation] = [], + //locationNodes: [NodeInfoEntity] = [], + overlays: [Overlay] = [] + ) { + //self._region = region + + self.customMapOverlay = customMapOverlay + + switch mapType { + case "satellite": + self.mapType = .satellite + break + case "standard": + self.mapType = .standard + break + case "hybrid": + self.mapType = .hybrid + break + default: + self.mapType = .hybrid + } + //self.mapType = mapType + + self.showZoomScale = showZoomScale + self.zoomEnabled = zoomEnabled + self.zoomRange = zoomRange + + self.scrollEnabled = scrollEnabled + self.scrollBoundaries = scrollBoundaries + + self.rotationEnabled = rotationEnabled + self.showCompassWhenRotated = showCompassWhenRotated + + self.showUserLocation = showUserLocation + self.userTrackingMode = userTrackingMode + self._userLocation = userLocation + + //self.annotations = annotations + + //self.locationNodes = locationNodes + + self.overlays = overlays + + } + + public func makeUIView(context: Context) -> MKMapView { + let mapView = MKMapView() + mapView.delegate = context.coordinator + mapView.register(PositionAnnotationView.self, forAnnotationViewWithReuseIdentifier: NSStringFromClass(PositionAnnotationView.self)) + + return mapView + } + + public func updateUIView(_ mapView: MKMapView, context: Context) { + + //if self.userTrackingMode == MKUserTrackingMode.none && (mapView.region.center.latitude != self.region.center.latitude || mapView.region.center.longitude != self.region.center.longitude) { + //mapView.region = self.region + //} + + if self.customMapOverlay != self.presentCustomMapOverlayHash { + mapView.removeOverlays(mapView.overlays) + if let customMapOverlay = self.customMapOverlay { + let overlay = CustomMapOverlaySource( + parent: self, + mapName: customMapOverlay.mapName, + tileType: customMapOverlay.tileType, + defaultTile: customMapOverlay.defaultTile + ) + + if let minZ = customMapOverlay.minimumZoomLevel { + overlay.minimumZ = minZ + } + + if let maxZ = customMapOverlay.maximumZoomLevel { + overlay.maximumZ = maxZ + } + + overlay.canReplaceMapContent = customMapOverlay.canReplaceMapContent + + mapView.addOverlay(overlay) + } + DispatchQueue.main.async { + self.presentCustomMapOverlayHash = self.customMapOverlay + } + } + + if mapView.overlays.count != (self.overlays.count + (self.customMapOverlay == nil ? 0 : 1)) { + context.coordinator.overlays = self.overlays + mapView.overlays.forEach { overlay in + if !(overlay is MKTileOverlay) { + mapView.removeOverlay(overlay) + } + } + mapView.addOverlays(self.overlays.map { overlay in overlay.shape }) + } + + if mapView.mapType != self.mapType { + mapView.mapType = self.mapType + } + + mapView.showsScale = self.zoomEnabled ? self.showZoomScale : false + + if mapView.isZoomEnabled != self.zoomEnabled { + mapView.isZoomEnabled = self.zoomEnabled + } + + if mapView.cameraZoomRange.minCenterCoordinateDistance != self.zoomRange.minHeight ?? 0 || + mapView.cameraZoomRange.maxCenterCoordinateDistance != self.zoomRange.maxHeight ?? .infinity { + mapView.cameraZoomRange = MKMapView.CameraZoomRange( + minCenterCoordinateDistance: self.zoomRange.minHeight ?? 0, + maxCenterCoordinateDistance: self.zoomRange.maxHeight ?? .infinity + ) + } + + mapView.isScrollEnabled = self.userTrackingMode == MKUserTrackingMode.none ? self.scrollEnabled : false + + if let scrollBoundary = self.scrollBoundaries, (mapView.cameraBoundary?.region.center.latitude != scrollBoundary.center.latitude || mapView.cameraBoundary?.region.center.longitude != scrollBoundary.center.longitude || mapView.cameraBoundary?.region.span.latitudeDelta != scrollBoundary.span.latitudeDelta || mapView.cameraBoundary?.region.span.longitudeDelta != scrollBoundary.span.longitudeDelta) { + mapView.cameraBoundary = MKMapView.CameraBoundary(coordinateRegion: scrollBoundary) + } else if self.scrollBoundaries == nil && mapView.cameraBoundary != nil { + mapView.cameraBoundary = nil + } + + mapView.isRotateEnabled = self.userTrackingMode != .followWithHeading ? self.rotationEnabled : false + mapView.showsCompass = self.userTrackingMode != .followWithHeading ? self.showCompassWhenRotated : false + + if mapView.showsUserLocation != self.showUserLocation { + mapView.showsUserLocation = self.showUserLocation + } + + if mapView.userTrackingMode != self.userTrackingMode { + mapView.userTrackingMode = self.userTrackingMode + } + + //if mapView.annotations.filter({ annotation in !(annotation is MKUserLocation) }).count != self.annotations.count { + // mapView.removeAnnotations(mapView.annotations) + // mapView.addAnnotations(self.annotations) + //} + + // clear any existing annotations + var shouldMoveRegion = false + if !mapView.annotations.isEmpty { + mapView.removeAnnotations(mapView.annotations) + } else { + shouldMoveRegion = true + } + + for node in self.locationNodes { + // try and get the last position + if (node.positions?.count ?? 0) > 0 && (node.positions!.lastObject as! PositionEntity).coordinate != nil { + let annotation = PositionAnnotation() + annotation.coordinate = (node.positions!.lastObject as! PositionEntity).coordinate! + annotation.title = node.user?.longName ?? "Unknown" + annotation.shortName = node.user?.shortName?.uppercased() ?? "???" + + mapView.addAnnotation(annotation) + } + } + + if shouldMoveRegion { + self.moveToMeshRegion(mapView) + } + + + } + + func moveToMeshRegion(_ mapView: MKMapView) { + //go through the annotations and create a bounding box that encloses them + + var minLat: CLLocationDegrees = 90.0 + var maxLat: CLLocationDegrees = -90.0 + var minLon: CLLocationDegrees = 180.0 + var maxLon: CLLocationDegrees = -180.0 + + for annotation in mapView.annotations { + if annotation.isKind(of: PositionAnnotation.self) { + minLat = min(minLat, annotation.coordinate.latitude) + maxLat = max(maxLat, annotation.coordinate.latitude) + minLon = min(minLon, annotation.coordinate.longitude) + maxLon = max(maxLon, annotation.coordinate.longitude) + } + } + + //check if the mesh region looks sensible before we move to it. Otherwise we won't move the map (leave it at the current location) + if maxLat < minLat || (maxLat-minLat) > 5 || maxLon < minLon || (maxLon-minLon) > 5 { + return + } + + let centerCoord = CLLocationCoordinate2D(latitude: (minLat+maxLat)/2, longitude: (minLon+maxLon)/2) + + let span = MKCoordinateSpan(latitudeDelta: (maxLat-minLat)*1.5, longitudeDelta: (maxLon-minLon)*1.5) + + let region = mapView.regionThatFits(MKCoordinateRegion(center: centerCoord, span: span)) + + mapView.setRegion(region, animated: true) + + + } + + public func makeCoordinator() -> Coordinator { + Coordinator(parent: self) + } + + public class Coordinator: NSObject, MKMapViewDelegate { + + private var parent: MapView + public var overlays: [Overlay] = [] + + init(parent: MapView) { + self.parent = parent + } + + /*public func mapViewDidChangeVisibleRegion(_ mapView: MKMapView) { + DispatchQueue.main.async { + self.parent.region = mapView.region + } + }*/ + + public func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { + + guard !annotation.isKind(of: MKUserLocation.self) else { + // Make a fast exit if the annotation is the `MKUserLocation`, as it's not an annotation view we wish to customize. + return nil + } + + var annotationView: MKAnnotationView? + + if let annotation = annotation as? PositionAnnotation { + let identifier = NSStringFromClass(PositionAnnotationView.self) + + //let annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier) as? PositionAnnotationView ?? PositionAnnotationView() + let annotationView = PositionAnnotationView(annotation: annotation, reuseIdentifier: "PositionAnnotation") + + annotationView.name = annotation.shortName ?? "???" + + annotationView.canShowCallout = true + + return annotationView + } + + return annotationView + } + + public func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { + + if let index = self.overlays.firstIndex(where: { overlay_ in overlay_.shape.hash == overlay.hash }) { + + let unwrappedOverlay = self.overlays[index] + + if let circleOverlay = unwrappedOverlay.shape as? MKCircle { + + let renderer = MKCircleRenderer(circle: circleOverlay) + renderer.fillColor = unwrappedOverlay.fillColor + renderer.strokeColor = unwrappedOverlay.strokeColor + renderer.lineWidth = unwrappedOverlay.lineWidth + return renderer + + } else if let polygonOverlay = unwrappedOverlay.shape as? MKPolygon { + + let renderer = MKPolygonRenderer(polygon: polygonOverlay) + renderer.fillColor = unwrappedOverlay.fillColor + renderer.strokeColor = unwrappedOverlay.strokeColor + renderer.lineWidth = unwrappedOverlay.lineWidth + return renderer + + } else if let multiPolygonOverlay = unwrappedOverlay.shape as? MKMultiPolygon { + + let renderer = MKMultiPolygonRenderer(multiPolygon: multiPolygonOverlay) + renderer.fillColor = unwrappedOverlay.fillColor + renderer.strokeColor = unwrappedOverlay.strokeColor + renderer.lineWidth = unwrappedOverlay.lineWidth + return renderer + + } else if let polyLineOverlay = unwrappedOverlay.shape as? MKPolyline { + + let renderer = MKPolylineRenderer(polyline: polyLineOverlay) + renderer.fillColor = unwrappedOverlay.fillColor + renderer.strokeColor = unwrappedOverlay.strokeColor + renderer.lineWidth = unwrappedOverlay.lineWidth + return renderer + + } else if let multiPolylineOverlay = unwrappedOverlay.shape as? MKMultiPolyline { + + let renderer = MKMultiPolylineRenderer(multiPolyline: multiPolylineOverlay) + renderer.fillColor = unwrappedOverlay.fillColor + renderer.strokeColor = unwrappedOverlay.strokeColor + renderer.lineWidth = unwrappedOverlay.lineWidth + return renderer + + } else { + + return MKOverlayRenderer() + + } + + } else if let tileOverlay = overlay as? MKTileOverlay { + + return MKTileOverlayRenderer(tileOverlay: tileOverlay) + + } else { + + return MKOverlayRenderer() + + } + + } + + + + } + + /// is supposed to be located in the folder with the map name + public struct DefaultTile: Hashable { + let tileName: String + let tileType: String + + public init(tileName: String, tileType: String) { + self.tileName = tileName + self.tileType = tileType + } + } + + public struct CustomMapOverlay: Equatable, Hashable { + let mapName: String + let tileType: String + var canReplaceMapContent: Bool + var minimumZoomLevel: Int? + var maximumZoomLevel: Int? + let defaultTile: DefaultTile? + + public init( + mapName: String, + tileType: String, + canReplaceMapContent: Bool = true, // false for transparent tiles + minimumZoomLevel: Int? = nil, + maximumZoomLevel: Int? = nil, + defaultTile: DefaultTile? = nil + ) { + + self.mapName = mapName + self.tileType = tileType + self.canReplaceMapContent = canReplaceMapContent + self.minimumZoomLevel = minimumZoomLevel + self.maximumZoomLevel = maximumZoomLevel + self.defaultTile = defaultTile + } + + public init?( + mapName: String?, + tileType: String, + canReplaceMapContent: Bool = true, // false for transparent tiles + minimumZoomLevel: Int? = nil, + maximumZoomLevel: Int? = nil, + defaultTile: DefaultTile? = nil + ) { + if (mapName == nil || mapName! == "") { + return nil + } + self.mapName = mapName! + self.tileType = tileType + self.canReplaceMapContent = canReplaceMapContent + self.minimumZoomLevel = minimumZoomLevel + self.maximumZoomLevel = maximumZoomLevel + self.defaultTile = defaultTile + } + } + + public class CustomMapOverlaySource: MKTileOverlay { + + // requires folder: tiles/{mapName}/z/y/y,{tileType} + private var parent: MapView + private let mapName: String + private let tileType: String + private let defaultTile: DefaultTile? + + public init( + parent: MapView, + mapName: String, + tileType: String, + defaultTile: DefaultTile? + ) { + self.parent = parent + self.mapName = mapName + self.tileType = tileType + self.defaultTile = defaultTile + super.init(urlTemplate: "") + } + + public override func url(forTilePath path: MKTileOverlayPath) -> URL { + if let tileUrl = Bundle.main.url( + forResource: "\(path.y)", + withExtension: self.tileType, + subdirectory: "tiles/\(self.mapName)/\(path.z)/\(path.x)", + localization: nil + ) { + return tileUrl + } else if let defaultTile = self.defaultTile, let defaultTileUrl = Bundle.main.url( + forResource: defaultTile.tileName, + withExtension: defaultTile.tileType, + subdirectory: "tiles/\(self.mapName)", + localization: nil + ) { + return defaultTileUrl + } else { + let urlstring = self.mapName+"\(path.z)/\(path.x)/\(path.y).png" + return URL(string: urlstring)! + // Bundle.main.url(forResource: "surrounding", withExtension: "png", subdirectory: "tiles")! + } + + } + + } + + public struct Overlay { + + public static func == (lhs: MapView.Overlay, rhs: MapView.Overlay) -> Bool { + // maybe to use in the future for comparison of full array + lhs.shape.coordinate.latitude == rhs.shape.coordinate.latitude && + lhs.shape.coordinate.longitude == rhs.shape.coordinate.longitude && + lhs.fillColor == rhs.fillColor + } + + var shape: MKOverlay + var fillColor: UIColor? + var strokeColor: UIColor? + var lineWidth: CGFloat + + public init( + shape: MKOverlay, + fillColor: UIColor? = nil, + strokeColor: UIColor? = nil, + lineWidth: CGFloat = 0 + ) { + self.shape = shape + self.fillColor = fillColor + self.strokeColor = strokeColor + self.lineWidth = lineWidth + } + } + +} + +// MARK: End of implementation +// MARK: Demonstration +/* +public struct MapViewDemo: View { + + @State private var locationManager: CLLocationManager + + @State private var mapRegion: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D( + latitude: -38.758247, + longitude: 175.360208 + ), + span: MKCoordinateSpan( + latitudeDelta: 0.01, + longitudeDelta: 0.01 + ) + ) + + @State private var customMapOverlay: MapView.CustomMapOverlay? + + @State private var mapType: MKMapType = MKMapType.standard + + @State private var zoomEnabled: Bool = true + @State private var showZoomScale: Bool = true + @State private var useMinZoomBoundary: Bool = false + @State private var minZoom: Double = 0 + @State private var useMaxZoomBoundary: Bool = false + @State private var maxZoom: Double = 3000000 + + @State private var scrollEnabled: Bool = true + @State private var useScrollBoundaries: Bool = false + @State private var scrollBoundaries: MKCoordinateRegion = MKCoordinateRegion() + + @State private var rotationEnabled: Bool = true + @State private var showCompassWhenRotated: Bool = true + + @State private var showUserLocation: Bool = true + @State private var userTrackingMode: MKUserTrackingMode = MKUserTrackingMode.none + @State private var userLocation: CLLocationCoordinate2D? + + @State private var showAnnotations: Bool = true + @State private var annotations: [MKPointAnnotation] = [] + + @State private var showOverlays: Bool = true + @State private var overlays: [MapView.Overlay] = [] + + @State private var showMapCenter: Bool = false + + public init() { + self.locationManager = CLLocationManager() + self.locationManager.requestWhenInUseAuthorization() + } + + public var body: some View { + + NavigationView { + + List { + + Section(header: Text("Scroll")) { + Toggle("Scroll enabled", isOn: self.$scrollEnabled) + Toggle("Use scroll boundaries", isOn: self.$useScrollBoundaries) + .onChange(of: self.useScrollBoundaries) { newValue in + if newValue { + self.scrollBoundaries = MKCoordinateRegion(center: self.mapRegion.center, span: MKCoordinateSpan()) + } + } + if self.useScrollBoundaries { + VStack(alignment: .leading) { + Text(String(format: "Vertical distance to center: %.2f m", self.scrollBoundaries.span.latitudeDelta * 10609)) + Slider(value: self.$scrollBoundaries.span.latitudeDelta, in: 0...(300/10609)) + } + VStack(alignment: .leading) { + Text(String(format: "Horizontal distance to center: %.2f m", self.self.scrollBoundaries.span.longitudeDelta * 10609)) + Slider(value: self.$scrollBoundaries.span.longitudeDelta, in: 0...(300/10609)) + } + } + } + + Section(header: Text("Zoom")) { + Toggle("Zoom enabled", isOn: self.$zoomEnabled) + Toggle("Show zoom scale", isOn: self.$showZoomScale) + Toggle("Use minimum zoom boundary", isOn: self.$useMinZoomBoundary) + if self.useMinZoomBoundary { + VStack(alignment: .leading) { + Text(String(format: "Minimum Height: %.2f m", self.minZoom)) + Slider(value: self.$minZoom, in: 0...(self.useMaxZoomBoundary ? self.maxZoom : 3000000), step: 10) + } + } + Toggle("Use maximum zoom boundary", isOn: self.$useMaxZoomBoundary) + if self.useMaxZoomBoundary { + VStack(alignment: .leading) { + Text(String(format: "Maximum Height: %.2f m", self.maxZoom)) + Slider(value: self.$maxZoom, in: (self.useMinZoomBoundary ? self.minZoom : 0)...3000000, step: 10) + } + } + } + + Section(header: Text("Rotation")) { + Toggle("Rotation enabled", isOn: self.$rotationEnabled) + Toggle("Show compass when rotated", isOn: self.$showCompassWhenRotated) + } + + Section { + Toggle("Show map Center", isOn: self.$showMapCenter) + } + + Section(header: Text("User Location")) { + Toggle("Show User Location", isOn: self.$showUserLocation) + Picker("Follow Mode", selection: self.$userTrackingMode) { + Text("Nicht folgen").tag(MKUserTrackingMode.none) + Text("Folgen").tag(MKUserTrackingMode.follow) + Text("Richtung folgen").tag(MKUserTrackingMode.followWithHeading) + }.pickerStyle(MenuPickerStyle()) + + } + + Section(header: Text("Annotations")) { + Toggle("Show Annotations", isOn: self.$showAnnotations) + Button("Add Annotation") { + let annotation = MKPointAnnotation() + annotation.coordinate = self.mapRegion.center + annotation.title = "Title" + annotation.subtitle = "Subtitle" + self.annotations.append(annotation) + } + + Button("Delete all") { self.annotations = [] }.foregroundColor(.red) + } + + Section(header: Text("Overlays")) { + Toggle("Show Overlays", isOn: self.$showOverlays) + Button("Add circle") { + self.overlays.append(MapView.Overlay( + shape: MKCircle( + center: self.mapRegion.center, + radius: 20 + ), + strokeColor: UIColor.systemBlue, + lineWidth: 10 + )) + } + + Button("Delete all") { self.overlays = [] }.foregroundColor(.red) + } + + Section(header: Text("Custom Map Overlay")) { + Button("Keine") { self.customMapOverlay = nil } + Button("OSM Online") { + self.customMapOverlay = MapView.CustomMapOverlay( + mapName: "https://tile.openstreetmap.org/", + tileType: "png", + canReplaceMapContent: true + ) + } + Button("Farm Map") { + self.customMapOverlay = MapView.CustomMapOverlay( + mapName: "http://10.147.253.250:5050/local/map/", + tileType: "png", + canReplaceMapContent: true + ) + } + } + + }.listStyle(GroupedListStyle()) + .navigationBarTitle("Map Configuration", displayMode: NavigationBarItem.TitleDisplayMode.inline) + + ZStack { + + MapView( + region: self.$mapRegion, + customMapOverlay: self.customMapOverlay, + mapType: self.mapType, + zoomEnabled: self.zoomEnabled, + showZoomScale: self.showZoomScale, + zoomRange: (minHeight: self.useMinZoomBoundary ? self.minZoom : 0, maxHeight: self.useMaxZoomBoundary ? self.maxZoom : .infinity), + scrollEnabled: self.scrollEnabled, + scrollBoundaries: self.useScrollBoundaries ? self.scrollBoundaries : nil, + rotationEnabled: self.rotationEnabled, + showCompassWhenRotated: self.showCompassWhenRotated, + showUserLocation: self.showUserLocation, + userTrackingMode: self.userTrackingMode, + userLocation: self.$userLocation, + annotations: self.showAnnotations ? self.annotations : [], + overlays: self.showOverlays ? self.overlays : [] + ) + + VStack { + + Spacer() + + HStack { + if let userLocation = self.userLocation, self.showUserLocation { + VStack(alignment: .leading) { + Button("Center user location") { + self.mapRegion.center = userLocation + } + Text("User Location").bold() + Text("\(userLocation.latitude)") + Text("\(userLocation.longitude)") + } + } + + Spacer() + + VStack(alignment: .leading) { + Text("Map Center").bold() + Text("\(self.mapRegion.center.latitude)") + Text("\(self.mapRegion.center.longitude)") + } + } + + Picker("", selection: self.$mapType) { + Text("Standard").tag(MKMapType.standard) + Text("Muted Standard").tag(MKMapType.mutedStandard) + Text("Satellite").tag(MKMapType.satellite) + Text("Satellite Flyover").tag(MKMapType.satelliteFlyover) + Text("Hybrid").tag(MKMapType.hybrid) + Text("Hybrid Flyover").tag(MKMapType.hybridFlyover) + }.pickerStyle(SegmentedPickerStyle()) + + if self.showMapCenter { + Circle().frame(width: 8, height: 8).foregroundColor(.red) + } + + }.padding() + + }.navigationBarTitle("SwiftUI MapView", displayMode: NavigationBarItem.TitleDisplayMode.inline) + .ignoresSafeArea(edges: .bottom) + + } + + } + +} + + +public struct MapView_Previews: PreviewProvider { + + public static var previews: some View { + + MapViewDemo() + + } + +}*/ +#endif diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index 6fc93b3e..5d1ba62e 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -16,25 +16,100 @@ struct NodeMap: View { @Environment(\.managedObjectContext) var context @EnvironmentObject var bleManager: BLEManager - // @AppStorage("meshMapType") var meshMapType: String = "hybrid" - + @AppStorage("meshMapType") var type: String = "hybrid" + @AppStorage("meshMapCustomTileServer") var customTileServer: String = "" { + didSet { + if customTileServer == "" { + self.customMapOverlay = nil + } else { + self.customMapOverlay = MapView.CustomMapOverlay( + mapName: customTileServer, + tileType: "png", + canReplaceMapContent: true + ) + } + } + } + @State private var showLabels: Bool = false - @State private var annotationItems: [MapLocation] = [] - @FetchRequest( sortDescriptors: [NSSortDescriptor(keyPath: \NodeInfoEntity.lastHeard, ascending: false)], animation: .default) + //@State private var annotationItems: [MapLocation] = [] + //@FetchRequest( sortDescriptors: [NSSortDescriptor(keyPath: \NodeInfoEntity.lastHeard, ascending: false)], animation: .default) + //private var locationNodes: FetchedResults - private var locationNodes: FetchedResults + /*@State private var mapRegion: MKCoordinateRegion = MKCoordinateRegion( + center: CLLocationCoordinate2D( + latitude: -38.758247, + longitude: 175.360208 + ), + span: MKCoordinateSpan( + latitudeDelta: 0.01, + longitudeDelta: 0.01 + ) + )*/ + + @State private var customMapOverlay: MapView.CustomMapOverlay? = MapView.CustomMapOverlay( + mapName: UserDefaults.standard.string(forKey: "meshMapCustomTileServer"), + tileType: "png", + canReplaceMapContent: true + ) + //@State private var mapType: MKMapType = MKMapType.standard + + @State private var zoomEnabled: Bool = true + @State private var showZoomScale: Bool = true + @State private var useMinZoomBoundary: Bool = false + @State private var minZoom: Double = 0 + @State private var useMaxZoomBoundary: Bool = false + @State private var maxZoom: Double = 3000000 + + @State private var scrollEnabled: Bool = true + @State private var useScrollBoundaries: Bool = false + @State private var scrollBoundaries: MKCoordinateRegion = MKCoordinateRegion() + + @State private var rotationEnabled: Bool = true + @State private var showCompassWhenRotated: Bool = true + + @State private var showUserLocation: Bool = true + @State private var userTrackingMode: MKUserTrackingMode = MKUserTrackingMode.none + @State private var userLocation: CLLocationCoordinate2D? + + @State private var showAnnotations: Bool = true + @State private var annotations: [MKPointAnnotation] = [] + + @State private var showOverlays: Bool = true + @State private var overlays: [MapView.Overlay] = [] + + @State private var showMapCenter: Bool = false + var body: some View { - let location = LocationHelper.currentLocation + //let location = LocationHelper.currentLocation NavigationView { ZStack { - MapView(nodes: self.locationNodes)//.environmentObject(bleManager) + //MapView(nodes: self.locationNodes)//.environmentObject(bleManager) // } + MapView( + //region: self.$mapRegion, + customMapOverlay: self.customMapOverlay, + mapType: self.type, + zoomEnabled: self.zoomEnabled, + showZoomScale: self.showZoomScale, + zoomRange: (minHeight: self.useMinZoomBoundary ? self.minZoom : 0, maxHeight: self.useMaxZoomBoundary ? self.maxZoom : .infinity), + scrollEnabled: self.scrollEnabled, + scrollBoundaries: self.useScrollBoundaries ? self.scrollBoundaries : nil, + rotationEnabled: self.rotationEnabled, + showCompassWhenRotated: self.showCompassWhenRotated, + showUserLocation: self.showUserLocation, + userTrackingMode: self.userTrackingMode, + userLocation: self.$userLocation, + //annotations: self.annotations, + overlays: self.overlays + ) + .frame(maxHeight: .infinity) .ignoresSafeArea(.all, edges: [.leading, .trailing]) } diff --git a/MeshtasticClient/Views/Settings/AppSettings.swift b/MeshtasticClient/Views/Settings/AppSettings.swift index 98690e2a..ad654ee8 100644 --- a/MeshtasticClient/Views/Settings/AppSettings.swift +++ b/MeshtasticClient/Views/Settings/AppSettings.swift @@ -90,6 +90,12 @@ class UserSettings: ObservableObject { UserDefaults.standard.set(meshMapType, forKey: "meshMapType") } } + + @Published var meshMapCustomTileServer: String { + didSet { + UserDefaults.standard.set(meshMapCustomTileServer, forKey: "meshMapCustomTileServer") + } + } init() { @@ -100,6 +106,7 @@ class UserSettings: ObservableObject { self.keyboardType = UserDefaults.standard.object(forKey: "keyboardType") as? Int ?? 0 self.meshActivityLog = UserDefaults.standard.object(forKey: "meshActivityLog") as? Bool ?? false self.meshMapType = UserDefaults.standard.string(forKey: "meshMapType") ?? "hybrid" + self.meshMapCustomTileServer = UserDefaults.standard.string(forKey: "meshMapCustomTileServer") ?? "" } } @@ -171,12 +178,13 @@ struct AppSettings: View { } } Section(header: Text("MAP OPTIONS")) { - Picker("Map Type", selection: $userSettings.meshMapType) { + Picker("Base Map (Apple)", selection: $userSettings.meshMapType) { ForEach(MeshMapType.allCases) { map in Text(map.description) } } .pickerStyle(DefaultPickerStyle()) + TextField("Custom Tile Server", text: $userSettings.meshMapCustomTileServer) } } } From 26d934a98964133852f6c0ebbd6f15b4b0643bb3 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 10 Jan 2022 06:18:20 +1300 Subject: [PATCH 02/21] Update project file --- Meshtastic Client.xcodeproj/project.pbxproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 98ec63f9..452bc4da 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; C9A7BC1027759A9600760B50 /* PositionAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */; }; + C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B54278B503C00BD810A /* MapViewModule.swift */; }; DD17E5DD277D49D400010EC2 /* apponly.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD17E5DB277D49D400010EC2 /* apponly.pb.swift */; }; DD17E5DE277D49D400010EC2 /* storeforward.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */; }; DD1BF2F92776FE2E008C8D2F /* UserMessageList.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */; }; @@ -74,6 +75,7 @@ /* Begin PBXFileReference section */ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; + C9A88B54278B503C00BD810A /* MapViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewModule.swift; sourceTree = ""; }; DD17E5DB277D49D400010EC2 /* apponly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = apponly.pb.swift; sourceTree = ""; }; DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = storeforward.pb.swift; sourceTree = ""; }; DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserMessageList.swift; sourceTree = ""; }; @@ -156,6 +158,7 @@ children = ( C9A7BC0E27759A6800760B50 /* Custom */, C9483F6C2773017500998F6B /* MapView.swift */, + C9A88B54278B503C00BD810A /* MapViewModule.swift */, ); path = Map; sourceTree = ""; @@ -544,6 +547,7 @@ DD47E3D626F17ED900029299 /* CircleText.swift in Sources */, DDC2E18F26CE25FE0042C5E4 /* ContentView.swift in Sources */, DD17E5DE277D49D400010EC2 /* storeforward.pb.swift in Sources */, + C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */, DDAF8C6326ED0A230058C060 /* admin.pb.swift in Sources */, C9483F6D2773017500998F6B /* MapView.swift in Sources */, DDAF8C5826ED07FD0058C060 /* mesh.pb.swift in Sources */, From f013dbe4a4d04f84cc7ab2f703f7c530314e5774 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 10 Jan 2022 06:33:32 +1300 Subject: [PATCH 03/21] WIP --- Meshtastic Client.xcodeproj/project.pbxproj | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 452bc4da..95d2dae7 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; C9A7BC1027759A9600760B50 /* PositionAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */; }; C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B54278B503C00BD810A /* MapViewModule.swift */; }; - DD17E5DD277D49D400010EC2 /* apponly.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD17E5DB277D49D400010EC2 /* apponly.pb.swift */; }; DD17E5DE277D49D400010EC2 /* storeforward.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */; }; DD1BF2F92776FE2E008C8D2F /* UserMessageList.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */; }; DD23A50F26FD1B4400D9B90C /* PeripheralModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD23A50E26FD1B4400D9B90C /* PeripheralModel.swift */; }; @@ -76,7 +75,6 @@ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; C9A88B54278B503C00BD810A /* MapViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewModule.swift; sourceTree = ""; }; - DD17E5DB277D49D400010EC2 /* apponly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = apponly.pb.swift; sourceTree = ""; }; DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = storeforward.pb.swift; sourceTree = ""; }; DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserMessageList.swift; sourceTree = ""; }; DD23A50E26FD1B4400D9B90C /* PeripheralModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeripheralModel.swift; sourceTree = ""; }; @@ -209,7 +207,6 @@ DDAF8C5626ED07740058C060 /* Protobufs */ = { isa = PBXGroup; children = ( - DD17E5DB277D49D400010EC2 /* apponly.pb.swift */, DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */, DDAF8C5E26ED09B50058C060 /* radioconfig.pb.swift */, DDAF8C6426ED0A490058C060 /* channel.pb.swift */, @@ -557,7 +554,6 @@ DD8169F9271F1A6100F4AB02 /* MeshLogger.swift in Sources */, DD539502276DAA6A00AD86B1 /* MapLocation.swift in Sources */, DDAF8C6726ED0C8C0058C060 /* remote_hardware.pb.swift in Sources */, - DD17E5DD277D49D400010EC2 /* apponly.pb.swift in Sources */, DDAF8C6526ED0A490058C060 /* channel.pb.swift in Sources */, DD47E3DD26F390A000029299 /* Messages.swift in Sources */, DDC2E15826CE248E0042C5E4 /* MeshtasticClientApp.swift in Sources */, @@ -723,7 +719,7 @@ CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = GCH7VS5Y9R; + DEVELOPMENT_TEAM = 37C534H572; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -750,7 +746,7 @@ CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = GCH7VS5Y9R; + DEVELOPMENT_TEAM = 37C534H572; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; From 54f160eab2f2e14bc83003905059656c9ea65e65 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 10 Jan 2022 06:41:22 +1300 Subject: [PATCH 04/21] Add apponly.pb that mysteriously disappeared --- Meshtastic Client.xcodeproj/project.pbxproj | 4 ++++ .../UserInterfaceState.xcuserstate | Bin 48402 -> 48924 bytes 2 files changed, 4 insertions(+) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index a63a243f..9bb595da 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; C9A7BC1027759A9600760B50 /* PositionAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */; }; C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B54278B503C00BD810A /* MapViewModule.swift */; }; + C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B56278B559900BD810A /* apponly.pb.swift */; }; DD17E5DE277D49D400010EC2 /* storeforward.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */; }; DD1BF2F92776FE2E008C8D2F /* UserMessageList.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */; }; DD23A50F26FD1B4400D9B90C /* PeripheralModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD23A50E26FD1B4400D9B90C /* PeripheralModel.swift */; }; @@ -75,6 +76,7 @@ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; C9A88B54278B503C00BD810A /* MapViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewModule.swift; sourceTree = ""; }; + C9A88B56278B559900BD810A /* apponly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = apponly.pb.swift; sourceTree = ""; }; DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = storeforward.pb.swift; sourceTree = ""; }; DD1BF2F82776FE2E008C8D2F /* UserMessageList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserMessageList.swift; sourceTree = ""; }; DD23A50E26FD1B4400D9B90C /* PeripheralModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeripheralModel.swift; sourceTree = ""; }; @@ -207,6 +209,7 @@ DDAF8C5626ED07740058C060 /* Protobufs */ = { isa = PBXGroup; children = ( + C9A88B56278B559900BD810A /* apponly.pb.swift */, DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */, DDAF8C5E26ED09B50058C060 /* radioconfig.pb.swift */, DDAF8C6426ED0A490058C060 /* channel.pb.swift */, @@ -550,6 +553,7 @@ DDAF8C5826ED07FD0058C060 /* mesh.pb.swift in Sources */, DD8169FB271F1F3A00F4AB02 /* MeshLog.swift in Sources */, DD2E65262767A01F00E45FC5 /* NodeDetail.swift in Sources */, + C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */, DD47E3D926F3093800029299 /* MessageBubble.swift in Sources */, DD8169F9271F1A6100F4AB02 /* MeshLogger.swift in Sources */, DD539502276DAA6A00AD86B1 /* MapLocation.swift in Sources */, diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index c864b6bced4699ee3447fb57884461b74e50ef5e..89d39f915875b69d2bc7a27bd6a67505067c4710 100644 GIT binary patch delta 23405 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 From 6d90211ab516c4d9bf2c102f657ce416684f8e64 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 10 Jan 2022 19:23:30 +1300 Subject: [PATCH 05/21] Use location manager to show user location on the map --- MeshtasticClient/Views/Nodes/NodeMap.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index 5d1ba62e..2e1123b4 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -72,7 +72,7 @@ struct NodeMap: View { @State private var showUserLocation: Bool = true @State private var userTrackingMode: MKUserTrackingMode = MKUserTrackingMode.none - @State private var userLocation: CLLocationCoordinate2D? + @State private var userLocation: CLLocationCoordinate2D? = LocationHelper.currentLocation @State private var showAnnotations: Bool = true @State private var annotations: [MKPointAnnotation] = [] @@ -84,7 +84,7 @@ struct NodeMap: View { var body: some View { - //let location = LocationHelper.currentLocation + //self.$userLocation = LocationHelper.currentLocation NavigationView { From b492113c021258e5e0f78bccde8e75e3671ba5d6 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Sun, 16 Jan 2022 05:48:02 +1300 Subject: [PATCH 06/21] Basic map is working. ABout to start on offline --- .../UserInterfaceState.xcuserstate | Bin 48924 -> 67549 bytes .../Views/Map/MapViewModule.swift | 19 +++++++++++++++++- MeshtasticClient/Views/Nodes/NodeMap.swift | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index 89d39f915875b69d2bc7a27bd6a67505067c4710..85e4e4d5c2962ae21b71d9d554869200c1036c6e 100644 GIT binary patch literal 67549 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

ceJjLU`7wH5+igO; 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 literal 48924 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 f=hr*yBlT + //@State private var locationNodes: [NodeInfoEntity] + public init( //region: Binding = .constant(MKCoordinateRegion()), customMapOverlay: CustomMapOverlay? = nil, @@ -95,7 +97,7 @@ public struct MapView: UIViewRepresentable { //self.annotations = annotations - //self.locationNodes = locationNodes + self.locationNodes = locationNodes self.overlays = overlays @@ -106,9 +108,24 @@ public struct MapView: UIViewRepresentable { mapView.delegate = context.coordinator mapView.register(PositionAnnotationView.self, forAnnotationViewWithReuseIdentifier: NSStringFromClass(PositionAnnotationView.self)) + Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in + for node in self.locationNodes { + // try and get the last position + if (node.positions?.count ?? 0) > 0 && (node.positions!.lastObject as! PositionEntity).coordinate != nil { + let annotation = PositionAnnotation() + annotation.coordinate = (node.positions!.lastObject as! PositionEntity).coordinate! + annotation.title = node.user?.longName ?? "Unknown" + annotation.shortName = node.user?.shortName?.uppercased() ?? "???" + + mapView.addAnnotation(annotation) + } + } + } + return mapView } + public func updateUIView(_ mapView: MKMapView, context: Context) { //if self.userTrackingMode == MKUserTrackingMode.none && (mapView.region.center.latitude != self.region.center.latitude || mapView.region.center.longitude != self.region.center.longitude) { diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index 2e1123b4..b9cc26b1 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -107,6 +107,7 @@ struct NodeMap: View { userTrackingMode: self.userTrackingMode, userLocation: self.$userLocation, //annotations: self.annotations, + //locationNodes: self.locationNodes.map({ nodeinfo in return nodeinfo }), overlays: self.overlays ) From 3a828ee0ff70e71c6e7686c22912e44cbe888757 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 16 Jan 2022 16:58:23 -0800 Subject: [PATCH 07/21] Try passing context into map view --- MeshtasticClient/Views/Map/MapViewModule.swift | 9 ++++++--- MeshtasticClient/Views/Nodes/NodeMap.swift | 6 ++++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index dddcc826..adb33419 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -11,7 +11,9 @@ import CoreData #if canImport(MapKit) && canImport(UIKit) public struct MapView: UIViewRepresentable { - @Environment(\.managedObjectContext) var context + //@Environment(\.managedObjectContext) var context + + var context: NSManagedObjectContext? //@Binding private var region: MKCoordinateRegion @@ -60,7 +62,8 @@ public struct MapView: UIViewRepresentable { userLocation: Binding = .constant(nil), //annotations: [MKPointAnnotation] = [], //locationNodes: [NodeInfoEntity] = [], - overlays: [Overlay] = [] + overlays: [Overlay] = [], + context: NSManagedObjectContext? = nil ) { //self._region = region @@ -97,7 +100,7 @@ public struct MapView: UIViewRepresentable { //self.annotations = annotations - self.locationNodes = locationNodes + //self.locationNodes = locationNodes self.overlays = overlays diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index b9cc26b1..fd4517f4 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -108,14 +108,16 @@ struct NodeMap: View { userLocation: self.$userLocation, //annotations: self.annotations, //locationNodes: self.locationNodes.map({ nodeinfo in return nodeinfo }), - overlays: self.overlays + overlays: self.overlays, + context: self.context ) - + .frame(maxHeight: .infinity) .ignoresSafeArea(.all, edges: [.leading, .trailing]) } .navigationTitle("Mesh Map") .navigationBarTitleDisplayMode(.inline) + .navigationBarItems(trailing: ZStack { From fae46080c7c692e2db22aacff45fde9236c6787c Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Mon, 17 Jan 2022 14:03:48 +1300 Subject: [PATCH 08/21] Local MBTiles source --- Meshtastic Client.xcodeproj/project.pbxproj | 33 ++++++++ .../xcshareddata/swiftpm/Package.resolved | 9 +++ .../UserInterfaceState.xcuserstate | Bin 67549 -> 100418 bytes MeshtasticClient/Info.plist | 41 +++++++++- MeshtasticClient/MTAppDelegate.swift | 28 +++++++ MeshtasticClient/MeshtasticClientApp.swift | 2 + .../Views/Map/LocalMBTileOverlay.swift | 72 ++++++++++++++++++ .../Views/Map/MapViewModule.swift | 18 +---- MeshtasticClient/Views/Nodes/NodeMap.swift | 2 +- 9 files changed, 188 insertions(+), 17 deletions(-) create mode 100644 MeshtasticClient/MTAppDelegate.swift create mode 100644 MeshtasticClient/Views/Map/LocalMBTileOverlay.swift diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 1a2e70d0..84f3004b 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -8,6 +8,10 @@ /* Begin PBXBuildFile section */ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; + C9697F9B2793366500250207 /* offline_map.mbtiles in Resources */ = {isa = PBXBuildFile; fileRef = C9697F9A2793366500250207 /* offline_map.mbtiles */; }; + C9697F9D279336B700250207 /* LocalMBTileOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */; }; + C9697FA527933B8C00250207 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = C9697FA427933B8C00250207 /* SQLite */; }; + C9697FA72793F9FB00250207 /* MTAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697FA62793F9FB00250207 /* MTAppDelegate.swift */; }; C9A7BC1027759A9600760B50 /* PositionAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */; }; C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B54278B503C00BD810A /* MapViewModule.swift */; }; C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B56278B559900BD810A /* apponly.pb.swift */; }; @@ -74,6 +78,9 @@ /* Begin PBXFileReference section */ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; + C9697F9A2793366500250207 /* offline_map.mbtiles */ = {isa = PBXFileReference; lastKnownFileType = file; path = offline_map.mbtiles; sourceTree = ""; }; + C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalMBTileOverlay.swift; sourceTree = ""; }; + C9697FA62793F9FB00250207 /* MTAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTAppDelegate.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; C9A88B54278B503C00BD810A /* MapViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewModule.swift; sourceTree = ""; }; C9A88B56278B559900BD810A /* apponly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = apponly.pb.swift; sourceTree = ""; }; @@ -132,6 +139,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + C9697FA527933B8C00250207 /* SQLite in Frameworks */, DD5394FC276993AD00AD86B1 /* SwiftProtobuf in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -159,6 +167,7 @@ C9A7BC0E27759A6800760B50 /* Custom */, C9483F6C2773017500998F6B /* MapView.swift */, C9A88B54278B503C00BD810A /* MapViewModule.swift */, + C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */, ); path = Map; sourceTree = ""; @@ -258,6 +267,7 @@ DDC2E18826CE24EE0042C5E4 /* Model */, DDC2E18926CE24F70042C5E4 /* Resources */, DDC2E15726CE248E0042C5E4 /* MeshtasticClientApp.swift */, + C9697FA62793F9FB00250207 /* MTAppDelegate.swift */, DDC2E16526CE248F0042C5E4 /* Info.plist */, DDC2E15D26CE248F0042C5E4 /* Preview Content */, ); @@ -316,6 +326,7 @@ DDC2E18926CE24F70042C5E4 /* Resources */ = { isa = PBXGroup; children = ( + C9697F9A2793366500250207 /* offline_map.mbtiles */, DDC2E15B26CE248F0042C5E4 /* Assets.xcassets */, ); path = Resources; @@ -383,6 +394,7 @@ name = MeshtasticClient; packageProductDependencies = ( DD5394FB276993AD00AD86B1 /* SwiftProtobuf */, + C9697FA427933B8C00250207 /* SQLite */, ); productName = MeshtasticClient; productReference = DDC2E15426CE248E0042C5E4 /* MeshtasticClient.app */; @@ -435,6 +447,7 @@ TargetAttributes = { DDC2E15326CE248E0042C5E4 = { CreatedOnToolsVersion = 12.5.1; + LastSwiftMigration = 1320; }; DDC2E16926CE248F0042C5E4 = { CreatedOnToolsVersion = 12.5.1; @@ -457,6 +470,7 @@ mainGroup = DDC2E14B26CE248E0042C5E4; packageReferences = ( DD5394FA276993AD00AD86B1 /* XCRemoteSwiftPackageReference "swift-protobuf" */, + C9697FA327933B8C00250207 /* XCRemoteSwiftPackageReference "SQLite.swift" */, ); productRefGroup = DDC2E15526CE248E0042C5E4 /* Products */; projectDirPath = ""; @@ -476,6 +490,7 @@ files = ( DDC2E15F26CE248F0042C5E4 /* Preview Assets.xcassets in Resources */, DDC2E15C26CE248F0042C5E4 /* Assets.xcassets in Resources */, + C9697F9B2793366500250207 /* offline_map.mbtiles in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -551,10 +566,12 @@ DDAF8C6326ED0A230058C060 /* admin.pb.swift in Sources */, C9483F6D2773017500998F6B /* MapView.swift in Sources */, DDAF8C5826ED07FD0058C060 /* mesh.pb.swift in Sources */, + C9697FA72793F9FB00250207 /* MTAppDelegate.swift in Sources */, DD8169FB271F1F3A00F4AB02 /* MeshLog.swift in Sources */, DD2E65262767A01F00E45FC5 /* NodeDetail.swift in Sources */, C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */, DD47E3D926F3093800029299 /* MessageBubble.swift in Sources */, + C9697F9D279336B700250207 /* LocalMBTileOverlay.swift in Sources */, DD8169F9271F1A6100F4AB02 /* MeshLogger.swift in Sources */, DD539502276DAA6A00AD86B1 /* MapLocation.swift in Sources */, DDAF8C6726ED0C8C0058C060 /* remote_hardware.pb.swift in Sources */, @@ -720,6 +737,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 15; @@ -737,6 +755,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2,6"; }; @@ -748,6 +767,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; + CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 15; @@ -896,6 +916,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + C9697FA327933B8C00250207 /* XCRemoteSwiftPackageReference "SQLite.swift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/stephencelis/SQLite.swift.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.9.2; + }; + }; DD5394FA276993AD00AD86B1 /* XCRemoteSwiftPackageReference "swift-protobuf" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-protobuf.git"; @@ -907,6 +935,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + C9697FA427933B8C00250207 /* SQLite */ = { + isa = XCSwiftPackageProductDependency; + package = C9697FA327933B8C00250207 /* XCRemoteSwiftPackageReference "SQLite.swift" */; + productName = SQLite; + }; DD5394FB276993AD00AD86B1 /* SwiftProtobuf */ = { isa = XCSwiftPackageProductDependency; package = DD5394FA276993AD00AD86B1 /* XCRemoteSwiftPackageReference "swift-protobuf" */; diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Meshtastic Client.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 1cb05e42..c0572681 100644 --- a/Meshtastic Client.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Meshtastic Client.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,15 @@ { "object": { "pins": [ + { + "package": "SQLite.swift", + "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", + "state": { + "branch": null, + "revision": "60a65015f6402b7c34b9a924f755ca0a73afeeaa", + "version": "0.13.1" + } + }, { "package": "SwiftProtobuf", "repositoryURL": "https://github.com/apple/swift-protobuf.git", diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index 85e4e4d5c2962ae21b71d9d554869200c1036c6e..66abbf05c5972d37806bdf97770f5cc0336576e2 100644 GIT binary patch literal 100418 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

r$IgOl7&LC$3P7gM9@%0?sbwdKHcvD zy^Y+V1O1~2`hkdImk9cycH|!8e&l}gFjQdj0C|vv()a}+j{)*TJ7LdwBk~M+UWfmj zi2vz7T8aux{zSrIXcu{vyhdIpZ;&_1TjXu>4tbY^J%0v}=Ky&Dke2{?1(4SOc>|E& z0rD0g@4CqQJD+qlz_AVR03xYl#=QLP$@u> z|GLD!Cf%bH%20BDktW(Y#NuD>kus$$x*4L(Aw#HaG1Z4s!u!CxiB2$&vZFj8MU*|| zK=r2_DJROAa-m!)H_9ELI6w)2k^rRuN&}PuC<{;ypgcf@E=r}Nh#Ek|P`(leY9OQt zmG@AD_7UR*YA8}<1Sv|C4h@G4QNsbM=w)amWQdBCED<+=Dm8HI0C$j|bG`f|P)Q;` z@E(0Tsbqlm(bTS^?A=pf&)t1*jcB?N?Jx zJ-9XGW2%Lk2$8pm$Q^o-!($YnkUlRFymzlz45Q|V1k43!|6T&-i3H4-JQg>AI%-0@ zcaVV5y#y?x7K;RQ0@S&af+V?g6JS8Cpt?i_St%-rtEeEWkv4$3X$Aj2<_2hQ>-E$R z&~T^?)JE!ifO-H_1yE0DI9b+0Zf~7k)LtD|dql1Vh+M4}sdN+7!;(5oofFmL2z8V? zMjfY4P$#KV)M@Grbrzt$0QJ)@oNnOMMV;^Ahncn!F(>z89`zUI^llF^h*m++v?oAQ zdO*_yAZW>B=vU#U35A+3ZoN}zI*=A;eRL2&M|aX803D+fJw22bXMOZAQS_-$^mMo= z`ZQ7W)>uXlS#%T~t3w?lqRtRehl`}7bz421OlOOzQ|M9jXnG8tN~h83bOxPCX8{!c z&jx4?Kyv|_2hgzq9S6|y0L=$zK^L9VgL)i2p3avz(1jxE!d}!R0IdXQm8kgD-LQwz z^&)I&S4F+BCqUSAv*fY30kl}udbop#| zbQm8O)3ZglSn+?lMR}2R2%&R@f_3kW=h0v3Sou<9r3N}fdUm%ntPp9*r90_0A}x#Q zCG=8y8NHldL9e7&(OvXvfYt%D9-t6NBS4z~Isu@~096B215nUKf7?UL`W|KYL8PUn zmzLJQlwnFYD@uBw$jW|zPV8mnPSiUPkP3VgCo;1B7SBC<#HFZ5&j3H>Yml>Uu=Mn9)t z0CYM)X8?32KxY9I((xHUKL@B5pmP8^w~Kz&gX}H+j(!gX{y{|cMK7{>0R0-E-H~v? z#@iiWCXBh*`xeGb zwBfHhI+apm?bay@fw5;CyKyo7MO+JYB``IX%eXWC5EA3Ts2ESii}7X#Fg}bgLkucn^g*t2_sCtx*$zZZXteF5^*U3POTHlS; zh#AXtN2eBMyohxJloV4aN@}Ba=X_hka;8d$w^GEr=^v#~Lra(jrX9vErjco4CNRy6 zn$Zx$m=rsecL8)aK=-U>CiNhnhMO}p#1S1c zTg1M%7yEvgvjXUm?hze&LMPA#BK(B_-Pa3$akr{6tC-ayzAk_s=w#La^k6r>2xc9# zQ76j{BECZ+f*(YDhyOcvvGD69Ya6o@hAL(|^CPnZphp3E44}v1EH2;h5OY*V$Ptl{ zlYif?+hm#3%vDhf&M;@0bIf_>0&|hM#9U^sFh2qGG(e#VodxJQfSw2F1%O@z=p}$& z2I!S8=2{OIw{#}U{46r@Q!f*6G~5%jZtG}xA=2;?pjUfoc%!4?BlAh5;ZJ~G?_?za zz0plWG>fr#Hw~y8nA|} z5o^qvu%@gTYtCA*mH_=3p!WcJAD|Ba`VgRx0Qw6+9|QCWK!5FGt#x2odm;ugmN>9Z zBG{+BU}4N{*FXaR=xd#SV*Mam78=rTJ!sj$ZnW%BHWZ>|hXM3?CmROP7u{$L*a$WX zcAOn4`lpxBKe5rGe|pvJpLVVyjo3ssMTaa|MD|8R7A?~8s@p%Y>1@7;EQ8Htv)F7l zhs|a4*s<(576zWT0DTA0_W=C^pdSDV2j7tFPXLnuOxnd3^dKuCV%Rc>tO6p#kRD_h zE)GL68bZUEZfGM}jR*|@4DE&13eA~qW82|28DJQ|WZio`O|)D(UEl@tUg^waVLqXg zodqzWll=@}WHlP_l1u-^hq2{4;~Wz*OV-5DVaE**&pvA^?B z>}FkoLYFG?*DgJ8qCI(v%VW2(2SmEJvp=#s*q!Vyb~n3+-OKJ{_XDgC!1@BLAHehh zW&kilfEfYI7+@vpNcVMsnfKCt zOVlJ+_5u4)Vz6kD##Tt{rQ`|wn~svFA|=-U8=l$MoJ8#P8}@hhE&Gmr&;G%FU_Y{d zvQQap0cHm-o3vk^O}f*s`S#qk5?spZcb2XoGxJM?0D$2eEc4X&~P%o|`n zOE?cs#d!kE4`BWP3;dVtIA5KJ24o1!pzK5uRWn?m?xJso;0rH`OEJ7Q;ew#%LbxIS zyAZ<-gJy&c)Hruf137V)1&5P=4grUPuG7F;r-xY^<67jswO5*e1S`Bvkcqpj5@1yTs|HvNz@SRi0j$1@`^fz%agsQ2fAR>A@)$1@ zJwXG&8et|IdaXu)H34h_z?uQ3hL>zdRds`j9~zM%^wAv;)vmpIQtg*pQit>=NFEcjesxHU(fa0rr_DuJ@KIegO1IyeIF)LvJ({VAB9LeF^=J z_vOvS!8V zGJc55$zc!e^$X}DVEaNZnm-#FFPyAJYZ2{O; zfNcZVc7Xl3jK9v`;BWG`_}c*60kA^=y9coQ0DB_ptA)1nfxb4<(m}i9L8LqXh<_@Y z&M*99{t5ppz;*&`7rQD$ksdT6EK-}BIybn>u+ z`#brM06U;P_0U33kV<9aoz%Zl4g@#3HogWS4*XnUf zLsJVI2WJm&zrexT6Mcf2#H9SZ+DZXC%L{Vtp1yYS!%+h*;wB1`vpCVmU`gM8`dSa~ zKH7JEl)|XEyvow*ik!SkLGP@Qv58onJu=U7$^B?p*-X)CE>^|PT3T6)MS^%IvJ4j4 zDwf*OjJ;SAb8o$c@F^jD3H!?1>n`%+h$aT9AWiBT{(R0`->m8X|jixclt?h0!S z@LlXfi*+F2vjhDD#8O@?b$bX)g9a@L?iV5!Yv=vi7acNmm{=ZsWS)hcqm3uD%lUl| z)e4KlM=Tyb{I9i%#StT|Ln;<^=U%KsW@L6BbVkA3MaM0R=?6Q#USD6Wgq;?7iY(2o zF3NMQtj!-=B_I+)B9|CTTqS{$2+3$kh9p-~BB_wHOXf=!!m0Xl$yUi>$r-r(aanRr z@=S_KSt&2=Bej2ULb~ zsDSoGjZrsrST`gIBGvts#P|H|`Gbb__+CLzV4*XFt9S%_pMw%;fdSZIfE|H@Td0i3 z0CpT;CzeYb1Rl=CodkuXQ;b0;;ph#T&Cgo)`BGoOM1XU?WrC?-CYTErf+fIC0qiuu z&H(Hzz|Jibtf5Ui33h@#z|O;n1zTPQ*j?=}&rP&*O_ui&+$4vV2=0Q1paK~5-4_9N zNxSYvUu~AD|3LV1kKhZvn*hhAS2S@KCFdm| zCl+8o0qjnO;GzBG&`(=sX5l0Zh0`Ztm=G$232>Np4PZ9_b`xN?M34JW@(4a50%ka& zBfPFXX66jXJ>3^2uOzP}Pc*|dBQ%gMT|IZm0<3od;{WSfitgHN?Id$2QmOu=`=?E? zut9rWz=T&2eU^|1Lza*&iMjnJ_`(vPLKuDuha*N~jiUgj%6as23W9Mga~6pf7m}u-^do3}DXz_5xrp0rm=D zuL1T3V7~+G?HZ{{P)k)(xFRBM5+^BK4}sUFXo>*#PE!PbiQSulrbIjf*n5rhM%in9 zDI(0%n!V9C^YieSFrim#z7`h1!KCmFz&>;e3jy{~n{4fb2urk@H+>mlg#gE%ox(~W zlW05NILn2#!g?6bgztoPK!yMrs=aAF(p1=1SeyM*1s9$~Mr zPkVg7nKzK}tEH19OQafTE|Z0$!ZG2va6&jK1wc9-O5iii=Ri6W$OIr;2xO~)Y(0=| z*!bn|o>H}NT~wJHKqmidm?7L29zs=@9+n=F9+e)G9+#fbe4**k%+t)*e5v_rx$sE% zMR+VclAeR{N2UNWC6KAb1F4uhb{2Y9G=&$!YZ1*$;T4ee0kXb}g*R}FAnOO2gFau8 zkd-gay>aN{XE4e zv}yfqwVoj^q};Vzvt^drXm@ip{~6*Ufpf}58aSEnQ3Sb1AHJ7dSTBAB~m{9tEcg^3g!%)-&ss!`18mGgaT)!Cd)R7&_&7K<3dY9|vTr z?u3Yuyii^u&XZf@#W43J^MuJBdbXJC=}xnI%B$qH-P34!4V*^H#8=aLivN=uOBMqc zj1<~vx4!w3D{>(H1HP-c3BD$9N3#VwC7G}0I&@1<{v)(W^2vV-Ed^MX-0M{ zj(nylwOR7n^3UX-%e6o@5Xk(2EC9#?fhQCLYV5{0$`q$fA3o`1JA%v!%=A zFXgY~ujOy#zXMqeki`L6Jdh;-S<>H7?&$g++d*^EFj9f*kR^7c2~sms!RShpMP#Hx z-i=H)N?SOf3Z8WjhT&Pcr+Y^-FO{nm#?rS6Q-zuI4~4P9QUNVBQ?%_uAWIWPk_lu5 zK-T;(910tS?cX@Y16lgNMWS$$++VJ6R=6l!6>bW5g$Iyj09h80Wdm6bkmUl|*uSul z3S(V&GdrH~(p*w8Oa~^f2h0dv={OyjXdRgRjx~Z5I4PoaX!3guOOc|;ftIfrr5LRk zqexYxDbf`gicCe8B3tWl*1|DYXWokO=xg+i#6eLcns-gFdDj7HD3FGUmfo~+&}q0P z(*O-y(FkOLIc3}g-6M$9RuE5y|{g}B-#YwRdiN^Jzi zT!onFL^>56qUBByS7Ty~6$@cFP%Hv64V)BVo)TWM1SY;@Fpd<6c3Y@esaOStvbxu9 zfovL(wTLoV@L$VSe5Y9Vw@9V}*~I@5$tI{-ip`2Gimi%mitRww3S@0S275mV$R>AN zuHvMQ>M5e-7WGnkNpVM{^s?fL;wQyb#Wlrs#SO(x#Vy5cAe#RyIDXs8^}Hb zvd@7GdWAVaHn&T0w}{uEz!V?;*2VfNX(iX~NR_PUNWX%f@*i)9_f_^$!sRq54rM=49N+v^ ztgjY^R99A&7DLw=U6WT)lvV#Py;qtk&3j1h1hOt5ThvRkSGRjq+Dh)PP}(W&l@7}O zN=K!W5{4C669&MgK(-9XmIK)eAY1vD@+(#=-No>>0LT_=!UTQoyWnx8GF&HzRZtEF zS`eb2Aby}C`6&5_-DjstuCPmYiLz zOi_*kvTuRxyT3*q%2Z`$N34OgkGV2OGaU|nWotFI)*e#R*0D8GRClyiY> zd&eb1sg*+cl~PPND!&G@9i2)@-%jnd!NxJl#UkJ(O33yuAlvgd;1x=^=(a?UNU$4a>s4)nxId&Np~y6Z@~vp32e zve0O`-XELS7)kS`>6Y*{S%lQ!8cajUHM}6v$TSuT37S3PJHg7)$=Su#&E3P-FE}DL zE08ml+m}tz;jf_-9MaOhxm`XiljE2>~ub;xa ztq1xiB&J8j$LCb!<&})gsxPgsTAUChR!&Zd(Fhv3hU=irq}~j?l9nE$QEK|YD-rMt zk&~;+8*4jmymoh3rc56W*7|8Z!5OUv)h0%uj!FK!GXp*9(o53oh$}J#DL`7_qt43W_?R>sTZGDq1E z*+^NGEJhY5E0fKXX=RIKOJo~#D*o3zU9CIs-OH{6>1>#BFqBwHoFyKTfs$ZJtRzX2 zDoKa0Nj#%J!p{Z;MxQZbEEp^Jxu6r{0$)1tRKr&dQkhEl<=+Zs6a3h38(g#A$?RtK z!cYFr!3F3`aPj#XbA!3X++luZUcyiL(%8u?TsdQJb5i(qoh4_@*>d*qi#jLHg>!?e zL!MkH7tW1YGE3>U{Ga7kPWHyVCbr-2{Ot>Cu9kK=B@ocAYQ0zZIL8^HXq32z3| z!B#Nq>jpn{^MsjJAKs5oQ)@2{`YAETeGKTZFc z{yPKs{C)=32JQwb122OC2EGOZ4FU{?8$=jH8blk!8pInU8YCN37)&=qfDc5M#V-oM)gLGMiY#_Fj{4_#YlbH=&sQxW2rG}EHlQ9Nn_eL*f`uc z);Qic(Ky+7l<^qj@y3Q)i^DMr!*kEzq;vaYtSv97ZQ)~(j<)|0L0 zS}(RB$ zVr=4Ul5IxWjIl|xsjz9YnQ1fM<|~_TY!=xpu~}}j(&mWGJzLV&*w)WB(sq<>t!=$+ zqwNG+wJornXxnBx$##+LV%w#*%WYTMcG<46y$+c&mvZQt8|u>I4Hwqxyh zJGq^?+RoX|)y~~cW#?-*%r4AsxLt%@tX;fard_sOuH9I>db@VJ$#zrirrRyD`_^u& z-9Ebmc8Bba*xTE?+lSgm*k{=n*jL-v+Sl9fu|H~m(f+Fa1N&F@9~=k=%7Jm<9P}Mb z9jqLD9fmoiI;1;fI%GTKI*fG~?@-`SbTc&pW^|?!;WVh zZ#dp_eBk&Ydb1 zGo5xi?Q=Trbl2&j(MXoew)7b-v_$#rdl9b?0Z! zADutBNL^4DeHR-SI~NBRN0;d?^Ig7j`Nn0T%NmzGF8f>#xEyjh;&RO8gv%+HGcM;` zF1Y;S^2Ft-%QKf3F0WjEcX{vf!R3>y)D?BLa1D0Nacy&5<$B8XrJKUd!!61!*=@92 zs$06-IJYvl3b!h?Ta8#P0Mb)O7q?)4oM%AVIR<%yG zLA71ALv>VjT&+5(I<2~{x~aOYx~qDodZ~J?`rVWEH1IU`H1#z1Z1w!iQ|md`bDrl` z&mTQ^dhYSu?|IPki05(7Q=Sh!AA3IaeCGMW^Offt&re>A7w@I;>g#3TW$b0w(tR?0a(wc9#;JYseQJE_eVTmKJ}o}2KAk>meKz`R^4a3E!)Le8UZ4Fw=X@^u z-1NEa^VH|1&ugEzJ|BHP`69lUuhMsj??~Th-#Fg{-!$Jk-$vhN--W)NzDsyg` z?Yq`@o$p59TkE&p?|Z+^ ze%t(Z`0e)F=XcQWs^1O2TYh)^e)fCd_lw`Je!uy>@O$O=W}tGQYGBg9x`AI0+&l2T zzs%ppe~|wO|49EB|2Y3K{<&)ZvHs)z3;c`xOZ*%CoBe@*tN$ebDgMj-H~Me!-{!x= zf3N?3|AYRA{V)0d?ElFBvHw&5m;SH)fA@bEKm^DG`UkiMga)Jplm}D=)CSZCGzLrv zPzOv7m>V!J;H!WI0i6L$16BmA3fL5|HDG(dj)0>9#{*6VoDR4ia5La`z}*1#vw#-? zuL9l#qJgqNJdh0R7ibu09B3No5jZ-qJg`0R%fN2~cL!bwd=&UN@YlfK0$&8a3Vajz zDToNN3hEy;BxqF7*r3v&ilFMCx}e6O)}Tp2Q-h`l%?kP~=*yrDK|6vD1)UGN9&{_{ zZqWUpM?o)wUIo1gdK>gU=tHnkuut%4b#P^{CU|0Sd+?Ot>A^FD7YDBnUKhMEcvJ9} z-~++OgHHyZ4n7-vCHPwKjo{nCcY~hp^rkJg#H%#BJ_3W+t5G4xG*718P+e%Fw7*(Jj^Q0Hq0T+F>Fv+dRSptOV|%# zhr)gidlN1XHw*U+9}w;r9uOWJJ~(_>czAe3cvN_7_}K9L@S^b2@QU#2@VfBE@aAw3 z-WuK>zApTD_?zLL!_$V(7=B`eY=rxWf)Taq5e*|IjL?jjIHGOD=OgBf_+rHT2qD5W z!ac$>VnBpnL_kDv#Ndcw5#bRL5$O?G5jhcKBl07PB1$7FBB~;4BkCj8M4XHGIMQ(B z@R4BT#*ud;^&@Q}Z6oa>9U{FW2Sx@)hC~jF43CV6jEu~Ptc+}mR7bW%wnom4TpGC| zvMW;kZRENr`zZG)zo@9F*r_=*`jFqIX2^jXn^4IQnReG{!e(SWHw*Y)pbWCOKwwOis+$nEaTcn9`W?m~UgA z#2Uq>#TLYt##Y2u$2P=Hh}Fcl#BPYa75gamP3*fkB#w7+>N-~ad+b$#66398TTgc zZM;dmZM@ns-X-2WUKJl49~K`IpBSGKKPEmcetdjoye7UaescV@_}TH=_%Gt;#V?Cr z7r!xnQ~cKWALDn$AB{f|e>(nL{Kfby@mJ%YCC~}B39bnq30?^U5`q&3Ck#snONdE` zPe@8gNoY!FOPHQ8E8+8mxd|N!s}i;(>`OSFa4z9u!WDJGwS*f9j}l%bd`ct|`z9JC znkHH#+9o?LrQbtliQgu>G z(!`|Jr1m6jlKP9J`AJ_VEllc6TAQ>kX+zQvNiUNn$+Bc3nNAjx70G>*^^-l52PKb4 zj!ceDj!jNa&PvWr9+zB@T$Eg&+?YHeS(AJx`M2aZ$?uXsB!5cLOCeI|6fQ+b@kohF zsZME50V%C1?J2WTW~Y3f(v`9~Wn0RQl-()&QVyh?O*yYlxtMY#)iBjA)ju^Tbx`Wi z)UebMsgbEMsqv{vsiRU$Qp-~-Q>#;JQyWqzq^eUvYHMnH>g3dAsryqOrcr6GX$fg{ zX&q^s($1w_OS_qNC++97U(?>Cy-WL$_9-1n$I|uEiS)kd2IX6csc*6AVXk?C>i z3F*n{sp;wI>a6sf^osQA^yc(w>9f;6PoJCqW%}3Y3)4H(*QM`BKbn3b{dD@d^o!|N z(yygIN`I36Tl$Oi*XeK5|49FsL1i!*T!uU&G$TGEF(Wx+bjGZVuQL{8EXr7taXI5& z#)FJU8Ba1TGhH*?GgX=1nFX1(ne~~Cna!CSGk0h1%RHEQM4fpo^F-#O%r}|uGCyQ~ z%93WGSwfaFt6!F3mT{J8mSdJnmV1_GmUos<*3hi5tPxp}Sut60StVJuSq)hevea2~ zvQ}iR&-y-VQ`Y9JZCN|Aj%FRtI+b-f>v`7OYfaW7EcF zjLjZ?uW@f-4O@;&lB^S$$Z^E>jF<}c4*nZLS#EifuDDKIOrENCv6RxqPrR>9{5FAF7w z`h`Y?riB)T)`fP3{R^E7-3ryJLhnM~!sx=d!i2)4!j!@>h3SP^g}H@e3-b#L3yTY< z7OpBhQTSVtvdFI}w`g+FilT!>cZ;4B{Z{m%=vC3jV!dLrm?`Fq6~%puEsJf6?Ta0Y zU5ed`M;4DNPA|?Z&M6*WTu@wGTw2^*42q`~cN8xu?krwfyrOt*@w(y->f-N`D>0jbhGO#49B)uf7B)4Q-NkK_*Nm)r{Nli(8NmGfs>p@DP3K9s`P0YTjp5iSvH`| zugt$}Xjx=gbXiT`ap>_Dk8XWzWi9mc1|gQ1)lJq#P-?C=V`AC{HTSDIZ^6P+nYKQC?ME zTV7v2xqNPUSNXT)>&iElZz|tf{$u&B^1bB;$`6-cFTYiOr~K#g`{j?ypOpVr{#;%D zs{Bp)+lsywUKJ@74HXM2_E$Wt#4GJ8hg6QNjINBUOsGt&99ucQvY@i4vZS)Cazdr1 za$;qB<&?^4l`AWMsN7chW96>O{gnqRk5nG3{HgMK<^9Tsm9Hz`SAMAcRE1UPRgqP6 zl~I*_RX|m6)!?dORpC_;RZ&&3RS8weRqD}IrBxMGRaG@rbyba3%~hJJma4X@NmWy- zmRB99dQ?qUyHzJv*H_Q0-dugY`g--P>buqVs-IT>Uj456kLr)rpK7EvT#dY@PmO+! zQH@EBUrlIDL``H(Oif}w9mniDmr z)ivj8F4kPBxmI(t=1$GMnuj%yYo6B1YKdB^mZ{}x<+Xik^=l1ljcd(nEo!Z5gKN`k zTWXiq9a=>>bBSIsM}Syr*2=}fx5GG7wRt8U9G!O zcdPDWJyp-w%j^5p8`c}wo7G#?yVa}egX`6y^~38&)<@ST)u+^tu1~E`udl5CynbE% zj{3dz`|A(YAFn@If2RIi{hj*X8n6bufofnIga&0pzXrnwlLqq!s|KHjfeir-K@A}d zLmEOGhBrhsL^Z@T#5I&Q%xu`uaK7PfqgmtN#;it7<2Q}V8&@^1XHDV5P1~AwH0^HM*L1MyYSWFTTTOSG zer|fu^h?vPO}{n0XnNK3W`c5pYC_V4x(Q!T*gHXezggC7(>$noL~~?wOmkfGnC9H( zan1S7Ma?D6Wz7}M>gJZ_w&uyr)0$^AcQtQr{;_#y^Pc8|&4-(hHJ@m{)_k-1cJtHb zm(8!6-!^}2{-j3Km|Cf}Q2VF{ssq&_>LKb-^>Fn_b+kH8ov2Pxm#Qn&Rq7gbow`xo ztOjaztGZo1MLkVDL*1o5qW%?T!96vjG_9JInnN1+0SaIM4-}veFa>s?KX3xBz#XW7 z7Z?PFf-o=wM1p8g1nNOE0AM1R45on@U=~;aI>B1-1K0w#gPq_2I0TM>W8eh1(;{s# zZ?SA~ZSidJZt-nV2et&a3~m|P65o>9Qr%M5(%9160$N&ICbdj$nb9)4MccBnWp&H9 zE#I}QZ~4AubIaD2?JYZ7cDL+px!LmPM5~EICyt*ubK-`HXC^*tWn25T8n&9Wnzh=u zy0?0^4rujj4QLH&4QY*RjcJW-5%Ht#ewxP`A!+{i?OA_1o5M zt-D(HwC-;`(t51*Wb5hHo2^gUq-|Im-bS^tZ9CRIfFTyxq!KdxsF=m39Vy2l{=F{SK#UqQC7Z(;Qi^IkBKy#o6FaY=o$ODD~ zKLfu4(}9`590o8CSO6>n)&T2)O~9YPc3>v}0AfG}lmX>{8qfj;;4I(*yg&pX02;Ug zTmx;646|6s4Ygp@9 z8(EuKTUpy#J6Qlr%ZjlcvA<@IVXtBrvKdl#72C%SvN3jqonrsZzQVr7zQL|z*R!9n zpR-@F-?HDcKZ0Gr0pMV8C^#G(1C9eHfRn)a;39AhxDnh8ZUuLNd%*o*K6n!3fof0- z8o+a)8MJ{_;3d!v`oJKV122PD!Rz2nupYb%Hh>Sn$KVt2SxH+)NnXj4l7l61iMQky zrx~XwXCh|?XEtXZX94GT&U(%!&KAx#&JNBl&Jj)#=NRWC=M1NqqvlvRRh)|)7st;D zaxhMWLvwC$>Nt-%&p9tSZ#W;gO}NduEw~-HJ-MT}W4YtGleoWdr*UU;=Wyq97jc(z zw{drJcXRi08T+{hxdq%K+@o9u_c-??x18(c-r}|34d5-{9pLeKW?q6v^Zw>t+<-O;9gqlLlp|((as3Y_p)CKAWje}-F^PmOLVrV(E0$K&Ffp$TAp~KJ_ zhz*rMJV*pdASon=4A2EA36W41%0ZVI&^72LR1e*S8lZ0bd{#hy|qrsX#8! z35Iqq6GLnjJH!{oPH|3rTihUiAbu=nb zEEyu1B$+E&FWDsdQ?gyMOR`sTKypZOSaMXtkO(Cb2`rIG6q0fYDp5-+C3=Zba!wMJ zG?ca}9a6fq^hjx0sk`(_=^MBi+yed#ZUwi88C~FRa1Xc_+z0Ll4~Iv=W8v}eBzOwE z2HpYhg%7|7;UjPn%z%%>JXipi!)mw^*2CvvGi-w$a2O`xyKn>i5N?E@!7t%A@W1d! zX)|dHX=iCyX?JN)X>Vyi=>X|Z(!tW9(&5sP(#6t!QjxSudRf*~)>k%_A=@ZBCIe)k zj4Oj=QW+}K$aFHJ?7Yk@v&kH?3$m~*B8$orvXm?>Ym~j0H(5hRKvkQ8zU`3Jd=JVYKNPmveME94FGFY=+h zNqN`u@#X8vPn2uQW95y?uatw8bCgS!%atpYtCX9SyOn#D`<401L&^f>X(dYuD!EFb zQlgY9&np(fO-YN_g=>Z|In8mJnq8mbzh8m;ZG-lK_N}h9uCp#rH%vEDH%2#3H&Hi5H&r)-p_{Fnr`w?0 ztlO&FuG^{GquZ}Ls4LJF>WXv>9iS`M8FV2Xt$U6Lno{+!;a z59zD*gg&mX(bwv)=&$SR^tbhQ4NVN+8%7zn8TJ?s843)?4aEkwfn$IS0z(x5k- zHJA)lhD!#wf#EX*4EK%S8K)U%7?&FVFs?DKH*PZSFzzz$H6Ab?G#)jcHmx?TGwm`R zF%_APnNFI{m;e)Kf=zN$nMr93MZPuOE-PV29eCr`=f%S+LuoBj1wr;k`wpF(O*hIDpo888^U~}3$ zHoq-otF{rgxUI%^%XZs#&(>gjXlt}Rv%R#vw!O2xx3{(TwvV>Ywy&}8uphSz?G^U( z_DgoR-DeNlF*|P0*lGLU_N(?A_FMMbj?WxFIL0~VId(aYI8HjwH~n@TyT&W2?qhEvs5vb+qcQs^d<+6LA`y=baX(-Fd<3 zbb6doXWUuiB%K*2?W}cPcD{3cFnM>o+xeTteE|bgZ zvb*B07w!S>+3vmW!|r45lkPKaz|D4-xgBoW&A8#d<-X&-=V|I`?)lX7nWvSfwWqCT zs%M^OnP-J(m1nJIgJ+XxpC{jQ$W!1c_nh^d_n19akIxhIggw=sjEDBrdM z^5%ILd)Iomc(-|XdiQt_c@KM!dKup1UY$4Led_z#H`F)Lx7@eVx7xSPx6!x7w~gW3 z>D%Mm?>p!#@D=)mKCut>$$SbQ;#2xipW0XH)And;9cNDuxapY!9l^i;Lzak z;Hco(;P~LA;4i^x!5P6>!JR=kXb3ujwZSK$Z$kq^^Fy0L2SP_fjL?bDsSp$@3zdf| zLaLA^qz&mqRiR5EcgPnChOkg1M1*3Y+R(Mo%}{;lA4cdw=uxOK+#=j5+%x=BI4?Xb zJTg2cJT5#Tye7OpyfM5bye+&VygR%voF6U;^TL9#C@cv}!}4$^x?{?AQg&iFq(T7Q(7A0=tgYVfEM@>>hR>dxSl~o?$Ps*VxvXDudF^= zU0#hrBc6ya z5{yJ5L?j+bMy^HfM;aNCr;!(tw~>D%AMvJmTf7rK79WRCz$f9q;8XGG_)L5bz6t*m z-;VFZcjNo;1Nc##iL>w$oQDf=FSaf7` zbaZTVVRTgyT zt&7%2??m6mTE<$%TF1VMb%}M0^@#O~<;8}@M#M(NX2q7pR>b~@t&Z)B{S`YNI~hA2 zYlyvyy@|bxeTWZ^FNiOWFO4scuZ*vXuZ?erZ;t;JKOR37KNByGv*RUkaU6|n;<~so zem-uA+v8PnMkrn#$K%m>L;O|zZT#Q(hr}0&)`_nY?GoJ*JrcbVeG)?xBNC$$V-j-` zzbF1ktWK;=97r5XoJ^cfFcWW*pC&&`wo0~6c24Fchb2cQ$0WxkCnl#PrzU44XD8<+ zHzYSF|4eR6?nv%V?n~w;4g!ZqYJ6%+YHDhFYEEi?YGG<|YJF;V>OksX zsvuRAVx&%_PNf8?U@DeMrpQz#bv1P(b&LFj{FMBR{DN#lwk6w>-;kZiq2vg1G&z=J zj3XzKlgU}+QgS)Dl3Y!$BR7(p$^B$Ld5A0^Pm@d%AlYOoDJA7(8EGKTlIKY?=^_1O zkPMTxlYNkVoMk-8KBJmY&8ZetOR59ak?KTs zrhcFXPy?w!)X&s-Y9ck6nnx|57Ew#6b<{>`GxaA`NU10drK1eg1Av zQxsK8U8e3)kEtirGwKEPFZF?LLN}*d&~51N>0Wdnx*y%2&ZCFY!|74<7Ku`ahxH10!!e6uh+TQ#B)$hOF GnDjsN6@gU% diff --git a/MeshtasticClient/Info.plist b/MeshtasticClient/Info.plist index b5b09295..74217155 100644 --- a/MeshtasticClient/Info.plist +++ b/MeshtasticClient/Info.plist @@ -2,10 +2,27 @@ + UISupportsDocumentBrowser + + LSSupportsOpeningDocumentsInPlace + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName Meshtastic + CFBundleDocumentTypes + + + CFBundleTypeName + MBTiles Map + LSHandlerRank + Default + LSItemContentTypes + + gvh.MeshtasticClient.mbtiles + + + CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -29,7 +46,7 @@ NSBluetoothAlwaysUsageDescription We use bluetooth to connect to nearby Meshtastic Devices NSBluetoothPeripheralUsageDescription - Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. + Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. NSLocationWhenInUseUsageDescription We use your location to center maps of the mesh Privacy – Bluetooth Always Usage Description @@ -65,5 +82,27 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UTImportedTypeDeclarations + + + UTTypeConformsTo + + public.data + + UTTypeDescription + MBTiles Map + UTTypeIconFiles + + UTTypeIdentifier + gvh.MeshtasticClient.mbtiles + UTTypeTagSpecification + + public.filename-extension + + mbtiles + + + + diff --git a/MeshtasticClient/MTAppDelegate.swift b/MeshtasticClient/MTAppDelegate.swift new file mode 100644 index 00000000..a59f9b27 --- /dev/null +++ b/MeshtasticClient/MTAppDelegate.swift @@ -0,0 +1,28 @@ +// +// AppDelegate.swift +// MeshtasticClient +// +// Created by Joshua Pirihi on 16/01/22. +// + +import Foundation +import UIKit + +class MTAppDelegate: NSObject, UIApplicationDelegate { + + func applicationDidFinishLaunching(_ application: UIApplication) { + } + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil + ) -> Bool { + // ... + return true + } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + print("We received a file") + return true + } +} diff --git a/MeshtasticClient/MeshtasticClientApp.swift b/MeshtasticClient/MeshtasticClientApp.swift index f7222a60..5f99066d 100644 --- a/MeshtasticClient/MeshtasticClientApp.swift +++ b/MeshtasticClient/MeshtasticClientApp.swift @@ -4,6 +4,8 @@ import CoreData @main struct MeshtasticClientApp: App { + @UIApplicationDelegateAdaptor var delegate: MTAppDelegate + let persistenceController = PersistenceController.shared @ObservedObject private var bleManager: BLEManager = BLEManager.shared diff --git a/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift new file mode 100644 index 00000000..2b967097 --- /dev/null +++ b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift @@ -0,0 +1,72 @@ +// +// LocalMBTileOverlay.swift +// MeshtasticClient +// +// Created by Joshua Pirihi on 16/01/22. +// + +import UIKit +import MapKit +import SQLite + +class LocalMBTileOverlay: MKTileOverlay { + + var path: String! + + var mb: Connection! + + init(mbTilePath path: String) { + + super.init(urlTemplate: nil) + self.path = path + + do { + self.mb = try Connection(self.path, readonly: true) + let metadata = Table("metadata") + + let name = Expression("name") + let value = Expression("value") + + let minZQuery = try mb.pluck(metadata.select(value).filter(name == "minzoom")) + self.minimumZ = Int(minZQuery![value])! + + let maxZQuery = try mb.pluck(metadata.select(value).filter(name == "maxzoom")) + self.maximumZ = Int(maxZQuery![value])! + + self.isGeometryFlipped = true + + //let boundingBoxString = try mb.pluck(metadata.select(value).filter(name == "bounds")) + //let boundCoords = boundingBoxString![value].split(separator: ",") + //self.boundingMapRect = MKMapRect(coordinates: [CLLocationCoordinate2D(latitude: Double(boundCoords[0]) ?? 0, longitude: Double(boundCoords[1]) ?? 0), CLLocationCoordinate2D(latitude: Double(boundCoords[2]) ?? 0, longitude: Double(boundCoords[3]) ?? 0)]) + + + } catch { + + } + + + } + + override func loadTile(at path: MKTileOverlayPath) async throws -> Data { + + let tileX = Int64(path.x) + let tileY = Int64(path.y) + let tileZ = Int64(path.z) + + let tileData = Expression("tile_data") + let zoomLevel = Expression("zoom_level") + let tileColumn = Expression("tile_column") + let tileRow = Expression("tile_row") + + if let dataQuery = try self.mb.pluck(Table("tiles").select(tileData).filter(zoomLevel == tileZ).filter(tileColumn == tileX).filter(tileRow == tileY)) { + + let data = Data(bytes: dataQuery[tileData].bytes, count: dataQuery[tileData].bytes.count)//dataQuery![tileData].bytes + + return data + + } else { + return Data() + } + } + +} diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index dddcc826..570da564 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -97,7 +97,7 @@ public struct MapView: UIViewRepresentable { //self.annotations = annotations - self.locationNodes = locationNodes + //self.locationNodes = locationNodes self.overlays = overlays @@ -135,22 +135,10 @@ public struct MapView: UIViewRepresentable { if self.customMapOverlay != self.presentCustomMapOverlayHash { mapView.removeOverlays(mapView.overlays) if let customMapOverlay = self.customMapOverlay { - let overlay = CustomMapOverlaySource( - parent: self, - mapName: customMapOverlay.mapName, - tileType: customMapOverlay.tileType, - defaultTile: customMapOverlay.defaultTile - ) - if let minZ = customMapOverlay.minimumZoomLevel { - overlay.minimumZ = minZ - } + let overlay = LocalMBTileOverlay(mbTilePath: Bundle.main.path(forResource: "offline_map", ofType: "mbtiles")!) - if let maxZ = customMapOverlay.maximumZoomLevel { - overlay.maximumZ = maxZ - } - - overlay.canReplaceMapContent = customMapOverlay.canReplaceMapContent + overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent mapView.addOverlay(overlay) } diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index b9cc26b1..280fb2d0 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -49,7 +49,7 @@ struct NodeMap: View { )*/ @State private var customMapOverlay: MapView.CustomMapOverlay? = MapView.CustomMapOverlay( - mapName: UserDefaults.standard.string(forKey: "meshMapCustomTileServer"), + mapName: "offlinemap", tileType: "png", canReplaceMapContent: true ) From 21f2e0fbf4729d3f15ab98199f3a39959e238f2f Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Tue, 18 Jan 2022 17:09:23 +1300 Subject: [PATCH 09/21] Make BLEManager handle Position packets that arrive under the PositionApp port number --- .../UserInterfaceState.xcuserstate | Bin 100418 -> 129299 bytes MeshtasticClient/Helpers/BLEManager.swift | 25 +++++++ .../Views/Map/LocalMBTileOverlay.swift | 61 +++++++++++++++--- .../Views/Map/MapViewModule.swift | 53 ++++++++++----- MeshtasticClient/Views/Nodes/NodeMap.swift | 4 +- 5 files changed, 117 insertions(+), 26 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index 66abbf05c5972d37806bdf97770f5cc0336576e2..c932fa4414624c3f5e906a34fac5ce2cf5ef044d 100644 GIT binary patch literal 129299 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�SySMJwaQNTqzKi-m_qA@f?g!#m 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 Ve-8cs{VTKoto{G@uh4)U{|6sgzO?`V literal 100418 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

$Z&Pd8kPfblsY2BisMnMbO6_lHum75t4 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 J3>`e=e*n6&!Il63 diff --git a/MeshtasticClient/Helpers/BLEManager.swift b/MeshtasticClient/Helpers/BLEManager.swift index 87547c94..6506b552 100644 --- a/MeshtasticClient/Helpers/BLEManager.swift +++ b/MeshtasticClient/Helpers/BLEManager.swift @@ -811,6 +811,31 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph } fetchedNode[0].snr = decodedInfo.packet.rxSnr + + if let positionMessage = try? Position(serializedData: decodedInfo.packet.decoded.payload) { + let position = PositionEntity(context: context!) + position.latitudeI = positionMessage.latitudeI + position.longitudeI = positionMessage.longitudeI + position.altitude = positionMessage.altitude + position.batteryLevel = positionMessage.batteryLevel + position.time = Date(timeIntervalSince1970: TimeInterval(Int64(positionMessage.time))) + + let mutablePositions = fetchedNode[0].positions!.mutableCopy() as! NSMutableOrderedSet + mutablePositions.add(position) + + print("💾 Recieved a Position Packet") + + if position.coordinate == nil { + var newPostions = [PositionEntity]() + newPostions.append(position) + fetchedNode[0].positions? = NSOrderedSet(array: newPostions) + + } else { + + fetchedNode[0].positions = mutablePositions.copy() as? NSOrderedSet + } + } + } else { return diff --git a/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift index 2b967097..088f6365 100644 --- a/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift +++ b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift @@ -9,12 +9,43 @@ import UIKit import MapKit import SQLite +extension MKMapRect { + init(coordinates: [CLLocationCoordinate2D]) { + self = MKMapRect() + var coordinates = coordinates + if !coordinates.isEmpty { + let first = coordinates.removeFirst() + var top = first.latitude + var bottom = first.latitude + var left = first.longitude + var right = first.longitude + coordinates.forEach { coordinate in + top = max(top, coordinate.latitude) + bottom = min(bottom, coordinate.latitude) + left = min(left, coordinate.longitude) + right = max(right, coordinate.longitude) + } + let topLeft = MKMapPoint(CLLocationCoordinate2D(latitude:top, longitude:left)) + let bottomRight = MKMapPoint(CLLocationCoordinate2D(latitude:bottom, longitude:right)) + self = MKMapRect(x:topLeft.x, y:topLeft.y, + width:bottomRight.x - topLeft.x, height:bottomRight.y - topLeft.y) + } + } +} + class LocalMBTileOverlay: MKTileOverlay { var path: String! var mb: Connection! + private var _boundingMapRect: MKMapRect! + override var boundingMapRect: MKMapRect { + get { + return _boundingMapRect + } + } + init(mbTilePath path: String) { super.init(urlTemplate: nil) @@ -35,19 +66,29 @@ class LocalMBTileOverlay: MKTileOverlay { self.isGeometryFlipped = true - //let boundingBoxString = try mb.pluck(metadata.select(value).filter(name == "bounds")) - //let boundCoords = boundingBoxString![value].split(separator: ",") - //self.boundingMapRect = MKMapRect(coordinates: [CLLocationCoordinate2D(latitude: Double(boundCoords[0]) ?? 0, longitude: Double(boundCoords[1]) ?? 0), CLLocationCoordinate2D(latitude: Double(boundCoords[2]) ?? 0, longitude: Double(boundCoords[3]) ?? 0)]) + let boundingBoxString = try mb.pluck(metadata.select(value).filter(name == "bounds")) + let boundCoords = boundingBoxString![value].split(separator: ",") + let coords = [ + CLLocationCoordinate2D(latitude: Double(boundCoords[1]) ?? 0, + longitude: Double(boundCoords[0]) ?? 0), + CLLocationCoordinate2D(latitude: Double(boundCoords[3]) ?? 0, + longitude: Double(boundCoords[2]) ?? 0) + ] + self._boundingMapRect = MKMapRect(coordinates: coords) } catch { - + //print("MAP ERROR \(error)") } } - override func loadTile(at path: MKTileOverlayPath) async throws -> Data { + override func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void) { + + //} + + //override func loadTile(at path: MKTileOverlayPath) async throws -> Data { let tileX = Int64(path.x) let tileY = Int64(path.y) @@ -58,14 +99,18 @@ class LocalMBTileOverlay: MKTileOverlay { let tileColumn = Expression("tile_column") let tileRow = Expression("tile_row") - if let dataQuery = try self.mb.pluck(Table("tiles").select(tileData).filter(zoomLevel == tileZ).filter(tileColumn == tileX).filter(tileRow == tileY)) { + if let dataQuery = try? self.mb.pluck(Table("tiles").select(tileData).filter(zoomLevel == tileZ).filter(tileColumn == tileX).filter(tileRow == tileY)) { let data = Data(bytes: dataQuery[tileData].bytes, count: dataQuery[tileData].bytes.count)//dataQuery![tileData].bytes - return data + //return data + result(data, nil) } else { - return Data() + print("💥 No tile here: x:\(tileX) y:\(tileY) z:\(tileZ)") + //return Data() + let error = NSError(domain: "LocalMBTileOverlay", code: 1, userInfo: ["reason": "no_tile"]) + result(nil, error) } } diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index 1cbb43c0..f7468edd 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -11,9 +11,9 @@ import CoreData #if canImport(MapKit) && canImport(UIKit) public struct MapView: UIViewRepresentable { - //@Environment(\.managedObjectContext) var context + @Environment(\.managedObjectContext) var context - var context: NSManagedObjectContext? + //var context: NSManagedObjectContext? //@Binding private var region: MKCoordinateRegion @@ -40,8 +40,11 @@ public struct MapView: UIViewRepresentable { private var overlays: [Overlay] - @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "lastHeard", ascending: false)], animation: .default) - private var locationNodes: FetchedResults + //@FetchRequest(sortDescriptors: [NSSortDescriptor(key: "lastHeard", ascending: false)], animation: .default) + // private var locationNodes: FetchedResults + + @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "time", ascending: false)], animation: .default) + private var positions: FetchedResults //@State private var locationNodes: [NodeInfoEntity] @@ -62,8 +65,8 @@ public struct MapView: UIViewRepresentable { userLocation: Binding = .constant(nil), //annotations: [MKPointAnnotation] = [], //locationNodes: [NodeInfoEntity] = [], - overlays: [Overlay] = [], - context: NSManagedObjectContext? = nil + overlays: [Overlay] = [] + //context: NSManagedObjectContext? = nil ) { //self._region = region @@ -111,7 +114,7 @@ public struct MapView: UIViewRepresentable { mapView.delegate = context.coordinator mapView.register(PositionAnnotationView.self, forAnnotationViewWithReuseIdentifier: NSStringFromClass(PositionAnnotationView.self)) - Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in + /*Timer.scheduledTimer(withTimeInterval: 10, repeats: true) { timer in for node in self.locationNodes { // try and get the last position if (node.positions?.count ?? 0) > 0 && (node.positions!.lastObject as! PositionEntity).coordinate != nil { @@ -123,7 +126,7 @@ public struct MapView: UIViewRepresentable { mapView.addAnnotation(annotation) } } - } + }*/ return mapView } @@ -139,18 +142,20 @@ public struct MapView: UIViewRepresentable { mapView.removeOverlays(mapView.overlays) if let customMapOverlay = self.customMapOverlay { - let overlay = LocalMBTileOverlay(mbTilePath: Bundle.main.path(forResource: "offline_map", ofType: "mbtiles")!) - - overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent - - mapView.addOverlay(overlay) + if let tilePath = Bundle.main.path(forResource: "offline_map", ofType: "mbtiles") { + let overlay = LocalMBTileOverlay(mbTilePath: tilePath) + + overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent + + mapView.addOverlay(overlay) + } } DispatchQueue.main.async { self.presentCustomMapOverlayHash = self.customMapOverlay } } - if mapView.overlays.count != (self.overlays.count + (self.customMapOverlay == nil ? 0 : 1)) { + /*if mapView.overlays.count != (self.overlays.count + (self.customMapOverlay == nil ? 0 : 1)) { context.coordinator.overlays = self.overlays mapView.overlays.forEach { overlay in if !(overlay is MKTileOverlay) { @@ -158,7 +163,7 @@ public struct MapView: UIViewRepresentable { } } mapView.addOverlays(self.overlays.map { overlay in overlay.shape }) - } + }*/ if mapView.mapType != self.mapType { mapView.mapType = self.mapType @@ -210,7 +215,7 @@ public struct MapView: UIViewRepresentable { shouldMoveRegion = true } - for node in self.locationNodes { + /*for node in self.locationNodes { // try and get the last position if (node.positions?.count ?? 0) > 0 && (node.positions!.lastObject as! PositionEntity).coordinate != nil { let annotation = PositionAnnotation() @@ -220,6 +225,22 @@ public struct MapView: UIViewRepresentable { mapView.addAnnotation(annotation) } + }*/ + + var displayedNodes: [Int64] = [] + for position in self.positions { + if position.nodePosition == nil || displayedNodes.contains(position.nodePosition!.num) || position.coordinate == nil { + continue + } + + let annotation = PositionAnnotation() + annotation.coordinate = position.coordinate! + annotation.title = position.nodePosition!.user?.longName ?? "Unknown" + annotation.shortName = position.nodePosition!.user?.shortName?.uppercased() ?? "???" + + mapView.addAnnotation(annotation) + + displayedNodes.append(position.nodePosition!.num) } if shouldMoveRegion { diff --git a/MeshtasticClient/Views/Nodes/NodeMap.swift b/MeshtasticClient/Views/Nodes/NodeMap.swift index be4918e1..c9e99e80 100644 --- a/MeshtasticClient/Views/Nodes/NodeMap.swift +++ b/MeshtasticClient/Views/Nodes/NodeMap.swift @@ -108,8 +108,8 @@ struct NodeMap: View { userLocation: self.$userLocation, //annotations: self.annotations, //locationNodes: self.locationNodes.map({ nodeinfo in return nodeinfo }), - overlays: self.overlays, - context: self.context + overlays: self.overlays + //context: self.context ) .frame(maxHeight: .infinity) From cabd407c0f3f6f76b886ca3ddb2dbbc6de85e7d8 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 20 Jan 2022 18:21:11 -0800 Subject: [PATCH 10/21] Hide tile server setting, remove map tiles --- Meshtastic Client.xcodeproj/project.pbxproj | 12 ++++-------- MeshtasticClient/Helpers/BLEManager.swift | 4 ++-- MeshtasticClient/Info.plist | 10 +++++----- MeshtasticClient/Views/Settings/AppSettings.swift | 2 +- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 84f3004b..980e4498 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; - C9697F9B2793366500250207 /* offline_map.mbtiles in Resources */ = {isa = PBXBuildFile; fileRef = C9697F9A2793366500250207 /* offline_map.mbtiles */; }; C9697F9D279336B700250207 /* LocalMBTileOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */; }; C9697FA527933B8C00250207 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = C9697FA427933B8C00250207 /* SQLite */; }; C9697FA72793F9FB00250207 /* MTAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697FA62793F9FB00250207 /* MTAppDelegate.swift */; }; @@ -78,7 +77,6 @@ /* Begin PBXFileReference section */ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; - C9697F9A2793366500250207 /* offline_map.mbtiles */ = {isa = PBXFileReference; lastKnownFileType = file; path = offline_map.mbtiles; sourceTree = ""; }; C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalMBTileOverlay.swift; sourceTree = ""; }; C9697FA62793F9FB00250207 /* MTAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTAppDelegate.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; @@ -326,7 +324,6 @@ DDC2E18926CE24F70042C5E4 /* Resources */ = { isa = PBXGroup; children = ( - C9697F9A2793366500250207 /* offline_map.mbtiles */, DDC2E15B26CE248F0042C5E4 /* Assets.xcassets */, ); path = Resources; @@ -490,7 +487,6 @@ files = ( DDC2E15F26CE248F0042C5E4 /* Preview Assets.xcassets in Resources */, DDC2E15C26CE248F0042C5E4 /* Assets.xcassets in Resources */, - C9697F9B2793366500250207 /* offline_map.mbtiles in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -740,9 +736,9 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 15; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = 37C534H572; + DEVELOPMENT_TEAM = GCH7VS5Y9R; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -770,9 +766,9 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 15; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = 37C534H572; + DEVELOPMENT_TEAM = GCH7VS5Y9R; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; diff --git a/MeshtasticClient/Helpers/BLEManager.swift b/MeshtasticClient/Helpers/BLEManager.swift index 6506b552..2545f807 100644 --- a/MeshtasticClient/Helpers/BLEManager.swift +++ b/MeshtasticClient/Helpers/BLEManager.swift @@ -822,9 +822,9 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph let mutablePositions = fetchedNode[0].positions!.mutableCopy() as! NSMutableOrderedSet mutablePositions.add(position) - + print("💾 Recieved a Position Packet") - + if position.coordinate == nil { var newPostions = [PositionEntity]() newPostions.append(position) diff --git a/MeshtasticClient/Info.plist b/MeshtasticClient/Info.plist index 74217155..5d7d0870 100644 --- a/MeshtasticClient/Info.plist +++ b/MeshtasticClient/Info.plist @@ -2,10 +2,6 @@ - UISupportsDocumentBrowser - - LSSupportsOpeningDocumentsInPlace - CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -43,10 +39,12 @@ public.app-category.utilities LSRequiresIPhoneOS + LSSupportsOpeningDocumentsInPlace + NSBluetoothAlwaysUsageDescription We use bluetooth to connect to nearby Meshtastic Devices NSBluetoothPeripheralUsageDescription - Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. + Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. NSLocationWhenInUseUsageDescription We use your location to center maps of the mesh Privacy – Bluetooth Always Usage Description @@ -82,6 +80,8 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UISupportsDocumentBrowser + UTImportedTypeDeclarations diff --git a/MeshtasticClient/Views/Settings/AppSettings.swift b/MeshtasticClient/Views/Settings/AppSettings.swift index 1a331f6c..686a333d 100644 --- a/MeshtasticClient/Views/Settings/AppSettings.swift +++ b/MeshtasticClient/Views/Settings/AppSettings.swift @@ -171,7 +171,7 @@ struct AppSettings: View { } } .pickerStyle(DefaultPickerStyle()) - TextField("Custom Tile Server", text: $userSettings.meshMapCustomTileServer) + // TextField("Custom Tile Server", text: $userSettings.meshMapCustomTileServer) } Section(header: Text("DEBUG")) { // Toggle(isOn: $userSettings.meshActivityLog) { From b01272c8145b0f3904666ad91c1aaa1fcfb175eb Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Sat, 22 Jan 2022 15:23:09 +1300 Subject: [PATCH 11/21] Import working. Still need to check for file validity --- Meshtastic Client.xcodeproj/project.pbxproj | 6 +--- .../UserInterfaceState.xcuserstate | Bin 129299 -> 121118 bytes MeshtasticClient/MTAppDelegate.swift | 28 ------------------ MeshtasticClient/MeshtasticClientApp.swift | 18 +++++++++-- .../Views/Map/MapViewModule.swift | 11 ++++++- 5 files changed, 27 insertions(+), 36 deletions(-) delete mode 100644 MeshtasticClient/MTAppDelegate.swift diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 980e4498..1f46a7c2 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -10,7 +10,6 @@ C9483F6D2773017500998F6B /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9483F6C2773017500998F6B /* MapView.swift */; }; C9697F9D279336B700250207 /* LocalMBTileOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */; }; C9697FA527933B8C00250207 /* SQLite in Frameworks */ = {isa = PBXBuildFile; productRef = C9697FA427933B8C00250207 /* SQLite */; }; - C9697FA72793F9FB00250207 /* MTAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9697FA62793F9FB00250207 /* MTAppDelegate.swift */; }; C9A7BC1027759A9600760B50 /* PositionAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */; }; C9A88B55278B503C00BD810A /* MapViewModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B54278B503C00BD810A /* MapViewModule.swift */; }; C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9A88B56278B559900BD810A /* apponly.pb.swift */; }; @@ -78,7 +77,6 @@ /* Begin PBXFileReference section */ C9483F6C2773017500998F6B /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = ""; }; C9697F9C279336B700250207 /* LocalMBTileOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalMBTileOverlay.swift; sourceTree = ""; }; - C9697FA62793F9FB00250207 /* MTAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MTAppDelegate.swift; sourceTree = ""; }; C9A7BC0F27759A9600760B50 /* PositionAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PositionAnnotationView.swift; sourceTree = ""; }; C9A88B54278B503C00BD810A /* MapViewModule.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapViewModule.swift; sourceTree = ""; }; C9A88B56278B559900BD810A /* apponly.pb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = apponly.pb.swift; sourceTree = ""; }; @@ -265,7 +263,6 @@ DDC2E18826CE24EE0042C5E4 /* Model */, DDC2E18926CE24F70042C5E4 /* Resources */, DDC2E15726CE248E0042C5E4 /* MeshtasticClientApp.swift */, - C9697FA62793F9FB00250207 /* MTAppDelegate.swift */, DDC2E16526CE248F0042C5E4 /* Info.plist */, DDC2E15D26CE248F0042C5E4 /* Preview Content */, ); @@ -562,7 +559,6 @@ DDAF8C6326ED0A230058C060 /* admin.pb.swift in Sources */, C9483F6D2773017500998F6B /* MapView.swift in Sources */, DDAF8C5826ED07FD0058C060 /* mesh.pb.swift in Sources */, - C9697FA72793F9FB00250207 /* MTAppDelegate.swift in Sources */, DD8169FB271F1F3A00F4AB02 /* MeshLog.swift in Sources */, DD2E65262767A01F00E45FC5 /* NodeDetail.swift in Sources */, C9A88B57278B559900BD810A /* apponly.pb.swift in Sources */, @@ -738,7 +734,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = GCH7VS5Y9R; + DEVELOPMENT_TEAM = 37C534H572; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index c932fa4414624c3f5e906a34fac5ce2cf5ef044d..423ac35fef6e68e9e2bdb036d52fab8875ed4c14 100644 GIT binary patch literal 121118 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 B9WMX? literal 129299 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�SySMJwaQNTqzKi-m_qA@f?g!#m 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 Ve-8cs{VTKoto{G@uh4)U{|6sgzO?`V diff --git a/MeshtasticClient/MTAppDelegate.swift b/MeshtasticClient/MTAppDelegate.swift deleted file mode 100644 index a59f9b27..00000000 --- a/MeshtasticClient/MTAppDelegate.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// AppDelegate.swift -// MeshtasticClient -// -// Created by Joshua Pirihi on 16/01/22. -// - -import Foundation -import UIKit - -class MTAppDelegate: NSObject, UIApplicationDelegate { - - func applicationDidFinishLaunching(_ application: UIApplication) { - } - - func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil - ) -> Bool { - // ... - return true - } - - func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { - print("We received a file") - return true - } -} diff --git a/MeshtasticClient/MeshtasticClientApp.swift b/MeshtasticClient/MeshtasticClientApp.swift index 5f99066d..e72b1713 100644 --- a/MeshtasticClient/MeshtasticClientApp.swift +++ b/MeshtasticClient/MeshtasticClientApp.swift @@ -3,8 +3,6 @@ import CoreData @main struct MeshtasticClientApp: App { - - @UIApplicationDelegateAdaptor var delegate: MTAppDelegate let persistenceController = PersistenceController.shared @@ -19,6 +17,22 @@ struct MeshtasticClientApp: App { .environment(\.managedObjectContext, persistenceController.container.viewContext) .environmentObject(bleManager) .environmentObject(userSettings) + .onOpenURL(perform: { (url) in + //we are expecting a .mbtiles map file that contains raster data + //save it to the documents directory, and name it offline_map.mbtiles + let fileManager = FileManager.default + let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! + let destination = documentsDirectory.appendingPathComponent("offline_map.mbtiles", isDirectory: false) + try? fileManager.copyItem(at: url, to: destination) + + if (fileManager.fileExists(atPath: destination.path)) { + print("ℹ️ Saved the map file") + } else { + print("💥 Didn't save the map file") + } + + } + ) } .onChange(of: scenePhase) { (newScenePhase) in switch newScenePhase { diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index f7468edd..28fc41b4 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -142,12 +142,21 @@ public struct MapView: UIViewRepresentable { mapView.removeOverlays(mapView.overlays) if let customMapOverlay = self.customMapOverlay { - if let tilePath = Bundle.main.path(forResource: "offline_map", ofType: "mbtiles") { + let fileManager = FileManager.default + let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! + let tilePath = documentsDirectory.appendingPathComponent("offline_map.mbtiles", isDirectory: false).path + if fileManager.fileExists(atPath: tilePath) { + //if let tilePath = Bundle.main.path(forResource: "offline_map", ofType: "mbtiles") { + + print("Loading local map file") + let overlay = LocalMBTileOverlay(mbTilePath: tilePath) overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent mapView.addOverlay(overlay) + } else { + print("Couldn't find a local map file to load") } } DispatchQueue.main.async { From 6b7b7dc1e05053b0c4b82aa9109b6685af939830 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 04:53:59 -0800 Subject: [PATCH 12/21] Create LICENSE GPL V3 --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From 718a343ef7b4760a03a674f86e3011560b95eb77 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 17:18:52 -0800 Subject: [PATCH 13/21] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ed03ef3d..f2115d53 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ ## OS Requirements Requires iOS 15 + +Reguires macOS 12 + ## Code Standards From a0db1ab8817aa1c955e9cd6e3d5774569e63e0b0 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 17:19:13 -0800 Subject: [PATCH 14/21] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f2115d53..e88c55cf 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ ## OS Requirements -Requires iOS 15 + -Reguires macOS 12 + +* Requires iOS 15 + +* Reguires macOS 12 + ## Code Standards From a4a67605b4039097dac11a6ff314ae85ce27c9d0 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 17:20:36 -0800 Subject: [PATCH 15/21] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e88c55cf..5cd610c0 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ * Use SwiftUI whenever possible * Use Hierarchical icons +* Use Core Data for persistence - Requires SwiftLint - see https://github.com/realm/SwiftLint From a9fc2ec32636430549afca6ffba6850b27339dcb Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 17:36:38 -0800 Subject: [PATCH 16/21] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5cd610c0..fc25ae01 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# Meshtastic Client +# Meshtastic Apple Clients ## OS Requirements -* Requires iOS 15 + -* Reguires macOS 12 + +* iOS App Requires iOS 15 + +* Mac App Reguires macOS 12 + ## Code Standards From 133918a811fdee96e6492342ea342cceeb9d7ba5 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 24 Jan 2022 18:23:12 -0800 Subject: [PATCH 17/21] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fc25ae01..baec1bd5 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ ## OS Requirements * iOS App Requires iOS 15 + +* iPadOS App Requires iPadOS 15 + * Mac App Reguires macOS 12 + ## Code Standards From d9dc5a9f719aef9d145b8b3b68a871f54b30e719 Mon Sep 17 00:00:00 2001 From: Joshua Pirihi Date: Sat, 29 Jan 2022 14:25:08 +1300 Subject: [PATCH 18/21] Check for a valid map file, and update the map immediately upon import --- .../UserInterfaceState.xcuserstate | Bin 121118 -> 104671 bytes MeshtasticClient/MeshtasticClientApp.swift | 11 +++++++++++ .../Views/Map/LocalMBTileOverlay.swift | 16 ++++++++++++++-- .../Views/Map/MapViewModule.swift | 14 ++++++++++---- 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate b/Meshtastic Client.xcodeproj/project.xcworkspace/xcuserdata/joshuapirihi.xcuserdatad/UserInterfaceState.xcuserstate index 423ac35fef6e68e9e2bdb036d52fab8875ed4c14..8bcb5868b05952ccf6d198aeb2df49b63559df42 100644 GIT binary patch literal 104671 zcmeFa1$%Ku6913w_cnm2{2o7mv69O@^30m4a6zWQy8c8U$0qX8b zjT+S5y_C8_e`oI9yGcl(=~Mc=@BjUme6nP(jGgbCbLPxBXNqepE5h}Oi7#@9!yMsw zPT)jN;^aAfmxt=Y6*bj!`xe!eEUtiWGyB%p)XwQ!Q@kWpQXh74=#)43U3J~xvq;AU}UTsgOxtKgP!OSwvJCAW%O&8^{1;8gAu?o{qT3J;y!Iy}-T3z0SSCy~lmT{lNXm z{lxvu{lfjq{l@){WTYSqvLYL@BMnCH(cS1CbT4`ty@Fmvuc6n`8|Y2+7J3`KgWg5&p|8+B^flU# zzCj1jLG%aaFv2{Rv4R~q26w~VaSz-RAA<+sWAR{|gp+X!9*Q&Ycsv0ghbQ7mcru=X zr{dXo4xWocxB;Jl*WwNMbbJOr2cL`2!x!R<@Wpr&z8qhTH{-2%8{Up@z&GMs@!j}7 zd_R5wKZqa2&)^sF>-cT_4t^JZh(E=j;ji#M{4M?te~*8_2Z=xwVkZvbBwpepF{B$g zhQyM-q#ubVsbnO{BH3gt8Am3PsU)AwBy-4IvXCqy<)oS{C#%UCauPY2oJ!6lXOZ*B z`Q#$9lUz@3AUBem$j#&yax1xw+)nNw_mGFlBji!?6nUELB`=bf$jjsv@(y{IyhlDK z-;kfl@8kfFc+88u%qzT|ckmv52p`AC^9g(+pTsBgDg01Al~3b`@mYK}pTke!kKiAyvo}h6$sD(L#n3eO39g)f9J zg|CEt!q>un;Tz#w;XC1b;RoRtkrR=KMU!Y2ouW&0iypDN*hB0k_7(?;Nn)y)DGn1y ziP_>f*eSL!GAmxf4jQoNKPrAWi1;Zn9VRvITwl%`7g(oCs9 znkCJailkzxL@Jd+5|!3TCrj(44bmynsnTiE>Czd}nbKL(+0uE^`O+oQrPAfn6;hMb zENz!|NIRv+r6;5(rKhB)rQOmq(zDWY((}>_(jMt$>0@cX^o{hb^qusZi8m=Gi^*dO zn1ZGrre3Cgrv9d5O@mDdrbN?F(-hNG(=^j`(+pF-X{M>bG|M#GG{-d8w9r&)3Yp4G zm8L3FgK4>Gg=wW}o#|xLdea8eDW+3RrJH4&zW8|y<_^s^o8k5(|*(Urk_o}n+}+f8Jk73-Rv_TWA0<_YaVDG zVoo#kxx`#*4w);=wdUpK73P!7s`)hY z>E<)c=a|noZ!$NUuQ6X|ZZU5+-(bGce7pG`^JC^+=I6~Xm|rr#XMW%Of%$9me)Bix zZ_VGCe=+|mb25@e*&#dSZgO||7&%o=lhfr4Ia3}c50^*CBjr)@JbAvnKwc;>k_+YI zr|^DV9?$r&&(7 zoMG8$xxljBvcs~|a=qmS%Z-+sEH_(jvD|98&2pERZ+XzN%ksG8Im`2w7c8$?UblQ} z`OfmaoyS1;ipLL{lly$Uqj5W)e zZOyUfTJx-9t>df{tuw51taGhJ)?#akb*Z(|y573MdW!W_>uJ{0t!G%zw4P->+j@?5 zqxCZD)z;0{YpvH=TdX%*Z?QgY-EDow`mFUi>+{wZtb43`tuI<%vc6`0*ZQ&b6YJO3 z{nl@+zgT~@xomEm$L6*9Y<^q77PQ6Ky4kwhVr>I#akh9{nl0UyVH;!1vdy*4v(2|H zur0JLvK88nw-wonZ6&sHTeYp;)?iy}JJEKM?Nr-ow#~LiTa&HXw#9ahZL4jY?ONM) zwies#sKDT{g`_lH6ZJ+IH+kV?OwjXT2+p(S4 z6}!c5wR`P8d%Qito@h_9C)-o(L+z>dG<&)|!#={EW1nC@&OXDQZ=Y#jU|(o&urIf- zu&=bQvahzUv7caHYd_I`lKo`+8TRw+=i4u{Z?a!*Z?<`-? zu|H~m%)ZP1l>G(!9{a2I*X-}v-?x8Y|Iq%C{VV%Ehsj}f$PUF}aabKThuz_DI2|sB z+u?Wgbo6!fbHq8~9SM$1$1ulm#|THRBhRtWvB**AINnj@D0Y-MN*y6bnWNmX)KTYH z=~(5Uj&+Wc9qS!uInH)$b6o4V&e7u7?%3hj>A2o;gX2cWO^%x#w>$20JmPrNvD@*C z<5|b6j@KNoJKk`7;P}w-yW@c4pyLlG=R{8IBu?HbI7O%IbUIzmfHUaqM-C5vV;9Te|ah5tOomI|iXN_}}bG37g^91Kw z=LY8~&a0ePJ2yKUolVYW=N9KR&aKXE&TE}JoVPe{b>8N@-FdI`KIdc3UCzgyPdJ}< zzTo`K`ML88=a7lX{oHZxcz1$3(VgMW zbWeBBaOb;cx(nR1+_T+t+;iRY-1FUq?lO0!yUN|*UhY28eUkeU_oeR3+?(8&yRUFx z>AuQ+wR^L>(S413hkK{{7Wb|0d)@cB?{`1oe%$?p`(5{Y?)TjvxIc7%ULQlw3<~h-Gl1KGW&pOY^p7ov$o>M%hdQS74B~JHT;JM7R$5oJm=Z#dEN7d=S|Q1o)0`o(RmhVE}MZSxDO}=K|7T-0#t-kAhH~4P!-Qv5$_n2>& z?{VJ~z9)T8`JVOd@$L1!;(OKimhWxfJH8KnANfA^?eqQaJK#I$`@>KCl3(##{4T%S z@9}&6-TdACJ^VfW$M^^MQ~hcFbbp3_gnx`b*PrJ<&OgyV$v@pc!=LY;?O*6G@)!G; z`&al^`d9f^``7qS@UQis=wIhQ*?+44H2>-TGyLcHFZ5sJzs$eMf4To^|2F@2{|^6+ z{+s;w`0w@K=fB_ofd3KyF8}lX7yNttd;PEYU-iG{|Iq)5{|o<@{{8-M{6G1B_W$BP z;6E530Xd)qECE-bXP|eWPhdb`U|>ifE|40?3}glJ0+R#N19Jll1Lc9GfyzK_U|FCc zusm>1;M~A@f%5|!0~Z7?3|thrIB-ee(!dpg=D>Av7OV?~gDZn4 z1kVX>3|NC z1wROW7W_Q8FZg}%r{IAY62r&HF}4_cj5{V66BE-dCM9NQOlnM8OnOX4OlHimnBg%a zVn)V{iWwaS)YRt5l=`k~6@?&Pk6vWJmSrAheQy#N8rXprZOnpp4%*vS4 zVor}aBj(JQvtrJUIX~vYn2TaI#WclijcJM58FP2c{V@;3JW|lNx}maiFK6X!oSk!U z9xgC@N`Cy((5mn}_&>7BpVhadvM3yG=A4|1bE{Y-D&Nd`IUna&1&a1l{GHmr(9t(7 zJ0(3UGk0uUUP@|O+|cZtl(?+qtmL?%DXH1X8JUUMW3#j1vFx<$jEuCQiE&BENpLeO zEj2D{Y*uDmVn#+rVrF7WT5?)ap~EvFH*a=L-O_MvQAsGbrlg@NR9$bhv(33~26BVok-^+R)vDUmbc*)DGXXVSja$Tu zuc$7qSuwV*s47(G7}d7EnMK7pHP!WXHIEl&rXnl-xY%&CravjLe}) zaY-rZNg2sGDJf~Gd4-Pt(Gub9?4r8aMd4W$;fmtQ(Cmu(#rYN0<&`10Q|K7jwkEv| zg;Vlpgu?YTbw%*FW;e+#sxK;Z90QMLmDGdbB{~%Co8}0%)>>0jSzJ^%!Kk&+5oo=q zwW!Ul9&6UX@DCk2BsM8AHF52b*fmL+$%)#x)U|7kVNU0=xVY=M3@(!!#tr92a3i@< z+-Po$YF8bqQ+26s)uVbwwP1Iu zscU^K`lj~Sf>{-z6}h3}hVpVCoWngiR8>>AYFu4W?c&y}MjN6vEQIRvN-HAenvL$y z<`!{rTe&&hTy7pWpIg8!RAba`YIn7V+EYDdD_6)J&lPdSTnSgI#;WmZp1M@6RKu*B zv2#jlN<;Bb?!=1v_-GsBqhu^}bUVx=GXV&Nj_!xKtMvi~C_hvQ0}(2X77bRoadkBf zwfYUP*@X)oJq}aIgmAba6gIk9#no|fTexbjhO6b4slC+RY9F=l7B0-ya}8Wr?WYb< z2f`2 zcOnhm!$h5<{}~D|n3A7c0aK%NV91!x6GhfOoWjnpiF1M$% z;-H+?D)buWPOGb_uPJUQ3p?;0e<0ZPy6&!ly1FS_y7%aLOcyIFU=uo=Ke?!OPp{s6 zx?a_rHmIuKfad-^dUjTmgWogg*uh;d?zxRnTwFp^e2-2`Lwk~vQ@UQ-1%wTLdHFY2 zeAASc(UhLvhl~7c${f~b%(5G`Z+*s`t!jTXj)2NXj%gm%V{~V=7dnE6k|?XTHa@(f zqO9H_fhpbzX7_mD-4ns6J|B425-_K$FtbkOHgVU1$@~uP9x#%>&wa`58n816Y zK4>5sfu@3?doEgpmLU~P+vk8Wdn>vY?L-fv=fGV37MQ5NM?a$9uno-6{c!@ApHuND zoCT)md|ZI%;YGL(pQCpTBmI96DeeB@^Ym$cA$JkT(7ctkmAVw1+E8CvQ5|CB*S8he zyo<1mX6|C{5^h76pD%P27tX97moqCVEqB(;);fSUC#SW3ZBymURkfjTdZfC-S^0%2 zNv+Rm(u|*Y7^jRb?OKyDLU(X?F&2HNn%T(Rtqx->n$ zxrcj+z4;XPB0Qee?#;th3WBxGP^6>}iA_#}p)g8(lY2Wl67Q(FYJcO#``iay97xJI zS4?C1g!`2HjQgDXg8Nb(tBzC0s}t1Y)QMYRet*sF2UYD`z|$mkvRVX6+7gB) zUHk#COP1!;R57{6!)|yfy*480X%1}k?EoTN+%?=m?hnKvgs?hA zovKb#r>irrK|J(nFp`i-&4(TZ)Y)om zxD$BC_Ujj$q_HC8M*&chB8(_MRNo9&g4~9JDf#e4ub~_2(TKXMbJWEzqhnAk>IJp- z2HxKn^@HC5AOi+LwZ`geQca1b>MUyIdecB7fmTG-+8H%9^}t+0`gM4-s;Hv6^>N07 znEEoc%qX+~>cct%@(MX{as*I)e(r7;Sucs2)J-5cEMFjz)m84kT?AQu+0D@VHj;w4#c-CNz?X zsv|yQv~M)GAEm3u!@OKHXXavt&DbOdXWVsacW1J@#-$0`rBZeYR@Ng**~%w2tOF_* zICSixY;Kg^>?vp}EcCPL>WWr1p()%3_ep=~|Mc54P`U2L!VHldlUhiqNj zrRViJW}(@OqVUvO(u`)Ywk$|5%g9L196Gc(vox_iYm7>XF08O3d;={&MX!MuP>Sk9leh9kT&yy!5rxs zz(+$#eM23H*TXCm^$M9h`m;6MpDYxOF{nmsxVRmt2GxQpSBJu=9yOrlXa!n{R-x5u zz1pBIS68Sj)m7?hb&Yz0x>h|=J!uCz0j)(Rq7%7+>=!ufdiEDOQB_r{u7jU+?KhyV z*Zx|kn^oFzcQ1gV11AK@!B+S=u<|LY1$L`xTe_SvI4qMQmHKiHo@UY{udc49uA}0@ zZbb`f{}$7CV9ElA==d6&j*RUa(oW;~B}+A9kS3$p&2aWA)-=7fkqaQq>MNMR$kn!D zjbev(i!nmD)>gJ_08UC;yH@8`m!KY-)y4YXo6zN()sywP5kyxuF<$LJea6&|(e!15 zl#QsFi)%zp>Zy%ri+UP^Z7&d6b<^sY{HP0+=D@PD9E=`$D?u7FDLx@Ltk-a@R$HGj zb(`CjxC33!O5CZQ*~kqB;Rz*n(>lv!cZ8Ts4UbU6Xvi(-cF=Rst>`xOZ1tQbrmF%9 zG+n|QeSK1>XlbZam;9ij&Y2Ot6Or#@>uRc^(!(hFKJ+9Pw;kP&9)Oj`L+D}j2znGf zhIXOH(G%)<>iOzM^#b)m^&<6R^%C_`^)hwScJvf*!rkZ@_<0UJk6u7~&|dVSdO2{$ zTh-g(=XQ!-rszG2KBwplioRmqbOQ-bfmMMp0cwxTaduXbNDA zBZHxvigZ24u5&ylk@D+TRfguZ-dr@fXk|rJ#pPT?!8GRV6=phI`??KF5qcke!dU4C=tJ}o`dGa}y;8kOy?P7!6n%!)qc7CW>Q-O{ zH>+`TCWXrC^(JZzfVGQ#jgIm>y?Ja5=gz1oU##6V$p0<+iBv$w2?7>~G40+R zg5y~)Y@7q1dB9cfS0AA07WICLUSj;E%@l*` zby!1XU~-SB?QZ?rc)&97L2XeJUKp7v(7vRU!Sfk8CRS9JYUaxxK-q@MQbyltupKfZ zv3&B28h>yobxEPnHkErjc`_$hlQYcEIXf{PBP;{0WdKH)9a=aK< zz&I|!OK~Nx!quoRuEop1x)R1P$AhJj{gHO+*A#7EqgNS7A-0>qkQ*P?bkp|J8`jlf z=Bn9hs{jE|t=Z=ztCmBbcecCB>X~n}pkT%%c-#2aDubeS67>o74N&tRRo_)JXw!Oi(ZVSJ4$$&-%UMLj#%JQQ;DM*qr`1IT?18X@ z7`M*H8{yV7>a%c*O}?;$H*Q^`75h9Zwv%<6@zfQX_P$5g-aDFd_u@vNc@u8NTTtJ& zBRrRBAV9OKTJ=TsC6z05%x6>{mXMIZ#8fz8NlkchLs4x-UB%*x1hx~AaOgUq;{~k; z30fDm&*(^KDha+8Uk3sc*o?7qGggC5xP@u|o!tVTs1nw*%R>Oi*VPyG!tTNM!U7pk+=TDZx>egyTv<_~VVmG<7x%B^zD6hKKOOpc8`T(T+0Udc4=G9l~=jxa3=hd_Lx#+z5RDI8wSNbe@2_-e-m+>q3RrP)K zBlY9f+3^^D6A=D^`k}gL-h}G1ns{w^xrH?dBfAVLT{+wZ2{Y*#iq`!~e z*4DKp_vadEKLd_bQd1RQR0}#%{K~4zH~>#=sIGoh9NWhME9Vi($)3?^1>&Z49!1dD zkuX1M?D-dsJ^zjmsNZS~?`w_W{i^=fo-lt9E=ri6)&1=VLqs49k%)(m=$J zbdo_b$uKfp{evPz5uu2uNQlx4>I5mmY639=%h^uMOxkvhL9HA{2MRV$uKhaVD6+7bM3MhcIxQv@t#tBIWNlBV8b+vEvW(P`FsY}=Mv;Re zCq*ub+^v)<lyXN{H|Vtuz&j30q`yX>({uuP{)|9p>jd)Y1S&k51nR6` zZD<2KkBm0Hi0Vr&CXHNN3%P_`N-iUt$mQe;awWNnTunAp6r?DIqHYv*r>F--Jt;bd zqF9Q0QPjJIXodl9AlXW`p)~lvg&Ry!AJF6BhoS)##ewk^{)*QZbTO@BQ|GzyVQtw4 z>ua!eb-W2W`{ashSU%T+9i-FSOakZBfHAkI93=NKojx-GjLDj-4lMdQmI78_SV~8A zS$L*T$5OPtF<5KVhvI9r9kR|!(s%pyr`Yc1;kuO7P`_APfp+XM(|yL)R5FV+EO0xt zV+FXnOoEbilMlHQB{h<}D2Q5p)k^LK`#8Ce+|Pa~>PJz3{ZkErC-G#1+>epRVaJK= zqG(_vd4i%rZ1*iDH&j_)q*Fy-zDI||cyBj(jtexAXUMY@9ZS*RCiE+LLA{2eA!`5m zti#$eC=^~~ED$Dzs>|yaJ4c&$d|1wWH?1B?ODjTZ1BD#-;*E6 zj}#51D2<{FiZWZd$NT!sPSt0&BYRTb^~ zLfHEq2F7#v9Mpl0@I|BEpw5HZq^Fky480=!!_mAzXxC!Y^&*B1IIUZM8&$dvw$gaVHGr z44t898;zYUY9f{g{#>1*6zdFS?%!u9tr}wc9<|{o=j!~V*dX$yJZyNh@R#wM_{;e# z_$&FV_^bKNd?VjPQHY{4ipnWkOi=|zODI}OQ6)uH6jitI%wo*=$+i4-Jb2LXI~YHy zG5ATCqLmb_V*F(Fzx?DM;3s!8esT{*wFW=ApYf9i_y^f9Maw9v(?3D?@Hh+~7XESm zNybh<>!@$!pQ5Oti|piC{sm3<;GfrYkL8RR>}AYgMF(c!^mgwvM&~A+Lo|T)I{%i= zP2SYF$(kb+(2+@ez!sJK$9Nfhe#U=Jk;)d86s-jw0soyr(V6WQ{`{BxSFKFqGzy!l z5nHEbli|N(OyYa~2mVL?C;n%OPNIlXbTUQjDLSQ59G+VKIGf?dd*Te`OLpg+rMkv z5?G^`h9XP;zqG~`)`FZ7PNeACh@25%|7?q}j@!?EDY{Mt6%0N=$^;BrpDvsUGDZNd zyuDF4i=rJ}lQF`1!UZ5Ag!7rox|6A_!i7v_y}mP*Rov|`%qPO-!d04R5dcWAn7s)^ zi*O;6O|Y+fh^qTnnUp3jglkZbMqw*Ow}Ll`a2;nCT7>OjXDreE4E14cvpGr8Z4|xO zL5g88T?;n|H!{;Gj+m|~x{spU8GDn}L#@}s?ZO?c%Rfc&vtE2i?V3d^hVL5>5b39+!XC>Za&{(ZaPiZ^cj=b&Q2wI#eg=oMZY$+_a5PO zZU0Z~DMIWE^NMLVE5RmMvb0HzWgCE<-(>FZ5wC?p{nd7ghS*2!8<~syD0+vYS0Zz9 zlExv#V?m)52a7|*I5A!X9`q_juTccr3uwDMQ1p1+Z5NyWn-YyLe?oRrQpHs$v%R=L%^qyWkht=AyG?aZz0n1kKgWD5@?Gf$0&p z<|`vU&3V-zbTpf)Lw}bUQKQ8fwY0r>XmK?q>MxL^0Z{a=!>V%bh(qlkI@M>3bC|pQ zteG=IE5Tt|4`(&D(3{1%;ygzA!#&XX_PT-m1tP>LHi}?Dc)w9Br09bqcpr%+;C&>P ziXnc?W=&|Cxek^KyCsSo!C@f6tMkG{|(o(etzZ7vw?K3zP6(;_JLh-U-V&JoXL4gz2o zDw^sP&ut&eCrZcurwP&CaX3w8S+PK5p2G=|c3vOE&Bb(Mad15$tgUaq{sRUMS~w-Y zO++%ZV`fEtC2SEmAv##Up~na_fWv4MOaPb9KpVZ_Cm+8T1c}N(HzUdnb}{dv7KHlfUXS7sBy$W=D83ThCFli5X#FUUMnD+Hx^=< zE8(vYR}EKUV?A)Cv*+4Al?B1GwGd_(=2pO)WgNH_Fc0DAa6|&V9epzsle35BC8oz^ zWv4)teAZY9e;=Bg7MGKi15WQ_Gsh-ors^`lU=z$$Ru4trn=&*tZP+M=(WRZo=%;67 zLJ+(~wKoqRF%lxQeGr7*eeam8)a;yGPzZsZB@j4Ot<$%lU_!3$l>?1!e=8s8tH;u_ zi2dZWw4|KOl(?Kkh|^EXOG%D{(5|6zX(`#6xj92qbD$Rsq7md7iEHQ(*V#M&BKW(-y`#P}cfhE_o3z(v&%6X8{3z;|ZN znzVF?NlQu`nt5oZfXLmn&hrRB6YCBM)UKPfC~;+aStuzpBQaE3ngjtJ-4kPBssbIM zhU8TEyX`kEd^Lva3yB<(xpZy<%*YeC^^o;(2ZXIY0QntR;OahvAb;Z^G#VX;@*%LJ z6qP|%Mm;BEHAFougNTO)h;>*E0SzZYDC-8uzqk`}Exrq$r!(*>d_KMuavyHTH{;vE zN9=BVFXTLY7_uJj0{5!t@aOmsf(U^eheN>0V-%S{W`JWtDXAj$kh^dtWG`%lT!ptm zcEYwnw8YsJ5|89H=VEp@9mu}~a8$nnYA*LX#n#J?Q3%Cuy@R_HlA>1w! zuY?#=@nZ23@lx?Jag%tt2&SrUDEgM7?@d5Ec`1UYpOPHt|D9)pJJjD|z zp2#juVLF|WxI%Y<1?Oh{QuJ$UR*YzBi~n}=3}Y~!6<>sCP4PMLdGQ5tkGPj&o??Mw zkz$Er(>3Bt;>%pI_^S9C#b%1#>Qai6DENp&HxCmP)#~N@Cs9wJ9vPn3(V+qD^FK?E zA-*Sm%*AaH-xog+KNLTrSf*H^*g~-tQe=pqil1?iB7E1`mZXy1{ohSYVc1c(Qu~>>}on^P6*aa%_y!I;b zij^n+=jknOaKwlFA;WaU%e^@N#r05fx@$`Yl-yatdxi}k(dE+0 zpLiWg8I)3o4=J0v>jVdnQkr z+V#3VycX)3?r)j_T5QLW-ZQgcR+r1Vb@J0t)*M&k+)j&{zhGgPi@K^Z1&S)1xaIgF zA7ruW*sxB+dzIac4!}6|{+qeAlO_4M%g}a+pt!Y}lx;2f<32Py6Q+HT_AgVhx z9d2{GR4j`*mUoF|Gry4A2HDGRf}G_~a<4*$@(&<;!&jiuO2~|Cs256v9OR?G@HHD^ zn2SM=T@TsCH$pz~76fsU=vnk0gpDwcp{4qga8E6X9*_ocWI zZ^bQ;&HD)m7I+T7kH5jcf>uk2pBzhuk~A`$Oo4pdWn?Mj<6Z}OxHpmOAn!KQXrCc_ z$VcGvb^vl}OW?~D&!>Yw&{W8iUCviRmhAQXDg2q>ld%(WVc!FL`!Diu^B?d(3W8vR z4A(KRQQBV^1Us9M06v`BgKGj zBzYyDcc-`q#XTuL<{GIRXyJpUp3*TC$AbC|9qUVR0@E#+X;^Ey5hoo9 zHT(ZYMhj^GayLr@r9slM6!)UIH^qJaQeq28uW_iPX9+Kcg5e}HEj>9iRkL+ViLe_c zfi~H%LtYChmF2aNGNerK%7BnZ$TvZ8e~RP(=DUs75u*ppetu0#96;vV|4j2Qz5MJ(#Dq=k$XkP!kBR75UGEDRPP z-wPlgy{5bTLttjt6G22%KCpZXDMQmribLs#=37WlhO9hEt*L0FInn|yu34HZ&6DO+ zoJ?^F#Y3C9VpJ>@LKcN(6sIznb~XROQA@aR#B_PayepH!kOe_1mljJE(h_N@R4G+S z)l!XAD=m}iD274Jpg5D_VH6Licm%~GDIP`fXo`WdSrljQKqpEK9Wx?GC#mZw&VghI zhonTHIF}7ayJQDr^{fDFCbwUuuqft3p8da)7~znlKl&^^M@vTl>!nr$Rk98^$d6#q zY@>7`>}^OFP&~F#x`^U&Y&^S|@IbmOlJH=eE@O-`uavH4WnM+`aepP_fwV>12Jyer zHPTj!Cs924Xy!bSu9xnHoCnek(v8wh(#_H>(yh{M((Te6(w)*>6i=mi8pYEoo4pGPQjch(mHW=z!hJ#L9~l z&yVh!Nv}w6A32O&dRKZ6N5a@CUO@5l(KvPkj-Np6e-c0e% zPJ+y(-*L5cQ2K+pf|#(0P+SJCZn&1>V$BzX;u?z2ZMOq$5=c|Xx3O2<(No&g zTQ6q`E2opyOyo_|09^oA>cY0;LMY-rZ5pEay5VZw*X^GS(QXqbX&R#Wwc+XryiBR4 zEMP3AG*h}M!<1+#|GHk zvKm%GcH(HxmV6fX^}iwD%LK_K8cm>@t&KR(m==M0YAQ4x&weRBk>Zo|PjH^8a%37H zDK}Ms&Cmohi#D2;K(>UgInS7?P0KXr8B;BDp1~)B_lqeE&NFy@N9P%5S)VaO+DT&5 zD$`nEeWul>HKr3NK9%CrC_cT}1j(jMfU7eYqR!NKpBA7U8UJwnyqcOS!v-9^$kKN( z2iR4F_Oy!X>QHIqYoF2k^@dDyWE(?py6G&VZ|4ztBJ4R}7&4+ZZ$ucqlb3HuQ+@*8PEB}izC#GFG&%Cm;c6FrB^BR5jGGBkw z%Zxr-bow-EzW#Ve2lBjTdcBoAEfhB$LY{XSdEPUN0dTlJx~)W)kg0xd+0}q&_&mLbCNz?Z$GlSV%FXF z@ST4`QuA<~q<8<1yXKpR>-4=l!kW#w=BePxYtA!|HIFloH%~AhXP#)DWS(rELh*eR z-%s%a6hBDuLli$u@go#JO7UY9?`knm)3q1#Ox-o#JcsEnj~lwnlTp`v{LKG7#ie5) zd$>)II*Z2sr^C<9WuT3iL1TX+qK%lB9L6=@p!70x81xV`sH9Idnn5Lfx@&rfd8K&` z2ygQ$aLmWxpM509e4{FAUa!e}Gx$}2ynhzt{ZaMFH=l`mG@8$%_=Sj1zWH2XJH>lC zbG!$mr1rx^3i|>4>pu`Y#(vs!tjo<;=p4(unc`O|elfzaD1Jo~_vR)x>>xy5YUNB@ zb-w=c;g~?w8W>r;n0M&h;5D5aO!*suI{lIp^-bB<#7zbbZZh8z^;|UrH+@5m(|d3S zc&VE2Gy^++lj66d>uvMB<_A0YnSz(9`4Qbq6~CqS2jA55H092ypY<>g003h|@$L80}uS4oX(8J!R_=7FxH_dOM_2zdd z{*dC&R9LZp0V(QqcPzG2&~5h7Jb;?|BrAs!kEKPFZ7eM!#a}bpZD>b3*(LiryaEXh@Ny9yL$jh=(uODyHQBuXOC~WrE|PB$ZcX=GIHVtvA-8 zx%G~@!O3D^{;DJbU}6rKcV0*W1Y@ z!>c!;Q*Yg_diAz{E*?&vE`g(QO1TjD_twE*OAhPVo0gZCmXn+jmp3+rofDOs7?(K~ z+3hKEcUWi6wy;|^B|qx&QC~1Y3vviSX4y!l`KHX_t?suYMlb`N!J}9`X77aK5++WX{Fi--EzH69Kk_L~&zL^rQ2*iS!&y6K7EIQ> zep$JH-E9~Om^Xj2c9s<@;IF$4A77MET+)lN`hV7K*bh1?I7IwSx8d}RiY14-4Oa|* zk#(Z7S1I%Q4KT0Yzw9>53aINU8GRQANMW_UY;IQ`!R1F8ZUj{j;pMXQxN8u10r@kJNgkA{l!#m;N^qate_&#v6 zcmWPa*AGUwk^t#WdXiYuoAf6G!QoO- z=bw|G$U&Y1mkXXB%xAzsxK@Ya6ZG%Kr|>#B6i0-$94j9S&Z}}SxwqU$?ko3``^y95 zf$|`Vzo!@k{*M&@MDfoQ|3dMv6#qu?@8G;D50T^KcsW5%l#}FSIfcpB15~<@N|#XS zS}HwErAMf=i%O3(E1oAC^q!@)HE?!SSUc4YjHYlb4dj*5HeYljt7b|KLqZnF!5Lnl zAAYAFS_1{>Um*oMq-lnzuSo1kB0GMJrR%N?L4mCdPk${NvVE3nFILpAf=srMN|N=%fPcgU0FDe_c# znmk>eA?M381?D$b!Id@iNpb5#74N(z-?C~V71)l@oms3=)FsisCd zokq{fZnW}<$vfxdFo$@ihgZS@6-TNe3yx%~hurx^l{Ju9?TCeH{;@{&?2v(I>-39} z?iMYiEOB3_1l(=^J1NWL6ZHx~+Alh~>)HgC zm6#n8Q(L@}{n@scC+n3u3LO_2l`b!;OJJ$&Sjy(A!i2?(mxW7f(=$_RSC*F7hs!F% z$yJ3z3#$_0UwL)H%!IK?S=qU{DH(BDx$Icg)V!Ry?6G6B;?gow^Twv8W@V(LCniju z35H=v)dyLKAs3;Rv9e>b=T07K+t$^3`D8BRwPL zJ<^Mk-jqPDNlNA`M zHS#m^s|--j%FoHq%P+`#UgGMbVxlw?toO-T+Vxh;yT1C|JnnfotR{sF9%GOUCsnPXsOai=`S07s2dr-K91 z6#{FS$G}m~z%jogIGnSLw^k{ab8$B~dMT@wHOdLfTIEFLBt=!IvQ9Z!S+8tRPEk%( zPE$@-&QQ)&&ceSd=YTT3SUF$W$kb`&BIRP`66I3mGG!Ab3n?k21SDw*CD872N-8K> zN(pG)HIyu)Buq&IB`YXdMaddU)>3j3B~<;D64=@DGu@nQpyX6tF{k8oO3tL@Y)a0h zv$93GM%k)tQ?6C6Q(Bbm$_{0xa=mhca-(vSaZ zT|)&Qg`}oJCaHdM~@FtbUzVte4!)X(Bc2{16Mkz>1{M{60qzL$e_(c`YQtu4>ywICX$6`{1z8@KLY! z(8!9o?7E85a>(x!Hy#evgqAFB+mhGymcUVHM{xnlngEOK*4*E1aP*E|A?zgl4`x7A zKGa(QmXV{d$}{K=9(Ix41tSG%n|^<$*H~TXxcUerpHxv?2dDXCnxq-s?~UFq^rd1*;)ZB=bUMQL?ODOm9mbi>Lt$gu^< z*ux2M2zJR*$mt(W(ALN7JQ(dn`-B;JS-F$*;;TyA!egJ_>e@m_^$}Xlk`}gUmfot4 z7r>IERTWMMwVq&GR9RRRfCbwl zU@$$36C-+RKqmk>pjWuO&~fV#hWft=5S@WV>?k^n!V#{Pz`}D%6Q(zW>Q;3aI}6sk zvht{KRXuOELAIQVx{}He%OuvZT1l^V^-;lzUTrkXZiJ4c|^lhWpMNsK>Bmlw;uG_J`1iij9j!Jzxq9f<*vM(L$8>-iL)=}Y626yUI^J}Yb zSs?h9X@2JvIu;zQiQ9^%N#HEev8SW-D$hHLBg=RN%X-o2$mZzvZ7g&w{QF(hkpl>h zoL`}R@7TxjdYu;@MJ@~+Kdfm?#vhSdbrYIpqGc8sK`fIjlPyy$Q!Udh(=9VB`Iea$ zuykBZ$t9FrO37uEz%ur7O0J;fN=mMx;AQZ9DOT@r3$PdmTF2GBUTU#97@uOr8Q#Du&lJK2De-b7#NxxEns8V(lxhS z%So1X%zE;Sg|hGz5`C6-GqmsvJhF1K7^xzYl_+d;`rN?^z021;(EU`Oxwa zB@a;o4S$3ZX!v6kPFf?6Q#fgjJW0t@EtXFrNc_U`CEJFwe9e#u8wl)&!r^LUuf7fS z;=f4z2atGxA@Lw3yCX=nB0wVEXeI1dh0%v2pV>#qF(^W6tJw-}%8gd=%XzNRYM}&j zhii^ae{x`+)nRpO4ASb-7~~60R*z*jC3`x9l{PD^LBx)ok7gP&8qmWUtHINHj0Vq_ zj#QBGPJe3>;L|$5I?y`EdaQM@b%-_28gEUo!glB@l)OsGYZQ*(BX3ahCM9oC@-`*! zQ1WhzHCe}}HBIM~)?o~v?-}^~Aj&Dhzn(cF{d?fW(LAWlIv((8oj}R^20kYpNqAfH ztpyC5u>bU7qjeS~A9WF%^Q;R2Qr7v5Pkzk!q;(PFlb>|LCmmN9m@2iF>o_daaQGRp zN$VoUCO4E35>5=^_vtA=4%R5%fq(AeAZr@frri-#P>0Is=H? zt=H>7gmYRFC^^7@cnt&MZ-)iqt=0z^5O1^IZoR{Lr}ZxD-PU`o_ge3>-cQLNl;w^&>KB~)W>k|M(-W&lUuNd;0cl-;)e*lOtGa$Y~dD#Hs z>qq2=?^!=!Fnpi#mPYG`l(%*fhM!u$U@-g)V947v7=8&b)FXerd z_ftMV`5@(EDBq3p-CJyujzgQmUuUy&18sJO!yX0>K{Z%OdFBtt|LYGIan(JVg4xys zfN1MU`JNFV+Ij&Hg-%YQics1%&~_|9(Kd+kv5ht$Rj;l=(UxFKW}te;mc-OXzBhpC zaIve7pix<-ZG?tI+i(qu%(?DxFBz|7+nAG!EytE?%d?HOjkArnO|Ttjn`oOv`2mz4 zNO@>FGys}Dgz|BekEc9%I8o%x5ai*gd<)S!Qqt*hlXb!oK_rJN%NEb#o<4I!|e=*J1B2B=GksIl4Q2s zZo8A=@D9q4Z?xS-`3YUb;e9rU3TN!_0S$-DgU|Lb!(k^Le8)B$pnBZ)l#WA40|88H z@)6!LUU}XIQQ$4M7i@cMdu=b;Ub4Mxd&Tyu?KRu$l%GoZX_TK%`5BbYr~FLH7f^l{ znM{EqVT41Ne_%pKm`Z98E5 zgW(W-*cLR}LG54IH5}S`yQJaJE^0Vj1V$LUnOSrA!j25l@^J)JcAMR)0nzTzfLL^- z*Nk`k_TGR*d%zyF$Jo2syW4x%d)kk&$J%>QzJ&6nln3@-M)`8eFQ$A2<(E)?Ddj6$ z?0s}3+6O2x7!EhIL#koQR~bmGp=7*vxFKKvFA|SF6789QMEfwxS4WU&A9*As+H>t= z0g3iJ%GWm9$5DP+7m+y8J_R6UpTyQGbpXaD`&718fz)grfhZWU8TJDE93666d^FtQEdz&(>=g`$h4$m^MfPHQiM`YwvX|M*?SQ%!l!x`kD$1{>{2I!iK>4+l zKauh$QC@AaFNxr=`v0+a7w}PB@8bVw!_F+!vTj&_5H#*sh(aJ}f|e3OvJr?8AyAo6ey73!6{y+UaCOds8TOgS}OcMvzx`sm*4-k_jiBy#qE9bh0V^K=RD^*v$Hdk z8P68cw@j@=;jP2TXSaycuhrqdP>0oO9SWhn%Ug$2u2_e&eCMcjI9q6^)cDR7+NoDr zhYNidd$x!?%$n~B)6|N(SFNbKFR3U)qZ8huTH(9OQ->?vbvWY+OL-Sr=et9#!}Y!! zd^h@T@~!jT?7PKxtM4}7?Ls?CXbF6d&=UAOp`9yVrLg z+rtBD9WM6P;ZmW!UuajV-{h)c8$=k64vZMKI+Lpy{s1KR&RlF zCi|$+?slIK)b9V^SEBz<-F{VXrkeE}o!eGl&3gNlHmmyP`W6(j-cM+E)aY9Z?ar$! zWPO0Xox70rJgbdD-bESeJE(>Hz@>%kbG*J1^&$EQ?zXBA)raZBg?5k7?iJd7YZ_K_ zx7A7NjaIqa>P+=?-IeZ~`X6t*YIOff`Ptj9s<&$Ow%=9X-935qaqh`;;0jTD7fI0% zV6(38q3@|r)%Vi()~D(F==G`VlpwK=fv=0mIBSQPA&^{)#j|=S~p?yMVpRCgl zte-c7Zy2E;%B&f#&YGvZvxbxHOtlx(&HA-F|NRSxLiHSQs?qbc<7w|iD7@lCDA!l2 z6QM$ApRLi47ux5paw6QSzr!;TZg)?F=hc$BQ=JHhFP#WFp^x^~)l~g-Pbut6#=;Tt81gU%x=VP`^ljkAAU!iT+;wQvH2G`-;%MDztplV`I$c(rZG? z=h7QO`=-#oCA4pE)-SKG$5q$8ujl4zRODK|7KBDIURE?gk(EBxdwnE%e@MFRExXbsr zT87W7<@@2KQAcM@z3-p^q=d$(0{4_O8>R~8~wNX?}YXXq5V>5zY^N7h4vev{Z?pskzK#< zh4zO!{rC0r=4a0VT>WqAtohM9YkoO<0QdL*eN*QD{ta9WI_80)q0s(RKMxGoGY@>; zHQcDGrtW_B{Nd6!sUK>C$zWkF7|cR@s>Way+F!43E*PAKrtZ05XyTp=zfo0&=IUHH zed%1#O!v0tZ)oGLMMHqQ7XP@yQr<-Z4Y6#<4MB!rLx>^N5M~HBL>M9sQHE$kjL>q> z?~IToA!~%}Bjg4`)(Tk`vLa-ikQ;6`bn+CWp_?Jj(A^L(wKXJClCt+~zkGv`4MH{w z*~;F9tlqQjf7umK|4;3a8wRQsoGxVV#Q}!FRIp))&uo>DudhDr{)3D8hISe4HazG z4dV=DhH@dBglrbF<-cL~T%Y5OV3I+2CR4RKnPj^)fpDm&!c-AY%tu% zELyJ4BLDggyWCE_HMbn3PNCrceN*Uvz?OZJIxp&k+}gWk=Vm@@4ciRcu~WzaLT=;! zvn@wn8b<4{(;K~2vd?fpogVvz+`h(eP{!V8OpV0|IabJ>gxtB#@P2(^ek6aYo**%NrWR%wZ((*5npfQ?NaTcT zb@|U94>a(gsv5)3LhkCV%U`KW`FHsbmC!t|-pj@P=hN>SKC`=D zT|pWZVR?vjeEFDs+3(de#3qrqK?iJYrbeAQEY8ZP-B znNxpP$uw7SUPZol8N0C+rD${*oyNw-CdQ`5X2#}5KVu6c8^UBErwF-+kb4R_Rmi=B z+*`NaxNwOah=Yth(=S~PYR za{u~TGK;Y+C(;Eu@C8WbV648B>fs)na5s(`$^3XvS3*V;^IGwHW)V z#W+YUM&kf==V9>Wb{?8N)2h3F{jW;>;ca-BafGKbZ+2IvdZ!xW0Cn>^_-_kyw6RDn z%xq(h(Phjv<{9&i1;#PPvBp9nj}Y=LLLMn(c7sLQk>{5#oL7}1ec>zi<7U_;=fRf&#Sd~Sje|}Yw;y@8~HNZ zNC^2hbsNba>OCMkdN)shY;+j{=N_@`Q%KN^2B{%rik zc*^*z@i*gXNUUsw9+FW|AHvjqBG^uCfOco(8sIN`a70^PZkl0YJGf2A+l9PC$Q(-G6Z`=o z?-ueNA@3FPzB<$F`XZd)V1tQo*rt2bBHZsS!Ux@lejZadi;rKc!hfL()yIRG*c=@2 zR^fW8(6r%(TU0_m$elMle{xXtW^aLPGwo1okx_l9#>A-dYwuTcip#Xe#5LWuroCz{ zvTw@9@qqf7{pe*svv0atALecFF%!SuuU6zCcSRoJliI{R82F@q^lwY@InyzPke?Fr(?Whm$j=J-IUzqU_e$+t`m zOz%*V@2MsElD8yZb$?R7rk3RE*GlqVD9NwXlKfi8FMCUpTS2cioiyC25;AAkIV7b1 zNlAL|7H&Fa`b{m#Uxj?6#>5Bi(W@-Uzswvjsx_TaOOm@ew6DFsg3oL2=(_Hb!qT^> zFGq7jGr!?aIhwC?m*X33Aph=0u--)s=BAuzG8@e%v)ODhTg^88Vza~SG&eRk5iXOEcGRuhl*(7pcg+&}{eodG?#Oxw|=msx-$7 z`Lh~xqLBH;_p8}ZntPagsRj0;IhB$W^5+zoIZfRS{Nj?TG$`KRsWuNV58|Yed7wGn zoFU||gv=!R=D+V+0P{$5mSFzdnc%+(`E;GRynaShd3IjSx2f~tckg`QjvbzzSEa$V zx$rN{g&FExVBhW!?_8L}Trkg-PO60br}|BwKhDjBd(2DJnXp*MXKKv%3PrlgnXufv z(lZn8S7(BvQEO^7GePmWWG3j}_Eyz8^F~i0ZcqzR(OzL8?;_jG2h>8`Zr)+uY2Iai zz`WbM$Gq3P&%9qKicoYyX(*INLb*;T*9+waq1-5xn}p(9XXZGQ`k(m`ZGiMG|9gl+ zRP^oLGvk6a|oFX(beR45&<734o(kQVOARAX@p zrA>W7TDTDadkNadRPOx)eg}(vg|f5TMvK2CfMT??7D~GsOBsbbAREuz|P`cDuiiFbjDvNNOrNX^M zw3NHIh~20t%XoE*7b*5PfINuD~q!(E5*S6Irs$P~*wwGO9RrdjT`Ot;Li z%(Tq1%(l$2%oR$aP?Cg_ER+eApoKC#Q(rnEaDsZ@@xW4^bXn#aSIOf_ zI|T;^U+u#};?(5^dY0=NAD)<)92=Gp7!@BM5f~Ag92ppsl#mdZkQ5%37!%7Qro*GW z5x!}8OFI9#^_F)n$N7F}dC&5`P~ zk5=jYpKe`T!ILY?U1j5WL_<|oRd8-rSy52YX!ont-)l!!4U<@uFar3GaL z`2{THeLcrL5UIr#uCiQ~a6fXk{>SANJT>wB*njZE&VyKD{!{E1Wg{plJu|(cq|EzW z-SV^LS1GX8@{8q^P;!LgQY-GXTB*6}CBhExGiJTd+w|Thy!;mLPx`C3Vs_ta&2okb zCY?O*+m^L~mAgh=xOQtpb?y1pf$n9jT)TbIGQL*hCCixAWyW}yv0buEV=G6sYOL&# z7S>qVAuYb3daSKH`6|lPSNx}ZU16**8GMFE9nm5tRbdW~1SoT}%Y2 zJ+~mQvdsOA;`$%z{m=f`^NM$1)q9Am50gkO&T;X;h&C6!Ej}kFp|YZ)q_{k>vaC#f z61@687f&tz`=a6Ty=T{Qx%g6C71{aj^>~AeyyE*kkG@cEuC4~F-c`PgXT!R99!c;O zmvgsMzbW&!bS|nLkhrrvmAl>M_R@`W-}D0g`}$gX3JmCe-TvtL@QdDgL#eT_BWT3{U` zlqo`)DwJt!tcBJhE1kSsDAR>9qdFjctZQOMaaNIQSaxAnd3j&{Hk6_*s3>rikL+Jk z&R%!8SYMplB3p1=UFMMH+bv~P0>s;$R zq0AS`f?DeW>q4RM|1YTwVT`*5yK3B$RuEvREif)>`kkuC%VQt`^F@LfI;mM}+dI8fNU-FfR<`?91^L z6=emZD=S>(8CjzX`8~dK+lnq{-}E=j4s;c|x0vPm1*MlR-r@3#dmamauATbLX!py% z`&=U3+a{hE@0s3I=SA^)hkApxP93+6)=ffLDwO+bt(&b|gtAO1E7XLX+nk+S)45>I zZU)Y7w9ob8a_@J?pl$%&yCp}gJ0)LDqIK7ZzUc$iC(|dER2K7@wcIlac3bxh@0;#k zGf(NMweFRsp7(EW{QIqsNP+9D2doFJ4_Y6xJ}i{`g|bp8tAxVn)~vHWYJJT5xb=|r z38B;qWsOkS1z_*JPVJpByQHwPs5mvLJhPlAo)?d)FTN&} z_0>G8twrX9ob0S}J~PW*#p*U?ysK|z5zolT_B_zu)ycEaTbib|*0-(i2xX&CHdW`3 zh|lmlTcJbvhx)rmdb4`M`sF26@wK}u zwy{g(xg6N~o%Lrm^(U?0TYvDRe!Eb12xX@?^}kq8S%0*`$kdY}200vF9BPdBN65D0}`7@@uk;n?{Bb#dQ;8Gh$a z=8^n6iLXHg#qRk%oPVYk^TnaulY5(0U5(9Vw>gCJpimwX%ERsfh&ej|p;71l8eRWa z)17BL|5u-Ho1cwq?Ju0Fw$|=JdFd1(xKTq+K{nrcJQdJKU9PXKpHN;9%8Lv@SjgEK5FQp*pLK7tGi;oE zT)p~SVu#v>^WDHUOen9^*lrfekqf>X*hYE28@!sSAMjuQZV+Ey?y4wf-=AF!{^E@( z+g2zAZnWjtT((?Wo-N;2U>jo_E0m)`IVKb~9u+%sx-YD_h@YN5PaJ(zU_1y_uAWfcV#6scbq zT@{}9Oi|x6RVeRY_C1;Url|?3iHYn=6_(`nt8e05A6j)Ue9V2-qBqU6Y_l&M`gyhm z>d>=W^Kp%hJ(^F{jQP4IlxFc=#gnll&&J-iM6wtHux=wg+sxZF_|Btx&!b%E>jF)3*J# z1M2tn?}hS%n($`q$Y%CWOHI$nOioJ8=r=GkJvl8oF(b8K-^||0!!q@Lm%L$cYIqs8jKc2k|?>a2E-4@c(FXWDnez%2&$3%7Xiwz0A;|@=mJ*Ji!Thkw_ z2YX(4Qqy#Gwf9${Y|q#ZtNnP^_MGi`q5LeAUxadMjqL^7i#Cp`{VEhb27mu=>WC*k z&K=g+*ev{3?P4RDn37OgoKxsZp5V%^tWft}`Eqc6ccbWTRM^?>zO6BBw7p|{*Y=+6 zecK1N-5K$;{<*qwr=0&%H_;Yv>)x*% z>YhpcocTt5{)v%k0xfjhvfKIYVmI3@miO#7p}RroZc>kN>hx>v z4!hId*xp3wj6!D?I;+s}d-&%~SbGcigw@@csUP}ZpRfa6o~>B<-yH(A2Y8zE{YRcZ zcW$e6{-Lk)pIK|~;AzkBk8B0cb+05hx3Hktm06TkdiFrCXHVB2Wanuz7ao7KhqGM}O(GJP*uW}uxNm5X8CS_oaF(Dk^mrp9=Z-Xzn|po{km z07on<3tb%i=TU*Z3o3&8^mfncxI(_nRq_Gd)qTILAkU70ddr)%`X2l zs5RO(_`G>p9_(3=2WzWONM+XWG~;tmOzzLuX!jHkF6f_MQtaxN&IgL;rSsmEp47Yi z>>ENOgTjK!bH)azPb_CwCfNIw-4qTQxZH==y?w~_z7p(tns#|`eXoM@13V8@KKqWq zQVuJXcfH)15AXWV1?}z;;r;)9%(MH8aBxCp0mq2>ZkNu;nn9a-~E*G|8dEykB%bg>dmKGHT5r7WR>N)D!OtKC@Lb5x-4`B7L=6p zhLC`Yl9Iyg{H%iF@~+t>MM3T#2IW))oqavXJ@!ei+^ovNiu1SAC7wCeEYsjK^^!T| zc{p?U)lVjMN(Ejk&dWU_{VL|pwc@;}I4eBG>6fXWY0>DyiEQ*aotQl~ z(_L^BX=QPCemYN7W%p*FE4OQOZdOioM09vgXjVvo`-g43HB;G2c_%m6YLZ1x7u&B-)_IdKFNNkz1l8> zuBFhm5;}jOYb|sELf1y<+6rAep=&R69qR0pCHEzb_PagT*4k%r!Gx}3{RI=cAn&!c zy6|h)OZ@ZKOW5yY_rtzS=mP7nm$2W@^%6esn&;v*Zn4FMwV!ZJf3y<4BX`{Xky=_G3SE4S z{bQj^xXRKxVgJ&7A&&hEcWEW6MWR0GN|$s=X&EKm)bG9ReQ*ECQ(Ql~i!0>{%Xt?$ z?U2>t`rZDA{ZIQ}_A?I2p>g;)8aVj2-BajNg|3&-^%lA`q3a`beTA-{(DfI(0d)?= zQ(TVgJl7{WZc;aM1HHw?GZH;dR@Gg*p^E1`VbDMMfGkH7HggWXN2S+q<{W-(<}_2J zld9?|T+X8MUNGZm_@lGR=A z_g@XZJ?e|f5##9Wu0uyBcO9xXP;rE*^*i*E`t>dn??~jJrz1h=M$|ZxgzlCLz7ICq z;@&;*dCU9u-j4npuyCX~`Z)SJD9MpRmnn3kgf45XV}N6zBi)f9bfbkXTj+9xu1Gx& z7U9Pd<&w(s3tmiAPqk<2J6_@a8Seda&pNK~cF!3*SC026)Y{ zLdU3@z9nN>ci0GJ5u3d}|2~3WPNQg*DOpc042|a&B%RMWqxMW2sAt@pO$MTqLQ=I<{i^DcG3@!&;Ed4KY#<8k#Tj|rWqaU2r5yRN)K&xC(ko$${H z9hVrrCi(i*I-d8baU6EMpz)XXIF>tJVKRD7AZ3(g6_;n16_i#CE8uj}1oyQ{x@px? zL!qk>x+zB$;o!<9>37FbWiqFo>Mw~<-rHK2v}4snE@+ahwo3_f7Zz zKKY(pslOrZ_*&>@T`pJa96yTsbW9Ms*`!0ci_1nl@Q|Z_~dzPXA3%e>o-f zC!DmHcl8C~l$|=3a&m@aL5-8aSaiV##(AS>@+{2M@AYnA)XSpPD+fDW?wFhU!{Cdz zzn8wCULC_R$E;G7`VTH4;~;C0``BX~-=xbb(l|=pH8fWJ%3M~FSW?(EG(5mnoa23& zzp5`r@SWOyYjOAMdJ5?;LF{$aZ-T4-YRWPcAITD{!CavY!8r)bb%*)WhZ7 z>M8BBs~MbCR*+T9=J|rPdG`=Ff#!KynQH5NxlzLH9p-cU7dSy{jR@p>PnWek(iqu2@gWLzb z2Zx3yhK7XbzjSXioI^Mb=p5=C<{U0`JB4nq&~a&wx0AOxvpB!u9O=w-vIn|L==dzy zy+*sqneFVQ{=%Sc4}Da-7H~-{7c||!te~WfUT5k%T=|U&912T!m8xedOW0Frcjb3` z+8CTwSm_$z=Z$%+v*a={H=N`g=PcvlB|^7P==N6!W=nppeI!5k2H!benb*(I;Mi#Q z`Sg&GV;Y|ZT3OLuH`HIf`iOiE^H;Aq=JK(!4F8If(xLt(qt$)wa&AI9ZMFNuglpc^ zi!VHHdbMGrj503xuGVbVJFdUMWNy;5P1}x9(J?J!yC$df=$YCtJ!9z2gZzv66^^4f z-sGz{7>D*vukVgOXKKsKxt8zj6=>zvKFrhx!_q6Wvt2GOl{jj#-ehw$9?~~Gi0f#} zxtuSkKA;+VwYJ7tEmxZc_f1dXoX=~`n)|i5sbwqw)&abdUT~|6mU2@Hv+~p?xZ2A7 zky%p457iA*tFsR@ny#NZF{r{waS@)?w>t~H^gFz3ik?b>(XM6;)zb89*; zY-@ExHPpb+#%qFtL#i89Usrwony~PQ>Km$WthQ8}_;mCvt;ThBIj%tHo1U1Vwv*z@ zQnwH3t_m&+%PT+cEq3o)2Bi)v=N#GDA04sY)Tv8N=jxlP&1&1-;v3h-b+7iV*4HK^ zRvW5~YO9S|yLZj%h20l3{o%B zxj3=4L;7CkRo*>pc>Q444(rQ5N8G~p^t|%P@f23=NEW}$>rz9>AUP#}sht!iMN6qt znlwO4mrA5c>2_(VG+Vk)S}xr$t&%oLJEZ;66Vg-CGtzU?Vd+KbnDl}4ne?6Xho*t% z292-ApfPDInjlTMroU#OCPQVVibP=pJOVCUg%8-NWmhLNmoV**QhSe?s?2HGe!RbdPh;VT!t;YkB1@l3FnT z@lEV*@}@RdUX%K!^ooh<$HRYkXGVd#Kfya&b#LhD_7Ue?$=5m0IbYpCRPbZI10Tr? zObzEl>M{2|t#hGs5jCSWQtMo(?!W3YN^-I$`ejx4g>?!G^XuQo^YO4m6Ix4o7})|f zID62=x!k#uuh8DtYn`i{?0Y;ZbWhcvDtE5oViC!}LY_-?og37D8(BsDzc-(|zQwss z6I$oEK;xA%_|Ph2u=x&Pe@7%j|q%ViVx#EUveT}XH((>qhcbHQz9ed*(nGK?vufm zFo`{$JQC;GmArJ%^D=KbKh{H@SPy6FhkIka+F$v*w5^`5LVoL{JeZ5Kxc-LCV3{W> z>Oidp2U?;dLeU9v7=XbTfsvBrds>q8{8fJ=Ebv1c1R(@rh(Kp_MRz138HHGcI_$&K zcoxs&1-yh;a0JKjF+Rl!e1Wg=El%PG{3J<+21r5?mf|2@$M=$CG@uzm5spYiBNoJG zBtCAvEE(fLj7Iut9E#zfzef6N9EH)yK`!z!26tdS)`Gqm593V`pNTDu$rpMwMSGA} z6FD-4fE;m?M#&Tf+U4$xlBow$(Hnix4+Btvh1iLw@CHsvl35GJz)U-41598%xXqJf zW=zbCrP&`mbkN)u^wXRU#=v|x?!jU#0eLgmU<>x(5T3y+_zJ(`cl;?yG$CRVyRto5k!v)%ROa$+7%*1TW1-W$4PX}>1h{>@I z8?XtRu@&3FdL0jdI2}*oGf8q1kCXa!l1t|xjK>_XUgvVG#A>Vo>vghT=K(wo#?AR6 zUdA!J4#v^>HmI@2H-L3FCa;ajYh&`-xDDE&0|G(+8`Ha?*sHG@<<_ui_|P1GU%WJ4tG4 zLvJvaO&PPMIc+po5P>Mr zPVGqX?YX$Fv1Kg>v5$Vcn7*pGMcmm~$W0PzPzgYgKU9|4R<0OJwR6TQGX0{Vhl2pEW) zQ4ZD@K%E7U(}0y&jatw~z~^45m- z+R$E`0Z7Ln6rc=Mn26iJ7`I_u+bqB$5J#JPK`d>Er46yPA(l48(q=cvXPaYq59F@R zk2sA#KrY%!V0_y)!u24BZGGWDO9Uef5r_tHw?KF_5w#3?Y zHs)eJ7Gf1@um;50b|W@}8fi=Z+8)G9V7%M@0OD-d41Nd%@w6kJc2OXfc8py+#;#pF z27|n{E5lUWjTxAQIUt61N?X`OcXC$e;0rb0lBIsxPB9vep%25f% zq&@v?&zQ7lOxm-)_Diu0tg}7qY|nVKXFS@I|Muj+{pa`+U*lVx1pRCOlO%P}paEns z9vv(o{~i1hfVKz%wbOzAcA&o<=x+yN?2roPU5BAyOgbbb_46}I1Hmf|2xwEj;yca0UQG3!%g9(jvs*jbfgaqjTGnu zEfn~Iegrx}+<~Kz57rYn9gIidT0Dhk@Ei`~MZAnxK^uXufqVs$uR!t@sJ8VBe#L1? z3L5q~La7Jc7x0F#QWAU%@%Z1$_->P6V^Q;9^jV!PH_fwHQp_gXduZ zsK;PxCU^}Po8S%Dgw5EGgLnv!;BCB%FYpz=aIec1eL0PR_!~S-24v*x&$p3h#nAP;cSXTR6E19|-C#ocx4m!-YH)U_7Y3 zaB4674lDq<39rE#(1!@dCc+FW>}ZU(=nBRmf_5TOkcu?)18qhO!cZ_C5v3?cC8|K1 z5#%a@Ttx^>#xzU^V--QoL@)*sUrJIWH4zyC;*TW9k@sOgUIV#`{1BhuGkk|%@jL#K zq$mv-qbLOpaUIB4loL(ihgN8f1Q2@^xr!Qs;mAZ5a*&HM5N{OY8#M>ZunN>t6uF9G ztfRJIJE*IueV`vvCqQ4Kz6LQy{Q$-`>J(1n4@rt<)0pg49h)Bes zGrA!j2K@^+y&x|eF~p&2t$MGa3l0Eg1mL|M;o+9AgG&8^q~{E z>lBS7^gu840lDim5G5d2odl-fZp_9!Fef^ZyH3R3i81c94UBE4NALum#&aNdon8U) zcOrM4h_f^Cbq+!(!V!g7FovDGg89=q0XJhLvXBiI^1vMJTn2L5nVfber=7`Z=NTZr z&T~P2JConeP%dn-+&t1XZRdn;uNUE&VS%9N$NsAyHI~! zTEZUzxC`W?3;F0mKDsQy8tlh|cm$7w_PRWS=kX%QNf+Ag@;bi4w>XI(z#Qm8+g)h8 z%bz$SNnL%Qg@RT{KrYxeblrj@_(hVsSrCB%7>-*o3Zp@7cB3Y{Re_r9b_d8`H~P?R z3Z{WRbfXX5m9Kf_UR@K_(dUxEwIval{zM7{?J`9Q}=(3C1~&agMtewV(#$HexfjVJ9BI zV|W70kvQ@nN6c}IZyY&~Bj<7CJnlD1>P}wOW5nIB195kEfOxwTZ+Ab0qdO9jj2^fd z`5>>|i@<#8eheStV|)tQink*cUC<5jNJ0uyk%oR?UGc0dz8Iw_1LGAx9(RI1$5U(Z z3$YkWu^cP08e6dgyRaLKQ~YrdOFXf}p8$Q1{~doxQi22@_=0gtFoF6>Xo=QngLWY9 z1ma8}&V;_`55^{89EdN0_!1_7Ig>!$CXmkr+DM>{#OvXQRtNy=OYDeXF#d^=h(TwN zo5XZb4~auTJtU3*^^iCkF63bh3PGL{XQ2)+fw4?7qZ3Ag`c7Jb12}}I@GPDOxk-8# zAAs>n`UIbW@k*i}N%SM>G^pid@|4^FGRRFbu_s3$8nl%hhXgRD$&6|8AP|2t@h1~+ zGO;F?fbmSO!bIGTNtlC&@id;p3!pE_Z{P>~j9(=w#ev3X3i6pkK2utwE!u;erVwaK zPxM9~^uqv<(-iWUl8syxfS6LqU&?JDPbt(_iojgV$3onL8mz^7Y{Ww#&XmJ=5if&0 zrhJc|K;BZwTMBvWLEd_hw;l=_;Rg7^A8pVM9T12RgoAqML0)^1*B)I!P4u`Kw_+t8 z17p?mIs}1!_M|U8XMmV{F2+(U!y0VCcI?6)?8iaSkDiZ!e)J^YJzvE!koTT%;TK6t zCHB;YxE?pb1PknNg7{NAf|yeo|5Q4h+6%;#IuIEcf?>!9^CguyQ^|2E`Aj92RN76Y z-Bj95rQOtb@E)kk)X(uF)L4GQA2=gPy?mgB0cKc1OueXwUTr}=^dhca#MFx#=rsV; zK(9d3pMj#VepucJKH;sO#5nI|4P#bCc@I0vFwAb+wh$-zyNn!}4J{tId zT=%&V#FD-do3R^*@EpihI%AgpHNL|Spik-aDV;v0|0PKotSdtg`jo+VW!TXe^ecn; zoY4~g2uB6(2RY05Qj!KKXn{D8_d)b)&}g`jkFhAmII!%XDlndd=3pKc;vU?KWnkTd zR-+c{umJ}_9tM4gpEw295cGF&2Xq7N4ju+_IhZjXJO)K5ML8xxU<#&zIv+e6)cW9^ zAV-5g!7q|Dg#Hg<9EWs7Fc`-nk%&P&5|M&b^hO`h?hwXr$O3G^GdPAf@HWW*kmL9W ze@fC&ayFDUhPFmqPUR8P$VH&vBN_XV>#+%}Yvgw9!lQT`PvU8i|B;75UPiu*?<6U+ z5m;{~ImslhO!A*uiE2y+?PSvTO!}TV59B+Od}ppg4c3BuXVP{iZDoETNu!#A^^KyB zqsZwf#&8s4IO>Nh@#qEO z&FYVI48~AULs|48i}B1V#62L+EOL}ZZDbK^)^6+r+l8zLL0+Zbp-b(Z}(PBxNgT1lE=93nQq*Y&)1Q z+0D=b{%C{tNJKJvf_`SFfi|*fBYPk+K!3C8Z}xE9f=p1i*|WgdWYf27@|w*U=Uflg zn-dFimcv}jVQ%Hzirc`LwS=8 z*GKpi#N_%4-{O1x1jf-tjJf1Fmt5wOt6T!josQLDPUOCgKP4&8gqG-lAcP_u-9gUs z`e6XlF$hC247te1SQMia<)}mzreGH4Vgbl=-g2x2G33>P{^!xpyca;f@=o9fkmEe! z&m+fq9lHU#;5e(wZj{tR=-wDK-PmSagV?O!LzXhW(8pM!)KQ>}BwqYlB zV;_hmpWNg>hr@Ug@8ENMiLdc3h%2Am<)4wH0%9w;2?m&8L0d$E8Ym#9f-azj3y7tF zSPF=xAP0x=GG4_|ypE4?8mxbe1o}OOxip5kH0B2Qg1Iz?cE;Gz7}VSt+8aX-#>ApC zx`DbIlY|~fMH>2oSjH4#HmJEVM?lStZ35mqb}VLM6UfI{VjRnR#=eF(a2#LYYkY?v z@H0-~H;|vghPWQ&rjXnenqfsax+57q(Hq25I1qy{1k_ex0m^VEreOw%w{RYo;65w| z^;EbTdvFZIQmD572dJGQVkpvsu_>bcqQ+?7%LN ztCD9yj!NFdJ9rOYf;uYs7AHa7(-o=I2U?JyQZuZe-b*_o7G2N{-LVd|QA!)7dvO4a zK`HAm{Qw_od>l}oV<#8F8cm8($;;;AIBmE^VZ2|NYjt2~Tjcmr?a zT`+EyUxWB6PfF5w>Ucacjd!9cnuEB;mw{Z2zY9|_9prWV91zR+RZY+i zVTeE!V$lVReN|8NMj!OYK#h0raJszEsnfYWh;$3u&M))#R*t5QgGrj6@c4kc&I83>!d<)wC^WSNI_e2B@DFrA* z3Cd6bfytmRQ|QZ-Pw@kO!Y^P9rjmoHd0_deV^J(g(-fFsfelVf0PC4XPN&@u>T%i{ ztj8u$AJevD7pReG`|%=P!4Vt-Ihghq-UT%>jT)Ku3CP2=&n4+@8UE;rF(B`E@5Y-r zB}voC-}G>FK^zi5Zl;ry>4Py0)WURXVLG{)J{m5NkLl$gC)3A+F`mvCPoIZ-z?e>_ zU(;8i25UjTrqhq<^ke!{cpA^(Ina;kU*TI&SJQuj8sBOBDM>RVG=PFeXoePOh1O_; z_6S5ULJ@%|#DKbD;vn9aq?uZ@MGxd+GG>E5%v=ciF_UqbN!&9xq7ID7%x$1v zXHus#>BCIwa^_2*E@#q@ndEjR^LFNY_!{5g573X9e@W6T`ZDWAv;?uwB8FKV5Cr0$ zMclKZ(FtAA9mGFtD28JM7>`+5$N{xBs{n;4Mk(fiSZ7fyvwo1I*;X*dvl+wLjMeOw zco0v5F_`^4UchT0H?ygu*`MG9z6AZ4{Vf=iIpl2)V=(6i_`(dxQ!4s(cq zPCpC;@y{XtIn>e|VxL3obBKKovCkQUB2Yhbrs8hQ0EwD27Yncmi^2HKS%wuL|8vOo z9CACi84{3>+1L#FG?)12p2Uy%1;0wtJPob`@z1*ndKf`J=Cwco+My#Dk9o|Gc~OW# z5A?zi5W_s`dtNQpff|`dyYseTCw5~W4&q@vh9^MH%zF+m;AI>Ed7t+N-Uf9u?>Iij zXZQkN<2x{x^L~cfkKgf^B+XAm3Q~~fzG6~wiWxEB5_NsD|y z4K7m92)UpSiz-nC-oJ=^E&2`QXwjdNMA*_jOGV zqc6*r<9;w!%jw7R#-Ja|>Bn;Vv3wF{VGibDA-=`$_!DO&X$3i7;Q~2ZQ32{@#YDV` zPjLd&=?e0Ge@_eodAOfE+&==;!u`+TFkS??SQ!TTv@!#{cja*0f>Fo@$u!4HgY4gIbm z<{DzI>4+eNg1BplyN0-Hh_PldXtU-WNvdTo*0x3x7>n9!%m8_>rABIrzjhhcU_FSx zmiTM8Vmlb`T5?}|2v6ZzJdYC~_F8gXORj6rNYWZDbZCU@L5|ln1@W#4Mi_{5O(%3g z9OBU*)XSPORDx~An%gi50#k4|W?~NJgIup6)-`q5f^FD|-PjA})0zkIFo=K6yZBv_ z);0%iu61D+=;PX#K<%u%4kl0|>l|nda=woGSV#Qph<{xKq7jSE=!xFwivh^MV3dPg zubYbLpsjVpy>1bfU@10$I$1~D>mC5PUdP;8M?C9Z#WB1EVqf)U{wuP5&HAxH*suJ4635bJtkT~Dm*iFN%@+ziHGeI{ z2lPWR7=sPueFHIX*oy;r5KrPoybR*sa1^iM4Sa$V_!8fMer)(bk~aFH35b0ov2P^y zjnwu=^1U$>;YdIdhU6(fB2x8yd8g0=5K_K4E5umO&6ZdA~-b~z^2Z7qyJRIbEGx2UF z=bLjt&NtKl&0|6Qn@d10Hq+2%^0}Edw^+~_nP4t&xgW&6#!Jx0ay- zRUp?}r(-e5^Hv(zN}jhqfW0^X^1Ss?9Kut07R0;tI6eZkv6b4``US}OR&u_T{%|~r0m$`s=HGT|WjlS? zekbn2RM3a*voHtrWBWc3_jcmmPTbp{0r}qk0$u{~Z~p+qyPa6K6YF;Jy!{XSB}qFp zXaFOcgV=YF;~kyQ71YNL;@y#gR1o(L;@&~rJIM78a=oJv#JhudcTn3qsO=pSK>v5# z0pi~wKrVJX490#ZZSHJ?J{X7j*bd^}`5N8?b8{#0?PU-U;h27&tCMIUxmfcn^VJBW4H6imYmkn3H`umR+G z*P|fMyQq&{)W00=2P=+Sv6w$T=k^J>UZwIuQQ@0Z2vx zX!8Mb@c?;vfIjZFgE85ifm<*N*>Hip@2&#z?`B)Fn|$x454*|t?zvcidvGu4$LyJ;jqK5aSoe_UJvYGs6Ivn|N$7!IU`+Rr z=RM?k&tMG02xMY3h<6XQvFCP7LNz9XobRE&_sj(Ky=NYXf6q3&i0>t7FKzCP26@;^ zANQ^XW3u;MdA$oD?_u#bH2v%-NUXb$?Z&mZyV3u50# z?E8p)-$-O32f3)k1WX07?jzQH)bGBJiA6r1K_mSg$uY&s6_XensedKuGaeR!= z@CC^Eeq!BEuJsFwrO$N^$MK4&DUD>L7VONUR5&!4Iv_8WD&GIX*~^4~_u!agh2r=t4fmq8Q^)0pdM4 z8*@Rv4=w~bKS<6GQribtU=?aW{0ASy2a@z)1JLG!pJ}(@aHi=L2OI~kwrwsN+{bj+s(;V&9ZD?Y~O5|Y_XbboowIt zeX+4^+V>CyK@b#C1QA3LK@cR6P*7QZSLgeibFS%}iFw|y`*q(Bv;5-$$e$5|zB9~_ zq3?`?NaIir#~c}xIFC8Vo*{dN>=}2U^9-G5=se>I%#iUq@9;jdX6QNNGrr`1WUzuw zY@rT2&1gc;8EyQ`UCll5}*jM9wApT=F$* z=?a3(M2_PUWX^n;$B;eqNnYY@-b2@!AF~KEWPZ-i{Dv7av&bPAb7bl|Q|?T;Gv&^7 zD}E%%vY)JQM|mdsf)XC1~wCL>eU6s9r_ziYBC;2Q4dL1fL6HA~hkJ!hFM%Ux%= zlPq_Vc1{>YUR&Hkiw7IU~2@8_5!XFmGNktIi#oX2^E57AT3ujnX8M>#sm z(NT^pIfdvar-V`(X-1x$R(2v+j$Ao%<#f{*1j|C$`La=*gdHw3|FX}~^)fe-JA}j0 zW$uMs!sT3vE_46IJmk;4m-~1C9p>sV_jz98RbJ-@mXb#SMaZ4ImNM3}jqR8rw+lV` z@gPsuya7Zph<`AWG^R3*(>V)y^UlTY^W@HxJ5TPsIhZr=esrCu>%2#Jj3;=CXOTPa zMPA`G-rz?{=?sG9BRBz{wcO7x|DH9p1wp=S`LXz!eBa}I8S@Y1Fpl6TCNY^~IgK-! z!8x4AZ0UjawB>wco-cO=%_$P1v)B_rQl`sQ}8CfhXvna#|82f{DSXw zfm{W06}Z`gWh|$FLK=c#MFivV=88Ko*NWfSfc+Q7pu@rx#xjlx=&w-zLir0%!VMIj z!l~%6@B%L8GOpw*7Vr!&@(SK6l)LafKICJ*!>$YEEtIuz1uM~GVJUhntU&g{jvy!+ z$o?F_FoqLP5~CP{%tZ&2&Oec{=yY^lWbUGw%wjedaS4|rcahvhau>;1BvaAWAXwR- zL-4aJ|BV?|>TKnDYWVwSw$aE=_R>RN5UlD)7!eFWzpLU%K+mgEka^V<+~g{`R>`%> zTdQPRHHWLYmU-O6Lp+O4SLt-sTfECB{Fl%8lK)Xe6S5SC&|UFRVi|!9#d<52p*WSJ zIGGEu&tm&5)=RMr#n*8ow{RQ(;x621u{_1kW7oy*wD>jNL|4VSEdCJtE?$IQi)(^l zwO&?_!(LXq#nrF!18Zrei+%J4K}kR)L(pM~4oh@cB7ceeCGwZZUveO3C^?#AIe{rm z#T+Gbk-J3hl6$ewk_9}%W5{0e25+;NulR=V`Gw!eAd^*8B5O%IyO6m=<`S9L=zEPB z*SMcGQ4C@E)#-SX}kxXPVvadNFJ6JQHck$+$+8|i#j@G7g7B{mHy{~l- zYu&@zH~EM!a06?;EqwHzqE|a@V?lL!0_8uRg?=tzz^js!$nO&9Xx2y!+mX%XQH8t2{*-m!4Dm*tcpd*v4D*vW48&>aL-A;Rd7 z{8e$dk*Z@k0a>eLt&+9s49r&LKC0YDmCma!Lcdjaa3^;mZa=P^$7A-J;9TF zihNbN+Ze^6oX>pTz$_cx_eQ;K+>9IBDEr11WZ&4uUgY2C)~zI{9>ieWeRV7&NMJJ4 zIFlK;(Q3J?<*wFw^<}t`YWu3b7dfk+;#pqcRbJ;U-od?8|H4XEvlbm!S5UMzFGFovTxqTcA9BH&o$nzk+8?V)M?R@S>_FA`6`#iGNe#j^MmoJg4_B(zcht<^4fULDGv>|h?%(XJt z>busATiwi7H?cLIM0CAX*IUOhj)O_#P-NeF1T(pfm-!KQxwSV4>PB-ic2V~rPau1p z>~*r&y@Bj?ve(I8_c`vPPX4-YS;A75v78kY;X7Qni@o#&fin&2!*S#FQADHXdOg?c zxqbq2)=%VE+)VvR$X0(2mva~QqTl)ld6>tLxnAaand|Mm-i-CHA!q$J=(%3c^*`|| ze~?Kwa@WgUUqB)H-xh&P+op2|uk$+_=n8^{7NxV3}b>|tLJv_+xkHo4pM z+jayKnT)J$Cvq~UAak3{ZF+9gbKAAJ>9!kj({1jc?GDV|b~pDTf14iKeqsaO+?mWY zZsJK6Blk{sveTXHbSFE@(D%*;5Q7;)3WstyM{zXAay)0C^Ih`qItTCWDq#(}+O>`?G}4UscI~8#zu(o< z?hxMI?Y-UJ+dYio%tmLs-QaFFxcjCc=sbXtjAAsY%;8qU@xgcody?e#qC@ zai<-3W{`<~I_2%uPiHw*_?^{RLoG6Q%G}vTJAFaWNN|&Cx^wg!NJ$l;X?LFS!6HgM} z+vB}Gdf0OiX&lO7cze%8ZsY}iqbvyahI0b9^8sexYu>%~wAajg>#(D}yV*l`5bX2z zK5y^y_P$6Gn80L?<3y%#E_1jBJKJYx`{uG0v+Xlex8AzlSNC8>kcc_DQ;@w|=5C+c z?Q^?*Znxhf-KTRFdh6C(_xW6mce;Ik_X9l6bG*w(e9LcCV78usIK0v0vwQ5LM-M%A z(lZ@5+~f0me16a6T)~xG#cj;v9`0iSkKoOoCs;y95cGyHU$6Ok&DT2=chPIUUVG}b zr(S#NwWr=g&`gedg=?l<)b8Ojc0L2DV{; zee(2mvX`DfG6u3g2QZA`#FNP3Oy_#;;6a|?DW2td-r#NC;{!h7E56}-ex!meY-2k+ z_>+A>D6}8Zct7O*koQ9)7|R5X=VVUdG^R6?S)9*R%;k3OXyv%FJ z9QulULL2S;ovSwp^$Q_izi9r!5M=B(nUgu4vpAb`IgjhOi-&j;@AmUfyVd1!$u%X0aUtw~Djl<1^oybW{VJb73 z#cVF(QZDCa=5ibVB9FCrC(NycnLTU=t+ca?zu(^%gu?A4+)l!W5JMa?gzF+)7vZ`H zmnU3?@abI1{n$zPJN%D7$R(dbRp)MIDs>n!8zD}#08i! z!fX-qxQF|A0NE5Ftl|?@h!Pe8czr#P2L&DLJghjYO1UC;cZgjng;-^Y!;x z{XfI!^!GXaeNO*h$s!wb_BUt$6*L8*0q$qOp`6N0W-*%!nZs3F!yVj zG|%CV2E5D<$Tpxe2>FkLP^8WxBN#vu6LA-j-iq{Aq_-mV6nQCE;JwIexq+Lw6a7Wr z%>o|bah~9P7NfUFdyF)5q}@f9;rkP5hmp0^(||jQ><&Uv?lwxED8KWf%pWzLBhhEn zamW`n1)WC87$swrj8QU1$rz=VD7%b$4H=?7Mdwjp@-^RLZ&Az9bCgU`t657Go7h4f zaz)7%wVN*X(i4ORdT-!$=waYZ%%uRc4P4I#%or_ewBJ3^?k@T~E^4q9o) zEky4@_tCvUXi$Hmh-QBh7)>e%k;V~BWHQHb0%tOvvpF{i4VHQE`+SJJgY9AHq4@cs zetzglOhw+ICDhYMGk>y^4&)oE_n~_CU)Msz-0ZM8?^#uZ$}HOL-!FS5qzH||+p;8omo+*`bZZsUGoC97GB?^K+9#Z|G1E$BF| zfxol$1^yUh!qD#s{f-#O{tRXaF~~k*1e2J}eRy+({f%&Y@sS+FX0z4G}A&iW=M$U0Q8(7Yl3|w zj3k9I9D%MArZSDwIg1&%kp!J5T)|bi^#pw<+>g6Xc$mk~dxFdfFY_92@-~I+2||hH zPn^YE9>tuAz6XhBOne3NCAy`=@AwhB^5-&y5|`mSoLGikC7L&}hOL-4v5{7MCz8yW zl#I8M%#bvb+xZW2C3z>wT_m}Sq)+&spZJwO$RwLw^3iY71~#&pTI@5)n@KuO(s9yW z^qkZighqy##6QvFNc$dnCJ&*Xk>(xwB65r@z)U08jX)>ZNj^qee9a$gV{)sHaT?I@o$Y63?vk;xp(@tnbQbTw)gv$+tr zIqKiYKI%~(=PkbCXMRIxqcX@Mht+JMjt1KJi`~eS5=S!LPdS@QaaSqsD&<k zJ`b>fM|g}6_>3=cD=9ii$wQYZ?kuHYauZpWB!jQPeq z&2zlSE4+?=$GnR<$9&AEn0L$)ma+`*ToV^&c@Ddkj9iT=l!aje~sO~&5GnqjQ2 z$Ijy!7U8=#_ILC$wmS%=y5H1DV)5@w9Zf3cOHJb_j>hezo`8;0&6lc^)O&b|Tx3hN zgH*XvH)02=+t|(y{zSfU{Rn3O0~vxHjB_XB^g1pH{g1ng57EiEZ}=JaH!g!Lma~GD zxWRGW9;b_OZgISy8}H}F`}^a|*?>&rH&aVJjqIX}z4Qbj|C2kECSO_@dQ3Ba+Bw{h z?$Z8;9BG-@N1B<_%$rt;&rWN{jOjin-RGqHoOGX)J{0q%$CF43V>yt6v8(in=sEou zrZNrplYR!XIFH%bXZk$uW|o(iEu=q-d~fj~$?3RUoq3RVym8;X(wC@2V4 z#Ezl}Sc1KGELgzazccslZb$)Qd3@jZ|2@Vm*;}TanRCvZ^E+o|SCp1iRma7>$RGwY zEWtnLC)B%r53mW;e5kd6apKd7RnLJi$E4Ji{Df4l~a)FEZ~k?=hb+Uou}Y zUo+n_KQcctKQq5Ge;^idNQ1OUk4(snEXay%D1f3+2NaDuqI1wdGzbkw87LEFp=^|c za?ubp6y>2|XgC^$#-e;Q9!*8l&`eZ-f@lsZL*=LfU5YM4m!q|49l8RoM^~b&(A8)I zx(3yvI#iDu&=#~C?Ll{;yU{)9e)KSU1U-SCMbDw<(F>>%9Yt@Ux6wQ3BlIykhCV^Z z(XZ$?^gH?kGZYY{F*j$GvePPQv~1V4Q(-a4sH#hvN}=Bp!>$;fZ(>o`GlL z*?10~ix=QUxEj~s#drx`fmdP~UxL@;Yw<>WBfbf5#tnE2z7223JMk`jC*F-8z>ndl z@F9E{AHgr+m+;H@b^Hc?2fvFy#b4te@vrzd7O|KWScx^VCf3H(9dl`E< zyOv$YUcp|+UeDgZ*0Hy-yV-l#d)WurhuO#31ME}mA@(r)Jo^dzDf=1wIeVP_g8h>H ziv5~B!JcHlXMbaVXaC@MPT-83i8FH+&dPZ?AJ>`d#U*m7TpHJ(8^C37Ib1F`j2q64 z=EiX2xe44%F36Q}m0T6Kgj>p;%gNk@+-mL;?ow_YcLjGfw}ZQ#yMx=w?c(m_c5{2U zySTf#d$_&aqugWMQ{2SbiLz&(Gjz@&)`XzL=lKm+}>SHNS?xh`*S> zguj%(jK7>;%dg`b_$~Zaej9%)e;dD@-@)I`-@)(WALJk6ALbw7ALS48NBC#?=lJLO z7x|a?H~2UCclr1D6Z}d38~$7VJN|qA2Z0v^K_h4dQIG_)U=gf>O>hZOLIJV(MM9-eBPw;2(Jq7 z3ZDvJ3nzr1gx`eUHCQ8PB#lmE(wH@NjYH$nBx;g0$(j^RswPd7uIa1kr|GX5pc$yi z)Z}S~X@+aYYQ|}%YNlzXYi4NXYUXK5H1jnJG^Lt_ni|bw%@WO04bfbzS+Cikxkht? zW|O8?vqiI2vt6@8vrBWQX0PT^&C{C0nj@MQG%smh)4Zj5Tl2o=1I;nb*P0)+jF!{# zT2X7zTC@(WQ|s0Gv>mk3+Robk+5y^u+CkdE+6--`HcOkW&C%v+hiS)ZCut{ZXK4$y zCEEGg1=@0LrFMn(eC-%|+yda*&=B5oD8iMNVRh);?K#HYlk#e?EA;vw;{ctm_wd`^5` zJSx5@zAnBYzAb(zek6V&ekpz>iIODgB)w#ijFL$*OBTs0*(AH3&fA)S=Ik$%;& zI!R~LnRGUtOXt@4bpc&R-8s6hx^BAex_DihZlEqxm#Z758?GCz8>1Vqo1mMhE6~l+ zmFg;Vi*z-*WxD0MRl4(Z7wB%(-K5*3yIFUOZnLgdSEsAjHR!hJZqwbV+pXK9yI;3g z_n7W+-G1E@y2H97x|elt=|0kZs{2g$rS7Eed)?2vUvz)yS-oCw)BE%t^wIjx`tJJP z`Z#^OK3Sil@2l^p&(;su=j$iwC+nx{XX%Ue^YkV9h59mmrT$X=W%|qYYxV2&SLoO4 zuhd_qzgoXRf4%+|{TBUJ{Z9QZ{eAlT^^fVF)<3U*QU8+uHT_%q_w?`UKh_`9f382S z|5|@S|FZ!ZB!kglGT00*gU`^x5N+se=wj$$=xK;GBMc)AqYR@B zV+`XB(+q`%*@pRs1%@g^wV}qa%y6z@wc&EZRfcN~8x1!bZZXsw_8A^DJY;y-@QC42 z!()cW4f_pG7@jm7G(2y3!O&=U)$p3(J;VEk4-B6hjvKx){9^dS$Qn7L)~Gj{jTWQJ z*vZ)0*u@xcOfV)IlZ?s6e#ZXBOkjW}gYg>UwZ`j=*Bfsz zZZzI#yvex9c%Sip<6h$f#(l;IjSm?gHa=o})cBb3DdQpIVdMM84~!ogKQex7JZAjF z_^I(T+M^iUbFH;{=qN$&$ zziEIe&os<5+%&>8(lo&|(KN|4)il#oYFcP2GnJbvOp8o4re&t(rd6i%Oc$C~o7R{v zGhJ?4Yr4i%Z)z}YF>N(%H|;d-G2La_YkI)6&-9?_anpX&6Q(Ck2TaeJ-ZZ^sdfW7l z=>yX-)90q+rW2-DGO z{@MJC`B(FA=HD&YXt#(Klf`UtTRax8<*?<5Gt1|e zudIpIRBM{Gzjc5$!ssrT)~l@7TCcO-XuZk0*;;GeV%=)pZrx$sWxdmS zxAh+DUh4zahpmrT_gkN^zG;2S`nL5Q>$}$XtnXVtuzqO$$ojGMGwTWK57r-Tj1Ad1 zo8D%yb+L7|b+dK1^|1A{^|JN0#n@tPeQb%gzP5h03|ppcm~FUigl(j4lx?DIlC9iU zVOwOYv{l)vZ8f&Vwk5Wuwq>@JwhL{S+AgzQZQEeG#_K59K+Y`1!wij%Tw%2WM*xs~#X#2?ao9%boA9lu$?AXrQIXiC`>>9hyZneAZ z9(zaoIrg6RUiK_|wmrw5Yae1CYR|I|vk$kAu#dEl<>Ty=?KABK_PO?X_7eMi`vQBF zz1qIceuaI#{Yv{)_N(n1?AO?@wO?ny-hP99lfA*d#lFLSyZvtaJ@$L;_t_t_KW^V| zf5QHx{fPZp`^WZU_D}4e+CQ^@Za;4S!v3ZGEBn{>Z|%R>e|2C7>(Dv$4uiw!FgaWf zw?#;b&e|>>mAoRu5;Yt*zBlv+~(Nsc-*ny@r2_^#{tJvj;9?5 z9nUxpISxCXcf8_w)$z9D9mg@pCyq}YpE*uCzHu6yMyJVXc3PZPr_E`1I-E|Y%jtId zot>OLoIRZh&O~RDbD(pObFeeRndcnlob4=f7CVE^InKGxdCn5&eCGmZsk6el#JSSB z%DKjQk@I5bdgqnS+nn2-JDj&W?{MyP?sDGg-0j@syvuo?^I_*B&L^D*oX!9ly*CE$o*AdsVuIF6OyIyp?;d;;YzUwpB z=dRZ_jLCR_e^(zdzQP<9dwtvE8SJ@74CE07rIxwH@R)j3R zE$*%EZSEcJJ?{J6d)<$@A9wF}KjA*?KH~n!{jvL)`xE!4?$6wxyN|oSaDVCk%KeS| zXAk2+9?>ItbRL_>?&&huR0xzw}XbEW47&qmLUo-LlOo^766J$HI`dk%RH zdyaUX^*rZ!-t&T|(R0-EqUR;g%bwRg?|F`SKJk3*IpI0!`PK8A=XcK^UX54ljrMl* zp5yK0?d_Wt7i)%%wQ=HuJT>&yUusB?-t({-&WsF-!9*szTLjPz6X4bzN5YueJ}Z5 z_PyeJ)%Tk3b>ADlH+}E&eSF7!U--WCeee6h_lKYHoBejb!|(BX{R#d=f094hpW;vT zr}@+Uef|CX{r!XeL;OSidH!MkasGV&c>iR7g@2L1(qHAT_Sg6q`TLnxc>|P3IC4)CV&FEfGJ=O*aMD0AkZ<;BM=iv4x|SL1+oI!fuVs> zfpLMEfr7xSKw)5ZpeRrrm=`Duln0gsmIjsumIuxYToAY>a6@2Y;O4+Bf%-s0;MTxx zfja^_1A78@1?~&nA9y(MNZ`r9p}^t5^MO|bZwB58d>HsF@O9us;Jd&tf#0LJC@D%8 zWr?yz*`j(y^^S^(ijC?M6&DpBl@OH}l@yg6l@gU2l@^sA)iSy6>iv!hC*7DiP>$x$Tg{HP0}E{s|obxG9aQEQ{Fj@lGe8?`0s zwy4{q_C`Gv^>EbV6FQgGl$IW442+R6F=ocWcqfg@k6jR4Ry7s=4cUSwb}lL{tg32Y zER2=0F?Jcttjx)L1LI^|jGOVmju72Ka6REV$z2P~ol`OsQ!~=Db7OK6lT%`nGP4q6 zG7>TpVv-V*GZWI%<1%wIGvKkzl+3iWl%%+r_=I@4nURtllaZT|9ut?AmKK*Dmza`} z5)Y5XC8Xx2Tu7ZneI&7Hl`zU4%3P0%yeP8GTmg2td&Jsl6A6PHf&>hFg=-GOmBE3 zmgyxMWs^LCpiS_MN1hxvVvkNQp!nGEd-A(tD7M*e{uwn&JDJiLUbbMTL+{)h3E8^1=;*@X6D_4ex zxi6E=#NEd9WBM}#n1Re7W-yb%WHMQ@S+>Yl*(Td%hwPMHvimj|;1xrNYU^-|<(Mr9ECZGopIRF{;N zRF?#+CY2Od&r=`EE32viYi4<6(_@i0mB*$}ED0{j4$iKbI~NFNwv7xfEU#QPq_VJL zUencZ8zME#fa-FJOG4#};qFgmW-)PFm}$&(W(G5pDUf}#Uk=Doa)&KUAv2pPVv3od z94*Jn6Xi+r4BEZu$wlSG!B{A7cu93^q;0Vg@)el1= z@|p_u2H1G33e17i6p~j}RTHcVcVHn?$;34+AjV5KtmGM9~nPJo>lS~H@ssyfmVdbz;toKQBW&4=A;8NuQSdCkiS zw`V1@it%pVEO%{W2y;Gj0dwJ0l@*o25}d658LXNnf?3a8Szz`8-RR;Q zLk;ZXf)$m)D&RMTv=wr1xz}im=Ed1z<2%AE$FINg`Y9#V!G%gsVRiyXt_SqC5A9iBC=+kdZTNRQ{xC1;z79 zE2@{CD_?l=<&7Gxs2^WZSUqnFu&LnEp(SP2b&?K9GBQ{-uNrDADT>Z2ErC`-?M>Iz zOJ>w)G?^`JwJW%^qOgp*3Y3;7X6%3F>%j-DwPprtw7DDX4yUV~l}wyE?kHRoIj#!UcK8_@S$_;JLZ-{!Li*N`Z%0%ZI+x_S`(};FRz~0n2?y%zH;e!5AOiwrsx|| z9nQ42%AGVcSXu!doyNZX`nSK-p-Z6DftH3rjFZ@85Vc6kK9yn6Gm#XshV_k%bkF3(LyeUE;xklc2;!`ua)-2#?ln zoi>Jg5368Ii-L_ci(PJ_>jQ~s>G_PS1k7u~7+-D&XJ`;|XxZ-BOJ?7rnjhjYPAZ8e6fEQJ-6uR>32 zN`tXgOG@TcgOk<*PT5${!iIx1uL2kA`OIqO25_eCWbR@PFfTE0gVXdQ<}>DZaErRY z9eNJxhWdi*a~zt4rl5tW60HWO<|c4yZbc7(1M>hn1a8YO(D&#Ua8%lH6z+smz$rNj z=i|w^6r7LC@a5oaYydaoPW(7Nh@Zvpfh+MR{5!Z2o!~Z1WYgH;>{PZ0T!f{p%wENA z02kox>^}Ah_8@zNeUJSB+g@22GpZ`wa z1cTrdJc3{7BE$;u-~!7Ma=`U9MkrRPf|2?!vnlj%=pSLZs)%f0t^xf$XK6*Ls)3KL zsV*%k3sN$uj&iCQgp`_k=33@DW_7!tFEGz87+*akYhrv#_Qdf`b%1`Dkka(^lq$zB zs|Z%5hN>%=m|u_>-}Ia!wDUoEE}NTI3@or@P6;TwYBz3RHp2WFl|Qnknl`veiK>UG z0%}xPMY@TpXX3WPVBE~y!fa-0nL4?T94E)i338&Gw3TUKwlG^^w%rQ*rerxq9s#QS zc)Dp)RVipf(SoeKD*9rLDkkT-ljJBKlW|b*ri* z)y(K_V02mOvT-$KWzeh4((Y-j8fQ?6fdI}Vxgg2^36xNg#&C6E@dt7i1^c~nVsOOE! zF8=^?u#S0(d0HMI50nSBA&#MkE!D&5E?uJI)k$-Nc@`Az(3AmHuAVut~>VNsG#v3r0NYVUWo6;A zI>a-pZRh=={-@p+k))b3nvHx@C!6n~>X451k(xf*^}Je#0U2jT=BCn;dSsw&nVveQ zusAg#B_S>?4)k*SiWOkHP|O$!>1n;A)05&>uGF@3myGPl&BWCs2XZ2pJXxM1PpwBD zrU?1uX|S=MPFX~k$UJMdtyi|?u|Uq6qUxGT;DP6y={a?8USRHcriVgSfWK=;2(d%d z3B@sSx1-Le3+f6QL3h*x^+df;Zxn-KQ6G7xTp-Vq3+35zkz6bX4rF-xYgWGlosMYAfbOl~2mpU}IcZ0UT5j zb*ktHGfhRqQ+NCDG!+mzm6hd{s%Zh1O->n=ZN=)XNI}itqDCX-j zrm*p%1&Xq+h#h*fDsvfan%dgX1&~kGCDc-AJ+%kQ6lmEk%G=;tt7#b@zjCF*fY1o$ z=w^AG`uAuwX0yCd$qMqFhmnCd-THr0fVXs1kNW zAP_2p#aUo;mRKii$Ot9+l&(@? z93myvfI_qgH)JlF&&1WCd8kBQEH9~p+0hGTgQ6TbBCn4K7A^=DtD+pNn3Kmv?t}z( zZe{txh&Tury$G#j;&ytrbLD07a(RV(uDnuSC7&nDGLg@h zFW7-rFe`tE(9HS4Y~+jEMExRZj*d7{MFi7V`VP#2Gd6}Z3On@;C4TfqVR23IfNS{&6D9cKNQ=4wi99g)u zWMRqjh<@N`GA-tV2`Qo$b*iW=SqPS^@NEUQS=^j&!VFYZh+w7iE+q(98AG)}2TCfy zU`$ILqZT%za9Mc`=u6SzwHGcuSg1S}k~&l#M~B8BviECY_X?X4(Y5GCFe9St(DmpB zv{7CyuaPg3FK$3Lp-s$jbc=k6d<8Iq8|9eEBZ70P)g~&-pSFvBjg0bCwRv<5r;IC^ zJ5RYACjVBngI2Q*-HL8Q+vQ8;%jC=DwGA-CwxXRdMJE7J*M%nPL?99617Pe9E>R}e zxWXlhA`0uy+x%|G@RnaxPFHkvvzyB6<&`iGz+6{S0Ty6*-`VUDrF6;-)YWt^b8ItJ z6%-c>+KcwlMf8BYz7{gbAKSza0VC#t}fNL5qxDJYKUGZ{EtxVvAVZ(-|!zC>T4uh9u~5`81r%5`$R z+#qj}w{At>!G`n)`1}dD$~O5{f|kqM2wFw?%PC6?s#m8qR0f`wkREPRuMGt|2Jk^; zmr^w&v{Imb@rk{rQF06~DJxcN+X0|#O=&Tu?-=l!jSDUU(|I+lf2u7)A3|-$9M*z< zfO#xnjeMKDUEWcTMUaTc<=bJ}=hD%z(q3m&g{lsz@aFImgqzB;14DlHGB9f}+h7~+z)tMKZtTHc`40J@d`Ny>J|=%pP=KIJg2u_CU&R5~tarfCj0tzd z=fJkTGw#B?j=SORxCicudx7>`9CDX6Q?*7ZZmy1VKsHh55}nbpRf;CslI57HC?33N z`v`)eOmWwQ)a#bdTbkXa^-K%5V8XZ&@OJoHlWdA?UFALUlc3MabJ12 ze3yK$yjR{AQT=ges`^8lK+~T=?LuITQB5!*Z5n6dEO_8<`5t-51jTSuqKmT1%!O}_Qi^?m7Td-KE&NozqNzU!3k;rWZKOMjCj-r=;Hh{T^ZKbHJca5d zK(mDv^272YGE-olMycGlPoF+id{ysK z*tjkZ!gPE>epoH65?8@a7-n%Du2i~JQ8T-=q)43;F{+ijz#J2qjdXjUvYha^#EuEh zEv%}k%2zDnSDbl+ZcUgy3hTZH2y-94ANP{qR+!-%K$wr^k6JRrefYr$VLp)GY)+WR zDPi{GC-9TSF{j*W(6@^kC z{$o7ow2eKLaC9m^A%8eyyHYj@lD+sn8>i3kP{t$-xV|)yT`g3KdKY^kCPX4y# zP=AI$j|}xm`P1e@eS%7nllU9_E&dLFFMlQm^7j-W@i`R|uupBnTBKO@ z!{hzCGPqyR!KIF!@a0p)N%&H0%CI`+>^NmWG;=jL!ROtY%?Q`1RHL+RN ztdQs%u${qDDyf(ktSl_;UeLF=qxIkfdnP}E0)opoVh1sFftyiLVxRymktfnZ>FX!DsoFbONLEZFI_E(L74uz!vy zs_;yw)}<)O4%lE+2V=|U%&7{3TxeaAivLibqTZy_bt$8!dY-cFY~5q3*yNU%7K7Of zcD1eAu>@dEBcNo}&cl{7$7{be>nUHT0JtGeH*hQyy($)6KoZ1V5Jr zR8B3sk|0|x3&s*V#msntlU5h1WKlQmkueFscLBSG@z${yva1Pl5ag_5FG4#B*ihHW zU1x?>{t>~lxz+Qg(E(8QK*1`@P2Ns}&C33gv9P_urLAYLrlnoUUPX|PAb%a&$zCL{ zqvds-Fb4*qszsTtnZ!n55;w7%fJyXVH{)Ieb);OPCqYrbCY~awM@u$Q&o(r%iEadS zXwE0L1EXhmfJ^fZb|<@wplE{5A*d5UoeApF#4t8e<(^hXHw_`(t{Jnyr*QZ%lV~4z z-%t4lL0!+rIG$D+M|YKRO!@naqlv#a@6aiH<7t&|bPp5o1@=wKHyYWa?2GJ6?91#c z?5pf+?Cb0s1OY926BI)bFoZq?#Ss)wPy#`T1SM@}-wN@K_t^K@4}focMEOQ?m~W&L zG?1V{ly40FFW*p5im_F|3jZ;_@eSo0-x8D(<{LjyzVRdb6a6J9m7p~BQyvYmO)(*Q za}0-pZE#?D?OV&S1odkl+u$^uL>KyM4y1>Zp#HGXIXzwI16r{Si^JbZwL~$DSqN8b zr^q-%0j+oh=cj5Q*8z8j&vQ6f%ehn!Bq$451pG6Gps~%iLtGcGYZH$c zMNoD#9>Mhn9>K+Mu>fy~<6u(f5Hy6KJc5Q1G$O(yIKR4(b3+RmG}SO_t{JD`(qRF> zf*(pJ{E!H;?(|H9%T$@q@H3khxFKr&BhSJ}xDhHN8Lcvs+5Z$H33s+n>y9^Z6mEpd zQAYpS4RvcOPsClg$=np&otwx_=VlP_n}8&kO;Eo4G<+ebkf3GF>0H3gYNB%iLF1d# zc@A@ID>s*$$CYsNxdmJ)LBNkdBbq|cRDz}vG^2^w6V<_yU@i<3yO7dG&V%xQY97!HgW9`3 zXB?GNCdFmyq?i?6{TsMjK+JI0aMyCzao2MT2#xy0%T% zifX3Z5vrM1x1pI@gu|T%pQCD{W@otKmpE{ifHKOxqKKHKRKy&iGOD_jjQX?8N>RjX0qDF zUzuauxZk+n0no?rh{rq&URr`KBnYT-5kVIdbO}M1Mc5`U@ER)n&IebnVmGN#Yy%VW zD7OS_K@r9LF0BS+jWx^~dr)o$egj~dp-a3O&}&f08UU_=?WHX+W%%WG@l`&c^3_Yv z%vbqyRK9xo>G`); zsB9h0>brEW7%47X%c&Pz7FP}ob)DH@&LHRt^BS44g%Ci06qpPCNs$oRV}KVi0(n)Y zE}zN+P}>F8{P95futh!WX{hJZ`Mz}ep6-FRy%3=_&iCgBf>V9}s1Z#RsnBU~xvZ1|b0XyJr*8N0<%&c7C|}6W1`OL*FsX{b z2t6u4;_+9v;xIu@xu#g&2)a=n?jS!093hbx>iD_fIyvP+xZNc@U_dr+mSYhVYQiU1mVg zOi3h$585!kq`DLgEf$EUQ*S^d0yu-|`hk&{kf+2Cl-E=#Xdj4(r2b3Pt7^4%^ zJ^#`E1L6k`f~XlcP_(Er7%WpMJYhm!w(6;b#x}o|4-{4dPHF6GLP|<}R(fJgRvbjU z#^)p^#AN5>CP7eZW_os3QgRmbVtORVGA(XpBitU+R`?rCfKwY#mpe2P{ze-)Z1`Z= z0O71Us5B`hEhjM(!faFHGSgymX z%-F$7{3b0RJ~2KeJ~<9XHYq-Vjy4pPL))Jem!6oAlM)w~kk+i#FHW2kKY2>Wsnfu^ z8lI@?K%Ls=P)Kc5^Cw!b2~YC}PFc%JWT_1hoM((vJ==X4p{iZ~Rcp(hB2PErD zW%3{m-%?QiHUNJAF2KAW0i^bE=0||J_C(2$B5x!bt)#-6fF`2JkPdG;q{AyjMUW70 zE-HbPcD9Ip5MYjsC#%uBQ_!e9bDd)C9G{_y0a&9-i3*Q6o$XD=j{3S$% zoP<e?!U7yhOtTeg%I6gp%{? z`78OW_^bI1{5AZw{B`{G1l>l^c7k>gbUQ(J5V}tTQ~R9+?S`0g{zhg9zlpz@zlGln z-|DDRv_~!@2oO;}5%e=bztT&8P}MCQ)vW@8K_S9(Yt_FwB*=A)SEF5YC z)xEvtPSQPk9+Vm|G(_o~9op)G3cjOJ;_WZtnCx9)8f34LxFDK(6~SzIjW z*q|%4b6h-ApsrZ!mOeUXTzp%#QK(1A(%T3cX}f#jUi2fBoN8@IgOb}Sn1+nEyENVQ z1}JS{M*W~}ZAOeYi=5BO&S`JK6JP4P3<@4Hynblju(n#+#$Y#vjhlr=*v7QKu8ZeD zU1ME!<3OivJ=-BwBiNv$*GZ3{7W3lS*%3wm|~v z-4Nh;5aJNugFwDdm@g25)X*X_qK+sIrGuWE1(DA)&};}Kxe$^&Uj9~z8=@&t&m>%Vf-|H20w@2$0zX5_z#w4 zU2IQCmz=`(13h;JBuHKWNs-TIFJd=B>f=4^ee7O{d~RevV!vg7<1pyDK5z}DLfrFc zNLf4=;+`uYQSln?GSGSN;O^!2K||_)+XNPKLt!Z{{jCY{}KN&e~kZxpeG0dVSIofkiOvYItcy_{&TQV#`0e>4b;c+ z3|J~bb9xu-q#%;d99^phXemJ)|B={UB?`E$pyF^3f8>9s`qEGQ&-^d^ul#QW9U|y3 zK}QIBmZ0ah@PE+AUI7a%LC=Fy4jp@upm%7`sA*eic{si-1kV4z5!@^2n1l6#9^%`L z1ie5|BSA<1RE#e~8n={bH1;}^ir!3U%>;8g|{HIK0w{$ z6l*z_pqB}H`!5II3en*A5jqOz2%Ut^1iebo>jb?)(3=rYfY6PC>j-*H1yFX0Pl*O= zHO+U^vM&_9+L;CqckdB0>occB$c8Qndeu1p!YO_NAxXXVmTItXS6FN$02ZQ8(-Mi(5pWrY1o2X*@)qwnI-3&2C|UkOA=}!a!k=FqohZ2>OtqkLvmRm?9w?G=CY~ z)gRNT{I3V0o-tEZxb?#YfD7I(j1Wc&qlD3rb78D7PRJL=3loHi0yxNl8GTC7X9Rst z&~bu*tX~rJ6+vGUbb_Fh1buTmN))EHh&F||Q=wQcCFonZdAKPAo)YvO9gb#!q`7Lu zr4n@(iuY1gei|dz;@SUKf=*lHNKm|PLX{Hi37f1YlU9N{DIxYWOtU4zGH`teO9}d+ zR#;BZk90iS8BQv!3Wbv{Qsq#%%=3i{X_*%g^vj=#ClxLcE{Awh;Zor;f`GCA{!d1f z3RepN7T6(d5Uvrf6|NJm7j6(X3O5Qj37dqQ31$dJ1Y?3(f;obDf(3##1ZxQv36^%C zi$cMrYlJPrR$-fPt8g22VQvJb0nw#2rWET4zJTCM30_a|l@MCuRKX6ZY4ZvT*>)0l|DZC}T zO|VryNN^^>V+aN~P%C%605J%{2Li+(2p z6O>2<;Y+|s;3$F})X7e;{VxZ>2`6czzY)F_z7xI|ejwOMu$y2H!Cr#>O)~gB#qkX- zY)>d$*r(na)vD2`<@nC*K-Z`;8V6K)+AS9AJ@fObCmF;|We7IF;Z5)Y3fg|2;So%>$w`u24od zYL?5WSqd3HBLVRMP^kuA?*BZnUNZ=gOPaw1$A*wgnk>*@HQAaR`b%&hg5%Urz%DH` zr-vuW2+b%kD{4j(oKUM7O>iPLE1n%!ugTX;Q~eW15^Nt48%7TT$l$ z&Auk;OeJ_+MEMt z!87U70amhr;PaX(Cz=zQlTE}aA-JFgaef5QwB{$x&zfH}ziNKd{7&#Jf@c$4L~t>| zz>VfMQRowO^a|C{`_rK5Fs<5!>eE`)#X9HAN{QB`wrSp3D5~|V6rKM+j+WN?Rr1ac zF<@;ME#!aNuI;MrrtPlnq3x;drR}Ya(Z*^)Xe}hTjNo#DD+pdha3#T21XmMWL-6A5 z+IUq*(I%^CX>B^yP?m%>lw}dLG+z1to_g{>uXAXJfX<->A+t23b7+U31}zK! z&^ENd|CZNkfd#H;pSGc$qMZ&RT050pO)x+p&V-c?S2bH3RHVALSdr?h{%LfywiNb+ zT9}?BgpSr$a32wT{$GJWH)B}ZbG0i~hNUG0Urg|YA%;cpMT$7lUOcka>xwt-?p!-d?ZeNfFFwNd+kb{}Mqf^ol!;Hw+74{0A}j%yz! zcmu&V$hibV3aL{vM5)I6NGhdB5~*;(Pimimg0%;AE#btY`_Xoc%O9?QfN8mZ8b$o#*#{Ufv zaB5oN?3N(l!hT98iaSo9^H)K@Fn#7PXpY>S-%mmA7D95`*~P`_G&SwNiQHWa2UkCe z4nQin{*Y&D1wJ2;3|9eScZY)6y%+Dp2LQ|PHDs>&6_5-%$l~r{eQbb@hGU>R1AaFK z4t}1&7AV-=OW{c8n;`kYPB_k)q8j!=Z2nj5k8n71KW-8?g`39B;8sG^WgQ%^d^h(H z_Xr%UydMrz{*L>Z*TC_~9z{wtA$H5u@8M5A4G_B_aVH{C1Te0MMONfQUKB))s3o|8 z;4K7$)q5Mkw-S6C!P~cqlBi>Pi3X8Xz_@q^!MB4!ivx@6mj8lr!CI;S(N6<44-dCb z>;h0+(JuzXD6xYWEp`;o5j%-sufBueodoY9_)da%6TFAuy9mCU;CldyD|Tash&`A* zv6t8zNB|jQ3BDJgxcImXJ4Y}VoS>G)Z>gs8e+P*x_7w*MvPA4B_7?|;1I0lE-$(HM z1n(vI0fP5!5i`V0{ys5V%pv$ef&ozT9>K2={FdVAYnBTv0x@k$KNz;BwmuI^QD(tp z_Rk@4#gXDTP>01);%IS<2riS8FjtF^XUTZJ}4>{|Pa(yWA{V*1p_>e@sF!*Mh5 z35o45uJ^qvAn}&r&bpMey42JrKw^5|NXBdcB+gO+JghnMAiaS{06#RX!ixKJz;%SA8{K1J};1j8=-8G;WHd>82UoQvIc(tP&R#ftdBY+f#-qQsySqhPRX>iCdiujl1L3` zA{fxVs1;#Geo4o(osc#0O{In~`QH)WqeTIIzy32wHSuE+aMpF=F%f3KNrJ!mCy{F6 z*W#~$C=pMHC&h2XZ^iG#@5LX)AH|=laPcZR)VBll7QAUA=Oxhu!wLx;Y@&AGkl0$Na@*YrAyW{~kh2$kHj#$~HfYkZS&^4*6)GY#CV_Cv})DpTT z#Yo_@tCM1-K7{26%hyTqfHhzRNGuLCvqGAHv!|L@R+f~?9NR9XN$FBwsh`we8Xygn z21$dZ48m#%3#Iob>~I2kJ=tXh+&}EqguRQfkGFwbld^FaDOVbTyGwb}FbQ7LgL9a5 z5>^Y&VK$bq4#LJX^R-ALrBT$^B8>&)8fzo0r1)A`@h>CSqzT~bmnKS+q{-40X)0lL zgf$S>NLUkLEfI%}l&v^-p@n}BxhBn5%Q2tXNi3Bs{vp-MOZgsJ%oih?IWz8umQqG z5w-(iqqj?!s19Lit)@u2g6Sn)2@YYlW5^-Qb^&M+VS9oNfbI2Phwwk2K1;dS;QCYaEp}8 zc(4Ht9lO>F#UdS)o{6cE0h$n1!3g=G= z=Txei5xz49QYfp5g{3cH>M7^GKxRgIwAR>~lA;A8%F7q15YEtn2M{H8n%=ag(zg@_ zCj9_Z`bqj(`h~EA6&M&hfYN9fVTTenuQ`o=lYVcKCb@(i7?CE5sMB$<8g#r)&}np9 z!VV%V2)RtcW;cn2Z&f}$Smo30N$efM6zS}$AjmqiAkcZ#3UbaO2y{{EBpULMO`>*W z`PN0LlL&I6{kg*`Xzbs@3OFGtdg1J98e|i_u&^SUVj5ae6$3))iku8Xt4u=}(`s(`WKv5Y**wKU?6QL*67CCSt zM5tyGJ4`$^^C>&_Y*bM*pR)NXRsK`QOz6}cr)>T|e3FE267Hg#qMJ%X3v@H+ike0h zwAqB645JUB1#DrVydG5T}q=+D!Y=;jj^w5{ocZOU;9^}(qUw3f3R zD-kBcscR^FZLzvw&X$Z+w?bVop=6~0facW1r&M?i4I@;KWN1n}s#~G1m~i4z-G#a< zKy%Wq)~(T9q`O#miSAO}WxC6CYjwa>iwIjx*dSr&5OywM=MlDqurO>32wS>cw_eqp zbQ^Tn=&ogY>8_`mQ#kP`yNIxh30pxmr~f7%4M~)LGQYKMD~K=MHo}GzkLn<=dxLI= z?ppdw*m4+r^%FFwD6=UfL3MZO?g7n7cQ;`xYjyV$wyJ%alkNfCL!bfa_R$?xH3ih^ z9!5I}ThnIp(cd}^j#JIA;cB1MJ*_BEI*8o%5tgPN)jdoFcTFqBs}%>T(5M&0g4w2fU(twTTB@K-d*6c);7R<`^vwf!?$H=9Y^Ft_+YiR%e_17SB3_Qoda^;gxx>l8Z!&F0cF zt9Sbd)|S?y52^&a>1+g>uM+HLm0tzg;mW=poyildyM!R6E_F58bkuzv~K@yoRR)*mB;Km^VU=Ufm-cDXJZ$isO;hqm0kS1$2;ghQTfIre|8Jn znz|=}<$tUH4g~f|{g3*e2z!9C{1*tjpGxclgay0Lht28xi~iRp`U3r)Xii@PhEOE~ zYv2sLK`>|xTEaq!AU&YGgM@vCu!oz7d{Q0l1L|o1XG4_?esu;MI`a%LbX40!z3`w) zoHl;i&{drQ!ufAC-jLsxY=JQrH;hCYVAAVv&vhIm7QA<>XzNH(MxQVnT_biy_g z_9$UrB4Y;1R-LWLD+X{4Pbb9w|zpyP-K_`62VYRcUJGw zoz>}&bqH5gYA9EPhyikj!fxsVDn$OtgB%Qt!3StqLfDT(p-P735URu;Yb#WV+Gq^t z8RQl=ny&~8r%<+SqcN;8T-3z2z9g)26lK#!!>|@?G=_DCD-7!i`x#+BC+zVEpK4~K z3GbrXu)`Q`RC&i2XW<>q>@eX0ZZPbkt9FZFt6`hrR>N(E?S>tO+YNUZb`th$!k!@P zNy2_Z;Cw0eJHmcX*dGY{BVm8qZn!hFYVS7O1NHYZ+)r2S&*4@3JK-?22e7^De;4h4 zV9_3+ix%YDFX2V|3@lp1A;V$%OW0ot`I}x&Tf%qfw;OBcVJ3;W|Gw98=fu$8-&I+!-t)&1Ame3&WS8#nV7IBjJRw z%vZCX8NLOb&hVY#d&3Wg9}PbdPD3~?;UvQ82q>qcLrX^Zn4aqm>l6I%;bTUOjIv}n z*zl{zj0CIZRTox4in547F}&bTHI#<0wXq0|2DL=P=@wy|Cy3})7;Q#-=me2IaDqr5 zK8dii%v!S^j_d&Yhw7Cxx{ZNQ44%On>z`+4k<)uN$ z9|ni0&@3e3Asb*EM4ui=IB%_SFyVaEZ)Ryb2G5ucF?hxtBMhIPaDfOM#F%Fs*(#t8 zV(`#m8iOZaCwC3kmT#QY>OqLSLvPT?J9%T%gENc;&@A=T65}kwbqK|M8jENXij6_S zMH8-LQxoPHOIw!Q@`RFbBPxxHTRjTlo~Is1qJ;e!&!u61{F}`Y)`F(nUq9%>eCC5b zI(7Z0kNSZ4t-Pv{kU0>%%A@lCSDyLdh6q3rl;qH%9}I*5y6BM~19zD{p%Xv)^c|d$ zITRuQApmeHjQ}hTNB?zANlj^a)JGea!UuiCwBrDe(;xJ4>Tw_$aJWYWMCVj7OW=r* zISibQYXzTi8;5+P|b%3Kb2BW;l0UNUbxnG2e(Ht}n%|{DSIa-9O&{DJkZB!21=n5%_XXEAI z)V>67z&GNX@n&2XI&kCvWA8oSn>g0}{k2(X6_Qw8vLwr)cNg60xPs|mAV2_PY}pvx zuxv^~@g$V=UPvVdLK3I<-g{4g^hSD4dhg}`j8;pDi4XUG$i4S>KOD~E*wXIIJMa6Q z+1c6InX6)NjD3bBh~H=D`j0zV*$2HVdzWW+D(Ezd9lDR~G_%uDytcQ7t&=b4ba$sW z*|+uAPQQ2hQ$0c*!A2V;Y=K#-mZ{}xNIgz%Rkx})vGDLC(K-Jy`hS&B^uN*nsI1Fr zjPJ&+jyr+(#o}7xMBK4)$HlFQTN}47ZhhSGLhT{co6R*&!@13d^g)@|wJ`y7JiBYEeUd zbzM_9x4fx(32T2D5omD+`AzA}3ZiEuRvS(;V0d!I%@HZ%4zbSAPAs z+{Q+^$y#lwt|>B!w79Oap2Lj^GrJCtXKFLY=r$XPNt2E1>?Lt+%=L}i*!lUm*0@b^ zo8z{`T^6@B?((=R;;s}bcR_=Nnj+Lx!G^MGno!e)njzFop=Jp+`>MFB;;xRnChpp} z>*B7DyCLqzxSQf`j=M#uIYPZisMiT~n=rYBDOp&2!cs0Qb;8mpENi5fd++ta+TI2x z&!Dn2mB}tp&A&M^^467pcByS}M`=z9Rh5OC!xQT3I|0ZJN>Z^=A z3=uvU_pt2WJ|xsZt#OYCbqFhV?4JD)_he*rP90ooYx)lsFwyUZQg+X`*n5^+K3lU% z(Up|R3cBZahLz96G421#xM$;@i+euqg}7~T+v9e`y%@)x=TM;z6Dr;F5kjSVo-5Qm zq2>#<;L5mHl&x{E#l0T)M%iDN^OMyNK+k z)YnIAZRxJhxId_@u4>kIaWi7vW7pUECq@$>p8(3$g(ExY5t6?gmRnJg*WA>^9Y?;t z&u8Q~xjymV&&NafyHeSgeMOcD$9Fee=RaEHd=?>@4jZdggEDF)IT>mWcq(1H!#_!^O73$cQ zDLdl+h@BZbL$SvFX;rK-)>yf~a=~~#xJ<1S>I9*V7b?P;@jp~8y5~OhNSpn~lYZQ$ zSgmHOX0_piTTRMxaWs7DHQVx)l9&J6Te8PJH#oQurSwZ>T;+~--XR-4r>)X74f zBGi)2R;Sfv<<5PoP^SrXdP}bo_RpJIS5_OES#IorID^nsH&utibB*nrbuV-67$2!Z zkxjU)iPj_j;=4`OF3Q@!e5N1U&Dx#Uwxp+xYG|}n#+=kG)*jZL)?RX_&km1^-Yks& z>-imS18VJK?Yoz>tOKk`dw-B>9k}-g8P;s()><>IT#x4nb?zo>j&+bwONDx&Y)~?G z$y|5N-jd$kwB$9`FAawpjoP%orxjF}RW+8??o~mo!>##@!&paHM_O~OG=z){lnHgd zP|LSi3#^6KA}h6|La0Xz^(3L5EX^FW%gntE+4XU5Q&VI0{N|=mm{(3}LVLCqLw6nY zH|I_X)kJz=;RV$V?N9H&@6+`z-0pm$&FIK|AHCa=k+w;$LmH{xsPixOMq3f<1nXoO zw~5wCLS>w!a+7t6wM3{@Lamk#+1;G&PHDF>yPAPrjrQ(R?Cbc54YC1@^jf!BX;+j# ztTVYAiEP!I&x)!|LS3L&f}^an*$Xt1a!IIZlXZ@=c8|Xe`%A4M7AvsMvzA%sTg$D4 zbD>Zd2{xlwYlT{OnYGedWnEycw(@bkP#c8WC{!|8Dof`mkL(;=To5h|)0-F@TF!MR ze(w(psvGHV(A4pjcki$C;@3BZXYTrZw*FgW6E%INxV4ei)XKo(6rP62SEQ`+@rZS) zP#3pMDVbSVqJMad{BVU(!}6`auBFQ=%ISv}*M&oMVH%eua*yIrBSWc?u32cXeiDP3 zo2&Pp`UB~Dy>yrV)yG%u_OX7%b@GGjg?j9N#lJTz+c#TpvEFLEO{i;xx>l&`oz?orwa8np`LC8o{rT3-|D z8A3f%sKoUgp>8aurx zw|q7qu?BNRbvZZ9x&pqF=Y4PeL8#{o^#THrmb$A3q^G4ty>8TiU#+}*y2p}z)<113 zR}-6Ji?PMpItle+p>7l^(%!tqX0n-Wn$05A%Y=HRP_Gi|HGADT*bdk494;xf&G^sn z9N06qzPYhH6i%ruYphLGF2Cuu%XWmV8@0>U#nx4*TZMW# zPt!(j70IG_II|W>MU%v|YtLNqOQ5+sU?5Y^T~zvz=}`!*-^P zD-}aC4-55Cp*}9ur-b^9P@fg*3x-GZg*^1!&*$1=yFjRq$SZ`~$lbUPitKl!A9#s8 zkf!`Gd7yvVRQ=ViP=!3CAjEB+KF*={=4_j}mfJSkF0;`_JSNm9g!*L5l*x>k+onyG zXV5vWtZ%FhPp#KemmLw?)k1w*PraDgk2Uh5M2E735z)~2vbyR@hP(8mujd*iQ`ggu zb{K89DBHJ0^1R)4hmq@ZLVaE)>Cv;DT2@uk5Gt>(jHXSC)zCbjoRVdOEN@toLdzIL zkgr4PS>0PZXg>p~Mtk{hBQ?Qv8|!PxMw0|sU$rzM9g7NzLpu_@!K=QCWhJf(=c%FxpK#zkSH z43)+wDWgMW6?F1aqNPe+&@1x3RMM^^k{TFy2oFn{#vN@qWnq1IL33F{bz}8{>RsvY zHab!w%xk2xUs1q){~jZRrFs*YR9;@Qcwz1G>c)yCp{k1VhKAaP=IV;N@{0M*RVk4> zrIftpYF?G)=BuK)JmM6-N~&&qlZ!?IZqHajCby<%Wl zYOlzVkw$5BS$M&)fjQ}e(o?h32W4esW@ZdzQbSJq9>?rDJuOr=C@mw^=wrWW`kEmR(Wyd%_ih5BBb?O*z| zOWWuAv`gF9OuJOyk50Q(IXyb<^0R}}E)V>)OWU9H6YYvnKZs7dw0C0KW$XsKDR#r* zPqjQR)DQX5={Gs~Ffvwe?`%Je377Umh5B);{cxfFYyT!(+U<6ioHV)C?vyXwsGo3) zXZOfH{-^C;Bek2}Gja>q6C+bC?ZL=Y%g;MF%Q&TnJq0D&d)j;1d)xci``Y{2``ZWD zlkCWfaf`2n`n6y>f%>gbzZ2^BLS<0mN1^`IriFAR+B0+|+H+7MTT@Mw|AhMUE+zhP zP>BariALm#?4zZ$MhW$oR(r8ff89@MjkizIr8O}kt>2_brbuc1-cDK$MO*u|k>8Q_ zS-QApM#S}J2j>~5%(E|&;wrPxx0l;1>>+!ly~@78UTt3}OfkX~D@>h)NfjoOFqwr( z6DEr=9U@Gf+w3(_aW&W%%h~1jCd6erG%7CB;ld=>YnmoZ&V%AQpyG<$aM_QQ&D?Rq z#4Kw4gLO1>yvVdw!kbLvBJ679PO+aRm3XQ!#kJZ`7bfd|D)DUlc__+$4ztQlHaV-@ zz9HsXVY2V*ReS5GU2D4<>e^`MWyVdN&ak&iL7H4rkQ)#(3G|vLpCQg{hA)4G^XzIb7lmNB2&a+l%bpH6eVI zesdb#I^9+gYAUO)+5KpY=SU5Wa&H6%q4oP)IlmzCTxd?XoE!7%x~ilyCU`M&5WUTn z>o!L}vhr}bsR(b&xmX-Dr=9`RB|JEbe6P#rImUzR&kIwx$mZwCDNXZ3WwpuGwQ`N3 zkUpMZ-yx5AQJ8w{^BB3ueO_^XbUKk-K1yb>yA0h&*4!VN{ANV@b^9B84T{^}w##KB z?K_33Z>#-XVd^J6W(_TCD66XoRYW{ipbwnbKa82wYX3->`nS|hPM)h5S-M0P&q)6> z``%L;>|Z(TO6qmCE{D#se`EjF{+<2%!#dl4wEtxP+5XF+JM6#Nf4Bc(|I?v3VjQuK zP7c*!a+n>O!{Ru^(b;jR<1okJjyQ+aVG}I%VoDLFfx?t7Oqp`|0#mjy4HBjyf_dXC z0$~~0k?1(W(Z$i#(aq7_(ZkWx(aX`>(Z|u((a+J} zF~E`JNOq(+QXN=UElewg>1<)TLYVFrrsss|Lt%~;W}h&p2y>w@A0^C9!hF0iUo6Zw z2=gPt{Hid2Av9HJUZD*T?8m816Bk#;xZ5 z=ao`E(G90eV8loNSrDlU?N*O*4AC=9E49u0&oea^cp9HKmEoZj{ciZkM((adjmZo4 zxKVM8)U(Yfwfzsi+UY3Nt;jks&t&9`L^&d5%m-=j>@j+NOc(#}eWlqkQO}rJa;5)y zlyzxwT?or&OHbImKY&H2v@8krQ8GKrDSh6PNDtBL&G zKFJ}9J^X*mbp6ykmp6%!Z zB4wkQG#U#1@AhR~s%JW;)OG+?a5OS4G#)vG+h@2!&v4uU2`^&O_q8ey?TV~E(QKCq z?JW?x1rthb2VnWMzg`1ro7?BOPS0`D0l5b3mNa?EKicPalAa%ri4H(hyqAx6`@4Ov zr|Y>+EwydzpyC=&SPtM55WSxreZ~<^;Vp>rMfJ@*1<{|&G&I&X)z5FPOqo)cTQI&b zxwc}@T6d0a_4HC(xC5)@W3BdgCGGB8j0zC#oc#6sq`b!JiYj>rpg%*}yT5XQZVB^g z55VjVT_w?nWcyahMm@h-2c((P^E1kyU)@+<6Pn7S$M!PWqGvn1)OK?R4*&0ziQb3Q zElttI6pnT*Q{;ooij>LCp~mIyi*lu2l(`4A@sy&W*TJ&v?K8Yq&v4!WX}XMHF<&aW zm)|~`>zni(=a<^1br7xntRCa1<~B4Ga9>@;?5y^syIs$VcbyL4wTOurJZq;Hxes^V zqi0xoKx!P%UL(y+IHi^dCO6D)U%&_T{1%kjO8#?aws)mIOzwEZ@jL^Cjz=AjIUaXB z;ds*Vl;df~Gmd8++*vYKxJa04gsE1T>V&CYm>Ps>u`o3XQ@G9Xf<92_cu^mPcJS7< zFf|zig-eW4XwxwV2MQ1TK%wI!1_~V?3sZA+pwRK@-!4ND9XN4(u3jm}bZ?(Zd1HM|O=OOIGBXw#&D&Q>;XRIuOltg_BIPzWEntrNzDg{c z>!SLa3VI^@^43yDQ^qk}QXj!{rlLzH<5VX^b?MANm(EOOt3;Si$9B$emP=vIbk1@f<(%!Dp@)}`1aCywAAG>!bH2Iw^6ImrQM`#mB^>Zyqw05-L2MI=Xxnh8kJ40&f|q? z^L~o*WG9bgcz*1ZiWH_TQd4J0O2i8^teFkLT9Hwe>>ZO*HrLcFfi zyUrVEA#ajGyvYzE+g1!0raNQ{dFMeT{sT&UKq~P;VY=B+;v*6YELpGw^Bd`Va0ixDN>j;Q`_2{)V1kky;cow^d=jwtc24o)&o z`Ox{bRN_a@kDdQ=e&YPp`I+-`=NHZ|onHylJ;KDL{yt&4Uzi>cCW`%#F!3nu5n+0? z&G}7Ki9bY}#9yQmA2XE5wApBr_{>2e9(WB&|XE!$K3CqtLt6+}_4fV@gS9l1((kymNj#C8p0R8g+(u3ixlx_U-L z_^fOWyT~^5jK4i)fQwg4+gwSmWLJtS)iuzS=1O;ExH4T?!t}f_y&z1i?yy~$b_mmp z!t|0by(~58n1Y5Jg}6pVA4U4lhRTuWR_UCUg{ zT}Qi)ajkHzbggo&c5x5G!*1^4{v}MG2-By+^qDYyE=*qt)0e_T^ZE5vu4AL}T<2Qv zI^M-zVy=^!|J+0HmpDIqhYnjcj`W}i>_uP+uL1ChuQ49!*!?YE@Apj zn5b%hY?hM?werYxLN=z8H^_m=#Pg`{!^xAXdHlyKZ54(EkGh`FoB79OGjEQenRneFoB5yHRY&8L=UlJJX8w8C3$AUh?XDfJ z7hNy8UUt3WVv<8AVOE9NB+O=E)`Zz2%!debXJI~6m=9}ny&kPcZ@YH7-k}z~M=dfR z9<4=Yn=reD*(0lv_y1lMYCpp8-#sqi`dZeDZ-hC{s2AVMdhvs@RU*t*dcE=o^)%~}%6jpKFxy+*iZDC&uU@!Sw-#yU-DcU$o1MtYeF(BLyV}Xh9{jcY$mD1%e`hpf zx6SR0=+f81dLOBZniINbNk%^cY-_UPIMpP?&9w1?&j_;%zj};-3h`R6y`)> zK0=tg2y<6q?k3FL+uS{MUAp_a`?=ZD!JQ;^*~8FfFJbO4%mbt@lMd?gz;{2~L(rvr zs4(}8>e4-;qfW59$StS-x7K1?@~DU=lRHSjIAy-OR%)``UEvP7E8SJ@1@3D1LiZwfjWDMQ^FU!v z6XtYb&JgBIVa^ifY+=q3=0R=lx~L`_JI!T(qW!XO|rL0Jo^#dA#fqKjl6V*aqo0VICU!IgG}#hb_$r_ZjZ9q%_YI<`J##vxRx&eoAwL z`$E0BydctC=1OHhWs#HSTNO*SW8E z-{8K{eUtlU_btL)B+S&Q(ZWof8Y9eOg_-NYcwwF(%oE$(w?*}Mmo~tC4|=>$>T!~x z#}W~XcxOmK&O9i{e?XAWNI^a;%##g4zJMUz+nhH@gn0_Xh5AnfX)J!}e%1ZDl;dl{ zJhj#RhA>atPdV;%zlX5g@6f9?PnW$~_xn6;GBc~T{nIA<{4CotLtdY{zt9!=c|?)3 zxHogZFYoTmN468Pan5%hg?lsi_wFCuKe~T%|Lp$7{j2*o_wVjM+*&^?&Bp(G z+Wdd&*39EW#vVFj3!*ai1UtIadwO^nglhHl6y}Akp5DT|X#WK4>F-I7w5Oh=NPAjC z%jij!?P+a08QQxHiYn2Q=^4b`m?z7V?co|+FU$?Xym+%#&fQo@-iS?;w`AOn?c;{( z-`<3EbO&eTpXVuz)E-Ykr1pe6u-Z6ftYZZYb?;tuPOhZi2y;eqc~cy5+DyhWJL zHgtG9I*i@mxl_X1yykQC9}{f}MyT)iJSesJfH0re>Ul_*H|(btAM-q^Yw?MQ7SETe zdRl7ng7#XBIo`y5|kgo1V8kZ+mun-toNadC&8{ zFkd3f8-@8&VQv-XO~Slcn70V?Wx~wx$K`FF52ITAM1L0M`9f;(3PX!+#sm0%g`O2sky-G)IqF3`Cf)2e5F<#Z`Wr*?W{nMd0&TB_eUaRcfvP-9Dlh+Y* ztuSA^k0D#zMNv(88+$c^OQ)QJ8NM=9`6?s&}g}-zLnr3o{+~JB9hKHgA$HL+?P>PIm9<@6D7lyxWlB zy$qAGn-3TGhYrf{z{}8^j|{y9!hDY*!%-c|aDtanrB?4mVZN``J6V|T-%lA%^Ujbm zoGxYfKtzT!r3@e3hYaneL_<`i-ub!?%OW~_Sn6=5)Zv4FtHTA}u+(9-ccFKYx5iuR zt@GA<8@!9Xjl%q>Fh3^Dj|=k?!u+H#KPAjh3-dF={H!oP*XC`C>TsFf9C}ws9X@a9 zaNDlt@a2O#{0DS+qSPV1rWXtyp4y=f&++m)d8_waVcy>A-5|_6_EU!!c{fT$t@U0K zxh%gZ71b&g^-?=U*$?^1(BW3^mAVeEi0JT@4$d-8xz2m1)Zz8s8@xAqZ}Q&ky~TU0 z_crhCUfR9ag!y%0W`yERVSY=P-xlVb!u*afzbnk|wR!J~>hM0-Fz*AjhYv{|8mqpT zKa{fr%%92z@!+yA#`IYp0UoI7q+UjvTD{wZ`2$0UFLo%zH@t62AreVWBa$EQrx4%s zekdEn_hp0luSkRVk!%n@*;j)Yd%dl*p{p;vU+Yr*Dk4R>?2Gp!Dd11q3D`L0$M{$& z#h<)Cdw=o%>iy08yY~<8pYck3j4*#G%wGxf*TVdbFn=q|-wE^g!u*3U|0v8qwZ(VR zr5LZdhQ%ME^p8JOO7Ul-N#p_UyF!aWidyW!Hu1o>iScsyDBds3zeJ@NFNcrf6FqlI zg!xzQSM;BZg4RW&9p5v)H-e1kG2ZX3@qL8(kNp#5{DAlrgcYA81^K5GWPB=u)RcV* z(mvhR)yOY9esDyP@q?rwwN3~!UJgES=HJX{jvpC67D2}6#^=T7#}~vG#uvqpiXR;^a2NXc+IZ$KwZ_*8&Cwd)AT;NG%CRYasgz?ga@1T>j_P5^ zF=p64d{FzZDp6l)xzk#Ol0;$Aqh7x(j1rvmcUg>upH!k@&}TDLxjFV*d`#GfsIn{#7Z(=i;A_e<6Nb{Py@A@h`@| z6#sHO3#B9p4RxgmEmdd(g_b6?bfIMkEmLS&ZSk)~rTCUUrWpUOlw!6aMHZ9M$F{ZM z2bK5_DDf+)#IJ>xVc^*-(fy$M2Eh(hz>_|aF%h3+t&ph`aC|bFW%?#`F#Ojf-mSx^wIR? z3N24)`9doYTA|R2gf>cOqlH#1v@vbIuDT9=J@p%CUtg)iv4#%WjY*$duT43q!vn8F zUp6}Qbi+$tJ zly8i@GEb6MX5VRlfV8)#4%hV&5Zj0*UW& zSuK_s)q+?}_dEPfp{*0zdZ8UJ zv=fAOqR>tf8ja8?LctQck&)VPF1qsP%i3^W``U29h22N?(q~TF)zgif$N0zV%H+jbMh`CRAO+); z68~JO%&Goq{^|ZB{WJVC{j>Z>`Dgp-&0H+BON7P+>QbS#3T>0nHVbWw&@L0&);51> zRGH=a?VrC&D)VwfnY`T-z5ToPpfC@77suZ$g~_G$3PYI7J8Gf*Eq`^` zr)1-l3;dT!9bV|a$bYf_68}d3rI@?PzuAx8ZV=jyLc2+5jHBElv|ELCo6v3-+8si> zv&~OmLjLo&MRj25l>hK@X;oVY)bO7%*ba;PhSBR4!@T=e9q7zuVqJd_|icg9(WxF*d(JhpbG8zs15@fI*cvue42z2h)(_VAI305 zATD4-i2i?F&L}jZ)XdlR4BR}Xhb{b#=dwPJGO05A#mN=J@rTu)MAD9!Ehp+;3A!urA7~7$l-djjngY#% zC4r@ZWr5{^qXWkTRtW7Yp)oN1jnKXo+IK?xUTEB>{V24bg!Xe=U{zF`$EueF)}YOG zQk%aR+WcL_Gz&{C+O%{!sLg*sn`cXHo+Gqh4Q+0a+C1O;K;V3KN6~&`l8^iua~$fl z7%yc8E)8sw>f|oqkJbQp0e|jiYk7H~O>Zr)l&z&j;R+nMn(MYDrkyw)O3b^H?T6$U zs=P74vokK5NKg|@hjn&z zk~?FttA@odED4d_HpXvFI3%HS!l4O=B^;iB1QUg2ps=I~OP;Xg3(M5Kwx>vNMixl5 z1pc!n(AnHFy0`E$xzZu)KQBy?Kjaek4fB`DU-wu6I)PaYEe{Jzu+(;ru`275vc{B3 z7D$x)ch;7sELgBOT+xs{D6?T%MO9O{vL>8XTbfZ?o67&H>Qbhr6b;PHD=0|MNy;tA zO-stiEX+^JD=NxO%F4+sEXvHx%}LKrP1(olxBFO9dLK*V>g&2D1QL2t=@SwXf(eNU zMp4*Z2EVHlM@VYsmLi&pxCTq=D+p0ZUUEdA*u$se+l zl-Pab*p^7Q#oo!7aF#GOVM3&0CXA0%%oHkS!X$ZVNo{v&v0vme>gKcrUgg_kBm0Dz z2^CU4vl5OiFk+Q(g%rz#U1H&xuw}ArYYt9Q_y;-| z3AakM+$Jm&4Yk}U+nT!)wn~I$63*9uGNZM?Hp7VjLkW-Ss(B=$8aaEw6+$)pSVhe^ z<>`c%r9z%bcsAj=gy$1pNZ6LJJz+<}iwQ3Y3*ntEEJq5<3}KlmEVG2=C}Ei`EOUfq zZd<}DhC-sv$xf+|=(K^Bp1XRWWe1y+f1o+}LJEX^!HgLL3Eybm`KRXxL)l%rrG(PPs{`U=r%80;48+3uX)@|;D+ zIsMw5lN=n_?woXaPOWiHR=aZs2ZyrbUyu$#eQR)-uq@s?f_ZubSwOwP*c7^GOW~!n^Mky%(A)FKGJ5sR z;k`c0XJ1E_&KuCd@lzuk$?Iu!aCk{{SIPooOV0Z8$Szi--g_UZm+GIDR9Drp*t?!O zdt2^xWN}?(z4486AIIy`3n7VMrLe4MnYbfZ9Xm62hGGpa3@);q60DuMYkhrTStTqh zMeGT}a%}h9hn{)nS?9cS3=cO1d3A78aB;9vSXK*5%cfw{p)O$&qEmiL(sbQ~>AD|E zZTq%FD8~km39euV%e{*5S8r?%t_-eH*8aQ0$faQV)W4o=nA;L$mCrpoMZq<}la)(XpdVWGhMeu}W1CM;)M9y}#@YVfq+>A^FCX9mv_7XE*Z zu$(I_7YhqLsLjH%WiK%XH|X_eU8yb2s6RFJRn(j8jGWxmf$8ZMMZ^~8GANI7wZWf-!7p+gYpOE=I7@oWv6FRm9ldNQk8O3lM1sk@-m9@ z3$t>H2JV^ACOx4O+a*+#T2xe!Kd>+}raI<;Lwh531f zxv3dBNrgoP*-06N8JS6g((*Hs24>}_=NG2sre2a8O}kenDoMu}n`p>pn}f|%lR!6UsSBIGlMV0&IoP`ZdYE5u?IH=UuL&j zeRtQXjb(MLG+EuyG_#t$UYAWOYvPiAQH#QW2nYJ8Ju7M9EQUl56hCB`vQn8-ly<*kWUVY#BE*BqQV zp{$nvOJiiG58Ge&Ba7OS=t?|7@wX+q6FrIE#P~#CqCYW^n2;DuOca(jVYy0Jt`?SS zgymXcxlUNF7nU1@7Up&v1ekh#NLU0WMBSfVY!9QJ9h!M2+OU) z!u`nY!g2>6^_tlfxy+Rmj4idf^xxSCuDU!lsiv%{vc9o)R&}_rrn*Y*qe8UzJfb*! zWOXA~KY1aw?Mh~PSz~os9UGNN9Hz`FQ{(fBHi3by3r5yoQuk8t812* z+T43)7TKFJpAKg`BiK@{yfM@in$0ej^>v~8@W9OEv>C=9rM5v8OPVSoMM}~?9Gn`; znxCGTo{^rGl~$Hbhq5d^Cq11OI6FO~tdgO@vhw-m>1Fe$l{MC8WlXJ}R911M{E<0e zpb?;G^#%cf6#0I%VCLT|1cUFFVZ9`2+eqGXB zTg$r5y39&KRdTEF@U*<<>Y9q_1Jm;drl#6Hi8M2b6P4|o6DK83PMjhv4++cT!tzwh z6r+&S5@&MbkT^Z@$VBcN8IgTNSRUQn>D|Pm67%GXhZdT&`()92wXA*Edq? zQd|Fy56mkoUsMumC~GXE7hY=X+wswQ9@ER%HFa_q!{+kDs(sk3l_ypwE@X`_VW9zj zvL&fp>C!V+=@M!866;L$4E61p-yk>sPEFkr6Wd8OnYGR{dT?hT12MBlnUpJkP3_TC z-!P*`{e0QK4D;Y<-KCK>b!=$4+#p;(=mpCmQybaGwI${{oA1!WoUVjm?>+;vvU9o( z8dg{|YIO0$lBqL}n%1L^j`jA#lBBrggr56|MiQG;6JThvy6i>bvqeL_i5eO=RwiAQwl z8rQ9RkDk5wq@?=j5II#A)s$7qEDA#Um7~6qFJ;5DdureDwid0$+`?w@o@6#Qs|l4X z53}$3v|^cR9wYJF;`;XM&lW;@KD$%e!)#BBMVgv4Ft9l}CAH;{md-7QZcaU{+glx8j3ixn#x^YN4?uLZUSDO7|{r4Oqx7*Ldp2%rZSq)+{VVT<(nr> znLzL&zoQ<#tkS2EqHxAEHovs})v=q7WP{XppK|ofSY-%TanLeU&sNTPaq?DU+2FrCw=PRw!$gla=$83zdtNjmnkE^~&waL&_t{ zW6BfCQ_3^S4&`m-L*+~5x0p^bhs9W9>@m(5cT93jdd#GlDKS%Hj*2ObDT^tO3B^>$ zEQ+a(sgGG4vp%LR=8>2uW1fzAHs<-5mt$Uwc_Zenn0I2{i}@htqgYey5wTrkyT|s4 zO^+QKTO2zsc3SML*y`BY*yh;vu_woFjNKG_OYEJo55ztk`$X(pvG3?J3SwjQ|0<=? z|3?24`vaXBqh(l}xQu6Gv}WPNro7c^KTEL*Tq4-J5EU+RMNCuULO9e}W^s zkF@B;-j=vdu_mrhJYF^sO?)ly`<}0QXyY5gvMtiJOFS|0Bs3#4*_3#q?8e!q)>o7* z?^4#(C4KO~>@JhW>z4 ziPs&v!*Tdwor7aK{}LRMcx!Aw(TR@h>+->-sZ2iAw1h>c(Ts!$%bP6^VPtF#edb!_ zwb=T^yY*XwH~!Z?Ox(lP2XtHC`hR8E4ZTUt`JfvNfPpX=M!;m44zppdqByz$Q^y_Y zFa(NVJaCL-2FwDEb;x6@pc-nR9vYzuE`$f+Ukb{D!yy3@f%MsmP;s&cos)c=Eb#4Q z&XIEvke_oHV3#uw3V{5bqhSopgbUyy_(D-!HlRGNQGhKj@^-C<6W}B`1x|xA;4C-? z&V%#eYPc4zha2H$xD{@PJK=7)7w(7c@FD!7C~nH)?g}iH@5Vm&kr0AP2*WC9fn#9} ztb^l${N3d5CVw~iv(~iYz8E$FzH-w_y1!Qxmd{l@y&(heg$G}Fav>iIVFFBoDKHg? zi-)*)@W1CcxCm~8hv5-;6ds2c;0^cyzJVVV#Y=2hQcdv^18;vwf>cNY^7l>z()KpP zQdq7iN1&G@(7+Mob;OBqlcIEq2Yk{c8-~MJ;Jhvz*JU=$g?TU^Dqu0-t1hJ5g><`+ zZkJQ2nMlXiFf(;feG$3NZiPj~F=z68jlJ9%^`kM769Rd5a5 z3NONI@Ux=yAdep8(StmCkVg+UP@Wz=pcfF+9{ped41ytmo_e6C9+iMzdf@vW@ zoC=NL?1ozO;7CZSqAv0X9%jG4)9aYMrZ=c((@8{2tHDj zUf9{IFJu96=|x<65tm-m;7FJWN5LE@1=8q|xHjUByvLN3e${LuS2;P~EG1NQcQ8lHjY;1zfkUWfMq z-}J^ez5i5{KCz&J28Y0*kODb?&->u>J_SHo`w;g&(}8mKp`3jvXP;w$a`ZU`PJ=T5 z+xuWkA8hY)5!?(f!F%uv{04t0bOeF?`;vcOw9uD0^`&fm4+Hep*9N_T1N-&|V%Hbj z`VNG2$O3HaI~34F-#oz9zQnfgdN?1pz)kQJe61+`Owb3$0`cyL{r%Pe@#sf6`Vo(Q z#G~Iia2}9GzYF1F*a%m^{XlyCh)2J7;Zyh=z66=aw?G;DQO5q1u|H+(PZ|4D#{NBk zxb?4ql|a7zv9)WQHPT7XVO)0FFX(ApG2NXfiBPuD0^xzSOerk7hFjt-Bf&;`WR6D zRLY-9dIJ-oH>5)j6aeKJNErr(pbDyi*bQs~$}w;?VE4dB;2DtVd=A7U?GT6q8~6a5 z(t1J>jD|5V4ko}Pm;zH_I-u3G#Sn&OSPIMG7@#a^_$`g{q@4z50RBt66!2f#7QlaL zH^5DBKRgHz!=tbrUIet9_9|d++An}s)6h-20>m2Fdtf=4e(w1+wcw$gLGn$ zP7KnCLHegadg)&(N`?i9N5)}*A2RSmh67v>gdRX_GWtM27yyG{2n>S}a1_jeg@AT4 z>YxEu0=~}>a2%WmlskiRXAs{E?93$pOgDG||7QlEFN^{Fo{8Tx@p~qI&&2PU_&sw5 z%z`lB_spe$-!t)hCV6I(XXf#67Mug*n|VH52p7XfxEij7>)}Rt23`Z|Rpwi;6W)if z;am6~epHk!70iI$S)Bp9v#>i0yR(8Y5Qf7@$b$m73T}rx;cg%{S;QinG_pw}`!KMA z9h`tavg5%I>5v6zJ$o<=1=7zZ{p@1EFWLAd8^2`Zm+V=9CbFx6I*?rp^>8el24?_% z$;L0)_#&GaWaEo$e36YWvhRWWfI6K05WEcdAzRvucCyh<&S;nhN5V`XzZ~+*Sp~#8 zXAP`}6X6s%9mq51Tp$iP7r_m1Gu#UJCI{c-kay1gK)yND)ttxSNq8E_dl3E_Gyu@V zphnmLcf;%O3%6**VsIDe4rq38A0Qrs@!Q~GfX@c!LlIDh!DC@O;IqMVU>=l1B`koo za3-7w7r@1^2`+=n;Yz^v!4Jb@@H}jXoj`pX{4wCK!C%2Q@ICwpzbncRVm>4ZQXvg8 zAqTK^$WRyoxqxj$ux$vo4WWJysQ~O7f_+04!wNv}Lx}GX>>YAEoCNrN2sRJF<{{{P zNGn_i_-hFI8*)E92+zR_fZao0gm-~>5BU(Ve+V`Y`3Zi3-xOu24T8`GxF`EqhGlRJpxfb;VfeAI z1}MXD$}pU`566eYF9v)#oN^3*0iuMDs;Z!v@cP33(A-@y-ncJs(1AAjZtp$l{e(#!7) z10V&`AQN(62uy+!mKxUl*XGf};Wd z6x<5;!GnMX3Lb;!;Z=A8@KFIiD!@kt_^5z#6i|+WAK@3kPlQ`3j0JpCi0y^wp)do; ztB{x$j(}Xqhbe&lg>zvZ)IuZRqeALkA+ao64adS7AeMy>!PD>@Y=a%}Cg8_H{8;#h zq7;#LQCGl^MLnT6;LD=^kOcU%2tO9#!y@u8BHtqNDcS%R!X-dmDcS^EU@K5hitdF6 z;9R-;zHDmVkMbyO>ChRfg%z=lyjE6QlJI=UNV!f2QSi=hdYz%n=n z@bhTOKN^jU#^%xADoXL;fX&6&R*Y@M*j79hu&a0$kXCUigaLbs1+0PfZ~~kQ7sE!t zzGCbvZi8z8Ul!j8Hv>K`#+SuA;B|Nt-iCJo9~OTKpTk%1jiQWE0o%qD9 znJ^!yYh$o!4CNVfGMoaZ!s&26V9R75Bmml&oDPE_7bXDZnv51Fmjk|^O#PW$1NG1d z0x0KX$~l>GP9~4Zrvb5;d={JoTL2AAiGx9K6cD>9XTpteA8Z5kGUXMZ+*95H$~@(L z_y~x@6v|yfeJY6sbX1~2XQ2EgHgJL)&{PSUDoKKoK%7ddfY_E0(-JgNas!ZW$3eMhvE{0b)6=4aj5K zbqufLhuM^Sc5mnhlz%qq%_gncS%B|n7XjLzJr>5pM3@2;Y&N=?y#&z4Y|@?m2<(6_ z;WtH@gPn6a1NqFs-*fQy91nDb9?%Q=0PV`0WFYT36~BT4;}}^ zfC^?nhjS_WTuxs-b@+M7$An!5@F90zNGSk65Oh~wPH;RV3nxx{lWzMV@v z=e`Y}0cDu`HGHcmr2)XsQhZc80I;=m2n+}GQkn<&r4&0#@k=RwDP0Nc;4Hv5rOyC) zl)eM+!$jWmS0P!kIge({X6|fpEfLnod%do%f zCqFMa`G%E&vNoCKMLjonkc6n8l@iV{+Qwjrc~9h~3+9|Rx~x&U=Olmb~W2!;ZF4i!N$U_)p;Q2r3*3@ru9 z6*?0xhD%`+Tn5+}x(cp=XW<3d4%i#Q-q7oSy&-fOdLPh9C3aSJ0?J*fL1#D&hQlbp z=au-p5}#M%^UAq^&nwG;x?CBCX27mW{8Wium1o1bumP~E@^T>lmDpB!JKP2Lz4vkPn408pc2=tO9IVNd61A0@_)K4GZrCVzZF^7d`@y z!ISVbysjvV4h8aDG!Q8FBJx?314CdKkl!NmTT}$(vuHkqpbDyiI4-IK^s?w!SPRF) zNpLEh0r+dtrGS4HVc#O+y9nDB5yM3f1HNDMIJ^ii!>b@|`xuDhqR#=JEy7QW@KX(b zs_6v8v8D&~27Fc1AJzkUtsy=&8{k5?4xWeYKpr*ZQS%zS0dK)OfL3dMSCm=>NW0bq z8gz!kzztoXJM;qbs~rF-fbVLDLoVb)AWEJrdDM|d-6$abb&G)X>lz>oOJEt0Umd!rBd@v( z;9?*Sb>ve=J*y+1I`XMQuXXnU@u+(Qh(+B~@GQtY@mt+acn>~+j})ce3{LPsJouqE z^abKjp9F(pDBzp=kuV-6!4#MZRnP=zr+ztLZ~bY2j_Wr-47AC-CAiahoVHV7Rc~B0-prIP@Lj!(jI1bjrdN>hIfz#nkAO;QR!TE42ya+!l z%HjZwfDoJjSHNR{W)^=AU%|KVJ^Z04jT)evMs(9?1v}uY#xBquC_^Jaaw_$a6V;uc;A=sHZ?!Ycs#!Yx4E z3u9Bb4X%Of0K1xE0bevZzzt}o3BNW40b82-12!}bgmf4Qqo5eDr)fM8<0fLtlG}LqqtOV*-6LD@j9`IMwDS*$Kh;P${K)JDht2q~IRnsWa}H1sn(<$AGi(6-(R?pF0OZ^J z7?5xCQ}8x?24BKA@ICwlzbML*IPgLO909~~3HdI;XG_Ru3HdA;3d5lg@ZS>rw`3d; z&n5V7Nd+u|T0mDz7Q-?)8i?Z({I>-EEjba;*$Ql0@hsqn6`ug*UxBVxd<#DS^<%|v z@Ta1z#J-hwaDfMWfUPU>(aJ7>y(_VGWg`%amH2z*$BME_1t2AFb}8)t16)y zY5;pzaqcSoxC)zB5#LqBcNOtnbtaqx=fMSVF>HiQumx^|C*dvlT2WRL!_^L;4y+ym z_-XZYC5Ar0~`aZ0N<=$1MA^LI2o=3e6$*Uto}|>S}1=@SLg>xfF@ed zbPIZD83B1fd|F1sSQroF*+Q9G&VZ`{O|MqO3a<@W(nY_yIkvOM#()57rd{eppAE z>xl6>(pg73>z2a`I1bjq34pKHoeHGA?sfQ6QPv*;!vR08$A{~yU?C8<^~7yG>8&Td z^`y6+^!~q=?lZjVx=R=Ef75#pfzTlYg9H!=p#`Lb&|3gYuq%qazE%_)Lg?KPTIkYL z1QZAzDM3Z)y(vg10-;Gcx96Oh>wf2hVgH`>thF;AW-k2d6F%ch29b^qzM9Qk=Ar+u z7V#a6S%Npe`iYgS;t$SX7lX_;s2+M6jy+(Eh?G@rF>XCM2Kd(dTMADn~Sz` z3-bU?Xi7XC@VSG#kwh;Z!gpY>IR<}43d0!9SjO`;@(zJc5DY1Y&l=*- z4e80dxXU4SFvM<$3}O_r51BwJ_A%rKmhvOZ(fyEBtl<}a;}3SR2mKDw?-1_}Im;z< zJ>)6O9ZUn(F8HN?2C?yD^47wUtfttin2i*;8K_|K(Wu;<}A8E*FB-WYE7;XZ%( z3%tauyusUeYxoC@U^I3(d_1}su8ZN`9iEQw*l;@?K9_lH=2Q@jC_pXDG~$0uWI6lD z=57#-)YZsb@UvX2TieX2i8sP0w-X7)cQFb<}72Y1zj;DB* zzUXq)i@c0Xqu%3729bi@jq>|t)HQB!3vZ3CN*%m4+FPT&HQGC)ThfNMm~-^&xPj3h z@i7B%2cws%8Q+RXq`5+jRn|%1)Fs3j?DM2YJ5QXp0m|Dm)rXDhlkz*Ytt0njy3bx zR=kO>#xCSrzQ^y4vF0566DzT+vFkAN*uxy-1b^{2W*&Q)o80DJ5RA(~E{aou`KS z8q*A)IsRdic^scT{%L&nc%MDqp2xq-2lPj$<3D2rqZ!M17PE%+Y-AHV*~30`GyWp~ zayJMj1n6Lb_a?l;YrMhRe2UMUkcyj{FqP@p--Nl$XAyQWVF_FLh2Qv{9qh)t6Aof0 z6OM5LJNY_9W!lge--oZiV;5I~AhiT_(0!`zQ=9W3?dd@;be5Wo&Qi^g`ZUjChEy}8 z>MT`fsX9yj1aqW*gWRcdr^=nWoD5d8mhH%%Ds$>-E|A54nQm~4JKPI`iA9icVm%sQ zrxWdTqP!F1k$0lsOB4I>1oBOkZ=!i8_QUVliE>VqZQ^Hq$smR>oRLgs8q=A{3f$L3 zeNWtm@6N;n9O4Maka?oa6EAZ$2-0+&mWw>N$F%Z9<0jK;Qx|#DTF{aCVUpaFI!GlRUnRJ4` z_&W$D=b#!<+{gX+%*j4;vRzJ&r4ilf$wNFsGLQ2l{m{i^T};-+)<#{=w}{&JKbpI+>!ADP<`~1>R>MgYX@iGK`6Q z%VL(|y(ueM%{n&X?J1dfcZzPNoJ2QM&TtNIPx1DYtJuwyoBYe2Aeb6KV;`YX8m z^f!?;y+3+RAHr}(A!E87r>8QTZPa2kY$D}Gt4_<1G3E6fthERdB#3YV&)lUo^g&F zn0bboXWR>dnI))%nP-}Lro1zokcgRQnt5gy%scZ}wxidX-k5nDJtlHG29T+&5DpCb|n;S)aIo~?Z`V{-uZ51z8jf;lE3*k2o^-5y9LqQPi^WFk8BHMThIZ$ zF3{@&{V$Mnft(AT;#vCg20C0Yo~cY{7ITqp!4j4s75{07Lbz&Do~kf=xLdrmes;L%j#kG%XGG^DQ<7s^LTgJZ@7;i{rr#p zNatt}{8X0KbR!8}{`3fac$}Be)laYSCTF-71k3YNh@zCh{+63}c{%KHc@=yomdDYA zX4vEMR@mY4c66jO-d^5=FIm7IE(gJisyxb2GRQ(7EADbH2v&wDg8Nxn8ndkQ_DXNB z^!7^qtklKIPW0kol6j0*>CXT@XCQ-vz%xOH*)q(O;rpCXlNcJ(7;|JaNA?VvGkk7_ z&&}|;8TOp<950}^483K%!T<11#($sxHM-B3$8uKlD`w8f#%!x95Q{ff`RrBpu}TlC z`p^&eyUORU^7*Si;6py*V}{_KSGng^<4I!*-dr_<13|F5I2AG9YV)l&-|D*5$9${p zX|+AAwx`whw7LWOS^YCtf?$m<*0`B9{@EHC*K{F?-pIN}7i;8LW4<-(+0G6Qa*A_Y z3xc&dvA?zQtSv=25tx7NecVrN9-skkX>DV?w^k2p?QQKaCSta=v-yVkEa691kilBE z@(c2;{R4fk)%Q9%*5x5T1t~*iqVfJZ@2~UzI&-gUiF;aS&UKIT6n=NF>&MIZo~(O= zj~UERMlhOj*#A0N*U7r>8y4^_i;;QVR{lb+^?pyTFF;|6BG>wIR7Ae@(bS?2GOq81 zOzYj?dN;WKC0^xqK4TP+Nd&uk7PE7qRd4cD4Q{GHnQv3w>=U zi7Xqc;QO}0J#BDL8{E@|Ml_{4Eonm{?U8ZA`;0-J4O5xUOcwGTKOonJ)vRM9n>dS1 z8*cC~cZ0w`3O0sO6*sfdEpM!keQlIuV{6>Z#$@{7`@iuCUgjO%<3m2?Q&JelNMzhN zp0Cl{#yQyAM*aP4KR=hEG-W8qyL`bw1~CLX{do`j@csMwa1dUjZa`d>>?zVbstGBj#YwK06a|`c@ z6J+WzQ-_&FC`xhkn5oB1-`PxEW;UTUddqB2M|@v1-@q+qy2Z?o`IOK368D#xjy#!e zFw^{*o3P_deP-@OzRW}DG*iY*88cOQZwtahttu)AhDz z=u1Cd=Pmxn`^dM=ZEs6qC?kU4H#vUu_HS2{YL@9M?F$h+%Bd>3}fx$7O?Z)>%UDhZYgo_EY+)O+ z?vizvth@f^4ClFo{qMTMHEtmP?r<9NDBj#X4R^HLjC=BP9|`n8?mcqv(fgjqc@lfv zlfno_GmeQ&Vk+s#zGo@2?$Pg_Onzkt%GKw*ke68qX)mhx0W$9t_1C?`0HIriyqe_l!<`+nK?%f3I78botHO)$fLx%bPtU%&hHyI;TipW!)P z;6>hNAcGl-&iCtl|5)_Ae+ILd%k3aIke>)DP#JR`h{D?kYEg%Jw8r}f+M~AvUFm_& z4#;yro&%5ZE}t_Vy&PDB9Ul0L%lymTAUGHzC-!#G%m?l3V0FxW(7Xp9Y(xR*mGaW99?agl$x%5`pWCkPG)=<{$M?DTLUic*3w%21AqRKfg*&41XQ z51aXLBlLbao+->nmxsSamq&cY5j#5K&mD0eNBp@XX}F^!dOxxNKYO$w-Z~nAdp>Hn zN6mV46k{02*T{V=FR~uywqK#+Qs{EaOQHf>TX#SEoAAiLS_ZO1@L_ zos#dAe1FH%iZ--G&cD6+_i|RUinT#-+IR1?u1^nS5JPY`r?YV@r*CpQ2+ll;?#}4$ z%uBq=Cfwhd-R$K+5S)#}n`gawR?f4!IXj0XEJHtMy??GaW<6J*hBQV;=UO25xdi7}-Ja`CU%Y?L`{!Q4?$5o+JDB6#`+S63IOi75O(p|-J)eUpbawuAMxg)m+tAy2 z`OnLL{tzd*i2FHzmFwK%b`V_1Pa%p@f-u5qfZbj&_XS;F@XiI9FZARg9^nPvK;{c? z^C<%v%uq%#mIJ^BS^WlKoPDWWOZ)r6CMwB%>L} zbY@|OOY_n7CAWUb9GCQbN$yK>Uy}RMSuSvie}W)O{w%+jvSiLGLOCkqJCPN|{lrk0 zdgwi?3vy=lr62NU$(to_);pLl>qFc|mfo|*qvNbJ+)0-2WR}cXGH1EhtZ!I=+*xvG z$(?mR2>vOCH~;C)M@(Z4NBB1gF6;bqUJ4-p90@N<$hU|CNXM9}~&oSP)#zgBh>3=LNoGIHMTL zcyxZ%eOz@PR~Mq^tBWzi)pcxSGiJD||Et?E$JLw2oh^5^+}ZglND=HOTmI}S$eS%| zwyfEWX^x(=^_;Ee?4CS@?Ah;QpV@lO{tS7u2QdV>v*pf~J6qS;y3SsNyxH<*FXbmz zVE*hi$e+CdU1Z-2f@^kv&70TyF@hi1!9PK8UGD4QL{I_wuj~A}uCL2~J(f7kaJ?z* z=tvj3V~*>+d5ZzaeqHwKvR@y`7~ISC3C!jPp!yvU0>hNDcr|(J>Sst z4L#p*A2-~`jl$^pMoCIjmfFaBqdxN9koSh$xZ$>M==?@2%zq;hH*upca^BGAjcvHi zn_-yo=EJ;;zHj<&-kin^W})|+KcefKt5}QtH|4*n&zrm1$3c#8j5|SaOYU1mDS>xx z>H1a$D&y8~$$qN=@wA{5y1k{_TMyBPCwQ7?d5Zx|U?P*5hMc!_e9K(7+{vwPSkQ|(5Cs3q{%$Y6C|9eZO+vmAR7WabSP7VrEhDzx2 zPId014)th29Cmw0mv?;M?#Oay7`nSNmFd{;9U1QE?T!q0zGp4Ja)OhbMlW|{xbqKJ zxy~)_1i{?^`@JjAT|2&8o{Cf<5?$TZ<=tA;rY?HD`!agDyBK@9dpij3Ri*`x^C4gG z6)6m598=KYJ$t`r@Au|nhI?kXXGixkSi^eU=)KM8@}BJXu5pvwLFoVfcTWGAhkS$+ zK{cvVk2snTPb=DxNP8aUIX<921NfYQ3}z@J7|l4oW+C6Pm?bP@IT@^B9UIxi7ET7C zP%iGH1FtfcpV-T_Ae5sd<*7tfB8j0PjgUV_Gn(@to#{pry?KOW-s4MB7{*BC&M|?B zOkzHZ_z}5t$eCjszwrlq*vCN*bDo<)C}$ChQ;KjRs6b`(oimDPYS9us=WI(m%$-x_ zoHFO^K~Ek+?woSxlsl)4IalJ%TsE7l1|4}3yT~=0Z_#_MrO2OaEnE48?d)JTd)bc} za-HTJ7x{;)=sdU1bIYFFo#eKg-1k$Ldc+ck{JGnsH%4mM#5dQ|D zy!Me-=DZKm8rk!O5uWs|c%Lnvl0H5QA@=izJd6)1bD{$X=*Yh)* zkv*@T^XfUTta&ex#T9PwU#`1B$gkT_zM_<;J`HJ1Gg{z#nJ)o(^Vxa6F36qFo#fMT zKJ(^#oi}+Kne)kD_w52`fDBOjY&|_iQ3(HAKszaoFJ^FgS%j*Hj9o5kND z4Ko%$!kr*gB7$l}q5l&1(|~y7FQMxax-Mac5{dNWAs*#1%u(WLK4B=bmyo@L>?I~K zm2~W=#A22pa|wA%Y~>gJU?+Rfb&0>Z8iY#fxnv>qT(SgVltIrWD^i6>YT!0X%3D(2 zlJb_6w`4my(iy#%bQ2}zFWH;77>)gx^k&K1L8w$!d?!jh#}~+5Y90&m{VXMaDR)vz z-=*X)rSDRin4#2f97M0Bj`J7hD0Lhlo)V;nMFS~(X&~;f|mzBTlK@M}2^IYOG+1%h(5Q+#V5?x2sq7HIL z$Q{v`rgWe)W{Bv+Q#^~T5ij#9dX9JtziT2!Fq1jhX@s65^c?X6z6%k{$zToZkvGC^ zMCd!hZA2VH=Mg%OFn`23E|P`(<%*)?ay@vPuhB!f6G5nah|2igQob$i=|mSELf7SW zUA`~+-UfKgI>*EU)MCdMeQ^?kklbj50(JhuoEPT}juKyi=(s z5Ag`eyvV!ASxL@H?xfOJ=(y5QhBF!WQc3Pg?xK>8E9tn>He{{z2fNsd%#~!Wq~}U{ zu5_K7{L9@SRM{O=)^+7P6Q;)ooPuyRWLAtM=gup5{5+OjUWS4nW^kzrbBr)p=E&SJipdk&Hq9suNhk zPV`yLo7LiZ2D_>@8#}3Xf^%HNtyGi0+U+0|nH%{d^&P42NHavbmq@)vR-!7^F^7K- zKqxX1cM>Ukr0kKhN9sJXFFKEWi4QPCWD52bsq08tBPTM6sigBA`i|6d?G<% z-oo$csQ390y+;j0{wVpQ#-i(}RCF5k4GZ{|#n?fVTaS`G%J(0B=%XOFFLOAGOzI_@9-Wn*Z3Gc*Z3M;*U)v1 zDVV#)Oy)2TxogN><9mMKcP<5?`((N=7Q4MqU-!*mJ$B*W6%dMcC((M3b|cY6kw3Z$ zk<>u$=osptcmF!Eonx7*_O*v`~WdwF# zQ>Qg`R`Xlrsj0J?OZkbFtY$5`s_DLJZbr76r-IP^xrwGDui>-q_p|;z0ijws@%^eL zTP^+6@-wx%AY&~%sP#0@(w7%_5xcLYJO3_#P%Yin`iw96ikZk)%m2QvwVVv}RcizK zsvX3l5Ag`Ptn(7D@;Yzv4rcIo`iJU#MG9u9Gmwe1T*m>PS3_<3)BN)wC#^Xl)`vF3A_4j}`A83XS9vH|h%=5r;&Z4^q zvbc<%>*YfJdiGzh0A{FHgmP4*3XzzjUNmh3}+Ow z)=MRgDNMud)XPA>^>(qB103cUe{za5oaa&ysxNQ-yyT}Kg(-&4>xU7JyQyCu`Rh03 zQ9j0-^>tBS5B{G2P=grkq(ML4#Emp~4>!_4?+u0`e*-ttK;I3_&_Le}W-yy?Sb#Yi ze9vzjMD_-&P4@b0e7><)jR9 zHmX1+^xY^DcipHawWz}b$ljCRg?Q^L_81D zns#)g3-UL4f|vP}FOao~tW9KXG7_^jvFj$O=)B2P^xNb|ma`Iho5A9JAnoVH_vzW^~WN)^bb^OLo_F#w2WNLPdKXE_J+)I22w;W#<9mnf9 zzADwxb-cXswQ(Eqa>vUV-w8S6^&H=WUOddB^g;LWvd2He0CXF_0dF?XkG`5G;rrHn z6pPS%^A+g4x&E5#y7?dMLjLCRH$TW>&T@e)u5gVTL8wI-vbS*8Eou@&Jz|NYG3}7I zg{&1esgN+(PCSYcXRBchW-k7Q5Mt z+$|0Tp$FsXfbJgD-GlDs!86F-(hapNLUBqFP6QRGOf}q3%V?U@lGY@Uh@G_bxh=cm zb6fVLH+ItU9met#2e=!AT1BFVR%UMHrdrKl0pH^HOe?dsGE*zFwA#uxe&cs`V769n zsnu~VVh63v(ds5XzjZ)Pa$}y>=4tKC*3~gb>-&gBAFVs%j#|5i)-tz#1UJ;$4f(t7 zL#^$m^$YZ80H5&%a{GJlL#>A}j1i2+tgXlM1G2W3t4$f2;q%(~b8Tj^5&7Gk#VxgQ zOKmRmZxBkzMIQ1|fI`?$LOJXs!9Ehqk>IL zC+12liXIZpkXR9OB)X?WxfAUou@Oya&V#hVEQw}Gw3kGCNwk;5r+9|G*h`|h62Bmo zN%*cOPDjUybD7T~%#kQh;*b2ocK$%V#NF)0eI_2lZ6%s1@lQ?$p>{c_LIQ5Kot?My zdF}kUc2|Q?`;yo}`^MOF`xdmM14;DaA+lShlp}iT}ufQJKufaU+eLvd&j(IwKh}-Otg57o)K_+JGV7?AVIlQ!VP?{Z0+gd#BdeRi}37 zzSHA8g?BsIU#A!Gb|-Il@^&Y0ck*^8Z+EiSPRD{!=b|(wiGJ8qXM5`W9(L8)4Rn^R z^Vg&?g>>d&Kbq#Mb0iSAZwR*8OUJlv&#r{ z)5ZH;yx+z9UA)`HeRTPbA6Uk6YkH4)y|(S&BSrxRW2K`$QSEk43s_4o`O^hiaQ zJ={u zQeE6sl5Uco!#yRv#H+l)+t^Q%drs<)zLGxYYur?loJrG=GfB>*xy)w~z9&gPpu;5h zm1KuW@+I90LOlx;Nn^Uu7d`YG$~er^b1#Q5PtSk&@6X){LcIcVV*kC0Qi3qb;6{6y zuUA95^D=tuC0nlr$kj`Sy;kGid+D;5E_-c7zFvnp#-E(x0$JE|uWQ^0LcObCm%Tqk zC%xTI?@^3p0uxDRCUcmFw|ncNcSaC;)XzQY=N|RXAN`&s$n@w6RJa z0sR@k=M2Owee~K#PkqeOCk?muSVLNqKq4K2|NCFLa{RylS#iVv`=9^+KSPgQ{y&S( B9WMX? diff --git a/MeshtasticClient/MeshtasticClientApp.swift b/MeshtasticClient/MeshtasticClientApp.swift index e72b1713..10879c8b 100644 --- a/MeshtasticClient/MeshtasticClientApp.swift +++ b/MeshtasticClient/MeshtasticClientApp.swift @@ -23,10 +23,21 @@ struct MeshtasticClientApp: App { let fileManager = FileManager.default let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! let destination = documentsDirectory.appendingPathComponent("offline_map.mbtiles", isDirectory: false) + + //do we need to delete an old one? + if (fileManager.fileExists(atPath: destination.path)) { + print("ℹ️ Found an old map file. Deleting it") + try? fileManager.removeItem(atPath: destination.path) + } + try? fileManager.copyItem(at: url, to: destination) if (fileManager.fileExists(atPath: destination.path)) { print("ℹ️ Saved the map file") + + //need to tell the map view that it needs to update and try loading the new overlay + UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "lastUpdatedLocalMapFile") + } else { print("💥 Didn't save the map file") } diff --git a/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift index 088f6365..ed3f4022 100644 --- a/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift +++ b/MeshtasticClient/Views/Map/LocalMBTileOverlay.swift @@ -33,6 +33,11 @@ extension MKMapRect { } } +enum MapTileError: Error { + case invalidFormat + case other +} + class LocalMBTileOverlay: MKTileOverlay { var path: String! @@ -46,7 +51,7 @@ class LocalMBTileOverlay: MKTileOverlay { } } - init(mbTilePath path: String) { + init?(mbTilePath path: String) { super.init(urlTemplate: nil) self.path = path @@ -58,6 +63,12 @@ class LocalMBTileOverlay: MKTileOverlay { let name = Expression("name") let value = Expression("value") + //make sure it's raster + let formatQuery = try mb.pluck(metadata.select(value).filter(name == "format")) + if formatQuery?[value] == nil || (formatQuery![value] != "jpg" && formatQuery![value] != "png") { + throw MapTileError.invalidFormat + } + let minZQuery = try mb.pluck(metadata.select(value).filter(name == "minzoom")) self.minimumZ = Int(minZQuery![value])! @@ -78,7 +89,8 @@ class LocalMBTileOverlay: MKTileOverlay { } catch { - //print("MAP ERROR \(error)") + print("💥 Map tile error: \(error)") + return nil } diff --git a/MeshtasticClient/Views/Map/MapViewModule.swift b/MeshtasticClient/Views/Map/MapViewModule.swift index 28fc41b4..0bebbc20 100644 --- a/MeshtasticClient/Views/Map/MapViewModule.swift +++ b/MeshtasticClient/Views/Map/MapViewModule.swift @@ -17,6 +17,10 @@ public struct MapView: UIViewRepresentable { //@Binding private var region: MKCoordinateRegion + //make this view dependent on the UserDefault that is updated when importing a new map file + @AppStorage("lastUpdatedLocalMapFile") private var lastUpdatedLocalMapFile = 0 + @State private var loadedLastUpdatedLocalMapFile = 0 + private var customMapOverlay: CustomMapOverlay? @State private var presentCustomMapOverlayHash: CustomMapOverlay? @@ -138,7 +142,7 @@ public struct MapView: UIViewRepresentable { //mapView.region = self.region //} - if self.customMapOverlay != self.presentCustomMapOverlayHash { + if self.customMapOverlay != self.presentCustomMapOverlayHash || self.loadedLastUpdatedLocalMapFile != self.lastUpdatedLocalMapFile { mapView.removeOverlays(mapView.overlays) if let customMapOverlay = self.customMapOverlay { @@ -150,17 +154,19 @@ public struct MapView: UIViewRepresentable { print("Loading local map file") - let overlay = LocalMBTileOverlay(mbTilePath: tilePath) + if let overlay = LocalMBTileOverlay(mbTilePath: tilePath) { - overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent + overlay.canReplaceMapContent = false//customMapOverlay.canReplaceMapContent - mapView.addOverlay(overlay) + mapView.addOverlay(overlay) + } } else { print("Couldn't find a local map file to load") } } DispatchQueue.main.async { self.presentCustomMapOverlayHash = self.customMapOverlay + self.loadedLastUpdatedLocalMapFile = self.lastUpdatedLocalMapFile } } From ce91174221947e568d86947903797b03381f16a5 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 28 Jan 2022 19:57:38 -0800 Subject: [PATCH 19/21] Fix account --- Meshtastic Client.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 1f46a7c2..53b40042 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -734,7 +734,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; - DEVELOPMENT_TEAM = 37C534H572; + DEVELOPMENT_TEAM = GCH7VS5Y9R; ENABLE_PREVIEWS = YES; INFOPLIST_FILE = MeshtasticClient/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; From 56f3a33257e39ad0e6a799896460042ff98b363f Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 3 Feb 2022 23:24:34 -0800 Subject: [PATCH 20/21] Update version --- Meshtastic Client.xcodeproj/project.pbxproj | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 53b40042..8f6ba088 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -731,8 +731,9 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; DEVELOPMENT_TEAM = GCH7VS5Y9R; ENABLE_PREVIEWS = YES; @@ -742,7 +743,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.43; + MARKETING_VERSION = 1.44; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -761,8 +762,9 @@ ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = MeshtasticClient/MeshtasticClient.entitlements; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 18; + CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_ASSET_PATHS = "\"MeshtasticClient/Preview Content\""; DEVELOPMENT_TEAM = GCH7VS5Y9R; ENABLE_PREVIEWS = YES; @@ -772,7 +774,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.43; + MARKETING_VERSION = 1.44; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; From 89a1405bbec631f38bf05a67278df60cc2b2dcca Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 3 Feb 2022 23:29:26 -0800 Subject: [PATCH 21/21] Order protobufs --- Meshtastic Client.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Meshtastic Client.xcodeproj/project.pbxproj b/Meshtastic Client.xcodeproj/project.pbxproj index 8f6ba088..4ae1590b 100644 --- a/Meshtastic Client.xcodeproj/project.pbxproj +++ b/Meshtastic Client.xcodeproj/project.pbxproj @@ -214,17 +214,17 @@ DDAF8C5626ED07740058C060 /* Protobufs */ = { isa = PBXGroup; children = ( + DDAF8C6126ED0A230058C060 /* admin.pb.swift */, C9A88B56278B559900BD810A /* apponly.pb.swift */, - DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */, - DDAF8C5E26ED09B50058C060 /* radioconfig.pb.swift */, DDAF8C6426ED0A490058C060 /* channel.pb.swift */, DDAF8C6826ED0D070058C060 /* deviceonly.pb.swift */, - DDAF8C5C26ED09490058C060 /* portnums.pb.swift */, - DDAF8C6626ED0C8C0058C060 /* remote_hardware.pb.swift */, DDAF8C6A26ED0DD80058C060 /* environmental_measurement.pb.swift */, - DDAF8C6126ED0A230058C060 /* admin.pb.swift */, - DDAF8C6026ED0A230058C060 /* mqtt.pb.swift */, DDAF8C5726ED07FD0058C060 /* mesh.pb.swift */, + DDAF8C6026ED0A230058C060 /* mqtt.pb.swift */, + DDAF8C5C26ED09490058C060 /* portnums.pb.swift */, + DDAF8C5E26ED09B50058C060 /* radioconfig.pb.swift */, + DDAF8C6626ED0C8C0058C060 /* remote_hardware.pb.swift */, + DD17E5DC277D49D400010EC2 /* storeforward.pb.swift */, ); path = Protobufs; sourceTree = "";

$Z&Pd8kPfblsY2BisMnMbO6_lHum75t4 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 J3>`e=e*n6&!Il63 delta 25388 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