> ℹ Please fill out this template when filing an issue.
> All lines beginning with an ℹ symbol instruct you with
> what info we expect.  
> Please remove this line and all above before submitting.

> Before you start, are you using the latest CocoaPods release?
> A lot changes with Xcode releases that are not backwards compatible.
>
> Not an issue about the CocoaPods command line app? Please file an issue in the appropriate repo - https://github.com/CocoaPods
> Issues are for feature requests, and bugs; questions should go to Stack Overflow
>
> Using CocoaPods <= 0.39: http://blog.cocoapods.org/Sharding/
>
> Using Xcode 8: Requires CocoaPods 1.1.0 or above.
>
> Issue with Nanaimo not loading:
> Please run `[sudo] gem uninstall nanaimo` and remove all but the latest version.
>
> Issues with `pod search`? Try deleting your cache `rm -rf ~/Library/Caches/CocoaPods`first.

* [ ] I've read and understood the [*CONTRIBUTING guidelines and have done my best effort to follow](https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md).

# Report

## What did you do?

ℹ Please replace this with what you did.  
e.g. Run `pod install`

## What did you expect to happen?

ℹ Please replace this with what you expected to happen.  
e.g. Install all pod dependencies correctly.

## What happened instead?

ℹ Please replace this with of what happened instead.  
e.g. Pod A is missing the subspec B for target C.

## CocoaPods Environment

ℹ Please replace this with the output of `pod env`.
e.g. via `pod env | pbcopy`

## Project that demonstrates the issue

ℹ Please link to a project we can download that reproduces the issue.
You can delete this section if your issue is unrelated to build problems,
i.e. it's only an issue with CocoaPods the tool.
