From 1c38ff4d5c600be43b6a25c77052ca7a58758705 Mon Sep 17 00:00:00 2001 From: Ryan Nystrom Date: Sat, 7 Oct 2017 14:46:10 +0100 Subject: [PATCH] swift 4 migration --- .../IssueAssigneesSectionController.swift | 6 +- .../Details/IssueCommentDetailCell.swift | 3 + .../Images/IssueCommentImageCell.swift | 1 + .../IssueCommentSectionController.swift | 6 +- .../Markdown/CommentModelsFromMarkdown.swift | 32 +- .../Markdown/MMElement+Attributes.swift | 52 +- .../Markdown/MMElement+CodeBlock.swift | 6 +- .../Comments/Markdown/MMElement+Table.swift | 16 +- .../Comments/Markdown/MarkdownAttribute.swift | 10 +- .../Comments/Markdown/String+NSRange.swift | 17 +- .../Reactions/IssueReactionCell.swift | 2 + .../UIMenuController+Reactions.swift | 1 + Classes/Issues/Commit/IssueCommitCell.swift | 3 +- .../IssueDiffHunkSectionController.swift | 6 +- .../Files/GithubClient+PullRequestFiles.swift | 6 +- .../IssueFileContentViewController.swift | 1 + .../Issues/Files/IssueFilesTableCell.swift | 8 +- .../Files/IssueFilesViewController.swift | 1 + Classes/Issues/IssueViewModels.swift | 4 +- Classes/Issues/IssuesViewController.swift | 1 + Classes/Issues/Labeled/IssueLabeledCell.swift | 10 +- .../Labels/IssueLabelsSectionController.swift | 27 +- .../Issues/Milestone/IssueMilestoneCell.swift | 8 +- .../IssueMilestoneEventCell.swift | 9 +- .../IssuePreviewSectionController.swift | 5 +- .../Referenced/IssueReferencedCell.swift | 10 +- .../IssueReferencedCommitCell.swift | 10 +- Classes/Issues/Renamed/IssueRenamedCell.swift | 9 +- .../Issues/Renamed/IssueRenamedString.swift | 8 +- Classes/Issues/Request/IssueRequestCell.swift | 10 +- .../Review/IssueReviewDetailsCell.swift | 7 +- .../Review/IssueReviewSectionController.swift | 9 +- .../StatusEvent/IssueStatusEventCell.swift | 6 +- Classes/Labels/LabelsViewController.swift | 1 + .../NewIssueTableViewController.swift | 10 +- Classes/Notifications/NotificationCell.swift | 6 +- .../Notifications/NotificationClient.swift | 7 +- .../Notifications/NotificationViewModel.swift | 4 +- Classes/Repository/RepositoryClient.swift | 4 +- .../RepositoryReadmeSectionController.swift | 5 +- .../Repository/RepositoryViewController.swift | 1 + Classes/Search/SearchEmptyView.swift | 1 + Classes/Search/SearchRecentHeaderCell.swift | 1 + Classes/Search/SearchRepoResultCell.swift | 10 +- Classes/Settings/SettingsViewController.swift | 1 + Classes/Systems/GithubClient+Paging.swift | 4 +- .../Systems/NSAttributedStringSizing.swift | 2 +- Classes/Systems/Rating/RatingCell.swift | 1 + Classes/Views/AttributedStringView.swift | 1 + Classes/Views/DiffString.swift | 8 +- Classes/Views/ShowMoreDetailsLabel.swift | 6 +- Classes/Views/Styles.swift | 2 +- Freetime.xcodeproj/project.pbxproj | 537 +++++++++--------- Pods/Pods.xcodeproj/project.pbxproj | 209 ++++--- Resources/Info.plist | 2 +- 55 files changed, 617 insertions(+), 516 deletions(-) diff --git a/Classes/Issues/Assignees/IssueAssigneesSectionController.swift b/Classes/Issues/Assignees/IssueAssigneesSectionController.swift index 6e06eb71..d258c8a9 100644 --- a/Classes/Issues/Assignees/IssueAssigneesSectionController.swift +++ b/Classes/Issues/Assignees/IssueAssigneesSectionController.swift @@ -66,7 +66,7 @@ ListBindingSectionControllerSelectionDelegate { _ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = collectionContext else { fatalError("Collection context must be set") } let cellClass: AnyClass @@ -75,7 +75,9 @@ ListBindingSectionControllerSelectionDelegate { case is IssueAssigneeViewModel: cellClass = IssueAssigneeUserCell.self default: fatalError("Unsupported model \(viewModel)") } - return context.dequeueReusableCell(of: cellClass, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } + return cell } // MARK: ListBindingSectionControllerSelectionDelegate diff --git a/Classes/Issues/Comments/Details/IssueCommentDetailCell.swift b/Classes/Issues/Comments/Details/IssueCommentDetailCell.swift index d06c99a6..271ec20d 100644 --- a/Classes/Issues/Comments/Details/IssueCommentDetailCell.swift +++ b/Classes/Issues/Comments/Details/IssueCommentDetailCell.swift @@ -115,14 +115,17 @@ final class IssueCommentDetailCell: UICollectionViewCell, ListBindable { // MARK: Private API + @objc func onMore(sender: UIButton) { delegate?.didTapMore(cell: self, sender: sender) } + @objc func onTapAvatar() { delegate?.didTapProfile(cell: self) } + @objc func onTapLoginLabel() { delegate?.didTapProfile(cell: self) } diff --git a/Classes/Issues/Comments/Images/IssueCommentImageCell.swift b/Classes/Issues/Comments/Images/IssueCommentImageCell.swift index 7aec7391..d055b100 100644 --- a/Classes/Issues/Comments/Images/IssueCommentImageCell.swift +++ b/Classes/Issues/Comments/Images/IssueCommentImageCell.swift @@ -67,6 +67,7 @@ UIGestureRecognizerDelegate { // MARK: Private API + @objc func onTap(recognizer: UITapGestureRecognizer) { // action will only trigger if shouldBegin returns true guard let image = imageView.image else { return } diff --git a/Classes/Issues/Comments/IssueCommentSectionController.swift b/Classes/Issues/Comments/IssueCommentSectionController.swift index fb55ae94..5fdfdc14 100644 --- a/Classes/Issues/Comments/IssueCommentSectionController.swift +++ b/Classes/Issues/Comments/IssueCommentSectionController.swift @@ -171,7 +171,7 @@ AttributedStringViewIssueDelegate { _ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = self.collectionContext else { fatalError("Collection context must be set") } let cellClass: AnyClass @@ -180,7 +180,9 @@ AttributedStringViewIssueDelegate { case is IssueCommentReactionViewModel: cellClass = IssueCommentReactionCell.self default: cellClass = CellTypeForComment(viewModel: viewModel) } - let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) + + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } // extra config outside of bind API. applies to multiple cell types. if let cell = cell as? CollapsibleCell { diff --git a/Classes/Issues/Comments/Markdown/CommentModelsFromMarkdown.swift b/Classes/Issues/Comments/Markdown/CommentModelsFromMarkdown.swift index 78d34ece..f2dd6f1e 100644 --- a/Classes/Issues/Comments/Markdown/CommentModelsFromMarkdown.swift +++ b/Classes/Issues/Comments/Markdown/CommentModelsFromMarkdown.swift @@ -41,9 +41,9 @@ func createCommentAST(markdown: String) -> MMDocument? { func emptyDescriptionModel(width: CGFloat) -> ListDiffable { let attributes = [ - NSFontAttributeName: Styles.Fonts.body.addingTraits(traits: .traitItalic), - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, - NSBackgroundColorAttributeName: UIColor.white + .font: Styles.Fonts.body.addingTraits(traits: .traitItalic), + .foregroundColor: Styles.Colors.Gray.medium.color, + NSAttributedStringKey.backgroundColor: UIColor.white ] let text = NSAttributedString( string: NSLocalizedString("No description provided.", comment: ""), @@ -69,15 +69,15 @@ func CreateCommentModels( var results = [ListDiffable]() - let baseAttributes: [String: Any] = [ - NSFontAttributeName: Styles.Fonts.body, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSParagraphStyleAttributeName: { + let baseAttributes: [NSAttributedStringKey: Any] = [ + .font: Styles.Fonts.body, + .foregroundColor: Styles.Colors.Gray.dark.color, + .paragraphStyle: { let para = NSMutableParagraphStyle() para.paragraphSpacingBefore = 12; return para }(), - NSBackgroundColorAttributeName: UIColor.white, + NSAttributedStringKey.backgroundColor: UIColor.white, ] let seedString = NSMutableAttributedString() @@ -199,7 +199,7 @@ func travelAST( markdown: String, element: MMElement, attributedString: NSMutableAttributedString, - attributeStack: [String: Any], + attributeStack: [NSAttributedStringKey: Any], width: CGFloat, listLevel: Int, quoteLevel: Int, @@ -308,7 +308,7 @@ func updateUsernames( let matches = usernameRegex.matches(in: string, options: [], range: string.nsrange) for match in matches { - let range = match.rangeAt(0) + let range = match.range(at: 0) guard let substring = string.substring(with: range) else { continue } var attributes = attributedString.attributes(at: range.location, effectiveRange: nil) @@ -316,8 +316,8 @@ func updateUsernames( // manually disable username highlighting for some text (namely code) guard attributes[MarkdownAttribute.usernameDisabled] == nil else { continue } - let font = attributes[NSFontAttributeName] as? UIFont ?? Styles.Fonts.body - attributes[NSFontAttributeName] = font.addingTraits(traits: .traitBold) + let font = attributes[.font] as? UIFont ?? Styles.Fonts.body + attributes[.font] = font.addingTraits(traits: .traitBold) attributes[MarkdownAttribute.username] = substring.replacingOccurrences(of: "@", with: "") let usernameAttributedString = NSAttributedString(string: substring, attributes: attributes) @@ -338,13 +338,13 @@ func updateIssueShorthand( let matches = issueShorthandRegex.matches(in: string, options: [], range: string.nsrange) for match in matches { - let ownerRange = match.rangeAt(3) - let repoRange = match.rangeAt(4) - let numberRange = match.rangeAt(5) + let ownerRange = match.range(at: 3) + let repoRange = match.range(at: 4) + let numberRange = match.range(at: 5) guard let numberSubstring = string.substring(with: numberRange) else { continue } var attributes = attributedString.attributes(at: match.range.location, effectiveRange: nil) - attributes[NSForegroundColorAttributeName] = Styles.Colors.Blue.medium.color + attributes[.foregroundColor] = Styles.Colors.Blue.medium.color attributes[MarkdownAttribute.issue] = IssueDetailsModel( owner: string.substring(with: ownerRange) ?? options.owner, diff --git a/Classes/Issues/Comments/Markdown/MMElement+Attributes.swift b/Classes/Issues/Comments/Markdown/MMElement+Attributes.swift index 3972305e..01c3b14b 100644 --- a/Classes/Issues/Comments/Markdown/MMElement+Attributes.swift +++ b/Classes/Issues/Comments/Markdown/MMElement+Attributes.swift @@ -9,76 +9,82 @@ import UIKit import MMMarkdown -func PushAttributes(element: MMElement, current: [String: Any], listLevel: Int) -> [String: Any] { - let currentFont: UIFont = current[NSFontAttributeName] as? UIFont ?? Styles.Fonts.body +func PushAttributes( + element: MMElement, + current: [NSAttributedStringKey: Any], + listLevel: Int + ) -> [NSAttributedStringKey: Any] { + let currentFont: UIFont = current[.font] as? UIFont ?? Styles.Fonts.body + // TODO: cleanup let paragraphStyleCopy: NSMutableParagraphStyle - if let para = (current[NSParagraphStyleAttributeName] as? NSParagraphStyle)?.mutableCopy() as? NSMutableParagraphStyle { + if let para = (current[.paragraphStyle] as? NSParagraphStyle)?.mutableCopy() as? NSMutableParagraphStyle { paragraphStyleCopy = para } else { paragraphStyleCopy = NSMutableParagraphStyle() } - var newAttributes: [String: Any] + var newAttributes: [NSAttributedStringKey: Any] switch element.type { case .strikethrough: newAttributes = [ - NSStrikethroughStyleAttributeName: NSUnderlineStyle.styleSingle.rawValue, - NSStrikethroughColorAttributeName: current[NSForegroundColorAttributeName] ?? Styles.Colors.Gray.dark.color, + .strikethroughStyle: NSUnderlineStyle.styleSingle.rawValue, + .strikethroughColor: current[.foregroundColor] + ?? Styles.Colors.Gray.dark.color, ] case .strong: newAttributes = [ - NSFontAttributeName: currentFont.addingTraits(traits: .traitBold), + .font: currentFont.addingTraits(traits: .traitBold), ] case .em: newAttributes = [ - NSFontAttributeName: currentFont.addingTraits(traits: .traitItalic), + .font: currentFont.addingTraits(traits: .traitItalic), ] case .codeSpan: newAttributes = [ - NSFontAttributeName: Styles.Fonts.code, - NSBackgroundColorAttributeName: Styles.Colors.Gray.lighter.color, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, + .font: Styles.Fonts.code, + NSAttributedStringKey.backgroundColor: Styles.Colors.Gray.lighter.color, + .foregroundColor: Styles.Colors.Gray.dark.color, MarkdownAttribute.usernameDisabled: true, ] case .link: newAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Blue.medium.color, + .foregroundColor: Styles.Colors.Blue.medium.color, MarkdownAttribute.url: element.href ?? "", ] case .header: switch element.level { case 1: newAttributes = [ - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h1), + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h1), ] case 2: newAttributes = [ - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h2), + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h2), ] case 3: newAttributes = [ - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h3), + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h3), ] case 4: newAttributes = [ - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h4), + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h4), ] case 5: newAttributes = [ - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h5), + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h5), ] default: newAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, - NSFontAttributeName: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h6), + .foregroundColor: Styles.Colors.Gray.medium.color, + .font: UIFont.boldSystemFont(ofSize: Styles.Sizes.Text.h6), ] } case .bulletedList, .numberedList: let indent: CGFloat = (CGFloat(listLevel) - 1) * 18 paragraphStyleCopy.firstLineHeadIndent = indent paragraphStyleCopy.firstLineHeadIndent = indent - newAttributes = [NSParagraphStyleAttributeName: paragraphStyleCopy] + newAttributes = [.paragraphStyle: paragraphStyleCopy] case .listItem: // if after the first element, tighten list spacing if element.numberedListPosition > 1 || listLevel > 1 { paragraphStyleCopy.paragraphSpacingBefore = 2 } - newAttributes = [NSParagraphStyleAttributeName: paragraphStyleCopy] + newAttributes = [.paragraphStyle: paragraphStyleCopy] case .blockquote: newAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, + .foregroundColor: Styles.Colors.Gray.medium.color, ] case .mailTo: newAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Blue.medium.color, + .foregroundColor: Styles.Colors.Blue.medium.color, MarkdownAttribute.email: element.href ?? "" ] default: newAttributes = [:] diff --git a/Classes/Issues/Comments/Markdown/MMElement+CodeBlock.swift b/Classes/Issues/Comments/Markdown/MMElement+CodeBlock.swift index 6eb2ce47..ccc689dd 100644 --- a/Classes/Issues/Comments/Markdown/MMElement+CodeBlock.swift +++ b/Classes/Issues/Comments/Markdown/MMElement+CodeBlock.swift @@ -21,9 +21,9 @@ func CreateCodeBlock(element: MMElement, markdown: String) -> IssueCommentCodeBl inset.left += IssueCommentCodeBlockCell.scrollViewInset.left inset.right += IssueCommentCodeBlockCell.scrollViewInset.right - let attributes: [String: Any] = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.code + let attributes: [NSAttributedStringKey: Any] = [ + .foregroundColor: Styles.Colors.Gray.dark.color, + .font: Styles.Fonts.code ] let stringSizing = NSAttributedStringSizing( diff --git a/Classes/Issues/Comments/Markdown/MMElement+Table.swift b/Classes/Issues/Comments/Markdown/MMElement+Table.swift index c8d7bbd6..79f624af 100644 --- a/Classes/Issues/Comments/Markdown/MMElement+Table.swift +++ b/Classes/Issues/Comments/Markdown/MMElement+Table.swift @@ -20,7 +20,7 @@ private class TableBucket { private func buildAttributedString( markdown: String, element: MMElement, - attributes: [String: Any], + attributes: [NSAttributedStringKey: Any], attributedString: NSMutableAttributedString ) { switch element.type { @@ -48,7 +48,7 @@ private func buildAttributedString( private func rowModels( markdown: String, element: MMElement, - attributes: [String: Any], + attributes: [NSAttributedStringKey: Any], fill: Bool ) -> [NSAttributedStringSizing] { @@ -84,9 +84,9 @@ func CreateTable(element: MMElement, markdown: String) -> IssueCommentTableModel // track the tallest row while building each column var rowHeights = [CGFloat]() - var baseAttributes: [String: Any] = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSBackgroundColorAttributeName: UIColor.white, + var baseAttributes: [NSAttributedStringKey: Any] = [ + .foregroundColor: Styles.Colors.Gray.dark.color, + .backgroundColor: UIColor.white, ] var rowCount = 0 @@ -94,16 +94,16 @@ func CreateTable(element: MMElement, markdown: String) -> IssueCommentTableModel for row in element.children { switch row.type { case .tableHeader: - baseAttributes[NSFontAttributeName] = Styles.Fonts.bodyBold + baseAttributes[NSAttributedStringKey.font] = Styles.Fonts.bodyBold case .tableRow: rowCount += 1 - baseAttributes[NSFontAttributeName] = Styles.Fonts.body + baseAttributes[NSAttributedStringKey.font] = Styles.Fonts.body default: continue } let fill = rowCount > 0 && rowCount % 2 == 0 - baseAttributes[NSBackgroundColorAttributeName] = fill ? Styles.Colors.Gray.lighter.color : .white + baseAttributes[NSAttributedStringKey.backgroundColor] = fill ? Styles.Colors.Gray.lighter.color : .white let models = rowModels(markdown: markdown, element: row, attributes: baseAttributes, fill: fill) diff --git a/Classes/Issues/Comments/Markdown/MarkdownAttribute.swift b/Classes/Issues/Comments/Markdown/MarkdownAttribute.swift index b5f9d41c..991bc4fa 100644 --- a/Classes/Issues/Comments/Markdown/MarkdownAttribute.swift +++ b/Classes/Issues/Comments/Markdown/MarkdownAttribute.swift @@ -9,9 +9,9 @@ import Foundation enum MarkdownAttribute { - static let url = "com.freetime.Markdown.url-name" - static let email = "com.freetime.Markdown.email-name" - static let username = "com.freetime.Markdown.username-name" - static let usernameDisabled = "com.freetime.Markdown.username-disabled-name" - static let issue = "com.freetime.Markdown.issue" + static let url = NSAttributedStringKey(rawValue: "com.freetime.Markdown.url-name") + static let email = NSAttributedStringKey(rawValue: "com.freetime.Markdown.email-name") + static let username = NSAttributedStringKey(rawValue: "com.freetime.Markdown.username-name") + static let usernameDisabled = NSAttributedStringKey(rawValue: "com.freetime.Markdown.username-disabled-name") + static let issue = NSAttributedStringKey(rawValue: "com.freetime.Markdown.issue") } diff --git a/Classes/Issues/Comments/Markdown/String+NSRange.swift b/Classes/Issues/Comments/Markdown/String+NSRange.swift index b9ef05e2..15e781a1 100644 --- a/Classes/Issues/Comments/Markdown/String+NSRange.swift +++ b/Classes/Issues/Comments/Markdown/String+NSRange.swift @@ -18,24 +18,13 @@ extension String { /// Returns a substring with the given `NSRange`, /// or `nil` if the range can't be converted. func substring(with nsrange: NSRange) -> String? { - guard let range = nsrange.toRange() - else { return nil } - let start = UTF16Index(range.lowerBound) - let end = UTF16Index(range.upperBound) - return String(utf16[start.. Range? { - guard let range = nsrange.toRange() else { return nil } - let utf16Start = UTF16Index(range.lowerBound) - let utf16End = UTF16Index(range.upperBound) - - guard let start = Index(utf16Start, within: self), - let end = Index(utf16End, within: self) - else { return nil } - - return start.. 0 else { return } @@ -128,6 +129,7 @@ final class IssueReactionCell: UICollectionViewCell { menu.setMenuVisible(true, animated: true) } + @objc func empty() {} // MARK: Accessibility diff --git a/Classes/Issues/Comments/Reactions/UIMenuController+Reactions.swift b/Classes/Issues/Comments/Reactions/UIMenuController+Reactions.swift index ccae8a7f..1469cdd3 100644 --- a/Classes/Issues/Comments/Reactions/UIMenuController+Reactions.swift +++ b/Classes/Issues/Comments/Reactions/UIMenuController+Reactions.swift @@ -28,6 +28,7 @@ extension UIMenuController { setMenuVisible(true, animated: true) } + @objc func _empty() {} } diff --git a/Classes/Issues/Commit/IssueCommitCell.swift b/Classes/Issues/Commit/IssueCommitCell.swift index c692fc87..9debb372 100644 --- a/Classes/Issues/Commit/IssueCommitCell.swift +++ b/Classes/Issues/Commit/IssueCommitCell.swift @@ -64,7 +64,7 @@ final class IssueCommitCell: UICollectionViewCell { // always collapse and truncate messageLabel.lineBreakMode = .byTruncatingMiddle - messageLabel.setContentCompressionResistancePriority(UILayoutPriorityDefaultLow, for: .horizontal) + messageLabel.setContentCompressionResistancePriority(UILayoutPriority.defaultLow, for: .horizontal) } required init?(coder aDecoder: NSCoder) { @@ -80,6 +80,7 @@ final class IssueCommitCell: UICollectionViewCell { // MARK: Private API + @objc func onAvatar() { delegate?.didTapAvatar(cell: self) } diff --git a/Classes/Issues/DiffHunk/IssueDiffHunkSectionController.swift b/Classes/Issues/DiffHunk/IssueDiffHunkSectionController.swift index a1d0c7be..0bda70bf 100644 --- a/Classes/Issues/DiffHunk/IssueDiffHunkSectionController.swift +++ b/Classes/Issues/DiffHunk/IssueDiffHunkSectionController.swift @@ -50,7 +50,7 @@ final class IssueDiffHunkSectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = collectionContext else { fatalError("Collection context must be set") } let cellClass: AnyClass @@ -59,7 +59,9 @@ final class IssueDiffHunkSectionController: ListBindingSectionController 0 { - attributes[NSForegroundColorAttributeName] = Styles.Colors.Green.medium.color + attributes[.foregroundColor] = Styles.Colors.Green.medium.color changeString.append(NSAttributedString(string: "+\(additions) ", attributes: attributes)) } if deletions > 0 { - attributes[NSForegroundColorAttributeName] = Styles.Colors.Red.medium.color + attributes[.foregroundColor] = Styles.Colors.Red.medium.color changeString.append(NSAttributedString(string: "-\(deletions)", attributes: attributes)) } diff --git a/Classes/Issues/Files/IssueFilesViewController.swift b/Classes/Issues/Files/IssueFilesViewController.swift index 9cab9fe4..1096ed8e 100644 --- a/Classes/Issues/Files/IssueFilesViewController.swift +++ b/Classes/Issues/Files/IssueFilesViewController.swift @@ -36,6 +36,7 @@ final class IssueFilesViewController: UITableViewController { // MARK: Private API + @objc func onRefresh() { fetch() } diff --git a/Classes/Issues/IssueViewModels.swift b/Classes/Issues/IssueViewModels.swift index 047a6e63..319355ea 100644 --- a/Classes/Issues/IssueViewModels.swift +++ b/Classes/Issues/IssueViewModels.swift @@ -13,8 +13,8 @@ func titleStringSizing(title: String, width: CGFloat) -> NSAttributedStringSizin let attributedString = NSAttributedString( string: title, attributes: [ - NSFontAttributeName: Styles.Fonts.headline, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.headline, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ]) return NSAttributedStringSizing( containerWidth: width, diff --git a/Classes/Issues/IssuesViewController.swift b/Classes/Issues/IssuesViewController.swift index e70f68fd..9413589b 100644 --- a/Classes/Issues/IssuesViewController.swift +++ b/Classes/Issues/IssuesViewController.swift @@ -259,6 +259,7 @@ IssueCommentSectionControllerDelegate { .view(repo: repoViewController) } + @objc func onMore(sender: UIBarButtonItem) { let alert = UIAlertController.configured(preferredStyle: .actionSheet) diff --git a/Classes/Issues/Labeled/IssueLabeledCell.swift b/Classes/Issues/Labeled/IssueLabeledCell.swift index 16e08034..9252d046 100644 --- a/Classes/Issues/Labeled/IssueLabeledCell.swift +++ b/Classes/Issues/Labeled/IssueLabeledCell.swift @@ -55,10 +55,12 @@ final class IssueLabeledCell: UICollectionViewCell { // MARK: Private API + @objc func onActor() { delegate?.didTapActor(cell: self) } + @objc func onLabel() { delegate?.didTapLabel(cell: self) } @@ -67,8 +69,8 @@ final class IssueLabeledCell: UICollectionViewCell { func configure(_ model: IssueLabeledModel) { let actorAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.secondaryBold + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold ] let actor = NSAttributedString(string: model.actor, attributes: actorAttributes) @@ -78,8 +80,8 @@ final class IssueLabeledCell: UICollectionViewCell { case .removed: actionString = NSLocalizedString(" removed", comment: "") } let actionAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, - NSFontAttributeName: Styles.Fonts.secondary + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color, + NSAttributedStringKey.font: Styles.Fonts.secondary ] let action = NSAttributedString(string: actionString, attributes: actionAttributes) let descriptionText = NSMutableAttributedString(attributedString: actor) diff --git a/Classes/Issues/Labels/IssueLabelsSectionController.swift b/Classes/Issues/Labels/IssueLabelsSectionController.swift index 789c9753..d39361f6 100644 --- a/Classes/Issues/Labels/IssueLabelsSectionController.swift +++ b/Classes/Issues/Labels/IssueLabelsSectionController.swift @@ -29,7 +29,10 @@ LabelsViewControllerDelegate { // MARK: ListBindingSectionControllerDataSource - func sectionController(_ sectionController: ListBindingSectionController, viewModelsFor object: Any) -> [ListDiffable] { + func sectionController( + _ sectionController: ListBindingSectionController, + viewModelsFor object: Any + ) -> [ListDiffable] { var viewModels = [ListDiffable]() // use override labels when available @@ -50,13 +53,21 @@ LabelsViewControllerDelegate { return viewModels } - func sectionController(_ sectionController: ListBindingSectionController, sizeForViewModel viewModel: Any, at index: Int) -> CGSize { + func sectionController( + _ sectionController: ListBindingSectionController, + sizeForViewModel viewModel: Any, + at index: Int + ) -> CGSize { guard let width = collectionContext?.containerSize.width else { fatalError("Collection context must be set") } return CGSize(width: width, height: Styles.Sizes.labelEventHeight) } - func sectionController(_ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int) -> UICollectionViewCell { + func sectionController( + _ sectionController: ListBindingSectionController, + cellForViewModel viewModel: Any, + at index: Int + ) -> UICollectionViewCell & ListBindable { guard let context = self.collectionContext else { fatalError("Collection context must be set") } @@ -67,12 +78,18 @@ LabelsViewControllerDelegate { default: cellClass = IssueLabelEditCell.self } - return context.dequeueReusableCell(of: cellClass, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } + return cell } // MARK: ListBindingSectionControllerSelectionDelegate - func sectionController(_ sectionController: ListBindingSectionController, didSelectItemAt index: Int, viewModel: Any) { + func sectionController( + _ sectionController: ListBindingSectionController, + didSelectItemAt index: Int, + viewModel: Any + ) { collectionContext?.deselectItem(at: index, sectionController: self, animated: true) if let cell = collectionContext?.cellForItem(at: index, sectionController: self) as? IssueLabelEditCell { diff --git a/Classes/Issues/Milestone/IssueMilestoneCell.swift b/Classes/Issues/Milestone/IssueMilestoneCell.swift index 914c20e8..24385104 100644 --- a/Classes/Issues/Milestone/IssueMilestoneCell.swift +++ b/Classes/Issues/Milestone/IssueMilestoneCell.swift @@ -32,16 +32,16 @@ final class IssueMilestoneCell: SelectableCell { func configure(title: String) { let milestoneAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.light.color, - NSFontAttributeName: Styles.Fonts.secondary + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.light.color, + NSAttributedStringKey.font: Styles.Fonts.secondary ] let titleText = NSMutableAttributedString( string: NSLocalizedString("Milestone: ", comment: ""), attributes: milestoneAttributes ) let titleAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.secondaryBold + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold ] titleText.append(NSAttributedString(string: title, attributes: titleAttributes)) titleLabel.attributedText = titleText diff --git a/Classes/Issues/MilestoneEvent/IssueMilestoneEventCell.swift b/Classes/Issues/MilestoneEvent/IssueMilestoneEventCell.swift index 5fcb252e..36b043a2 100644 --- a/Classes/Issues/MilestoneEvent/IssueMilestoneEventCell.swift +++ b/Classes/Issues/MilestoneEvent/IssueMilestoneEventCell.swift @@ -46,6 +46,7 @@ final class IssueMilestoneEventCell: UICollectionViewCell { // MARK: Private API + @objc func onActor() { delegate?.didTapActor(cell: self) } @@ -54,16 +55,16 @@ final class IssueMilestoneEventCell: UICollectionViewCell { func configure(_ model: IssueMilestoneEventModel) { let boldAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.secondaryBold + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold ] let actor = NSAttributedString(string: model.actor, attributes: boldAttributes) actorButton.setAttributedTitle(actor, for: .normal) let separatorAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, - NSFontAttributeName: Styles.Fonts.secondary + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color, + NSAttributedStringKey.font: Styles.Fonts.secondary ] let action: String diff --git a/Classes/Issues/Preview/IssuePreviewSectionController.swift b/Classes/Issues/Preview/IssuePreviewSectionController.swift index 09e121fb..52242c7a 100644 --- a/Classes/Issues/Preview/IssuePreviewSectionController.swift +++ b/Classes/Issues/Preview/IssuePreviewSectionController.swift @@ -52,11 +52,12 @@ ListBindingSectionControllerDataSource { _ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = self.collectionContext else { fatalError("Missing context") } let cellClass: AnyClass = CellTypeForComment(viewModel: viewModel) - let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } ExtraCommentCellConfigure( cell: cell, diff --git a/Classes/Issues/Referenced/IssueReferencedCell.swift b/Classes/Issues/Referenced/IssueReferencedCell.swift index 4ed57ac8..758026b0 100644 --- a/Classes/Issues/Referenced/IssueReferencedCell.swift +++ b/Classes/Issues/Referenced/IssueReferencedCell.swift @@ -53,7 +53,7 @@ final class IssueReferencedCell: UICollectionViewCell { // always collapse and truncate titleLabel.lineBreakMode = .byTruncatingMiddle - titleLabel.setContentCompressionResistancePriority(UILayoutPriorityDefaultLow, for: .horizontal) + titleLabel.setContentCompressionResistancePriority(UILayoutPriority.defaultLow, for: .horizontal) } required init?(coder aDecoder: NSCoder) { @@ -64,13 +64,13 @@ final class IssueReferencedCell: UICollectionViewCell { func configure(_ model: IssueReferencedModel) { let titleAttributes = [ - NSFontAttributeName: Styles.Fonts.secondaryBold, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, ] let title = NSMutableAttributedString(string: model.title, attributes: titleAttributes) let numberAttributes = [ - NSFontAttributeName: Styles.Fonts.secondary, - NSForegroundColorAttributeName: Styles.Colors.Gray.light.color + NSAttributedStringKey.font: Styles.Fonts.secondary, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.light.color ] title.append(NSAttributedString(string: " #\(model.number)", attributes: numberAttributes)) titleLabel.attributedText = title diff --git a/Classes/Issues/ReferencedCommit/IssueReferencedCommitCell.swift b/Classes/Issues/ReferencedCommit/IssueReferencedCommitCell.swift index 2869f738..767ded89 100644 --- a/Classes/Issues/ReferencedCommit/IssueReferencedCommitCell.swift +++ b/Classes/Issues/ReferencedCommit/IssueReferencedCommitCell.swift @@ -56,10 +56,12 @@ final class IssueReferencedCommitCell: UICollectionViewCell { // MARK: Private API + @objc func onName() { delegate?.didTapActor(cell: self) } + @objc func onHash() { delegate?.didTapHash(cell: self) } @@ -70,16 +72,16 @@ final class IssueReferencedCommitCell: UICollectionViewCell { nameButton.setTitle(model.actor, for: .normal) let referenceAttributes = [ - NSFontAttributeName: Styles.Fonts.secondary, - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, + NSAttributedStringKey.font: Styles.Fonts.secondary, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color, ] let title = NSMutableAttributedString( string: NSLocalizedString("referenced ", comment: ""), attributes: referenceAttributes ) let hashAttributes = [ - NSFontAttributeName: Styles.Fonts.code.addingTraits(traits: .traitBold), - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.code.addingTraits(traits: .traitBold), + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] title.append(NSAttributedString(string: model.hash.hashDisplay, attributes: hashAttributes)) referencedButton.setAttributedTitle(title, for: .normal) diff --git a/Classes/Issues/Renamed/IssueRenamedCell.swift b/Classes/Issues/Renamed/IssueRenamedCell.swift index ed46b0ba..0ac0804a 100644 --- a/Classes/Issues/Renamed/IssueRenamedCell.swift +++ b/Classes/Issues/Renamed/IssueRenamedCell.swift @@ -61,6 +61,7 @@ final class IssueRenamedCell: UICollectionViewCell { // MARK: Private API + @objc func onActor() { delegate?.didTapActor(cell: self) } @@ -69,13 +70,13 @@ final class IssueRenamedCell: UICollectionViewCell { func configure(_ model: IssueRenamedModel) { let actorAttributes = [ - NSFontAttributeName: Styles.Fonts.secondaryBold, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.secondaryBold, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] let actor = NSMutableAttributedString(string: model.actor, attributes: actorAttributes) let referencedAttributes = [ - NSFontAttributeName: Styles.Fonts.secondary, - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color + NSAttributedStringKey.font: Styles.Fonts.secondary, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color ] actor.append(NSAttributedString( string: NSLocalizedString(" renamed", comment: ""), diff --git a/Classes/Issues/Renamed/IssueRenamedString.swift b/Classes/Issues/Renamed/IssueRenamedString.swift index 3dd76b91..6500fcd2 100644 --- a/Classes/Issues/Renamed/IssueRenamedString.swift +++ b/Classes/Issues/Renamed/IssueRenamedString.swift @@ -10,12 +10,12 @@ import UIKit func IssueRenamedString(previous: String, current: String, width: CGFloat) -> NSAttributedStringSizing { let titleAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.secondaryBold + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold ] let dividerAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color, - NSFontAttributeName: Styles.Fonts.secondary + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color, + NSAttributedStringKey.font: Styles.Fonts.secondary ] let text = NSMutableAttributedString(string: previous, attributes: titleAttributes) text.append(NSAttributedString(string: NSLocalizedString(" to ", comment: ""), attributes: dividerAttributes)) diff --git a/Classes/Issues/Request/IssueRequestCell.swift b/Classes/Issues/Request/IssueRequestCell.swift index 67ffbf03..d5229788 100644 --- a/Classes/Issues/Request/IssueRequestCell.swift +++ b/Classes/Issues/Request/IssueRequestCell.swift @@ -54,10 +54,12 @@ final class IssueRequestCell: UICollectionViewCell { // MARK: Private API + @objc func onActor() { delegate?.didTapActor(cell: self) } + @objc func onUser() { delegate?.didTapUser(cell: self) } @@ -66,12 +68,12 @@ final class IssueRequestCell: UICollectionViewCell { func configure(_ model: IssueRequestModel) { let actorAttributes = [ - NSFontAttributeName: Styles.Fonts.secondaryBold, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.secondaryBold, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] let phraseAttributes = [ - NSFontAttributeName: Styles.Fonts.secondary, - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color + NSAttributedStringKey.font: Styles.Fonts.secondary, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color ] let phrase: String diff --git a/Classes/Issues/Review/IssueReviewDetailsCell.swift b/Classes/Issues/Review/IssueReviewDetailsCell.swift index 3a8ab742..d8a909b8 100644 --- a/Classes/Issues/Review/IssueReviewDetailsCell.swift +++ b/Classes/Issues/Review/IssueReviewDetailsCell.swift @@ -62,6 +62,7 @@ final class IssueReviewDetailsCell: UICollectionViewCell, ListBindable { // MARK: Private API + @objc func onActorTapped() { delegate?.didTapActor(cell: self) } @@ -110,12 +111,12 @@ final class IssueReviewDetailsCell: UICollectionViewCell, ListBindable { icon.image = UIImage(named: iconName)?.withRenderingMode(.alwaysTemplate) var attributes = [ - NSFontAttributeName: Styles.Fonts.title, - NSForegroundColorAttributeName: Styles.Colors.Gray.medium.color + NSAttributedStringKey.font: Styles.Fonts.title, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.medium.color ] let mActorString = NSMutableAttributedString(string: viewModel.actor, attributes: attributes) - attributes[NSFontAttributeName] = Styles.Fonts.secondary + attributes[NSAttributedStringKey.font] = Styles.Fonts.secondary mActorString.append(NSAttributedString(string: " \(action)", attributes: attributes)) actorButton.setAttributedTitle(mActorString, for: .normal) } diff --git a/Classes/Issues/Review/IssueReviewSectionController.swift b/Classes/Issues/Review/IssueReviewSectionController.swift index b4db30e6..179032f5 100644 --- a/Classes/Issues/Review/IssueReviewSectionController.swift +++ b/Classes/Issues/Review/IssueReviewSectionController.swift @@ -70,13 +70,15 @@ AttributedStringViewIssueDelegate { _ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = self.collectionContext, let viewModel = viewModel as? ListDiffable else { fatalError("Missing context") } if viewModel === tailModel { - return context.dequeueReusableCell(of: IssueReviewEmptyTailCell.self, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: IssueReviewEmptyTailCell.self, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } + return cell } let cellClass: AnyClass @@ -84,7 +86,8 @@ AttributedStringViewIssueDelegate { case is IssueReviewDetailsModel: cellClass = IssueReviewDetailsCell.self default: cellClass = CellTypeForComment(viewModel: viewModel) } - let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } ExtraCommentCellConfigure( cell: cell, diff --git a/Classes/Issues/StatusEvent/IssueStatusEventCell.swift b/Classes/Issues/StatusEvent/IssueStatusEventCell.swift index 1459fd8d..c478d780 100644 --- a/Classes/Issues/StatusEvent/IssueStatusEventCell.swift +++ b/Classes/Issues/StatusEvent/IssueStatusEventCell.swift @@ -68,10 +68,12 @@ final class IssueStatusEventCell: UICollectionViewCell { // MARK: Private API + @objc func onActor() { delegate?.didTapActor(cell: self) } + @objc func onHash() { delegate?.didTapHash(cell: self) } @@ -80,8 +82,8 @@ final class IssueStatusEventCell: UICollectionViewCell { func configure(_ model: IssueStatusEventModel) { let actorAttributes = [ - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color, - NSFontAttributeName: Styles.Fonts.secondaryBold + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color, + NSAttributedStringKey.font: Styles.Fonts.secondaryBold ] actorButton.setAttributedTitle(NSAttributedString(string: model.actor, attributes: actorAttributes), for: .normal) diff --git a/Classes/Labels/LabelsViewController.swift b/Classes/Labels/LabelsViewController.swift index a61b604d..8c264b71 100644 --- a/Classes/Labels/LabelsViewController.swift +++ b/Classes/Labels/LabelsViewController.swift @@ -34,6 +34,7 @@ final class LabelsViewController: UITableViewController { // MARK: Private API + @objc func onRefresh() { fetch() } diff --git a/Classes/New Issue/NewIssueTableViewController.swift b/Classes/New Issue/NewIssueTableViewController.swift index 91605ceb..ac22ba18 100644 --- a/Classes/New Issue/NewIssueTableViewController.swift +++ b/Classes/New Issue/NewIssueTableViewController.swift @@ -93,7 +93,7 @@ final class NewIssueTableViewController: UITableViewController, UITextFieldDeleg title: NSLocalizedString("Cancel", comment: ""), style: .plain, target: self, - action: #selector(cancel) + action: #selector(onCancel) ) // Make the return button move on to description field @@ -122,12 +122,13 @@ final class NewIssueTableViewController: UITableViewController, UITextFieldDeleg title: NSLocalizedString("Submit", comment: ""), style: .done, target: self, - action: #selector(send) + action: #selector(onSend) ) } /// Attempts to sends the current forms information to GitHub, on success will redirect the user to the new issue - func send() { + @objc + func onSend() { guard let titleText = titleText else { StatusBar.showError(message: NSLocalizedString("You must provide a title!", comment: "Invalid title when sending new issue")) return @@ -157,7 +158,8 @@ final class NewIssueTableViewController: UITableViewController, UITextFieldDeleg } /// Ensures there are no unsaved changes before dismissing the view controller. Will prompt user if unsaved changes. - func cancel() { + @objc + func onCancel() { let dismissBlock = { self.dismiss(animated: true) } diff --git a/Classes/Notifications/NotificationCell.swift b/Classes/Notifications/NotificationCell.swift index e34f37ea..c85c91aa 100644 --- a/Classes/Notifications/NotificationCell.swift +++ b/Classes/Notifications/NotificationCell.swift @@ -86,12 +86,12 @@ final class NotificationCell: SwipeSelectableCell { func configure(_ viewModel: NotificationViewModel) { var titleAttributes = [ - NSFontAttributeName: Styles.Fonts.title, - NSForegroundColorAttributeName: Styles.Colors.Gray.light.color + NSAttributedStringKey.font: Styles.Fonts.title, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.light.color ] let title = NSMutableAttributedString(string: "\(viewModel.owner)/\(viewModel.repo) ", attributes: titleAttributes) - titleAttributes[NSFontAttributeName] = Styles.Fonts.secondary + titleAttributes[NSAttributedStringKey.font] = Styles.Fonts.secondary switch viewModel.identifier { case .number(let number): title.append(NSAttributedString(string: "#\(number)", attributes: titleAttributes)) default: break diff --git a/Classes/Notifications/NotificationClient.swift b/Classes/Notifications/NotificationClient.swift index 214fb553..093b98c6 100644 --- a/Classes/Notifications/NotificationClient.swift +++ b/Classes/Notifications/NotificationClient.swift @@ -20,11 +20,6 @@ final class NotificationClient { } private var listeners = [ListenerWrapper]() -// enum Result { -// case failed(Error?) -// case success([Notification], Int?) -// } - let githubClient: GithubClient init(githubClient: GithubClient) { @@ -81,7 +76,7 @@ final class NotificationClient { } } - completion(.success(notifications, page)) + completion(.success((notifications, page))) } githubClient.request(GithubClient.Request( diff --git a/Classes/Notifications/NotificationViewModel.swift b/Classes/Notifications/NotificationViewModel.swift index 4ad48b35..15c343bc 100644 --- a/Classes/Notifications/NotificationViewModel.swift +++ b/Classes/Notifications/NotificationViewModel.swift @@ -45,8 +45,8 @@ final class NotificationViewModel: ListDiffable { self.identifier = identifier let attributes = [ - NSFontAttributeName: Styles.Fonts.body, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.body, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] self.title = NSAttributedStringSizing( containerWidth: containerWidth, diff --git a/Classes/Repository/RepositoryClient.swift b/Classes/Repository/RepositoryClient.swift index 7473efbe..04092c9a 100644 --- a/Classes/Repository/RepositoryClient.swift +++ b/Classes/Repository/RepositoryClient.swift @@ -49,8 +49,8 @@ func createSummaryModel(_ node: RepositoryIssueSummaryType, containerWidth: CGFl else { return nil } let attributes = [ - NSFontAttributeName: Styles.Fonts.body, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.body, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] let title = NSAttributedStringSizing( containerWidth: containerWidth, diff --git a/Classes/Repository/RepositoryReadmeSectionController.swift b/Classes/Repository/RepositoryReadmeSectionController.swift index 910a7066..6b032090 100644 --- a/Classes/Repository/RepositoryReadmeSectionController.swift +++ b/Classes/Repository/RepositoryReadmeSectionController.swift @@ -55,11 +55,12 @@ ListBindingSectionControllerDataSource { _ sectionController: ListBindingSectionController, cellForViewModel viewModel: Any, at index: Int - ) -> UICollectionViewCell { + ) -> UICollectionViewCell & ListBindable { guard let context = self.collectionContext else { fatalError("Missing context") } let cellClass: AnyClass = CellTypeForComment(viewModel: viewModel) - let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) + guard let cell = context.dequeueReusableCell(of: cellClass, for: self, at: index) as? UICollectionViewCell & ListBindable + else { fatalError("Cell not bindable") } ExtraCommentCellConfigure( cell: cell, diff --git a/Classes/Repository/RepositoryViewController.swift b/Classes/Repository/RepositoryViewController.swift index 5dc50252..9967a0da 100644 --- a/Classes/Repository/RepositoryViewController.swift +++ b/Classes/Repository/RepositoryViewController.swift @@ -88,6 +88,7 @@ NewIssueTableViewControllerDelegate { .newIssue(issueController: newIssueViewController) } + @objc func onMore(sender: UIBarButtonItem) { let alert = UIAlertController.configured(preferredStyle: .actionSheet) diff --git a/Classes/Search/SearchEmptyView.swift b/Classes/Search/SearchEmptyView.swift index 62837329..8c25a9a8 100644 --- a/Classes/Search/SearchEmptyView.swift +++ b/Classes/Search/SearchEmptyView.swift @@ -62,6 +62,7 @@ final class SearchEmptyView: UIView { // MARK: Private API + @objc func onTap() { delegate?.didTap(emptyView: self) } diff --git a/Classes/Search/SearchRecentHeaderCell.swift b/Classes/Search/SearchRecentHeaderCell.swift index 645c1c21..5bd55ee0 100644 --- a/Classes/Search/SearchRecentHeaderCell.swift +++ b/Classes/Search/SearchRecentHeaderCell.swift @@ -51,6 +51,7 @@ final class SearchRecentHeaderCell: UICollectionViewCell { // MARK: Private API + @objc func onClear() { delegate?.didSelectClear(cell: self) } diff --git a/Classes/Search/SearchRepoResultCell.swift b/Classes/Search/SearchRepoResultCell.swift index bb7a0279..23768ab4 100644 --- a/Classes/Search/SearchRepoResultCell.swift +++ b/Classes/Search/SearchRepoResultCell.swift @@ -46,7 +46,7 @@ final class SearchRepoResultCell: SelectableCell { // always collapse and truncate the title titleLabel.lineBreakMode = .byTruncatingMiddle - titleLabel.setContentCompressionResistancePriority(UILayoutPriorityDefaultLow, for: .horizontal) + titleLabel.setContentCompressionResistancePriority(UILayoutPriority.defaultLow, for: .horizontal) languageLabel.font = Styles.Fonts.secondary languageLabel.textColor = Styles.Colors.Gray.light.color @@ -89,13 +89,13 @@ final class SearchRepoResultCell: SelectableCell { func configure(result: SearchRepoResult) { let ownerAttributes = [ - NSFontAttributeName: Styles.Fonts.body, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.body, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] let title = NSMutableAttributedString(string: result.owner + "/", attributes: ownerAttributes) let nameAttributes = [ - NSFontAttributeName: Styles.Fonts.bodyBold, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.bodyBold, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] title.append(NSAttributedString(string: result.name, attributes: nameAttributes)) titleLabel.attributedText = title diff --git a/Classes/Settings/SettingsViewController.swift b/Classes/Settings/SettingsViewController.swift index 91725353..6d9508cf 100644 --- a/Classes/Settings/SettingsViewController.swift +++ b/Classes/Settings/SettingsViewController.swift @@ -136,6 +136,7 @@ NewIssueTableViewControllerDelegate { sessionManager.logout() } + @objc func updateBadge() { BadgeNotifications.check { state in let authorized: Bool diff --git a/Classes/Systems/GithubClient+Paging.swift b/Classes/Systems/GithubClient+Paging.swift index da27da08..cf5ae323 100644 --- a/Classes/Systems/GithubClient+Paging.swift +++ b/Classes/Systems/GithubClient+Paging.swift @@ -23,14 +23,14 @@ func PagingData(link: String?) -> GithubClient.Page? { for l in links { guard let semicolonRange = l.range(of: ";") else { continue } - let urlString = l.substring(to: semicolonRange.lowerBound) + let urlString = l[l.utf8.startIndex.. [String: Any]? { + func attributes(point: CGPoint) -> [NSAttributedStringKey: Any]? { var fractionDistance: CGFloat = 1.0 let index = layoutManager.characterIndex(for: point, in: textContainer, fractionOfDistanceBetweenInsertionPoints: &fractionDistance) if index != NSNotFound, fractionDistance < 1.0 { diff --git a/Classes/Systems/Rating/RatingCell.swift b/Classes/Systems/Rating/RatingCell.swift index b09eefba..5c6bc208 100644 --- a/Classes/Systems/Rating/RatingCell.swift +++ b/Classes/Systems/Rating/RatingCell.swift @@ -66,6 +66,7 @@ final class RatingCell: UICollectionViewCell { // MARK: Private API + @objc func onDismiss() { delegate?.didTapDismiss(cell: self) } diff --git a/Classes/Views/AttributedStringView.swift b/Classes/Views/AttributedStringView.swift index 11cc8730..d94507eb 100644 --- a/Classes/Views/AttributedStringView.swift +++ b/Classes/Views/AttributedStringView.swift @@ -60,6 +60,7 @@ final class AttributedStringView: UIView { // MARK: Private API + @objc func onTap(recognizer: UITapGestureRecognizer) { guard let attributes = text?.attributes(point: recognizer.location(in: self)) else { return } if let urlString = attributes[MarkdownAttribute.url] as? String, let url = URL(string: urlString) { diff --git a/Classes/Views/DiffString.swift b/Classes/Views/DiffString.swift index 3174a039..d7a43c48 100644 --- a/Classes/Views/DiffString.swift +++ b/Classes/Views/DiffString.swift @@ -24,13 +24,13 @@ func CreateDiffString(code: String, limit: Bool = false) -> NSAttributedString { for line in lines { var attributes = [ - NSFontAttributeName: Styles.Fonts.code, - NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color + NSAttributedStringKey.font: Styles.Fonts.code, + NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color ] if line.hasPrefix("+") { - attributes[NSBackgroundColorAttributeName] = Styles.Colors.Green.light.color + attributes[NSAttributedStringKey.backgroundColor] = Styles.Colors.Green.light.color } else if line.hasPrefix("-") { - attributes[NSBackgroundColorAttributeName] = Styles.Colors.Red.light.color + attributes[NSAttributedStringKey.backgroundColor] = Styles.Colors.Red.light.color } let newlinedLine = line != lines.last ? line + "\n" : line diff --git a/Classes/Views/ShowMoreDetailsLabel.swift b/Classes/Views/ShowMoreDetailsLabel.swift index 57b0d60a..f79eb8ff 100644 --- a/Classes/Views/ShowMoreDetailsLabel.swift +++ b/Classes/Views/ShowMoreDetailsLabel.swift @@ -32,6 +32,9 @@ final class ShowMoreDetailsLabel: UILabel { return true } + // MARK: Private API + + @objc func showMenu(recognizer: UITapGestureRecognizer) { guard recognizer.state == .began, detailText.characters.count > 0 else { return } @@ -45,7 +48,8 @@ final class ShowMoreDetailsLabel: UILabel { menu.setTargetRect(bounds, in: self) menu.setMenuVisible(true, animated: true) } - + + @objc func empty() {} } diff --git a/Classes/Views/Styles.swift b/Classes/Views/Styles.swift index 7c11e836..fb41bfa2 100644 --- a/Classes/Views/Styles.swift +++ b/Classes/Views/Styles.swift @@ -116,7 +116,7 @@ enum Styles { static func setupAppearance() { UINavigationBar.appearance().tintColor = Styles.Colors.Blue.medium.color UINavigationBar.appearance().titleTextAttributes = - [NSForegroundColorAttributeName: Styles.Colors.Gray.dark.color] + [NSAttributedStringKey.foregroundColor: Styles.Colors.Gray.dark.color] } } diff --git a/Freetime.xcodeproj/project.pbxproj b/Freetime.xcodeproj/project.pbxproj index 169698eb..1e412a4f 100644 --- a/Freetime.xcodeproj/project.pbxproj +++ b/Freetime.xcodeproj/project.pbxproj @@ -1566,6 +1566,7 @@ 297AE8471EC0D58A00B44A1F = { CreatedOnToolsVersion = 8.3.2; DevelopmentTeam = 523C4DWBTH; + LastSwiftMigration = 0900; ProvisioningStyle = Automatic; TestTargetID = 297AE8331EC0D58A00B44A1F; }; @@ -1829,284 +1830,284 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 297DD5E31F06922A006E7E63 /* NotificationClient.swift in Sources */, - 292FCB091EDFCC510026635E /* IssueCommentSummaryModel.swift in Sources */, - 290EF5791F06BAF4006A2160 /* NoNewNotificationsSectionController.swift in Sources */, - 29CEA5CD1F84DB1B009827DB /* BaseListViewController.swift in Sources */, - 2919295B1F3FB1D20012067B /* Link.swift in Sources */, - 292FCB151EDFCC510026635E /* IssueLabelsSectionController.swift in Sources */, - 291929531F3F9E490012067B /* IssueFilesTableCell.swift in Sources */, - 297403D91F18545A00ABA95A /* IssueAssigneesSectionController.swift in Sources */, - 292EB08D1F1FF58D0046865D /* IssueMilestoneEventModel.swift in Sources */, - 292FCAFC1EDFCC510026635E /* IssueCommentImageModel.swift in Sources */, - 292CD3D01F0DBB5C00D3D57B /* WebviewCellHeightCache.swift in Sources */, - 295C31CF1F0AA67600521CED /* IssueStatus+ButtonState.swift in Sources */, - 2905AFAF1F7357FA0015AE32 /* RepositoryViewController.swift in Sources */, - 292FCAF81EDFCC510026635E /* CollapsibleCell.swift in Sources */, - 290744BA1F26863100FD9E48 /* UIScrollView+ScrollToBottom.swift in Sources */, - 29DA1E8C1F5F8CC40050C64B /* MarkdownAttribute.swift in Sources */, - 294B11201F7B07DD00E04F2D /* TabBarControllerDelegate.swift in Sources */, - 29EDFE841F661776005BCCEB /* RepositoryReadmeSectionController.swift in Sources */, - 29DA1E7F1F5DF2960050C64B /* LoadMoreCell.swift in Sources */, - 29DA1E791F5DEE8F0050C64B /* SearchLoadingView.swift in Sources */, - 29CD71171EF22F4200616E85 /* NSAttributedString+Trim.swift in Sources */, - 29DA1E771F5DA27D0050C64B /* SearchEmptyView.swift in Sources */, - 292FCB0F1EDFCC510026635E /* IssuesViewController.swift in Sources */, - 292CD3BB1F0AF28F00D3D57B /* IssueDiffHunkModel.swift in Sources */, - 29316DBF1ECC95DB007CAE3F /* RootViewControllers.swift in Sources */, - 29921BCE1EF624F500C1E848 /* MMElement+Image.swift in Sources */, - 2971722B1F069E6B005E43AC /* SpinnerSectionController.swift in Sources */, - 986B871B1F2B87DD00AAB55C /* SearchRepoResult.swift in Sources */, - 292EB0911F1FF72D0046865D /* IssueMilestoneEventSectionController.swift in Sources */, - 29C9FDD71EC65FEE00EE3A52 /* Subject.swift in Sources */, - 294967511EFC1E9E00B1CF1A /* IssueCommentHtmlModel.swift in Sources */, - 986B873E1F2E1CE400AAB55C /* RepositoryClient.swift in Sources */, - 2908C5891F6F3EB00071C39D /* IssueLocalReaction.swift in Sources */, - 29C9FDDD1EC6628200EE3A52 /* NotificationViewModel.swift in Sources */, - 297AE87F1EC0D5C200B44A1F /* UIViewController+Alerts.swift in Sources */, - 29C9FDDB1EC6627200EE3A52 /* NotificationCell.swift in Sources */, - 293A45A41F2995CE00DD1006 /* IssueCommitCell.swift in Sources */, - 292CD3BD1F0AF3B800D3D57B /* IssueDiffHunkSectionController.swift in Sources */, - 290744BE1F268F8700FD9E48 /* UserAutocomplete+GraphQL.swift in Sources */, - 2980033C1F51E82400BE90F4 /* RatingController.swift in Sources */, - 29973E561F68BFDE0004B693 /* Signature.swift in Sources */, - 29921BCA1EF6233200C1E848 /* MMElement+Attributes.swift in Sources */, - 29921BCC1EF624D400C1E848 /* UIFont+MutableTraits.swift in Sources */, - 292FCB181EDFCC510026635E /* IssueTitleCell.swift in Sources */, - 2974069D1F0EDEAD003A6BFB /* IssueCommentTableCell.swift in Sources */, - 29EE1C121F37C51D0046A54D /* IssueLabelEditCell.swift in Sources */, - 292FCB071EDFCC510026635E /* IssueCommentReactionCell.swift in Sources */, - 29316DCD1ECD31E9007CAE3F /* StatusBar.swift in Sources */, - 29F7F05C1F2A751B00F6075D /* IssueResult.swift in Sources */, - 2958406D1EE8EBF3007723C6 /* IssueCommentPhoto.swift in Sources */, - 290EF56A1F06A821006A2160 /* Notification+NotificationViewModel.swift in Sources */, - 292EB08F1F1FF5EC0046865D /* IssueMilestoneEventCell.swift in Sources */, - 293B58531EF808DA001D067D /* IssueCommentUnsupportedModel.swift in Sources */, - 294563EA1EE4EEF000DBCD35 /* IssueStatusCell.swift in Sources */, - 29C53FC21F12EF4000A59ED5 /* IssueReferencedCell.swift in Sources */, - 2949674C1EF9716400B1CF1A /* IssueCommentHrModel.swift in Sources */, - 2905AFAD1F7357C50015AE32 /* RepositoryIssuesViewController.swift in Sources */, + 290744A91F24D2DA00FD9E48 /* AddCommentClient.swift in Sources */, + 29316DC51ECC9841007CAE3F /* Alamofire+GithubAPI.swift in Sources */, + 75A0ACF51F79A82D0062D99A /* AlertAction.swift in Sources */, + 75468F7A1F7AFBC800F2BC19 /* AlertActionBuilder.swift in Sources */, + 292FCB2C1EE054900026635E /* API.swift in Sources */, + 297AE8791EC0D5C200B44A1F /* App.swift in Sources */, + 297AE87E1EC0D5C200B44A1F /* AppDelegate.swift in Sources */, 299E86431EFD8D8200E5FE70 /* AttributedStringView.swift in Sources */, - 299F2A121EC3BCF0006CE9D7 /* GithubSessionManager.swift in Sources */, - 292CD3C31F0AF3D400D3D57B /* IssueDiffHunkPreviewCell.swift in Sources */, - 29A195021EC66B8B00C3E289 /* UIColor+Hex.swift in Sources */, - 297403D31F1850DC00ABA95A /* IssueAssigneeViewModel.swift in Sources */, - 29C167691ECA016500439D62 /* EmptyView.swift in Sources */, + 297AE87A1EC0D5C200B44A1F /* Authorization.swift in Sources */, + 290744B41F250A6800FD9E48 /* AutocompleteCell.swift in Sources */, + 290744B81F250A7200FD9E48 /* AutocompleteType.swift in Sources */, + 291929671F3FF9C50012067B /* BadgeNotifications.swift in Sources */, + 29CEA5CD1F84DB1B009827DB /* BaseListViewController.swift in Sources */, + 98835BD41F1A17EE005BA24F /* Bundle+Version.swift in Sources */, + 29316DB51ECC7DEB007CAE3F /* ButtonCell.swift in Sources */, + 292FCAF81EDFCC510026635E /* CollapsibleCell.swift in Sources */, + 295F52AD1EF1BE83000B53CF /* CommentModelsFromMarkdown.swift in Sources */, + 2919295A1F3FB1D20012067B /* Content.swift in Sources */, + 297DD5E11F061BBE006E7E63 /* CreateProfileViewController.swift in Sources */, + 29A195041EC74C4800C3E289 /* Date+Display.swift in Sources */, 29A4768E1ED07A23005D0953 /* DateDetailsFormatter.swift in Sources */, - 292FCAF71EDFCC510026635E /* IssueCommentCodeBlockModel.swift in Sources */, - 29A1950A1EC78B4800C3E289 /* NotificationType+Icon.swift in Sources */, - 29416BFB1F113D0A00D03E1A /* LoginSplashViewController.swift in Sources */, - 29C9FDD31EC65FEE00EE3A52 /* Repository.swift in Sources */, - 292FCB191EDFCC510026635E /* IssueTitleSectionController.swift in Sources */, - 29C167741ECA0DBB00439D62 /* GithubAPIDateFormatter.swift in Sources */, + 291929611F3FD2960012067B /* DiffString.swift in Sources */, + 290744B51F250A6800FD9E48 /* EmojiAutocomplete.swift in Sources */, + 29C167691ECA016500439D62 /* EmptyView.swift in Sources */, + 29C1677A1ECA14F700439D62 /* Feed.swift in Sources */, + 291929551F3FAADF0012067B /* FeedRefresh.swift in Sources */, 54AD5E8E1F24D953004A4BD6 /* FeedSelectionProviding.swift in Sources */, - 29AC90E51F00A7C8000B80E4 /* SplitViewControllerDelegate.swift in Sources */, - 291929471F3EAB250012067B /* IssueDetailsModel.swift in Sources */, - 295840671EE89FE4007723C6 /* IssueStatusEventCell.swift in Sources */, - 29C9FDD01EC65FEE00EE3A52 /* Permission.swift in Sources */, - 292ACE1E1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift in Sources */, - 292FCAFB1EDFCC510026635E /* IssueCommentImageCell.swift in Sources */, - 986B872B1F2C842000AAB55C /* SearchNoResultsSectionController.swift in Sources */, - 29DA1E861F5E26D30050C64B /* SearchRecentSectionController.swift in Sources */, - 292CD3D21F0DBEC000D3D57B /* UIViewController+Safari.swift in Sources */, - 2928C78C1F15D80E0000D06D /* IssueRenamedSectionController.swift in Sources */, - 292FCB1D1EDFCD3D0026635E /* ReactionViewModel.swift in Sources */, - 2980033E1F51E93500BE90F4 /* RatingSectionController.swift in Sources */, - 296B4E311F7C805600C16887 /* GraphQLIDDecode.swift in Sources */, - 294563E61EE4EE6F00DBCD35 /* IssueStatusModel.swift in Sources */, - 29C9FDE11EC667AE00EE3A52 /* Styles.swift in Sources */, - 292CD3CC1F0DB89600D3D57B /* IssueReviewSectionController.swift in Sources */, - 294B11221F7B0B9500E04F2D /* UIScrollView+ScrollToTop.swift in Sources */, - 297A37301F1704C10081C04E /* IssueRequestSectionController.swift in Sources */, - 292CD3D61F0DC4DA00D3D57B /* UIViewController+AttributedStringViewDelegate.swift in Sources */, - 292FF8B21F302FE7009E63F7 /* UITextView+SelectedRange.swift in Sources */, - 29F7F0631F2A875C00F6075D /* IssueNeckLoadModel.swift in Sources */, + 291929421F3EA8CD0012067B /* File.swift in Sources */, + 299E86491EFD9DBB00E5FE70 /* FlexController.m in Sources */, + 29EB1EEF1F425E5100A200B4 /* ForegroundHandler.swift in Sources */, + 29C167741ECA0DBB00439D62 /* GithubAPIDateFormatter.swift in Sources */, + 29416BFF1F1195D400D03E1A /* GithubClient+AccessToken.swift in Sources */, 29987DD91F53EB3700801F21 /* GithubClient+APIStatus.swift in Sources */, - 29C33FDF1F128D4400EC8D40 /* SelectableCell.swift in Sources */, - 297AE87C1EC0D5C200B44A1F /* Secrets.swift in Sources */, + 29EE44461F19D5C100B05ED3 /* GithubClient+Issues.swift in Sources */, + 98B5A0841F6C87A7000617D6 /* GitHubClient+NewIssue.swift in Sources */, + 299C06DA1F0DD87F00C2828E /* GithubClient+Paging.swift in Sources */, + 2919294D1F3F746B0012067B /* GithubClient+PullRequestFiles.swift in Sources */, + 986B87191F2B875800AAB55C /* GithubClient+Search.swift in Sources */, + 29C0E7071ECBC6C50051D756 /* GithubClient.swift in Sources */, + 2981A8A41EFE9FC700E25EF1 /* GithubEmoji.swift in Sources */, + 299F2A121EC3BCF0006CE9D7 /* GithubSessionManager.swift in Sources */, + 29316DBD1ECC8970007CAE3F /* GithubUserSession.swift in Sources */, + 986B873C1F2CEB1500AAB55C /* GQL+RepositoryIssueSummaryType.swift in Sources */, + 296B4E311F7C805600C16887 /* GraphQLIDDecode.swift in Sources */, + 294B11241F7B37D300E04F2D /* ImageCellHeightCache.swift in Sources */, + 294563EC1EE5012100DBCD35 /* Issue+IssueType.swift in Sources */, + 297403D71F1851C000ABA95A /* IssueAssigneeAvatarCell.swift in Sources */, + 297403D11F184F8D00ABA95A /* IssueAssigneesModel.swift in Sources */, + 297403D91F18545A00ABA95A /* IssueAssigneesSectionController.swift in Sources */, + 297403D51F18515A00ABA95A /* IssueAssigneeSummaryCell.swift in Sources */, + 297403DB1F18550200ABA95A /* IssueAssigneeSummaryModel.swift in Sources */, + 297403DD1F185A8700ABA95A /* IssueAssigneeUserCell.swift in Sources */, + 297403D31F1850DC00ABA95A /* IssueAssigneeViewModel.swift in Sources */, + 292FCAFD1EDFCC510026635E /* IssueCollapsedBodies.swift in Sources */, + 290744B61F250A6800FD9E48 /* IssueCommentAutocomplete.swift in Sources */, + 292FCAF61EDFCC510026635E /* IssueCommentCodeBlockCell.swift in Sources */, + 292FCAF71EDFCC510026635E /* IssueCommentCodeBlockModel.swift in Sources */, + 292FCAF91EDFCC510026635E /* IssueCommentDetailCell.swift in Sources */, + 292FCAFA1EDFCC510026635E /* IssueCommentDetailsViewModel.swift in Sources */, + 2949674E1EF9719300B1CF1A /* IssueCommentHrCell.swift in Sources */, + 2949674C1EF9716400B1CF1A /* IssueCommentHrModel.swift in Sources */, + 294967531EFC1EDB00B1CF1A /* IssueCommentHtmlCell.swift in Sources */, + 294967511EFC1E9E00B1CF1A /* IssueCommentHtmlModel.swift in Sources */, + 292FCAFB1EDFCC510026635E /* IssueCommentImageCell.swift in Sources */, + 292FCAFC1EDFCC510026635E /* IssueCommentImageModel.swift in Sources */, + 292FCAFE1EDFCC510026635E /* IssueCommentModel.swift in Sources */, + 292CD3C51F0C9EB200D3D57B /* IssueCommentModelHandling.swift in Sources */, + 2958406D1EE8EBF3007723C6 /* IssueCommentPhoto.swift in Sources */, + 295840DA1EEA07E4007723C6 /* IssueCommentQuoteCell.swift in Sources */, + 295840D81EEA0686007723C6 /* IssueCommentQuoteModel.swift in Sources */, + 292FCB071EDFCC510026635E /* IssueCommentReactionCell.swift in Sources */, + 292FCB1F1EDFCD750026635E /* IssueCommentReactionViewModel.swift in Sources */, + 292FCAFF1EDFCC510026635E /* IssueCommentSectionController.swift in Sources */, + 292FCB081EDFCC510026635E /* IssueCommentSummaryCell.swift in Sources */, + 292FCB091EDFCC510026635E /* IssueCommentSummaryModel.swift in Sources */, + 2974069D1F0EDEAD003A6BFB /* IssueCommentTableCell.swift in Sources */, + 2974069F1F0EDED3003A6BFB /* IssueCommentTableCollectionCell.swift in Sources */, + 2974069B1F0EDC7C003A6BFB /* IssueCommentTableModel.swift in Sources */, + 292FCB0A1EDFCC510026635E /* IssueCommentTextCell.swift in Sources */, + 293B58551EF80908001D067D /* IssueCommentUnsupportedCell.swift in Sources */, + 293B58531EF808DA001D067D /* IssueCommentUnsupportedModel.swift in Sources */, + 293A45A41F2995CE00DD1006 /* IssueCommitCell.swift in Sources */, 293A45A21F29954000DD1006 /* IssueCommitModel.swift in Sources */, + 293A45A61F29987C00DD1006 /* IssueCommitSectionController.swift in Sources */, + 291929471F3EAB250012067B /* IssueDetailsModel.swift in Sources */, + 292CD3BB1F0AF28F00D3D57B /* IssueDiffHunkModel.swift in Sources */, + 292CD3BF1F0AF3C000D3D57B /* IssueDiffHunkPathCell.swift in Sources */, + 292CD3C31F0AF3D400D3D57B /* IssueDiffHunkPreviewCell.swift in Sources */, + 292CD3BD1F0AF3B800D3D57B /* IssueDiffHunkSectionController.swift in Sources */, + 291929571F3FAFB00012067B /* IssueFileContentViewController.swift in Sources */, + 291929531F3F9E490012067B /* IssueFilesTableCell.swift in Sources */, + 291929511F3F76B10012067B /* IssueFilesViewController.swift in Sources */, + 292FCB121EDFCC510026635E /* IssueLabelCell.swift in Sources */, + 292FCB131EDFCC510026635E /* IssueLabelDotCell.swift in Sources */, + 29FB94301EE752280016E6D4 /* IssueLabeledCell.swift in Sources */, + 29EE1C121F37C51D0046A54D /* IssueLabelEditCell.swift in Sources */, + 29FB942C1EE750DB0016E6D4 /* IssueLabeledModel.swift in Sources */, + 29FB942E1EE751F70016E6D4 /* IssueLabeledSectionController.swift in Sources */, + 292FCB141EDFCC510026635E /* IssueLabelsModel.swift in Sources */, + 292FCB151EDFCC510026635E /* IssueLabelsSectionController.swift in Sources */, + 292FCB161EDFCC510026635E /* IssueLabelSummaryCell.swift in Sources */, + 292FCB171EDFCC510026635E /* IssueLabelSummaryModel.swift in Sources */, + 2908C5891F6F3EB00071C39D /* IssueLocalReaction.swift in Sources */, + 2931892B1F5397E400EF0911 /* IssueMilestoneCell.swift in Sources */, + 292EB08F1F1FF5EC0046865D /* IssueMilestoneEventCell.swift in Sources */, + 292EB08D1F1FF58D0046865D /* IssueMilestoneEventModel.swift in Sources */, + 292EB0911F1FF72D0046865D /* IssueMilestoneEventSectionController.swift in Sources */, + 2931892D1F539BA300EF0911 /* IssueMilestoneModel.swift in Sources */, + 2931892F1F539C0E00EF0911 /* IssueMilestoneSectionController.swift in Sources */, + 29F7F0611F2A83AA00F6075D /* IssueNeckLoadCell.swift in Sources */, + 29F7F0631F2A875C00F6075D /* IssueNeckLoadModel.swift in Sources */, + 29F7F05F1F2A839100F6075D /* IssueNeckLoadSectionController.swift in Sources */, + 2919295F1F3FD1F40012067B /* IssuePatchContentViewController.swift in Sources */, + 292FF8B91F303DB0009E63F7 /* IssuePreviewModel.swift in Sources */, + 292FF8B51F303BD0009E63F7 /* IssuePreviewSectionController.swift in Sources */, + 292FF8B71F303BD9009E63F7 /* IssuePreviewViewController.swift in Sources */, + 292FCB211EDFCF870026635E /* IssueReactionCell.swift in Sources */, + 29C53FC21F12EF4000A59ED5 /* IssueReferencedCell.swift in Sources */, + 29A08FBD1F12EF7C00C5368E /* IssueReferencedCommitCell.swift in Sources */, + 29A08FBE1F12EF7C00C5368E /* IssueReferencedCommitModel.swift in Sources */, + 29A08FBF1F12EF7C00C5368E /* IssueReferencedCommitSectionController.swift in Sources */, + 29C53FC31F12EF4000A59ED5 /* IssueReferencedModel.swift in Sources */, + 29C53FC41F12EF4000A59ED5 /* IssueReferencedSectionController.swift in Sources */, + 2928C78A1F15D7E00000D06D /* IssueRenamedCell.swift in Sources */, + 2928C7881F15D7C50000D06D /* IssueRenamedModel.swift in Sources */, + 2928C78C1F15D80E0000D06D /* IssueRenamedSectionController.swift in Sources */, + 2928C78E1F15DF1B0000D06D /* IssueRenamedString.swift in Sources */, + 297A372E1F17018F0081C04E /* IssueRequestCell.swift in Sources */, + 297A372C1F1700BC0081C04E /* IssueRequestModel.swift in Sources */, + 297A37301F1704C10081C04E /* IssueRequestSectionController.swift in Sources */, + 29F7F05C1F2A751B00F6075D /* IssueResult.swift in Sources */, + 292CD3C81F0DB32700D3D57B /* IssueReviewDetailsCell.swift in Sources */, + 292CD3CA1F0DB36600D3D57B /* IssueReviewDetailsModel.swift in Sources */, + 299C06D81F0DD17B00C2828E /* IssueReviewEmptyTailCell.swift in Sources */, + 292CD3CE1F0DB8E700D3D57B /* IssueReviewModel.swift in Sources */, + 292CD3CC1F0DB89600D3D57B /* IssueReviewSectionController.swift in Sources */, + 295C31CF1F0AA67600521CED /* IssueStatus+ButtonState.swift in Sources */, + 290D2A421F04D3470082E6CC /* IssueStatus.swift in Sources */, + 294563EA1EE4EEF000DBCD35 /* IssueStatusCell.swift in Sources */, + 295C31D11F0AA72000521CED /* IssueStatusEvent+ButtonState.swift in Sources */, + 295C31CD1F0AA55400521CED /* IssueStatusEvent.swift in Sources */, + 295840671EE89FE4007723C6 /* IssueStatusEventCell.swift in Sources */, + 295840651EE89F28007723C6 /* IssueStatusEventModel.swift in Sources */, + 295840691EE8A328007723C6 /* IssueStatusEventSectionController.swift in Sources */, + 294563E61EE4EE6F00DBCD35 /* IssueStatusModel.swift in Sources */, + 294563E81EE4EED200DBCD35 /* IssueStatusSectionController.swift in Sources */, + 292FCB0F1EDFCC510026635E /* IssuesViewController.swift in Sources */, + 292FF8B01F2FDC33009E63F7 /* IssueTextActionsView.swift in Sources */, + 292FCB181EDFCC510026635E /* IssueTitleCell.swift in Sources */, + 292FCB191EDFCC510026635E /* IssueTitleSectionController.swift in Sources */, + 294563F01EE5036A00DBCD35 /* IssueType.swift in Sources */, + 2919294B1F3EAD890012067B /* IssueViewFilesCell.swift in Sources */, + 291929491F3EAD2E0012067B /* IssueViewFilesSectionController.swift in Sources */, + 292FCB101EDFCC510026635E /* IssueViewModels.swift in Sources */, + 2963A93B1EE25F6F0066509C /* LabelableFields+IssueLabelModel.swift in Sources */, + 98835BD21F1A158D005BA24F /* LabelCell.swift in Sources */, + 29EE1C1B1F3A33000046A54D /* LabelsViewController.swift in Sources */, + 29EE1C191F3A2EDB0046A54D /* LabelTableCell.swift in Sources */, + 2919295B1F3FB1D20012067B /* Link.swift in Sources */, + 29DA1E7F1F5DF2960050C64B /* LoadMoreCell.swift in Sources */, + 29DA1E801F5DF2960050C64B /* LoadMoreSectionController.swift in Sources */, + 29416BFB1F113D0A00D03E1A /* LoginSplashViewController.swift in Sources */, + 29DA1E8C1F5F8CC40050C64B /* MarkdownAttribute.swift in Sources */, + 29921BCA1EF6233200C1E848 /* MMElement+Attributes.swift in Sources */, + 29921BD01EF6261C00C1E848 /* MMElement+CodeBlock.swift in Sources */, + 29921BCE1EF624F500C1E848 /* MMElement+Image.swift in Sources */, + 297406A11F0EE51E003A6BFB /* MMElement+Table.swift in Sources */, + 98647DF31F758CCF00A4DE7A /* NewIssueTableViewController.swift in Sources */, + 290EF5761F06BA06006A2160 /* NoNewNotificationsCell.swift in Sources */, + 290EF5791F06BAF4006A2160 /* NoNewNotificationsSectionController.swift in Sources */, + 290EF56A1F06A821006A2160 /* Notification+NotificationViewModel.swift in Sources */, + 29C9FDCE1EC65FEE00EE3A52 /* Notification.swift in Sources */, + 29C9FDDB1EC6627200EE3A52 /* NotificationCell.swift in Sources */, + 297DD5E31F06922A006E7E63 /* NotificationClient.swift in Sources */, + 295C31C71F09E62600521CED /* NotificationNextPageCell.swift in Sources */, + 295C31C91F09E72D00521CED /* NotificationNextPageSectionController.swift in Sources */, + 29A195111EC7AC9500C3E289 /* NotificationRepoCell.swift in Sources */, + 291929691F40EEBD0012067B /* NotificationsDataSource.swift in Sources */, + 2980E0921F073E8B000E02C6 /* NotificationSectionController.swift in Sources */, + 29C295171EC7BCDA00D46CD2 /* NotificationsViewController.swift in Sources */, + 29A1950A1EC78B4800C3E289 /* NotificationType+Icon.swift in Sources */, + 29A1950C1EC7901400C3E289 /* NotificationType.swift in Sources */, + 29C9FDDD1EC6628200EE3A52 /* NotificationViewModel.swift in Sources */, + 29CD71171EF22F4200616E85 /* NSAttributedString+Trim.swift in Sources */, + 298BA08D1EC90A9000B01946 /* NSAttributedStringSizing.swift in Sources */, + 29C9FDCF1EC65FEE00EE3A52 /* Organization.swift in Sources */, + 29C9FDD01EC65FEE00EE3A52 /* Permission.swift in Sources */, + 292CD3D41F0DC12100D3D57B /* PhotoViewHandler.swift in Sources */, + 294563EE1EE5012900DBCD35 /* PullRequest+IssueType.swift in Sources */, + 298003401F51E93B00BE90F4 /* RatingCell.swift in Sources */, + 2980033C1F51E82400BE90F4 /* RatingController.swift in Sources */, + 2980033E1F51E93500BE90F4 /* RatingSectionController.swift in Sources */, + 29FF85A51EE1EA7A007B8762 /* ReactionContent+ReactionType.swift in Sources */, + 292FCB1D1EDFCD3D0026635E /* ReactionViewModel.swift in Sources */, + 29C9FDD31EC65FEE00EE3A52 /* Repository.swift in Sources */, + 986B873E1F2E1CE400AAB55C /* RepositoryClient.swift in Sources */, + 295A77BE1F75C1CC007BC403 /* RepositoryDetails.swift in Sources */, + 292ACE1E1F5CB02400C9A02C /* RepositoryEmptyResultsCell.swift in Sources */, + 292ACE1F1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift in Sources */, + 292ACE1B1F5CAFAD00C9A02C /* RepositoryEmptyResultsType.swift in Sources */, + 292ACE181F5C945B00C9A02C /* RepositoryIssueSummaryModel.swift in Sources */, + 986B87341F2CAE9800AAB55C /* RepositoryIssueSummaryType.swift in Sources */, + 2905AFAD1F7357C50015AE32 /* RepositoryIssuesViewController.swift in Sources */, + 29EE1C1D1F3A33890046A54D /* RepositoryLabel.swift in Sources */, + 2905AFAB1F7357B40015AE32 /* RepositoryOverviewViewController.swift in Sources */, + 29EDFE821F661562005BCCEB /* RepositoryReadmeModel.swift in Sources */, + 29EDFE841F661776005BCCEB /* RepositoryReadmeSectionController.swift in Sources */, + 986B87381F2CB29700AAB55C /* RepositorySummaryCell.swift in Sources */, + 986B87361F2CB28C00AAB55C /* RepositorySummarySectionController.swift in Sources */, + 2905AFAF1F7357FA0015AE32 /* RepositoryViewController.swift in Sources */, + 2963A9341EE2118E0066509C /* ResponderButton.swift in Sources */, + 293189281F5391F700EF0911 /* Result.swift in Sources */, + 29316DC31ECC981D007CAE3F /* RootNavigationManager.swift in Sources */, + 29316DBF1ECC95DB007CAE3F /* RootViewControllers.swift in Sources */, + 296CD8291F0141A6001190B9 /* Samples.swift in Sources */, + 29DA1E771F5DA27D0050C64B /* SearchEmptyView.swift in Sources */, + 29DA1E791F5DEE8F0050C64B /* SearchLoadingView.swift in Sources */, + 986B872D1F2C846700AAB55C /* SearchNoResultsCell.swift in Sources */, + 986B872B1F2C842000AAB55C /* SearchNoResultsSectionController.swift in Sources */, + 29DA1E841F5E26310050C64B /* SearchRecentCell.swift in Sources */, 29DA1E881F5E2B8A0050C64B /* SearchRecentHeaderCell.swift in Sources */, 29DA1E8A1F5E2DEC0050C64B /* SearchRecentHeaderSectionController.swift in Sources */, - 297DD5E11F061BBE006E7E63 /* CreateProfileViewController.swift in Sources */, - 293189281F5391F700EF0911 /* Result.swift in Sources */, - 293B58551EF80908001D067D /* IssueCommentUnsupportedCell.swift in Sources */, - 986B87341F2CAE9800AAB55C /* RepositoryIssueSummaryType.swift in Sources */, - 291929631F3FF0DA0012067B /* StyledTableCell.swift in Sources */, - 290744B81F250A7200FD9E48 /* AutocompleteType.swift in Sources */, - 2958406F1EE9F21E007723C6 /* UIButton+Label.swift in Sources */, - 2919295A1F3FB1D20012067B /* Content.swift in Sources */, - 2928C7881F15D7C50000D06D /* IssueRenamedModel.swift in Sources */, - 290744B61F250A6800FD9E48 /* IssueCommentAutocomplete.swift in Sources */, - 986B87191F2B875800AAB55C /* GithubClient+Search.swift in Sources */, - 98835BD21F1A158D005BA24F /* LabelCell.swift in Sources */, - 295A77BE1F75C1CC007BC403 /* RepositoryDetails.swift in Sources */, - 29A476A01ED0E6C6005D0953 /* UIColor+Overlay.swift in Sources */, - 29F7F05F1F2A839100F6075D /* IssueNeckLoadSectionController.swift in Sources */, - 297403D11F184F8D00ABA95A /* IssueAssigneesModel.swift in Sources */, - 29CEA5CF1F84DCB3009827DB /* UIViewController+EmptyBackBar.swift in Sources */, - 2919294D1F3F746B0012067B /* GithubClient+PullRequestFiles.swift in Sources */, - 292FF8B51F303BD0009E63F7 /* IssuePreviewSectionController.swift in Sources */, - 290D2A3D1F044CB20082E6CC /* UIViewController+SmartDeselection.swift in Sources */, - 29A08FBD1F12EF7C00C5368E /* IssueReferencedCommitCell.swift in Sources */, - 2971722D1F069E96005E43AC /* SpinnerCell.swift in Sources */, - 295840651EE89F28007723C6 /* IssueStatusEventModel.swift in Sources */, - 292FCAF91EDFCC510026635E /* IssueCommentDetailCell.swift in Sources */, - 292CD3BF1F0AF3C000D3D57B /* IssueDiffHunkPathCell.swift in Sources */, - 98B5A0861F6D0FFE000617D6 /* UINavigationController+Replace.swift in Sources */, - 29F7F0611F2A83AA00F6075D /* IssueNeckLoadCell.swift in Sources */, - 754488B11F7ADF8D0032D08C /* UIAlertController+Action.swift in Sources */, - 297403D71F1851C000ABA95A /* IssueAssigneeAvatarCell.swift in Sources */, - 986B87361F2CB28C00AAB55C /* RepositorySummarySectionController.swift in Sources */, - 29316DB51ECC7DEB007CAE3F /* ButtonCell.swift in Sources */, - 296CD8291F0141A6001190B9 /* Samples.swift in Sources */, - 292FCAFE1EDFCC510026635E /* IssueCommentModel.swift in Sources */, - 290744A91F24D2DA00FD9E48 /* AddCommentClient.swift in Sources */, - 297A372C1F1700BC0081C04E /* IssueRequestModel.swift in Sources */, - 29EE1C191F3A2EDB0046A54D /* LabelTableCell.swift in Sources */, - 298BA09A1EC947FC00B01946 /* SegmentedControlModel.swift in Sources */, - 299C06D81F0DD17B00C2828E /* IssueReviewEmptyTailCell.swift in Sources */, - 298BA0981EC947F100B01946 /* SegmentedControlSectionController.swift in Sources */, - 291929421F3EA8CD0012067B /* File.swift in Sources */, - 297A372E1F17018F0081C04E /* IssueRequestCell.swift in Sources */, - 292FCB081EDFCC510026635E /* IssueCommentSummaryCell.swift in Sources */, - 292FCB211EDFCF870026635E /* IssueReactionCell.swift in Sources */, - 292ACE1F1F5CB02400C9A02C /* RepositoryEmptyResultsSectionController.swift in Sources */, - 2974069B1F0EDC7C003A6BFB /* IssueCommentTableModel.swift in Sources */, - 291929611F3FD2960012067B /* DiffString.swift in Sources */, - 294563E81EE4EED200DBCD35 /* IssueStatusSectionController.swift in Sources */, - 292FCAF61EDFCC510026635E /* IssueCommentCodeBlockCell.swift in Sources */, - 297AE8801EC0D5C200B44A1F /* UIViewController+LoadingIndicator.swift in Sources */, - 2931892B1F5397E400EF0911 /* IssueMilestoneCell.swift in Sources */, - 292FCB121EDFCC510026635E /* IssueLabelCell.swift in Sources */, - 986B873C1F2CEB1500AAB55C /* GQL+RepositoryIssueSummaryType.swift in Sources */, - 986B87381F2CB29700AAB55C /* RepositorySummaryCell.swift in Sources */, - 294563EC1EE5012100DBCD35 /* Issue+IssueType.swift in Sources */, - 29C53FC31F12EF4000A59ED5 /* IssueReferencedModel.swift in Sources */, - 291929551F3FAADF0012067B /* FeedRefresh.swift in Sources */, - 297403DD1F185A8700ABA95A /* IssueAssigneeUserCell.swift in Sources */, - 292FCB2C1EE054900026635E /* API.swift in Sources */, - 292CD3CE1F0DB8E700D3D57B /* IssueReviewModel.swift in Sources */, - 295840711EE9F4D3007723C6 /* ShowMoreDetailsLabel+Date.swift in Sources */, - 75A0ACF51F79A82D0062D99A /* AlertAction.swift in Sources */, - 29FF85A51EE1EA7A007B8762 /* ReactionContent+ReactionType.swift in Sources */, - 292FF8B91F303DB0009E63F7 /* IssuePreviewModel.swift in Sources */, - 295840691EE8A328007723C6 /* IssueStatusEventSectionController.swift in Sources */, - 29EE444A1F19D85800B05ED3 /* ShowErrorStatusBar.swift in Sources */, - 297FB7781F51128A00F2E618 /* SettingsAccountsViewController.swift in Sources */, - 29C0E7071ECBC6C50051D756 /* GithubClient.swift in Sources */, - 292ACE1B1F5CAFAD00C9A02C /* RepositoryEmptyResultsType.swift in Sources */, - 29A195111EC7AC9500C3E289 /* NotificationRepoCell.swift in Sources */, - 29416BFF1F1195D400D03E1A /* GithubClient+AccessToken.swift in Sources */, - 2980E0921F073E8B000E02C6 /* NotificationSectionController.swift in Sources */, - 2974069F1F0EDED3003A6BFB /* IssueCommentTableCollectionCell.swift in Sources */, - 298BA08F1EC90FEE00B01946 /* UIView+BottomBorder.swift in Sources */, - 75468F7A1F7AFBC800F2BC19 /* AlertActionBuilder.swift in Sources */, - 292CD3C51F0C9EB200D3D57B /* IssueCommentModelHandling.swift in Sources */, - 292FCB141EDFCC510026635E /* IssueLabelsModel.swift in Sources */, - 2963A93B1EE25F6F0066509C /* LabelableFields+IssueLabelModel.swift in Sources */, - 2919294B1F3EAD890012067B /* IssueViewFilesCell.swift in Sources */, - 298BA08D1EC90A9000B01946 /* NSAttributedStringSizing.swift in Sources */, - 291929691F40EEBD0012067B /* NotificationsDataSource.swift in Sources */, - 2949674E1EF9719300B1CF1A /* IssueCommentHrCell.swift in Sources */, - 2963A9321EE1EBE20066509C /* UIMenuController+Reactions.swift in Sources */, - 98835BCE1F1965E2005BA24F /* UIDevice+Model.swift in Sources */, - 29A1950C1EC7901400C3E289 /* NotificationType.swift in Sources */, - 29A08FBE1F12EF7C00C5368E /* IssueReferencedCommitModel.swift in Sources */, - 2931892F1F539C0E00EF0911 /* IssueMilestoneSectionController.swift in Sources */, - 290D2A421F04D3470082E6CC /* IssueStatus.swift in Sources */, - 29A195041EC74C4800C3E289 /* Date+Display.swift in Sources */, - 29DA1E841F5E26310050C64B /* SearchRecentCell.swift in Sources */, - 295840DA1EEA07E4007723C6 /* IssueCommentQuoteCell.swift in Sources */, - 291929671F3FF9C50012067B /* BadgeNotifications.swift in Sources */, - 294B11241F7B37D300E04F2D /* ImageCellHeightCache.swift in Sources */, - 292FCB131EDFCC510026635E /* IssueLabelDotCell.swift in Sources */, - 292FCB1F1EDFCD750026635E /* IssueCommentReactionViewModel.swift in Sources */, - 294967531EFC1EDB00B1CF1A /* IssueCommentHtmlCell.swift in Sources */, - 292FF8B01F2FDC33009E63F7 /* IssueTextActionsView.swift in Sources */, - 297403DB1F18550200ABA95A /* IssueAssigneeSummaryModel.swift in Sources */, - 290744BC1F268D8300FD9E48 /* UserAutocomplete.swift in Sources */, - 292FCB161EDFCC510026635E /* IssueLabelSummaryCell.swift in Sources */, - 298BA0971EC947F100B01946 /* SegmentedControlCell.swift in Sources */, - 98647DF31F758CCF00A4DE7A /* NewIssueTableViewController.swift in Sources */, - 292CD3CA1F0DB36600D3D57B /* IssueReviewDetailsModel.swift in Sources */, - 297406A11F0EE51E003A6BFB /* MMElement+Table.swift in Sources */, - 29EB1EEF1F425E5100A200B4 /* ForegroundHandler.swift in Sources */, - 29316DC51ECC9841007CAE3F /* Alamofire+GithubAPI.swift in Sources */, - 29C33FDB1F127DBB00EC8D40 /* SplitPlaceholderViewController.swift in Sources */, - 29EE1C1D1F3A33890046A54D /* RepositoryLabel.swift in Sources */, - 292FCAFD1EDFCC510026635E /* IssueCollapsedBodies.swift in Sources */, - 292CD3D81F0DC52900D3D57B /* UIViewController+IssueCommentHtmlCellNavigationDelegate.swift in Sources */, - 295C31CD1F0AA55400521CED /* IssueStatusEvent.swift in Sources */, - 292FCAFA1EDFCC510026635E /* IssueCommentDetailsViewModel.swift in Sources */, - 29EE44461F19D5C100B05ED3 /* GithubClient+Issues.swift in Sources */, - 295F52AD1EF1BE83000B53CF /* CommentModelsFromMarkdown.swift in Sources */, - 2963A9341EE2118E0066509C /* ResponderButton.swift in Sources */, - 2981A8A41EFE9FC700E25EF1 /* GithubEmoji.swift in Sources */, - 29C9FDD81EC65FEE00EE3A52 /* User.swift in Sources */, - 29EDFE821F661562005BCCEB /* RepositoryReadmeModel.swift in Sources */, - 292FCB0A1EDFCC510026635E /* IssueCommentTextCell.swift in Sources */, - 299C06DA1F0DD87F00C2828E /* GithubClient+Paging.swift in Sources */, - 2928C78E1F15DF1B0000D06D /* IssueRenamedString.swift in Sources */, - 29C167671ECA005500439D62 /* Strings.swift in Sources */, - 2928C78A1F15D7E00000D06D /* IssueRenamedCell.swift in Sources */, - 293A45A61F29987C00DD1006 /* IssueCommitSectionController.swift in Sources */, - 29FB942E1EE751F70016E6D4 /* IssueLabeledSectionController.swift in Sources */, - 2905AFAB1F7357B40015AE32 /* RepositoryOverviewViewController.swift in Sources */, - 29416BFD1F118DD700D03E1A /* String+QueryItemValue.swift in Sources */, - 29316DC31ECC981D007CAE3F /* RootNavigationManager.swift in Sources */, - 2919295F1F3FD1F40012067B /* IssuePatchContentViewController.swift in Sources */, - 290EF5761F06BA06006A2160 /* NoNewNotificationsCell.swift in Sources */, - 295C31D11F0AA72000521CED /* IssueStatusEvent+ButtonState.swift in Sources */, - 29C9FDCF1EC65FEE00EE3A52 /* Organization.swift in Sources */, - 4920F1A81F72E27200131E9D /* UIViewController+UserActivity.swift in Sources */, + 29DA1E861F5E26D30050C64B /* SearchRecentSectionController.swift in Sources */, 29DA1E821F5DF5CC0050C64B /* SearchRecentStore.swift in Sources */, - 292FCAFF1EDFCC510026635E /* IssueCommentSectionController.swift in Sources */, - 986B871D1F2B8FCD00AAB55C /* SearchViewController.swift in Sources */, - 297AE87A1EC0D5C200B44A1F /* Authorization.swift in Sources */, - 98B5A0841F6C87A7000617D6 /* GitHubClient+NewIssue.swift in Sources */, - 294B111E1F7B07BB00E04F2D /* TabNavRootViewControllerType.swift in Sources */, - 298003401F51E93B00BE90F4 /* RatingCell.swift in Sources */, - 297403D51F18515A00ABA95A /* IssueAssigneeSummaryCell.swift in Sources */, - 297406981F0ED1E9003A6BFB /* SegmentedControlModel+Notifications.swift in Sources */, + 986B871B1F2B87DD00AAB55C /* SearchRepoResult.swift in Sources */, 986B87251F2B990A00AAB55C /* SearchRepoResultCell.swift in Sources */, - 2931892D1F539BA300EF0911 /* IssueMilestoneModel.swift in Sources */, - 290744B41F250A6800FD9E48 /* AutocompleteCell.swift in Sources */, - 29C1677A1ECA14F700439D62 /* Feed.swift in Sources */, - 292FCB171EDFCC510026635E /* IssueLabelSummaryModel.swift in Sources */, - 291929491F3EAD2E0012067B /* IssueViewFilesSectionController.swift in Sources */, - 291929511F3F76B10012067B /* IssueFilesViewController.swift in Sources */, - 98835BD41F1A17EE005BA24F /* Bundle+Version.swift in Sources */, - 29FB94301EE752280016E6D4 /* IssueLabeledCell.swift in Sources */, - 295C31C71F09E62600521CED /* NotificationNextPageCell.swift in Sources */, 986B87231F2B98AD00AAB55C /* SearchResultSectionController.swift in Sources */, - 29C295171EC7BCDA00D46CD2 /* NotificationsViewController.swift in Sources */, - 295840D81EEA0686007723C6 /* IssueCommentQuoteModel.swift in Sources */, - 292FCB101EDFCC510026635E /* IssueViewModels.swift in Sources */, - 29921BD01EF6261C00C1E848 /* MMElement+CodeBlock.swift in Sources */, - 29A08FC11F12F08100C5368E /* String+HashDisplay.swift in Sources */, - 29A08FBF1F12EF7C00C5368E /* IssueReferencedCommitSectionController.swift in Sources */, - 294563EE1EE5012900DBCD35 /* PullRequest+IssueType.swift in Sources */, + 986B871D1F2B8FCD00AAB55C /* SearchViewController.swift in Sources */, + 297AE87C1EC0D5C200B44A1F /* Secrets.swift in Sources */, + 298BA0971EC947F100B01946 /* SegmentedControlCell.swift in Sources */, + 297406981F0ED1E9003A6BFB /* SegmentedControlModel+Notifications.swift in Sources */, + 298BA09A1EC947FC00B01946 /* SegmentedControlModel.swift in Sources */, + 298BA0981EC947F100B01946 /* SegmentedControlSectionController.swift in Sources */, + 29C33FDF1F128D4400EC8D40 /* SelectableCell.swift in Sources */, + 297FB7781F51128A00F2E618 /* SettingsAccountsViewController.swift in Sources */, 292FF8AE1F2FD4A8009E63F7 /* SettingsViewController.swift in Sources */, - 29EE1C1B1F3A33000046A54D /* LabelsViewController.swift in Sources */, - 290744B51F250A6800FD9E48 /* EmojiAutocomplete.swift in Sources */, - 295C31C91F09E72D00521CED /* NotificationNextPageSectionController.swift in Sources */, - 292ACE181F5C945B00C9A02C /* RepositoryIssueSummaryModel.swift in Sources */, - 292CD3C81F0DB32700D3D57B /* IssueReviewDetailsCell.swift in Sources */, - 292FF8B71F303BD9009E63F7 /* IssuePreviewViewController.swift in Sources */, - 291929571F3FAFB00012067B /* IssueFileContentViewController.swift in Sources */, - 29FB942C1EE750DB0016E6D4 /* IssueLabeledModel.swift in Sources */, + 29EE444A1F19D85800B05ED3 /* ShowErrorStatusBar.swift in Sources */, + 295840711EE9F4D3007723C6 /* ShowMoreDetailsLabel+Date.swift in Sources */, 29C295111EC7B83200D46CD2 /* ShowMoreDetailsLabel.swift in Sources */, - 29C9FDCE1EC65FEE00EE3A52 /* Notification.swift in Sources */, - 986B872D1F2C846700AAB55C /* SearchNoResultsCell.swift in Sources */, - 297AE8791EC0D5C200B44A1F /* App.swift in Sources */, - 294563F01EE5036A00DBCD35 /* IssueType.swift in Sources */, - 29C53FC41F12EF4000A59ED5 /* IssueReferencedSectionController.swift in Sources */, - 29316DBD1ECC8970007CAE3F /* GithubUserSession.swift in Sources */, - 29DA1E801F5DF2960050C64B /* LoadMoreSectionController.swift in Sources */, - 297AE87E1EC0D5C200B44A1F /* AppDelegate.swift in Sources */, - 299E86491EFD9DBB00E5FE70 /* FlexController.m in Sources */, + 29973E561F68BFDE0004B693 /* Signature.swift in Sources */, + 2971722D1F069E96005E43AC /* SpinnerCell.swift in Sources */, + 2971722B1F069E6B005E43AC /* SpinnerSectionController.swift in Sources */, + 29C33FDB1F127DBB00EC8D40 /* SplitPlaceholderViewController.swift in Sources */, + 29AC90E51F00A7C8000B80E4 /* SplitViewControllerDelegate.swift in Sources */, + 29316DCD1ECD31E9007CAE3F /* StatusBar.swift in Sources */, + 29A08FC11F12F08100C5368E /* String+HashDisplay.swift in Sources */, 2931EA471EF7734B00AEE0FF /* String+NSRange.swift in Sources */, - 292CD3D41F0DC12100D3D57B /* PhotoViewHandler.swift in Sources */, + 29416BFD1F118DD700D03E1A /* String+QueryItemValue.swift in Sources */, + 29C167671ECA005500439D62 /* Strings.swift in Sources */, + 291929631F3FF0DA0012067B /* StyledTableCell.swift in Sources */, + 29C9FDE11EC667AE00EE3A52 /* Styles.swift in Sources */, + 29C9FDD71EC65FEE00EE3A52 /* Subject.swift in Sources */, + 294B11201F7B07DD00E04F2D /* TabBarControllerDelegate.swift in Sources */, + 294B111E1F7B07BB00E04F2D /* TabNavRootViewControllerType.swift in Sources */, + 754488B11F7ADF8D0032D08C /* UIAlertController+Action.swift in Sources */, + 2958406F1EE9F21E007723C6 /* UIButton+Label.swift in Sources */, + 29A195021EC66B8B00C3E289 /* UIColor+Hex.swift in Sources */, + 29A476A01ED0E6C6005D0953 /* UIColor+Overlay.swift in Sources */, + 98835BCE1F1965E2005BA24F /* UIDevice+Model.swift in Sources */, + 29921BCC1EF624D400C1E848 /* UIFont+MutableTraits.swift in Sources */, + 2963A9321EE1EBE20066509C /* UIMenuController+Reactions.swift in Sources */, + 98B5A0861F6D0FFE000617D6 /* UINavigationController+Replace.swift in Sources */, + 290744BA1F26863100FD9E48 /* UIScrollView+ScrollToBottom.swift in Sources */, + 294B11221F7B0B9500E04F2D /* UIScrollView+ScrollToTop.swift in Sources */, + 292FF8B21F302FE7009E63F7 /* UITextView+SelectedRange.swift in Sources */, + 298BA08F1EC90FEE00B01946 /* UIView+BottomBorder.swift in Sources */, + 297AE87F1EC0D5C200B44A1F /* UIViewController+Alerts.swift in Sources */, + 292CD3D61F0DC4DA00D3D57B /* UIViewController+AttributedStringViewDelegate.swift in Sources */, + 29CEA5CF1F84DCB3009827DB /* UIViewController+EmptyBackBar.swift in Sources */, + 292CD3D81F0DC52900D3D57B /* UIViewController+IssueCommentHtmlCellNavigationDelegate.swift in Sources */, + 297AE8801EC0D5C200B44A1F /* UIViewController+LoadingIndicator.swift in Sources */, + 292CD3D21F0DBEC000D3D57B /* UIViewController+Safari.swift in Sources */, + 290D2A3D1F044CB20082E6CC /* UIViewController+SmartDeselection.swift in Sources */, + 4920F1A81F72E27200131E9D /* UIViewController+UserActivity.swift in Sources */, + 29C9FDD81EC65FEE00EE3A52 /* User.swift in Sources */, + 290744BE1F268F8700FD9E48 /* UserAutocomplete+GraphQL.swift in Sources */, + 290744BC1F268D8300FD9E48 /* UserAutocomplete.swift in Sources */, + 292CD3D01F0DBB5C00D3D57B /* WebviewCellHeightCache.swift in Sources */, 29EE443F1F19B2D300B05ED3 /* WriteButton.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -2317,7 +2318,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Resources/Freetime-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -2342,7 +2343,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Resources/Freetime-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -2456,7 +2457,7 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = TESTFLIGHT; SWIFT_OBJC_BRIDGING_HEADER = "Resources/Freetime-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 4.0; }; name = TestFlight; }; diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index fa80b5c3..002d57b1 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -1020,7 +1020,7 @@ 09ABB0012F520B09C3499A2D81D157A1 /* FLEXExplorerToolbar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXExplorerToolbar.h; path = Classes/Toolbar/FLEXExplorerToolbar.h; sourceTree = ""; }; 09F60E51AFE9AB697DDD640B51AAB6CB /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; 0AE154054AF70A03FF33EC6C9650C5A3 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 0B20392CDE628D7E2A9CF898153F5B99 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage.framework; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0B20392CDE628D7E2A9CF898153F5B99 /* SDWebImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 0BF52968018EFB06137B34C3DA48D88A /* HTMLString-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HTMLString-umbrella.h"; sourceTree = ""; }; 0C5B9DB00B961F5D60CCFB239EAB66B7 /* TabmanBar+Config.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanBar+Config.swift"; path = "Sources/Tabman/TabmanBar/TabmanBar+Config.swift"; sourceTree = ""; }; 0CE36763A140881038943CA19922139F /* TUSafariActivity-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TUSafariActivity-prefix.pch"; sourceTree = ""; }; @@ -1028,7 +1028,7 @@ 0D2367920867E131C70D01DE192091A8 /* SwipeExpanding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeExpanding.swift; path = Source/SwipeExpanding.swift; sourceTree = ""; }; 0D7FEE017742F1FC30C70750DB6B69CF /* AlamofireNetworkActivityIndicator-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AlamofireNetworkActivityIndicator-prefix.pch"; sourceTree = ""; }; 0E4484C39BDB7A2D7D8EF9A16FD0184E /* PureLayout.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = PureLayout.xcconfig; sourceTree = ""; }; - 0EF655B990FB011FBD3779F0F35BF41D /* Pods-Freetime.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-Freetime.modulemap"; sourceTree = ""; }; + 0EF655B990FB011FBD3779F0F35BF41D /* Pods-Freetime.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Freetime.modulemap"; sourceTree = ""; }; 0F1E2D46167FECF0A6A365681572F4AB /* GraphQLResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphQLResponse.swift; path = Sources/Apollo/GraphQLResponse.swift; sourceTree = ""; }; 0F435535E111C078C04FBF09EFDE49CD /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0F9D20806C0D9E3FCA3A06A48BE81E28 /* Pods-FreetimeTests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FreetimeTests-resources.sh"; sourceTree = ""; }; @@ -1045,7 +1045,7 @@ 1367AFD7CD295A82D65D7C712F58DD18 /* PageboyViewController+ScrollDetection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PageboyViewController+ScrollDetection.swift"; path = "Sources/Pageboy/Extensions/PageboyViewController+ScrollDetection.swift"; sourceTree = ""; }; 13CD5BC87A3E60DB140E586ACACE290C /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; 13DF1FFE4403D12E65A11BC1D0CAB7B7 /* Tabman.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Tabman.xcconfig; sourceTree = ""; }; - 13F263270E6D0A4E32080B5BAC1EDBA0 /* FLEX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLEX.framework; path = FLEX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 13F263270E6D0A4E32080B5BAC1EDBA0 /* FLEX.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FLEX.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 140D75CA676DE8C6DE8FB33BE8BA3131 /* IGListBatchUpdateState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListBatchUpdateState.h; path = Source/Internal/IGListBatchUpdateState.h; sourceTree = ""; }; 145839C2DB4EE6257C13B6F4601452B2 /* FLEXObjectExplorerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXObjectExplorerViewController.h; path = Classes/ObjectExplorers/FLEXObjectExplorerViewController.h; sourceTree = ""; }; 1473AC88E3F8A9296F608F4DDA018D59 /* FLEXNetworkSettingsTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXNetworkSettingsTableViewController.m; path = Classes/Network/FLEXNetworkSettingsTableViewController.m; sourceTree = ""; }; @@ -1057,8 +1057,8 @@ 18A5A37F177C9378A6E487EFFF581E89 /* NSString+IGListDiffable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+IGListDiffable.m"; path = "Source/Common/NSString+IGListDiffable.m"; sourceTree = ""; }; 197A82A58C19D0935E272E1914C57BE7 /* NSLayoutConstraint+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+PureLayout.m"; path = "PureLayout/PureLayout/NSLayoutConstraint+PureLayout.m"; sourceTree = ""; }; 19AEC3B4E780E14C7DAD1031DB7CF3E7 /* FLEX.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLEX.xcconfig; sourceTree = ""; }; - 1A437ACDBD191DC6AE12A9BFB5584A05 /* Pods-FreetimeTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = "Pods-FreetimeTests.modulemap"; sourceTree = ""; }; - 1A6B6B8CFDD52D611D8B90FD4209C885 /* TUSafariActivity.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = TUSafariActivity.modulemap; sourceTree = ""; }; + 1A437ACDBD191DC6AE12A9BFB5584A05 /* Pods-FreetimeTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-FreetimeTests.modulemap"; sourceTree = ""; }; + 1A6B6B8CFDD52D611D8B90FD4209C885 /* TUSafariActivity.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = TUSafariActivity.modulemap; sourceTree = ""; }; 1B4CFB66DC27526370205EC19AC85C77 /* IGListSectionMap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListSectionMap.h; path = Source/Internal/IGListSectionMap.h; sourceTree = ""; }; 1BAB43417CBE3B8A58091E8E63556C64 /* MMParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MMParser.m; path = Source/MMParser.m; sourceTree = ""; }; 1C5F606169154FD853C9545C3C37D6CD /* SwipeTableViewCell+Accessibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwipeTableViewCell+Accessibility.swift"; path = "Source/SwipeTableViewCell+Accessibility.swift"; sourceTree = ""; }; @@ -1077,9 +1077,9 @@ 207E5F53784586F15A395281665B65EC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2080229F4DEC80DF14C74DA9D908807E /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; 20E6C05EFE3AAE182ECBAD88DDC5AD3F /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 224CED01C9DA1828B6CDD79E778051DA /* MMMarkdown.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MMMarkdown.framework; path = MMMarkdown.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 224CED01C9DA1828B6CDD79E778051DA /* MMMarkdown.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MMMarkdown.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 22CB70E2041AF3A08244FA57AA2BDE48 /* IGListReloadIndexPath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListReloadIndexPath.h; path = Source/Internal/IGListReloadIndexPath.h; sourceTree = ""; }; - 23574CA8BABB0C2334A2759C165F71FD /* FLEX.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = FLEX.modulemap; sourceTree = ""; }; + 23574CA8BABB0C2334A2759C165F71FD /* FLEX.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FLEX.modulemap; sourceTree = ""; }; 2490BCCCE68A299D8402977C65CCF2BC /* FLEXNetworkObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXNetworkObserver.h; path = Classes/Network/PonyDebugger/FLEXNetworkObserver.h; sourceTree = ""; }; 24A6476909AAA723528AC67CA136B99C /* Pageboy-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pageboy-prefix.pch"; sourceTree = ""; }; 24BB622CB6D28EFDAB45E67D9BF4A725 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; @@ -1088,10 +1088,10 @@ 2574CF2B1AB1CF1487D1BE8C70B012B5 /* FLEXClassesTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXClassesTableViewController.m; path = Classes/GlobalStateExplorers/FLEXClassesTableViewController.m; sourceTree = ""; }; 2596A672E81C016729DC707523C6B4D8 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; 25CB18264F5E8BD63BC1283FB0167550 /* FLEXArgumentInputFontView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputFontView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputFontView.m; sourceTree = ""; }; - 25DA07B71A30857BD3169AFA3F83E7B1 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SnapKit.modulemap; sourceTree = ""; }; + 25DA07B71A30857BD3169AFA3F83E7B1 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SnapKit.modulemap; sourceTree = ""; }; 2615E4355C8C76D1836A6F3D55F98940 /* safari-7.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "safari-7.png"; path = "Pod/Assets/safari-7.png"; sourceTree = ""; }; 2689F0278CBDCEBB78417F78B1449F6C /* NYTPhotoCaptionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NYTPhotoCaptionView.m; path = Pod/Classes/ios/NYTPhotoCaptionView.m; sourceTree = ""; }; - 2693DFBAAFF6AE3B0B42768487801E60 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ru.lproj; path = Pod/Assets/ru.lproj; sourceTree = ""; }; + 2693DFBAAFF6AE3B0B42768487801E60 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ru.lproj; path = Pod/Assets/ru.lproj; sourceTree = ""; }; 26E80AB8BC547A70E75C616ECD3132D4 /* FLEXArgumentInputSwitchView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXArgumentInputSwitchView.h; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputSwitchView.h; sourceTree = ""; }; 26FF918F10E6F3F65D225D8B51F3951B /* FLEXImagePreviewViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXImagePreviewViewController.m; path = Classes/ViewHierarchy/FLEXImagePreviewViewController.m; sourceTree = ""; }; 275FC9309D0456630E980D5B5B752E45 /* MMMarkdown-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MMMarkdown-dummy.m"; sourceTree = ""; }; @@ -1115,11 +1115,11 @@ 2D08843E677DFAA7EB1EA5E6A0AD4B8C /* MMSpanParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MMSpanParser.h; path = Source/MMSpanParser.h; sourceTree = ""; }; 2D2D82CC82F3B7D6F75B07D0C7A71D28 /* TUSafariActivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = TUSafariActivity.m; path = Pod/Classes/TUSafariActivity.m; sourceTree = ""; }; 2D704183BE42C5CA9AD3055422424EE1 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; - 2DBFC32A4E84FEA8DF5D3A5E1FE5D112 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = en.lproj; path = Pod/Assets/en.lproj; sourceTree = ""; }; + 2DBFC32A4E84FEA8DF5D3A5E1FE5D112 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Pod/Assets/en.lproj; sourceTree = ""; }; 2E991ACA531BC6DE8FDB94300EFB201A /* FLEXArgumentInputColorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXArgumentInputColorView.h; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputColorView.h; sourceTree = ""; }; 2EBA78446D474F80EA1DBCE3F02CD4D8 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; 2EDAA0CF263AA018E9DCED5EFCD6DCA1 /* IGListDebugger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListDebugger.m; path = Source/Internal/IGListDebugger.m; sourceTree = ""; }; - 2EE0286FDEDE9CC8E219E9479BE09C7C /* NYTPhotoViewer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NYTPhotoViewer.framework; path = NYTPhotoViewer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2EE0286FDEDE9CC8E219E9479BE09C7C /* NYTPhotoViewer.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NYTPhotoViewer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 2F091992937EE1CFCBFB2C172642B7BF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2F7D5AD6358B72A849B81D05266695AC /* FLEXArrayExplorerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArrayExplorerViewController.m; path = Classes/ObjectExplorers/FLEXArrayExplorerViewController.m; sourceTree = ""; }; 2F836CF2745800208D7AA34E5244AEF2 /* PageboyViewController+Transitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PageboyViewController+Transitioning.swift"; path = "Sources/Pageboy/Extensions/PageboyViewController+Transitioning.swift"; sourceTree = ""; }; @@ -1128,7 +1128,7 @@ 303BAB4E075093D9FFB9615CBFADD52C /* SwipeAction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeAction.swift; path = Source/SwipeAction.swift; sourceTree = ""; }; 30AB2CE6FAEB35ADB556046637F73A23 /* FLEXToolbarItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXToolbarItem.m; path = Classes/Toolbar/FLEXToolbarItem.m; sourceTree = ""; }; 3168A32093723DF4944D8A8D0CE17BF8 /* FLEXFieldEditorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXFieldEditorView.h; path = Classes/Editing/FLEXFieldEditorView.h; sourceTree = ""; }; - 3233C8E7DF3DBDC2D7A061BACBB94704 /* JDStatusBarNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = JDStatusBarNotification.modulemap; sourceTree = ""; }; + 3233C8E7DF3DBDC2D7A061BACBB94704 /* JDStatusBarNotification.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = JDStatusBarNotification.modulemap; sourceTree = ""; }; 3289B03424AEF2E77E7C6E81D61572E9 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; 32B68FBC84A71BFE736B362C73B0484E /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; 32D7A245816CC92C2CD4816F28FD085E /* HTMLString-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HTMLString-dummy.m"; sourceTree = ""; }; @@ -1138,13 +1138,13 @@ 3435EF29134CFA6CADED091FE8DD40E0 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; 343BFB7AD78CBB92356EE7E2DA69164C /* ResourceBundle-NYTPhotoViewer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-NYTPhotoViewer-Info.plist"; sourceTree = ""; }; 346DA3150BDDBDEABED73BDEE57DE815 /* IGListAdapter+DebugDescription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "IGListAdapter+DebugDescription.h"; path = "Source/Internal/IGListAdapter+DebugDescription.h"; sourceTree = ""; }; - 350D81191AD82BF58DBCB072758120ED /* vi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = vi.lproj; path = Pod/Assets/vi.lproj; sourceTree = ""; }; + 350D81191AD82BF58DBCB072758120ED /* vi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = vi.lproj; path = Pod/Assets/vi.lproj; sourceTree = ""; }; 35A6E6055D3D6B2974E1B66367F58382 /* FLEXRealmDatabaseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXRealmDatabaseManager.h; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXRealmDatabaseManager.h; sourceTree = ""; }; - 35C3B7A2027611D737131A41EA8049DA /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Alamofire.modulemap; sourceTree = ""; }; - 35DA8E3587BF0E0F881AC78FD425F8EF /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + 35C3B7A2027611D737131A41EA8049DA /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Alamofire.modulemap; sourceTree = ""; }; + 35DA8E3587BF0E0F881AC78FD425F8EF /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = FLAnimatedImage.modulemap; sourceTree = ""; }; 369B4377D9AF8426F33546E3EF1D71C8 /* FLEXSystemLogMessage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXSystemLogMessage.m; path = Classes/GlobalStateExplorers/SystemLog/FLEXSystemLogMessage.m; sourceTree = ""; }; 36DE879C9A7DAC8573CEFF08BE65DDB9 /* DataLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLoader.swift; path = Sources/Apollo/DataLoader.swift; sourceTree = ""; }; - 372087BC53845EEB2E949DD8D02DE896 /* PureLayout.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = PureLayout.modulemap; sourceTree = ""; }; + 372087BC53845EEB2E949DD8D02DE896 /* PureLayout.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = PureLayout.modulemap; sourceTree = ""; }; 376CC976D9DF7244F9EEA54A57D3BCB4 /* FLEXArgumentInputJSONObjectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputJSONObjectView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputJSONObjectView.m; sourceTree = ""; }; 37FD70565FEFD2EFDBAA14F5AFE9147F /* IGListSingleSectionController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListSingleSectionController.h; path = Source/IGListSingleSectionController.h; sourceTree = ""; }; 3817B839AAAFC37C9F2A18CA8377C994 /* NYTScalingImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NYTScalingImageView.h; path = Pod/Classes/ios/NYTScalingImageView.h; sourceTree = ""; }; @@ -1205,10 +1205,10 @@ 4E16BCEE0C248F10F1304D5B24E3D94D /* safari-7@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "safari-7@3x.png"; path = "Pod/Assets/safari-7@3x.png"; sourceTree = ""; }; 4E4127419BB8C478AAD69276DFE3610D /* FLEXObjectExplorerFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXObjectExplorerFactory.m; path = Classes/ObjectExplorers/FLEXObjectExplorerFactory.m; sourceTree = ""; }; 4E65E1AE5ECC3744B78ADB003D0F4B73 /* FLEXExplorerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXExplorerViewController.h; path = Classes/ExplorerInterface/FLEXExplorerViewController.h; sourceTree = ""; }; - 4F4196061DDB2ECB84C56762425251B7 /* IGListCollectionViewLayout.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = IGListCollectionViewLayout.mm; path = Source/IGListCollectionViewLayout.mm; sourceTree = ""; }; + 4F4196061DDB2ECB84C56762425251B7 /* IGListCollectionViewLayout.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = IGListCollectionViewLayout.mm; path = Source/IGListCollectionViewLayout.mm; sourceTree = ""; }; 4F9B6E8179A5953C206097F3D46C3D8F /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/UIView+WebCache.h"; sourceTree = ""; }; 4FF18040196CEBFE73A74CF86DE004B3 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 500E5DF65F2CFF2FEEEF8D52A3C0682A /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapKit.framework; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 500E5DF65F2CFF2FEEEF8D52A3C0682A /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5015C90B3AC955E744345FE67C4BD9B5 /* FLEXLiveObjectsTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXLiveObjectsTableViewController.h; path = Classes/GlobalStateExplorers/FLEXLiveObjectsTableViewController.h; sourceTree = ""; }; 50181C67526EB9A2680076571DD335CF /* safari-7@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "safari-7@2x.png"; path = "Pod/Assets/safari-7@2x.png"; sourceTree = ""; }; 5057060C46E70A5BCFE793D36552CD8E /* Tabman-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Tabman-prefix.pch"; sourceTree = ""; }; @@ -1243,25 +1243,25 @@ 59045B1F045C22515A44D634D2E95B2C /* FLEXFileBrowserSearchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXFileBrowserSearchOperation.m; path = Classes/GlobalStateExplorers/FLEXFileBrowserSearchOperation.m; sourceTree = ""; }; 595FAC109D97DA6667CAB811566A673B /* GraphQLSelectionSetMapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphQLSelectionSetMapper.swift; path = Sources/Apollo/GraphQLSelectionSetMapper.swift; sourceTree = ""; }; 5A2D32D3419DD27E321DEB127A6F5991 /* TabmanBarTransitionStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanBarTransitionStore.swift; path = Sources/Tabman/TabmanBar/Transitioning/TabmanBarTransitionStore.swift; sourceTree = ""; }; - 5A6F1B1EE4DDD68775032F87494BC866 /* HTMLString.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = HTMLString.modulemap; sourceTree = ""; }; + 5A6F1B1EE4DDD68775032F87494BC866 /* HTMLString.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = HTMLString.modulemap; sourceTree = ""; }; 5AD5A1D1CD186FCB81AF23633D4E536C /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/SDImageCacheConfig.m; sourceTree = ""; }; 5AFF2786A1087CCE2C512D435F9738B1 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; 5BA1054DFA392CD78579E606E861C03A /* safari-7~iPad@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "safari-7~iPad@2x.png"; path = "Pod/Assets/safari-7~iPad@2x.png"; sourceTree = ""; }; 5CCD52804B4E2C70BBD8D08004FA949E /* Apollo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Apollo-umbrella.h"; sourceTree = ""; }; 5D5A07B227C811BD40F90FAE332D5F7F /* CircularView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CircularView.swift; path = Sources/Tabman/TabmanBar/Components/Indicator/Views/CircularView.swift; sourceTree = ""; }; 5D780F99C2322F6EB4D0C4EB93D7FB07 /* NYTPhotoViewerCloseButtonXLandscape@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "NYTPhotoViewerCloseButtonXLandscape@3x.png"; path = "Pod/Assets/ios/NYTPhotoViewerCloseButtonXLandscape@3x.png"; sourceTree = ""; }; - 5DC6A9869CB5B698FEED79231E39D2E2 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SDWebImage.modulemap; sourceTree = ""; }; + 5DC6A9869CB5B698FEED79231E39D2E2 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SDWebImage.modulemap; sourceTree = ""; }; 5DF369F754D200ECA2C3FDB3B180CC3E /* FLEXInstancesTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXInstancesTableViewController.h; path = Classes/GlobalStateExplorers/FLEXInstancesTableViewController.h; sourceTree = ""; }; 5E1C1965308DED83AB9F7D969F3A51B5 /* IGListWorkingRangeDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListWorkingRangeDelegate.h; path = Source/IGListWorkingRangeDelegate.h; sourceTree = ""; }; 5EDB61DF711B78E99B93B6FE0286F7AC /* NYTPhotoViewer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NYTPhotoViewer-dummy.m"; sourceTree = ""; }; 5EE349C5E2485BB715DEEDB621AF58FD /* safari-7~iPad.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "safari-7~iPad.png"; path = "Pod/Assets/safari-7~iPad.png"; sourceTree = ""; }; - 5EE3C72A20E0F614DE0E05063172512B /* MMMarkdown.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = MMMarkdown.modulemap; sourceTree = ""; }; + 5EE3C72A20E0F614DE0E05063172512B /* MMMarkdown.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = MMMarkdown.modulemap; sourceTree = ""; }; 5F1F7A19E791EA0400822651535D67EE /* SDWebImage.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.xcconfig; sourceTree = ""; }; 5F790D829A643F1F1C1BDAC2C86B5C67 /* FLEXIvarEditorViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXIvarEditorViewController.m; path = Classes/Editing/FLEXIvarEditorViewController.m; sourceTree = ""; }; 5FAB8A747A1CDEAD4214943D3E770968 /* FLEX-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLEX-prefix.pch"; sourceTree = ""; }; 60634F75C9F04152720D207024A2B013 /* FLEXToolbarItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXToolbarItem.h; path = Classes/Toolbar/FLEXToolbarItem.h; sourceTree = ""; }; 6077FFD733D38D6F77376A3974E51982 /* FLEXTableColumnHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXTableColumnHeader.h; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXTableColumnHeader.h; sourceTree = ""; }; - 6158CDE5DAC64DCF73974FDB1C444396 /* IGListKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IGListKit.framework; path = IGListKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6158CDE5DAC64DCF73974FDB1C444396 /* IGListKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 61CAD737E4C9777DDAE184A3830937FB /* TransitionOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransitionOperation.swift; path = Sources/Pageboy/Utilities/Transitioning/TransitionOperation.swift; sourceTree = ""; }; 61D62EB10B406AE3C480E67D57BB9333 /* IGListIndexPathResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListIndexPathResult.h; path = Source/Common/IGListIndexPathResult.h; sourceTree = ""; }; 629E4CFFEDCD4E09B15C4C9A75529477 /* IGListAssert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListAssert.h; path = Source/Common/IGListAssert.h; sourceTree = ""; }; @@ -1296,17 +1296,17 @@ 6B242A7782ED12F6484340D4BE35DCC9 /* Swipeable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Swipeable.swift; path = Source/Swipeable.swift; sourceTree = ""; }; 6B28CCA12DB4D48455977E2266DA72F3 /* PureLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PureLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6BFD65325F2857E1B182A717343E2ECC /* SlackTextViewController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SlackTextViewController-prefix.pch"; sourceTree = ""; }; - 6C3E680F4AA93DB5CCDDE750AB0FD464 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = cs.lproj; path = Pod/Assets/cs.lproj; sourceTree = ""; }; + 6C3E680F4AA93DB5CCDDE750AB0FD464 /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = cs.lproj; path = Pod/Assets/cs.lproj; sourceTree = ""; }; 6C92AC646F9E11840AE659C09A73F6E5 /* FLEXTableContentCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXTableContentCell.h; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXTableContentCell.h; sourceTree = ""; }; - 6CACA96FD84A97260271D17F16BAD027 /* IGListBatchUpdateData.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = IGListBatchUpdateData.mm; path = Source/Common/IGListBatchUpdateData.mm; sourceTree = ""; }; - 6CF700064EBC218DED3169EA5ACE4006 /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = es.lproj; path = Pod/Assets/es.lproj; sourceTree = ""; }; + 6CACA96FD84A97260271D17F16BAD027 /* IGListBatchUpdateData.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = IGListBatchUpdateData.mm; path = Source/Common/IGListBatchUpdateData.mm; sourceTree = ""; }; + 6CF700064EBC218DED3169EA5ACE4006 /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = es.lproj; path = Pod/Assets/es.lproj; sourceTree = ""; }; 6D0648AADF035A94E175F5FD03AB46C1 /* FLEXWebViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXWebViewController.m; path = Classes/GlobalStateExplorers/FLEXWebViewController.m; sourceTree = ""; }; 6D0731C5B04CD7C65EC545E847A0F04C /* JDStatusBarView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JDStatusBarView.m; path = JDStatusBarNotification/JDStatusBarView.m; sourceTree = ""; }; 6D308999E50A4DB675E7C3C06F191F34 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; 6D6E1D9D512694194BF661B2E140E35D /* MMSpanParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MMSpanParser.m; path = Source/MMSpanParser.m; sourceTree = ""; }; 6DA2D580EC9765826D1E3E1BE33D0510 /* NYTPhotoViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NYTPhotoViewController.m; path = Pod/Classes/ios/NYTPhotoViewController.m; sourceTree = ""; }; 6E126603EA775806D687EB5F7FD1EDC0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6E3F05CB909D0998193F1D29DCF9E790 /* NYTPhotoViewer.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = NYTPhotoViewer.bundle; path = NYTPhotoViewer.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 6E3F05CB909D0998193F1D29DCF9E790 /* NYTPhotoViewer.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NYTPhotoViewer.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 6E7FD60A728F0714D4F76219947F5392 /* SwipeTableViewCell+Display.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwipeTableViewCell+Display.swift"; path = "Source/SwipeTableViewCell+Display.swift"; sourceTree = ""; }; 6F065FE079044F3DC65B8AB416977582 /* TabmanFixedButtonBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanFixedButtonBar.swift; path = Sources/Tabman/TabmanBar/Styles/TabmanFixedButtonBar.swift; sourceTree = ""; }; 6F18284975513C2E643D431737307D7E /* FLEXArgumentInputTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputTextView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputTextView.m; sourceTree = ""; }; @@ -1315,11 +1315,11 @@ 708C742052D744D0E550DE0303A97FEE /* MMScanner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MMScanner.h; path = Source/MMScanner.h; sourceTree = ""; }; 70B71B8857C12BEF6A910102860411F9 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; 71EDF0781B8EBCFDFCF602E9B1F3E2DC /* Apollo.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Apollo.xcconfig; sourceTree = ""; }; - 73621D5154EAC3905659B7B3D078051E /* Apollo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Apollo.modulemap; sourceTree = ""; }; - 73A50BCC31561632C25FDF9C9AB64C96 /* AlamofireNetworkActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AlamofireNetworkActivityIndicator.framework; path = AlamofireNetworkActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 73621D5154EAC3905659B7B3D078051E /* Apollo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Apollo.modulemap; sourceTree = ""; }; + 73A50BCC31561632C25FDF9C9AB64C96 /* AlamofireNetworkActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AlamofireNetworkActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74900B56483E397747E37A9ECE798BA4 /* FLEXRuntimeUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXRuntimeUtility.h; path = Classes/Utility/FLEXRuntimeUtility.h; sourceTree = ""; }; 7587694A03CC25C6ECB42DC0680C5D1B /* JSONSerializationFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = JSONSerializationFormat.swift; path = Sources/Apollo/JSONSerializationFormat.swift; sourceTree = ""; }; - 75A316539644F4352BEBE4889D38DD33 /* AlamofireNetworkActivityIndicator.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = AlamofireNetworkActivityIndicator.modulemap; sourceTree = ""; }; + 75A316539644F4352BEBE4889D38DD33 /* AlamofireNetworkActivityIndicator.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = AlamofireNetworkActivityIndicator.modulemap; sourceTree = ""; }; 75AA5D22D2AE6B2D61B54FE6768D2AE7 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 764DD4C7AD9C53CE678C1995A16B67F3 /* FLEXDatabaseManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXDatabaseManager.h; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXDatabaseManager.h; sourceTree = ""; }; 76947850481A57ED9E2540E92A986BA2 /* SwipeCollectionViewCell+Display.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "SwipeCollectionViewCell+Display.swift"; path = "Source/SwipeCollectionViewCell+Display.swift"; sourceTree = ""; }; @@ -1327,7 +1327,7 @@ 77C301B72564E26F8E9D40B984D99F92 /* IGListKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListKit.h; path = Source/IGListKit.h; sourceTree = ""; }; 78DDA3B0D0FCBC9945256D7C8D327F11 /* PureLayout+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "PureLayout+Internal.h"; path = "PureLayout/PureLayout/PureLayout+Internal.h"; sourceTree = ""; }; 78E858818CCD766A904D54443A8C479E /* FLEXNetworkCurlLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXNetworkCurlLogger.m; path = Classes/Network/FLEXNetworkCurlLogger.m; sourceTree = ""; }; - 791CB172F7D6A3925DCB06B0D94752E2 /* IGListDiff.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = IGListDiff.mm; path = Source/Common/IGListDiff.mm; sourceTree = ""; }; + 791CB172F7D6A3925DCB06B0D94752E2 /* IGListDiff.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = IGListDiff.mm; path = Source/Common/IGListDiff.mm; sourceTree = ""; }; 791DBDB1E71333E7CD9C84989EA06330 /* MMHTMLParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MMHTMLParser.m; path = Source/MMHTMLParser.m; sourceTree = ""; }; 791E7048C67DCBB126BE66E2092BC545 /* SlackTextViewController-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SlackTextViewController-dummy.m"; sourceTree = ""; }; 794557783CD8EFA320B48EB8D7D5BC8E /* FLEXSystemLogTableViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXSystemLogTableViewCell.h; path = Classes/GlobalStateExplorers/SystemLog/FLEXSystemLogTableViewCell.h; sourceTree = ""; }; @@ -1335,18 +1335,18 @@ 79BA1A312B91F7E1933B6E2334C344F3 /* SLKTextView+SLKAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SLKTextView+SLKAdditions.h"; path = "Source/SLKTextView+SLKAdditions.h"; sourceTree = ""; }; 79D61C24E39B7D6F4EAE0FA23F8D42C1 /* FLEXManager+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FLEXManager+Private.h"; path = "Classes/Manager/FLEXManager+Private.h"; sourceTree = ""; }; 7A6F61DE0438C3831DBCFB2F1FFDB276 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 7A936FA389ED66DF3E66411931BB2F25 /* PureLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = PureLayout.framework; path = PureLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7A936FA389ED66DF3E66411931BB2F25 /* PureLayout.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PureLayout.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AA2682558D63874FA86B7A4A6FEFA3B /* NYTPhotosOverlayView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NYTPhotosOverlayView.h; path = Pod/Classes/ios/NYTPhotosOverlayView.h; sourceTree = ""; }; 7B928B8934D25E68CBBBC2D5C64D0E96 /* TabmanChevronIndicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanChevronIndicator.swift; path = Sources/Tabman/TabmanBar/Components/Indicator/Styles/TabmanChevronIndicator.swift; sourceTree = ""; }; 7BF28CDA29D5B7538ACE4A236A2D65D9 /* PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = PureLayout.h; path = PureLayout/PureLayout/PureLayout.h; sourceTree = ""; }; 7BF655D2340606EB677CEF746E625878 /* Pods-FreetimeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FreetimeTests.release.xcconfig"; sourceTree = ""; }; - 7C25ABCE86687275668AD697B8AE576B /* TUSafariActivity.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = TUSafariActivity.framework; path = TUSafariActivity.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C25ABCE86687275668AD697B8AE576B /* TUSafariActivity.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TUSafariActivity.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7C3A8BFCCAF2C4C8F8974FC1D77B8BCF /* IGListIndexSetResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListIndexSetResult.m; path = Source/Common/IGListIndexSetResult.m; sourceTree = ""; }; 7C49040251A4D9A4632B9E6CDAC7B844 /* FLEXManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXManager.h; path = Classes/FLEXManager.h; sourceTree = ""; }; 7D16A55248549EC587647E813263B1A9 /* FLEXNetworkTransactionDetailTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXNetworkTransactionDetailTableViewController.m; path = Classes/Network/FLEXNetworkTransactionDetailTableViewController.m; sourceTree = ""; }; 7D21D3868C654188D019328DDE3B4ABB /* ALView+PureLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ALView+PureLayout.m"; path = "PureLayout/PureLayout/ALView+PureLayout.m"; sourceTree = ""; }; 7DB2F5C387DB086F8F724A375A85CD48 /* JDStatusBarNotification-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JDStatusBarNotification-dummy.m"; sourceTree = ""; }; - 7DBACEC5409A4761898BDFD3809719E2 /* SlackTextViewController.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SlackTextViewController.modulemap; sourceTree = ""; }; + 7DBACEC5409A4761898BDFD3809719E2 /* SlackTextViewController.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SlackTextViewController.modulemap; sourceTree = ""; }; 7DCCA7CC30045F613349BC8649D65175 /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; 7E4C50F526157D99C832455C10D40281 /* IGListBindingSectionController+DebugDescription.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "IGListBindingSectionController+DebugDescription.m"; path = "Source/Internal/IGListBindingSectionController+DebugDescription.m"; sourceTree = ""; }; 7F5848AAED146442CDF7E3F5EEB7FB8A /* AlamofireNetworkActivityIndicator-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AlamofireNetworkActivityIndicator-umbrella.h"; sourceTree = ""; }; @@ -1359,10 +1359,10 @@ 817ABCFF98F6D38CAD5E92C0FFF5A10E /* SwipeTableViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeTableViewCell.swift; path = Source/SwipeTableViewCell.swift; sourceTree = ""; }; 81A974E0E1789EC47EE04CE0C5645877 /* TabmanBlockTabBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanBlockTabBar.swift; path = Sources/Tabman/TabmanBar/Styles/TabmanBlockTabBar.swift; sourceTree = ""; }; 81BAF33337BBC91EFB5ED98C89AEA09C /* UIScrollView+Interaction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIScrollView+Interaction.swift"; path = "Sources/Tabman/Utilities/UIScrollView+Interaction.swift"; sourceTree = ""; }; - 81D25B9F42FF0EB499990F8ADE5D74A3 /* fi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fi.lproj; path = Pod/Assets/fi.lproj; sourceTree = ""; }; - 822AB2931D00D3BD89E5B18BC1662354 /* SlackTextViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SlackTextViewController.framework; path = SlackTextViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 81D25B9F42FF0EB499990F8ADE5D74A3 /* fi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = fi.lproj; path = Pod/Assets/fi.lproj; sourceTree = ""; }; + 822AB2931D00D3BD89E5B18BC1662354 /* SlackTextViewController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SlackTextViewController.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 833CD3EAE144CBC606557EFFE66B2C72 /* TabmanIndicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanIndicator.swift; path = Sources/Tabman/TabmanBar/Components/Indicator/TabmanIndicator.swift; sourceTree = ""; }; - 83630246949CEA4BD463CF775D6321F0 /* JDStatusBarNotification.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JDStatusBarNotification.framework; path = JDStatusBarNotification.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 83630246949CEA4BD463CF775D6321F0 /* JDStatusBarNotification.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JDStatusBarNotification.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 83850726BFD30DA59A4EFA1BBC7CD6A5 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; 83F759BC1C40E8924B6028026DDC2578 /* FLEXNetworkSettingsTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXNetworkSettingsTableViewController.h; path = Classes/Network/FLEXNetworkSettingsTableViewController.h; sourceTree = ""; }; 8496F9D0C4D19B936909BCD5DEFADD0F /* FLEXArgumentInputColorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputColorView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputColorView.m; sourceTree = ""; }; @@ -1375,12 +1375,12 @@ 87036F5C8FFEE7F2F15B775971628E34 /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; 87546130F17612F0D27B1DDCD30F6DAD /* Mappings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Mappings.swift; path = Sources/HTMLString/Mappings.swift; sourceTree = ""; }; 879CDEC9C1800369C1A1138FF3DCE254 /* SwipeAnimator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeAnimator.swift; path = Source/SwipeAnimator.swift; sourceTree = ""; }; - 87A8D79753507E88920ABF3FDF1C5671 /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = it.lproj; path = Pod/Assets/it.lproj; sourceTree = ""; }; + 87A8D79753507E88920ABF3FDF1C5671 /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = it.lproj; path = Pod/Assets/it.lproj; sourceTree = ""; }; 87F6C256D1CA66F4882206E54CD47AD4 /* UICollectionView+DebugDescription.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+DebugDescription.m"; path = "Source/Internal/UICollectionView+DebugDescription.m"; sourceTree = ""; }; 88258E5E9CFE92096EC4114366422742 /* IGListUpdatingDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListUpdatingDelegate.h; path = Source/IGListUpdatingDelegate.h; sourceTree = ""; }; - 886D08F84821B465B380098B4060E76E /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = nl.lproj; path = Pod/Assets/nl.lproj; sourceTree = ""; }; - 88BB244899E3F88DCD021E5C04AAC18C /* IGListWorkingRangeHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = IGListWorkingRangeHandler.mm; path = Source/Internal/IGListWorkingRangeHandler.mm; sourceTree = ""; }; - 88E5FEE85F381550903DDE8E64D49E4C /* Tabman.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Tabman.framework; path = Tabman.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 886D08F84821B465B380098B4060E76E /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = nl.lproj; path = Pod/Assets/nl.lproj; sourceTree = ""; }; + 88BB244899E3F88DCD021E5C04AAC18C /* IGListWorkingRangeHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.objcpp; name = IGListWorkingRangeHandler.mm; path = Source/Internal/IGListWorkingRangeHandler.mm; sourceTree = ""; }; + 88E5FEE85F381550903DDE8E64D49E4C /* Tabman.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Tabman.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 89ABAEDFB37A12DF26A7CB2FB7ED05BD /* SlackTextViewController-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SlackTextViewController-umbrella.h"; sourceTree = ""; }; 89C887933F9A85886BE3951C41FB1890 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; 89F7FD0DA26B4232E39143DC7B714C12 /* NYTPhotoViewer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NYTPhotoViewer-prefix.pch"; sourceTree = ""; }; @@ -1394,7 +1394,7 @@ 8E0C4D78E0A9B34AE64F0882186977F0 /* IGListDebuggingUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListDebuggingUtilities.m; path = Source/Internal/IGListDebuggingUtilities.m; sourceTree = ""; }; 8E9738B6430AEA8693CEDBBB3936F901 /* IGListAdapterUpdater.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListAdapterUpdater.m; path = Source/IGListAdapterUpdater.m; sourceTree = ""; }; 8FD775C4AA23ECD3B3D46B11A361B3AD /* IGListBindingSectionControllerDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListBindingSectionControllerDataSource.h; path = Source/IGListBindingSectionControllerDataSource.h; sourceTree = ""; }; - 9111BB93482BA3001147961F5A6ADCD5 /* SwipeCellKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = SwipeCellKit.modulemap; sourceTree = ""; }; + 9111BB93482BA3001147961F5A6ADCD5 /* SwipeCellKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwipeCellKit.modulemap; sourceTree = ""; }; 9162382BCC5C138699B5ACC47F370903 /* FLEXFileBrowserFileOperationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXFileBrowserFileOperationController.h; path = Classes/GlobalStateExplorers/FLEXFileBrowserFileOperationController.h; sourceTree = ""; }; 916DDB48C03EA50E8B140B6D848BA8FC /* JDStatusBarStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JDStatusBarStyle.m; path = JDStatusBarNotification/JDStatusBarStyle.m; sourceTree = ""; }; 918416F49A4FC6C130BC17FE63BFACA5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -1405,10 +1405,10 @@ 92CD3F69EB41648DDD6FF60A436069AB /* ContentViewScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContentViewScrollView.swift; path = Sources/Tabman/Utilities/ContentViewScrollView.swift; sourceTree = ""; }; 92ECB24D47A9375C6877A88A8D592060 /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; 933E415CAD2D0A1C802412449D9CEEC7 /* Tabman-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Tabman-dummy.m"; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 93CDCA29AC979A985AA9E1FFCAEA11C1 /* TabmanBlockIndicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanBlockIndicator.swift; path = Sources/Tabman/TabmanBar/Components/Indicator/Styles/TabmanBlockIndicator.swift; sourceTree = ""; }; 941398CDCE832AFD05CCFC7663025064 /* PureLayout-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "PureLayout-dummy.m"; sourceTree = ""; }; - 9420277F7B728F6542FC16A0FCDDCC48 /* eu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = eu.lproj; path = Pod/Assets/eu.lproj; sourceTree = ""; }; + 9420277F7B728F6542FC16A0FCDDCC48 /* eu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = eu.lproj; path = Pod/Assets/eu.lproj; sourceTree = ""; }; 95AA35F123BA28FFF2D3555F79CDB594 /* SwipeTransitionLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeTransitionLayout.swift; path = Source/SwipeTransitionLayout.swift; sourceTree = ""; }; 972A6FA4282568871C1CDB85B7D74C35 /* FLEXUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXUtility.m; path = Classes/Utility/FLEXUtility.m; sourceTree = ""; }; 975BB5A81AB5ECFB0EB4D70A346E5B16 /* IGListDiffKit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListDiffKit.h; path = Source/Common/IGListDiffKit.h; sourceTree = ""; }; @@ -1431,7 +1431,7 @@ 9F07EF490A7B9917C45AFDA7BEC89AD9 /* Tabman.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Tabman.h; path = Sources/Tabman/Tabman.h; sourceTree = ""; }; 9F509AC9B3048C7319B6AFC48AA94BCC /* NYTPhotosOverlayView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NYTPhotosOverlayView.m; path = Pod/Classes/ios/NYTPhotosOverlayView.m; sourceTree = ""; }; 9F9BAB5AEFC91138F7B52BC62A161055 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - 9FAD03B537BAE8392A3C022FDAD48B03 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = de.lproj; path = Pod/Assets/de.lproj; sourceTree = ""; }; + 9FAD03B537BAE8392A3C022FDAD48B03 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = de.lproj; path = Pod/Assets/de.lproj; sourceTree = ""; }; A02BC3CAFB48DB940B72756BCE276AD3 /* safari.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = safari.png; path = Pod/Assets/safari.png; sourceTree = ""; }; A052756AE643CFFA7DEDFC1165C841C9 /* Pods-Freetime-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Freetime-acknowledgements.plist"; sourceTree = ""; }; A0787289E99D83F8F5B1A26A9BC68D2C /* IGListDiff.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListDiff.h; path = Source/Common/IGListDiff.h; sourceTree = ""; }; @@ -1444,7 +1444,7 @@ A3640286DCA8694CCA2D0117B581E697 /* TabmanScrollingBarIndicatorTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanScrollingBarIndicatorTransition.swift; path = Sources/Tabman/TabmanBar/Transitioning/IndicatorTransition/TabmanScrollingBarIndicatorTransition.swift; sourceTree = ""; }; A3F0751D0A743E701CA68FCB40038697 /* IGListAdapterUpdater+DebugDescription.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "IGListAdapterUpdater+DebugDescription.h"; path = "Source/Internal/IGListAdapterUpdater+DebugDescription.h"; sourceTree = ""; }; A4040DEA42972ACF48AC1C4F8D5B54F2 /* NetworkActivityIndicatorManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityIndicatorManager.swift; path = Source/NetworkActivityIndicatorManager.swift; sourceTree = ""; }; - A4DD8CFD8CDE609FEA0AE7543DBC73C6 /* SwipeCellKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SwipeCellKit.framework; path = SwipeCellKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4DD8CFD8CDE609FEA0AE7543DBC73C6 /* SwipeCellKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwipeCellKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A5352C3E51B4EF6E3D3C45E152DF21B8 /* IGListCollectionContext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListCollectionContext.h; path = Source/IGListCollectionContext.h; sourceTree = ""; }; A5E8A8C9BE703824B35C87AABD03D8D7 /* FLEXIvarEditorViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXIvarEditorViewController.h; path = Classes/Editing/FLEXIvarEditorViewController.h; sourceTree = ""; }; A62DF45F71923EB9D4159E7B5B4D1733 /* TabmanBar+Indicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanBar+Indicator.swift"; path = "Sources/Tabman/TabmanBar/TabmanBar+Indicator.swift"; sourceTree = ""; }; @@ -1456,10 +1456,10 @@ A86A5B40B1E38601AF456863BFDE814C /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; A96577EB439F32A5E239186EFBEA9A86 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; A9B45A668DCC0D62AD8A3EB1CB5A9FBF /* FLEXKeyboardHelpViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXKeyboardHelpViewController.h; path = Classes/Utility/FLEXKeyboardHelpViewController.h; sourceTree = ""; }; - A9F6A33895544B8C931039CF4DD6B358 /* Pageboy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pageboy.framework; path = Pageboy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A9F6A33895544B8C931039CF4DD6B358 /* Pageboy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pageboy.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A9FEC9AD23924A6D08A5BC12A54291D6 /* FLEXArgumentInputNumberView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputNumberView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputNumberView.m; sourceTree = ""; }; AA473A8301701B9A9DB05473FEEBC885 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - AA47A7C53F0CB9B042D9642CEB8C20C6 /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ko.lproj; path = Pod/Assets/ko.lproj; sourceTree = ""; }; + AA47A7C53F0CB9B042D9642CEB8C20C6 /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ko.lproj; path = Pod/Assets/ko.lproj; sourceTree = ""; }; AAA1B1C49FF7DA8E3F705637CE84E420 /* FLEXMultiColumnTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXMultiColumnTableView.m; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXMultiColumnTableView.m; sourceTree = ""; }; AACB60E7665D7AAE20BFC7170411F49E /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; AB0CB8B1B2A588CF17DE9C63B9273F2D /* FLEXHeapEnumerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXHeapEnumerator.h; path = Classes/Utility/FLEXHeapEnumerator.h; sourceTree = ""; }; @@ -1472,7 +1472,7 @@ AE03E05D634BDD5DBAFE2AFE16EFACAF /* JDStatusBarNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JDStatusBarNotification.m; path = JDStatusBarNotification/JDStatusBarNotification.m; sourceTree = ""; }; AE1C692674EEC6B662F47B95C99FB4F3 /* MMMarkdown.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MMMarkdown.m; path = Source/MMMarkdown.m; sourceTree = ""; }; AE31FA2BC7295EE9DCE5F36661B637E1 /* FLEXSystemLogTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXSystemLogTableViewCell.m; path = Classes/GlobalStateExplorers/SystemLog/FLEXSystemLogTableViewCell.m; sourceTree = ""; }; - AE4C52EC953D9D4A8011A433780E36C0 /* FLAnimatedImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage.framework; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AE4C52EC953D9D4A8011A433780E36C0 /* FLAnimatedImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AEE04E7840CDC9ED13363DE0F6136F1E /* Apollo-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Apollo-prefix.pch"; sourceTree = ""; }; AF085CE6C279334E008A38FFBAAD64CD /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; AF17A3F90775C2A06F9560EF7D0B7964 /* FLEXClassExplorerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXClassExplorerViewController.h; path = Classes/ObjectExplorers/FLEXClassExplorerViewController.h; sourceTree = ""; }; @@ -1480,7 +1480,7 @@ AF664B00E4B76810F591F722FB38D24A /* MMElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MMElement.h; path = Source/MMElement.h; sourceTree = ""; }; B01B79A565AFE6BC734D3CE1B0DF89E6 /* TUSafariActivity.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = TUSafariActivity.xcconfig; sourceTree = ""; }; B11BD7376497007B61221C11B0946870 /* FLEXDictionaryExplorerViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXDictionaryExplorerViewController.m; path = Classes/ObjectExplorers/FLEXDictionaryExplorerViewController.m; sourceTree = ""; }; - B18100BD3DEA37EB871A800C9768F61B /* zh_CN.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = zh_CN.lproj; path = Pod/Assets/zh_CN.lproj; sourceTree = ""; }; + B18100BD3DEA37EB871A800C9768F61B /* zh_CN.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = zh_CN.lproj; path = Pod/Assets/zh_CN.lproj; sourceTree = ""; }; B1D5B3D074588C988B31DCB83B863A2C /* UIPageViewController+ScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIPageViewController+ScrollView.swift"; path = "Sources/Pageboy/Utilities/ViewUtilities/UIPageViewController+ScrollView.swift"; sourceTree = ""; }; B1DCCCBCD01F7CFB66C5CA093C511F65 /* TabmanItemColorCrossfadeTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanItemColorCrossfadeTransition.swift; path = Sources/Tabman/TabmanBar/Transitioning/ItemTransition/TabmanItemColorCrossfadeTransition.swift; sourceTree = ""; }; B267F2B66A9C87B20A9A4F90AA7BB236 /* Separator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Separator.swift; path = Sources/Tabman/TabmanBar/Components/Separator/Separator.swift; sourceTree = ""; }; @@ -1506,10 +1506,10 @@ B7E7D61E508BDBE11E557CD6F408C91A /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; B8BE2D0A5E1AD470B9A85BD3B6B0ADEF /* IGListCollectionViewLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListCollectionViewLayout.h; path = Source/IGListCollectionViewLayout.h; sourceTree = ""; }; B91A8ADFEF800A4004326CEB4211D30E /* SLKTypingIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SLKTypingIndicatorProtocol.h; path = Source/SLKTypingIndicatorProtocol.h; sourceTree = ""; }; - B92FDC99CF9D2D3AB3197518CE5AD423 /* Apollo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Apollo.framework; path = Apollo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B92FDC99CF9D2D3AB3197518CE5AD423 /* Apollo.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Apollo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; B9A03B8286839BDC79743AB89E28A53C /* PageboyViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PageboyViewController.swift; path = Sources/Pageboy/PageboyViewController.swift; sourceTree = ""; }; B9B60AB0C1202C273A2D5F2B5406FB19 /* FLEXArgumentInputViewFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXArgumentInputViewFactory.h; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputViewFactory.h; sourceTree = ""; }; - BB05AAC95C32FDB2080AF9D4B402EAC9 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pl.lproj; path = Pod/Assets/pl.lproj; sourceTree = ""; }; + BB05AAC95C32FDB2080AF9D4B402EAC9 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = pl.lproj; path = Pod/Assets/pl.lproj; sourceTree = ""; }; BB4D9C95CF90DB085617F45C03208D4E /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; BB5B83BA283A902AF96D16BDC0B07714 /* FLEXClassesTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXClassesTableViewController.h; path = Classes/GlobalStateExplorers/FLEXClassesTableViewController.h; sourceTree = ""; }; BB9EE94B219A840D31BA1BEFE5656818 /* FLEXHierarchyTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXHierarchyTableViewCell.m; path = Classes/ViewHierarchy/FLEXHierarchyTableViewCell.m; sourceTree = ""; }; @@ -1528,7 +1528,7 @@ BF12E52EDE4870A958DD96CA73D49040 /* UIScrollView+SLKAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+SLKAdditions.m"; path = "Source/UIScrollView+SLKAdditions.m"; sourceTree = ""; }; BF31BF7BD7332A1831308B929CB8D8A1 /* FLEXExplorerToolbar.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXExplorerToolbar.m; path = Classes/Toolbar/FLEXExplorerToolbar.m; sourceTree = ""; }; BF634F269FF6A7A7FEE99E78F7B3B3E7 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; - BF6F69BE51175ECC980FA87528207557 /* HTMLString.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HTMLString.framework; path = HTMLString.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BF6F69BE51175ECC980FA87528207557 /* HTMLString.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = HTMLString.framework; sourceTree = BUILT_PRODUCTS_DIR; }; BF8ACC072A2D447CF9BE92D978F77432 /* FLEXSQLiteDatabaseManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXSQLiteDatabaseManager.m; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXSQLiteDatabaseManager.m; sourceTree = ""; }; BFEA6736B60748078F442C70F0B53B4B /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; C090A477E43910E35E91C0B2B3B92142 /* HTMLString.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HTMLString.xcconfig; sourceTree = ""; }; @@ -1546,14 +1546,14 @@ C3FAF4313B804BE38B63DAAD00543045 /* NSString+IGListDiffable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+IGListDiffable.h"; path = "Source/Common/NSString+IGListDiffable.h"; sourceTree = ""; }; C40AEB7F08C3D624286891979EA4B34E /* NYTPhotosViewControllerDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NYTPhotosViewControllerDataSource.h; path = Pod/Classes/ios/Protocols/NYTPhotosViewControllerDataSource.h; sourceTree = ""; }; C4CBAEB5AC7FC86F1E0F5DA204E56C23 /* SLKTextInput.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SLKTextInput.h; path = Source/SLKTextInput.h; sourceTree = ""; }; - C540CC8A5D2FFDBDBD6A499E797EC32C /* Pageboy.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Pageboy.modulemap; sourceTree = ""; }; + C540CC8A5D2FFDBDBD6A499E797EC32C /* Pageboy.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Pageboy.modulemap; sourceTree = ""; }; C55229CE0CA1006087BED556A770C4A6 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C562E68C0FBB5EBAAECEC3BB7BE50328 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; C60C0B47DD73E47D2D307A72409FA898 /* Pods-FreetimeTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FreetimeTests.debug.xcconfig"; sourceTree = ""; }; C62139FAC52DF2CD617E27A06F3D1402 /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; C64DF2D323AC49A9CB3DC68DE0E87018 /* TUSafariActivity-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "TUSafariActivity-umbrella.h"; sourceTree = ""; }; C65CEE0C22E5627033BE5FEB2218B527 /* FLEXResources.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXResources.m; path = Classes/Utility/FLEXResources.m; sourceTree = ""; }; - C6937E99C7649208691F64B75D1F01F9 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sv.lproj; path = Pod/Assets/sv.lproj; sourceTree = ""; }; + C6937E99C7649208691F64B75D1F01F9 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = sv.lproj; path = Pod/Assets/sv.lproj; sourceTree = ""; }; C6A7EB614B5695297B5EDE6DEE0B7D27 /* FLEXManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXManager.m; path = Classes/Manager/FLEXManager.m; sourceTree = ""; }; C6B11F41A2E38D60BA2A4F5B781E0925 /* UIResponder+SLKAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIResponder+SLKAdditions.h"; path = "Source/UIResponder+SLKAdditions.h"; sourceTree = ""; }; C6EABD623690DE446552B595263E2F34 /* Record.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Record.swift; path = Sources/Apollo/Record.swift; sourceTree = ""; }; @@ -1562,18 +1562,18 @@ C78B54631C309259AE5E9EAD7C35E10F /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C7FD92387E7B6B01BD2A916FE1B4F61B /* NSArray+PureLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+PureLayout.h"; path = "PureLayout/PureLayout/NSArray+PureLayout.h"; sourceTree = ""; }; C820D695BC39C24BAF3F7EA6D7617E80 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C9746B069593476A961B0E3E5C101DDF /* Pods_FreetimeTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_FreetimeTests.framework; path = "Pods-FreetimeTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + C9746B069593476A961B0E3E5C101DDF /* Pods_FreetimeTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FreetimeTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C976F3279BF50674A95642CB35C125D9 /* IGListWorkingRangeHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListWorkingRangeHandler.h; path = Source/Internal/IGListWorkingRangeHandler.h; sourceTree = ""; }; C9FE4DEF4B2C9D8E04C7B661C0AA3FA8 /* TabmanBar+BackgroundView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanBar+BackgroundView.swift"; path = "Sources/Tabman/TabmanBar/Components/Background/TabmanBar+BackgroundView.swift"; sourceTree = ""; }; CA15D2AE15125765C0B4C12805BE952D /* FLAnimatedImage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; CA926B99F875BCC625F29B4CF7329385 /* FLEXSetExplorerViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXSetExplorerViewController.h; path = Classes/ObjectExplorers/FLEXSetExplorerViewController.h; sourceTree = ""; }; CAA05382E2C85B19D3DF7EA97338991D /* Apollo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Apollo-dummy.m"; sourceTree = ""; }; CAEFA21B0794E1C9013ADA401FD772E9 /* TabmanViewController+Insetting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanViewController+Insetting.swift"; path = "Sources/Tabman/TabmanViewController+Insetting.swift"; sourceTree = ""; }; - CBA0EB668EC05D9DE40F993656DF15B5 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = fr.lproj; path = Pod/Assets/fr.lproj; sourceTree = ""; }; + CBA0EB668EC05D9DE40F993656DF15B5 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = fr.lproj; path = Pod/Assets/fr.lproj; sourceTree = ""; }; CCB794473957507CE486FD34B338B538 /* TabmanScrollingButtonBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanScrollingButtonBar.swift; path = Sources/Tabman/TabmanBar/Styles/TabmanScrollingButtonBar.swift; sourceTree = ""; }; CD31441468E52E794B3749842FD39BFD /* SLKTextInputbar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SLKTextInputbar.h; path = Source/SLKTextInputbar.h; sourceTree = ""; }; CD90AF1153CD93EC2CBD9F0C72EB43C9 /* IGListAdapterUpdaterInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListAdapterUpdaterInternal.h; path = Source/Internal/IGListAdapterUpdaterInternal.h; sourceTree = ""; }; - CDCDC162F60A8D2DB1A62E840C2B75FA /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = ja.lproj; path = Pod/Assets/ja.lproj; sourceTree = ""; }; + CDCDC162F60A8D2DB1A62E840C2B75FA /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ja.lproj; path = Pod/Assets/ja.lproj; sourceTree = ""; }; CE2B9362F33ED44D84CCFD16BC049FD9 /* SlackTextViewController.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SlackTextViewController.xcconfig; sourceTree = ""; }; CF7C2B233EC7C6795E8E0775BF08B6E0 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CFF3FEAEDFB50C9D8A8BAA7789A4D636 /* IGListMoveIndex.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListMoveIndex.m; path = Source/Common/IGListMoveIndex.m; sourceTree = ""; }; @@ -1599,12 +1599,12 @@ D2FBD6108D52089D07306E4E4D510412 /* Pods-FreetimeTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FreetimeTests-frameworks.sh"; sourceTree = ""; }; D3E82A74B53B8544A3E45E04FBD77D1D /* TabmanItemMaskTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TabmanItemMaskTransition.swift; path = Sources/Tabman/TabmanBar/Transitioning/ItemTransition/TabmanItemMaskTransition.swift; sourceTree = ""; }; D41638828A4A96286E6E28119992943A /* NSNumber+IGListDiffable.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+IGListDiffable.m"; path = "Source/Common/NSNumber+IGListDiffable.m"; sourceTree = ""; }; - D423B8028B36AAE8DB78971DFED43701 /* TUSafariActivity.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = TUSafariActivity.bundle; path = TUSafariActivity.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + D423B8028B36AAE8DB78971DFED43701 /* TUSafariActivity.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TUSafariActivity.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; D434F5E7B1A54BD42434E56C9199F368 /* TabmanBar+Insets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanBar+Insets.swift"; path = "Sources/Tabman/TabmanBar/TabmanBar+Insets.swift"; sourceTree = ""; }; D4726423A94EEFBFD0B4459B554861A8 /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; D4AE4F980DF2E76C02C604FD16907FCD /* FLEXFieldEditorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXFieldEditorView.m; path = Classes/Editing/FLEXFieldEditorView.m; sourceTree = ""; }; D4F42C3636B27252B4E637708A371109 /* FLEXNetworkTransactionTableViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXNetworkTransactionTableViewCell.m; path = Classes/Network/FLEXNetworkTransactionTableViewCell.m; sourceTree = ""; }; - D536CB339FE6D3A8E01A2283A30C9688 /* NYTPhotoViewer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = NYTPhotoViewer.modulemap; sourceTree = ""; }; + D536CB339FE6D3A8E01A2283A30C9688 /* NYTPhotoViewer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = NYTPhotoViewer.modulemap; sourceTree = ""; }; D5E9E732A08B58670969F71D6BB57729 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; D66E1660DF673078E8E25BF90B935072 /* NSImage+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+WebCache.m"; path = "SDWebImage/NSImage+WebCache.m"; sourceTree = ""; }; D75D9DE6C3A7BBA7F4885D70DCC6238F /* FLEXArgumentInputDateView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputDateView.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputDateView.m; sourceTree = ""; }; @@ -1649,12 +1649,12 @@ E4716AF694C995E959262AF833A078FA /* FLEXNetworkHistoryTableViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXNetworkHistoryTableViewController.h; path = Classes/Network/FLEXNetworkHistoryTableViewController.h; sourceTree = ""; }; E4956557FE981F7A94857912E1DE120E /* SLKTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SLKTextView.h; path = Source/SLKTextView.h; sourceTree = ""; }; E4AF8F8F0D909FD7EEE525E16D7FCE2E /* IGListMoveIndexPath.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListMoveIndexPath.m; path = Source/Common/IGListMoveIndexPath.m; sourceTree = ""; }; - E4CCA99BC7CE9761405D73AC31204E4C /* Tabman.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = Tabman.modulemap; sourceTree = ""; }; + E4CCA99BC7CE9761405D73AC31204E4C /* Tabman.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Tabman.modulemap; sourceTree = ""; }; E4CFDCEC6FB7A71DC4FC61B5B405A966 /* FLEXArgumentInputStringView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXArgumentInputStringView.h; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputStringView.h; sourceTree = ""; }; - E4F1C6D8878160C0AA7CCC752D5379FC /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E4F1C6D8878160C0AA7CCC752D5379FC /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E58244A6E68A8D488C073444C4DB5934 /* FLEXTableListViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXTableListViewController.m; path = Classes/GlobalStateExplorers/DatabaseBrowser/FLEXTableListViewController.m; sourceTree = ""; }; E5E37681A3D332A1EC57821DD48F385A /* AlamofireNetworkActivityIndicator-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AlamofireNetworkActivityIndicator-dummy.m"; sourceTree = ""; }; - E64A661F54520ABE489CA38CDF331B34 /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = sk.lproj; path = Pod/Assets/sk.lproj; sourceTree = ""; }; + E64A661F54520ABE489CA38CDF331B34 /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = sk.lproj; path = Pod/Assets/sk.lproj; sourceTree = ""; }; E6C978DBED4DDBB43E401FE14C044EF4 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; E6D9663ADBEC2B02C8A569A93E28ED8E /* UIView+AutoLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+AutoLayout.swift"; path = "Sources/Pageboy/Utilities/ViewUtilities/UIView+AutoLayout.swift"; sourceTree = ""; }; E74035098566392F70509C5756E27D81 /* TabmanBar+Layout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "TabmanBar+Layout.swift"; path = "Sources/Tabman/TabmanBar/TabmanBar+Layout.swift"; sourceTree = ""; }; @@ -1691,7 +1691,7 @@ F0987336FF640FBF256A0B92F3F6FBF9 /* GraphQLExecutor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphQLExecutor.swift; path = Sources/Apollo/GraphQLExecutor.swift; sourceTree = ""; }; F15A093408FA42E49A85E3C94697B185 /* UICollectionView+IGListBatchUpdateData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+IGListBatchUpdateData.h"; path = "Source/Internal/UICollectionView+IGListBatchUpdateData.h"; sourceTree = ""; }; F16C708FD6F42F4C4A5BC2E12F7AFD7B /* NYTPhotosViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NYTPhotosViewController.m; path = Pod/Classes/ios/NYTPhotosViewController.m; sourceTree = ""; }; - F171B5896F9500CF1707AEA344B67265 /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = pt.lproj; path = Pod/Assets/pt.lproj; sourceTree = ""; }; + F171B5896F9500CF1707AEA344B67265 /* pt.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = pt.lproj; path = Pod/Assets/pt.lproj; sourceTree = ""; }; F199DE6DE6FF2DB1346E3F458256E2A2 /* Collections.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collections.swift; path = Sources/Apollo/Collections.swift; sourceTree = ""; }; F1A6E2F217D0742920E137FE4B0593FD /* IGListAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = IGListAdapter.m; path = Source/IGListAdapter.m; sourceTree = ""; }; F1BE55C06E25BF6AC8E4C2A52D398C30 /* FLEXArgumentInputViewFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXArgumentInputViewFactory.m; path = Classes/Editing/ArgumentInputViews/FLEXArgumentInputViewFactory.m; sourceTree = ""; }; @@ -1718,16 +1718,16 @@ FA3DBDDC877F5A6337C430AA1D94FF33 /* NetworkTransport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkTransport.swift; path = Sources/Apollo/NetworkTransport.swift; sourceTree = ""; }; FA45641ED7C95D239A09FF0C3C618FCB /* SwipeActionTransitioning.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwipeActionTransitioning.swift; path = Source/SwipeActionTransitioning.swift; sourceTree = ""; }; FABCB50D31A4E5A1D2F7749DC1DC2CAF /* FLEXNetworkHistoryTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXNetworkHistoryTableViewController.m; path = Classes/Network/FLEXNetworkHistoryTableViewController.m; sourceTree = ""; }; - FB1F332C0F14637C48895024B7F4FC88 /* IGListKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; path = IGListKit.modulemap; sourceTree = ""; }; + FB1F332C0F14637C48895024B7F4FC88 /* IGListKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = IGListKit.modulemap; sourceTree = ""; }; FB3BC91B53FA9DF6B33905EB12455424 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; FBBBEA299A559214379B075228731701 /* FLEXNetworkTransactionTableViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLEXNetworkTransactionTableViewCell.h; path = Classes/Network/FLEXNetworkTransactionTableViewCell.h; sourceTree = ""; }; FBF129053A1109CE68D9F62F537BC8F8 /* MMParser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MMParser.h; path = Source/MMParser.h; sourceTree = ""; }; FC2468876EEA9B72263743F194148965 /* IGListExperiments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = IGListExperiments.h; path = Source/Common/IGListExperiments.h; sourceTree = ""; }; - FD745A996FD4D28E5756D19CBA8288BE /* Pods_Freetime.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Freetime.framework; path = "Pods-Freetime.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + FD745A996FD4D28E5756D19CBA8288BE /* Pods_Freetime.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Freetime.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FDAE1BCFB68E916EA5018216C35D48DF /* MMDocument_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MMDocument_Private.h; path = Source/MMDocument_Private.h; sourceTree = ""; }; FE0145B08F70E0BE7D86C6B7B1EC6BD8 /* NSString+HTMLString.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSString+HTMLString.swift"; path = "Sources/HTMLString/NSString+HTMLString.swift"; sourceTree = ""; }; FE7420C73D233ACD223A221D19028DC3 /* GraphQLDependencyTracker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GraphQLDependencyTracker.swift; path = Sources/Apollo/GraphQLDependencyTracker.swift; sourceTree = ""; }; - FE77574280160849E424CB9BC1F716C1 /* no.lproj */ = {isa = PBXFileReference; includeInIndex = 1; name = no.lproj; path = Pod/Assets/no.lproj; sourceTree = ""; }; + FE77574280160849E424CB9BC1F716C1 /* no.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = no.lproj; path = Pod/Assets/no.lproj; sourceTree = ""; }; FEDDE9CD4C555C1503A0D9000E574BCA /* FLEXFileBrowserTableViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLEXFileBrowserTableViewController.m; path = Classes/GlobalStateExplorers/FLEXFileBrowserTableViewController.m; sourceTree = ""; }; FF3FFD300239A727E491047F611FD2BB /* NYTPhotosViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NYTPhotosViewController.h; path = Pod/Classes/ios/NYTPhotosViewController.h; sourceTree = ""; }; FFC50BB463B6073F110485199229BE70 /* Pods-Freetime-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Freetime-acknowledgements.markdown"; sourceTree = ""; }; @@ -2041,7 +2041,6 @@ A4040DEA42972ACF48AC1C4F8D5B54F2 /* NetworkActivityIndicatorManager.swift */, 2C021FE4C04C65C61EA43DDF94136A4C /* Support Files */, ); - name = AlamofireNetworkActivityIndicator; path = AlamofireNetworkActivityIndicator; sourceTree = ""; }; @@ -2215,7 +2214,6 @@ 35C5141ECA4D188887F1E923F204DDA8 /* Resources */, F30DD600B20886D225785C0CAC9E7FDD /* Support Files */, ); - name = TUSafariActivity; path = TUSafariActivity; sourceTree = ""; }; @@ -2241,7 +2239,6 @@ AACB60E7665D7AAE20BFC7170411F49E /* Validation.swift */, AB8CDC9D7AF20322705B97C052B5AF89 /* Support Files */, ); - name = Alamofire; path = Alamofire; sourceTree = ""; }; @@ -2290,7 +2287,6 @@ DD998DC5FEB86167C61FD64C1F1191AD /* Core */, 30B9A11AB0C2BC9C2E05F84C9BBDF342 /* Support Files */, ); - name = NYTPhotoViewer; path = NYTPhotoViewer; sourceTree = ""; }; @@ -2598,7 +2594,6 @@ 99CC6C136C09595FA6838A38AFA3B7E6 /* FLEXWindow.m */, 0D5AAFBC8D208A259C78532122F7CF4F /* Support Files */, ); - name = FLEX; path = FLEX; sourceTree = ""; }; @@ -2665,7 +2660,6 @@ 9BE7C04EFD280C9194174CFB8E8D65C6 /* ViewUtils.swift */, 8EEDEBC91C99CB817BD033064094FEEF /* Support Files */, ); - name = Tabman; path = Tabman; sourceTree = ""; }; @@ -2704,7 +2698,6 @@ EF7EB0F6A2839D2C4E48A0AB883C84EA /* Diffing */, 354CEFDE39661EDB32882CBED97CB3F3 /* Support Files */, ); - name = IGListKit; path = IGListKit; sourceTree = ""; }; @@ -2765,7 +2758,6 @@ FE0145B08F70E0BE7D86C6B7B1EC6BD8 /* NSString+HTMLString.swift */, 2B0278542D450B50E30A031346E7F52F /* Support Files */, ); - name = HTMLString; path = HTMLString; sourceTree = ""; }; @@ -2789,7 +2781,6 @@ 697560C35C8F999AFC63BA18D35047D9 /* WeakWrapper.swift */, 3A7C10F40A3B16FCA56724F13509D0F3 /* Support Files */, ); - name = Pageboy; path = Pageboy; sourceTree = ""; }; @@ -2830,7 +2821,6 @@ 6D0731C5B04CD7C65EC545E847A0F04C /* JDStatusBarView.m */, A01979FEF9114060EB7EBA037451B428 /* Support Files */, ); - name = JDStatusBarNotification; path = JDStatusBarNotification; sourceTree = ""; }; @@ -2854,7 +2844,6 @@ 072494465EE1926CE7FD1A88131EDF4A /* Core */, 8CA3FCB2AD4E794EBD0AE6601D314BDA /* Support Files */, ); - name = Apollo; path = Apollo; sourceTree = ""; }; @@ -2896,7 +2885,6 @@ 54E573A728DB4522FF0CDEAFC2AAE00C /* UILayoutSupport+Extensions.swift */, D75C21F52273469F3B9E75CACCF2CAB4 /* Support Files */, ); - name = SnapKit; path = SnapKit; sourceTree = ""; }; @@ -2923,7 +2911,6 @@ 20E6C05EFE3AAE182ECBAD88DDC5AD3F /* FLAnimatedImageView.m */, B56C41CFA4C952C17ED3E9208F05EFB5 /* Support Files */, ); - name = FLAnimatedImage; path = FLAnimatedImage; sourceTree = ""; }; @@ -2969,7 +2956,6 @@ 1EA1A3E3ECFAB6D2E7B55292F89DF3A7 /* Core */, 64244145DD24509AE47D9F49AD7DB312 /* Support Files */, ); - name = SDWebImage; path = SDWebImage; sourceTree = ""; }; @@ -3032,7 +3018,6 @@ 4473854629357AFADA433A443B14A5BA /* PureLayoutDefines.h */, 0139EDBFCD90A2E7732158875C453718 /* Support Files */, ); - name = PureLayout; path = PureLayout; sourceTree = ""; }; @@ -3928,6 +3913,68 @@ attributes = { LastSwiftUpdateCheck = 0830; LastUpgradeCheck = 0700; + TargetAttributes = { + 087D09C9280518CA4414F49A5401F47A = { + LastSwiftMigration = 0900; + }; + 25387FA5BA01EFE7846214CC628290DD = { + LastSwiftMigration = 0900; + }; + 309332BD9B29CA3688BBE5E022D42BB3 = { + LastSwiftMigration = 0900; + }; + 31EE864F9EE2C6DEFCE734CD5EC21E83 = { + LastSwiftMigration = 0900; + }; + 3C1A01781C99518DC8974E992A1F3878 = { + LastSwiftMigration = 0900; + }; + 47BCCC24C423E83806D8086C877EAFB8 = { + LastSwiftMigration = 0900; + }; + 4B6CCCDB7CA170E8F724BBEB791B4D9E = { + LastSwiftMigration = 0900; + }; + 4DA933E2A562DDBD4F154B1CDB899D3E = { + LastSwiftMigration = 0900; + }; + 4F7577A0328F39BF7EC7E8E1692FAC1D = { + LastSwiftMigration = 0900; + }; + 56AD1AD0164A41F3420AA12199B694A8 = { + LastSwiftMigration = 0900; + }; + 66B239826EF1D39D2D6C594AC2DBFF77 = { + LastSwiftMigration = 0900; + }; + 6ACEDEAF6680EEB03B7DB300E7317B92 = { + LastSwiftMigration = 0900; + }; + 7222DCFF04E5B5969CBEDABAB0365218 = { + LastSwiftMigration = 0900; + }; + 753E60B12469B243F88702A0D4348B46 = { + LastSwiftMigration = 0900; + }; + ABE45CF6BEA566FD872550B6586AE2F5 = { + LastSwiftMigration = 0900; + }; + B0F535BA07C1CA1E7384B068B2171E24 = { + LastSwiftMigration = 0900; + }; + C377DF21B436B67266B44EA4707B8390 = { + LastSwiftMigration = 0900; + }; + C5DC2877D3205AAC9162AE605E12CFD0 = { + LastSwiftMigration = 0900; + }; + CCE618C3977F9DC5DA78211D580D9FB3 = { + LastSwiftMigration = 0900; + }; + FD3618ED40B9ACFFBBE35CA6D582EA89 = { + LastSwiftMigration = 0900; + }; + }; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; diff --git a/Resources/Info.plist b/Resources/Info.plist index 3574da0d..0935e026 100644 --- a/Resources/Info.plist +++ b/Resources/Info.plist @@ -32,7 +32,7 @@ CFBundleVersion - 1955 + 1956 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes