From a778f03d8f1ea1c95dd65c897c686edf7e885e81 Mon Sep 17 00:00:00 2001 From: Florian Gabach Date: Wed, 24 Oct 2018 18:44:12 +0200 Subject: [PATCH] Code refactoring --- CHANGELOG.md | 4 + .../project.pbxproj | 102 +++++++-- .../UserInterfaceState.xcuserstate | Bin 37919 -> 55826 bytes .../AppDelegate.swift | 3 - .../Base.lproj/Main.storyboard | 25 ++- .../ViewController.swift | 45 ++-- OpenSourceController.podspec | 2 +- .../project.pbxproj | 90 +++++--- .../UserInterfaceState.xcuserstate | Bin 32688 -> 37481 bytes README.md | 17 +- .../Controller/OpenSourceViewController.swift | 212 ------------------ Sources/Extensions/Array+Extensions.swift | 5 +- Sources/Extensions/UIView+Extensions.swift | 28 +++ .../UIViewController+Extensions.swift | 29 +++ Sources/Loader/HTTPDataLoader.swift | 23 ++ Sources/Model/LicenceFile.swift | 35 ++- ...ceDownloader.swift => LicenceLoader.swift} | 2 +- .../OpenSourceController.swift | 33 +-- .../OpenSourceControllerConfig.swift | 2 +- .../LicenceListViewController.swift | 82 +++++++ .../LoadingViewController.swift | 42 ++++ .../OpenSourceTableViewCell.swift | 24 +- .../OpenSourceViewController.swift | 89 ++++++++ 23 files changed, 518 insertions(+), 376 deletions(-) delete mode 100644 Sources/Controller/OpenSourceViewController.swift create mode 100644 Sources/Extensions/UIView+Extensions.swift create mode 100644 Sources/Extensions/UIViewController+Extensions.swift create mode 100644 Sources/Loader/HTTPDataLoader.swift rename Sources/Model/{LicenceDownloader.swift => LicenceLoader.swift} (96%) rename Sources/{Controller => }/OpenSourceController.swift (51%) rename Sources/{Model => }/OpenSourceControllerConfig.swift (95%) create mode 100644 Sources/OpenSourceViewController/LicenceListViewController.swift create mode 100644 Sources/OpenSourceViewController/LoadingViewController.swift rename Sources/{View => OpenSourceViewController}/OpenSourceTableViewCell.swift (50%) create mode 100644 Sources/OpenSourceViewController/OpenSourceViewController.swift diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b45b87..60454dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Changelog ========== +### 3.1.0 + +- Code cleanup + ### 3.0.0 - Swift 4.2 diff --git a/Exemple/OpenSourceControllerDemo.xcodeproj/project.pbxproj b/Exemple/OpenSourceControllerDemo.xcodeproj/project.pbxproj index 311cded..52ef1e4 100644 --- a/Exemple/OpenSourceControllerDemo.xcodeproj/project.pbxproj +++ b/Exemple/OpenSourceControllerDemo.xcodeproj/project.pbxproj @@ -7,22 +7,36 @@ objects = { /* Begin PBXBuildFile section */ + 76229B602180AB5000A61697 /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */; }; + 76229B612180AB5000A61697 /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B5F2180AB5000A61697 /* OpenSourceController.swift */; }; + 76229B662180AB5D00A61697 /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */; }; + 76229B672180AB5D00A61697 /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B632180AB5D00A61697 /* LoadingViewController.swift */; }; + 76229B682180AB5D00A61697 /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B642180AB5D00A61697 /* OpenSourceViewController.swift */; }; + 76229B692180AB5D00A61697 /* LicenceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B652180AB5D00A61697 /* LicenceListViewController.swift */; }; + 76229B832180AFAD00A61697 /* HTTPDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B822180AFAD00A61697 /* HTTPDataLoader.swift */; }; + 7627B06221807C4B0057FFBB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 7627B06121807C4B0057FFBB /* README.md */; }; 76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */; }; 76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8661E93F2CC009A41DA /* ViewController.swift */; }; 76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA8681E93F2CC009A41DA /* Main.storyboard */; }; 76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */; }; 76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */; }; - 76EAA8881E93F666009A41DA /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */; }; - 76EAA88D1E93F675009A41DA /* LicenceDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */; }; + 76EAA88D1E93F675009A41DA /* LicenceLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88A1E93F675009A41DA /* LicenceLoader.swift */; }; 76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88B1E93F675009A41DA /* LicenceFile.swift */; }; - 76EAA88F1E93F675009A41DA /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */; }; 76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */; }; - 76EAA8941E93F681009A41DA /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8921E93F681009A41DA /* OpenSourceController.swift */; }; - 76EAA8951E93F681009A41DA /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */; }; + 76FED173217F6CEF0037BD09 /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */; }; + 76FED175217F6D400037BD09 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FED174217F6D400037BD09 /* UIView+Extensions.swift */; }; C33E4D96204442AC00142EE6 /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = C33E4D95204442AC00142EE6 /* CHANGELOG.md */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceControllerConfig.swift; path = ../../Sources/OpenSourceControllerConfig.swift; sourceTree = ""; }; + 76229B5F2180AB5000A61697 /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceController.swift; path = ../../Sources/OpenSourceController.swift; sourceTree = ""; }; + 76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = ../../Sources/OpenSourceViewController/OpenSourceTableViewCell.swift; sourceTree = ""; }; + 76229B632180AB5D00A61697 /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadingViewController.swift; path = ../../Sources/OpenSourceViewController/LoadingViewController.swift; sourceTree = ""; }; + 76229B642180AB5D00A61697 /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = ../../Sources/OpenSourceViewController/OpenSourceViewController.swift; sourceTree = ""; }; + 76229B652180AB5D00A61697 /* LicenceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceListViewController.swift; path = ../../Sources/OpenSourceViewController/LicenceListViewController.swift; sourceTree = ""; }; + 76229B822180AFAD00A61697 /* HTTPDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPDataLoader.swift; path = ../../Sources/Loader/HTTPDataLoader.swift; sourceTree = ""; }; + 7627B06121807C4B0057FFBB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 76EAA8611E93F2CC009A41DA /* OpenSourceControllerDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSourceControllerDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 76EAA8661E93F2CC009A41DA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -30,13 +44,11 @@ 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 76EAA86E1E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 76EAA8701E93F2CC009A41DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = ../../Sources/View/OpenSourceTableViewCell.swift; sourceTree = ""; }; - 76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceDownloader.swift; path = ../../Sources/Model/LicenceDownloader.swift; sourceTree = ""; }; + 76EAA88A1E93F675009A41DA /* LicenceLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceLoader.swift; path = ../../Sources/Model/LicenceLoader.swift; sourceTree = ""; }; 76EAA88B1E93F675009A41DA /* LicenceFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceFile.swift; path = ../../Sources/Model/LicenceFile.swift; sourceTree = ""; }; - 76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceControllerConfig.swift; path = ../../Sources/Model/OpenSourceControllerConfig.swift; sourceTree = ""; }; 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "../../Sources/Extensions/Array+Extensions.swift"; sourceTree = ""; }; - 76EAA8921E93F681009A41DA /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceController.swift; path = ../../Sources/Controller/OpenSourceController.swift; sourceTree = ""; }; - 76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = ../../Sources/Controller/OpenSourceViewController.swift; sourceTree = ""; }; + 76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIViewController+Extensions.swift"; path = "../../Sources/Extensions/UIViewController+Extensions.swift"; sourceTree = ""; }; + 76FED174217F6D400037BD09 /* UIView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "UIView+Extensions.swift"; path = "../../Sources/Extensions/UIView+Extensions.swift"; sourceTree = ""; }; C33E4D95204442AC00142EE6 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = ""; }; /* End PBXFileReference section */ @@ -51,10 +63,19 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 76229B5D2180AA8E00A61697 /* Loader */ = { + isa = PBXGroup; + children = ( + 76229B822180AFAD00A61697 /* HTTPDataLoader.swift */, + ); + name = Loader; + sourceTree = ""; + }; 76EAA8581E93F2CC009A41DA = { isa = PBXGroup; children = ( C33E4D95204442AC00142EE6 /* CHANGELOG.md */, + 7627B06121807C4B0057FFBB /* README.md */, 76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */, 76EAA8621E93F2CC009A41DA /* Products */, ); @@ -73,11 +94,11 @@ children = ( 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */, 76EAA8661E93F2CC009A41DA /* ViewController.swift */, - 76EAA8891E93F66A009A41DA /* Sources */, 76EAA8681E93F2CC009A41DA /* Main.storyboard */, 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */, 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */, 76EAA8701E93F2CC009A41DA /* Info.plist */, + 76EAA8891E93F66A009A41DA /* Sources */, ); path = OpenSourceControllerDemo; sourceTree = ""; @@ -85,17 +106,46 @@ 76EAA8891E93F66A009A41DA /* Sources */ = { isa = PBXGroup; children = ( - 76EAA8921E93F681009A41DA /* OpenSourceController.swift */, - 76EAA8931E93F681009A41DA /* OpenSourceViewController.swift */, - 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */, - 76EAA88A1E93F675009A41DA /* LicenceDownloader.swift */, - 76EAA88B1E93F675009A41DA /* LicenceFile.swift */, - 76EAA88C1E93F675009A41DA /* OpenSourceControllerConfig.swift */, - 76EAA8871E93F666009A41DA /* OpenSourceTableViewCell.swift */, + 76229B5F2180AB5000A61697 /* OpenSourceController.swift */, + 76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */, + 76FED17B217F6E2E0037BD09 /* OpenSourceViewController */, + 76FED17A217F6E0F0037BD09 /* Extensions */, + 76229B5D2180AA8E00A61697 /* Loader */, + 76FED17C217F6E4A0037BD09 /* Model */, ); name = Sources; sourceTree = ""; }; + 76FED17A217F6E0F0037BD09 /* Extensions */ = { + isa = PBXGroup; + children = ( + 76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */, + 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */, + 76FED174217F6D400037BD09 /* UIView+Extensions.swift */, + ); + name = Extensions; + sourceTree = ""; + }; + 76FED17B217F6E2E0037BD09 /* OpenSourceViewController */ = { + isa = PBXGroup; + children = ( + 76229B652180AB5D00A61697 /* LicenceListViewController.swift */, + 76229B632180AB5D00A61697 /* LoadingViewController.swift */, + 76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */, + 76229B642180AB5D00A61697 /* OpenSourceViewController.swift */, + ); + name = OpenSourceViewController; + sourceTree = ""; + }; + 76FED17C217F6E4A0037BD09 /* Model */ = { + isa = PBXGroup; + children = ( + 76EAA88A1E93F675009A41DA /* LicenceLoader.swift */, + 76EAA88B1E93F675009A41DA /* LicenceFile.swift */, + ); + name = Model; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -159,6 +209,7 @@ files = ( 76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */, 76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */, + 7627B06221807C4B0057FFBB /* README.md in Resources */, 76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */, C33E4D96204442AC00142EE6 /* CHANGELOG.md in Resources */, ); @@ -171,15 +222,20 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 76EAA88D1E93F675009A41DA /* LicenceDownloader.swift in Sources */, + 76229B692180AB5D00A61697 /* LicenceListViewController.swift in Sources */, + 76229B612180AB5000A61697 /* OpenSourceController.swift in Sources */, + 76EAA88D1E93F675009A41DA /* LicenceLoader.swift in Sources */, + 76229B682180AB5D00A61697 /* OpenSourceViewController.swift in Sources */, 76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */, - 76EAA8951E93F681009A41DA /* OpenSourceViewController.swift in Sources */, - 76EAA8881E93F666009A41DA /* OpenSourceTableViewCell.swift in Sources */, + 76229B662180AB5D00A61697 /* OpenSourceTableViewCell.swift in Sources */, + 76229B832180AFAD00A61697 /* HTTPDataLoader.swift in Sources */, + 76FED173217F6CEF0037BD09 /* UIViewController+Extensions.swift in Sources */, 76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */, - 76EAA8941E93F681009A41DA /* OpenSourceController.swift in Sources */, 76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */, - 76EAA88F1E93F675009A41DA /* OpenSourceControllerConfig.swift in Sources */, + 76FED175217F6D400037BD09 /* UIView+Extensions.swift in Sources */, 76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */, + 76229B602180AB5000A61697 /* OpenSourceControllerConfig.swift in Sources */, + 76229B672180AB5D00A61697 /* LoadingViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/floriangabach.xcuserdatad/UserInterfaceState.xcuserstate b/Exemple/OpenSourceControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/floriangabach.xcuserdatad/UserInterfaceState.xcuserstate index 0c84e87f9f757efe0569ae4d412e82e6646fc695..a8992fc2d52c58f64e94bcb5a2bf978d9e79df7d 100644 GIT binary patch delta 29002 zcmb5W2YeL8`#-)jv$uC!bLqYJ(9#PvAqfyj@0Ade0|Fs|B=mASfPfS!2Ld7`AruAa zAVoTefP!=orHBYv5ELmY@SnZQVfX~Uuiu|zH+QpB-t(Sko_S{GnO(6C&fkva+R_#Q z7J-IS?*7PO*Q7wVYZ(t)g~N zJE>2pUDR%B54D&2jM_(?piWY!s4uCnsI$}+>MHdOb&dL#`hmJb{Yc%XexiP*o>I>M z1sI?PJg@*-UEK;311taw!TVqdSO!*sCh!s12DXD8-~c!X z4uKQk0{8}e4}Ju9!O!3~@CSGdo`L7!1$YS&R6{)vEubxQf}=fHUDNI2#(^BDfeXhmG)KxE^kR zyWnoP2kwQR!F_N)JPFUjbMO+p46nd%;V`D})e@G>AnU z;*l@%L;ffL1)?C-2DL@)P&ji3Q#$!Ksq!44MaoG z7&I2?kqpiujHaNeXcn4{=Ay-D3Hku7L~GDyv;}QNpP_wdKhl4JPN0+M96FCKpo{1# z`VRep9-}|e6Z8~4L(kD)=x_87Ezlw@(H69pwxq3SH`X7b>8FDn_MN@hU;3RavTRRdy;Tm9xrS<)QLX`Kkg{L8|tu4yrI!xGGu| zqw1pSs_L$aSM^l&QYEWWR2iyFRjw*eRir9b^;4CpbgBWW!Kxvu8r3jWy=sJNjB2cE zqDrrtteT>lu6kEBTcv+bHD6^=EmAF3eXLrq+MxPGwNbT6wOO@AwNZIzF>PyvEsDQ9V^XQ$1JxrTSa-kLrc$rRo(!F@Rwij^P=5 z#({BUoET@uo$+J*nE)n`31UK-FeaRdW#X9bOgxjIXL>PdOdgZZR4_Vb05gyo#8feL zOg%G#8Oe-d^o-14#=tCK7BcTMidERU z>UY%h)brH_^#b)m^%C_;b%VN5{jqwzdV_kGdbfIydawF3^+EM<^%?co>a*(a)YsKF z)Hl_))OXassDD*IP(RVDpQ@i}XpKt4Xw({wM$lMmY&0$!SB;w{NYh5sR?|+?UK5H& zYGO1UHJvo^ngmUvCPR~{$#v}TNEtY(}>ubHZOPcuie zRP&)`nP$0Wg=UrJW6gTa2F)j$9h#k*Pc=t0M>WSZpKJ8THK#P^H0L$fG~a6OY3^%& z()_IXMe|VeRP&0ZSS!|=wP9^pJJz0cU>#Xc){FIKBiKkbij8Jt*p6%`wlkZ+CbB)) zo@_5Ro6TW!**rF%EoRHv3bu+J%2u-zSv@PWn4QE{@mm z`w_c?-N}B+?qYYd``DxGm+V*UY4#iT8v8B#9ebVqp1sfh#Qx0w!9HgHvD7z&UbGoFC`U1#p2}5Z9iI;3B!MTsJP3OXgCzR4$E6=d!sXu9&Ofblh;RmaF6H zxe?qLRL|*UZaViaH-mehTf{BqmT(_%%emFuC)`HvAa{s6%pKv5a>uyOx#Qd!?rZKW z_Z@egyTRS$ZgF?GU$|en2i$MmL+%mxocoLWn^*H1p5-~7=Ph_U-kx{h9eGdQi}&W+ z@gaODAIV4Yo%qgtGM~by@@ag!p3mSj`7FMGFXT)4N`5dugs=cEB-WphCk0=;ji-F z@Za;d`5*Xu{1g5u|BQdm|Hc2!|06&F2^zsluoi3tTS0Fp*bAP5m*6e<3vGpVLVF=v zh!HvporG>envgDJ2$@2bkS*j01wx5XCR7N6g&{(fAPZB3cZ7F^8Nz$Q9Kj$g5Ectd zgk{2V;bURFutE4l*eGlgHVa#XeZqd>fN)SaBpeow2uFplg|osr;k?0DvuVu@HTR*3cD2yvu1N*pbY5yy(-#POmmV(}eu zsyJUXi24QMLh*g^Lvfk-iMUbRByJYBh+D;N;&yR|xJTS8ekL9i4~buir^Pek*Wy|6 zqIgOCR{T!yi*;&btZ_)_8|UJ@ixk|YbsRTKS|P2J8l*;PgY=2CQQ9PZDjkvzOGl)m(lP0C z>1*k%bWZwK`cAqo-H`4}KS{qzFQk{!D+|g3Sg0&C7CdXgSx6Q(77iA^hCrr^3IiXx zw_z|dLmDnaS&f00>@N?OE4Bf3Ca|*~H!dn9ysbxc@PxJ=<6L59 zv!N%uTVF&TWS8|%F6*zWI#00_NAZ-7s-c2Dq6Sa{sX@)<#mq()Jr3G@JRC6LcRd6GO?o+Ve1@|D69bp1yR9H?uC zWT!whEaK+)7FLywsTon9U8~cvW(@C8)2N^ZYN{OAKuwo}OCcNw%n$H znj^QBE3#9{Dyz+D4AdgZY8ADBT1dSwx0Bn;9ad3`39=95V1h|%cfRR(G66C z93pGY37e=5RM1*#HMNFXORb|mqCTe9%b{|Z94<%5k#dwAy_Wif+DL7pHd9-ut<*L- zM(!y0k^9MMa+%zpfJ?AkA4Kh^j!;%j)B)-sb%;7Fcal5HUF5D!)KTgfL2+E}CdU&T zi3G>>zBBWv(+Z9=a;&U9XQcfc72QOgr!FX$94B`-URte2>*#&pA!YohCC^N4^c{7R zvTCHRQ#a%ua?eKU7WKW{OHLwr|83>ek-AGouavcx=Q79JWwtKvkGjp{uU198jsN%}J`R(2XYKB*^KdTI=M> za$R+~F1ebsTdu3qGUkU4z>z%6mkZ={!-@)LTP-v{aZ@15MG7MF#3cZD zQ#|kizQ7Oo7gf}hj~Gh8=VT@q)K?DG)zy~`9VVB^ePzm^?;I#(RaWRq(`#!6>&oj5 zaq(?zTUR9rv@xud>`)_UYgjJ1(x5%)U^pPPr9m*M+X149O5UKs(9J(29)uGR5x^fr z0pGmTtoHrO>U2fqZ>_GXtiE!jPNw8?xx~a(N6;xJHH#o@1Rbfarm!xctHENBy&iN? z+S4dSAeKlKh?57%+ET6UxN$^V81+U-SY%XNkEqa?2@{${2qc2uR8SM>0eXU7AW0r1 zSIUFsAx)qUNG3F<%2je5A##LVk)Ny^P@h|=8&!~5IdG8iTVb-X%PMVCs_kj3XqRDC zmBvTLUan{zb2&MnP$?%Df4!|4W5;>~s%fT2q@W0*m{mW~Gd%FY8~Wi>s|I8?y>5qB>Ju%~^i{mQq10SIQOU zfaPE%C6el_kf$_&2KgORb@X7hQk^wmtvpqJ_uuM#3^ukxwuvCyB2Od8rW0g}UNx$I z@7QUZ->B72u%}hpy(H~Ec?L;4Q|?`=wIHdDE$G>-sJ&xr4jMDL01ksA;3$#UV?<() zgD(ud`92;W5E-2Y$tm*6XKnmj%R&VqB`Jax^mgHP3eAb+R@@_Q{54!8&| znG}w^Se|22HYWMKMzjt17JLV;gB#$cJXfAC8{`G@`>(YPxNYpp^Zr}8nESk0iv$ui zVh(GeKFmQ6jY?x-v(j*}GAT7clp)a=i_99ss##u=a?;jK<3J**LO25b>RLjj70TNZw( z5lV&|79G-{7FwA*0<@M_$Q7pi?1#VHAvpF|ecjk^Hf| zUfv*ovKn@VU0_$(4aUkFJ$oUfrXzn%D;}%6Au|;FW4E zvvgHN)9NZ-TPvknS0zH1a zYhXIeAWFsuX2TqLhkTIq_Tlnj`G{hV*eIQ3^sq8APE{n;>xR}T#)qMcONhb4#obWt z;$WQ!#%0PgVXu!1EpcAhowH(B%Fnbqw96mb;K5U z&EbQNiVA{8>*|<)z-z=RM*$mR8{F} zO9oU{k&yJVdU7|LeDD*vm5eQLBisZx!!7a&`J{YG{<4WmgWKT_xRZ3=ujJG686|7G zVYPZ)onoR?56mjB8K#RLR8v!@t0lr$RaRG@SXMVCyC$i+vc9scUYDW3h$rE7MMgw% zM$4&GYi0bEHB47d44rZ^NY_-8VU`F}_pqgfbQ)dq#zb?T8@E|+{55prA z5A{dkF|w@a55IsX3d*X>2i4RPFa^duvvsvY3x+DW#1ku^u$mB1VT4&|d~C!bUy#4n z5XEs`zIcITcM5(9zk)>FQrFk}&Lh7prGt6s@HpU^cld(1FhcD+tN zx?Vm<(x1&AR#}}`F;G`$(l_Vfh5xCAsRkrvBfLm;{jZ1r6aH`2t81!trmU~RZ%Vap z%>?O<3>ou&gTh95O)112?LT6fCGtD?gVODyam69x8=+775S?CjeJf1b`9z9 zKN5300Nw|Vq{DwlWWZm(L$rHEsb1?!kSJ4;wCbucN!5fJV(Sr-6fq-`QL42k&y89r zyS9vU5E7PEPsE{)JW1%@^R+%|j&Cx599ra=Iik9n4V_(Z-g-;i&vg3sV{VkO;@e<1ZB za;!+35#k&At5oYv!sAEO))LIgWh01iWtsBN)D0ljB=&b7UE-KhZ3v0ht8ApsBGOuVhcCvK!t4N5N z>Pie%@}oFvfG)f|JR&5je^~H;Xb&igx{>)B>Vmq;PvvKgC>F)Z z&*i`5-kFsZne}57PW>_lHj4r3h5Eb^I~k?O|HvDa@=TQTM)F*gC%?jgeXW#HA?i!y3>BebRDuD80l)yRLZzr5D#HL_Kx3dG)9ZSo zILLr(o**UHm~@`Lu4urBs;U$sVPykJ1e>?vF;Oyz*fyvV6H`k24e&-)Xeg>iH58AA z0UtCR)uK97kLrn4bPkO`BY{5}iAIwQ$rP;C)HAC_46RNbF|@y;sjYO?6^eN3Yg&d{ zmJcEW1~C|FGs~(6>XLOtCu>O$G^*#s>hc;T4GA(OPOhxhz0S{EOv}Lk&90^#14iqL zfm+MSl=fDsRyJ(*_j_|z2qs4LZl2)v%Fa%2X#|?O$~ZJ$Q6jn7ik3`ho^YD^T!ki} ziHZtrj$qgm=}%_Pwxn+w4IvNzasD2a)gI-_h?G%jVs;Xmyb=S!l)W0g)2MVkvj|K> z?-CmXO~*iLKr=9~AXdnJ*T5k39vHjwU$LBr7LcJB%|`|dEHNM}3Zx$?J%&WLaEsHU zrD&Pi!bHn4uxU0iQG+7sjc65W!oU^-2MnD5&2=qW|G)DLw1M>2jTqR;{utORf~+h_ zy;i8oe9=3$?u|(p+J?$MZI#b1lFuGYR6EJXN$&mTLYH^!!s3>;DLR12lFXZvKXjC6 ziqA1{QPhGfv3djCy^wq3qCLoRokvV?j7Ko}ghWP@ zTX00Mp}mJ|w}@bmQms!|_n5H6_|UL+i9JF>+l5C*gtUtbi4JQQOcHnR9vqPn9F~w< znwr%yEbPsNlx+(={&Q_`+e^L~-+Og%(hrhWl5 z*&?+DZe$I_pX`XXA$y`7KqT1(9YA(H2ZJhL04vEHbTiluz5u7lp5`_16grYwge!C> zW_~8jg9BhCF*?T)dvrEj0Y8Tq$VTHsqQITW4q{9wib35`4k|-&8yHi z=v%65E?LnczswSU9o-|VmL&6=B>V4Q7jPE?Ukv;(Ao3D`K_CV}7_`BlEe7q#@+JC- z6#okW@PI&gh#o0o)gIHf12H`q)1xu{KBgC8dI_dKAd=wW`&+LUG)>G8^b)jzNb@UCX|4!uO_R~EiMF9_X*=2;gGdabG3bav=O)^bcA}kW7Yw>$kcdGa4ARK# z;NNv5+LM@fL|;W2nv$ZdUN0}vex~3U!>?}yw=o5GGF(lLv~H10uqnKYLEpQx4IM^D z5FJ2=W6-UECTL;_6K8sRdeR+M)xxG>=O_I;*D)g_on-hg)if>A+hiWHPXpc*OmdMSgCZH zVPzjDnog%P4Ey^;+t68bjsh(kgB}fZE(SeK(DZbn0<8#xUT=fuNB76guwpPsQeah3 zJguV#(7nhKNDCl}fN4ns_r?UN(%tDwbR`}^GGcn0+pCJM{+FH_43g!FP@{&XYZVZ6 z7^J)n#27lk3?h|qLz;k4J%QFMc}>J1y@8f7AflpBt*56bS-pcn=G(Fgre~S6>ViSm z8#EK(W}tKFPpP0yT0eRoJ)btv3#e`M`}87uF};NTfL=;}NH3$8(<|tebOYT;ucDji z)$|&AExnHZNKb!EuctTApU@lWP4s4Z3%!-zMsKHg&^s~6!5|NV0t|{|LMt&RN--ct z1d&1=1_Lo5gZ~f=hGIatAu5;fF#>~87>vPS90n6G&|`oxn2Z6b-!u%~#b71|voV;1 z!8{De$h45eScJh643=WBOsT;xdN;j?-b;T*@1ytA2k3+JA^I?Vgg#0iqd%vQ(_hdh z=#%s*`b+vN`ZRrp{+d2ZpQF#y7wC)hCHgXbg}zFELtmr6rN6^q1qK^1*oDDy3@&1D z9fMymc#0vyP{Pm=L!Sx^J75@tVIqcU7#3kT0K+;ACt^4a!vz>F$8ar%TQNL<;Yke7 zVt5V1I~YE~@NbM5jIt;Bp=OfJv)0K6`1>Aq<+@`hqmXMy9 zGV5EaozNN*v4ISCW9@AJRXcy1qW3G+4l=Av?P*Ah_5Sy%ia7r$x~hMvc53U)6mWVE z2g6A{Z)lrg`)`F*DpRrwgJo!<;YO;)aHG3Vi(H9~rsO)HR9o9R*F)XAx5&xD6m<~E zDbR2*&XcfVYxppLGZgDJEuz_&q781%Aeh*@Mahn)cvYp^A+1X$^$9gug&hottK3Za5G(dAH3*3fY@d^)tj4$bcNM2qL#ez?c?>Jn4t^^Z!~6gnrJ60^2bhu& zGkeV2lN{8yX~9Z6Q}lX+MO-VniffT=s43paQtin9%9b}WLyUB#TK|XmsiI7IkqJV^ z+w!vW$V`k&NJ(rzv}FfVbvC6MTdFO6TdF{3G9A>lY=AgZ0%EYg1#(=xk0C|&YEi=; zrsxw(wbR~~zgdnwTO{dYN+OqPN4!1B+a)pGlxz~&mFoT$(a$kGo>HnEX6$aH!CI7A zXnH!eR9pSlG9#MB^FO9BEeR?$Wi`E2TTim;_hzqGRhXX6DAmqrT@XbE4W3HtweA4breyDxYNx*~nXyr#I{d$@K2@D5!?~r}?6+lT=N;cG zF12T3a$3*-5x>!0v;F@=+e|X$@qVdxeCy%}U;qEu zpJvK!ajAC7+j29~7~DaTod1XJJIj>W2Zk5=+7_B*o+RP~{1nQFOeg^J9D$^Qln8ZlUfK@$e6F<3*^mZ68L zNwwPecO6+}CJ)wP(ERNqVqf*k_BF)j1sKNk+o|`CburE#DXrNPLA6~)CZS}fUA0s0 zfx*X(phUG>uEk)z+`I4VbrD_l!1_U!jBT^2rP{ALLTq@|0o6g(A=P0FKEZ%Yem7yT zxk+Vo2T&1PV~gSsfWZ!BI^bm7%QpPjcd}lkI0mTBV6e5>GeD(y2B^-fE+`iU+c4N} zy31OvgVw`b<~7xI6VUGzpgR?yHx-~{ui}4!qLb!CcT~SBMEM;sXkom z=6%paC#5x;%M4^xMwkq(z&u7^GHM0p=dEGV?VDjT0%J+|WJE?{EEwYI@&yJbFgS_9 zsV2sXv1V)-TMWL$;A;%dVsOsLsNq)M>3YV6kjc1W@KrOJj0Yi;@npP|3xm@b5T=zo zAv0N<;~m?kSpa&N%WlJv9Wf#ROgjbec?EE=0{B8}z`STq6v1><00%@eQA{)wgTW;X zE@N;7gR4zUC&eLzAyc?-OcL-dA&$6&=$S+XEGgug8En#9eL~EIq%&D2WSI)G?^<|) z{7-|M6BICH*{_KyWQv$#rUZi<7~I6*76#upF{O-kKcH44z@|9D~0w z_`8W&Z){l7)BiCxETqf??obFMbEOw%0(UC}?qT*S7X~jecxAd10)4bG=CTem$4mf^ z5`Ykp24;@Sy)cBW0n%&DiN0jcDgeJ?PBUkiuQ8;tD^y{~V5n|l&KVJ2#86{GNY=$o zqW7(W@H-4yGs2q+!duh@<-(AYyBlu=pI|QN9`mya-A@WSL80$gLLU@cqf<{aC;FWs zI~+~SAIxLsPv!}R78q(VbhgCMs)>2VJXf7({>IQ6Lpw#sLHlNWYDn;@$&AdV8K0U_ zy2b^yM!6Jlwx*j_Yw@}dH)^v5uuNgb!OtU3Y1 zKvT;S?>J-2s{1I+C1V(5W-g5|r%or4$%SDXqQI3KX<6P}PM*5Z1g<~<*G>Uftbl9Z z8k}aaIZ>H$qMS6r9D?K8*H8Qx~jBKiUrh;smdb;{u^$ZLgrOkz{Qm-)~ zT&*CCR}ijK5GJ%nNZXqeeWF(OvDF*Zo79`tTQKZF`fN`ONwTCS^)@5Iof!5uAtVb- zrk35OAl#2(A2Y&3|0j1}s85-Yom7yeD6RUH(yFPgk*Q{zk)2atR*;=nUr=9EU&1gQ z!wd{FG0d`WQeRPDRez%Nn*wjxNM# zAY;rSS^K)bzV^0I|EB)k1oe>uwLpRTSbc7=K|EOPJSd3u_ zhJ7(CZBoBdNYp?K`J!wBrdry?633=awBbQ(_D_m zR^wm!)gp`FdWtluY&@Q^rR{?yf6h`IIvbO42Q~uc5-V;qS*-5bk-<)j?{HcR|V&A zLZT*4A+feKPWoLl&K{aR3eKLIUYaCLZ%+*CF&u&6NDN0cX_Ad35?V%^NF3LUGFL%K zT7QfgC0TxL(i9OA$%Wxqg+y{ABu+P%(_f=AfvZr!jaR@8RKO93y#Fy?EG=i56IE%3 zE8vD|sx>v5VHoN$lrh8(7*1-^)EdDNtdmXP-f0FmUI8}&!zpHPG6DCW8b&isGs6Vz zT?N=w0t~qlV1R1{%#3QThPcQyY36C>YYZB)7&slncQGV-W@eM-eU0@Z&0@_G3}<0D z2gA7-&TGcCQo+@Lq0#M&_+4w76w+1`(#VD3dkSgfMo0_vj@2|9R95CfH)^(+U~X1m z&R6)`rtoKI1=ErqWlpq9vrj>~TeC;A*H`lyh6^!#A48(#7B^}3YYwP>(;UK(fF=_9m3(;x1?|n=oEdFfLP6;bWzvwC=^`6yIsSR{&nu z+|bJ=E_(u#^nHqR?GrV6Fcn>gaGQ)eMz&o%0P`Su34C72U z^B|&mruo~1>n{b@8p7RwDZ*x4EMQq;53rC$EX}G|hE=l~4A)`!5g8Oe#&A7`8!-F? z!;NoPqOA5!OB8M*kXz0-&G|dAu0}+xi-Kq~LBzT%t+}OjYii6Yh4o?EDxiE>Kh~cO zU<278whe~FXxfh94h(l<_$h|FFxBMG2-Y5@jUm4e!~M$7{p7Sk zhXMo)2aD8|Y!^1xgr=K>v}sfeOGc6o7*jfG1i5gd5G^YS@uvcwWolI}#;T@LD zSDM(V>@;>dOH{x)49{bD0mF+;>`Y_z-^1{dsrpyU)nBMopLD{@=ISqbYv(eTv65Y7 zs(PbR^{YzNS1VQjrd8Fo=7Ev@nBAn{TF-7^KVdgw_$`LtVR#+G8%;LsW+N~nH8)Mb zzBdEgqX65B;Vm<;{r@MhW9%0uV8<0;w-sO~6<|NK2DZaonKSGK1=!c@S@s-DsQMAZ zyBOZX@P3mWdy&1w++wd__!EY|lF0{#56sYRD9~ZAD~$0HShX_=}unyb+P< z;2mqyN#>Ii>@VzZCY%oxoWBvJ#6D7#(!*9bEjb@E&?oHQ3eczQGxj;_^%sV}WB3P# zk1_nSiT%gO;44gAwv+`O_^cTwN2VwZoEpQY%`iERz$EjjH04sJQzSCEy*`M-S#mZ; zY@D@%?K$C)vr{hWs9=>YgJQZvl*>|Fh z*bp*fYolOmi-}8@$?oBZr9td7E=0K$%M3x&osj5cE-H%aXu=mm@FALT$8{#$AysR9 z>Tc#laa<1tUw1B^OW+bQQe&hcdtod_Toc#Rh_5$Bya}IV#+RYs%fv`9^VPx%q zkxdg7i%?9AZC5^&r&!Zf)saav0--u`V^%uO)?o2&qHREV3Z z5a-mIIB0fmPJ(+1z{F9E@Bra>d9E+avcTZk`d_0*pLN*u2cxmMYjj#K_Z( zZ3V&hpXLs?hWp5bY@LG4n;;`bBIypTjYKnLn>ezKyq4R{ZQ-_Z+qmuA4sIt#z8Lvo zghct1?KLptcwb%?pIw7o2ID!YR`fq)a|JWtxJ>WyDC0faFfZR}Aon}>r-_)y3XIMQjHe2WF0Gqvm7STJe|Vrk zd%?ZrUhx!0-7t#9C=R3UO+4fgPxC5_;xQsQ_Qa@HbDQx3fyRp%5mjLH9N@JC8gB_i z<-#bD=riR;L_NwoHmKPYoYGt<@5Gyo2VOBAP!d7PE5-xr-5ROOX>%eUK7e=t^1i$u zAMB4&GDfKwrLW=x`5?XxMwu9q9HzgqQ_Y*)LQo3XFCG5x`aK_ET&PEBhEM#<4ZUN$ zY+7s;@f}SMGsu=zmD$mq@4_dLp_uQ=cjIIEIKDeiC?QoOPBJ+dM-(`xxd#XoL6~zV0n)h{X`Vk0e4)=&VrANlZ9sSP|`H_%2G_ogc@K zH+jLE+E=eMxQx*tS$lz>4154Nj>b>n-{Gh7(+cX0#~+AmFh)Z#B1)+eqhW;en)cpt z2RCg^8ouHqb1Tl|$$`j5eilC)qbiJsHu7`$xfqd@HKgJn#B^nio-_O+ez9SFq=#x1 zzl8t5@KI#99{h*=GP7U4(Jh}}$*(4|%Qx_i{3^Z)qdJW0F&cr<$R>Ubzm{Lee}oZH zdU}iq@@Yx~1Q;8jZFmpEu8tiHXTtrJ%BJ$0d9s>eI-kXF!)SD~(;&Z7X@gJsT^NnQ zXu`j3u$SLYx*Go(F-Or@jK($c2Nd$ho2UOi>_2^n_58@L{xal@KmO2t<`OVAP1wDy7z5 zhPhoG4c)pV<_eva61reSW@^n6EW`>ui7F7{gziGTkRT)qM1`%!XbnbdF7=2>6*)=g;=qr>OJ-*C7?8c|7NN_)@Yd&#fH~u!|*uSOcte_K= zLp}o0Mw=UiK^SfMx2lu6+3JO%0-0^BqZbJ^!Z2aDP)n~9>ILHXMAQrE5<4*Z6eF_B zhB4ZU(Y|%UC}FfPMi?uM6UGY@gozj(!00$eXE3^q(RGY&VRRp(U*Ay3!eoQsw!nYV*!RRVR-(YmDNw_ZDFr_5n-?dC>)ze-t{3H-1@gHSA6dsvU z-oWT)b4u^H{e~y@V;slkE9Z4%qN2@bbcJWa3ni!L!e7GQ!ao>&kI`+6e!%EXlkie_ zMfr#TqaQK4tK@V~5kZG^14e2s7dq?JxMBWjDE-H4<(hdwWhRCwQ_M08DpzLzcx(CW(1U^z*cTy#T~mQ}FXr z?c~-D2#Uvb9(rZLTsx;M0$Yc2K_`w?9rmSS4f z07K-pB)mhAccQ2htB7tB2Z#g3L1LviSR8_BHKsL~W-;*#rg=;YYs8^qwOAt#6Nghi zm=-ZDVcG)ImYB9Oy5VnV`;Nh-jSDMIAj(smh-pJy8{0nOB#|5iTuF`*dw2WVWDuI` zFio7L)M2{#t~f)SiD?_+&Wve0Oxr7Um?_Q?=PGru$Fu{cos4y;G0*VCMdA{rDvL4g z_(oNhi^MosBd!oviVb3;xJqoov@<52$h0e_-7xKrX^%DH8gZ?-PW(vxSgDF9roAxj zjcGqj8{cPPAXU+Oce~$bU7tC>bRjO#<3fT%!rI4#g++&iMutbkgoMYm^$3ZIY#$yK z79AQK5*Za15*2PbYa{NYq8r6e#a);tdHc%R!T}Xy+m+R~8;~%tuzNvayRhhX^})4f z684Gv-%3vyFCG?;EBqW0kBY~{&oLc{=^#wE!F1au@eA>D@uYYP)9uJlOn1O^h>4&` z;}{?kPmBifJf_=|@{^Oo+YN|s7n(W7T- zfay?7hhgGVO-EqjQ%y%Ha&T9?C*Bu-YLFO)#B(fu_ zv`4dmNR<*z;@Qp8Y9S7W*c z)59=L3aDKt%_2uze55(jTxp&(pCXF5PA1(G)Ag7hf$5Q$9z}llHdyyxsV}Y^Hi#VM ztf>nLZBLHy#Z-)}uh5Mouk&bUdeE_~BC@fGD(g9^NhQ^qlMDi3WCL0!41eQw2rBiQ7z+RHRA|S{bBt69l zBEuu6`v`JC(hUB*MAjo(l_On|u1eovdK#vuWBOfEPN1%Rv~*MY;VqF#XZcaOYgGS4 zW6zQ+$|(5~97sQ-E8FJiX4+-p*QXAo2hyKPAKWcHlpaZYr9Y&{#wxytX;Lv6 z({nLBZ;fUVa+RJ*&&erCSEa_}SR_3k(+iX@is`Hv=N1)ihH2v`>Mh8dTr7|UtsG`j zUV=jAng{c)=dpj05yv=*v|udMrZYFXMhk}O+BdtVqHK&uS-nR{M91)G?N7#DV8Ii^ zn-XQRG1ttGg@pxi-ZF+YSXg0tar1Q0!uEAcl2T7fcch{}CMOKmkRu7($O(f6avWh9 zy_q5oZ{#$<1PscI#{d>$P-i?(Foc{BAaCC>Ety#O8O?K}G2cfwMpqG6TRw=qL#6ht zMUX|C9OFq=8IU7Uj+7VGhKe9BTIj}(A#X{WMc#_Gf?cC0%j2K0o7nB-t!TU1z2yC8 z&pC#?=ggTbtGaWZoHyr7-gg$rwIT00izSPh30x1Z7uTD-?JSMU;Ig>>+*Iv=CP2OI0Ub-k9O>LyuIobd2yJ5BqpcBXc=c8+#~R)0?W#M0K%&C=7-+tSyv zy=9bTjAbXwE|%Ra<1FJX6D?CM(=AIZ`&(964zL_zIn=Voa=7Iv%c+)gEazIzw_Iqs z+;Y9;X3JxiS1j*Z{$*unjlE(Kg<;z_y=lrEQgMwe2w5>9z}Pm)owiZM1E&)vvMLWV^+7o9zzU zPi=SG9=83`_Ok77w*T0v?9_Iw9d9Sv+1WYRIoY|`x!HNxb+s$9n`pPlZn0g1U87x- z-4?s;c028M+wHa6XLr`_y4@|i+jc+N-Lw12?xnrjUa*(!wf0u_?)HB60ro-mZSBMC zBkZH>W9&QGC)wxPSK8O=?Z??qx1VD_&)#6a(EdaF<@PJ>8||CyH`;${f6)Gn{U!U` z_CMI)vA=8o*#4>gbNhenUpi0@HV&>1UJgDEehvW+5e}Ulx;n%TahT@tuER`+*$yil);a8UIPGxH5jmSmQX{vCeUX<0!{5j_*0nb)4_G!0~;@#f}Y*8yq(}Zg$-2xZQE5<1WWzj>jEO zIG%F6<@mtyq2uq4kDY)Ma#A^|oot-!oE)5-oFbgMJ0&>vaO&k$?ljD))~ViUq|^6K ze>=T!dgTn9k+a}z;cV$_?d+m=?%~|Wd4%&s=O*WmoXwLrcmh%tJKRVxYe&qbb z`I+-y&i}ZuE?O5W7aJEl7grZ|7f%;&7hjh!mspo9mu#03m%%Q>UFuv$xQud{=pwsJ za+%^X)n$&$hc0VfK5|*_@`=kPmn|-zx$Jj2=yKTQsLSUrU%342%DM))c6Kdx)mOTX zbRF$F)^)t=L|55$lItATd9DW6g|3TSm$)u*<#5mgiRBR_xZ- zt)E-1o8E1b+Z4BHZtuFybX()L&25+49=Ffj4!Iq1JLY!W?F+YyZr`|l>vrAkw%Z-I zyKeX0p11>daLGB~m zN4k%4ALBmPeVO}8_eS^C?rYsYa^LCxsrxSXJ?_WdzjQzC{_si~A-LJVn^-y_O zc{qExdboRddU$)Z^=MDdzJ_{)dqjGqc~pCh^_b(a)?7FY+S9@;sJmY!6^G`46W#MJ% zW$k6_W$)$axtJhZ>@Kv_h9cj?~&f4y~lbl^j_}0Uhlotdzbey?{B?d`3OGVKE6KwK7l@M zeA@YR@Coq=^NH|@@`>?D_sR6h_R00h_bKw}>r>`a;WNNzkk1gGp+3`n7WwS-IqmbE z&m&*P*U7iNZ*SiU-*LWEe5d)o>pRnTf$vh^WxgwX8+=#!ZuZ^b`>F44-~GM^eGmH{ z^*!!;(pP`S_pa|_-{-!6`@ZmlezYIsr}2yOi}CB>*T*l#FU>F8FW0ZYugGtZUyWa_ z-w40aetN%2e((5A_nYB2$8VM2Ccn@9&iI}4yXbe>pYpf&Z|fiHpXEP*oE)FyKi_|W z|04e-{!9Ir1$YDm2E+&S4yXti8!$g$LBO(ruqv=7aCqR@KpZ$Fa9ZGuz*&Jy z0#^n$1~vt*3H&5*bKus%9f6+)o(w!6cr);B;Qhd#1Ah&C9QZWwdEh^RFN1_2+aRx? zz@Rok?SeW4MF#0(f;t6t4T=rQ3Mvk&45|(q9#kJRCTLvHgdly;vY-P&XM?^8`o6=i z4tqNs?QpKc)ebj1{2ELJqhKbO4Hkkef~|sWgB^mMgWCrO2Zsem2FC<<4(=A*JvcGA zS8(s(vfzoqGlLt0F9zQYp+nq5LPENR^a)7~$q2~~$qOkADba@v4jCFUETk@EWXPD1 z@gWmK)`eUNwF>PNIwEvs=qI5&LwARM7J4A`aOkPf)1hZWFN9tWy&C#s=)KUNLVpeO z3hNLS5*8K~88#$rblBLi@nQO~?O}()j)WZx`y%W`I2SI4Ys0O>?ZO?x!^69T$A-s; zCx#b>4-Fp`J~n)O_=Ir196mXGZg^Apr{R0TkA$BIzYu;i{C)(CU?aRDq9YO`dPVe! zNR7yd$cm_m7#%S#Vq%0Gu`ptB#0L>eBbG-rL~M*W7;!k_Si~0*XCp2~T#2|7aWCTM zhzAjmBL0Z@C*oBkjHDwSBV8ihBHbgsB7GwZBL_wfjvN{}EV3?gMC3eu zMt&N(C-Sq%eUS$vk3@bQc|P)HREMb0sEDZOs7_H`qGF@sqk2RoMI}e2MP)|iMCC^n zMfHs;i>ink7&SO*Xw7yn^y%RM(YG%}XQS+h}L@kQ?AZl6E%BbI> zevkSy>RHs^Q7@xGG##yu=Ay-Dy*Ao9+Ai8L+9ldO+AG>OIv~1Dbo=O#=BM&8JBgjNoyK*V-f2dsS)Jx|cF=eB z?d;z)1#@>(pIri7s zhjEp0BjZNLjg6ZScQ)>N+|9V}qLj)^l87bPx9T$;GNhiwn99zH$% zdIa{^+2cr$V?B=dIN39_XSbelJ>z@!=y|s1^`19-e&6#>ug<-adiCj*(ks2!o?gd$ zo#=I{*Xg8;q`pc0^hy1bbV)xXJxcl`>CdERz4g6k^?tAS+}?&hsE@XfRUex^_I-}@ z`MS@!J{S62PEJWKOs-6>O0G$+O&*avI(c03#N^q@bCTyJFGyaLyd-&P^77=B$;Xm^ zO|ediN-0U1lCmmgL(0aKy(tG%4yPPTIhpch%9)h2DK}GYr#wt~p7KwM{#7bWRi#R) zmZ{dMwy6%OPN`9;C8;=dW$H(%8&Wr=Zb{vfdL;Gp)Dx*+rk+VXn|eO=V(Ry)cT?}D z{*wAA^^episn62XX1hV+H$P3ddXx2Nw*KbU?b z{qyt_>F3ffre8_FmVQ0`X8MZ^?~I-q12SqdYBNS;jLMKR-p!bmF(+ew#=?w68A~#j zW;A82$=H^$D`QW_zKp{eM>CFRoXEJ6aV_Is#-ohK8Ba6*%6O5ljWZkl+`Y)LsoKDZPxo)JF@m?9m+bI^?BBrtSed9vaV;{%K9Pe z$ELbheLb+%o$gFf3oJ19FUyGM3Xc5-%Fc4l@?c7AqI_TcQQ z?CR{{*>%|?vPWf)%^siKkbNTiw;b!7n4Eq&`kYxg^KuM1@8>MdS(dXhr!i+s&i0%` zIVW?z%K19ye9onu8#&+S{E+iw&i$O9b2Yi`b2D>?=Z?*tkSpg-%AJ|JAa_yj2f52~ zSLW&)bDMJ4<)e%gGy)w>YmMuPJYB-bZ;`^Y-TL&pViRB=1<>@w^jxm-4RVeV2DL?@r#`yr1%Z z$@@F+Wj>#8lW(8zl<%7Fksp}fHorrDXnsU~RDQNTe{BBp{C)YK=by;`GXHe`<@}rZ z-{;@SznlM4{xA6t@}Cya1#AIdAQe~_*cLbxI28mIL>43#^eX66kXn#YkX?{hP*_k| zP*qS}Fub6yU_`;_f^h{C3K|Pe7CbDpDePESRwx(FE}UPupm0&)hlR@v8wytyZY|tV zc)0LX;psyC*}@BjmkVze-Y&dTc(?GU!e5Hmq7Fq_MYToaiY6A}qRBgee5d$v z@zWBzL@d#kSeMw9IF@*o_?GyW1eUZdXJ_tRNw!vhCBaj;?UXvuBfX%1!XXJxImf{Xa6+62hvp0UO{1B0v>T4eS7R0=oeQH~<_1jskVS zN#FrE2%HYC0M~>0APeMxA`k&FPz`E99jFJbAPEvaFa$=x82BBy75pCD0W#nL@HBV{ zybN9g8^POP3)lv>gTI4+fF0boxpTOixP{zeu9aKLE$4cpYvHx=+Ie040sNu-5&Y5oar}4rQ}|i@ zsr--lv-mmu)!nH}gujn}jDLcEntztxz`w{Kxzk{7yk1!2rP^L7HHg zV1!__V5}fhkS&-eSR_~?AeIVp1uF#W1^EJ&01)s50)a_TEjTM^6LbhV1+N8N!c<|J zFkLuQI9xbVI9iw?oF<$l%n{BNE)XshE)p<`P!4v9LfW7b=A+At5vhi-i^;DJ&Ci z6aFfE2Bkw|pz+XqPzIC*&4O~ExzK!Q0kjbM8u|uWLqO}GO%MwLATESJ1Z0O?kO%TZ z6cmACP$je*`Zu%}s)ZP6KlBT97&;2Ih|)zLi}FPV(KbVM^A=xRZkuZ||l3yf;B}XN9;J$Dc zybN9q=fNA`e3%Cpz;YOYF<1@ba3Nd*+h7OmhW&654#QFS2Y45}A3g=2h3nyqa07f5 zz5%zut?*+4egZ#(pTjTU&VqLemJ~<|Tm>}+Hwsz`o)vTybQZiWcq8pA9UvVf9V|_k z4wX)q=1H~Epfn-yRspY(wAp!BfxsPwq>qV$UNnzT{cB)unXmbOScrLSat zWkX~`Wg}#xW#eR%Wm9CCvJYj`WFN_v%TQTBM*J*0C_5rME;}JRFS{nYA-gHNEo+k9 zlRcHakafyl%X`RE9QlP{7lkuR0!%2&u&$)$3SyheUm zep`N5{y_dv{#5=--X;HAk)r6WNLBPxq$}Q0OjJx(Oi^SjrYUA9W+@gamMB&$HYwPI z0#xu7kV2tA6)J^BQK;CWpcDrc_mE!5AS4ZW8ySX-N8U&Nfn*_5k?F_`9wJ0gWD8P+m=Fs>B5uTs_>mwIMxqFV+)?&XPEuworz>YFXDb&dzf>+$ zeyv=oT&-NIT&LtI36WBwlq$P{Q>8|!Rg%hbWl)(=ey7}~+^+ml`Li;q+^0OCJfu9L zyp5)!ndnmV8+0wY9^Hs?Q5cn>2#TQ^REz3R61AgFv;qyF6dFNk^hcCIkD_(xDfBE_ zk6uM@pf}Om=w0+amV!;eaxn>pVrl}@Vmi!>*)bPZf%&iiMqyjA9oUc9zp%Yn4aQ*m zu`}2?>;`rpdx*7S?buW771o9Qt?H@jtx8o*R4r8%sLEAdRX`O|MO0O)ovMGS_NabR z{j9209ao)JomJJVep6jmT~pmqwW>PRebochZ>fiMV7(dYXEMdX_pz zJx4uX{izyMm#TNEFR5Q?CTJFFzSexBS)*B}*`#4<01a1zXfTaYQ>L+NTpEwYuZd|Y zHC38w%?{0vn$w!6_;7p{{wcl?UxY8lm*ea3jreAqgL82{F2qH+1V?cdZo*6OQrw2S z3EYGG@gTkp-;USdhw!6#9exTwi#Om`@f-Lpya~Uj?Wz4h`;}I#RccjQTwACu*4ngA zty}BW`n5rANc*j}O1no}qfKh}YY%IWYU{KowO6#)wGXvVw9m91+D`4?g(-!73i}lf zC>&Whx^QgaJB7AFsxVv_EhOT)_jNOMvvnWq=IN?*dvphNM|8(^Cv|6Z=X4izw{%Uq z`?`m^R$aU9sqT+06SpkivSrKmE!XtD^yBrJ`fUAl{Y-t1evUp@zgE9dzggdX-qy?X zDm||64)^sIJ*h9#+x1R;RKHz+K;NWq)pzRuCQ^t#L_Z>pNGFJ)#0X*(F@eY-77@--G|BuAc8EEStOW#>d@g;~(9CVRuE^(8tivFu*X|z%x`B_8CqZ&KQ0*oHtxD z5DkV~hI@u)!y`kR;ZMUGV^3pmV}IiyW12DD_^xq=G0(^~LPm*EYE&9AqsFK;nv4Ns z-1x0=tFhXcH10PZG#)V?H+^MVV**S9lgI>{6eiT9HsL0_soJ#H^s}kPlr+_uE|`8Z zT`^rZ-89`XwV9rno|!sKorLMNsjE1`t-M_XrG zS6Vk%H(A+Mz$&#CTJ=_gwb*L4mRfCA${Ml8tO@J4)+%eYb-VSv^>N9tl6fT?ONf$^ zlClzeiL)eFQdv?}@}T4i*^}%?rjujHvE+C%lguWklQYR2at^tf1W6fLM4CtoNs{HH zgCO0cmkf~AD|)%rOl;} z%2t)J$~a|U8NcjO*`2bxW%tV-mM<;OD_>u}v3zrReR*T~gYuU0w(=+C&&pqyzp?eS z^|Gbf`q?Jhmf60&md&nNO$Lx%~$^N@zlw*P;%Q3_8nd6_1uN=!As~l?_ zn;jen*THu{4za`R*x^VznjEc;4rhvUpmVS@-8sxT()pfqqVs*iImMaf%y#BDKXc|f z*E-ib^PMaw;1oLxoN_1P#GGoU+ga8&NU87tRT$5ZMxH4VYt{m4~*C(z8 zuFqYIT)D117uyB9Fqg(v=+e6ku2PrH<#f4SUYFms+jZ5|>`rr!a%Z?R-5}mQMcOtS4IDdffa9645{!{R91Xfv9;oR&j+4ao*d5{ z&wLN#IpI0)x#YR*x#nr~Jn%g9w0hb-Pd$Hl)4UVCOTD01=Ow-6UWeE1^>}^W-QHik zXT0aU7reiDuXwL}Z+ct3?cS%}=iZlu_m%fA?;Br#-*DeFU!G6yGx^GWl&{iP<*W8> z_wDr^@g4OY^VRw4eT}{cz7}7b?}_i3@3pVX-^1U_pX%@DpX8t8XZh9sV!zd2>bLnF zewY6Tf6`y)KjlB`ulHZ{H~6pmANX7RZT=_zXZ{ZVOaGsN-hm;3%mA?}APMLL*1*34 z$-pmx!+~Rgy1<1%W8hJsHP9Al54;Ta4!#u}5*!*F5gZ-N2u==831$VS2B!yegPfox zNC&qCw+DX=?g}!&6T#ELUxVj^7lXeAp9bGh1F6AOIyHKdCj8l%TxSPUj@ef3^jzVhOUPiLw|--!$ZR(!lT3E!taJN!jr=@!n4D3 z!t=um!k>p1g%^ichBt*(;Yj%B@Tu^naAWv(n7A9hAO1bu6@C-`JJK^UATlyCCNe(q zUSwiqa%4tiRwO4fH?loa6RC@wikywqM=nMhB3C0fBCV13$kWL4$jiv9NLRE+G$lGN zIwd+kx-_~eDvj!*=BOoF5_LsAQGYZT-4(5mHb!qoZ$}4USEY&5Nyw31dYuTkK@)T&y8>C)OV8h;_zZ$KJ&I zbbmh%j1P_vi7$$?;)FV06fcY0BkIbMloZU z@yvTn29w21Wu`MTnEA{~W;K(?Y+yDqYzAcb48%y70!GGY7@R3&Y>b-;{BM10Y>$+b Q|Ms}jKK$?g|H)AQ0RTP&r~m)} delta 17053 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 ZKm?+Zu_5mY@sE;(KhY?||L#v@`hWggJ#PR2 diff --git a/Exemple/OpenSourceControllerDemo/AppDelegate.swift b/Exemple/OpenSourceControllerDemo/AppDelegate.swift index 118fa3a..2ce14a8 100644 --- a/Exemple/OpenSourceControllerDemo/AppDelegate.swift +++ b/Exemple/OpenSourceControllerDemo/AppDelegate.swift @@ -13,7 +13,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true @@ -40,7 +39,5 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } - - } diff --git a/Exemple/OpenSourceControllerDemo/Base.lproj/Main.storyboard b/Exemple/OpenSourceControllerDemo/Base.lproj/Main.storyboard index 10a8afa..4a520f1 100644 --- a/Exemple/OpenSourceControllerDemo/Base.lproj/Main.storyboard +++ b/Exemple/OpenSourceControllerDemo/Base.lproj/Main.storyboard @@ -1,12 +1,11 @@ - + - - + @@ -23,7 +22,7 @@