Deprecated.
-
+
Gets ref type.
+
+
getRefType() - Method in class org.kohsuke.github.GHEventPayload.Delete
+
+Gets ref type.
+
+
getRelease() - Method in class org.kohsuke.github.GHEventPayload.Release
+
+Gets release.
+
+
getRelease(long) - Method in class org.kohsuke.github.GHRepository
+
+Gets release.
+
+
getReleaseByTagName(String) - Method in class org.kohsuke.github.GHRepository
+
+Gets release by tag name.
+
+
getReleases() - Method in class org.kohsuke.github.GHRepository
+
+Deprecated.
+
-
getRemoved() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
-
-
getRepositories() - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
getRepositories() - Method in class org.kohsuke.github.GHPerson
+
getRemaining() - Method in class org.kohsuke.github.GHRateLimit
+
+Gets the remaining number of Core APIs requests allowed before this connection will be throttled.
+
+
getRemaining() - Method in class org.kohsuke.github.GHRateLimit.Record
+
+Gets the remaining number of requests allowed before this connection will be throttled.
+
+
getRemoved() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
+
+Gets removed.
+
+
getRepositories() - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Gets repositories.
+
+
getRepositories() - Method in class org.kohsuke.github.GHPerson
Gets the public repositories this user owns.
-
getRepositories() - Method in class org.kohsuke.github.GHTeam
-
-
getRepositoriesUrl() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getRepositoriesWithOpenPullRequests() - Method in class org.kohsuke.github.GHOrganization
+
getRepositories() - Method in class org.kohsuke.github.GHTeam
+
+Gets repositories.
+
+
getRepositoriesUrl() - Method in class org.kohsuke.github.GHAppInstallation
+
+Gets repositories url.
+
+
getRepositoriesWithOpenPullRequests() - Method in class org.kohsuke.github.GHOrganization
List up repositories that has some open pull requests.
-
getRepository() - Method in class org.kohsuke.github.GHCommitPointer
+
getRepository() - Method in class org.kohsuke.github.GHCommitPointer
The repository that contains the commit.
-
getRepository() - Method in class org.kohsuke.github.GHEventInfo
+
getRepository() - Method in class org.kohsuke.github.GHEventInfo
-Repository where the change was made.
+Gets repository.
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.CommitComment
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Create
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Delete
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Deployment
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Fork
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Issue
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.IssueComment
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Ping
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Public
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequest
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReview
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReviewComment
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Push
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Release
-
-
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Repository
-
-
getRepository() - Method in class org.kohsuke.github.GHIssue
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.CommitComment
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Create
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Delete
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Deployment
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Fork
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Issue
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.IssueComment
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Ping
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Public
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequest
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReview
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReviewComment
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Push
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Release
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHEventPayload.Repository
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHIssue
Repository to which the issue belongs.
-
getRepository(String) - Method in class org.kohsuke.github.GHPerson
-
-
getRepository() - Method in class org.kohsuke.github.GHStargazer
+
getRepository() - Method in class org.kohsuke.github.GHStargazer
Gets the repository that is stargazed
-
getRepository() - Method in class org.kohsuke.github.GHSubscription
-
-
getRepository() - Method in class org.kohsuke.github.GHThread
-
-
getRepository(String) - Method in class org.kohsuke.github.GitHub
+
getRepository() - Method in class org.kohsuke.github.GHSubscription
+
+Gets repository.
+
+
getRepository() - Method in class org.kohsuke.github.GHThread
+
+Gets repository.
+
+
getRepository(String) - Method in class org.kohsuke.github.GHPerson
+
+Gets repository.
+
+
getRepository(String) - Method in class org.kohsuke.github.GitHub
Gets the repository object from 'user/reponame' string that GitHub calls as "repository name"
-
getRepositoryById(String) - Method in class org.kohsuke.github.GitHub
+
getRepositoryById(String) - Method in class org.kohsuke.github.GitHub
Gets the repository object from its ID
-
getRepositorySelection() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getRepositorySelection() - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
getRepositoryUrl() - Method in class org.kohsuke.github.GHDeployment
-
-
getRepositoryUrl() - Method in class org.kohsuke.github.GHDeploymentStatus
-
-
getRepositoryUrl() - Method in class org.kohsuke.github.GHSubscription
-
-
getRequestedReviewers() - Method in class org.kohsuke.github.GHPullRequest
-
-
getRequestedTeams() - Method in class org.kohsuke.github.GHPullRequest
-
-
getRequired() - Method in class org.kohsuke.github.GHLicense
-
-
getRequiredReviewers() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
-
-
getRequiredReviews() - Method in class org.kohsuke.github.GHBranchProtection
-
-
getRequiredSignatures() - Method in class org.kohsuke.github.GHBranchProtection
+
getRepositorySelection() - Method in class org.kohsuke.github.GHAppInstallation
-Deprecated.
+Gets repository selection.
-
getRequiredStatusChecks() - Method in class org.kohsuke.github.GHBranchProtection
-
-
getResetDate() - Method in class org.kohsuke.github.GHRateLimit
+
getRepositorySelection() - Method in class org.kohsuke.github.GHAppInstallationToken
-Non-epoch date
+Gets repository selection.
-
getResponseCode() - Method in exception org.kohsuke.github.HttpException
+
getRepositoryUrl() - Method in class org.kohsuke.github.GHDeployment
+
+Gets repository url.
+
+
getRepositoryUrl() - Method in class org.kohsuke.github.GHDeploymentStatus
+
+Gets repository url.
+
+
getRepositoryUrl() - Method in class org.kohsuke.github.GHSubscription
+
+Gets repository url.
+
+
getRequestedReviewers() - Method in class org.kohsuke.github.GHPullRequest
+
+Gets requested reviewers.
+
+
getRequestedTeams() - Method in class org.kohsuke.github.GHPullRequest
+
+Gets requested teams.
+
+
getRequired() - Method in class org.kohsuke.github.GHLicense
+
+Gets required.
+
+
getRequiredReviewers() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
+
+Gets required reviewers.
+
+
getRequiredReviews() - Method in class org.kohsuke.github.GHBranchProtection
+
+Gets required reviews.
+
+
getRequiredSignatures() - Method in class org.kohsuke.github.GHBranchProtection
+
+Deprecated.
+
+
getRequiredStatusChecks() - Method in class org.kohsuke.github.GHBranchProtection
+
+Gets required status checks.
+
+
getResetDate() - Method in class org.kohsuke.github.GHRateLimit
+
+Returns the date at which the Core API rate limit will reset.
+
+
getResetDate() - Method in class org.kohsuke.github.GHRateLimit.Record
+
+Returns the date at which the rate limit will reset.
+
+
getResetEpochSeconds() - Method in class org.kohsuke.github.GHRateLimit
+
+Gets the time in epoch seconds when the Core API rate limit will reset.
+
+
getResetEpochSeconds() - Method in class org.kohsuke.github.GHRateLimit.Record
+
+Gets the time in epoch seconds when the rate limit will reset.
+
+
getResponseCode() - Method in exception org.kohsuke.github.HttpException
Http response code of the request that cause the exception
-
getResponseHeaderFields() - Method in exception org.kohsuke.github.GHFileNotFoundException
-
-
getResponseHeaderFields() - Method in exception org.kohsuke.github.GHIOException
-
-
getResponseHeaderFields() - Method in class org.kohsuke.github.GHObject
+
getResponseHeaderFields() - Method in exception org.kohsuke.github.GHFileNotFoundException
-Deprecated.
+Gets response header fields.
-
getResponseMessage() - Method in exception org.kohsuke.github.HttpException
+
getResponseHeaderFields() - Method in exception org.kohsuke.github.GHIOException
+
+Gets response header fields.
+
+
getResponseHeaderFields() - Method in class org.kohsuke.github.GHObject
+
+Deprecated.
+
+
getResponseMessage() - Method in exception org.kohsuke.github.HttpException
Http response message of the request that cause the exception
-
getRestrictions() - Method in class org.kohsuke.github.GHBranchProtection
-
-
getReview() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReview
-
-
getReviewComments() - Method in class org.kohsuke.github.GHPullRequest
-
-
getRole() - Method in class org.kohsuke.github.GHMembership
-
-
getRoot() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getRoot() - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
getRoot() - Method in class org.kohsuke.github.GHAsset
-
-
getRoot() - Method in class org.kohsuke.github.GHAuthorization
-
-
getRoot() - Method in class org.kohsuke.github.GHBranch
-
-
getRoot() - Method in class org.kohsuke.github.GHIssueEvent
-
-
getRoot() - Method in class org.kohsuke.github.GHKey
-
-
getRoot() - Method in class org.kohsuke.github.GHMilestone
-
-
getRoot() - Method in class org.kohsuke.github.GHProject
-
-
getRoot() - Method in class org.kohsuke.github.GHProjectCard
-
-
getRoot() - Method in class org.kohsuke.github.GHProjectColumn
-
-
getRoot() - Method in class org.kohsuke.github.GHRelease
-
-
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
-
-
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
-
-
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.Participation
-
-
getRoot() - Method in class org.kohsuke.github.GHTag
-
-
getRoot() - Method in class org.kohsuke.github.GHTagObject
-
-
getScopes() - Method in class org.kohsuke.github.GHAuthorization
-
-
getSender() - Method in class org.kohsuke.github.GHEventPayload
+
getRestrictions() - Method in class org.kohsuke.github.GHBranchProtection
+
+Gets restrictions.
+
+
getReview() - Method in class org.kohsuke.github.GHEventPayload.PullRequestReview
+
+Gets review.
+
+
getReviewComments() - Method in class org.kohsuke.github.GHPullRequest
+
+Gets review comments.
+
+
getRole() - Method in class org.kohsuke.github.GHMembership
+
+Gets role.
+
+
getRoot() - Method in class org.kohsuke.github.GHAppInstallation
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHAsset
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHAuthorization
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHBranch
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHIssueEvent
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHKey
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHMilestone
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHProject
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHProjectCard
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHProjectColumn
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHRelease
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHRepositoryStatistics.Participation
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHTag
+
+Gets root.
+
+
getRoot() - Method in class org.kohsuke.github.GHTagObject
+
+Gets root.
+
+
getScopes() - Method in class org.kohsuke.github.GHAuthorization
+
+Gets scopes.
+
+
getSender() - Method in class org.kohsuke.github.GHEventPayload
Gets the sender or null if accessed via the events API.
-
getSha() - Method in class org.kohsuke.github.GHBlob
-
-
getSha() - Method in class org.kohsuke.github.GHCommit.File
+
getSha() - Method in class org.kohsuke.github.GHBlob
-[0-9a-f]{40} SHA1 checksum.
+Gets sha.
-
getSha() - Method in class org.kohsuke.github.GHCommitPointer
+
getSha() - Method in class org.kohsuke.github.GHCommit.File
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHCommitPointer
SHA1 of the commit.
-
getSha() - Method in class org.kohsuke.github.GHCompare.InnerCommit
-
-
getSha() - Method in class org.kohsuke.github.GHCompare.Tree
-
-
getSha() - Method in class org.kohsuke.github.GHContent
-
-
getSha() - Method in class org.kohsuke.github.GHDeployment
-
-
getSha() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
-
-
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.CommitPointer
-
-
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail
-
-
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Tree
-
-
getSha() - Method in class org.kohsuke.github.GHPullRequestFileDetail
-
-
getSha() - Method in class org.kohsuke.github.GHRef.GHObject
+
getSha() - Method in class org.kohsuke.github.GHCompare.InnerCommit
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHCompare.Tree
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHContent
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHDeployment
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.CommitPointer
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Tree
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHPullRequestFileDetail
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHRef.GHObject
SHA1 of this object.
-
getSha() - Method in class org.kohsuke.github.GHTagObject
-
-
getSha() - Method in class org.kohsuke.github.GHTree
+
getSha() - Method in class org.kohsuke.github.GHTagObject
+
+Gets sha.
+
+
getSha() - Method in class org.kohsuke.github.GHTree
The SHA for this trees
-
getSha() - Method in class org.kohsuke.github.GHTreeEntry
+
getSha() - Method in class org.kohsuke.github.GHTreeEntry
SHA1 of this object.
-
getSHA1() - Method in class org.kohsuke.github.GHBranch
+
getSHA1() - Method in class org.kohsuke.github.GHBranch
-The commit that this branch currently points to.
+Gets sha 1.
-
getSHA1() - Method in class org.kohsuke.github.GHCommit
+
getSHA1() - Method in class org.kohsuke.github.GHCommit
-[0-9a-f]{40} SHA1 checksum.
+Gets sha 1.
-
getSHA1() - Method in class org.kohsuke.github.GHCommitComment
-
-
getSingleFileName() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getSize() - Method in class org.kohsuke.github.GHAsset
-
-
getSize() - Method in class org.kohsuke.github.GHBlob
+
getSHA1() - Method in class org.kohsuke.github.GHCommitComment
-Number of bytes in this blob.
+Gets sha 1.
-
getSize() - Method in class org.kohsuke.github.GHContent
-
-
getSize() - Method in class org.kohsuke.github.GHEventPayload.Push
+
getSingleFileName() - Method in class org.kohsuke.github.GHAppInstallation
+
+Gets single file name.
+
+
getSize() - Method in class org.kohsuke.github.GHAsset
+
+Gets size.
+
+
getSize() - Method in class org.kohsuke.github.GHBlob
+
+Gets size.
+
+
getSize() - Method in class org.kohsuke.github.GHContent
+
+Gets size.
+
+
getSize() - Method in class org.kohsuke.github.GHEventPayload.Push
The number of commits in the push.
-
getSize() - Method in class org.kohsuke.github.GHGistFile
+
getSize() - Method in class org.kohsuke.github.GHGistFile
File size in bytes.
-
getSize() - Method in class org.kohsuke.github.GHRepository
-
-
getSize() - Method in class org.kohsuke.github.GHTreeEntry
+
getSize() - Method in class org.kohsuke.github.GHRepository
-Gets the size of the file, such as
- 132
+Gets size.
-
getSlug() - Method in class org.kohsuke.github.GHTeam
-
-
getSource() - Method in class org.kohsuke.github.GHRepository
+
getSize() - Method in class org.kohsuke.github.GHTreeEntry
+
+Gets the size of the file, such as 132
+
+
getSlug() - Method in class org.kohsuke.github.GHTeam
+
+Gets slug.
+
+
getSource() - Method in class org.kohsuke.github.GHRepository
Forked repositories have a 'source' attribute that specifies the ultimate source of the forking chain.
-
getSshUrl() - Method in class org.kohsuke.github.GHRepository
+
getSshUrl() - Method in class org.kohsuke.github.GHRepository
Gets the SSH URL to access this repository, such as git@github.com:rails/rails.git
-
getStargazersCount() - Method in class org.kohsuke.github.GHRepository
-
-
getStarredAt() - Method in class org.kohsuke.github.GHStargazer
+
getStargazersCount() - Method in class org.kohsuke.github.GHRepository
-Gets the date when the repository was starred, however old stars before
- August 2012, will all show the date the API was changed to support starred_at.
+Gets stargazers count.
-
getState() - Method in class org.kohsuke.github.GHAsset
-
-
getState() - Method in class org.kohsuke.github.GHCommitStatus
-
-
getState() - Method in class org.kohsuke.github.GHDeploymentStatus
-
-
getState() - Method in class org.kohsuke.github.GHIssue
-
-
getState() - Method in class org.kohsuke.github.GHMembership
-
-
getState() - Method in class org.kohsuke.github.GHMilestone
-
-
getState() - Method in class org.kohsuke.github.GHProject
-
-
getState() - Method in class org.kohsuke.github.GHPullRequestReview
-
-
getStatistics() - Method in class org.kohsuke.github.GHRepository
+
getStarredAt() - Method in class org.kohsuke.github.GHStargazer
+
+Gets the date when the repository was starred, however old stars before August 2012, will all show the date the
+ API was changed to support starred_at.
+
+
getState() - Method in class org.kohsuke.github.GHAsset
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHCommitStatus
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHDeploymentStatus
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHIssue
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHMembership
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHMilestone
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHProject
+
+Gets state.
+
+
getState() - Method in class org.kohsuke.github.GHPullRequestReview
+
+Gets state.
+
+
getStatistics() - Method in class org.kohsuke.github.GHRepository
Returns the statistics for this repository.
-
getStatus() - Method in class org.kohsuke.github.GHCommit.File
+
getStatus() - Method in class org.kohsuke.github.GHCommit.File
-"modified", "added", or "removed"
+Gets status.
-
getStatus() - Method in class org.kohsuke.github.GHCompare
-
-
getStatus() - Method in class org.kohsuke.github.GHPullRequestFileDetail
-
-
getStatusesUrl() - Method in class org.kohsuke.github.GHDeployment
-
-
getSubmittedAt() - Method in class org.kohsuke.github.GHPullRequestReview
+
getStatus() - Method in class org.kohsuke.github.GHCompare
+
+Gets status.
+
+
getStatus() - Method in class org.kohsuke.github.GHPullRequestFileDetail
+
+Gets status.
+
+
getStatusesUrl() - Method in class org.kohsuke.github.GHDeployment
+
+Gets statuses url.
+
+
getSubmittedAt() - Method in class org.kohsuke.github.GHPullRequestReview
When was this resource created?
-
getSubscribersCount() - Method in class org.kohsuke.github.GHRepository
-
-
getSubscription() - Method in class org.kohsuke.github.GHRepository
+
getSubscribersCount() - Method in class org.kohsuke.github.GHRepository
+
+Gets subscribers count.
+
+
getSubscription() - Method in class org.kohsuke.github.GHRepository
Returns the current subscription.
-
getSubscription() - Method in class org.kohsuke.github.GHThread
+
getSubscription() - Method in class org.kohsuke.github.GHThread
Returns the current subscription for this thread.
-
getSvnUrl() - Method in class org.kohsuke.github.GHRepository
+
getSvnUrl() - Method in class org.kohsuke.github.GHRepository
Gets the Subversion URL to access this repository: https://github.com/rails/rails
-
getTag() - Method in class org.kohsuke.github.GHTagObject
-
-
getTagger() - Method in class org.kohsuke.github.GHTagObject
-
-
getTagName() - Method in class org.kohsuke.github.GHRelease
-
-
getTagObject(String) - Method in class org.kohsuke.github.GHRepository
+
getTag() - Method in class org.kohsuke.github.GHTagObject
+
+Gets tag.
+
+
getTagger() - Method in class org.kohsuke.github.GHTagObject
+
+Gets tagger.
+
+
getTagName() - Method in class org.kohsuke.github.GHRelease
+
+Gets tag name.
+
+
getTagObject(String) - Method in class org.kohsuke.github.GHRepository
Returns the annotated tag object.
-
getTarballUrl() - Method in class org.kohsuke.github.GHRelease
-
-
getTargetCommitish() - Method in class org.kohsuke.github.GHRelease
-
-
getTargetId() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getTargetType() - Method in class org.kohsuke.github.GHAppInstallation
-
-
getTargetUrl() - Method in class org.kohsuke.github.GHCommitStatus
+
getTarballUrl() - Method in class org.kohsuke.github.GHRelease
+
+Gets tarball url.
+
+
getTargetCommitish() - Method in class org.kohsuke.github.GHRelease
+
+Gets target commitish.
+
+
getTargetId() - Method in class org.kohsuke.github.GHAppInstallation
+
+Gets target id.
+
+
getTargetType() - Method in class org.kohsuke.github.GHAppInstallation
+
+Gets target type.
+
+
getTargetUrl() - Method in class org.kohsuke.github.GHCommitStatus
The URL that this status is linked to.
-
getTargetUrl() - Method in class org.kohsuke.github.GHDeploymentStatus
-
-
getTask() - Method in class org.kohsuke.github.GHDeployment
-
-
getTeam(int) - Method in class org.kohsuke.github.GitHub
+
getTargetUrl() - Method in class org.kohsuke.github.GHDeploymentStatus
+
+Gets target url.
+
+
getTask() - Method in class org.kohsuke.github.GHDeployment
+
+Gets task.
+
+
getTeam(int) - Method in class org.kohsuke.github.GitHub
Gets a sigle team by ID.
-
getTeamByName(String) - Method in class org.kohsuke.github.GHOrganization
+
getTeamByName(String) - Method in class org.kohsuke.github.GHOrganization
-
+
-
getTeamBySlug(String) - Method in class org.kohsuke.github.GHOrganization
+
getTeamBySlug(String) - Method in class org.kohsuke.github.GHOrganization
-
+
-
getTeams() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
-
-
getTeams() - Method in class org.kohsuke.github.GHOrganization
+
getTeams() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
+Gets teams.
+
+
getTeams() - Method in class org.kohsuke.github.GHOrganization
Teams by their names.
-
getTeams() - Method in class org.kohsuke.github.GHRepository
+
getTeams() - Method in class org.kohsuke.github.GHRepository
If this repository belongs to an organization, return a set of teams.
-
getTeamsUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
getTeamsUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
+Gets teams url.
+
+
getTimestamp() - Method in class org.kohsuke.github.GHRepositoryTraffic.DailyInfo
+
+Gets timestamp.
+
+
getTitle() - Method in class org.kohsuke.github.GHDeployKey
+
+Gets title.
+
+
getTitle() - Method in class org.kohsuke.github.GHIssue
+
+Gets title.
+
+
getTitle() - Method in class org.kohsuke.github.GHKey
+
+Gets title.
+
+
getTitle() - Method in class org.kohsuke.github.GHMilestone
+
+Gets title.
+
+
getTitle() - Method in class org.kohsuke.github.GHThread
+
+Gets title.
+
+
getTitle() - Method in class org.kohsuke.github.GHVerifiedKey
-
getTimestamp() - Method in class org.kohsuke.github.GHRepositoryTraffic.DailyInfo
-
-
getTitle() - Method in class org.kohsuke.github.GHDeployKey
-
-
getTitle() - Method in class org.kohsuke.github.GHIssue
-
-
getTitle() - Method in class org.kohsuke.github.GHKey
-
-
getTitle() - Method in class org.kohsuke.github.GHMilestone
-
-
getTitle() - Method in class org.kohsuke.github.GHThread
-
-
getTitle() - Method in class org.kohsuke.github.GHVerifiedKey
-
-
getToken() - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
getToken() - Method in class org.kohsuke.github.GHAuthorization
-
-
getTokenLastEight() - Method in class org.kohsuke.github.GHAuthorization
-
-
getTotal() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
-
-
getTotal() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
-
-
getTotalCommits() - Method in class org.kohsuke.github.GHCompare
-
-
getTotalCount() - Method in class org.kohsuke.github.PagedSearchIterable
+
getToken() - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Gets token.
+
+
getToken() - Method in class org.kohsuke.github.GHAuthorization
+
+Gets token.
+
+
getTokenLastEight() - Method in class org.kohsuke.github.GHAuthorization
+
+Gets token last eight.
+
+
getTotal() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
+
+Gets total.
+
+
getTotal() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
+
+Gets total.
+
+
getTotalCommits() - Method in class org.kohsuke.github.GHCompare
+
+Gets total commits.
+
+
getTotalCount() - Method in class org.kohsuke.github.PagedSearchIterable
Returns the total number of hit, including the results that's not yet fetched.
-
getTree() - Method in class org.kohsuke.github.GHCommit
+
getTree() - Method in class org.kohsuke.github.GHCommit
-Use this method to walk the tree
+Use this method to walk the tree.
-
getTree() - Method in class org.kohsuke.github.GHCompare.InnerCommit
-
-
getTree() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Commit
-
-
getTree(String) - Method in class org.kohsuke.github.GHRepository
+
getTree() - Method in class org.kohsuke.github.GHCompare.InnerCommit
-Retrive a tree of the given type for the current GitHub repository.
+Gets tree.
-
getTree() - Method in class org.kohsuke.github.GHTree
+
getTree() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Commit
+
+Gets tree.
+
+
getTree() - Method in class org.kohsuke.github.GHTree
Return an array of entries of the trees
-
getTreeRecursive(String, int) - Method in class org.kohsuke.github.GHRepository
+
getTree(String) - Method in class org.kohsuke.github.GHRepository
+
+Retrive a tree of the given type for the current GitHub repository.
+
+
getTreeRecursive(String, int) - Method in class org.kohsuke.github.GHRepository
Retrieves the tree for the current GitHub repository, recursively as described in here:
https://developer.github.com/v3/git/trees/#get-a-tree-recursively
-
getType() - Method in class org.kohsuke.github.GHContent
-
-
getType() - Method in class org.kohsuke.github.GHEventInfo
-
-
getType() - Method in class org.kohsuke.github.GHGistFile
+
getType() - Method in class org.kohsuke.github.GHContent
+
+Gets type.
+
+
getType() - Method in class org.kohsuke.github.GHEventInfo
+
+Gets type.
+
+
getType() - Method in class org.kohsuke.github.GHGistFile
Content type of this Gist, such as "text/plain"
-
getType() - Method in class org.kohsuke.github.GHRef.GHObject
+
getType() - Method in class org.kohsuke.github.GHRef.GHObject
Type of the object, such as "commit"
-
getType() - Method in class org.kohsuke.github.GHThread
-
-
getType() - Method in class org.kohsuke.github.GHTreeEntry
+
getType() - Method in class org.kohsuke.github.GHThread
-Gets the type such as:
- "blob", "tree", etc.
+Gets type.
-
getUniques() - Method in class org.kohsuke.github.GHRepositoryTraffic.DailyInfo
+
getType() - Method in class org.kohsuke.github.GHTreeEntry
+
+Gets the type such as: "blob", "tree", etc.
+
+
getUniques() - Method in class org.kohsuke.github.GHRepositoryTraffic.DailyInfo
-
getUniques() - Method in class org.kohsuke.github.GHRepositoryTraffic
+
getUniques() - Method in class org.kohsuke.github.GHRepositoryTraffic
-
getUniques() - Method in interface org.kohsuke.github.TrafficInfo
+
getUniques() - Method in interface org.kohsuke.github.TrafficInfo
Unique visitors.
-
getUpdatedAt() - Method in class org.kohsuke.github.GHObject
+
getUpdatedAt() - Method in class org.kohsuke.github.GHObject
When was this resource last updated?
-
getUpdatedAt() - Method in class org.kohsuke.github.GHPerson
+
getUpdatedAt() - Method in class org.kohsuke.github.GHPerson
-
getUploadUrl() - Method in class org.kohsuke.github.GHRelease
-
-
getUrl() - Method in class org.kohsuke.github.GHBlob
+
getUploadUrl() - Method in class org.kohsuke.github.GHRelease
-API URL of this blob.
+Gets upload url.
-
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.EnforceAdmins
-
-
getUrl() - Method in class org.kohsuke.github.GHBranchProtection
-
-
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
-
-
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
-
-
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
-
-
getUrl() - Method in class org.kohsuke.github.GHCompare
-
-
getUrl() - Method in class org.kohsuke.github.GHCompare.InnerCommit
-
-
getUrl() - Method in class org.kohsuke.github.GHCompare.Tree
-
-
getUrl() - Method in class org.kohsuke.github.GHContent
-
-
getUrl() - Method in class org.kohsuke.github.GHDeployKey
-
-
getUrl() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
+
getUrl() - Method in class org.kohsuke.github.GHBlob
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.EnforceAdmins
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHBranchProtection
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHCompare
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHCompare.InnerCommit
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHCompare.Tree
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHContent
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHDeployKey
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
Points to the commit API resource.
-
getUrl() - Method in class org.kohsuke.github.GHIssue.PullRequest
-
-
getUrl() - Method in class org.kohsuke.github.GHIssueEvent
-
-
getUrl() - Method in class org.kohsuke.github.GHKey
+
getUrl() - Method in class org.kohsuke.github.GHIssue.PullRequest
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHIssueEvent
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHKey
Something like "https://api.github.com/user/keys/73593"
-
getUrl() - Method in class org.kohsuke.github.GHLabel
-
-
getUrl() - Method in class org.kohsuke.github.GHLicense
-
-
getUrl() - Method in class org.kohsuke.github.GHMembership
-
-
getUrl() - Method in class org.kohsuke.github.GHObject
+
getUrl() - Method in class org.kohsuke.github.GHLabel
-API URL of this object.
+Gets url.
-
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Commit
+
getUrl() - Method in class org.kohsuke.github.GHLicense
-
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.CommitPointer
-
-
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail
-
-
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Tree
-
-
getUrl() - Method in class org.kohsuke.github.GHRef
+
getUrl() - Method in class org.kohsuke.github.GHMembership
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHObject
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Commit
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.CommitPointer
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHPullRequestCommitDetail.Tree
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHRef
The API URL of this tag, such as https://api.github.com/repos/jenkinsci/jenkins/git/refs/tags/1.312
-
getUrl() - Method in class org.kohsuke.github.GHRef.GHObject
-
-API URL to this Git data, such as https://api.github.com/repos/jenkinsci/jenkins/git/commits/b72322675eb0114363a9a86e9ad5a170d1d07ac0
-
-
getUrl() - Method in class org.kohsuke.github.GHSubscription
-
-
getUrl() - Method in class org.kohsuke.github.GHTagObject
-
-
getUrl() - Method in class org.kohsuke.github.GHTree
-
-The API URL of this tag, such as
- "url": "https://api.github.com/repos/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7",
-
-
getUrl() - Method in class org.kohsuke.github.GHTreeEntry
+
getUrl() - Method in class org.kohsuke.github.GHRef.GHObject
API URL to this Git data, such as
- https://api.github.com/repos/jenkinsci
+ https://api.github.com/repos/jenkinsci/jenkins/git/commits/b72322675eb0114363a9a86e9ad5a170d1d07ac0
+
+
getUrl() - Method in class org.kohsuke.github.GHSubscription
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHTagObject
+
+Gets url.
+
+
getUrl() - Method in class org.kohsuke.github.GHTree
+
+The API URL of this tag, such as "url":
+ "https://api.github.com/repos/octocat/Hello-World/trees/fc6274d15fa3ae2ab983129fb037999f264ba9a7",
+
+
getUrl() - Method in class org.kohsuke.github.GHTreeEntry
+
+API URL to this Git data, such as https://api.github.com/repos/jenkinsci
/jenkins/git/commits/b72322675eb0114363a9a86e9ad5a170d1d07ac0
-
getUrl() - Method in exception org.kohsuke.github.HttpException
+
getUrl() - Method in exception org.kohsuke.github.HttpException
The http URL that caused the exception
-
getUser() - Method in class org.kohsuke.github.GHCommitComment
+
getUser() - Method in class org.kohsuke.github.GHCommitComment
Gets the user who put this comment.
-
getUser() - Method in class org.kohsuke.github.GHCommitPointer
+
getUser() - Method in class org.kohsuke.github.GHCommitPointer
-
+
-
getUser() - Method in class org.kohsuke.github.GHIssue
+
getUser() - Method in class org.kohsuke.github.GHIssue
User who submitted the issue.
-
getUser() - Method in class org.kohsuke.github.GHIssueComment
+
getUser() - Method in class org.kohsuke.github.GHIssueComment
Gets the user who posted this comment.
-
getUser() - Method in class org.kohsuke.github.GHMembership
-
-
getUser() - Method in class org.kohsuke.github.GHPullRequestReview
+
getUser() - Method in class org.kohsuke.github.GHMembership
+
+Gets user.
+
+
getUser() - Method in class org.kohsuke.github.GHPullRequestReview
Gets the user who posted this review.
-
getUser() - Method in class org.kohsuke.github.GHPullRequestReviewComment
+
getUser() - Method in class org.kohsuke.github.GHPullRequestReviewComment
Gets the user who posted this comment.
-
getUser() - Method in class org.kohsuke.github.GHReaction
+
getUser() - Method in class org.kohsuke.github.GHReaction
-Deprecated.
+Deprecated.
User who left the reaction.
-
getUser() - Method in class org.kohsuke.github.GHStargazer
+
getUser() - Method in class org.kohsuke.github.GHStargazer
Gets the user that starred the repository
-
getUser(String) - Method in class org.kohsuke.github.GitHub
+
getUser(String) - Method in class org.kohsuke.github.GitHub
Obtains the object that represents the named user.
-
getUser(GHUser) - Method in class org.kohsuke.github.GitHub
+
getUser(GHUser) - Method in class org.kohsuke.github.GitHub
-
getUserName() - Method in class org.kohsuke.github.GHIssueComment
+
getUserName() - Method in class org.kohsuke.github.GHIssueComment
-Deprecated.
+Deprecated.
-
getUserPublicOrganizations(GHUser) - Method in class org.kohsuke.github.GitHub
-
-
-
-
getUserPublicOrganizations(String) - Method in class org.kohsuke.github.GitHub
+
getUserPublicOrganizations(String) - Method in class org.kohsuke.github.GitHub
This method returns a shallowly populated organizations.
-
getUsers() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
-
-
getUsersUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
-
-
getViews() - Method in class org.kohsuke.github.GHRepositoryViewTraffic
-
-
getViewTraffic() - Method in class org.kohsuke.github.GHRepository
+
getUserPublicOrganizations(GHUser) - Method in class org.kohsuke.github.GitHub
+
+
+
+
getUsers() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
+Gets users.
+
+
getUsersUrl() - Method in class org.kohsuke.github.GHBranchProtection.Restrictions
+
+Gets users url.
+
+
getViews() - Method in class org.kohsuke.github.GHRepositoryViewTraffic
+
+Gets views.
+
+
getViewTraffic() - Method in class org.kohsuke.github.GHRepository
-
getWatchers() - Method in class org.kohsuke.github.GHRepository
+
getWatchers() - Method in class org.kohsuke.github.GHRepository
+
+Gets watchers.
+
+
getWeb() - Method in interface org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaExample
+
+Gets web.
+
+
getWeb() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersFinal
-
getWeek() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
+
getWeb() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersFinalCreator
-
getWeek(long) - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
+
getWeb() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersUnmodifiable
+
+
getWeb() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPackage
+
+
getWeb() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+
getWeb() - Method in class org.kohsuke.github.GHMeta
+
+Gets web.
+
+
getWeek() - Method in class org.kohsuke.github.GHRepositoryStatistics.CommitActivity
+
+Gets week.
+
+
getWeek(long) - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
Convenience method to look up week with particular timestamp.
-
getWeeks() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
-
-
getWeekTimestamp() - Method in class org.kohsuke.github.GHRepositoryStatistics.CodeFrequency
-
-
getWeekTimestamp() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
-
-
getZipballUrl() - Method in class org.kohsuke.github.GHRelease
-
+
getWeeks() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
+
+Gets weeks.
+
+
getWeekTimestamp() - Method in class org.kohsuke.github.GHRepositoryStatistics.CodeFrequency
+
+Gets week timestamp.
+
+
getWeekTimestamp() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
+
+Gets week timestamp.
+
+
getZipballUrl() - Method in class org.kohsuke.github.GHRelease
+
+Gets zipball url.
+
+
GFM - org.kohsuke.github.MarkdownMode
+
+Render a document as user-content, e.g.
+
GHApp - Class in org.kohsuke.github
A Github App.
-
GHApp() - Constructor for class org.kohsuke.github.GHApp
+
GHApp() - Constructor for class org.kohsuke.github.GHApp
GHAppCreateTokenBuilder - Class in org.kohsuke.github
@@ -3021,33 +4409,35 @@
A Github App Installation.
- GHAppInstallation() - Constructor for class org.kohsuke.github.GHAppInstallation
+
GHAppInstallation() - Constructor for class org.kohsuke.github.GHAppInstallation
GHAppInstallationToken - Class in org.kohsuke.github
A Github App Installation Token.
-
GHAppInstallationToken() - Constructor for class org.kohsuke.github.GHAppInstallationToken
+
GHAppInstallationToken() - Constructor for class org.kohsuke.github.GHAppInstallationToken
GHAsset - Class in org.kohsuke.github
Asset in a release.
-
GHAsset() - Constructor for class org.kohsuke.github.GHAsset
+
GHAsset() - Constructor for class org.kohsuke.github.GHAsset
-
GHAuthor() - Constructor for class org.kohsuke.github.GHCommit.GHAuthor
+
GHAuthor() - Constructor for class org.kohsuke.github.GHCommit.GHAuthor
-Deprecated.
+Deprecated.
GHAuthorization - Class in org.kohsuke.github
Generated OAuth token
-
GHAuthorization() - Constructor for class org.kohsuke.github.GHAuthorization
+
GHAuthorization() - Constructor for class org.kohsuke.github.GHAuthorization
GHBlob - Class in org.kohsuke.github
-
-
GHBlob() - Constructor for class org.kohsuke.github.GHBlob
+
+The type GHBlob.
+
+
GHBlob() - Constructor for class org.kohsuke.github.GHBlob
GHBlobBuilder - Class in org.kohsuke.github
@@ -3057,22 +4447,32 @@
A branch in a repository.
- GHBranch() - Constructor for class org.kohsuke.github.GHBranch
-
GHBranch.Commit - Class in org.kohsuke.github
-
+
+The type Commit.
+
GHBranchProtection - Class in org.kohsuke.github
-
-
GHBranchProtection() - Constructor for class org.kohsuke.github.GHBranchProtection
+
+The type GHBranchProtection.
+
+
GHBranchProtection() - Constructor for class org.kohsuke.github.GHBranchProtection
GHBranchProtection.EnforceAdmins - Class in org.kohsuke.github
-
+
+The type EnforceAdmins.
+
GHBranchProtection.RequiredReviews - Class in org.kohsuke.github
-
+
+The type RequiredReviews.
+
GHBranchProtection.RequiredStatusChecks - Class in org.kohsuke.github
-
+
+The type RequiredStatusChecks.
+
GHBranchProtection.Restrictions - Class in org.kohsuke.github
-
+
+The type Restrictions.
+
GHBranchProtectionBuilder - Class in org.kohsuke.github
Builder to configure the branch protection settings.
@@ -3085,7 +4485,7 @@
A commit in a repository.
- GHCommit() - Constructor for class org.kohsuke.github.GHCommit
+
GHCommit() - Constructor for class org.kohsuke.github.GHCommit
GHCommit.File - Class in org.kohsuke.github
@@ -3093,18 +4493,22 @@
GHCommit.GHAuthor - Class in org.kohsuke.github
-Deprecated.
-
+
Deprecated.
+
GHCommit.Parent - Class in org.kohsuke.github
-
+
+The type Parent.
+
GHCommit.ShortInfo - Class in org.kohsuke.github
Short summary of this commit.
GHCommit.Stats - Class in org.kohsuke.github
-
+
+The type Stats.
+
GHCommitBuilder - Class in org.kohsuke.github
Builder pattern for creating a new commit.
@@ -3113,13 +4517,13 @@
A comment attached to a commit (or a specific line in a specific file of a commit.)
- GHCommitComment() - Constructor for class org.kohsuke.github.GHCommitComment
+
GHCommitComment() - Constructor for class org.kohsuke.github.GHCommitComment
GHCommitPointer - Class in org.kohsuke.github
-
GHCommitPointer() - Constructor for class org.kohsuke.github.GHCommitPointer
+
GHCommitPointer() - Constructor for class org.kohsuke.github.GHCommitPointer
GHCommitQueryBuilder - Class in org.kohsuke.github
@@ -3127,12 +4531,13 @@
GHCommitSearchBuilder - Class in org.kohsuke.github
-Deprecated.
+Deprecated.
GHCommitSearchBuilder.Sort - Enum in org.kohsuke.github
-Deprecated.
-
+
Deprecated.
+
The enum Sort.
+
GHCommitState - Enum in org.kohsuke.github
Represents the state of commit
@@ -3141,35 +4546,41 @@
Represents a status of a commit.
- GHCommitStatus() - Constructor for class org.kohsuke.github.GHCommitStatus
+
GHCommitStatus() - Constructor for class org.kohsuke.github.GHCommitStatus
GHCompare - Class in org.kohsuke.github
The model user for comparing 2 commits in the GitHub API.
-
GHCompare() - Constructor for class org.kohsuke.github.GHCompare
+
GHCompare() - Constructor for class org.kohsuke.github.GHCompare
GHCompare.Commit - Class in org.kohsuke.github
Compare commits had a child commit element with additional details we want to capture.
GHCompare.InnerCommit - Class in org.kohsuke.github
-
+
+The type InnerCommit.
+
GHCompare.Status - Enum in org.kohsuke.github
-
+
+The enum Status.
+
GHCompare.Tree - Class in org.kohsuke.github
-
+
+The type Tree.
+
GHCompare.User - Class in org.kohsuke.github
-Deprecated.
-
+
Deprecated.
+
GHContent - Class in org.kohsuke.github
A Content of a repository.
-
GHContent() - Constructor for class org.kohsuke.github.GHContent
+
GHContent() - Constructor for class org.kohsuke.github.GHContent
GHContentBuilder - Class in org.kohsuke.github
@@ -3181,47 +4592,56 @@
GHContentUpdateResponse - Class in org.kohsuke.github
-The response that is returned when updating
- repository content.
+The response that is returned when updating repository content.
-
GHContentUpdateResponse() - Constructor for class org.kohsuke.github.GHContentUpdateResponse
+
GHContentUpdateResponse() - Constructor for class org.kohsuke.github.GHContentUpdateResponse
GHCreateRepositoryBuilder - Class in org.kohsuke.github
Creates a repository
GHDeployKey - Class in org.kohsuke.github
-
-
GHDeployKey() - Constructor for class org.kohsuke.github.GHDeployKey
+
+The type GHDeployKey.
+
+
GHDeployKey() - Constructor for class org.kohsuke.github.GHDeployKey
GHDeployment - Class in org.kohsuke.github
Represents a deployment
-
GHDeployment() - Constructor for class org.kohsuke.github.GHDeployment
+
GHDeployment() - Constructor for class org.kohsuke.github.GHDeployment
GHDeploymentBuilder - Class in org.kohsuke.github
-
-
GHDeploymentBuilder(GHRepository) - Constructor for class org.kohsuke.github.GHDeploymentBuilder
-
-
GHDeploymentBuilder(GHRepository, String) - Constructor for class org.kohsuke.github.GHDeploymentBuilder
-
+
+The type GHDeploymentBuilder.
+
+
GHDeploymentBuilder(GHRepository) - Constructor for class org.kohsuke.github.GHDeploymentBuilder
+
+Instantiates a new Gh deployment builder.
+
+
GHDeploymentBuilder(GHRepository, String) - Constructor for class org.kohsuke.github.GHDeploymentBuilder
+
+Instantiates a new Gh deployment builder.
+
GHDeploymentState - Enum in org.kohsuke.github
Represents the state of deployment
GHDeploymentStatus - Class in org.kohsuke.github
-
-
GHDeploymentStatus() - Constructor for class org.kohsuke.github.GHDeploymentStatus
+
+The type GHDeploymentStatus.
+
+
GHDeploymentStatus() - Constructor for class org.kohsuke.github.GHDeploymentStatus
GHDeploymentStatusBuilder - Class in org.kohsuke.github
Creates a new deployment status.
-
GHDeploymentStatusBuilder(GHRepository, int, GHDeploymentState) - Constructor for class org.kohsuke.github.GHDeploymentStatusBuilder
+
GHDeploymentStatusBuilder(GHRepository, int, GHDeploymentState) - Constructor for class org.kohsuke.github.GHDeploymentStatusBuilder
-Deprecated.
-
+
Deprecated.
+
GHDirection - Enum in org.kohsuke.github
@@ -3232,7 +4652,7 @@
Represents an email of GitHub.
-
GHEmail() - Constructor for class org.kohsuke.github.GHEmail
+
GHEmail() - Constructor for class org.kohsuke.github.GHEmail
GHEvent - Enum in org.kohsuke.github
@@ -3242,7 +4662,7 @@
Represents an event.
- GHEventInfo() - Constructor for class org.kohsuke.github.GHEventInfo
+
GHEventInfo() - Constructor for class org.kohsuke.github.GHEventInfo
GHEventInfo.GHEventRepository - Class in org.kohsuke.github
@@ -3278,7 +4698,8 @@
GHEventPayload.Issue - Class in org.kohsuke.github
-A Issue has been assigned, unassigned, labeled, unlabeled, opened, edited, milestoned, demilestoned, closed, or reopened.
+A Issue has been assigned, unassigned, labeled, unlabeled, opened, edited, milestoned, demilestoned, closed, or
+ reopened.
GHEventPayload.IssueComment - Class in org.kohsuke.github
@@ -3313,7 +4734,9 @@
Commit in a push
GHEventPayload.Push.Pusher - Class in org.kohsuke.github
-
+
+The type Pusher.
+
GHEventPayload.Release - Class in org.kohsuke.github
A release was added to the repo
@@ -3322,115 +4745,147 @@
A repository was created, deleted, made public, or made private.
- GHEventRepository() - Constructor for class org.kohsuke.github.GHEventInfo.GHEventRepository
+
GHEventRepository() - Constructor for class org.kohsuke.github.GHEventInfo.GHEventRepository
GHException - Exception in org.kohsuke.github
-
-
GHException(String) - Constructor for exception org.kohsuke.github.GHException
-
-
GHException(String, Throwable) - Constructor for exception org.kohsuke.github.GHException
-
+
+The type GHException.
+
+
GHException(String) - Constructor for exception org.kohsuke.github.GHException
+
+Instantiates a new Gh exception.
+
+
GHException(String, Throwable) - Constructor for exception org.kohsuke.github.GHException
+
+Instantiates a new Gh exception.
+
GHFileNotFoundException - Exception in org.kohsuke.github
Request/responce contains useful metadata.
-
GHFileNotFoundException() - Constructor for exception org.kohsuke.github.GHFileNotFoundException
-
-
GHFileNotFoundException(String) - Constructor for exception org.kohsuke.github.GHFileNotFoundException
-
+
GHFileNotFoundException() - Constructor for exception org.kohsuke.github.GHFileNotFoundException
+
+Instantiates a new Gh file not found exception.
+
+
GHFileNotFoundException(String) - Constructor for exception org.kohsuke.github.GHFileNotFoundException
+
+Instantiates a new Gh file not found exception.
+
GHGist - Class in org.kohsuke.github
Gist
-
GHGist() - Constructor for class org.kohsuke.github.GHGist
+
GHGist() - Constructor for class org.kohsuke.github.GHGist
GHGistBuilder - Class in org.kohsuke.github
Builder pattern for creating a new Gist.
-
GHGistBuilder(GitHub) - Constructor for class org.kohsuke.github.GHGistBuilder
-
+
GHGistBuilder(GitHub) - Constructor for class org.kohsuke.github.GHGistBuilder
+
+Instantiates a new Gh gist builder.
+
GHGistFile - Class in org.kohsuke.github
-
GHGistFile() - Constructor for class org.kohsuke.github.GHGistFile
+
GHGistFile() - Constructor for class org.kohsuke.github.GHGistFile
GHGistUpdater - Class in org.kohsuke.github
Builder pattern for updating a Gist.
GHHook - Class in org.kohsuke.github
-
-
GHHook() - Constructor for class org.kohsuke.github.GHHook
+
+The type GHHook.
+
+
GHHook() - Constructor for class org.kohsuke.github.GHHook
GHInvitation - Class in org.kohsuke.github
-
-
GHInvitation() - Constructor for class org.kohsuke.github.GHInvitation
+
+The type GHInvitation.
+
+
GHInvitation() - Constructor for class org.kohsuke.github.GHInvitation
GHIOException - Exception in org.kohsuke.github
Request/responce contains useful metadata.
-
GHIOException() - Constructor for exception org.kohsuke.github.GHIOException
-
-
GHIOException(String) - Constructor for exception org.kohsuke.github.GHIOException
-
+
GHIOException() - Constructor for exception org.kohsuke.github.GHIOException
+
+Instantiates a new Ghio exception.
+
+
GHIOException(String) - Constructor for exception org.kohsuke.github.GHIOException
+
+Instantiates a new Ghio exception.
+
GHIssue - Class in org.kohsuke.github
Represents an issue on GitHub.
-
GHIssue() - Constructor for class org.kohsuke.github.GHIssue
+
GHIssue() - Constructor for class org.kohsuke.github.GHIssue
GHIssue.Label - Class in org.kohsuke.github
-Deprecated.
-
+
Deprecated.
+
GHIssue.PullRequest - Class in org.kohsuke.github
-
+
+The type PullRequest.
+
GHIssueBuilder - Class in org.kohsuke.github
-
+
+The type GHIssueBuilder.
+
GHIssueComment - Class in org.kohsuke.github
Comment to the issue
-
GHIssueComment() - Constructor for class org.kohsuke.github.GHIssueComment
+
GHIssueComment() - Constructor for class org.kohsuke.github.GHIssueComment
GHIssueEvent - Class in org.kohsuke.github
-
-
GHIssueEvent() - Constructor for class org.kohsuke.github.GHIssueEvent
+
+The type GHIssueEvent.
+
+
GHIssueEvent() - Constructor for class org.kohsuke.github.GHIssueEvent
GHIssueSearchBuilder - Class in org.kohsuke.github
Search issues.
GHIssueSearchBuilder.Sort - Enum in org.kohsuke.github
-
+
+The enum Sort.
+
GHIssueState - Enum in org.kohsuke.github
-
+
+The enum GHIssueState.
+
GHKey - Class in org.kohsuke.github
SSH public key.
-
GHKey() - Constructor for class org.kohsuke.github.GHKey
+
GHKey() - Constructor for class org.kohsuke.github.GHKey
GHLabel - Class in org.kohsuke.github
-
-
GHLabel() - Constructor for class org.kohsuke.github.GHLabel
+
+The type GHLabel.
+
+
GHLabel() - Constructor for class org.kohsuke.github.GHLabel
GHLicense - Class in org.kohsuke.github
The GitHub Preview API's license information
-
GHLicense() - Constructor for class org.kohsuke.github.GHLicense
+
GHLicense() - Constructor for class org.kohsuke.github.GHLicense
GHMembership - Class in org.kohsuke.github
Represents a membership of a user in an organization.
-
GHMembership() - Constructor for class org.kohsuke.github.GHMembership
+
GHMembership() - Constructor for class org.kohsuke.github.GHMembership
GHMembership.Role - Enum in org.kohsuke.github
@@ -3440,17 +4895,33 @@
Whether a role is currently active or waiting for acceptance (pending)
- GHMilestone - Class in org.kohsuke.github
+
GHMeta - Class in org.kohsuke.github
+
+Class that wraps the list of GitHub's IP addresses.
+
+
GHMeta() - Constructor for class org.kohsuke.github.GHMeta
-
GHMilestone() - Constructor for class org.kohsuke.github.GHMilestone
+
GHMetaGettersUnmodifiable() - Constructor for class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersUnmodifiable
+
+
GHMetaPackage() - Constructor for class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPackage
+
+
GHMetaPublic() - Constructor for class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+
GHMilestone - Class in org.kohsuke.github
+
+The type GHMilestone.
+
+
GHMilestone() - Constructor for class org.kohsuke.github.GHMilestone
GHMilestoneState - Enum in org.kohsuke.github
-
+
+The enum GHMilestoneState.
+
GHMyself - Class in org.kohsuke.github
Represents the account that's logging into GitHub.
-
GHMyself() - Constructor for class org.kohsuke.github.GHMyself
+
GHMyself() - Constructor for class org.kohsuke.github.GHMyself
GHMyself.RepositoryListFilter - Enum in org.kohsuke.github
@@ -3464,101 +4935,141 @@
Most (all?) domain objects in GitHub seems to have these 4 properties.
- GHObject() - Constructor for class org.kohsuke.github.GHRef.GHObject
+
GHObject() - Constructor for class org.kohsuke.github.GHRef.GHObject
GHOrganization - Class in org.kohsuke.github
-
-
GHOrganization() - Constructor for class org.kohsuke.github.GHOrganization
+
+The type GHOrganization.
+
+
GHOrganization() - Constructor for class org.kohsuke.github.GHOrganization
GHOrganization.Permission - Enum in org.kohsuke.github
-
+
+The enum Permission.
+
GHOrganization.Role - Enum in org.kohsuke.github
Member's role in an organization
-
GHPermissionType - Enum in org.kohsuke.github
+
GHOTPRequiredException - Exception in org.kohsuke.github
+
+This exception is thrown when GitHub is requesting an OTP from the user
+
+
GHOTPRequiredException() - Constructor for exception org.kohsuke.github.GHOTPRequiredException
+
GHPermissionType - Enum in org.kohsuke.github
+
+The enum GHPermissionType.
+
GHPerson - Class in org.kohsuke.github
-
GHPerson() - Constructor for class org.kohsuke.github.GHPerson
+
GHPerson() - Constructor for class org.kohsuke.github.GHPerson
GHPersonSet <T extends GHPerson > - Class in org.kohsuke.github
Set of
GHPerson with helper lookup methods.
-
GHPersonSet() - Constructor for class org.kohsuke.github.GHPersonSet
-
-
GHPersonSet(Collection<? extends T>) - Constructor for class org.kohsuke.github.GHPersonSet
-
-
GHPersonSet(T...) - Constructor for class org.kohsuke.github.GHPersonSet
-
-
GHPersonSet(int, float) - Constructor for class org.kohsuke.github.GHPersonSet
-
-
GHPersonSet(int) - Constructor for class org.kohsuke.github.GHPersonSet
-
+
GHPersonSet() - Constructor for class org.kohsuke.github.GHPersonSet
+
+Instantiates a new Gh person set.
+
+
GHPersonSet(int) - Constructor for class org.kohsuke.github.GHPersonSet
+
+Instantiates a new Gh person set.
+
+
GHPersonSet(int, float) - Constructor for class org.kohsuke.github.GHPersonSet
+
+Instantiates a new Gh person set.
+
+
GHPersonSet(Collection<? extends T>) - Constructor for class org.kohsuke.github.GHPersonSet
+
+Instantiates a new Gh person set.
+
+
GHPersonSet(T...) - Constructor for class org.kohsuke.github.GHPersonSet
+
+Instantiates a new Gh person set.
+
GHProject - Class in org.kohsuke.github
A GitHub project.
-
GHProject() - Constructor for class org.kohsuke.github.GHProject
+
GHProject() - Constructor for class org.kohsuke.github.GHProject
GHProject.ProjectState - Enum in org.kohsuke.github
-
+
+The enum ProjectState.
+
GHProject.ProjectStateFilter - Enum in org.kohsuke.github
-
+
+The enum ProjectStateFilter.
+
GHProjectCard - Class in org.kohsuke.github
-
-
GHProjectCard() - Constructor for class org.kohsuke.github.GHProjectCard
+
+The type GHProjectCard.
+
+
GHProjectCard() - Constructor for class org.kohsuke.github.GHProjectCard
GHProjectColumn - Class in org.kohsuke.github
-
-
GHProjectColumn() - Constructor for class org.kohsuke.github.GHProjectColumn
+
+The type GHProjectColumn.
+
+
GHProjectColumn() - Constructor for class org.kohsuke.github.GHProjectColumn
GHPullRequest - Class in org.kohsuke.github
A pull request.
-
GHPullRequest() - Constructor for class org.kohsuke.github.GHPullRequest
+
GHPullRequest() - Constructor for class org.kohsuke.github.GHPullRequest
GHPullRequest.MergeMethod - Enum in org.kohsuke.github
-
+
+The enum MergeMethod.
+
GHPullRequestCommitDetail - Class in org.kohsuke.github
-
GHPullRequestCommitDetail() - Constructor for class org.kohsuke.github.GHPullRequestCommitDetail
+
GHPullRequestCommitDetail() - Constructor for class org.kohsuke.github.GHPullRequestCommitDetail
GHPullRequestCommitDetail.Authorship - Class in org.kohsuke.github
-Deprecated.
-
+
Deprecated.
+
GHPullRequestCommitDetail.Commit - Class in org.kohsuke.github
-
+
+The type Commit.
+
GHPullRequestCommitDetail.CommitPointer - Class in org.kohsuke.github
-
+
+The type CommitPointer.
+
GHPullRequestCommitDetail.Tree - Class in org.kohsuke.github
-
+
+The type Tree.
+
GHPullRequestFileDetail - Class in org.kohsuke.github
-
GHPullRequestFileDetail() - Constructor for class org.kohsuke.github.GHPullRequestFileDetail
+
GHPullRequestFileDetail() - Constructor for class org.kohsuke.github.GHPullRequestFileDetail
GHPullRequestQueryBuilder - Class in org.kohsuke.github
Lists up pull requests with some filtering and sorting.
GHPullRequestQueryBuilder.Sort - Enum in org.kohsuke.github
-
+
+The enum Sort.
+
GHPullRequestReview - Class in org.kohsuke.github
Review to a pull request.
-
GHPullRequestReview() - Constructor for class org.kohsuke.github.GHPullRequestReview
+
GHPullRequestReview() - Constructor for class org.kohsuke.github.GHPullRequestReview
GHPullRequestReviewBuilder - Class in org.kohsuke.github
@@ -3568,7 +5079,7 @@
Review comment to the pull request
- GHPullRequestReviewComment() - Constructor for class org.kohsuke.github.GHPullRequestReviewComment
+
GHPullRequestReviewComment() - Constructor for class org.kohsuke.github.GHPullRequestReviewComment
GHPullRequestReviewEvent - Enum in org.kohsuke.github
@@ -3586,36 +5097,46 @@
Rate limit.
- GHRateLimit() - Constructor for class org.kohsuke.github.GHRateLimit
-
+
GHRateLimit.Record - Class in org.kohsuke.github
+
+A rate limit record.
+
+
GHRateLimit.UnknownLimitRecord - Class in org.kohsuke.github
+
+A limit record used as a placeholder when the the actual limit is not known.
+
GHReaction - Class in org.kohsuke.github
-Deprecated.
+Deprecated.
-
GHReaction() - Constructor for class org.kohsuke.github.GHReaction
+
GHReaction() - Constructor for class org.kohsuke.github.GHReaction
-Deprecated.
+Deprecated.
GHRef - Class in org.kohsuke.github
Provides information on a Git ref from GitHub.
-
GHRef() - Constructor for class org.kohsuke.github.GHRef
+
GHRef() - Constructor for class org.kohsuke.github.GHRef
GHRef.GHObject - Class in org.kohsuke.github
-
+
+The type GHObject.
+
GHRelease - Class in org.kohsuke.github
Release in a github repository.
-
GHRelease() - Constructor for class org.kohsuke.github.GHRelease
+
GHRelease() - Constructor for class org.kohsuke.github.GHRelease
GHReleaseBuilder - Class in org.kohsuke.github
-
GHReleaseBuilder(GHRepository, String) - Constructor for class org.kohsuke.github.GHReleaseBuilder
-
+
GHReleaseBuilder(GHRepository, String) - Constructor for class org.kohsuke.github.GHReleaseBuilder
+
+Instantiates a new Gh release builder.
+
GHReleaseUpdater - Class in org.kohsuke.github
@@ -3624,10 +5145,12 @@
A repository on GitHub.
- GHRepository() - Constructor for class org.kohsuke.github.GHRepository
+
GHRepository() - Constructor for class org.kohsuke.github.GHRepository
GHRepository.Contributor - Class in org.kohsuke.github
-
+
+The type Contributor.
+
GHRepository.ForkSort - Enum in org.kohsuke.github
Sort orders for listing forks
@@ -3637,13 +5160,17 @@
Repository clone statistics.
GHRepositoryCloneTraffic.DailyInfo - Class in org.kohsuke.github
-
+
+The type DailyInfo.
+
GHRepositorySearchBuilder - Class in org.kohsuke.github
Search repositories.
GHRepositorySearchBuilder.Sort - Enum in org.kohsuke.github
-
+
+The enum Sort.
+
GHRepositorySelection - Enum in org.kohsuke.github
App installation repository selection.
@@ -3652,30 +5179,50 @@
Statistics for a GitHub repository.
- GHRepositoryStatistics(GHRepository) - Constructor for class org.kohsuke.github.GHRepositoryStatistics
-
+
GHRepositoryStatistics(GHRepository) - Constructor for class org.kohsuke.github.GHRepositoryStatistics
+
+Instantiates a new Gh repository statistics.
+
GHRepositoryStatistics.CodeFrequency - Class in org.kohsuke.github
-
+
+The type CodeFrequency.
+
GHRepositoryStatistics.CommitActivity - Class in org.kohsuke.github
-
+
+The type CommitActivity.
+
GHRepositoryStatistics.ContributorStats - Class in org.kohsuke.github
-
+
+The type ContributorStats.
+
GHRepositoryStatistics.ContributorStats.Week - Class in org.kohsuke.github
-
+
+The type Week.
+
GHRepositoryStatistics.Participation - Class in org.kohsuke.github
-
+
+The type Participation.
+
GHRepositoryStatistics.PunchCardItem - Class in org.kohsuke.github
-
+
+The type PunchCardItem.
+
GHRepositoryTraffic - Class in org.kohsuke.github
-
+
+The type GHRepositoryTraffic.
+
GHRepositoryTraffic.DailyInfo - Class in org.kohsuke.github
-
+
+The type DailyInfo.
+
GHRepositoryViewTraffic - Class in org.kohsuke.github
Repository view statistics.
GHRepositoryViewTraffic.DailyInfo - Class in org.kohsuke.github
-
+
+The type DailyInfo.
+
GHSearchBuilder <T > - Class in org.kohsuke.github
Base class for various search builders.
@@ -3684,25 +5231,25 @@
A stargazer at a repository on GitHub.
- GHStargazer() - Constructor for class org.kohsuke.github.GHStargazer
+
GHStargazer() - Constructor for class org.kohsuke.github.GHStargazer
GHSubscription - Class in org.kohsuke.github
Represents your subscribing to a repository / conversation thread..
-
GHSubscription() - Constructor for class org.kohsuke.github.GHSubscription
+
GHSubscription() - Constructor for class org.kohsuke.github.GHSubscription
GHTag - Class in org.kohsuke.github
-
GHTag() - Constructor for class org.kohsuke.github.GHTag
+
GHTag() - Constructor for class org.kohsuke.github.GHTag
GHTagObject - Class in org.kohsuke.github
-
GHTagObject() - Constructor for class org.kohsuke.github.GHTagObject
+
GHTagObject() - Constructor for class org.kohsuke.github.GHTagObject
GHTargetType - Enum in org.kohsuke.github
@@ -3712,7 +5259,7 @@
A team in GitHub organization.
- GHTeam() - Constructor for class org.kohsuke.github.GHTeam
+
GHTeam() - Constructor for class org.kohsuke.github.GHTeam
GHTeam.Role - Enum in org.kohsuke.github
@@ -3724,10 +5271,9 @@
GHTree - Class in org.kohsuke.github
-Provides information for Git Trees
- https://developer.github.com/v3/git/trees/
+Provides information for Git Trees https://developer.github.com/v3/git/trees/
-
GHTree() - Constructor for class org.kohsuke.github.GHTree
+
GHTree() - Constructor for class org.kohsuke.github.GHTree
GHTreeBuilder - Class in org.kohsuke.github
@@ -3735,33 +5281,40 @@
GHTreeEntry - Class in org.kohsuke.github
-Provides information for Git Trees
- https://developer.github.com/v3/git/trees/
+Provides information for Git Trees https://developer.github.com/v3/git/trees/
-
GHTreeEntry() - Constructor for class org.kohsuke.github.GHTreeEntry
+
GHTreeEntry() - Constructor for class org.kohsuke.github.GHTreeEntry
GHUser - Class in org.kohsuke.github
Represents an user of GitHub.
-
GHUser() - Constructor for class org.kohsuke.github.GHUser
+
GHUser() - Constructor for class org.kohsuke.github.GHUser
GHUserSearchBuilder - Class in org.kohsuke.github
Search users.
GHUserSearchBuilder.Sort - Enum in org.kohsuke.github
-
+
+The enum Sort.
+
GHVerifiedKey - Class in org.kohsuke.github
-
-
GHVerifiedKey() - Constructor for class org.kohsuke.github.GHVerifiedKey
+
+The type GHVerifiedKey.
+
+
GHVerifiedKey() - Constructor for class org.kohsuke.github.GHVerifiedKey
+
+Instantiates a new Gh verified key.
+
+
GIST - org.kohsuke.github.GHEvent
GIST - Static variable in class org.kohsuke.github.GHAuthorization
-
gitHttpTransportUrl() - Method in class org.kohsuke.github.GHRepository
+
gitHttpTransportUrl() - Method in class org.kohsuke.github.GHRepository
-Deprecated.
-
+
Deprecated.
+
GitHub - Class in org.kohsuke.github
@@ -3772,83 +5325,114 @@
Configures connection details and produces
GitHub.
-
GitHubBuilder() - Constructor for class org.kohsuke.github.GitHubBuilder
-
-
gitignoreTemplate(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
GitHubBuilder() - Constructor for class org.kohsuke.github.GitHubBuilder
-Creates a default .gitignore
-
- See https://developer.github.com/v3/repos/#create
+Instantiates a new Git hub builder.
+
+
gitignoreTemplate(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
+Creates a default .gitignore
GitUser - Class in org.kohsuke.github
Represents a user in Git who authors/commits a commit.
-
GitUser() - Constructor for class org.kohsuke.github.GitUser
+
GitUser() - Constructor for class org.kohsuke.github.GitUser
+
+
GOLLUM - org.kohsuke.github.GHEvent
gravatar_id - Variable in class org.kohsuke.github.GHPerson
-
+
H
-hasAdminAccess() - Method in class org.kohsuke.github.GHRepository
-
-hasAssignee(GHUser) - Method in class org.kohsuke.github.GHRepository
+hasAdminAccess() - Method in class org.kohsuke.github.GHRepository
+
+Has admin access boolean.
+
+hasAssignee(GHUser) - Method in class org.kohsuke.github.GHRepository
Checks if the given user is an assignee for this repository.
-hasDownloads() - Method in class org.kohsuke.github.GHRepository
-
-hash(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+hasDownloads() - Method in class org.kohsuke.github.GHRepository
-Deprecated.
-
-hashCode() - Method in class org.kohsuke.github.GHEmail
+Has downloads boolean.
+
+hash(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Hash gh commit search builder.
+
+hashCode() - Method in class org.kohsuke.github.GHEmail
-hashCode() - Method in class org.kohsuke.github.GHGist
+hashCode() - Method in class org.kohsuke.github.GHGist
-hashCode() - Method in class org.kohsuke.github.GHLabel
+hashCode() - Method in class org.kohsuke.github.GHLabel
-hashCode() - Method in class org.kohsuke.github.GHLicense
+hashCode() - Method in class org.kohsuke.github.GHLicense
-hashCode() - Method in class org.kohsuke.github.GHRepository.Contributor
+hashCode() - Method in class org.kohsuke.github.GHRateLimit
-hashCode() - Method in class org.kohsuke.github.GHRepository
+hashCode() - Method in class org.kohsuke.github.GHRateLimit.Record
-hashCode() - Method in class org.kohsuke.github.GHUser
+hashCode() - Method in class org.kohsuke.github.GHRepository.Contributor
-hasIssues() - Method in class org.kohsuke.github.GHRepository
+hashCode() - Method in class org.kohsuke.github.GHRepository
-hasMember(GHUser) - Method in class org.kohsuke.github.GHOrganization
+hashCode() - Method in class org.kohsuke.github.GHUser
+
+hasIssues() - Method in class org.kohsuke.github.GHRepository
+
+Has issues boolean.
+
+hasMember(GHUser) - Method in class org.kohsuke.github.GHOrganization
Checks if this organization has the specified user as a member.
-hasMember(GHUser) - Method in class org.kohsuke.github.GHTeam
+hasMember(GHUser) - Method in class org.kohsuke.github.GHTeam
Checks if this team has the specified user as a member.
-hasNext() - Method in class org.kohsuke.github.PagedIterator
+hasNext() - Method in class org.kohsuke.github.PagedIterator
-hasPages() - Method in class org.kohsuke.github.GHRepository
-
-hasPublicMember(GHUser) - Method in class org.kohsuke.github.GHOrganization
+hasPages() - Method in class org.kohsuke.github.GHRepository
+
+Has pages boolean.
+
+hasPublicMember(GHUser) - Method in class org.kohsuke.github.GHOrganization
Checks if this organization has the specified user as a public member.
-hasPullAccess() - Method in class org.kohsuke.github.GHRepository
+hasPullAccess() - Method in class org.kohsuke.github.GHRepository
+
+Has pull access boolean.
+
+hasPushAccess() - Method in class org.kohsuke.github.GHRepository
+
+Has push access boolean.
+
+hasWiki() - Method in class org.kohsuke.github.GHRepository
+
+Has wiki boolean.
+
+head(String) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
+
+Head gh pull request query builder.
+
+HEART - org.kohsuke.github.ReactionContent
-hasPushAccess() - Method in class org.kohsuke.github.GHRepository
-
-hasWiki() - Method in class org.kohsuke.github.GHRepository
-
-head(String) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
-
-homepage(URL) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
-
-homepage(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+homepage(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
+Homepage for repository
+
+homepage(URL) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
+Homepage for repository
+
+HOORAY - org.kohsuke.github.ReactionContent
html_url - Variable in class org.kohsuke.github.GHIssue
@@ -3862,20 +5446,27 @@
HttpException - Exception in org.kohsuke.github
-
+
+
+HttpException(int, String, String, Throwable) - Constructor for exception org.kohsuke.github.HttpException
+
+Instantiates a new Http exception.
+
+HttpException(int, String, URL, Throwable) - Constructor for exception org.kohsuke.github.HttpException
+
+Instantiates a new Http exception.
+
+HttpException(String, int, String, String) - Constructor for exception org.kohsuke.github.HttpException
+
+Instantiates a new Http exception.
+
+HttpException(String, int, String, String, Throwable) - Constructor for exception org.kohsuke.github.HttpException
+
+Instantiates a new Http exception.
-HttpException(String, int, String, String) - Constructor for exception org.kohsuke.github.HttpException
-
-HttpException(String, int, String, String, Throwable) - Constructor for exception org.kohsuke.github.HttpException
-
-HttpException(int, String, String, Throwable) - Constructor for exception org.kohsuke.github.HttpException
-
-HttpException(int, String, URL, Throwable) - Constructor for exception org.kohsuke.github.HttpException
-
-
+
I
@@ -3886,173 +5477,307 @@
id - Variable in class org.kohsuke.github.GHObject
+
identical - org.kohsuke.github.GHCompare.Status
+
ImpatientHttpConnector - Class in org.kohsuke.github.extras
-
ImpatientHttpConnector(HttpConnector, int, int) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
-
-
ImpatientHttpConnector(HttpConnector, int) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
-
-
ImpatientHttpConnector(HttpConnector) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
-
+
ImpatientHttpConnector(HttpConnector) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
+
+Instantiates a new Impatient http connector.
+
+
ImpatientHttpConnector(HttpConnector, int) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
+
+Instantiates a new Impatient http connector.
+
+
ImpatientHttpConnector(HttpConnector, int, int) - Constructor for class org.kohsuke.github.extras.ImpatientHttpConnector
+
+Instantiates a new Impatient http connector.
+
implementation - Variable in class org.kohsuke.github.GHLicense
-
in(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
-
in(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-
-
in(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
-
-
includeAdmins() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-
includeAdmins(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-
InnerCommit() - Constructor for class org.kohsuke.github.GHCompare.InnerCommit
-
-
is(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
in(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-Deprecated.
-
-
isActive() - Method in class org.kohsuke.github.GHHook
+
In gh content search builder.
+
+
in(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+In gh repository search builder.
+
+
in(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+In gh user search builder.
+
+
includeAdmins() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Include admins gh branch protection builder.
+
+
includeAdmins(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Include admins gh branch protection builder.
+
+
InnerCommit() - Constructor for class org.kohsuke.github.GHCompare.InnerCommit
-
isAllowMergeCommit() - Method in class org.kohsuke.github.GHRepository
+
INSTALLATION - org.kohsuke.github.GHEvent
-
isAllowRebaseMerge() - Method in class org.kohsuke.github.GHRepository
+
INSTALLATION_REPOSITORIES - org.kohsuke.github.GHEvent
-
isAllowSquashMerge() - Method in class org.kohsuke.github.GHRepository
+
INTEGRATION_INSTALLATION_REPOSITORIES - org.kohsuke.github.GHEvent
-
isAnonymous() - Method in class org.kohsuke.github.GitHub
+
is(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Is gh commit search builder.
+
+
isActive() - Method in class org.kohsuke.github.GHHook
+
+Is active boolean.
+
+
isAllowMergeCommit() - Method in class org.kohsuke.github.GHRepository
+
+Is allow merge commit boolean.
+
+
isAllowRebaseMerge() - Method in class org.kohsuke.github.GHRepository
+
+Is allow rebase merge boolean.
+
+
isAllowSquashMerge() - Method in class org.kohsuke.github.GHRepository
+
+Is allow squash merge boolean.
+
+
isAnonymous() - Method in class org.kohsuke.github.GitHub
Is this an anonymous connection
-
isArchived() - Method in class org.kohsuke.github.GHProjectCard
-
-
isArchived() - Method in class org.kohsuke.github.GHRepository
-
-
isClosed() - Method in class org.kohsuke.github.GHIssueSearchBuilder
-
-
isCreated() - Method in class org.kohsuke.github.GHEventPayload.Push
-
-
isCredentialValid() - Method in class org.kohsuke.github.GitHub
+
isArchived() - Method in class org.kohsuke.github.GHProjectCard
+
+Is archived boolean.
+
+
isArchived() - Method in class org.kohsuke.github.GHRepository
+
+Is archived boolean.
+
+
isClosed() - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Is closed gh issue search builder.
+
+
isCreated() - Method in class org.kohsuke.github.GHEventPayload.Push
+
+Is created boolean.
+
+
isCredentialValid() - Method in class org.kohsuke.github.GitHub
Ensures that the credential is valid.
-
isDeleted() - Method in class org.kohsuke.github.GHEventPayload.Push
-
-
isDirectory() - Method in class org.kohsuke.github.GHContent
-
-
isDismissStaleReviews() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
-
-
isDistinct() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
+
isDeleted() - Method in class org.kohsuke.github.GHEventPayload.Push
+
+Is deleted boolean.
+
+
isDirectory() - Method in class org.kohsuke.github.GHContent
+
+Is directory boolean.
+
+
isDismissStaleReviews() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
+
+Is dismiss stale reviews boolean.
+
+
isDistinct() - Method in class org.kohsuke.github.GHEventPayload.Push.PushCommit
Whether this commit is distinct from any that have been pushed before.
-
isDraft() - Method in class org.kohsuke.github.GHPullRequest
-
-
isDraft() - Method in class org.kohsuke.github.GHRelease
-
-
isEnabled() - Method in class org.kohsuke.github.GHBranchProtection.EnforceAdmins
-
-
isFeatured() - Method in class org.kohsuke.github.GHLicense
+
isDraft() - Method in class org.kohsuke.github.GHPullRequest
+
+Is draft boolean.
+
+
isDraft() - Method in class org.kohsuke.github.GHRelease
+
+Is draft boolean.
+
+
isEnabled() - Method in class org.kohsuke.github.GHBranchProtection.EnforceAdmins
+
+Is enabled boolean.
+
+
isExpired() - Method in class org.kohsuke.github.GHRateLimit
+
+Whether the rate limit reset date for this instance has passed.
+
+
isExpired() - Method in class org.kohsuke.github.GHRateLimit.Record
+
+Whether the rate limit reset date indicated by this instance is in the
+
+
isFeatured() - Method in class org.kohsuke.github.GHLicense
Featured licenses are bold in the new repository drop-down
-
isFile() - Method in class org.kohsuke.github.GHContent
-
-
isForced() - Method in class org.kohsuke.github.GHEventPayload.Push
-
-
isFork() - Method in class org.kohsuke.github.GHRepository
-
-
isIgnored() - Method in class org.kohsuke.github.GHSubscription
-
-
isIncomplete() - Method in class org.kohsuke.github.PagedSearchIterable
-
-
isLocked() - Method in class org.kohsuke.github.GHIssue
-
-
isMemberOf(GHOrganization) - Method in class org.kohsuke.github.GHUser
+
isFile() - Method in class org.kohsuke.github.GHContent
+
+Is file boolean.
+
+
isForced() - Method in class org.kohsuke.github.GHEventPayload.Push
+
+Is forced boolean.
+
+
isFork() - Method in class org.kohsuke.github.GHRepository
+
+Is fork boolean.
+
+
isIgnored() - Method in class org.kohsuke.github.GHSubscription
+
+Is ignored boolean.
+
+
isIncomplete() - Method in class org.kohsuke.github.PagedSearchIterable
+
+Is incomplete boolean.
+
+
isLocked() - Method in class org.kohsuke.github.GHIssue
+
+Is locked boolean.
+
+
isMemberOf(GHOrganization) - Method in class org.kohsuke.github.GHUser
Returns true if this user belongs to the specified organization.
-
isMemberOf(GHTeam) - Method in class org.kohsuke.github.GHUser
+
isMemberOf(GHTeam) - Method in class org.kohsuke.github.GHUser
Returns true if this user belongs to the specified team.
-
isMerged() - Method in class org.kohsuke.github.GHIssueSearchBuilder
-
-
isMerged() - Method in class org.kohsuke.github.GHPullRequest
-
-
isOffline() - Method in class org.kohsuke.github.GitHub
+
isMerged() - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Is merged gh issue search builder.
+
+
isMerged() - Method in class org.kohsuke.github.GHPullRequest
+
+Is merged boolean.
+
+
isOffline() - Method in class org.kohsuke.github.GitHub
Is this an always offline "connection".
-
isOpen() - Method in class org.kohsuke.github.GHIssueSearchBuilder
-
-
isPrerelease() - Method in class org.kohsuke.github.GHRelease
-
-
isPrimary() - Method in class org.kohsuke.github.GHEmail
-
-
isPrivate() - Method in class org.kohsuke.github.GHRepository
-
-
isProtected() - Method in class org.kohsuke.github.GHBranch
+
isOpen() - Method in class org.kohsuke.github.GHIssueSearchBuilder
-Deprecated.
+Is open gh issue search builder.
-
isPublic() - Method in class org.kohsuke.github.GHGist
-
-
isPublicMemberOf(GHOrganization) - Method in class org.kohsuke.github.GHUser
+
isPrerelease() - Method in class org.kohsuke.github.GHRelease
+
+Is prerelease boolean.
+
+
isPrimary() - Method in class org.kohsuke.github.GHEmail
+
+Is primary boolean.
+
+
isPrivate() - Method in class org.kohsuke.github.GHRepository
+
+Is private boolean.
+
+
isProtected() - Method in class org.kohsuke.github.GHBranch
+
+Deprecated.
+
+
isPublic() - Method in class org.kohsuke.github.GHGist
+
+Is public boolean.
+
+
isPublicMemberOf(GHOrganization) - Method in class org.kohsuke.github.GHUser
Returns true if this user belongs to the specified organization as a public member.
-
isPullRequest() - Method in class org.kohsuke.github.GHIssue
+
isPullRequest() - Method in class org.kohsuke.github.GHIssue
+
+Is pull request boolean.
+
+
isRead() - Method in class org.kohsuke.github.GHThread
+
+Is read boolean.
+
+
isRequireCodeOwnerReviews() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
+
+Is require code owner reviews boolean.
+
+
isRequiresBranchUpToDate() - Method in class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
+
+Is requires branch up to date boolean.
+
+
isStarred() - Method in class org.kohsuke.github.GHGist
+
+Is starred boolean.
+
+
isSubscribed() - Method in class org.kohsuke.github.GHSubscription
+
+Is subscribed boolean.
+
+
Issue() - Constructor for class org.kohsuke.github.GHEventPayload.Issue
-
isRead() - Method in class org.kohsuke.github.GHThread
+
ISSUE_COMMENT - org.kohsuke.github.GHEvent
-
isRequireCodeOwnerReviews() - Method in class org.kohsuke.github.GHBranchProtection.RequiredReviews
+
IssueComment() - Constructor for class org.kohsuke.github.GHEventPayload.IssueComment
-
isRequiresBranchUpToDate() - Method in class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
-
-
isStarred() - Method in class org.kohsuke.github.GHGist
-
-
isSubscribed() - Method in class org.kohsuke.github.GHSubscription
-
-
Issue() - Constructor for class org.kohsuke.github.GHEventPayload.Issue
-
-
IssueComment() - Constructor for class org.kohsuke.github.GHEventPayload.IssueComment
-
-
issues(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
issues(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
Enables issue tracker
-
isTruncated() - Method in class org.kohsuke.github.GHGistFile
+
ISSUES - org.kohsuke.github.GHEvent
+
+
isTruncated() - Method in class org.kohsuke.github.GHGistFile
-
+
-
isTruncated() - Method in class org.kohsuke.github.GHTree
+
isTruncated() - Method in class org.kohsuke.github.GHTree
Returns true if the number of items in the tree array exceeded the GitHub maximum limit.
-
isVerified() - Method in class org.kohsuke.github.GHDeployKey
-
-
isVerified() - Method in class org.kohsuke.github.GHEmail
-
-
isVerified() - Method in class org.kohsuke.github.GHKey
-
-
iterateRepositories(int) - Method in class org.kohsuke.github.GHPerson
+
isVerifiablePasswordAuthentication() - Method in interface org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaExample
-Deprecated.
-
+
Is verifiable password authentication boolean.
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersFinal
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersFinalCreator
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaGettersUnmodifiable
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPackage
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+
isVerifiablePasswordAuthentication() - Method in class org.kohsuke.github.GHMeta
+
+Is verifiable password authentication boolean.
+
+
isVerified() - Method in class org.kohsuke.github.GHDeployKey
+
+Is verified boolean.
+
+
isVerified() - Method in class org.kohsuke.github.GHEmail
+
+Is verified boolean.
+
+
isVerified() - Method in class org.kohsuke.github.GHKey
+
+Is verified boolean.
+
+
iterateRepositories(int) - Method in class org.kohsuke.github.GHPerson
+
+Deprecated.
+
-
iterator() - Method in class org.kohsuke.github.GHNotificationStream
+
iterator() - Method in class org.kohsuke.github.GHNotificationStream
-Returns an infinite blocking
Iterator that returns
-
GHThread as notifications arrive.
+Returns an infinite blocking
Iterator that returns
GHThread as notifications arrive.
-
iterator() - Method in class org.kohsuke.github.PagedIterable
+
iterator() - Method in class org.kohsuke.github.PagedIterable
-
+
+
+
+
J
+
+JOINED - org.kohsuke.github.GHUserSearchBuilder.Sort
+
+
+
K
@@ -4064,428 +5789,519 @@
key - Variable in class org.kohsuke.github.GHLicense
-
+
L
-Label() - Constructor for class org.kohsuke.github.GHIssue.Label
+label(String) - Method in class org.kohsuke.github.GHIssueBuilder
-Deprecated.
+Label gh issue builder.
+
+Label() - Constructor for class org.kohsuke.github.GHIssue.Label
+
+Deprecated.
-label(String) - Method in class org.kohsuke.github.GHIssueBuilder
+LABEL - org.kohsuke.github.GHEvent
labels - Variable in class org.kohsuke.github.GHIssue
-language(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
-language(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-
-language(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
-
-lastRateLimit() - Method in class org.kohsuke.github.GitHub
+language(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-Returns the most recently observed rate limit data or null if either there is no rate limit
- (for example GitHub Enterprise) or if no requests have been made.
+Language gh content search builder.
-licenseTemplate(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+language(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-Desired license template to apply
-
- See https://developer.github.com/v3/repos/#create
+Language gh repository search builder.
+
+language(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Language gh user search builder.
+
+lastRateLimit() - Method in class org.kohsuke.github.GitHub
+
+Returns the most recently observed rate limit data or null if either there is no rate limit (for example
+ GitHub Enterprise) or if no requests have been made.
+
+LAUGH - org.kohsuke.github.ReactionContent
+
+licenseTemplate(String) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
+Desired license template to apply
limit - Variable in class org.kohsuke.github.GHRateLimit
-Allotted API call per hour.
+Deprecated.
+
+
-list() - Method in class org.kohsuke.github.GHCommitQueryBuilder
+list() - Method in class org.kohsuke.github.GHCommitQueryBuilder
Lists up the commits with the criteria built so far.
-list() - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
+list() - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
-list() - Method in class org.kohsuke.github.GHQueryBuilder
+list() - Method in class org.kohsuke.github.GHQueryBuilder
Start listing items by using the settings built up on this object.
-list() - Method in class org.kohsuke.github.GHSearchBuilder
+list() - Method in class org.kohsuke.github.GHSearchBuilder
Performs the search.
-listAllPublicRepositories() - Method in class org.kohsuke.github.GitHub
+listAllPublicRepositories() - Method in class org.kohsuke.github.GitHub
This provides a dump of every public repository, in the order that they were created.
-listAllPublicRepositories(String) - Method in class org.kohsuke.github.GitHub
+listAllPublicRepositories(String) - Method in class org.kohsuke.github.GitHub
This provides a dump of every public repository, in the order that they were created.
-listAllRepositories() - Method in class org.kohsuke.github.GHMyself
+listAllRepositories() - Method in class org.kohsuke.github.GHMyself
-Deprecated.
-
+
Deprecated.
+
-
listAssignees() - Method in class org.kohsuke.github.GHRepository
+
listAssignees() - Method in class org.kohsuke.github.GHRepository
-
+
-
listCards() - Method in class org.kohsuke.github.GHProjectColumn
-
-
listCollaborators() - Method in class org.kohsuke.github.GHRepository
+
listCards() - Method in class org.kohsuke.github.GHProjectColumn
+
+List cards paged iterable.
+
+
listCollaborators() - Method in class org.kohsuke.github.GHRepository
Lists up the collaborators on this repository.
-
listColumns() - Method in class org.kohsuke.github.GHProject
-
-
listComments() - Method in class org.kohsuke.github.GHCommit
+
listColumns() - Method in class org.kohsuke.github.GHProject
-Lists up all the commit comments in this repository.
+List columns paged iterable.
-
listComments() - Method in class org.kohsuke.github.GHIssue
+
listComments() - Method in class org.kohsuke.github.GHCommit
+
+List comments paged iterable.
+
+
listComments() - Method in class org.kohsuke.github.GHIssue
Obtains all the comments associated with this issue.
-
listCommitComments() - Method in class org.kohsuke.github.GHRepository
+
listCommitComments() - Method in class org.kohsuke.github.GHRepository
Lists up all the commit comments in this repository.
-
listCommits() - Method in class org.kohsuke.github.GHPullRequest
+
listCommits() - Method in class org.kohsuke.github.GHPullRequest
Retrieves all the commits associated to this pull request.
-
listCommits() - Method in class org.kohsuke.github.GHRepository
+
listCommits() - Method in class org.kohsuke.github.GHRepository
Lists all the commits.
-
listCommitStatuses(String) - Method in class org.kohsuke.github.GHRepository
+
listCommitStatuses(String) - Method in class org.kohsuke.github.GHRepository
-/**
- Lists all the commit statues attached to the given commit, newer ones first.
+/** Lists all the commit statues attached to the given commit, newer ones first.
-
listContributors() - Method in class org.kohsuke.github.GHRepository
-
-
listDeployments(String, String, String, String) - Method in class org.kohsuke.github.GHRepository
-
-
listDirectoryContent() - Method in class org.kohsuke.github.GHContent
+
listContributors() - Method in class org.kohsuke.github.GHRepository
+
+List contributors paged iterable.
+
+
listDeployments(String, String, String, String) - Method in class org.kohsuke.github.GHRepository
+
+List deployments paged iterable.
+
+
listDirectoryContent() - Method in class org.kohsuke.github.GHContent
List immediate children of this directory.
-
listEvents() - Method in class org.kohsuke.github.GHIssue
+
listEvents() - Method in class org.kohsuke.github.GHIssue
Lists events for this issue.
-
listEvents() - Method in class org.kohsuke.github.GHOrganization
+
listEvents() - Method in class org.kohsuke.github.GHOrganization
Lists events performed by a user (this includes private events if the caller is authenticated.
-
listEvents() - Method in class org.kohsuke.github.GHPerson
+
listEvents() - Method in class org.kohsuke.github.GHPerson
Lists events for an organization or an user.
-
listEvents() - Method in class org.kohsuke.github.GHRepository
+
listEvents() - Method in class org.kohsuke.github.GHRepository
Lists repository events.
-
listEvents() - Method in class org.kohsuke.github.GHUser
+
listEvents() - Method in class org.kohsuke.github.GHUser
Lists events performed by a user (this includes private events if the caller is authenticated.
-
listFiles() - Method in class org.kohsuke.github.GHPullRequest
+
listFiles() - Method in class org.kohsuke.github.GHPullRequest
Retrieves all the files associated to this pull request.
-
listFollowers() - Method in class org.kohsuke.github.GHUser
+
listFollowers() - Method in class org.kohsuke.github.GHUser
Lists the users who are following this user.
-
listFollows() - Method in class org.kohsuke.github.GHUser
+
listFollows() - Method in class org.kohsuke.github.GHUser
Lists the users that this user is following
-
listForks() - Method in class org.kohsuke.github.GHGist
-
-
listForks() - Method in class org.kohsuke.github.GHRepository
+
listForks() - Method in class org.kohsuke.github.GHGist
-Lists all the direct forks of this repository, sorted by
- github api default, currently
ForkSort.NEWEST.
+List forks paged iterable.
-
listForks(GHRepository.ForkSort) - Method in class org.kohsuke.github.GHRepository
+
listForks() - Method in class org.kohsuke.github.GHRepository
+
+Lists all the direct forks of this repository, sorted by github api default, currently
ForkSort.NEWEST*.
+
+
listForks(GHRepository.ForkSort) - Method in class org.kohsuke.github.GHRepository
Lists all the direct forks of this repository, sorted by the given sort order.
-
listGists() - Method in class org.kohsuke.github.GHUser
+
listGists() - Method in class org.kohsuke.github.GHUser
Lists Gists created by this user.
-
listInstallations() - Method in class org.kohsuke.github.GHApp
+
listInstallations() - Method in class org.kohsuke.github.GHApp
-Deprecated.
+Deprecated.
-
listInvitations() - Method in class org.kohsuke.github.GHRepository
+
listInvitations() - Method in class org.kohsuke.github.GHRepository
Lists all the invitations.
-
listIssueEvents() - Method in class org.kohsuke.github.GHRepository
+
listIssueEvents() - Method in class org.kohsuke.github.GHRepository
Get all issue events for this repository.
-
listIssues(GHIssueState) - Method in class org.kohsuke.github.GHRepository
+
listIssues(GHIssueState) - Method in class org.kohsuke.github.GHRepository
Lists up all the issues in this repository.
-
listLabels() - Method in class org.kohsuke.github.GHRepository
+
listLabels() - Method in class org.kohsuke.github.GHRepository
Lists labels in this repository.
-
listLanguages() - Method in class org.kohsuke.github.GHRepository
+
listLanguages() - Method in class org.kohsuke.github.GHRepository
List languages for the specified repository.
-
listLicenses() - Method in class org.kohsuke.github.GitHub
+
listLicenses() - Method in class org.kohsuke.github.GitHub
Returns a list of popular open source licenses
-
listMembers() - Method in class org.kohsuke.github.GHOrganization
+
listMembers() - Method in class org.kohsuke.github.GHOrganization
All the members of this organization.
-
listMembers() - Method in class org.kohsuke.github.GHTeam
+
listMembers() - Method in class org.kohsuke.github.GHTeam
Retrieves the current members.
-
listMembersWithFilter(String) - Method in class org.kohsuke.github.GHOrganization
-
-
listMilestones(GHIssueState) - Method in class org.kohsuke.github.GHRepository
+
listMembersWithFilter(String) - Method in class org.kohsuke.github.GHOrganization
+
+List members with filter paged iterable.
+
+
listMilestones(GHIssueState) - Method in class org.kohsuke.github.GHRepository
Lists up all the milestones in this repository.
-
listMyAuthorizations() - Method in class org.kohsuke.github.GitHub
+
listMyAuthorizations() - Method in class org.kohsuke.github.GitHub
Returns a list of all authorizations.
-
listNotifications() - Method in class org.kohsuke.github.GHRepository
+
listNotifications() - Method in class org.kohsuke.github.GHRepository
List all the notifications in a repository for the current user.
-
listNotifications() - Method in class org.kohsuke.github.GitHub
+
listNotifications() - Method in class org.kohsuke.github.GitHub
List all the notifications.
-
listOrganizations() - Method in class org.kohsuke.github.GitHub
+
listOrganizations() - Method in class org.kohsuke.github.GitHub
Gets a list of all organizations.
-
listOrganizations(String) - Method in class org.kohsuke.github.GitHub
+
listOrganizations(String) - Method in class org.kohsuke.github.GitHub
Gets a list of all organizations starting after the organization identifier specified by 'since'.
-
listOrgMemberships() - Method in class org.kohsuke.github.GHMyself
+
listOrgMemberships() - Method in class org.kohsuke.github.GHMyself
List your organization memberships
-
listOrgMemberships(GHMembership.State) - Method in class org.kohsuke.github.GHMyself
+
listOrgMemberships(GHMembership.State) - Method in class org.kohsuke.github.GHMyself
List your organization memberships
-
listProjects(GHProject.ProjectStateFilter) - Method in class org.kohsuke.github.GHOrganization
-
-Returns the projects for this organization.
-
-
listProjects() - Method in class org.kohsuke.github.GHOrganization
+
listProjects() - Method in class org.kohsuke.github.GHOrganization
Returns all open projects for the organization.
-
listProjects(GHProject.ProjectStateFilter) - Method in class org.kohsuke.github.GHRepository
-
-Returns the projects for this repository.
-
-
listProjects() - Method in class org.kohsuke.github.GHRepository
+
listProjects() - Method in class org.kohsuke.github.GHRepository
Returns open projects for this repository.
-
listPublicMembers() - Method in class org.kohsuke.github.GHOrganization
+
listProjects(GHProject.ProjectStateFilter) - Method in class org.kohsuke.github.GHOrganization
+
+Returns the projects for this organization.
+
+
listProjects(GHProject.ProjectStateFilter) - Method in class org.kohsuke.github.GHRepository
+
+Returns the projects for this repository.
+
+
listPublicMembers() - Method in class org.kohsuke.github.GHOrganization
All the public members of this organization.
-
listPullRequests(GHIssueState) - Method in class org.kohsuke.github.GHRepository
+
listPullRequests(GHIssueState) - Method in class org.kohsuke.github.GHRepository
-Deprecated.
-
+
Deprecated.
+
-
listReactions() - Method in class org.kohsuke.github.GHCommitComment
+
listReactions() - Method in class org.kohsuke.github.GHCommitComment
-Deprecated.
+Deprecated.
-
listReactions() - Method in class org.kohsuke.github.GHIssue
+
listReactions() - Method in class org.kohsuke.github.GHIssue
-Deprecated.
+Deprecated.
-
listReactions() - Method in class org.kohsuke.github.GHIssueComment
+
listReactions() - Method in class org.kohsuke.github.GHIssueComment
-Deprecated.
+Deprecated.
-
listReactions() - Method in class org.kohsuke.github.GHPullRequestReviewComment
+
listReactions() - Method in class org.kohsuke.github.GHPullRequestReviewComment
-Deprecated.
+Deprecated.
-
listReactions() - Method in interface org.kohsuke.github.Reactable
+
listReactions() - Method in interface org.kohsuke.github.Reactable
-Deprecated.
+Deprecated.
-
listRefs() - Method in class org.kohsuke.github.GHRepository
+
listRefs() - Method in class org.kohsuke.github.GHRepository
Retrieves all refs for the github repository.
-
listRefs(String) - Method in class org.kohsuke.github.GHRepository
+
listRefs(String) - Method in class org.kohsuke.github.GHRepository
Retrieves all refs of the given type for the current GitHub repository.
-
listReleases() - Method in class org.kohsuke.github.GHRepository
-
-
listRepositories() - Method in class org.kohsuke.github.GHMyself
+
listReleases() - Method in class org.kohsuke.github.GHRepository
+
+List releases paged iterable.
+
+
listRepositories() - Method in class org.kohsuke.github.GHMyself
Lists up all repositories this user owns (public and private).
-
listRepositories(int) - Method in class org.kohsuke.github.GHMyself
-
-List repositories that are accessible to the authenticated user (public and private) using the specified page size.
-
-
listRepositories(int, GHMyself.RepositoryListFilter) - Method in class org.kohsuke.github.GHMyself
-
-List repositories of a certain type that are accessible by current authenticated user using the specified page size.
-
-
listRepositories(int) - Method in class org.kohsuke.github.GHOrganization
-
-Lists up all the repositories using the specified page size.
-
-
listRepositories() - Method in class org.kohsuke.github.GHPerson
+
listRepositories() - Method in class org.kohsuke.github.GHPerson
Lists up all the repositories using a 30 items page size.
-
listRepositories(int) - Method in class org.kohsuke.github.GHPerson
+
listRepositories() - Method in class org.kohsuke.github.GHTeam
+
+List repositories paged iterable.
+
+
listRepositories(int) - Method in class org.kohsuke.github.GHMyself
+
+List repositories that are accessible to the authenticated user (public and private) using the specified page
+ size.
+
+
listRepositories(int) - Method in class org.kohsuke.github.GHOrganization
Lists up all the repositories using the specified page size.
-
listRepositories() - Method in class org.kohsuke.github.GHTeam
-
-
listReviewComments() - Method in class org.kohsuke.github.GHPullRequest
+
listRepositories(int) - Method in class org.kohsuke.github.GHPerson
+
+Lists up all the repositories using the specified page size.
+
+
listRepositories(int, GHMyself.RepositoryListFilter) - Method in class org.kohsuke.github.GHMyself
+
+List repositories of a certain type that are accessible by current authenticated user using the specified page
+ size.
+
+
listReviewComments() - Method in class org.kohsuke.github.GHPullRequest
Obtains all the review comments associated with this pull request.
-
listReviewComments() - Method in class org.kohsuke.github.GHPullRequestReview
+
listReviewComments() - Method in class org.kohsuke.github.GHPullRequestReview
Obtains all the review comments associated with this pull request review.
-
listReviews() - Method in class org.kohsuke.github.GHPullRequest
+
listReviews() - Method in class org.kohsuke.github.GHPullRequest
Retrieves all the reviews associated to this pull request.
-
listStargazers() - Method in class org.kohsuke.github.GHRepository
+
listStargazers() - Method in class org.kohsuke.github.GHRepository
Lists all the users who have starred this repo based on the old version of the API.
-
listStargazers2() - Method in class org.kohsuke.github.GHRepository
+
listStargazers2() - Method in class org.kohsuke.github.GHRepository
-Lists all the users who have starred this repo based on new version of the API, having extended
- information like the time when the repository was starred.
+Lists all the users who have starred this repo based on new version of the API, having extended information like
+ the time when the repository was starred.
-
listStarredRepositories() - Method in class org.kohsuke.github.GHUser
+
listStarredRepositories() - Method in class org.kohsuke.github.GHUser
Lists all the repositories that this user has starred.
-
listStatuses() - Method in class org.kohsuke.github.GHCommit
+
listStatuses() - Method in class org.kohsuke.github.GHCommit
-Gets the status of this commit, newer ones first.
+List statuses paged iterable.
-
listStatuses() - Method in class org.kohsuke.github.GHDeployment
-
-
listSubscribers() - Method in class org.kohsuke.github.GHRepository
+
listStatuses() - Method in class org.kohsuke.github.GHDeployment
-Lists all the subscribers (aka watchers.)
-
- https://developer.github.com/v3/activity/watching/
+List statuses paged iterable.
-
listSubscriptions() - Method in class org.kohsuke.github.GHUser
+
listSubscribers() - Method in class org.kohsuke.github.GHRepository
+
+Lists all the subscribers (aka watchers.)
+
+
listSubscriptions() - Method in class org.kohsuke.github.GHUser
Lists all the subscribed (aka watched) repositories.
-
listTags() - Method in class org.kohsuke.github.GHRepository
-
-
listTeams() - Method in class org.kohsuke.github.GHOrganization
+
listTags() - Method in class org.kohsuke.github.GHRepository
+
+List tags paged iterable.
+
+
listTeams() - Method in class org.kohsuke.github.GHOrganization
List up all the teams.
-
listTopics() - Method in class org.kohsuke.github.GHRepository
+
listTopics() - Method in class org.kohsuke.github.GHRepository
Return the topics for this repository.
-
listUsers() - Method in class org.kohsuke.github.GitHub
+
listUsers() - Method in class org.kohsuke.github.GitHub
Returns a list of all users.
location - Variable in class org.kohsuke.github.GHPerson
-
location(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
-
-
lock() - Method in class org.kohsuke.github.GHIssue
-
+
location(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Location gh user search builder.
+
+
lock() - Method in class org.kohsuke.github.GHIssue
+
+Lock.
+
locked - Variable in class org.kohsuke.github.GHIssue
login - Variable in class org.kohsuke.github.GHPerson
+
LONG_RUNNING - org.kohsuke.github.GHPullRequestQueryBuilder.Sort
+
-
+
M
-markAsRead() - Method in class org.kohsuke.github.GHNotificationStream
-
-markAsRead(long) - Method in class org.kohsuke.github.GHNotificationStream
+MAINTAINER - org.kohsuke.github.GHTeam.Role
+
+Able to add/remove other team members, promote other team members to team maintainer, and edit the team's
+ name and description.
+
+markAsRead() - Method in class org.kohsuke.github.GHNotificationStream
+
+Mark as read.
+
+markAsRead() - Method in class org.kohsuke.github.GHThread
+
+Marks this thread as read.
+
+markAsRead(long) - Method in class org.kohsuke.github.GHNotificationStream
Marks all the notifications as read.
-markAsRead() - Method in class org.kohsuke.github.GHThread
+MARKDOWN - org.kohsuke.github.MarkdownMode
-Marks this thread as read.
+Render a document as plain Markdown, just like README files are rendered.
MarkdownMode - Enum in org.kohsuke.github
Rendering mode of markdown.
-mentions(GHUser) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+MARKETPLACE_PURCHASE - org.kohsuke.github.GHEvent
-mentions(String) - Method in class org.kohsuke.github.GHIssueSearchBuilder
-
-merge(boolean) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+MEMBER - org.kohsuke.github.GHCommentAuthorAssociation
-Deprecated.
-
-merge(String) - Method in class org.kohsuke.github.GHPullRequest
+Author is a member of the organization that owns the repository.
+
+MEMBER - org.kohsuke.github.GHEvent
+
+MEMBER - org.kohsuke.github.GHMembership.Role
+
+Non-owner organization member.
+
+MEMBER - org.kohsuke.github.GHMyself.RepositoryListFilter
+
+Public and private repositories that current user is a member
+
+MEMBER - org.kohsuke.github.GHOrganization.Role
+
+The user is an owner of the organization.
+
+MEMBER - org.kohsuke.github.GHTeam.Role
+
+A normal member of the team
+
+MEMBERSHIP - org.kohsuke.github.GHEvent
+
+mentions(String) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Mentions gh issue search builder.
+
+mentions(GHUser) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Mentions gh issue search builder.
+
+merge(boolean) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Merge gh commit search builder.
+
+merge(String) - Method in class org.kohsuke.github.GHPullRequest
Merge this pull request.
-merge(String, String) - Method in class org.kohsuke.github.GHPullRequest
+merge(String, String) - Method in class org.kohsuke.github.GHPullRequest
Merge this pull request.
-merge(String, String, GHPullRequest.MergeMethod) - Method in class org.kohsuke.github.GHPullRequest
+merge(String, String, GHPullRequest.MergeMethod) - Method in class org.kohsuke.github.GHPullRequest
Merge this pull request, using the specified merge method.
-message(String) - Method in class org.kohsuke.github.GHCommitBuilder
-
-message(String) - Method in class org.kohsuke.github.GHContentBuilder
+MERGE - org.kohsuke.github.GHPullRequest.MergeMethod
+message(String) - Method in class org.kohsuke.github.GHCommitBuilder
+
+Message gh commit builder.
+
+message(String) - Method in class org.kohsuke.github.GHContentBuilder
+
+Message gh content builder.
+
milestone - Variable in class org.kohsuke.github.GHIssue
-milestone(GHMilestone) - Method in class org.kohsuke.github.GHIssueBuilder
+milestone(GHMilestone) - Method in class org.kohsuke.github.GHIssueBuilder
+
+Milestone gh issue builder.
+
+MILESTONE - org.kohsuke.github.GHEvent
+
+MINUS_ONE - org.kohsuke.github.ReactionContent
-
+
N
@@ -4494,39 +6310,61 @@
name - Variable in class org.kohsuke.github.GHPerson
-
name(String) - Method in class org.kohsuke.github.GHReleaseBuilder
+
name(String) - Method in class org.kohsuke.github.GHReleaseBuilder
+
+Name gh release builder.
+
+
name(String) - Method in class org.kohsuke.github.GHReleaseUpdater
+
+Name gh release updater.
+
+
NEWEST - org.kohsuke.github.GHRepository.ForkSort
-
name(String) - Method in class org.kohsuke.github.GHReleaseUpdater
+
next() - Method in class org.kohsuke.github.PagedIterator
-
next() - Method in class org.kohsuke.github.PagedIterator
-
-
nextPage() - Method in class org.kohsuke.github.PagedIterator
+
nextPage() - Method in class org.kohsuke.github.PagedIterator
Gets the next page worth of data.
-
nonBlocking(boolean) - Method in class org.kohsuke.github.GHNotificationStream
+
NON_ADMINS - org.kohsuke.github.EnforcementLevel
-
+Deprecated.
+
+
nonBlocking(boolean) - Method in class org.kohsuke.github.GHNotificationStream
+
+
+
NONE - org.kohsuke.github.GHCommentAuthorAssociation
+
+Author has no association with the repository.
+
+
NONE - org.kohsuke.github.GHPermissionType
+
NOTIFICATIONS - Static variable in class org.kohsuke.github.GHAuthorization
number - Variable in class org.kohsuke.github.GHIssue
-
+
O
ObsoleteUrlFactory - Class in org.kohsuke.github.extras.okhttp3
-OkHttp 3.14 dropped support for the long-deprecated OkUrlFactory class, which allows you to use
- the HttpURLConnection API with OkHttp's implementation.
+OkHttp 3.14 dropped support for the long-deprecated OkUrlFactory class, which allows you to use the HttpURLConnection
+ API with OkHttp's implementation.
-ObsoleteUrlFactory(OkHttpClient) - Constructor for class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
-
-offline() - Static method in class org.kohsuke.github.GitHub
+ObsoleteUrlFactory(OkHttpClient) - Constructor for class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
+
+Instantiates a new Obsolete url factory.
+
+OFF - org.kohsuke.github.EnforcementLevel
+
+Deprecated.
+
+offline() - Static method in class org.kohsuke.github.GitHub
An offline-only
GitHub useful for parsing event notification from an unknown source.
@@ -4536,69 +6374,113 @@
OkHttp3Connector - Class in org.kohsuke.github.extras
-Deprecated.
+Deprecated.
-OkHttp3Connector(OkUrlFactory) - Constructor for class org.kohsuke.github.extras.OkHttp3Connector
+OkHttp3Connector(OkUrlFactory) - Constructor for class org.kohsuke.github.extras.OkHttp3Connector
-Deprecated.
+Deprecated.
OkHttpConnector - Class in org.kohsuke.github.extras.okhttp3
-OkHttpConnector(OkHttpClient) - Constructor for class org.kohsuke.github.extras.okhttp3.OkHttpConnector
-
-OkHttpConnector(OkHttpClient, int) - Constructor for class org.kohsuke.github.extras.okhttp3.OkHttpConnector
-
OkHttpConnector - Class in org.kohsuke.github.extras
-OkHttpConnector(OkUrlFactory) - Constructor for class org.kohsuke.github.extras.OkHttpConnector
+OkHttpConnector(OkUrlFactory) - Constructor for class org.kohsuke.github.extras.OkHttpConnector
+
+Instantiates a new Ok http connector.
+
+OkHttpConnector(OkHttpClient) - Constructor for class org.kohsuke.github.extras.okhttp3.OkHttpConnector
+
+Instantiates a new Ok http connector.
+
+OkHttpConnector(OkHttpClient, int) - Constructor for class org.kohsuke.github.extras.okhttp3.OkHttpConnector
+
+Instantiates a new Ok http connector.
+
+OLDEST - org.kohsuke.github.GHRepository.ForkSort
-onError(IOException, HttpURLConnection) - Method in class org.kohsuke.github.AbuseLimitHandler
+onError(IOException, HttpURLConnection) - Method in class org.kohsuke.github.AbuseLimitHandler
Called when the library encounters HTTP error indicating that the API abuse limit is reached.
-onError(IOException, HttpURLConnection) - Method in class org.kohsuke.github.RateLimitHandler
+onError(IOException, HttpURLConnection) - Method in class org.kohsuke.github.RateLimitHandler
Called when the library encounters HTTP error indicating that the API rate limit is reached.
-open(URL) - Method in class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
-
-order(GHDirection) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+open(URL) - Method in class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
-Deprecated.
-
-order(GHDirection) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+Open http url connection.
+
+OPEN - org.kohsuke.github.GHIssueState
-order(GHDirection) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+OPEN - org.kohsuke.github.GHMilestoneState
-order(GHDirection) - Method in class org.kohsuke.github.GHUserSearchBuilder
+OPEN - org.kohsuke.github.GHProject.ProjectState
-org(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+OPEN - org.kohsuke.github.GHProject.ProjectStateFilter
+
+order(GHDirection) - Method in class org.kohsuke.github.GHCommitSearchBuilder
-Deprecated.
-
+Deprecated.
+Order gh commit search builder.
+
+order(GHDirection) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Order gh issue search builder.
+
+order(GHDirection) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Order gh repository search builder.
+
+order(GHDirection) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Order gh user search builder.
+
+org(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Org gh commit search builder.
+
+ORG_BLOCK - org.kohsuke.github.GHEvent
+
org.kohsuke.github - package org.kohsuke.github
+org.kohsuke.github.example.dataobject - package org.kohsuke.github.example.dataobject
+
org.kohsuke.github.extras - package org.kohsuke.github.extras
org.kohsuke.github.extras.okhttp3 - package org.kohsuke.github.extras.okhttp3
+ORGANIZATION - org.kohsuke.github.GHEvent
+
+ORGANIZATION - org.kohsuke.github.GHTargetType
+
owner - Variable in class org.kohsuke.github.GHProject
+OWNER - org.kohsuke.github.GHCommentAuthorAssociation
+
+Author is the owner of the repository.
+
+OWNER - org.kohsuke.github.GHMyself.RepositoryListFilter
+
+Public and private repositories owned by current user
+
-
+
P
+PAGE_BUILD - org.kohsuke.github.GHEvent
+
PagedIterable <T > - Class in org.kohsuke.github
-
+
-PagedIterable() - Constructor for class org.kohsuke.github.PagedIterable
+PagedIterable() - Constructor for class org.kohsuke.github.PagedIterable
PagedIterator <T > - Class in org.kohsuke.github
@@ -4608,62 +6490,90 @@
PagedIterable enhanced to report search result specific information.
- pageSize(int) - Method in class org.kohsuke.github.GHCommitQueryBuilder
-
-Parent() - Constructor for class org.kohsuke.github.GHCommit.Parent
-
-parent(String) - Method in class org.kohsuke.github.GHCommitBuilder
-
-parent(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+pageSize(int) - Method in class org.kohsuke.github.GHCommitQueryBuilder
-Deprecated.
-
-parseEventPayload(Reader, Class<T>) - Method in class org.kohsuke.github.GitHub
+Page size gh commit query builder.
+
+parent(String) - Method in class org.kohsuke.github.GHCommitBuilder
+
+Parent gh commit builder.
+
+parent(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Parent gh commit search builder.
+
+Parent() - Constructor for class org.kohsuke.github.GHCommit.Parent
+
+parseEventPayload(Reader, Class<T>) - Method in class org.kohsuke.github.GitHub
Parses the GitHub event object.
-participating(boolean) - Method in class org.kohsuke.github.GHNotificationStream
+participating(boolean) - Method in class org.kohsuke.github.GHNotificationStream
-Should the stream be restricted to notifications in which the user
- is directly participating or mentioned?
+Should the stream be restricted to notifications in which the user is directly participating or mentioned?
-Participation() - Constructor for class org.kohsuke.github.GHRepositoryStatistics.Participation
+Participation() - Constructor for class org.kohsuke.github.GHRepositoryStatistics.Participation
-path(String) - Method in class org.kohsuke.github.GHCommitQueryBuilder
+path(String) - Method in class org.kohsuke.github.GHCommitQueryBuilder
Only commits containing this file path will be returned.
-path(String) - Method in class org.kohsuke.github.GHContentBuilder
-
-path(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
+path(String) - Method in class org.kohsuke.github.GHContentBuilder
+
+Path gh content builder.
+
+path(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
+
+Path gh content search builder.
+
payload - Variable in class org.kohsuke.github.GHDeployment
-payload(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
+payload(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
+
+Payload gh deployment builder.
+
+PENDING - org.kohsuke.github.GHCommitState
+
+PENDING - org.kohsuke.github.GHDeploymentState
+
+PENDING - org.kohsuke.github.GHMembership.State
+
+PENDING - org.kohsuke.github.GHPullRequestReviewEvent
+
+PENDING - org.kohsuke.github.GHPullRequestReviewState
permitted - Variable in class org.kohsuke.github.GHLicense
-Ping() - Constructor for class org.kohsuke.github.GHEventPayload.Ping
+ping() - Method in class org.kohsuke.github.GHHook
+
+Ping.
+
+Ping() - Constructor for class org.kohsuke.github.GHEventPayload.Ping
-ping() - Method in class org.kohsuke.github.GHHook
+PING - org.kohsuke.github.GHEvent
-populate() - Method in class org.kohsuke.github.GHContent
+PLUS_ONE - org.kohsuke.github.ReactionContent
+
+POPULARITY - org.kohsuke.github.GHPullRequestQueryBuilder.Sort
+
+populate() - Method in class org.kohsuke.github.GHContent
Fully populate the data by retrieving missing data.
-populate() - Method in class org.kohsuke.github.GHLicense
+populate() - Method in class org.kohsuke.github.GHLicense
Fully populate the data by retrieving missing data.
-populate() - Method in class org.kohsuke.github.GHPerson
+populate() - Method in class org.kohsuke.github.GHPerson
Fully populate the data by retrieving missing data.
-prerelease(boolean) - Method in class org.kohsuke.github.GHReleaseBuilder
+prerelease(boolean) - Method in class org.kohsuke.github.GHReleaseBuilder
Optional
-prerelease(boolean) - Method in class org.kohsuke.github.GHReleaseUpdater
+prerelease(boolean) - Method in class org.kohsuke.github.GHReleaseUpdater
Optional
@@ -4673,90 +6583,122 @@
primary - Variable in class org.kohsuke.github.GHEmail
-private_(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+PRIVATE - org.kohsuke.github.GHMyself.RepositoryListFilter
+
+Private repositories that current user has access or collaborates to
+
+private_(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
Creates a private repository
project - Variable in class org.kohsuke.github.GHProjectColumn
-Public() - Constructor for class org.kohsuke.github.GHEventPayload.Public
+PROJECT - org.kohsuke.github.GHEvent
-public_(boolean) - Method in class org.kohsuke.github.GHGistBuilder
+PROJECT_CARD - org.kohsuke.github.GHEvent
+PROJECT_COLUMN - org.kohsuke.github.GHEvent
+
+Public() - Constructor for class org.kohsuke.github.GHEventPayload.Public
+
+PUBLIC - org.kohsuke.github.GHEvent
+
+PUBLIC - org.kohsuke.github.GHMyself.RepositoryListFilter
+
+Public repositories that current user has access or collaborates to
+
+public_(boolean) - Method in class org.kohsuke.github.GHGistBuilder
+
+Public gh gist builder.
+
public_gists - Variable in class org.kohsuke.github.GHPerson
PUBLIC_REPO - Static variable in class org.kohsuke.github.GHAuthorization
public_repos - Variable in class org.kohsuke.github.GHPerson
-publicize(GHUser) - Method in class org.kohsuke.github.GHOrganization
+publicize(GHUser) - Method in class org.kohsuke.github.GHOrganization
Publicizes the membership.
+PULL - org.kohsuke.github.GHOrganization.Permission
+
pull_request - Variable in class org.kohsuke.github.GHIssue
-PullRequest() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequest
+PULL_REQUEST - org.kohsuke.github.GHEvent
-PullRequest() - Constructor for class org.kohsuke.github.GHIssue.PullRequest
+PULL_REQUEST_REVIEW - org.kohsuke.github.GHEvent
-PullRequestReview() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequestReview
+PULL_REQUEST_REVIEW_COMMENT - org.kohsuke.github.GHEvent
-PullRequestReviewComment() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequestReviewComment
+PullRequest() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequest
-Push() - Constructor for class org.kohsuke.github.GHEventPayload.Push
+PullRequest() - Constructor for class org.kohsuke.github.GHIssue.PullRequest
-PushCommit() - Constructor for class org.kohsuke.github.GHEventPayload.Push.PushCommit
+PullRequestReview() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequestReview
-pushed(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+PullRequestReviewComment() - Constructor for class org.kohsuke.github.GHEventPayload.PullRequestReviewComment
-Pusher() - Constructor for class org.kohsuke.github.GHEventPayload.Push.Pusher
+Push() - Constructor for class org.kohsuke.github.GHEventPayload.Push
+
+PUSH - org.kohsuke.github.GHEvent
+
+PUSH - org.kohsuke.github.GHOrganization.Permission
+
+PushCommit() - Constructor for class org.kohsuke.github.GHEventPayload.Push.PushCommit
+
+pushed(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Pushed gh repository search builder.
+
+Pusher() - Constructor for class org.kohsuke.github.GHEventPayload.Push.Pusher
-
+
Q
-q(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+q(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
-Deprecated.
+Deprecated.
Search terms.
-q(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
+q(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
Search terms.
-q(String) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+q(String) - Method in class org.kohsuke.github.GHIssueSearchBuilder
Search terms.
-q(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+q(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
Search terms.
-q(String) - Method in class org.kohsuke.github.GHSearchBuilder
+q(String) - Method in class org.kohsuke.github.GHSearchBuilder
Search terms.
-q(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+q(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
Search terms.
-queryCommits() - Method in class org.kohsuke.github.GHRepository
+queryCommits() - Method in class org.kohsuke.github.GHRepository
Search commits by specifying filters through a builder pattern.
-queryPullRequests() - Method in class org.kohsuke.github.GHRepository
+queryPullRequests() - Method in class org.kohsuke.github.GHRepository
Retrieves pull requests.
-
+
R
-rateLimit() - Method in class org.kohsuke.github.GitHub
+rateLimit() - Method in class org.kohsuke.github.GitHub
Gets the current rate limit while trying not to actually make any remote requests unless absolutely necessary.
@@ -4764,28 +6706,30 @@
Pluggable strategy to determine what to do when the API rate limit is reached.
-RateLimitHandler() - Constructor for class org.kohsuke.github.RateLimitHandler
+RateLimitHandler() - Constructor for class org.kohsuke.github.RateLimitHandler
Reactable - Interface in org.kohsuke.github
-Deprecated.
+Deprecated.
ReactionContent - Enum in org.kohsuke.github
Content of reactions.
-read() - Method in class org.kohsuke.github.GHBlob
+read() - Method in class org.kohsuke.github.GHBlob
+
+Read input stream.
+
+read() - Method in class org.kohsuke.github.GHContent
Retrieves the actual bytes of the blob.
-read() - Method in class org.kohsuke.github.GHContent
-
-Retrieves the actual bytes of the blob.
-
-read(boolean) - Method in class org.kohsuke.github.GHNotificationStream
+read(boolean) - Method in class org.kohsuke.github.GHNotificationStream
Should the stream include notifications that are already read?
+READ - org.kohsuke.github.GHPermissionType
+
READ_HOOK - Static variable in class org.kohsuke.github.GHAuthorization
READ_KEY - Static variable in class org.kohsuke.github.GHAuthorization
@@ -4796,159 +6740,265 @@
Default read timeout in milliseconds
-readAsBlob() - Method in class org.kohsuke.github.GHTreeEntry
+readAsBlob() - Method in class org.kohsuke.github.GHTreeEntry
If this tree entry represents a file, then return its content.
-readBlob(String) - Method in class org.kohsuke.github.GHRepository
+readBlob(String) - Method in class org.kohsuke.github.GHRepository
Reads the content of a blob as a stream for better efficiency.
+ReadOnlyObjects - Class in org.kohsuke.github.example.dataobject
+
+GHMeta wraps the list of GitHub's IP addresses.
+
+ReadOnlyObjects() - Constructor for class org.kohsuke.github.example.dataobject.ReadOnlyObjects
+
+ReadOnlyObjects.GHMetaExample - Interface in org.kohsuke.github.example.dataobject
+
+All GHMeta data objects should expose these values.
+
+ReadOnlyObjects.GHMetaGettersFinal - Class in org.kohsuke.github.example.dataobject
+
+This version uses only public getters and returns unmodifiable lists and has final fields
+
+ReadOnlyObjects.GHMetaGettersFinalCreator - Class in org.kohsuke.github.example.dataobject
+
+This version uses only public getters and returns unmodifiable lists
+
+ReadOnlyObjects.GHMetaGettersUnmodifiable - Class in org.kohsuke.github.example.dataobject
+
+This version uses only public getters and returns unmodifiable lists.
+
+ReadOnlyObjects.GHMetaPackage - Class in org.kohsuke.github.example.dataobject
+
+This version uses public getters and shows that package or private setters both can be used by jackson.
+
+ReadOnlyObjects.GHMetaPublic - Class in org.kohsuke.github.example.dataobject
+
+This version uses public getters and setters and leaves it up to Jackson how it wants to fill them.
+
+REBASE - org.kohsuke.github.GHPullRequest.MergeMethod
+
+Record(int, int, long) - Constructor for class org.kohsuke.github.GHRateLimit.Record
+
+Instantiates a new Record.
+
+Record(int, int, long, String) - Constructor for class org.kohsuke.github.GHRateLimit.Record
+
+Instantiates a new Record.
+
ref - Variable in class org.kohsuke.github.GHDeployment
-ref(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
-
-refresh() - Method in class org.kohsuke.github.GHContent
+ref(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
+
+Ref gh deployment builder.
+
+refresh() - Method in class org.kohsuke.github.GHContent
Fully populate the data by retrieving missing data.
-refresh() - Method in class org.kohsuke.github.GHPullRequest
+refresh() - Method in class org.kohsuke.github.GHPullRequest
Repopulates this object.
-refresh() - Method in class org.kohsuke.github.GHTeam
+refresh() - Method in class org.kohsuke.github.GHTeam
-refresh() - Method in interface org.kohsuke.github.Refreshable
+refresh() - Method in interface org.kohsuke.github.Refreshable
Opens a connection to the given URL.
-refresh(Object) - Method in interface org.kohsuke.github.Refreshable
+refresh(Object) - Method in interface org.kohsuke.github.Refreshable
Calls refresh if the provided value is null
Refreshable - Interface in org.kohsuke.github
-
-refreshCache() - Method in class org.kohsuke.github.GitHub
+
+The interface Refreshable.
+
+refreshCache() - Method in class org.kohsuke.github.GitHub
clears all cached data in order for external changes (modifications and del) to be reflected
-Release() - Constructor for class org.kohsuke.github.GHEventPayload.Release
+Release() - Constructor for class org.kohsuke.github.GHEventPayload.Release
+
+RELEASE - org.kohsuke.github.GHEvent
remaining - Variable in class org.kohsuke.github.GHRateLimit
-Remaining calls that can be made.
+Deprecated.
+
+
-remove(GHUser) - Method in class org.kohsuke.github.GHOrganization
+remove() - Method in class org.kohsuke.github.PagedIterator
+
+remove(GHRepository) - Method in class org.kohsuke.github.GHTeam
-Remove a member of the organisation - which will remove them from
- all teams, and remove their access to the organization’s repositories.
+Remove.
-remove(GHUser) - Method in class org.kohsuke.github.GHTeam
+remove(GHUser) - Method in class org.kohsuke.github.GHOrganization
+
+Remove a member of the organisation - which will remove them from all teams, and remove their access to the
+ organization’s repositories.
+
+remove(GHUser) - Method in class org.kohsuke.github.GHTeam
Removes a member to the team.
-remove(GHRepository) - Method in class org.kohsuke.github.GHTeam
-
-remove() - Method in class org.kohsuke.github.PagedIterator
-
-removeAssignees(GHUser...) - Method in class org.kohsuke.github.GHIssue
-
-removeAssignees(Collection<GHUser>) - Method in class org.kohsuke.github.GHIssue
-
-removeCollaborators(GHUser...) - Method in class org.kohsuke.github.GHRepository
-
-removeCollaborators(Collection<GHUser>) - Method in class org.kohsuke.github.GHRepository
-
-removeLabels(String...) - Method in class org.kohsuke.github.GHIssue
+removeAssignees(Collection<GHUser>) - Method in class org.kohsuke.github.GHIssue
+
+Remove assignees.
+
+removeAssignees(GHUser...) - Method in class org.kohsuke.github.GHIssue
+
+Remove assignees.
+
+removeCollaborators(Collection<GHUser>) - Method in class org.kohsuke.github.GHRepository
+
+Remove collaborators.
+
+removeCollaborators(GHUser...) - Method in class org.kohsuke.github.GHRepository
+
+Remove collaborators.
+
+removeLabels(String...) - Method in class org.kohsuke.github.GHIssue
Remove a given label by name from this issue.
-removeLabels(GHLabel...) - Method in class org.kohsuke.github.GHIssue
-
-removeLabels(Collection<GHLabel>) - Method in class org.kohsuke.github.GHIssue
-
-renameFile(String, String) - Method in class org.kohsuke.github.GHGistUpdater
-
-renameTo(String) - Method in class org.kohsuke.github.GHRepository
+removeLabels(Collection<GHLabel>) - Method in class org.kohsuke.github.GHIssue
+
+Remove labels.
+
+removeLabels(GHLabel...) - Method in class org.kohsuke.github.GHIssue
+
+Remove labels.
+
+renameFile(String, String) - Method in class org.kohsuke.github.GHGistUpdater
+
+Rename file gh gist updater.
+
+renameTo(String) - Method in class org.kohsuke.github.GHRepository
Rename this repository.
-renderMarkdown(String, MarkdownMode) - Method in class org.kohsuke.github.GHRepository
-
-Render a Markdown document.
-
-renderMarkdown(String) - Method in class org.kohsuke.github.GitHub
+renderMarkdown(String) - Method in class org.kohsuke.github.GitHub
Render a Markdown document in raw mode.
-reopen() - Method in class org.kohsuke.github.GHIssue
+renderMarkdown(String, MarkdownMode) - Method in class org.kohsuke.github.GHRepository
+
+Render a Markdown document.
+
+reopen() - Method in class org.kohsuke.github.GHIssue
Reopens this issue.
-reopen() - Method in class org.kohsuke.github.GHMilestone
+reopen() - Method in class org.kohsuke.github.GHMilestone
Reopens this milestone.
-reply(String) - Method in class org.kohsuke.github.GHPullRequestReviewComment
+reply(String) - Method in class org.kohsuke.github.GHPullRequestReviewComment
Create a new comment that replies to this comment.
-REPO - Static variable in class org.kohsuke.github.GHAuthorization
-
-repo(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+repo(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
-Deprecated.
-
-repo(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
-repo(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+Deprecated.
+Repo gh commit search builder.
+
+repo(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
+
+Repo gh content search builder.
+
+repo(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Repo gh repository search builder.
+
+REPO - Static variable in class org.kohsuke.github.GHAuthorization
REPO_STATUS - Static variable in class org.kohsuke.github.GHAuthorization
-repos(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+repos(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Repos gh user search builder.
+
+REPOSITORIES - org.kohsuke.github.GHUserSearchBuilder.Sort
-Repository() - Constructor for class org.kohsuke.github.GHEventPayload.Repository
+Repository() - Constructor for class org.kohsuke.github.GHEventPayload.Repository
+
+REPOSITORY - org.kohsuke.github.GHEvent
repository_url - Variable in class org.kohsuke.github.GHDeployment
repository_url - Variable in class org.kohsuke.github.GHDeploymentStatus
-repositoryIds(List<Long>) - Method in class org.kohsuke.github.GHAppCreateTokenBuilder
+repositoryIds(List<Long>) - Method in class org.kohsuke.github.GHAppCreateTokenBuilder
-Deprecated.
+Deprecated.
req - Variable in class org.kohsuke.github.GHQueryBuilder
-requestReviewers(List<GHUser>) - Method in class org.kohsuke.github.GHPullRequest
-
-requestTeamReviewers(List<GHTeam>) - Method in class org.kohsuke.github.GHPullRequest
-
-requireBranchIsUpToDate() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-requireBranchIsUpToDate(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-requireCodeOwnReviews() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-requireCodeOwnReviews(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+REQUEST_CHANGES - org.kohsuke.github.GHPullRequestReviewEvent
+REQUEST_CHANGES - org.kohsuke.github.GHPullRequestReviewState
+
+Deprecated.
+
+
+
+requestReviewers(List<GHUser>) - Method in class org.kohsuke.github.GHPullRequest
+
+Request reviewers.
+
+requestTeamReviewers(List<GHTeam>) - Method in class org.kohsuke.github.GHPullRequest
+
+Request team reviewers.
+
+requireBranchIsUpToDate() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Require branch is up to date gh branch protection builder.
+
+requireBranchIsUpToDate(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Require branch is up to date gh branch protection builder.
+
+requireCodeOwnReviews() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Require code own reviews gh branch protection builder.
+
+requireCodeOwnReviews(boolean) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Require code own reviews gh branch protection builder.
+
required - Variable in class org.kohsuke.github.GHLicense
-requiredContexts(List<String>) - Method in class org.kohsuke.github.GHDeploymentBuilder
+requiredContexts(List<String>) - Method in class org.kohsuke.github.GHDeploymentBuilder
+
+Required contexts gh deployment builder.
+
+requiredReviewers(int) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Required reviewers gh branch protection builder.
+
+RequiredReviews() - Constructor for class org.kohsuke.github.GHBranchProtection.RequiredReviews
-requiredReviewers(int) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-RequiredReviews() - Constructor for class org.kohsuke.github.GHBranchProtection.RequiredReviews
-
-RequiredStatusChecks() - Constructor for class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
-
-requireReviews() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+RequiredStatusChecks() - Constructor for class org.kohsuke.github.GHBranchProtection.RequiredStatusChecks
+requireReviews() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Require reviews gh branch protection builder.
+
reset - Variable in class org.kohsuke.github.GHRateLimit
-The time at which the current rate limit window resets in UTC epoch seconds.
+Deprecated.
+
+
+
+resetAuth(String, String) - Method in class org.kohsuke.github.GitHub
+
+Reset auth gh authorization.
-resetAuth(String, String) - Method in class org.kohsuke.github.GitHub
-
responseHeaderFields - Variable in exception org.kohsuke.github.GHFileNotFoundException
responseHeaderFields - Variable in exception org.kohsuke.github.GHIOException
@@ -4957,12 +7007,16 @@
Capture response HTTP headers on the state object.
-Restrictions() - Constructor for class org.kohsuke.github.GHBranchProtection.Restrictions
-
-restrictPushAccess() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-restrictReviewDismissals() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+Restrictions() - Constructor for class org.kohsuke.github.GHBranchProtection.Restrictions
+restrictPushAccess() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Restrict push access gh branch protection builder.
+
+restrictReviewDismissals() - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Restrict review dismissals gh branch protection builder.
+
root - Variable in class org.kohsuke.github.GHEventPayload
root - Variable in class org.kohsuke.github.GHProject
@@ -4974,320 +7028,564 @@
root - Variable in class org.kohsuke.github.GHTeam
-
+
S
-searchCommits() - Method in class org.kohsuke.github.GitHub
+searchCommits() - Method in class org.kohsuke.github.GitHub
-Deprecated.
+Deprecated.
-searchContent() - Method in class org.kohsuke.github.GitHub
+searchContent() - Method in class org.kohsuke.github.GitHub
Search content.
-searchIssues() - Method in class org.kohsuke.github.GitHub
+searchIssues() - Method in class org.kohsuke.github.GitHub
Search issues.
-searchRepositories() - Method in class org.kohsuke.github.GitHub
+searchRepositories() - Method in class org.kohsuke.github.GitHub
Search repositories.
-searchUsers() - Method in class org.kohsuke.github.GitHub
+searchUsers() - Method in class org.kohsuke.github.GitHub
Search users.
-setAccessTokenUrl(String) - Method in class org.kohsuke.github.GHAppInstallation
+SELECTED - org.kohsuke.github.GHRepositorySelection
-setAccount(GHUser) - Method in class org.kohsuke.github.GHAppInstallation
-
-setAppId(long) - Method in class org.kohsuke.github.GHAppInstallation
-
-setArchived(boolean) - Method in class org.kohsuke.github.GHProjectCard
-
-setAssignees(GHUser...) - Method in class org.kohsuke.github.GHIssue
-
-setAssignees(Collection<GHUser>) - Method in class org.kohsuke.github.GHIssue
-
-setBody(String) - Method in class org.kohsuke.github.GHIssue
-
-setBody(String) - Method in class org.kohsuke.github.GHProject
-
-setClient(OkHttpClient) - Method in class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
-
-setColor(String) - Method in class org.kohsuke.github.GHLabel
-
-setComment(GHCommitComment) - Method in class org.kohsuke.github.GHEventPayload.CommitComment
-
-setComment(GHIssueComment) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
-
-setConnector(HttpConnector) - Method in class org.kohsuke.github.GitHub
+setAccessTokenUrl(String) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets access token url.
+
+setAccount(GHUser) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets account.
+
+setApi(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets api.
+
+setAppId(long) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets app id.
+
+setArchived(boolean) - Method in class org.kohsuke.github.GHProjectCard
+
+Sets archived.
+
+setAssignees(Collection<GHUser>) - Method in class org.kohsuke.github.GHIssue
+
+Sets assignees.
+
+setAssignees(GHUser...) - Method in class org.kohsuke.github.GHIssue
+
+Sets assignees.
+
+setBody(String) - Method in class org.kohsuke.github.GHIssue
+
+Sets body.
+
+setBody(String) - Method in class org.kohsuke.github.GHProject
+
+Sets body.
+
+setClient(OkHttpClient) - Method in class org.kohsuke.github.extras.okhttp3.ObsoleteUrlFactory
+
+Sets client.
+
+setColor(String) - Method in class org.kohsuke.github.GHLabel
+
+Sets color.
+
+setComment(GHCommitComment) - Method in class org.kohsuke.github.GHEventPayload.CommitComment
+
+Sets comment.
+
+setComment(GHIssueComment) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
+
+Sets comment.
+
+setConnector(HttpConnector) - Method in class org.kohsuke.github.GitHub
Sets the custom connector used to make requests to GitHub.
-setContentType(String) - Method in class org.kohsuke.github.GHAsset
-
-setDefaultBranch(String) - Method in class org.kohsuke.github.GHRepository
-
-setDeployment(GHDeployment) - Method in class org.kohsuke.github.GHEventPayload.Deployment
-
-setDeployment(GHDeployment) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
-
-setDeploymentStatus(GHDeploymentStatus) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
-
-setDescription(String) - Method in class org.kohsuke.github.GHApp
-
-setDescription(String) - Method in class org.kohsuke.github.GHLabel
+setContentType(String) - Method in class org.kohsuke.github.GHAsset
-Deprecated.
+Sets content type.
-setDescription(String) - Method in class org.kohsuke.github.GHMilestone
-
-setDescription(String) - Method in class org.kohsuke.github.GHRepository
-
-setDescription(String) - Method in class org.kohsuke.github.GHTeam
-
-setDraft(boolean) - Method in class org.kohsuke.github.GHRelease
+setDefaultBranch(String) - Method in class org.kohsuke.github.GHRepository
-Deprecated.
-
+
Sets default branch.
+
+
setDeployment(GHDeployment) - Method in class org.kohsuke.github.GHEventPayload.Deployment
+
+Sets deployment.
+
+
setDeployment(GHDeployment) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
+
+Sets deployment.
+
+
setDeploymentStatus(GHDeploymentStatus) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
+
+Sets deployment status.
+
+
setDescription(String) - Method in class org.kohsuke.github.GHApp
+
+Sets description.
+
+
setDescription(String) - Method in class org.kohsuke.github.GHLabel
+
+Deprecated.
+
+
setDescription(String) - Method in class org.kohsuke.github.GHMilestone
+
+Sets description.
+
+
setDescription(String) - Method in class org.kohsuke.github.GHRepository
+
+Sets description.
+
+
setDescription(String) - Method in class org.kohsuke.github.GHTeam
+
+Sets description.
+
+
setDraft(boolean) - Method in class org.kohsuke.github.GHRelease
+
+Deprecated.
+
-
setDueOn(Date) - Method in class org.kohsuke.github.GHMilestone
-
-
setEmail(String) - Method in class org.kohsuke.github.GHEventPayload.Push.Pusher
-
-
setEmailServiceHook(String) - Method in class org.kohsuke.github.GHRepository
-
-
setEvents(List<GHEvent>) - Method in class org.kohsuke.github.GHApp
-
-
setEvents(List<GHEvent>) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setExternalUrl(String) - Method in class org.kohsuke.github.GHApp
-
-
setForkee(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Fork
-
-
setHomepage(String) - Method in class org.kohsuke.github.GHRepository
-
-
setInstallationsCount(long) - Method in class org.kohsuke.github.GHApp
-
-
setIssue(GHIssue) - Method in class org.kohsuke.github.GHEventPayload.Issue
-
-
setIssue(GHIssue) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
-
-
setLabel(String) - Method in class org.kohsuke.github.GHAsset
-
-
setLabels(String...) - Method in class org.kohsuke.github.GHIssue
-
-
setMilestone(GHMilestone) - Method in class org.kohsuke.github.GHIssue
-
-
setName(String) - Method in class org.kohsuke.github.GHApp
-
-
setName(String) - Method in class org.kohsuke.github.GHEventPayload.Push.Pusher
-
-
setName(String) - Method in class org.kohsuke.github.GHProject
-
-
setName(String) - Method in class org.kohsuke.github.GHProjectColumn
-
-
setName(String) - Method in class org.kohsuke.github.GHRelease
-
-
setNote(String) - Method in class org.kohsuke.github.GHProjectCard
-
-
setOrganization(GHOrganization) - Method in class org.kohsuke.github.GHEventPayload.Ping
-
-
setOrganization(GHOrganization) - Method in class org.kohsuke.github.GHEventPayload.Repository
-
-
setOrganizationPermission(GHPermissionType) - Method in class org.kohsuke.github.GHProject
+
setDueOn(Date) - Method in class org.kohsuke.github.GHMilestone
+
+Sets due on.
+
+
setEmail(String) - Method in class org.kohsuke.github.GHEventPayload.Push.Pusher
+
+Sets email.
+
+
setEmailServiceHook(String) - Method in class org.kohsuke.github.GHRepository
+
+Sets email service hook.
+
+
setEvents(List<GHEvent>) - Method in class org.kohsuke.github.GHApp
+
+Sets events.
+
+
setEvents(List<GHEvent>) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets events.
+
+
setExternalUrl(String) - Method in class org.kohsuke.github.GHApp
+
+Sets external url.
+
+
setForkee(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Fork
+
+Sets forkee.
+
+
setGit(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets git.
+
+
setHomepage(String) - Method in class org.kohsuke.github.GHRepository
+
+Sets homepage.
+
+
setHooks(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets hooks.
+
+
setImporter(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets importer.
+
+
setInstallationsCount(long) - Method in class org.kohsuke.github.GHApp
+
+Sets installations count.
+
+
setIssue(GHIssue) - Method in class org.kohsuke.github.GHEventPayload.Issue
+
+Sets issue.
+
+
setIssue(GHIssue) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
+
+Sets issue.
+
+
setLabel(String) - Method in class org.kohsuke.github.GHAsset
+
+Sets label.
+
+
setLabels(String...) - Method in class org.kohsuke.github.GHIssue
+
+Sets labels.
+
+
setMilestone(GHMilestone) - Method in class org.kohsuke.github.GHIssue
+
+Sets milestone.
+
+
setName(String) - Method in class org.kohsuke.github.GHApp
+
+Sets name.
+
+
setName(String) - Method in class org.kohsuke.github.GHEventPayload.Push.Pusher
+
+Sets name.
+
+
setName(String) - Method in class org.kohsuke.github.GHProject
+
+Sets name.
+
+
setName(String) - Method in class org.kohsuke.github.GHProjectColumn
+
+Sets name.
+
+
setName(String) - Method in class org.kohsuke.github.GHRelease
+
+Sets name.
+
+
setNote(String) - Method in class org.kohsuke.github.GHProjectCard
+
+Sets note.
+
+
setOrganization(GHOrganization) - Method in class org.kohsuke.github.GHEventPayload.Ping
+
+Sets organization.
+
+
setOrganization(GHOrganization) - Method in class org.kohsuke.github.GHEventPayload.Repository
+
+Sets organization.
+
+
setOrganizationPermission(GHPermissionType) - Method in class org.kohsuke.github.GHProject
Set the permission level that all members of the project's organization will have on this project.
-
setOwner(GHUser) - Method in class org.kohsuke.github.GHApp
-
-
setOwner(GHRepository) - Method in class org.kohsuke.github.GHRelease
-
-
setPermissions(Map<String, String>) - Method in class org.kohsuke.github.GHApp
-
-
setPermissions(Map<String, GHPermissionType>) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setPermissions(Map<String, String>) - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
setPrivate(boolean) - Method in class org.kohsuke.github.GHRepository
-
-
setPublic(boolean) - Method in class org.kohsuke.github.GHProject
+
setOwner(GHRepository) - Method in class org.kohsuke.github.GHRelease
+
+Sets owner.
+
+
setOwner(GHUser) - Method in class org.kohsuke.github.GHApp
+
+Sets owner.
+
+
setPages(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets pages.
+
+
setPermissions(Map<String, String>) - Method in class org.kohsuke.github.GHApp
+
+Sets permissions.
+
+
setPermissions(Map<String, String>) - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Sets permissions.
+
+
setPermissions(Map<String, GHPermissionType>) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets permissions.
+
+
setPrivate(boolean) - Method in class org.kohsuke.github.GHRepository
+
+Sets private.
+
+
setPublic(boolean) - Method in class org.kohsuke.github.GHProject
Sets visibility of the project within the organization.
-
setPusher(GHEventPayload.Push.Pusher) - Method in class org.kohsuke.github.GHEventPayload.Push
-
-
setRelease(GHRelease) - Method in class org.kohsuke.github.GHEventPayload.Release
-
-
setRepositories(List<GHRepository>) - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
setRepositoriesUrl(String) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.CommitComment
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Create
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Delete
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Deployment
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Fork
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Issue
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Ping
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Public
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Release
-
-
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Repository
-
-
setRepositorySelection(GHRepositorySelection) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setRepositorySelection(GHRepositorySelection) - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
setRoot(GitHub) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setRoot(GitHub) - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
setSender(GHUser) - Method in class org.kohsuke.github.GHEventPayload
-
-
setSingleFileName(String) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setState(GHProject.ProjectState) - Method in class org.kohsuke.github.GHProject
-
-
setTargetId(long) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setTargetType(GHTargetType) - Method in class org.kohsuke.github.GHAppInstallation
-
-
setTitle(String) - Method in class org.kohsuke.github.GHIssue
-
-
setTitle(String) - Method in class org.kohsuke.github.GHMilestone
-
-
setToken(String) - Method in class org.kohsuke.github.GHAppInstallationToken
-
-
sha(String) - Method in class org.kohsuke.github.GHContentBuilder
+
setPusher(GHEventPayload.Push.Pusher) - Method in class org.kohsuke.github.GHEventPayload.Push
-Used when updating (but not creating a new content) to specify
- Thetblob SHA of the file being replaced.
+Sets pusher.
+
+
setRelease(GHRelease) - Method in class org.kohsuke.github.GHEventPayload.Release
+
+Sets release.
+
+
setRepositories(List<GHRepository>) - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Sets repositories.
+
+
setRepositoriesUrl(String) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets repositories url.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.CommitComment
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Create
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Delete
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Deployment
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.DeploymentStatus
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Fork
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Issue
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.IssueComment
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Ping
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Public
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Release
+
+Sets repository.
+
+
setRepository(GHRepository) - Method in class org.kohsuke.github.GHEventPayload.Repository
+
+Sets repository.
+
+
setRepositorySelection(GHRepositorySelection) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets repository selection.
+
+
setRepositorySelection(GHRepositorySelection) - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Sets repository selection.
+
+
setRoot(GitHub) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets root.
+
+
setRoot(GitHub) - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Sets root.
+
+
setSender(GHUser) - Method in class org.kohsuke.github.GHEventPayload
+
+Sets sender.
+
+
setSingleFileName(String) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets single file name.
+
+
setState(GHProject.ProjectState) - Method in class org.kohsuke.github.GHProject
+
+Sets state.
+
+
setTargetId(long) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets target id.
+
+
setTargetType(GHTargetType) - Method in class org.kohsuke.github.GHAppInstallation
+
+Sets target type.
+
+
setTitle(String) - Method in class org.kohsuke.github.GHIssue
+
+Sets title.
+
+
setTitle(String) - Method in class org.kohsuke.github.GHMilestone
+
+Sets title.
+
+
setToken(String) - Method in class org.kohsuke.github.GHAppInstallationToken
+
+Sets token.
+
+
setTopics(List<String>) - Method in class org.kohsuke.github.GHRepository
+
+Set the topics for this repository.
+
+
setVerifiablePasswordAuthentication(boolean) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets verifiable password authentication.
+
+
setWeb(List<String>) - Method in class org.kohsuke.github.example.dataobject.ReadOnlyObjects.GHMetaPublic
+
+Sets web.
sha - Variable in class org.kohsuke.github.GHDeployment
-
shaEntry(String, String, boolean) - Method in class org.kohsuke.github.GHTreeBuilder
+
sha(String) - Method in class org.kohsuke.github.GHContentBuilder
-
+Used when updating (but not creating a new content) to specify Thetblob SHA of the file being replaced.
-
ShortInfo() - Constructor for class org.kohsuke.github.GHCommit.ShortInfo
+
shaEntry(String, String, boolean) - Method in class org.kohsuke.github.GHTreeBuilder
+
+Deprecated.
+
+
+
+
ShortInfo() - Constructor for class org.kohsuke.github.GHCommit.ShortInfo
-
since(Date) - Method in class org.kohsuke.github.GHCommitQueryBuilder
+
since(long) - Method in class org.kohsuke.github.GHCommitQueryBuilder
Only commits after this date will be returned
-
since(long) - Method in class org.kohsuke.github.GHCommitQueryBuilder
+
since(long) - Method in class org.kohsuke.github.GHNotificationStream
+
+Since gh notification stream.
+
+
since(Date) - Method in class org.kohsuke.github.GHCommitQueryBuilder
Only commits after this date will be returned
-
since(long) - Method in class org.kohsuke.github.GHNotificationStream
-
-
since(Date) - Method in class org.kohsuke.github.GHNotificationStream
-
-
size(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
-
size(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-
-
sort(GHCommitSearchBuilder.Sort) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
since(Date) - Method in class org.kohsuke.github.GHNotificationStream
-Deprecated.
-
-
sort(GHIssueSearchBuilder.Sort) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
Since gh notification stream.
+
+
size(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
+
+Size gh content search builder.
+
+
size(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Size gh repository search builder.
+
+
sort(GHCommitSearchBuilder.Sort) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Sort gh commit search builder.
+
+
sort(GHIssueSearchBuilder.Sort) - Method in class org.kohsuke.github.GHIssueSearchBuilder
+
+Sort gh issue search builder.
+
+
sort(GHPullRequestQueryBuilder.Sort) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
+
+Sort gh pull request query builder.
+
+
sort(GHRepositorySearchBuilder.Sort) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Sort gh repository search builder.
+
+
sort(GHUserSearchBuilder.Sort) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Sort gh user search builder.
+
+
SQUASH - org.kohsuke.github.GHPullRequest.MergeMethod
-
sort(GHPullRequestQueryBuilder.Sort) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
+
star() - Method in class org.kohsuke.github.GHGist
+
+Star.
+
+
STARGAZERS - org.kohsuke.github.GHRepository.ForkSort
-
sort(GHRepositorySearchBuilder.Sort) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-
-
sort(GHUserSearchBuilder.Sort) - Method in class org.kohsuke.github.GHUserSearchBuilder
-
-
star() - Method in class org.kohsuke.github.GHGist
-
-
stars(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
stars(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+Stars gh repository search builder.
+
+
STARS - org.kohsuke.github.GHRepositorySearchBuilder.Sort
state - Variable in class org.kohsuke.github.GHDeploymentStatus
state - Variable in class org.kohsuke.github.GHIssue
-
state(GHIssueState) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
-
-
Stats() - Constructor for class org.kohsuke.github.GHCommit.Stats
+
state(GHIssueState) - Method in class org.kohsuke.github.GHPullRequestQueryBuilder
+
+State gh pull request query builder.
+
+
Stats() - Constructor for class org.kohsuke.github.GHCommit.Stats
status - Variable in class org.kohsuke.github.GHCompare
+
STATUS - org.kohsuke.github.GHEvent
+
statuses_url - Variable in class org.kohsuke.github.GHDeployment
-
submit(String, GHPullRequestReviewState) - Method in class org.kohsuke.github.GHPullRequestReview
-
-
-
-
submit(String, GHPullRequestReviewEvent) - Method in class org.kohsuke.github.GHPullRequestReview
+
submit(String, GHPullRequestReviewEvent) - Method in class org.kohsuke.github.GHPullRequestReview
Updates the comment.
-
subscribe(boolean, boolean) - Method in class org.kohsuke.github.GHRepository
+
submit(String, GHPullRequestReviewState) - Method in class org.kohsuke.github.GHPullRequestReview
+
+Deprecated.
+
+
+
+
subscribe(boolean, boolean) - Method in class org.kohsuke.github.GHRepository
Subscribes to this repository to get notifications.
-
subscribe(boolean, boolean) - Method in class org.kohsuke.github.GHThread
+
subscribe(boolean, boolean) - Method in class org.kohsuke.github.GHThread
Subscribes to this conversation to get notifications.
+
SUCCESS - org.kohsuke.github.GHCommitState
+
+
SUCCESS - org.kohsuke.github.GHDeploymentState
+
-
+
T
-tag(String) - Method in class org.kohsuke.github.GHReleaseUpdater
-
+tag(String) - Method in class org.kohsuke.github.GHReleaseUpdater
+
+Tag gh release updater.
+
target_url - Variable in class org.kohsuke.github.GHDeploymentStatus
-targetUrl(String) - Method in class org.kohsuke.github.GHDeploymentStatusBuilder
-
+targetUrl(String) - Method in class org.kohsuke.github.GHDeploymentStatusBuilder
+
+Target url gh deployment status builder.
+
task - Variable in class org.kohsuke.github.GHDeployment
-task(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
-
-team(GHTeam) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+task(String) - Method in class org.kohsuke.github.GHDeploymentBuilder
+
+Task gh deployment builder.
+
+team(GHTeam) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
The team that gets granted access to this repository.
-teamPushAccess(Collection<GHTeam>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+TEAM - org.kohsuke.github.GHEvent
-teamPushAccess(GHTeam...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-teamReviewDismissals(Collection<GHTeam>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-teamReviewDismissals(GHTeam...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+TEAM_ADD - org.kohsuke.github.GHEvent
+teamPushAccess(Collection<GHTeam>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Team push access gh branch protection builder.
+
+teamPushAccess(GHTeam...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Team push access gh branch protection builder.
+
+teamReviewDismissals(Collection<GHTeam>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Team review dismissals gh branch protection builder.
+
+teamReviewDismissals(GHTeam...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+Team review dismissals gh branch protection builder.
+
terms - Variable in class org.kohsuke.github.GHSearchBuilder
-textContent(String) - Method in class org.kohsuke.github.GHBlobBuilder
+textContent(String) - Method in class org.kohsuke.github.GHBlobBuilder
Configures a blob with the specified text content.
-textEntry(String, String, boolean) - Method in class org.kohsuke.github.GHTreeBuilder
+textEntry(String, String, boolean) - Method in class org.kohsuke.github.GHTreeBuilder
-
+Deprecated.
+
+
title - Variable in class org.kohsuke.github.GHDeployKey
@@ -5295,446 +7593,496 @@
title - Variable in class org.kohsuke.github.GHKey
-topic(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-
-toString() - Method in enum org.kohsuke.github.EnforcementLevel
+topic(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
-Deprecated.
+Topic gh repository search builder.
+
+toString() - Method in enum org.kohsuke.github.EnforcementLevel
+
+Deprecated.
-toString() - Method in class org.kohsuke.github.GHBranch
+toString() - Method in class org.kohsuke.github.GHBranch
-toString() - Method in class org.kohsuke.github.GHDeployKey
+toString() - Method in class org.kohsuke.github.GHDeployKey
-toString() - Method in class org.kohsuke.github.GHEmail
+toString() - Method in class org.kohsuke.github.GHEmail
-toString() - Method in class org.kohsuke.github.GHIssueEvent
+toString() - Method in class org.kohsuke.github.GHIssueEvent
-toString() - Method in class org.kohsuke.github.GHKey
+toString() - Method in class org.kohsuke.github.GHKey
-toString() - Method in class org.kohsuke.github.GHObject
+toString() - Method in class org.kohsuke.github.GHObject
String representation to assist debugging and inspection.
-toString() - Method in class org.kohsuke.github.GHRateLimit
+toString() - Method in class org.kohsuke.github.GHRateLimit.Record
-toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.CodeFrequency
+toString() - Method in class org.kohsuke.github.GHRateLimit
-toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
+toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.CodeFrequency
-toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
+toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats
-toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.PunchCardItem
+toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
-toString() - Method in enum org.kohsuke.github.MarkdownMode
+toString() - Method in class org.kohsuke.github.GHRepositoryStatistics.PunchCardItem
+
+toString() - Method in enum org.kohsuke.github.MarkdownMode
TrafficInfo - Interface in org.kohsuke.github
-
-tree(String) - Method in class org.kohsuke.github.GHCommitBuilder
-
-tree(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
-Deprecated.
-
-Tree() - Constructor for class org.kohsuke.github.GHCompare.Tree
+The interface TrafficInfo.
+
+tree(String) - Method in class org.kohsuke.github.GHCommitBuilder
+
+Tree gh commit builder.
+
+tree(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+Tree gh commit search builder.
+
+Tree() - Constructor for class org.kohsuke.github.GHCompare.Tree
-Tree() - Constructor for class org.kohsuke.github.GHPullRequestCommitDetail.Tree
-
-type(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+Tree() - Constructor for class org.kohsuke.github.GHPullRequestCommitDetail.Tree
+type(String) - Method in class org.kohsuke.github.GHUserSearchBuilder
+
+Type gh user search builder.
+
-
+
U
-unfollow() - Method in class org.kohsuke.github.GHUser
+unfollow() - Method in class org.kohsuke.github.GHUser
Unfollow this user.
-unlock() - Method in class org.kohsuke.github.GHIssue
-
-unstar() - Method in class org.kohsuke.github.GHGist
-
-until(Date) - Method in class org.kohsuke.github.GHCommitQueryBuilder
+unlock() - Method in class org.kohsuke.github.GHIssue
+
+Unlock.
+
+unstar() - Method in class org.kohsuke.github.GHGist
+
+Unstar.
+
+until(long) - Method in class org.kohsuke.github.GHCommitQueryBuilder
Only commits before this date will be returned
-until(long) - Method in class org.kohsuke.github.GHCommitQueryBuilder
+until(Date) - Method in class org.kohsuke.github.GHCommitQueryBuilder
Only commits before this date will be returned
-update(String) - Method in class org.kohsuke.github.GHCommitComment
-
-Updates the body of the commit message.
-
-update(String, String) - Method in class org.kohsuke.github.GHContent
-
-update(String, String, String) - Method in class org.kohsuke.github.GHContent
-
-update(byte[], String) - Method in class org.kohsuke.github.GHContent
-
-update(byte[], String, String) - Method in class org.kohsuke.github.GHContent
-
-update() - Method in class org.kohsuke.github.GHGist
+update() - Method in class org.kohsuke.github.GHGist
Updates this gist via a builder.
-update() - Method in class org.kohsuke.github.GHGistUpdater
+update() - Method in class org.kohsuke.github.GHGistUpdater
Updates the Gist based on the parameters specified thus far.
-update(String) - Method in class org.kohsuke.github.GHIssueComment
-
-Updates the body of the issue comment.
-
-update(String) - Method in class org.kohsuke.github.GHPullRequestReviewComment
-
-Updates the comment.
-
-update() - Method in class org.kohsuke.github.GHRelease
+update() - Method in class org.kohsuke.github.GHRelease
Updates this release via a builder.
-update() - Method in class org.kohsuke.github.GHReleaseUpdater
+update() - Method in class org.kohsuke.github.GHReleaseUpdater
+
+Update gh release.
+
+update(byte[], String) - Method in class org.kohsuke.github.GHContent
+
+Update gh content update response.
+
+update(byte[], String, String) - Method in class org.kohsuke.github.GHContent
+
+Update gh content update response.
+
+update(String) - Method in class org.kohsuke.github.GHCommitComment
+
+Updates the body of the commit message.
+
+update(String) - Method in class org.kohsuke.github.GHIssueComment
+
+Updates the body of the issue comment.
+
+update(String) - Method in class org.kohsuke.github.GHPullRequestReviewComment
+
+Updates the comment.
+
+update(String, String) - Method in class org.kohsuke.github.GHContent
+
+Update gh content update response.
+
+update(String, String, String) - Method in class org.kohsuke.github.GHContent
+
+Update gh content update response.
+
+UPDATED - org.kohsuke.github.GHIssueSearchBuilder.Sort
+
+UPDATED - org.kohsuke.github.GHPullRequestQueryBuilder.Sort
+
+UPDATED - org.kohsuke.github.GHRepositorySearchBuilder.Sort
updated_at - Variable in class org.kohsuke.github.GHObject
-updateFile(String, String) - Method in class org.kohsuke.github.GHGistUpdater
-
-updateTo(String) - Method in class org.kohsuke.github.GHRef
+updateFile(String, String) - Method in class org.kohsuke.github.GHGistUpdater
+
+Update file gh gist updater.
+
+updateTo(String) - Method in class org.kohsuke.github.GHRef
Updates this ref to the specified commit.
-updateTo(String, Boolean) - Method in class org.kohsuke.github.GHRef
+updateTo(String, Boolean) - Method in class org.kohsuke.github.GHRef
Updates this ref to the specified commit.
-uploadAsset(File, String) - Method in class org.kohsuke.github.GHRelease
+uploadAsset(File, String) - Method in class org.kohsuke.github.GHRelease
Because github relies on SNI (http://en.wikipedia.org/wiki/Server_Name_Indication) this method will only work on
Java 7 or greater.
-uploadAsset(String, InputStream, String) - Method in class org.kohsuke.github.GHRelease
-
+uploadAsset(String, InputStream, String) - Method in class org.kohsuke.github.GHRelease
+
+Upload asset gh asset.
+
url - Variable in class org.kohsuke.github.GHDeployKey
url - Variable in class org.kohsuke.github.GHKey
url - Variable in class org.kohsuke.github.GHObject
-USER - Static variable in class org.kohsuke.github.GHAuthorization
-
-user(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
-
-Deprecated.
-
-User() - Constructor for class org.kohsuke.github.GHCompare.User
-
-Deprecated.
-
-user(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
-
user - Variable in class org.kohsuke.github.GHIssue
-user(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+user(String) - Method in class org.kohsuke.github.GHCommitSearchBuilder
+
+Deprecated.
+User gh commit search builder.
+
+user(String) - Method in class org.kohsuke.github.GHContentSearchBuilder
+
+User gh content search builder.
+
+user(String) - Method in class org.kohsuke.github.GHRepositorySearchBuilder
+
+User gh repository search builder.
+
+User() - Constructor for class org.kohsuke.github.GHCompare.User
+
+Deprecated.
+
+USER - org.kohsuke.github.GHTargetType
+
+USER - Static variable in class org.kohsuke.github.GHAuthorization
USER_EMAIL - Static variable in class org.kohsuke.github.GHAuthorization
USER_FOLLOW - Static variable in class org.kohsuke.github.GHAuthorization
-userPushAccess(Collection<GHUser>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-userPushAccess(GHUser...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-userReviewDismissals(Collection<GHUser>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
-userReviewDismissals(GHUser...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
-
+userPushAccess(Collection<GHUser>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+User push access gh branch protection builder.
+
+userPushAccess(GHUser...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+User push access gh branch protection builder.
+
+userReviewDismissals(Collection<GHUser>) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+User review dismissals gh branch protection builder.
+
+userReviewDismissals(GHUser...) - Method in class org.kohsuke.github.GHBranchProtectionBuilder
+
+User review dismissals gh branch protection builder.
+
-
+
V
-valueOf(String) - Static method in enum org.kohsuke.github.EnforcementLevel
+valueOf(String) - Static method in enum org.kohsuke.github.EnforcementLevel
-Deprecated.
+Deprecated.
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHCommentAuthorAssociation
+valueOf(String) - Static method in enum org.kohsuke.github.GHCommentAuthorAssociation
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHCommitSearchBuilder.Sort
+valueOf(String) - Static method in enum org.kohsuke.github.GHCommitSearchBuilder.Sort
-Deprecated.
+Deprecated.
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHCommitState
+valueOf(String) - Static method in enum org.kohsuke.github.GHCommitState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHCompare.Status
+valueOf(String) - Static method in enum org.kohsuke.github.GHCompare.Status
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHDeploymentState
+valueOf(String) - Static method in enum org.kohsuke.github.GHDeploymentState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHDirection
+valueOf(String) - Static method in enum org.kohsuke.github.GHDirection
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHEvent
+valueOf(String) - Static method in enum org.kohsuke.github.GHEvent
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHIssueSearchBuilder.Sort
+valueOf(String) - Static method in enum org.kohsuke.github.GHIssueSearchBuilder.Sort
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHIssueState
+valueOf(String) - Static method in enum org.kohsuke.github.GHIssueState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHMembership.Role
+valueOf(String) - Static method in enum org.kohsuke.github.GHMembership.Role
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHMembership.State
+valueOf(String) - Static method in enum org.kohsuke.github.GHMembership.State
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHMilestoneState
+valueOf(String) - Static method in enum org.kohsuke.github.GHMilestoneState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHMyself.RepositoryListFilter
+valueOf(String) - Static method in enum org.kohsuke.github.GHMyself.RepositoryListFilter
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHOrganization.Permission
+valueOf(String) - Static method in enum org.kohsuke.github.GHOrganization.Permission
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHOrganization.Role
+valueOf(String) - Static method in enum org.kohsuke.github.GHOrganization.Role
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHPermissionType
+valueOf(String) - Static method in enum org.kohsuke.github.GHPermissionType
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHProject.ProjectState
+valueOf(String) - Static method in enum org.kohsuke.github.GHProject.ProjectState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHProject.ProjectStateFilter
+valueOf(String) - Static method in enum org.kohsuke.github.GHProject.ProjectStateFilter
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequest.MergeMethod
+valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequest.MergeMethod
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestQueryBuilder.Sort
+valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestQueryBuilder.Sort
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestReviewEvent
+valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestReviewEvent
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestReviewState
+valueOf(String) - Static method in enum org.kohsuke.github.GHPullRequestReviewState
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHRepository.ForkSort
+valueOf(String) - Static method in enum org.kohsuke.github.GHRepository.ForkSort
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHRepositorySearchBuilder.Sort
+valueOf(String) - Static method in enum org.kohsuke.github.GHRepositorySearchBuilder.Sort
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHRepositorySelection
+valueOf(String) - Static method in enum org.kohsuke.github.GHRepositorySelection
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHTargetType
+valueOf(String) - Static method in enum org.kohsuke.github.GHTargetType
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHTeam.Role
+valueOf(String) - Static method in enum org.kohsuke.github.GHTeam.Role
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.GHUserSearchBuilder.Sort
+valueOf(String) - Static method in enum org.kohsuke.github.GHUserSearchBuilder.Sort
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.MarkdownMode
+valueOf(String) - Static method in enum org.kohsuke.github.MarkdownMode
Returns the enum constant of this type with the specified name.
-valueOf(String) - Static method in enum org.kohsuke.github.ReactionContent
+valueOf(String) - Static method in enum org.kohsuke.github.ReactionContent
Returns the enum constant of this type with the specified name.
-values() - Static method in enum org.kohsuke.github.EnforcementLevel
+values() - Static method in enum org.kohsuke.github.EnforcementLevel
-Deprecated.
+Deprecated.
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHCommentAuthorAssociation
+values() - Static method in enum org.kohsuke.github.GHCommentAuthorAssociation
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHCommitSearchBuilder.Sort
+values() - Static method in enum org.kohsuke.github.GHCommitSearchBuilder.Sort
-Deprecated.
+Deprecated.
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHCommitState
+values() - Static method in enum org.kohsuke.github.GHCommitState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHCompare.Status
+values() - Static method in enum org.kohsuke.github.GHCompare.Status
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHDeploymentState
+values() - Static method in enum org.kohsuke.github.GHDeploymentState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHDirection
+values() - Static method in enum org.kohsuke.github.GHDirection
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHEvent
+values() - Static method in enum org.kohsuke.github.GHEvent
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHIssueSearchBuilder.Sort
+values() - Static method in enum org.kohsuke.github.GHIssueSearchBuilder.Sort
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHIssueState
+values() - Static method in enum org.kohsuke.github.GHIssueState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHMembership.Role
+values() - Static method in enum org.kohsuke.github.GHMembership.Role
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHMembership.State
+values() - Static method in enum org.kohsuke.github.GHMembership.State
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHMilestoneState
+values() - Static method in enum org.kohsuke.github.GHMilestoneState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHMyself.RepositoryListFilter
+values() - Static method in enum org.kohsuke.github.GHMyself.RepositoryListFilter
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHOrganization.Permission
+values() - Static method in enum org.kohsuke.github.GHOrganization.Permission
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHOrganization.Role
+values() - Static method in enum org.kohsuke.github.GHOrganization.Role
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHPermissionType
+values() - Static method in enum org.kohsuke.github.GHPermissionType
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHProject.ProjectState
+values() - Static method in enum org.kohsuke.github.GHProject.ProjectState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHProject.ProjectStateFilter
+values() - Static method in enum org.kohsuke.github.GHProject.ProjectStateFilter
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHPullRequest.MergeMethod
+values() - Static method in enum org.kohsuke.github.GHPullRequest.MergeMethod
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHPullRequestQueryBuilder.Sort
+values() - Static method in enum org.kohsuke.github.GHPullRequestQueryBuilder.Sort
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHPullRequestReviewEvent
+values() - Static method in enum org.kohsuke.github.GHPullRequestReviewEvent
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHPullRequestReviewState
+values() - Static method in enum org.kohsuke.github.GHPullRequestReviewState
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHRepository.ForkSort
+values() - Static method in enum org.kohsuke.github.GHRepository.ForkSort
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHRepositorySearchBuilder.Sort
+values() - Static method in enum org.kohsuke.github.GHRepositorySearchBuilder.Sort
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHRepositorySelection
+values() - Static method in enum org.kohsuke.github.GHRepositorySelection
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHTargetType
+values() - Static method in enum org.kohsuke.github.GHTargetType
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHTeam.Role
+values() - Static method in enum org.kohsuke.github.GHTeam.Role
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.GHUserSearchBuilder.Sort
+values() - Static method in enum org.kohsuke.github.GHUserSearchBuilder.Sort
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.MarkdownMode
+values() - Static method in enum org.kohsuke.github.MarkdownMode
Returns an array containing the constants of this enum type, in
the order they are declared.
-values() - Static method in enum org.kohsuke.github.ReactionContent
+values() - Static method in enum org.kohsuke.github.ReactionContent
Returns an array containing the constants of this enum type, in
the order they are declared.
@@ -5746,7 +8094,7 @@ the order they are declared.
verified - Variable in class org.kohsuke.github.GHKey
-
+
W
@@ -5759,69 +8107,114 @@ the order they are declared.
Block until the API rate limit is reset.
- Week() - Constructor for class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
+
WATCH - org.kohsuke.github.GHEvent
-
wiki(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
+
Week() - Constructor for class org.kohsuke.github.GHRepositoryStatistics.ContributorStats.Week
+
+
wiki(boolean) - Method in class org.kohsuke.github.GHCreateRepositoryBuilder
Enables wiki
-
withAbuseLimitHandler(AbuseLimitHandler) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withAppInstallationToken(String) - Method in class org.kohsuke.github.GitHubBuilder
+
withAbuseLimitHandler(AbuseLimitHandler) - Method in class org.kohsuke.github.GitHubBuilder
+
+With abuse limit handler git hub builder.
+
+
withAppInstallationToken(String) - Method in class org.kohsuke.github.GitHubBuilder
Configures
GitHubBuilder with Installation Token generated by the GitHub Application
-
withConnector(HttpConnector) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withEndpoint(String) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withJwtToken(String) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withOAuthToken(String) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withOAuthToken(String, String) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withPageSize(int) - Method in class org.kohsuke.github.PagedIterable
+
withConnector(HttpConnector) - Method in class org.kohsuke.github.GitHubBuilder
+
+With connector git hub builder.
+
+
withEndpoint(String) - Method in class org.kohsuke.github.GitHubBuilder
+
+With endpoint git hub builder.
+
+
withJwtToken(String) - Method in class org.kohsuke.github.GitHubBuilder
+
+With jwt token git hub builder.
+
+
withOAuthToken(String) - Method in class org.kohsuke.github.GitHubBuilder
+
+With o auth token git hub builder.
+
+
withOAuthToken(String, String) - Method in class org.kohsuke.github.GitHubBuilder
+
+With o auth token git hub builder.
+
+
withPageSize(int) - Method in class org.kohsuke.github.PagedIterable
Sets the pagination size.
-
withPageSize(int) - Method in class org.kohsuke.github.PagedSearchIterable
+
withPageSize(int) - Method in class org.kohsuke.github.PagedSearchIterable
-
withPassword(String, String) - Method in class org.kohsuke.github.GitHubBuilder
-
-
withProxy(Proxy) - Method in class org.kohsuke.github.GitHubBuilder
+
withPassword(String, String) - Method in class org.kohsuke.github.GitHubBuilder
-Configures
connector
- that uses HTTP library in JRE but use a specific proxy, instead of
- the system default one.
+With password git hub builder.
-
withRateLimitHandler(RateLimitHandler) - Method in class org.kohsuke.github.GitHubBuilder
-
-
wrap(GHAsset[], GHRelease) - Static method in class org.kohsuke.github.GHAsset
-
-
wrap(GHRepository) - Method in class org.kohsuke.github.GHCompare
-
-
wrap(GHContent[], GHRepository) - Static method in class org.kohsuke.github.GHContent
-
-
wrap(GHRepository) - Method in class org.kohsuke.github.GHDeployKey
-
-
wrap(GHRepository) - Method in class org.kohsuke.github.GHDeploymentStatus
-
-
wrap(GHRepository) - Method in class org.kohsuke.github.GHMilestone
-
-
wrap(GHRepository) - Method in class org.kohsuke.github.GHProject
-
-
wrap(GitHub) - Method in class org.kohsuke.github.GHProject
-
-
wrap(GitHub) - Method in class org.kohsuke.github.GHProjectCard
-
-
wrap(GHProjectColumn) - Method in class org.kohsuke.github.GHProjectCard
-
-
wrap(GitHub) - Method in class org.kohsuke.github.GHProjectColumn
-
-
wrap(GHProject) - Method in class org.kohsuke.github.GHProjectColumn
-
-
wrapUp(T[]) - Method in class org.kohsuke.github.PagedIterator
+
withProxy(Proxy) - Method in class org.kohsuke.github.GitHubBuilder
+
+Configures
connector that uses HTTP library in JRE but use a specific
+ proxy, instead of the system default one.
+
+
withRateLimitHandler(RateLimitHandler) - Method in class org.kohsuke.github.GitHubBuilder
+
+With rate limit handler git hub builder.
+
+
wrap(GHAsset[], GHRelease) - Static method in class org.kohsuke.github.GHAsset
+
+Wrap gh asset [ ].
+
+
wrap(GHContent[], GHRepository) - Static method in class org.kohsuke.github.GHContent
+
+Wrap gh content [ ].
+
+
wrap(GHProject) - Method in class org.kohsuke.github.GHProjectColumn
+
+Wrap gh project column.
+
+
wrap(GHProjectColumn) - Method in class org.kohsuke.github.GHProjectCard
+
+Wrap gh project card.
+
+
wrap(GHRepository) - Method in class org.kohsuke.github.GHCompare
+
+Wrap gh compare.
+
+
wrap(GHRepository) - Method in class org.kohsuke.github.GHDeployKey
+
+Wrap gh deploy key.
+
+
wrap(GHRepository) - Method in class org.kohsuke.github.GHDeploymentStatus
+
+Wrap gh deployment status.
+
+
wrap(GHRepository) - Method in class org.kohsuke.github.GHMilestone
+
+Wrap gh milestone.
+
+
wrap(GHRepository) - Method in class org.kohsuke.github.GHProject
+
+Wrap gh project.
+
+
wrap(GitHub) - Method in class org.kohsuke.github.GHProject
+
+Wrap gh project.
+
+
wrap(GitHub) - Method in class org.kohsuke.github.GHProjectCard
+
+Wrap gh project card.
+
+
wrap(GitHub) - Method in class org.kohsuke.github.GHProjectColumn
+
+Wrap gh project column.
+
+
wrapUp(T[]) - Method in class org.kohsuke.github.PagedIterator
+
+Wrap up.
+
+
WRITE - org.kohsuke.github.GHPermissionType
WRITE_HOOK - Static variable in class org.kohsuke.github.GHAuthorization
@@ -5830,25 +8223,30 @@ the order they are declared.
WRITE_ORG - Static variable in class org.kohsuke.github.GHAuthorization
-
+
_
-_iterator(int) - Method in class org.kohsuke.github.PagedIterable
-
+_iterator(int) - Method in class org.kohsuke.github.PagedIterable
+
+Iterator paged iterator.
+
-
A B C D E F G H I K L M N O P Q R S T U V W _
+A B C D E F G H I J K L M N O P Q R S T U V W _ All Classes All Packages
+
+
diff --git a/apidocs/index.html b/apidocs/index.html
index 6c298ba09..acb5031c2 100644
--- a/apidocs/index.html
+++ b/apidocs/index.html
@@ -1,76 +1,175 @@
-
+
-
+
+Overview (GitHub API for Java 1.101-SNAPSHOT API)
-GitHub API for Java 1.100-SNAPSHOT API
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
JavaScript is disabled on your browser.
-Frame Alert
-This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to Non-frame version .
-
-
+
+
+
+
+
+
+
+
+
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apidocs/jquery/external/jquery/jquery.js b/apidocs/jquery/external/jquery/jquery.js
new file mode 100644
index 000000000..5b16efa11
--- /dev/null
+++ b/apidocs/jquery/external/jquery/jquery.js
@@ -0,0 +1,10598 @@
+/*!
+ * jQuery JavaScript Library v3.4.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2019-05-01T21:04Z
+ */
+( function( global, factory ) {
+
+ "use strict";
+
+ if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+ // For CommonJS and CommonJS-like environments where a proper `window`
+ // is present, execute the factory and get jQuery.
+ // For environments that do not have a `window` with a `document`
+ // (such as Node.js), expose a factory as module.exports.
+ // This accentuates the need for the creation of a real `window`.
+ // e.g. var jQuery = require("jquery")(window);
+ // See ticket #14549 for more info.
+ module.exports = global.document ?
+ factory( global, true ) :
+ function( w ) {
+ if ( !w.document ) {
+ throw new Error( "jQuery requires a window with a document" );
+ }
+ return factory( w );
+ };
+ } else {
+ factory( global );
+ }
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+ // Support: Chrome <=57, Firefox <=52
+ // In some browsers, typeof returns "function" for HTML elements
+ // (i.e., `typeof document.createElement( "object" ) === "function"`).
+ // We don't want to classify *any* DOM node as a function.
+ return typeof obj === "function" && typeof obj.nodeType !== "number";
+ };
+
+
+var isWindow = function isWindow( obj ) {
+ return obj != null && obj === obj.window;
+ };
+
+
+
+
+ var preservedScriptAttributes = {
+ type: true,
+ src: true,
+ nonce: true,
+ noModule: true
+ };
+
+ function DOMEval( code, node, doc ) {
+ doc = doc || document;
+
+ var i, val,
+ script = doc.createElement( "script" );
+
+ script.text = code;
+ if ( node ) {
+ for ( i in preservedScriptAttributes ) {
+
+ // Support: Firefox 64+, Edge 18+
+ // Some browsers don't support the "nonce" property on scripts.
+ // On the other hand, just using `getAttribute` is not enough as
+ // the `nonce` attribute is reset to an empty string whenever it
+ // becomes browsing-context connected.
+ // See https://github.com/whatwg/html/issues/2369
+ // See https://html.spec.whatwg.org/#nonce-attributes
+ // The `node.getAttribute` check was added for the sake of
+ // `jQuery.globalEval` so that it can fake a nonce-containing node
+ // via an object.
+ val = node[ i ] || node.getAttribute && node.getAttribute( i );
+ if ( val ) {
+ script.setAttribute( i, val );
+ }
+ }
+ }
+ doc.head.appendChild( script ).parentNode.removeChild( script );
+ }
+
+
+function toType( obj ) {
+ if ( obj == null ) {
+ return obj + "";
+ }
+
+ // Support: Android <=2.3 only (functionish RegExp)
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[ toString.call( obj ) ] || "object" :
+ typeof obj;
+}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+ version = "3.4.1",
+
+ // Define a local copy of jQuery
+ jQuery = function( selector, context ) {
+
+ // The jQuery object is actually just the init constructor 'enhanced'
+ // Need init if jQuery is called (just allow error to be thrown if not included)
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Support: Android <=4.0 only
+ // Make sure we trim BOM and NBSP
+ rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+
+jQuery.fn = jQuery.prototype = {
+
+ // The current version of jQuery being used
+ jquery: version,
+
+ constructor: jQuery,
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ toArray: function() {
+ return slice.call( this );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+
+ // Return all the elements in a clean array
+ if ( num == null ) {
+ return slice.call( this );
+ }
+
+ // Return just the one element from the set
+ return num < 0 ? this[ num + this.length ] : this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems ) {
+
+ // Build a new jQuery matched element set
+ var ret = jQuery.merge( this.constructor(), elems );
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ each: function( callback ) {
+ return jQuery.each( this, callback );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map( this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ } ) );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ) );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ eq: function( i ) {
+ var len = this.length,
+ j = +i + ( i < 0 ? len : 0 );
+ return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+ },
+
+ end: function() {
+ return this.prevObject || this.constructor();
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: arr.sort,
+ splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[ 0 ] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+
+ // Skip the boolean and the target
+ target = arguments[ i ] || {};
+ i++;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !isFunction( target ) ) {
+ target = {};
+ }
+
+ // Extend jQuery itself if only one argument is passed
+ if ( i === length ) {
+ target = this;
+ i--;
+ }
+
+ for ( ; i < length; i++ ) {
+
+ // Only deal with non-null/undefined values
+ if ( ( options = arguments[ i ] ) != null ) {
+
+ // Extend the base object
+ for ( name in options ) {
+ copy = options[ name ];
+
+ // Prevent Object.prototype pollution
+ // Prevent never-ending loop
+ if ( name === "__proto__" || target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+ ( copyIsArray = Array.isArray( copy ) ) ) ) {
+ src = target[ name ];
+
+ // Ensure proper type for the source value
+ if ( copyIsArray && !Array.isArray( src ) ) {
+ clone = [];
+ } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
+ clone = {};
+ } else {
+ clone = src;
+ }
+ copyIsArray = false;
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend( {
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+ // Assume jQuery is ready without the ready module
+ isReady: true,
+
+ error: function( msg ) {
+ throw new Error( msg );
+ },
+
+ noop: function() {},
+
+ isPlainObject: function( obj ) {
+ var proto, Ctor;
+
+ // Detect obvious negatives
+ // Use toString instead of jQuery.type to catch host objects
+ if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+ return false;
+ }
+
+ proto = getProto( obj );
+
+ // Objects with no prototype (e.g., `Object.create( null )`) are plain
+ if ( !proto ) {
+ return true;
+ }
+
+ // Objects with prototype are plain iff they were constructed by a global Object function
+ Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+ return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+ },
+
+ isEmptyObject: function( obj ) {
+ var name;
+
+ for ( name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ // Evaluates a script in a global context
+ globalEval: function( code, options ) {
+ DOMEval( code, { nonce: options && options.nonce } );
+ },
+
+ each: function( obj, callback ) {
+ var length, i = 0;
+
+ if ( isArrayLike( obj ) ) {
+ length = obj.length;
+ for ( ; i < length; i++ ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( i in obj ) {
+ if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+ break;
+ }
+ }
+ }
+
+ return obj;
+ },
+
+ // Support: Android <=4.0 only
+ trim: function( text ) {
+ return text == null ?
+ "" :
+ ( text + "" ).replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( arr, results ) {
+ var ret = results || [];
+
+ if ( arr != null ) {
+ if ( isArrayLike( Object( arr ) ) ) {
+ jQuery.merge( ret,
+ typeof arr === "string" ?
+ [ arr ] : arr
+ );
+ } else {
+ push.call( ret, arr );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, arr, i ) {
+ return arr == null ? -1 : indexOf.call( arr, elem, i );
+ },
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ merge: function( first, second ) {
+ var len = +second.length,
+ j = 0,
+ i = first.length;
+
+ for ( ; j < len; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, invert ) {
+ var callbackInverse,
+ matches = [],
+ i = 0,
+ length = elems.length,
+ callbackExpect = !invert;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( ; i < length; i++ ) {
+ callbackInverse = !callback( elems[ i ], i );
+ if ( callbackInverse !== callbackExpect ) {
+ matches.push( elems[ i ] );
+ }
+ }
+
+ return matches;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var length, value,
+ i = 0,
+ ret = [];
+
+ // Go through the array, translating each of the items to their new values
+ if ( isArrayLike( elems ) ) {
+ length = elems.length;
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( i in elems ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret.push( value );
+ }
+ }
+ }
+
+ // Flatten any nested arrays
+ return concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ // jQuery.support is not used in Core but other projects attach their
+ // properties to it so it needs to exist.
+ support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+ jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+ // Support: real iOS 8.2 only (not reproducible in simulator)
+ // `in` check used to prevent JIT error (gh-2145)
+ // hasOwn isn't used here due to false negatives
+ // regarding Nodelist length in IE
+ var length = !!obj && "length" in obj && obj.length,
+ type = toType( obj );
+
+ if ( isFunction( obj ) || isWindow( obj ) ) {
+ return false;
+ }
+
+ return type === "array" || length === 0 ||
+ typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.4
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://js.foundation/
+ *
+ * Date: 2019-04-08
+ */
+(function( window ) {
+
+var i,
+ support,
+ Expr,
+ getText,
+ isXML,
+ tokenize,
+ compile,
+ select,
+ outermostContext,
+ sortInput,
+ hasDuplicate,
+
+ // Local document vars
+ setDocument,
+ document,
+ docElem,
+ documentIsHTML,
+ rbuggyQSA,
+ rbuggyMatches,
+ matches,
+ contains,
+
+ // Instance-specific data
+ expando = "sizzle" + 1 * new Date(),
+ preferredDoc = window.document,
+ dirruns = 0,
+ done = 0,
+ classCache = createCache(),
+ tokenCache = createCache(),
+ compilerCache = createCache(),
+ nonnativeSelectorCache = createCache(),
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ }
+ return 0;
+ },
+
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
+ arr = [],
+ pop = arr.pop,
+ push_native = arr.push,
+ push = arr.push,
+ slice = arr.slice,
+ // Use a stripped-down indexOf as it's faster than native
+ // https://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
+ var i = 0,
+ len = list.length;
+ for ( ; i < len; i++ ) {
+ if ( list[i] === elem ) {
+ return i;
+ }
+ }
+ return -1;
+ },
+
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+ // Regular expressions
+
+ // http://www.w3.org/TR/css3-selectors/#whitespace
+ whitespace = "[\\x20\\t\\r\\n\\f]",
+
+ // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+ identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+ // Operator (capture 2)
+ "*([*^$|!~]?=)" + whitespace +
+ // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+ "*\\]",
+
+ pseudos = ":(" + identifier + ")(?:\\((" +
+ // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+ // 1. quoted (capture 3; capture 4 or capture 5)
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+ // 2. simple (capture 6)
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+ // 3. anything else (capture 2)
+ ".*" +
+ ")\\)|)",
+
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
+ rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+ rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+ rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+ rdescend = new RegExp( whitespace + "|>" ),
+
+ rpseudo = new RegExp( pseudos ),
+ ridentifier = new RegExp( "^" + identifier + "$" ),
+
+ matchExpr = {
+ "ID": new RegExp( "^#(" + identifier + ")" ),
+ "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+ "TAG": new RegExp( "^(" + identifier + "|[*])" ),
+ "ATTR": new RegExp( "^" + attributes ),
+ "PSEUDO": new RegExp( "^" + pseudos ),
+ "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+ "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+ "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ // For use in libraries implementing .is()
+ // We use this for POS matching in `select`
+ "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+ whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+ },
+
+ rhtml = /HTML$/i,
+ rinputs = /^(?:input|select|textarea|button)$/i,
+ rheader = /^h\d$/i,
+
+ rnative = /^[^{]+\{\s*\[native \w/,
+
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+ rsibling = /[+~]/,
+
+ // CSS escapes
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
+ var high = "0x" + escaped - 0x10000;
+ // NaN means non-codepoint
+ // Support: Firefox<24
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
+ escaped :
+ high < 0 ?
+ // BMP codepoint
+ String.fromCharCode( high + 0x10000 ) :
+ // Supplemental Plane codepoint (surrogate pair)
+ String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // CSS string/identifier serialization
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+ fcssescape = function( ch, asCodePoint ) {
+ if ( asCodePoint ) {
+
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+ if ( ch === "\0" ) {
+ return "\uFFFD";
+ }
+
+ // Control characters and (dependent upon position) numbers get escaped as code points
+ return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+ }
+
+ // Other potentially-special ASCII characters get backslash-escaped
+ return "\\" + ch;
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
+ },
+
+ inDisabledFieldset = addCombinator(
+ function( elem ) {
+ return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
+ },
+ { dir: "parentNode", next: "legend" }
+ );
+
+// Optimize for push.apply( _, NodeList )
+try {
+ push.apply(
+ (arr = slice.call( preferredDoc.childNodes )),
+ preferredDoc.childNodes
+ );
+ // Support: Android<4.0
+ // Detect silently failing push.apply
+ arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+ push = { apply: arr.length ?
+
+ // Leverage slice if possible
+ function( target, els ) {
+ push_native.apply( target, slice.call(els) );
+ } :
+
+ // Support: IE<9
+ // Otherwise append directly
+ function( target, els ) {
+ var j = target.length,
+ i = 0;
+ // Can't trust NodeList.length
+ while ( (target[j++] = els[i++]) ) {}
+ target.length = j - 1;
+ }
+ };
+}
+
+function Sizzle( selector, context, results, seed ) {
+ var m, i, elem, nid, match, groups, newSelector,
+ newContext = context && context.ownerDocument,
+
+ // nodeType defaults to 9, since context defaults to document
+ nodeType = context ? context.nodeType : 9;
+
+ results = results || [];
+
+ // Return early from calls with invalid selector or context
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+ return results;
+ }
+
+ // Try to shortcut find operations (as opposed to filters) in HTML documents
+ if ( !seed ) {
+
+ if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+ setDocument( context );
+ }
+ context = context || document;
+
+ if ( documentIsHTML ) {
+
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
+ // (excepting DocumentFragment context, where the methods don't exist)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+ // ID selector
+ if ( (m = match[1]) ) {
+
+ // Document context
+ if ( nodeType === 9 ) {
+ if ( (elem = context.getElementById( m )) ) {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( elem.id === m ) {
+ results.push( elem );
+ return results;
+ }
+ } else {
+ return results;
+ }
+
+ // Element context
+ } else {
+
+ // Support: IE, Opera, Webkit
+ // TODO: identify versions
+ // getElementById can match elements by name instead of ID
+ if ( newContext && (elem = newContext.getElementById( m )) &&
+ contains( context, elem ) &&
+ elem.id === m ) {
+
+ results.push( elem );
+ return results;
+ }
+ }
+
+ // Type selector
+ } else if ( match[2] ) {
+ push.apply( results, context.getElementsByTagName( selector ) );
+ return results;
+
+ // Class selector
+ } else if ( (m = match[3]) && support.getElementsByClassName &&
+ context.getElementsByClassName ) {
+
+ push.apply( results, context.getElementsByClassName( m ) );
+ return results;
+ }
+ }
+
+ // Take advantage of querySelectorAll
+ if ( support.qsa &&
+ !nonnativeSelectorCache[ selector + " " ] &&
+ (!rbuggyQSA || !rbuggyQSA.test( selector )) &&
+
+ // Support: IE 8 only
+ // Exclude object elements
+ (nodeType !== 1 || context.nodeName.toLowerCase() !== "object") ) {
+
+ newSelector = selector;
+ newContext = context;
+
+ // qSA considers elements outside a scoping root when evaluating child or
+ // descendant combinators, which is not what we want.
+ // In such cases, we work around the behavior by prefixing every selector in the
+ // list with an ID selector referencing the scope context.
+ // Thanks to Andrew Dupont for this technique.
+ if ( nodeType === 1 && rdescend.test( selector ) ) {
+
+ // Capture the context ID, setting it first if necessary
+ if ( (nid = context.getAttribute( "id" )) ) {
+ nid = nid.replace( rcssescape, fcssescape );
+ } else {
+ context.setAttribute( "id", (nid = expando) );
+ }
+
+ // Prefix every selector in the list
+ groups = tokenize( selector );
+ i = groups.length;
+ while ( i-- ) {
+ groups[i] = "#" + nid + " " + toSelector( groups[i] );
+ }
+ newSelector = groups.join( "," );
+
+ // Expand context for sibling selectors
+ newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+ context;
+ }
+
+ try {
+ push.apply( results,
+ newContext.querySelectorAll( newSelector )
+ );
+ return results;
+ } catch ( qsaError ) {
+ nonnativeSelectorCache( selector, true );
+ } finally {
+ if ( nid === expando ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+ }
+
+ // All others
+ return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key + " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key + " " ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+ var el = document.createElement("fieldset");
+
+ try {
+ return !!fn( el );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( el.parentNode ) {
+ el.parentNode.removeChild( el );
+ }
+ // release memory in IE
+ el = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+ var arr = attrs.split("|"),
+ i = arr.length;
+
+ while ( i-- ) {
+ Expr.attrHandle[ arr[i] ] = handler;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ a.sourceIndex - b.sourceIndex;
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+ return function( elem ) {
+
+ // Only certain elements can match :enabled or :disabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+ if ( "form" in elem ) {
+
+ // Check for inherited disabledness on relevant non-disabled elements:
+ // * listed form-associated elements in a disabled fieldset
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+ // * option elements in a disabled optgroup
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+ // All such elements have a "form" property.
+ if ( elem.parentNode && elem.disabled === false ) {
+
+ // Option elements defer to a parent optgroup if present
+ if ( "label" in elem ) {
+ if ( "label" in elem.parentNode ) {
+ return elem.parentNode.disabled === disabled;
+ } else {
+ return elem.disabled === disabled;
+ }
+ }
+
+ // Support: IE 6 - 11
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
+ return elem.isDisabled === disabled ||
+
+ // Where there is no isDisabled, check manually
+ /* jshint -W018 */
+ elem.isDisabled !== !disabled &&
+ inDisabledFieldset( elem ) === disabled;
+ }
+
+ return elem.disabled === disabled;
+
+ // Try to winnow out elements that can't be disabled before trusting the disabled property.
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+ // even exist on them, let alone have a boolean value.
+ } else if ( "label" in elem ) {
+ return elem.disabled === disabled;
+ }
+
+ // Remaining elements are neither :enabled nor :disabled
+ return false;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+ var namespace = elem.namespaceURI,
+ docElem = (elem.ownerDocument || elem).documentElement;
+
+ // Support: IE <=8
+ // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
+ // https://bugs.jquery.com/ticket/4833
+ return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+ var hasCompare, subWindow,
+ doc = node ? node.ownerDocument || node : preferredDoc;
+
+ // Return early if doc is invalid or already selected
+ if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+ return document;
+ }
+
+ // Update global variables
+ document = doc;
+ docElem = document.documentElement;
+ documentIsHTML = !isXML( document );
+
+ // Support: IE 9-11, Edge
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+ if ( preferredDoc !== document &&
+ (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+ // Support: IE 11, Edge
+ if ( subWindow.addEventListener ) {
+ subWindow.addEventListener( "unload", unloadHandler, false );
+
+ // Support: IE 9 - 10 only
+ } else if ( subWindow.attachEvent ) {
+ subWindow.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
+
+ // Support: IE<8
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
+ support.attributes = assert(function( el ) {
+ el.className = "i";
+ return !el.getAttribute("className");
+ });
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( el ) {
+ el.appendChild( document.createComment("") );
+ return !el.getElementsByTagName("*").length;
+ });
+
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+ // Support: IE<10
+ // Check if getElementById returns elements by name
+ // The broken getElementById methods don't pick up programmatically-set names,
+ // so use a roundabout getElementsByName test
+ support.getById = assert(function( el ) {
+ docElem.appendChild( el ).id = expando;
+ return !document.getElementsByName || !document.getElementsByName( expando ).length;
+ });
+
+ // ID filter and find
+ if ( support.getById ) {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ return elem.getAttribute("id") === attrId;
+ };
+ };
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var elem = context.getElementById( id );
+ return elem ? [ elem ] : [];
+ }
+ };
+ } else {
+ Expr.filter["ID"] = function( id ) {
+ var attrId = id.replace( runescape, funescape );
+ return function( elem ) {
+ var node = typeof elem.getAttributeNode !== "undefined" &&
+ elem.getAttributeNode("id");
+ return node && node.value === attrId;
+ };
+ };
+
+ // Support: IE 6 - 7 only
+ // getElementById is not reliable as a find shortcut
+ Expr.find["ID"] = function( id, context ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+ var node, i, elems,
+ elem = context.getElementById( id );
+
+ if ( elem ) {
+
+ // Verify the id attribute
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+
+ // Fall back on getElementsByName
+ elems = context.getElementsByName( id );
+ i = 0;
+ while ( (elem = elems[i++]) ) {
+ node = elem.getAttributeNode("id");
+ if ( node && node.value === id ) {
+ return [ elem ];
+ }
+ }
+ }
+
+ return [];
+ }
+ };
+ }
+
+ // Tag
+ Expr.find["TAG"] = support.getElementsByTagName ?
+ function( tag, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
+ }
+ } :
+
+ function( tag, context ) {
+ var elem,
+ tmp = [],
+ i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+ results = context.getElementsByTagName( tag );
+
+ // Filter out possible comments
+ if ( tag === "*" ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem.nodeType === 1 ) {
+ tmp.push( elem );
+ }
+ }
+
+ return tmp;
+ }
+ return results;
+ };
+
+ // Class
+ Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+ return context.getElementsByClassName( className );
+ }
+ };
+
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
+ // QSA and matchesSelector support
+
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+ rbuggyMatches = [];
+
+ // qSa(:focus) reports false when true (Chrome 21)
+ // We allow this because of a bug in IE8/9 that throws an error
+ // whenever `document.activeElement` is accessed on an iframe
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
+ // See https://bugs.jquery.com/ticket/13378
+ rbuggyQSA = [];
+
+ if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+ // Build QSA regex
+ // Regex strategy adopted from Diego Perini
+ assert(function( el ) {
+ // Select is set to empty string on purpose
+ // This is to test IE's treatment of not explicitly
+ // setting a boolean content attribute,
+ // since its presence should be enough
+ // https://bugs.jquery.com/ticket/12359
+ docElem.appendChild( el ).innerHTML = " " +
+ "" +
+ " ";
+
+ // Support: IE8, Opera 11-12.16
+ // Nothing should be selected when empty strings follow ^= or $= or *=
+ // The test attribute must be unknown in Opera but "safe" for WinRT
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+ if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+ rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+ }
+
+ // Support: IE8
+ // Boolean attributes and "value" are not treated correctly
+ if ( !el.querySelectorAll("[selected]").length ) {
+ rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+ }
+
+ // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
+ // Webkit/Opera - :checked should return selected option elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ // IE8 throws error here and will not see later tests
+ if ( !el.querySelectorAll(":checked").length ) {
+ rbuggyQSA.push(":checked");
+ }
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibling-combinator selector` fails
+ if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
+ });
+
+ assert(function( el ) {
+ el.innerHTML = " " +
+ " ";
+
+ // Support: Windows 8 Native Apps
+ // The type and name attributes are restricted during .innerHTML assignment
+ var input = document.createElement("input");
+ input.setAttribute( "type", "hidden" );
+ el.appendChild( input ).setAttribute( "name", "D" );
+
+ // Support: IE8
+ // Enforce case-sensitivity of name attribute
+ if ( el.querySelectorAll("[name=d]").length ) {
+ rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+ }
+
+ // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+ // IE8 throws error here and will not see later tests
+ if ( el.querySelectorAll(":enabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Support: IE9-11+
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
+ docElem.appendChild( el ).disabled = true;
+ if ( el.querySelectorAll(":disabled").length !== 2 ) {
+ rbuggyQSA.push( ":enabled", ":disabled" );
+ }
+
+ // Opera 10-11 does not throw on post-comma invalid pseudos
+ el.querySelectorAll("*,:x");
+ rbuggyQSA.push(",.*:");
+ });
+ }
+
+ if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+ docElem.webkitMatchesSelector ||
+ docElem.mozMatchesSelector ||
+ docElem.oMatchesSelector ||
+ docElem.msMatchesSelector) )) ) {
+
+ assert(function( el ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9)
+ support.disconnectedMatch = matches.call( el, "*" );
+
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( el, "[s!='']:x" );
+ rbuggyMatches.push( "!=", pseudos );
+ });
+ }
+
+ rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+ rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+ /* Contains
+ ---------------------------------------------------------------------- */
+ hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+ // Element contains another
+ // Purposefully self-exclusive
+ // As in, an element does not contain itself
+ contains = hasCompare || rnative.test( docElem.contains ) ?
+ function( a, b ) {
+ var adown = a.nodeType === 9 ? a.documentElement : a,
+ bup = b && b.parentNode;
+ return a === bup || !!( bup && bup.nodeType === 1 && (
+ adown.contains ?
+ adown.contains( bup ) :
+ a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+ ));
+ } :
+ function( a, b ) {
+ if ( b ) {
+ while ( (b = b.parentNode) ) {
+ if ( b === a ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Document order sorting
+ sortOrder = hasCompare ?
+ function( a, b ) {
+
+ // Flag for duplicate removal
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ // Sort on method existence if only one input has compareDocumentPosition
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+ if ( compare ) {
+ return compare;
+ }
+
+ // Calculate position if both inputs belong to the same document
+ compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+ a.compareDocumentPosition( b ) :
+
+ // Otherwise we know they are disconnected
+ 1;
+
+ // Disconnected nodes
+ if ( compare & 1 ||
+ (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+ // Choose the first element that is related to our preferred document
+ if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+ return -1;
+ }
+ if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+ return 1;
+ }
+
+ // Maintain original order
+ return sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+ }
+
+ return compare & 4 ? -1 : 1;
+ } :
+ function( a, b ) {
+ // Exit early if the nodes are identical
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ var cur,
+ i = 0,
+ aup = a.parentNode,
+ bup = b.parentNode,
+ ap = [ a ],
+ bp = [ b ];
+
+ // Parentless nodes are either documents or disconnected
+ if ( !aup || !bup ) {
+ return a === document ? -1 :
+ b === document ? 1 :
+ aup ? -1 :
+ bup ? 1 :
+ sortInput ?
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+ 0;
+
+ // If the nodes are siblings, we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+ }
+
+ // Otherwise we need full lists of their ancestors for comparison
+ cur = a;
+ while ( (cur = cur.parentNode) ) {
+ ap.unshift( cur );
+ }
+ cur = b;
+ while ( (cur = cur.parentNode) ) {
+ bp.unshift( cur );
+ }
+
+ // Walk down the tree looking for a discrepancy
+ while ( ap[i] === bp[i] ) {
+ i++;
+ }
+
+ return i ?
+ // Do a sibling check if the nodes have a common ancestor
+ siblingCheck( ap[i], bp[i] ) :
+
+ // Otherwise nodes in our document sort first
+ ap[i] === preferredDoc ? -1 :
+ bp[i] === preferredDoc ? 1 :
+ 0;
+ };
+
+ return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+ return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ if ( support.matchesSelector && documentIsHTML &&
+ !nonnativeSelectorCache[ expr + " " ] &&
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
+
+ try {
+ var ret = matches.call( elem, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || support.disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9
+ elem.document && elem.document.nodeType !== 11 ) {
+ return ret;
+ }
+ } catch (e) {
+ nonnativeSelectorCache( expr, true );
+ }
+ }
+
+ return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+ // Set document vars if needed
+ if ( ( context.ownerDocument || context ) !== document ) {
+ setDocument( context );
+ }
+ return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+ // Set document vars if needed
+ if ( ( elem.ownerDocument || elem ) !== document ) {
+ setDocument( elem );
+ }
+
+ var fn = Expr.attrHandle[ name.toLowerCase() ],
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined;
+
+ return val !== undefined ?
+ val :
+ support.attributes || !documentIsHTML ?
+ elem.getAttribute( name ) :
+ (val = elem.getAttributeNode(name)) && val.specified ?
+ val.value :
+ null;
+};
+
+Sizzle.escape = function( sel ) {
+ return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+ throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+ var elem,
+ duplicates = [],
+ j = 0,
+ i = 0;
+
+ // Unless we *know* we can detect duplicates, assume their presence
+ hasDuplicate = !support.detectDuplicates;
+ sortInput = !support.sortStable && results.slice( 0 );
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ while ( (elem = results[i++]) ) {
+ if ( elem === results[ i ] ) {
+ j = duplicates.push( i );
+ }
+ }
+ while ( j-- ) {
+ results.splice( duplicates[ j ], 1 );
+ }
+ }
+
+ // Clear input after sorting to release objects
+ // See https://github.com/jquery/sizzle/pull/225
+ sortInput = null;
+
+ return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+ var node,
+ ret = "",
+ i = 0,
+ nodeType = elem.nodeType;
+
+ if ( !nodeType ) {
+ // If no nodeType, this is expected to be an array
+ while ( (node = elem[i++]) ) {
+ // Do not traverse comment nodes
+ ret += getText( node );
+ }
+ } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+ // Use textContent for elements
+ // innerText usage removed for consistency of new lines (jQuery #11153)
+ if ( typeof elem.textContent === "string" ) {
+ return elem.textContent;
+ } else {
+ // Traverse its children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ ret += getText( elem );
+ }
+ }
+ } else if ( nodeType === 3 || nodeType === 4 ) {
+ return elem.nodeValue;
+ }
+ // Do not include comment or processing instruction nodes
+
+ return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+ // Can be adjusted by the user
+ cacheLength: 50,
+
+ createPseudo: markFunction,
+
+ match: matchExpr,
+
+ attrHandle: {},
+
+ find: {},
+
+ relative: {
+ ">": { dir: "parentNode", first: true },
+ " ": { dir: "parentNode" },
+ "+": { dir: "previousSibling", first: true },
+ "~": { dir: "previousSibling" }
+ },
+
+ preFilter: {
+ "ATTR": function( match ) {
+ match[1] = match[1].replace( runescape, funescape );
+
+ // Move the given value to match[3] whether quoted or unquoted
+ match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+ if ( match[2] === "~=" ) {
+ match[3] = " " + match[3] + " ";
+ }
+
+ return match.slice( 0, 4 );
+ },
+
+ "CHILD": function( match ) {
+ /* matches from matchExpr["CHILD"]
+ 1 type (only|nth|...)
+ 2 what (child|of-type)
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
+ 5 sign of xn-component
+ 6 x of xn-component
+ 7 sign of y-component
+ 8 y of y-component
+ */
+ match[1] = match[1].toLowerCase();
+
+ if ( match[1].slice( 0, 3 ) === "nth" ) {
+ // nth-* requires argument
+ if ( !match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ // numeric x and y parameters for Expr.filter.CHILD
+ // remember that false/true cast respectively to 0/1
+ match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+ match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+ // other types prohibit arguments
+ } else if ( match[3] ) {
+ Sizzle.error( match[0] );
+ }
+
+ return match;
+ },
+
+ "PSEUDO": function( match ) {
+ var excess,
+ unquoted = !match[6] && match[2];
+
+ if ( matchExpr["CHILD"].test( match[0] ) ) {
+ return null;
+ }
+
+ // Accept quoted arguments as-is
+ if ( match[3] ) {
+ match[2] = match[4] || match[5] || "";
+
+ // Strip excess characters from unquoted arguments
+ } else if ( unquoted && rpseudo.test( unquoted ) &&
+ // Get excess from tokenize (recursively)
+ (excess = tokenize( unquoted, true )) &&
+ // advance to the next closing parenthesis
+ (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+ // excess is a negative index
+ match[0] = match[0].slice( 0, excess );
+ match[2] = unquoted.slice( 0, excess );
+ }
+
+ // Return only captures needed by the pseudo filter method (type and argument)
+ return match.slice( 0, 3 );
+ }
+ },
+
+ filter: {
+
+ "TAG": function( nodeNameSelector ) {
+ var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+ return nodeNameSelector === "*" ?
+ function() { return true; } :
+ function( elem ) {
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+ };
+ },
+
+ "CLASS": function( className ) {
+ var pattern = classCache[ className + " " ];
+
+ return pattern ||
+ (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+ classCache( className, function( elem ) {
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+ });
+ },
+
+ "ATTR": function( name, operator, check ) {
+ return function( elem ) {
+ var result = Sizzle.attr( elem, name );
+
+ if ( result == null ) {
+ return operator === "!=";
+ }
+ if ( !operator ) {
+ return true;
+ }
+
+ result += "";
+
+ return operator === "=" ? result === check :
+ operator === "!=" ? result !== check :
+ operator === "^=" ? check && result.indexOf( check ) === 0 :
+ operator === "*=" ? check && result.indexOf( check ) > -1 :
+ operator === "$=" ? check && result.slice( -check.length ) === check :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+ operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+ false;
+ };
+ },
+
+ "CHILD": function( type, what, argument, first, last ) {
+ var simple = type.slice( 0, 3 ) !== "nth",
+ forward = type.slice( -4 ) !== "last",
+ ofType = what === "of-type";
+
+ return first === 1 && last === 0 ?
+
+ // Shortcut for :nth-*(n)
+ function( elem ) {
+ return !!elem.parentNode;
+ } :
+
+ function( elem, context, xml ) {
+ var cache, uniqueCache, outerCache, node, nodeIndex, start,
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
+ parent = elem.parentNode,
+ name = ofType && elem.nodeName.toLowerCase(),
+ useCache = !xml && !ofType,
+ diff = false;
+
+ if ( parent ) {
+
+ // :(first|last|only)-(child|of-type)
+ if ( simple ) {
+ while ( dir ) {
+ node = elem;
+ while ( (node = node[ dir ]) ) {
+ if ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) {
+
+ return false;
+ }
+ }
+ // Reverse direction for :only-* (if we haven't yet done so)
+ start = dir = type === "only" && !start && "nextSibling";
+ }
+ return true;
+ }
+
+ start = [ forward ? parent.firstChild : parent.lastChild ];
+
+ // non-xml :nth-child(...) stores cache data on `parent`
+ if ( forward && useCache ) {
+
+ // Seek `elem` from a previously-cached index
+
+ // ...in a gzip-friendly way
+ node = parent;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex && cache[ 2 ];
+ node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+ // Fallback to seeking `elem` from the start
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ // When found, cache indexes on `parent` and break
+ if ( node.nodeType === 1 && ++diff && node === elem ) {
+ uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+ break;
+ }
+ }
+
+ } else {
+ // Use previously-cached element index if available
+ if ( useCache ) {
+ // ...in a gzip-friendly way
+ node = elem;
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ cache = uniqueCache[ type ] || [];
+ nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+ diff = nodeIndex;
+ }
+
+ // xml :nth-child(...)
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
+ if ( diff === false ) {
+ // Use the same loop as above to seek `elem` from the start
+ while ( (node = ++nodeIndex && node && node[ dir ] ||
+ (diff = nodeIndex = 0) || start.pop()) ) {
+
+ if ( ( ofType ?
+ node.nodeName.toLowerCase() === name :
+ node.nodeType === 1 ) &&
+ ++diff ) {
+
+ // Cache the index of each encountered element
+ if ( useCache ) {
+ outerCache = node[ expando ] || (node[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ node.uniqueID ] ||
+ (outerCache[ node.uniqueID ] = {});
+
+ uniqueCache[ type ] = [ dirruns, diff ];
+ }
+
+ if ( node === elem ) {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // Incorporate the offset, then check against cycle size
+ diff -= last;
+ return diff === first || ( diff % first === 0 && diff / first >= 0 );
+ }
+ };
+ },
+
+ "PSEUDO": function( pseudo, argument ) {
+ // pseudo-class names are case-insensitive
+ // http://www.w3.org/TR/selectors/#pseudo-classes
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+ // Remember that setFilters inherits from pseudos
+ var args,
+ fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+ Sizzle.error( "unsupported pseudo: " + pseudo );
+
+ // The user may use createPseudo to indicate that
+ // arguments are needed to create the filter function
+ // just as Sizzle does
+ if ( fn[ expando ] ) {
+ return fn( argument );
+ }
+
+ // But maintain support for old signatures
+ if ( fn.length > 1 ) {
+ args = [ pseudo, pseudo, "", argument ];
+ return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+ markFunction(function( seed, matches ) {
+ var idx,
+ matched = fn( seed, argument ),
+ i = matched.length;
+ while ( i-- ) {
+ idx = indexOf( seed, matched[i] );
+ seed[ idx ] = !( matches[ idx ] = matched[i] );
+ }
+ }) :
+ function( elem ) {
+ return fn( elem, 0, args );
+ };
+ }
+
+ return fn;
+ }
+ },
+
+ pseudos: {
+ // Potentially complex pseudos
+ "not": markFunction(function( selector ) {
+ // Trim the selector passed to compile
+ // to avoid treating leading and trailing
+ // spaces as combinators
+ var input = [],
+ results = [],
+ matcher = compile( selector.replace( rtrim, "$1" ) );
+
+ return matcher[ expando ] ?
+ markFunction(function( seed, matches, context, xml ) {
+ var elem,
+ unmatched = matcher( seed, null, xml, [] ),
+ i = seed.length;
+
+ // Match elements unmatched by `matcher`
+ while ( i-- ) {
+ if ( (elem = unmatched[i]) ) {
+ seed[i] = !(matches[i] = elem);
+ }
+ }
+ }) :
+ function( elem, context, xml ) {
+ input[0] = elem;
+ matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
+ return !results.pop();
+ };
+ }),
+
+ "has": markFunction(function( selector ) {
+ return function( elem ) {
+ return Sizzle( selector, elem ).length > 0;
+ };
+ }),
+
+ "contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
+ return function( elem ) {
+ return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
+ };
+ }),
+
+ // "Whether an element is represented by a :lang() selector
+ // is based solely on the element's language value
+ // being equal to the identifier C,
+ // or beginning with the identifier C immediately followed by "-".
+ // The matching of C against the element's language value is performed case-insensitively.
+ // The identifier C does not have to be a valid language name."
+ // http://www.w3.org/TR/selectors/#lang-pseudo
+ "lang": markFunction( function( lang ) {
+ // lang value must be a valid identifier
+ if ( !ridentifier.test(lang || "") ) {
+ Sizzle.error( "unsupported lang: " + lang );
+ }
+ lang = lang.replace( runescape, funescape ).toLowerCase();
+ return function( elem ) {
+ var elemLang;
+ do {
+ if ( (elemLang = documentIsHTML ?
+ elem.lang :
+ elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+ elemLang = elemLang.toLowerCase();
+ return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+ }
+ } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+ return false;
+ };
+ }),
+
+ // Miscellaneous
+ "target": function( elem ) {
+ var hash = window.location && window.location.hash;
+ return hash && hash.slice( 1 ) === elem.id;
+ },
+
+ "root": function( elem ) {
+ return elem === docElem;
+ },
+
+ "focus": function( elem ) {
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+ },
+
+ // Boolean properties
+ "enabled": createDisabledPseudo( false ),
+ "disabled": createDisabledPseudo( true ),
+
+ "checked": function( elem ) {
+ // In CSS3, :checked should return both checked and selected elements
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+ var nodeName = elem.nodeName.toLowerCase();
+ return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+ },
+
+ "selected": function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
+ return elem.selected === true;
+ },
+
+ // Contents
+ "empty": function( elem ) {
+ // http://www.w3.org/TR/selectors/#empty-pseudo
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+ // but not by others (comment: 8; processing instruction: 7; etc.)
+ // nodeType < 6 works because attributes (2) do not appear as children
+ for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+ if ( elem.nodeType < 6 ) {
+ return false;
+ }
+ }
+ return true;
+ },
+
+ "parent": function( elem ) {
+ return !Expr.pseudos["empty"]( elem );
+ },
+
+ // Element/input types
+ "header": function( elem ) {
+ return rheader.test( elem.nodeName );
+ },
+
+ "input": function( elem ) {
+ return rinputs.test( elem.nodeName );
+ },
+
+ "button": function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === "button" || name === "button";
+ },
+
+ "text": function( elem ) {
+ var attr;
+ return elem.nodeName.toLowerCase() === "input" &&
+ elem.type === "text" &&
+
+ // Support: IE<8
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+ ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+ },
+
+ // Position-in-collection
+ "first": createPositionalPseudo(function() {
+ return [ 0 ];
+ }),
+
+ "last": createPositionalPseudo(function( matchIndexes, length ) {
+ return [ length - 1 ];
+ }),
+
+ "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ return [ argument < 0 ? argument + length : argument ];
+ }),
+
+ "even": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 0;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "odd": createPositionalPseudo(function( matchIndexes, length ) {
+ var i = 1;
+ for ( ; i < length; i += 2 ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ?
+ argument + length :
+ argument > length ?
+ length :
+ argument;
+ for ( ; --i >= 0; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ }),
+
+ "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+ var i = argument < 0 ? argument + length : argument;
+ for ( ; ++i < length; ) {
+ matchIndexes.push( i );
+ }
+ return matchIndexes;
+ })
+ }
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+ Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+ Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+ var matched, match, tokens, type,
+ soFar, groups, preFilters,
+ cached = tokenCache[ selector + " " ];
+
+ if ( cached ) {
+ return parseOnly ? 0 : cached.slice( 0 );
+ }
+
+ soFar = selector;
+ groups = [];
+ preFilters = Expr.preFilter;
+
+ while ( soFar ) {
+
+ // Comma and first run
+ if ( !matched || (match = rcomma.exec( soFar )) ) {
+ if ( match ) {
+ // Don't consume trailing commas as valid
+ soFar = soFar.slice( match[0].length ) || soFar;
+ }
+ groups.push( (tokens = []) );
+ }
+
+ matched = false;
+
+ // Combinators
+ if ( (match = rcombinators.exec( soFar )) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ // Cast descendant combinators to space
+ type: match[0].replace( rtrim, " " )
+ });
+ soFar = soFar.slice( matched.length );
+ }
+
+ // Filters
+ for ( type in Expr.filter ) {
+ if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+ (match = preFilters[ type ]( match ))) ) {
+ matched = match.shift();
+ tokens.push({
+ value: matched,
+ type: type,
+ matches: match
+ });
+ soFar = soFar.slice( matched.length );
+ }
+ }
+
+ if ( !matched ) {
+ break;
+ }
+ }
+
+ // Return the length of the invalid excess
+ // if we're just parsing
+ // Otherwise, throw an error or return tokens
+ return parseOnly ?
+ soFar.length :
+ soFar ?
+ Sizzle.error( selector ) :
+ // Cache the tokens
+ tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+ var i = 0,
+ len = tokens.length,
+ selector = "";
+ for ( ; i < len; i++ ) {
+ selector += tokens[i].value;
+ }
+ return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+ var dir = combinator.dir,
+ skip = combinator.next,
+ key = skip || dir,
+ checkNonElements = base && key === "parentNode",
+ doneName = done++;
+
+ return combinator.first ?
+ // Check against closest ancestor/preceding element
+ function( elem, context, xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ return matcher( elem, context, xml );
+ }
+ }
+ return false;
+ } :
+
+ // Check against all ancestor/preceding elements
+ function( elem, context, xml ) {
+ var oldCache, uniqueCache, outerCache,
+ newCache = [ dirruns, doneName ];
+
+ // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+ if ( xml ) {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ if ( matcher( elem, context, xml ) ) {
+ return true;
+ }
+ }
+ }
+ } else {
+ while ( (elem = elem[ dir ]) ) {
+ if ( elem.nodeType === 1 || checkNonElements ) {
+ outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+ // Support: IE <9 only
+ // Defend against cloned attroperties (jQuery gh-1709)
+ uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+ if ( skip && skip === elem.nodeName.toLowerCase() ) {
+ elem = elem[ dir ] || elem;
+ } else if ( (oldCache = uniqueCache[ key ]) &&
+ oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+ // Assign to newCache so results back-propagate to previous elements
+ return (newCache[ 2 ] = oldCache[ 2 ]);
+ } else {
+ // Reuse newcache so results back-propagate to previous elements
+ uniqueCache[ key ] = newCache;
+
+ // A match means we're done; a fail means we have to keep checking
+ if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ };
+}
+
+function elementMatcher( matchers ) {
+ return matchers.length > 1 ?
+ function( elem, context, xml ) {
+ var i = matchers.length;
+ while ( i-- ) {
+ if ( !matchers[i]( elem, context, xml ) ) {
+ return false;
+ }
+ }
+ return true;
+ } :
+ matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+ var i = 0,
+ len = contexts.length;
+ for ( ; i < len; i++ ) {
+ Sizzle( selector, contexts[i], results );
+ }
+ return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+ var elem,
+ newUnmatched = [],
+ i = 0,
+ len = unmatched.length,
+ mapped = map != null;
+
+ for ( ; i < len; i++ ) {
+ if ( (elem = unmatched[i]) ) {
+ if ( !filter || filter( elem, context, xml ) ) {
+ newUnmatched.push( elem );
+ if ( mapped ) {
+ map.push( i );
+ }
+ }
+ }
+ }
+
+ return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+ if ( postFilter && !postFilter[ expando ] ) {
+ postFilter = setMatcher( postFilter );
+ }
+ if ( postFinder && !postFinder[ expando ] ) {
+ postFinder = setMatcher( postFinder, postSelector );
+ }
+ return markFunction(function( seed, results, context, xml ) {
+ var temp, i, elem,
+ preMap = [],
+ postMap = [],
+ preexisting = results.length,
+
+ // Get initial elements from seed or context
+ elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
+ matcherIn = preFilter && ( seed || !selector ) ?
+ condense( elems, preMap, preFilter, context, xml ) :
+ elems,
+
+ matcherOut = matcher ?
+ // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+ postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+ // ...intermediate processing is necessary
+ [] :
+
+ // ...otherwise use results directly
+ results :
+ matcherIn;
+
+ // Find primary matches
+ if ( matcher ) {
+ matcher( matcherIn, matcherOut, context, xml );
+ }
+
+ // Apply postFilter
+ if ( postFilter ) {
+ temp = condense( matcherOut, postMap );
+ postFilter( temp, [], context, xml );
+
+ // Un-match failing elements by moving them back to matcherIn
+ i = temp.length;
+ while ( i-- ) {
+ if ( (elem = temp[i]) ) {
+ matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+ }
+ }
+ }
+
+ if ( seed ) {
+ if ( postFinder || preFilter ) {
+ if ( postFinder ) {
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
+ temp = [];
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) ) {
+ // Restore matcherIn since elem is not yet a final match
+ temp.push( (matcherIn[i] = elem) );
+ }
+ }
+ postFinder( null, (matcherOut = []), temp, xml );
+ }
+
+ // Move matched elements from seed to results to keep them synchronized
+ i = matcherOut.length;
+ while ( i-- ) {
+ if ( (elem = matcherOut[i]) &&
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+ seed[temp] = !(results[temp] = elem);
+ }
+ }
+ }
+
+ // Add elements to results, through postFinder if defined
+ } else {
+ matcherOut = condense(
+ matcherOut === results ?
+ matcherOut.splice( preexisting, matcherOut.length ) :
+ matcherOut
+ );
+ if ( postFinder ) {
+ postFinder( null, results, matcherOut, xml );
+ } else {
+ push.apply( results, matcherOut );
+ }
+ }
+ });
+}
+
+function matcherFromTokens( tokens ) {
+ var checkContext, matcher, j,
+ len = tokens.length,
+ leadingRelative = Expr.relative[ tokens[0].type ],
+ implicitRelative = leadingRelative || Expr.relative[" "],
+ i = leadingRelative ? 1 : 0,
+
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
+ matchContext = addCombinator( function( elem ) {
+ return elem === checkContext;
+ }, implicitRelative, true ),
+ matchAnyContext = addCombinator( function( elem ) {
+ return indexOf( checkContext, elem ) > -1;
+ }, implicitRelative, true ),
+ matchers = [ function( elem, context, xml ) {
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ (checkContext = context).nodeType ?
+ matchContext( elem, context, xml ) :
+ matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
+ } ];
+
+ for ( ; i < len; i++ ) {
+ if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+ matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+ } else {
+ matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+ // Return special upon seeing a positional matcher
+ if ( matcher[ expando ] ) {
+ // Find the next relative operator (if any) for proper handling
+ j = ++i;
+ for ( ; j < len; j++ ) {
+ if ( Expr.relative[ tokens[j].type ] ) {
+ break;
+ }
+ }
+ return setMatcher(
+ i > 1 && elementMatcher( matchers ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
+ matcher,
+ i < j && matcherFromTokens( tokens.slice( i, j ) ),
+ j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+ j < len && toSelector( tokens )
+ );
+ }
+ matchers.push( matcher );
+ }
+ }
+
+ return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+ var bySet = setMatchers.length > 0,
+ byElement = elementMatchers.length > 0,
+ superMatcher = function( seed, context, xml, results, outermost ) {
+ var elem, j, matcher,
+ matchedCount = 0,
+ i = "0",
+ unmatched = seed && [],
+ setMatched = [],
+ contextBackup = outermostContext,
+ // We must always have either seed elements or outermost context
+ elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+ // Use integer dirruns iff this is the outermost matcher
+ dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+ len = elems.length;
+
+ if ( outermost ) {
+ outermostContext = context === document || context || outermost;
+ }
+
+ // Add elements passing elementMatchers directly to results
+ // Support: IE<9, Safari
+ // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
+ for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+ if ( byElement && elem ) {
+ j = 0;
+ if ( !context && elem.ownerDocument !== document ) {
+ setDocument( elem );
+ xml = !documentIsHTML;
+ }
+ while ( (matcher = elementMatchers[j++]) ) {
+ if ( matcher( elem, context || document, xml) ) {
+ results.push( elem );
+ break;
+ }
+ }
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ }
+ }
+
+ // Track unmatched elements for set filters
+ if ( bySet ) {
+ // They will have gone through all possible matchers
+ if ( (elem = !matcher && elem) ) {
+ matchedCount--;
+ }
+
+ // Lengthen the array for every element, matched or not
+ if ( seed ) {
+ unmatched.push( elem );
+ }
+ }
+ }
+
+ // `i` is now the count of elements visited above, and adding it to `matchedCount`
+ // makes the latter nonnegative.
+ matchedCount += i;
+
+ // Apply set filters to unmatched elements
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+ // no element matchers and no seed.
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
+ // numerically zero.
+ if ( bySet && i !== matchedCount ) {
+ j = 0;
+ while ( (matcher = setMatchers[j++]) ) {
+ matcher( unmatched, setMatched, context, xml );
+ }
+
+ if ( seed ) {
+ // Reintegrate element matches to eliminate the need for sorting
+ if ( matchedCount > 0 ) {
+ while ( i-- ) {
+ if ( !(unmatched[i] || setMatched[i]) ) {
+ setMatched[i] = pop.call( results );
+ }
+ }
+ }
+
+ // Discard index placeholder values to get only actual matches
+ setMatched = condense( setMatched );
+ }
+
+ // Add matches to results
+ push.apply( results, setMatched );
+
+ // Seedless set matches succeeding multiple successful matchers stipulate sorting
+ if ( outermost && !seed && setMatched.length > 0 &&
+ ( matchedCount + setMatchers.length ) > 1 ) {
+
+ Sizzle.uniqueSort( results );
+ }
+ }
+
+ // Override manipulation of globals by nested matchers
+ if ( outermost ) {
+ dirruns = dirrunsUnique;
+ outermostContext = contextBackup;
+ }
+
+ return unmatched;
+ };
+
+ return bySet ?
+ markFunction( superMatcher ) :
+ superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+ var i,
+ setMatchers = [],
+ elementMatchers = [],
+ cached = compilerCache[ selector + " " ];
+
+ if ( !cached ) {
+ // Generate a function of recursive functions that can be used to check each element
+ if ( !match ) {
+ match = tokenize( selector );
+ }
+ i = match.length;
+ while ( i-- ) {
+ cached = matcherFromTokens( match[i] );
+ if ( cached[ expando ] ) {
+ setMatchers.push( cached );
+ } else {
+ elementMatchers.push( cached );
+ }
+ }
+
+ // Cache the compiled function
+ cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+ // Save selector and tokenization
+ cached.selector = selector;
+ }
+ return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ * selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ * selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+ var i, tokens, token, type, find,
+ compiled = typeof selector === "function" && selector,
+ match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+ results = results || [];
+
+ // Try to minimize operations if there is only one selector in the list and no seed
+ // (the latter of which guarantees us context)
+ if ( match.length === 1 ) {
+
+ // Reduce context if the leading compound selector is an ID
+ tokens = match[0] = match[0].slice( 0 );
+ if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+ context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+ context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+ if ( !context ) {
+ return results;
+
+ // Precompiled matchers will still verify ancestry, so step up a level
+ } else if ( compiled ) {
+ context = context.parentNode;
+ }
+
+ selector = selector.slice( tokens.shift().value.length );
+ }
+
+ // Fetch a seed set for right-to-left matching
+ i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+ while ( i-- ) {
+ token = tokens[i];
+
+ // Abort if we hit a combinator
+ if ( Expr.relative[ (type = token.type) ] ) {
+ break;
+ }
+ if ( (find = Expr.find[ type ]) ) {
+ // Search, expanding context for leading sibling combinators
+ if ( (seed = find(
+ token.matches[0].replace( runescape, funescape ),
+ rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+ )) ) {
+
+ // If seed is empty or no tokens remain, we can return early
+ tokens.splice( i, 1 );
+ selector = seed.length && toSelector( tokens );
+ if ( !selector ) {
+ push.apply( results, seed );
+ return results;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ // Compile and execute a filtering function if one is not provided
+ // Provide `match` to avoid retokenization if we modified the selector above
+ ( compiled || compile( selector, match ) )(
+ seed,
+ context,
+ !documentIsHTML,
+ results,
+ !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+ );
+ return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+ // Should return 1, but returns 4 (following)
+ return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+ el.innerHTML = " ";
+ return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+ addHandle( "type|href|height|width", function( elem, name, isXML ) {
+ if ( !isXML ) {
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+ }
+ });
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+ el.innerHTML = " ";
+ el.firstChild.setAttribute( "value", "" );
+ return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+ addHandle( "value", function( elem, name, isXML ) {
+ if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+ });
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+ return el.getAttribute("disabled") == null;
+}) ) {
+ addHandle( booleans, function( elem, name, isXML ) {
+ var val;
+ if ( !isXML ) {
+ return elem[ name ] === true ? name.toLowerCase() :
+ (val = elem.getAttributeNode( name )) && val.specified ?
+ val.value :
+ null;
+ }
+ });
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+ var matched = [],
+ truncate = until !== undefined;
+
+ while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+ if ( elem.nodeType === 1 ) {
+ if ( truncate && jQuery( elem ).is( until ) ) {
+ break;
+ }
+ matched.push( elem );
+ }
+ }
+ return matched;
+};
+
+
+var siblings = function( n, elem ) {
+ var matched = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ matched.push( n );
+ }
+ }
+
+ return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+ if ( isFunction( qualifier ) ) {
+ return jQuery.grep( elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) !== not;
+ } );
+ }
+
+ // Single element
+ if ( qualifier.nodeType ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( elem === qualifier ) !== not;
+ } );
+ }
+
+ // Arraylike of elements (jQuery, arguments, Array)
+ if ( typeof qualifier !== "string" ) {
+ return jQuery.grep( elements, function( elem ) {
+ return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+ } );
+ }
+
+ // Filtered directly for both simple and complex selectors
+ return jQuery.filter( qualifier, elements, not );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+ var elem = elems[ 0 ];
+
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ if ( elems.length === 1 && elem.nodeType === 1 ) {
+ return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+ }
+
+ return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+ return elem.nodeType === 1;
+ } ) );
+};
+
+jQuery.fn.extend( {
+ find: function( selector ) {
+ var i, ret,
+ len = this.length,
+ self = this;
+
+ if ( typeof selector !== "string" ) {
+ return this.pushStack( jQuery( selector ).filter( function() {
+ for ( i = 0; i < len; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ } ) );
+ }
+
+ ret = this.pushStack( [] );
+
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
+ }
+
+ return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+ },
+ filter: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], false ) );
+ },
+ not: function( selector ) {
+ return this.pushStack( winnow( this, selector || [], true ) );
+ },
+ is: function( selector ) {
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
+ }
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+ // A simple way to check for HTML strings
+ // Prioritize #id over to avoid XSS via location.hash (#9521)
+ // Strict HTML recognition (#11290: must start with <)
+ // Shortcut simple #id case for speed
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+ init = jQuery.fn.init = function( selector, context, root ) {
+ var match, elem;
+
+ // HANDLE: $(""), $(null), $(undefined), $(false)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Method init() accepts an alternate rootjQuery
+ // so migrate can support jQuery.sub (gh-2101)
+ root = root || rootjQuery;
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ if ( selector[ 0 ] === "<" &&
+ selector[ selector.length - 1 ] === ">" &&
+ selector.length >= 3 ) {
+
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = rquickExpr.exec( selector );
+ }
+
+ // Match html or make sure no context is specified for #id
+ if ( match && ( match[ 1 ] || !context ) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[ 1 ] ) {
+ context = context instanceof jQuery ? context[ 0 ] : context;
+
+ // Option to run scripts is true for back-compat
+ // Intentionally let the error be thrown if parseHTML is not present
+ jQuery.merge( this, jQuery.parseHTML(
+ match[ 1 ],
+ context && context.nodeType ? context.ownerDocument || context : document,
+ true
+ ) );
+
+ // HANDLE: $(html, props)
+ if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+ for ( match in context ) {
+
+ // Properties of context are called as methods if possible
+ if ( isFunction( this[ match ] ) ) {
+ this[ match ]( context[ match ] );
+
+ // ...and otherwise set as attributes
+ } else {
+ this.attr( match, context[ match ] );
+ }
+ }
+ }
+
+ return this;
+
+ // HANDLE: $(#id)
+ } else {
+ elem = document.getElementById( match[ 2 ] );
+
+ if ( elem ) {
+
+ // Inject the element directly into the jQuery object
+ this[ 0 ] = elem;
+ this.length = 1;
+ }
+ return this;
+ }
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return ( context || root ).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return this.constructor( context ).find( selector );
+ }
+
+ // HANDLE: $(DOMElement)
+ } else if ( selector.nodeType ) {
+ this[ 0 ] = selector;
+ this.length = 1;
+ return this;
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( isFunction( selector ) ) {
+ return root.ready !== undefined ?
+ root.ready( selector ) :
+
+ // Execute immediately if ready is not present
+ selector( jQuery );
+ }
+
+ return jQuery.makeArray( selector, this );
+ };
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+ // Methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
+
+jQuery.fn.extend( {
+ has: function( target ) {
+ var targets = jQuery( target, this ),
+ l = targets.length;
+
+ return this.filter( function() {
+ var i = 0;
+ for ( ; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[ i ] ) ) {
+ return true;
+ }
+ }
+ } );
+ },
+
+ closest: function( selectors, context ) {
+ var cur,
+ i = 0,
+ l = this.length,
+ matched = [],
+ targets = typeof selectors !== "string" && jQuery( selectors );
+
+ // Positional selectors never match, since there's no _selection_ context
+ if ( !rneedsContext.test( selectors ) ) {
+ for ( ; i < l; i++ ) {
+ for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+ // Always skip document fragments
+ if ( cur.nodeType < 11 && ( targets ?
+ targets.index( cur ) > -1 :
+
+ // Don't pass non-elements to Sizzle
+ cur.nodeType === 1 &&
+ jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+ matched.push( cur );
+ break;
+ }
+ }
+ }
+ }
+
+ return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+ },
+
+ // Determine the position of an element within the set
+ index: function( elem ) {
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+ }
+
+ // Index in selector
+ if ( typeof elem === "string" ) {
+ return indexOf.call( jQuery( elem ), this[ 0 ] );
+ }
+
+ // Locate the position of the desired element
+ return indexOf.call( this,
+
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[ 0 ] : elem
+ );
+ },
+
+ add: function( selector, context ) {
+ return this.pushStack(
+ jQuery.uniqueSort(
+ jQuery.merge( this.get(), jQuery( selector, context ) )
+ )
+ );
+ },
+
+ addBack: function( selector ) {
+ return this.add( selector == null ?
+ this.prevObject : this.prevObject.filter( selector )
+ );
+ }
+} );
+
+function sibling( cur, dir ) {
+ while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+ return cur;
+}
+
+jQuery.each( {
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return sibling( elem, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return sibling( elem, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return siblings( ( elem.parentNode || {} ).firstChild, elem );
+ },
+ children: function( elem ) {
+ return siblings( elem.firstChild );
+ },
+ contents: function( elem ) {
+ if ( typeof elem.contentDocument !== "undefined" ) {
+ return elem.contentDocument;
+ }
+
+ // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+ // Treat the template element as a regular one in browsers that
+ // don't support it.
+ if ( nodeName( elem, "template" ) ) {
+ elem = elem.content || elem;
+ }
+
+ return jQuery.merge( [], elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var matched = jQuery.map( this, fn, until );
+
+ if ( name.slice( -5 ) !== "Until" ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ matched = jQuery.filter( selector, matched );
+ }
+
+ if ( this.length > 1 ) {
+
+ // Remove duplicates
+ if ( !guaranteedUnique[ name ] ) {
+ jQuery.uniqueSort( matched );
+ }
+
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
+ matched.reverse();
+ }
+ }
+
+ return this.pushStack( matched );
+ };
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+ var object = {};
+ jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+ object[ flag ] = true;
+ } );
+ return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ * options: an optional list of space-separated options that will change how
+ * the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ * once: will ensure the callback list can only be fired once (like a Deferred)
+ *
+ * memory: will keep track of previous values and will call any callback added
+ * after the list has been fired right away with the latest "memorized"
+ * values (like a Deferred)
+ *
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
+ *
+ * stopOnFalse: interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+ // Convert options from String-formatted to Object-formatted if needed
+ // (we check in cache first)
+ options = typeof options === "string" ?
+ createOptions( options ) :
+ jQuery.extend( {}, options );
+
+ var // Flag to know if list is currently firing
+ firing,
+
+ // Last fire value for non-forgettable lists
+ memory,
+
+ // Flag to know if list was already fired
+ fired,
+
+ // Flag to prevent firing
+ locked,
+
+ // Actual callback list
+ list = [],
+
+ // Queue of execution data for repeatable lists
+ queue = [],
+
+ // Index of currently firing callback (modified by add/remove as needed)
+ firingIndex = -1,
+
+ // Fire callbacks
+ fire = function() {
+
+ // Enforce single-firing
+ locked = locked || options.once;
+
+ // Execute callbacks for all pending executions,
+ // respecting firingIndex overrides and runtime changes
+ fired = firing = true;
+ for ( ; queue.length; firingIndex = -1 ) {
+ memory = queue.shift();
+ while ( ++firingIndex < list.length ) {
+
+ // Run callback and check for early termination
+ if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+ options.stopOnFalse ) {
+
+ // Jump to end and forget the data so .add doesn't re-fire
+ firingIndex = list.length;
+ memory = false;
+ }
+ }
+ }
+
+ // Forget the data if we're done with it
+ if ( !options.memory ) {
+ memory = false;
+ }
+
+ firing = false;
+
+ // Clean up if we're done firing for good
+ if ( locked ) {
+
+ // Keep an empty list if we have data for future add calls
+ if ( memory ) {
+ list = [];
+
+ // Otherwise, this object is spent
+ } else {
+ list = "";
+ }
+ }
+ },
+
+ // Actual Callbacks object
+ self = {
+
+ // Add a callback or a collection of callbacks to the list
+ add: function() {
+ if ( list ) {
+
+ // If we have memory from a past run, we should fire after adding
+ if ( memory && !firing ) {
+ firingIndex = list.length - 1;
+ queue.push( memory );
+ }
+
+ ( function add( args ) {
+ jQuery.each( args, function( _, arg ) {
+ if ( isFunction( arg ) ) {
+ if ( !options.unique || !self.has( arg ) ) {
+ list.push( arg );
+ }
+ } else if ( arg && arg.length && toType( arg ) !== "string" ) {
+
+ // Inspect recursively
+ add( arg );
+ }
+ } );
+ } )( arguments );
+
+ if ( memory && !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Remove a callback from the list
+ remove: function() {
+ jQuery.each( arguments, function( _, arg ) {
+ var index;
+ while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+ list.splice( index, 1 );
+
+ // Handle firing indexes
+ if ( index <= firingIndex ) {
+ firingIndex--;
+ }
+ }
+ } );
+ return this;
+ },
+
+ // Check if a given callback is in the list.
+ // If no argument is given, return whether or not list has callbacks attached.
+ has: function( fn ) {
+ return fn ?
+ jQuery.inArray( fn, list ) > -1 :
+ list.length > 0;
+ },
+
+ // Remove all callbacks from the list
+ empty: function() {
+ if ( list ) {
+ list = [];
+ }
+ return this;
+ },
+
+ // Disable .fire and .add
+ // Abort any current/pending executions
+ // Clear all callbacks and values
+ disable: function() {
+ locked = queue = [];
+ list = memory = "";
+ return this;
+ },
+ disabled: function() {
+ return !list;
+ },
+
+ // Disable .fire
+ // Also disable .add unless we have memory (since it would have no effect)
+ // Abort any pending executions
+ lock: function() {
+ locked = queue = [];
+ if ( !memory && !firing ) {
+ list = memory = "";
+ }
+ return this;
+ },
+ locked: function() {
+ return !!locked;
+ },
+
+ // Call all callbacks with the given context and arguments
+ fireWith: function( context, args ) {
+ if ( !locked ) {
+ args = args || [];
+ args = [ context, args.slice ? args.slice() : args ];
+ queue.push( args );
+ if ( !firing ) {
+ fire();
+ }
+ }
+ return this;
+ },
+
+ // Call all the callbacks with the given arguments
+ fire: function() {
+ self.fireWith( this, arguments );
+ return this;
+ },
+
+ // To know if the callbacks have already been called at least once
+ fired: function() {
+ return !!fired;
+ }
+ };
+
+ return self;
+};
+
+
+function Identity( v ) {
+ return v;
+}
+function Thrower( ex ) {
+ throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+ var method;
+
+ try {
+
+ // Check for promise aspect first to privilege synchronous behavior
+ if ( value && isFunction( ( method = value.promise ) ) ) {
+ method.call( value ).done( resolve ).fail( reject );
+
+ // Other thenables
+ } else if ( value && isFunction( ( method = value.then ) ) ) {
+ method.call( value, resolve, reject );
+
+ // Other non-thenables
+ } else {
+
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+ // * false: [ value ].slice( 0 ) => resolve( value )
+ // * true: [ value ].slice( 1 ) => resolve()
+ resolve.apply( undefined, [ value ].slice( noValue ) );
+ }
+
+ // For Promises/A+, convert exceptions into rejections
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+ // Deferred#then to conditionally suppress rejection.
+ } catch ( value ) {
+
+ // Support: Android 4.0 only
+ // Strict mode functions invoked without .call/.apply get global-object context
+ reject.apply( undefined, [ value ] );
+ }
+}
+
+jQuery.extend( {
+
+ Deferred: function( func ) {
+ var tuples = [
+
+ // action, add listener, callbacks,
+ // ... .then handlers, argument index, [final state]
+ [ "notify", "progress", jQuery.Callbacks( "memory" ),
+ jQuery.Callbacks( "memory" ), 2 ],
+ [ "resolve", "done", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+ [ "reject", "fail", jQuery.Callbacks( "once memory" ),
+ jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+ ],
+ state = "pending",
+ promise = {
+ state: function() {
+ return state;
+ },
+ always: function() {
+ deferred.done( arguments ).fail( arguments );
+ return this;
+ },
+ "catch": function( fn ) {
+ return promise.then( null, fn );
+ },
+
+ // Keep pipe for back-compat
+ pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+ var fns = arguments;
+
+ return jQuery.Deferred( function( newDefer ) {
+ jQuery.each( tuples, function( i, tuple ) {
+
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
+ var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
+ deferred[ tuple[ 1 ] ]( function() {
+ var returned = fn && fn.apply( this, arguments );
+ if ( returned && isFunction( returned.promise ) ) {
+ returned.promise()
+ .progress( newDefer.notify )
+ .done( newDefer.resolve )
+ .fail( newDefer.reject );
+ } else {
+ newDefer[ tuple[ 0 ] + "With" ](
+ this,
+ fn ? [ returned ] : arguments
+ );
+ }
+ } );
+ } );
+ fns = null;
+ } ).promise();
+ },
+ then: function( onFulfilled, onRejected, onProgress ) {
+ var maxDepth = 0;
+ function resolve( depth, deferred, handler, special ) {
+ return function() {
+ var that = this,
+ args = arguments,
+ mightThrow = function() {
+ var returned, then;
+
+ // Support: Promises/A+ section 2.3.3.3.3
+ // https://promisesaplus.com/#point-59
+ // Ignore double-resolution attempts
+ if ( depth < maxDepth ) {
+ return;
+ }
+
+ returned = handler.apply( that, args );
+
+ // Support: Promises/A+ section 2.3.1
+ // https://promisesaplus.com/#point-48
+ if ( returned === deferred.promise() ) {
+ throw new TypeError( "Thenable self-resolution" );
+ }
+
+ // Support: Promises/A+ sections 2.3.3.1, 3.5
+ // https://promisesaplus.com/#point-54
+ // https://promisesaplus.com/#point-75
+ // Retrieve `then` only once
+ then = returned &&
+
+ // Support: Promises/A+ section 2.3.4
+ // https://promisesaplus.com/#point-64
+ // Only check objects and functions for thenability
+ ( typeof returned === "object" ||
+ typeof returned === "function" ) &&
+ returned.then;
+
+ // Handle a returned thenable
+ if ( isFunction( then ) ) {
+
+ // Special processors (notify) just wait for resolution
+ if ( special ) {
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special )
+ );
+
+ // Normal processors (resolve) also hook into progress
+ } else {
+
+ // ...and disregard older resolution values
+ maxDepth++;
+
+ then.call(
+ returned,
+ resolve( maxDepth, deferred, Identity, special ),
+ resolve( maxDepth, deferred, Thrower, special ),
+ resolve( maxDepth, deferred, Identity,
+ deferred.notifyWith )
+ );
+ }
+
+ // Handle all other returned values
+ } else {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Identity ) {
+ that = undefined;
+ args = [ returned ];
+ }
+
+ // Process the value(s)
+ // Default process is resolve
+ ( special || deferred.resolveWith )( that, args );
+ }
+ },
+
+ // Only normal processors (resolve) catch and reject exceptions
+ process = special ?
+ mightThrow :
+ function() {
+ try {
+ mightThrow();
+ } catch ( e ) {
+
+ if ( jQuery.Deferred.exceptionHook ) {
+ jQuery.Deferred.exceptionHook( e,
+ process.stackTrace );
+ }
+
+ // Support: Promises/A+ section 2.3.3.3.4.1
+ // https://promisesaplus.com/#point-61
+ // Ignore post-resolution exceptions
+ if ( depth + 1 >= maxDepth ) {
+
+ // Only substitute handlers pass on context
+ // and multiple values (non-spec behavior)
+ if ( handler !== Thrower ) {
+ that = undefined;
+ args = [ e ];
+ }
+
+ deferred.rejectWith( that, args );
+ }
+ }
+ };
+
+ // Support: Promises/A+ section 2.3.3.3.1
+ // https://promisesaplus.com/#point-57
+ // Re-resolve promises immediately to dodge false rejection from
+ // subsequent errors
+ if ( depth ) {
+ process();
+ } else {
+
+ // Call an optional hook to record the stack, in case of exception
+ // since it's otherwise lost when execution goes async
+ if ( jQuery.Deferred.getStackHook ) {
+ process.stackTrace = jQuery.Deferred.getStackHook();
+ }
+ window.setTimeout( process );
+ }
+ };
+ }
+
+ return jQuery.Deferred( function( newDefer ) {
+
+ // progress_handlers.add( ... )
+ tuples[ 0 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onProgress ) ?
+ onProgress :
+ Identity,
+ newDefer.notifyWith
+ )
+ );
+
+ // fulfilled_handlers.add( ... )
+ tuples[ 1 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onFulfilled ) ?
+ onFulfilled :
+ Identity
+ )
+ );
+
+ // rejected_handlers.add( ... )
+ tuples[ 2 ][ 3 ].add(
+ resolve(
+ 0,
+ newDefer,
+ isFunction( onRejected ) ?
+ onRejected :
+ Thrower
+ )
+ );
+ } ).promise();
+ },
+
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
+ }
+ },
+ deferred = {};
+
+ // Add list-specific methods
+ jQuery.each( tuples, function( i, tuple ) {
+ var list = tuple[ 2 ],
+ stateString = tuple[ 5 ];
+
+ // promise.progress = list.add
+ // promise.done = list.add
+ // promise.fail = list.add
+ promise[ tuple[ 1 ] ] = list.add;
+
+ // Handle state
+ if ( stateString ) {
+ list.add(
+ function() {
+
+ // state = "resolved" (i.e., fulfilled)
+ // state = "rejected"
+ state = stateString;
+ },
+
+ // rejected_callbacks.disable
+ // fulfilled_callbacks.disable
+ tuples[ 3 - i ][ 2 ].disable,
+
+ // rejected_handlers.disable
+ // fulfilled_handlers.disable
+ tuples[ 3 - i ][ 3 ].disable,
+
+ // progress_callbacks.lock
+ tuples[ 0 ][ 2 ].lock,
+
+ // progress_handlers.lock
+ tuples[ 0 ][ 3 ].lock
+ );
+ }
+
+ // progress_handlers.fire
+ // fulfilled_handlers.fire
+ // rejected_handlers.fire
+ list.add( tuple[ 3 ].fire );
+
+ // deferred.notify = function() { deferred.notifyWith(...) }
+ // deferred.resolve = function() { deferred.resolveWith(...) }
+ // deferred.reject = function() { deferred.rejectWith(...) }
+ deferred[ tuple[ 0 ] ] = function() {
+ deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+ return this;
+ };
+
+ // deferred.notifyWith = list.fireWith
+ // deferred.resolveWith = list.fireWith
+ // deferred.rejectWith = list.fireWith
+ deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+ } );
+
+ // Make the deferred a promise
+ promise.promise( deferred );
+
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+
+ // All done!
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( singleValue ) {
+ var
+
+ // count of uncompleted subordinates
+ remaining = arguments.length,
+
+ // count of unprocessed arguments
+ i = remaining,
+
+ // subordinate fulfillment data
+ resolveContexts = Array( i ),
+ resolveValues = slice.call( arguments ),
+
+ // the master Deferred
+ master = jQuery.Deferred(),
+
+ // subordinate callback factory
+ updateFunc = function( i ) {
+ return function( value ) {
+ resolveContexts[ i ] = this;
+ resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+ if ( !( --remaining ) ) {
+ master.resolveWith( resolveContexts, resolveValues );
+ }
+ };
+ };
+
+ // Single- and empty arguments are adopted like Promise.resolve
+ if ( remaining <= 1 ) {
+ adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+ !remaining );
+
+ // Use .then() to unwrap secondary thenables (cf. gh-3000)
+ if ( master.state() === "pending" ||
+ isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+ return master.then();
+ }
+ }
+
+ // Multiple arguments are aggregated like Promise.all array elements
+ while ( i-- ) {
+ adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+ }
+
+ return master.promise();
+ }
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+ // Support: IE 8 - 9 only
+ // Console exists when dev tools are open, which can happen at any time
+ if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+ window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+ }
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+ window.setTimeout( function() {
+ throw error;
+ } );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+ readyList
+ .then( fn )
+
+ // Wrap jQuery.readyException in a function so that the lookup
+ // happens at the time of error handling instead of callback
+ // registration.
+ .catch( function( error ) {
+ jQuery.readyException( error );
+ } );
+
+ return this;
+};
+
+jQuery.extend( {
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+
+ // Abort if there are pending holds or we're already ready
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+ return;
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+ }
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+ document.removeEventListener( "DOMContentLoaded", completed );
+ window.removeEventListener( "load", completed );
+ jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+ ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ window.setTimeout( jQuery.ready );
+
+} else {
+
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", completed );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+ var i = 0,
+ len = elems.length,
+ bulk = key == null;
+
+ // Sets many values
+ if ( toType( key ) === "object" ) {
+ chainable = true;
+ for ( i in key ) {
+ access( elems, fn, i, key[ i ], true, emptyGet, raw );
+ }
+
+ // Sets one value
+ } else if ( value !== undefined ) {
+ chainable = true;
+
+ if ( !isFunction( value ) ) {
+ raw = true;
+ }
+
+ if ( bulk ) {
+
+ // Bulk operations run against the entire set
+ if ( raw ) {
+ fn.call( elems, value );
+ fn = null;
+
+ // ...except when executing function values
+ } else {
+ bulk = fn;
+ fn = function( elem, key, value ) {
+ return bulk.call( jQuery( elem ), value );
+ };
+ }
+ }
+
+ if ( fn ) {
+ for ( ; i < len; i++ ) {
+ fn(
+ elems[ i ], key, raw ?
+ value :
+ value.call( elems[ i ], i, fn( elems[ i ], key ) )
+ );
+ }
+ }
+ }
+
+ if ( chainable ) {
+ return elems;
+ }
+
+ // Gets
+ if ( bulk ) {
+ return fn.call( elems );
+ }
+
+ return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+
+// Matches dashed string for camelizing
+var rmsPrefix = /^-ms-/,
+ rdashAlpha = /-([a-z])/g;
+
+// Used by camelCase as callback to replace()
+function fcamelCase( all, letter ) {
+ return letter.toUpperCase();
+}
+
+// Convert dashed to camelCase; used by the css and data modules
+// Support: IE <=9 - 11, Edge 12 - 15
+// Microsoft forgot to hump their vendor prefix (#9572)
+function camelCase( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+}
+var acceptData = function( owner ) {
+
+ // Accepts only:
+ // - Node
+ // - Node.ELEMENT_NODE
+ // - Node.DOCUMENT_NODE
+ // - Object
+ // - Any
+ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+ this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+ cache: function( owner ) {
+
+ // Check if the owner object already has a cache
+ var value = owner[ this.expando ];
+
+ // If not, create one
+ if ( !value ) {
+ value = {};
+
+ // We can accept data for non-element nodes in modern browsers,
+ // but we should not, see #8335.
+ // Always return an empty object.
+ if ( acceptData( owner ) ) {
+
+ // If it is a node unlikely to be stringify-ed or looped over
+ // use plain assignment
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = value;
+
+ // Otherwise secure it in a non-enumerable property
+ // configurable must be true to allow the property to be
+ // deleted when data is removed
+ } else {
+ Object.defineProperty( owner, this.expando, {
+ value: value,
+ configurable: true
+ } );
+ }
+ }
+ }
+
+ return value;
+ },
+ set: function( owner, data, value ) {
+ var prop,
+ cache = this.cache( owner );
+
+ // Handle: [ owner, key, value ] args
+ // Always use camelCase key (gh-2257)
+ if ( typeof data === "string" ) {
+ cache[ camelCase( data ) ] = value;
+
+ // Handle: [ owner, { properties } ] args
+ } else {
+
+ // Copy the properties one-by-one to the cache object
+ for ( prop in data ) {
+ cache[ camelCase( prop ) ] = data[ prop ];
+ }
+ }
+ return cache;
+ },
+ get: function( owner, key ) {
+ return key === undefined ?
+ this.cache( owner ) :
+
+ // Always use camelCase key (gh-2257)
+ owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
+ },
+ access: function( owner, key, value ) {
+
+ // In cases where either:
+ //
+ // 1. No key was specified
+ // 2. A string key was specified, but no value provided
+ //
+ // Take the "read" path and allow the get method to determine
+ // which value to return, respectively either:
+ //
+ // 1. The entire cache object
+ // 2. The data stored at the key
+ //
+ if ( key === undefined ||
+ ( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+ return this.get( owner, key );
+ }
+
+ // When the key is not a string, or both a key and value
+ // are specified, set or extend (existing objects) with either:
+ //
+ // 1. An object of properties
+ // 2. A key and value
+ //
+ this.set( owner, key, value );
+
+ // Since the "set" path can have two possible entry points
+ // return the expected data based on which path was taken[*]
+ return value !== undefined ? value : key;
+ },
+ remove: function( owner, key ) {
+ var i,
+ cache = owner[ this.expando ];
+
+ if ( cache === undefined ) {
+ return;
+ }
+
+ if ( key !== undefined ) {
+
+ // Support array or space separated string of keys
+ if ( Array.isArray( key ) ) {
+
+ // If key is an array of keys...
+ // We always set camelCase keys, so remove that.
+ key = key.map( camelCase );
+ } else {
+ key = camelCase( key );
+
+ // If a key with the spaces exists, use it.
+ // Otherwise, create an array by matching non-whitespace
+ key = key in cache ?
+ [ key ] :
+ ( key.match( rnothtmlwhite ) || [] );
+ }
+
+ i = key.length;
+
+ while ( i-- ) {
+ delete cache[ key[ i ] ];
+ }
+ }
+
+ // Remove the expando if there's no more data
+ if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+ // Support: Chrome <=35 - 45
+ // Webkit & Blink performance suffers when deleting properties
+ // from DOM nodes, so set to undefined instead
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+ if ( owner.nodeType ) {
+ owner[ this.expando ] = undefined;
+ } else {
+ delete owner[ this.expando ];
+ }
+ }
+ },
+ hasData: function( owner ) {
+ var cache = owner[ this.expando ];
+ return cache !== undefined && !jQuery.isEmptyObject( cache );
+ }
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+// Implementation Summary
+//
+// 1. Enforce API surface and semantic compatibility with 1.9.x branch
+// 2. Improve the module's maintainability by reducing the storage
+// paths to a single mechanism.
+// 3. Use the same single mechanism to support "private" and "user" data.
+// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+// 5. Avoid exposing implementation details on user objects (eg. expando properties)
+// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+ rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+ if ( data === "true" ) {
+ return true;
+ }
+
+ if ( data === "false" ) {
+ return false;
+ }
+
+ if ( data === "null" ) {
+ return null;
+ }
+
+ // Only convert to a number if it doesn't change the string
+ if ( data === +data + "" ) {
+ return +data;
+ }
+
+ if ( rbrace.test( data ) ) {
+ return JSON.parse( data );
+ }
+
+ return data;
+}
+
+function dataAttr( elem, key, data ) {
+ var name;
+
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = getData( data );
+ } catch ( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ dataUser.set( elem, key, data );
+ } else {
+ data = undefined;
+ }
+ }
+ return data;
+}
+
+jQuery.extend( {
+ hasData: function( elem ) {
+ return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+ },
+
+ data: function( elem, name, data ) {
+ return dataUser.access( elem, name, data );
+ },
+
+ removeData: function( elem, name ) {
+ dataUser.remove( elem, name );
+ },
+
+ // TODO: Now that all calls to _data and _removeData have been replaced
+ // with direct calls to dataPriv methods, these can be deprecated.
+ _data: function( elem, name, data ) {
+ return dataPriv.access( elem, name, data );
+ },
+
+ _removeData: function( elem, name ) {
+ dataPriv.remove( elem, name );
+ }
+} );
+
+jQuery.fn.extend( {
+ data: function( key, value ) {
+ var i, name, data,
+ elem = this[ 0 ],
+ attrs = elem && elem.attributes;
+
+ // Gets all values
+ if ( key === undefined ) {
+ if ( this.length ) {
+ data = dataUser.get( elem );
+
+ if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+ i = attrs.length;
+ while ( i-- ) {
+
+ // Support: IE 11 only
+ // The attrs elements can be null (#14894)
+ if ( attrs[ i ] ) {
+ name = attrs[ i ].name;
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = camelCase( name.slice( 5 ) );
+ dataAttr( elem, name, data[ name ] );
+ }
+ }
+ }
+ dataPriv.set( elem, "hasDataAttrs", true );
+ }
+ }
+
+ return data;
+ }
+
+ // Sets multiple values
+ if ( typeof key === "object" ) {
+ return this.each( function() {
+ dataUser.set( this, key );
+ } );
+ }
+
+ return access( this, function( value ) {
+ var data;
+
+ // The calling jQuery object (element matches) is not empty
+ // (and therefore has an element appears at this[ 0 ]) and the
+ // `value` parameter was not undefined. An empty jQuery object
+ // will result in `undefined` for elem = this[ 0 ] which will
+ // throw an exception if an attempt to read a data cache is made.
+ if ( elem && value === undefined ) {
+
+ // Attempt to get data from the cache
+ // The key will always be camelCased in Data
+ data = dataUser.get( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // Attempt to "discover" the data in
+ // HTML5 custom data-* attrs
+ data = dataAttr( elem, key );
+ if ( data !== undefined ) {
+ return data;
+ }
+
+ // We tried really hard, but the data doesn't exist.
+ return;
+ }
+
+ // Set the data...
+ this.each( function() {
+
+ // We always store the camelCased key
+ dataUser.set( this, key, value );
+ } );
+ }, null, value, arguments.length > 1, null, true );
+ },
+
+ removeData: function( key ) {
+ return this.each( function() {
+ dataUser.remove( this, key );
+ } );
+ }
+} );
+
+
+jQuery.extend( {
+ queue: function( elem, type, data ) {
+ var queue;
+
+ if ( elem ) {
+ type = ( type || "fx" ) + "queue";
+ queue = dataPriv.get( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !queue || Array.isArray( data ) ) {
+ queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+ } else {
+ queue.push( data );
+ }
+ }
+ return queue || [];
+ }
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ startLength = queue.length,
+ fn = queue.shift(),
+ hooks = jQuery._queueHooks( elem, type ),
+ next = function() {
+ jQuery.dequeue( elem, type );
+ };
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ startLength--;
+ }
+
+ if ( fn ) {
+
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift( "inprogress" );
+ }
+
+ // Clear up the last queue stop function
+ delete hooks.stop;
+ fn.call( elem, next, hooks );
+ }
+
+ if ( !startLength && hooks ) {
+ hooks.empty.fire();
+ }
+ },
+
+ // Not public - generate a queueHooks object, or return the current one
+ _queueHooks: function( elem, type ) {
+ var key = type + "queueHooks";
+ return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+ empty: jQuery.Callbacks( "once memory" ).add( function() {
+ dataPriv.remove( elem, [ type + "queue", key ] );
+ } )
+ } );
+ }
+} );
+
+jQuery.fn.extend( {
+ queue: function( type, data ) {
+ var setter = 2;
+
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ setter--;
+ }
+
+ if ( arguments.length < setter ) {
+ return jQuery.queue( this[ 0 ], type );
+ }
+
+ return data === undefined ?
+ this :
+ this.each( function() {
+ var queue = jQuery.queue( this, type, data );
+
+ // Ensure a hooks for this queue
+ jQuery._queueHooks( this, type );
+
+ if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ } );
+ },
+ dequeue: function( type ) {
+ return this.each( function() {
+ jQuery.dequeue( this, type );
+ } );
+ },
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ },
+
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, obj ) {
+ var tmp,
+ count = 1,
+ defer = jQuery.Deferred(),
+ elements = this,
+ i = this.length,
+ resolve = function() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ };
+
+ if ( typeof type !== "string" ) {
+ obj = type;
+ type = undefined;
+ }
+ type = type || "fx";
+
+ while ( i-- ) {
+ tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+ if ( tmp && tmp.empty ) {
+ count++;
+ tmp.empty.add( resolve );
+ }
+ }
+ resolve();
+ return defer.promise( obj );
+ }
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var documentElement = document.documentElement;
+
+
+
+ var isAttached = function( elem ) {
+ return jQuery.contains( elem.ownerDocument, elem );
+ },
+ composed = { composed: true };
+
+ // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
+ // Check attachment across shadow DOM boundaries when possible (gh-3504)
+ // Support: iOS 10.0-10.2 only
+ // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
+ // leading to errors. We need to check for `getRootNode`.
+ if ( documentElement.getRootNode ) {
+ isAttached = function( elem ) {
+ return jQuery.contains( elem.ownerDocument, elem ) ||
+ elem.getRootNode( composed ) === elem.ownerDocument;
+ };
+ }
+var isHiddenWithinTree = function( elem, el ) {
+
+ // isHiddenWithinTree might be called from jQuery#filter function;
+ // in that case, element will be second argument
+ elem = el || elem;
+
+ // Inline style trumps all
+ return elem.style.display === "none" ||
+ elem.style.display === "" &&
+
+ // Otherwise, check computed style
+ // Support: Firefox <=43 - 45
+ // Disconnected elements can have computed display: none, so first confirm that elem is
+ // in the document.
+ isAttached( elem ) &&
+
+ jQuery.css( elem, "display" ) === "none";
+ };
+
+var swap = function( elem, options, callback, args ) {
+ var ret, name,
+ old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ ret = callback.apply( elem, args || [] );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+
+ return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+ var adjusted, scale,
+ maxIterations = 20,
+ currentValue = tween ?
+ function() {
+ return tween.cur();
+ } :
+ function() {
+ return jQuery.css( elem, prop, "" );
+ },
+ initial = currentValue(),
+ unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ initialInUnit = elem.nodeType &&
+ ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+ rcssNum.exec( jQuery.css( elem, prop ) );
+
+ if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+ // Support: Firefox <=54
+ // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
+ initial = initial / 2;
+
+ // Trust units reported by jQuery.css
+ unit = unit || initialInUnit[ 3 ];
+
+ // Iteratively approximate from a nonzero starting point
+ initialInUnit = +initial || 1;
+
+ while ( maxIterations-- ) {
+
+ // Evaluate and update our best guess (doubling guesses that zero out).
+ // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
+ jQuery.style( elem, prop, initialInUnit + unit );
+ if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
+ maxIterations = 0;
+ }
+ initialInUnit = initialInUnit / scale;
+
+ }
+
+ initialInUnit = initialInUnit * 2;
+ jQuery.style( elem, prop, initialInUnit + unit );
+
+ // Make sure we update the tween properties later on
+ valueParts = valueParts || [];
+ }
+
+ if ( valueParts ) {
+ initialInUnit = +initialInUnit || +initial || 0;
+
+ // Apply relative offset (+=/-=) if specified
+ adjusted = valueParts[ 1 ] ?
+ initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+ +valueParts[ 2 ];
+ if ( tween ) {
+ tween.unit = unit;
+ tween.start = initialInUnit;
+ tween.end = adjusted;
+ }
+ }
+ return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+ var temp,
+ doc = elem.ownerDocument,
+ nodeName = elem.nodeName,
+ display = defaultDisplayMap[ nodeName ];
+
+ if ( display ) {
+ return display;
+ }
+
+ temp = doc.body.appendChild( doc.createElement( nodeName ) );
+ display = jQuery.css( temp, "display" );
+
+ temp.parentNode.removeChild( temp );
+
+ if ( display === "none" ) {
+ display = "block";
+ }
+ defaultDisplayMap[ nodeName ] = display;
+
+ return display;
+}
+
+function showHide( elements, show ) {
+ var display, elem,
+ values = [],
+ index = 0,
+ length = elements.length;
+
+ // Determine new display value for elements that need to change
+ for ( ; index < length; index++ ) {
+ elem = elements[ index ];
+ if ( !elem.style ) {
+ continue;
+ }
+
+ display = elem.style.display;
+ if ( show ) {
+
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+ // check is required in this first loop unless we have a nonempty display value (either
+ // inline or about-to-be-restored)
+ if ( display === "none" ) {
+ values[ index ] = dataPriv.get( elem, "display" ) || null;
+ if ( !values[ index ] ) {
+ elem.style.display = "";
+ }
+ }
+ if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+ values[ index ] = getDefaultDisplay( elem );
+ }
+ } else {
+ if ( display !== "none" ) {
+ values[ index ] = "none";
+
+ // Remember what we're overwriting
+ dataPriv.set( elem, "display", display );
+ }
+ }
+ }
+
+ // Set the display of the elements in a second loop to avoid constant reflow
+ for ( index = 0; index < length; index++ ) {
+ if ( values[ index ] != null ) {
+ elements[ index ].style.display = values[ index ];
+ }
+ }
+
+ return elements;
+}
+
+jQuery.fn.extend( {
+ show: function() {
+ return showHide( this, true );
+ },
+ hide: function() {
+ return showHide( this );
+ },
+ toggle: function( state ) {
+ if ( typeof state === "boolean" ) {
+ return state ? this.show() : this.hide();
+ }
+
+ return this.each( function() {
+ if ( isHiddenWithinTree( this ) ) {
+ jQuery( this ).show();
+ } else {
+ jQuery( this ).hide();
+ }
+ } );
+ }
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
+
+var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+ // Support: IE <=9 only
+ option: [ 1, "", " " ],
+
+ // XHTML parsers do not magically insert elements in the
+ // same way that tag soup parsers do. So we cannot shorten
+ // this by omitting or other required elements.
+ thead: [ 1, "" ],
+ col: [ 2, "" ],
+ tr: [ 2, "" ],
+ td: [ 3, "" ],
+
+ _default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+ // Support: IE <=9 - 11 only
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ var ret;
+
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ ret = context.getElementsByTagName( tag || "*" );
+
+ } else if ( typeof context.querySelectorAll !== "undefined" ) {
+ ret = context.querySelectorAll( tag || "*" );
+
+ } else {
+ ret = [];
+ }
+
+ if ( tag === undefined || tag && nodeName( context, tag ) ) {
+ return jQuery.merge( [ context ], ret );
+ }
+
+ return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+ var i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ dataPriv.set(
+ elems[ i ],
+ "globalEval",
+ !refElements || dataPriv.get( refElements[ i ], "globalEval" )
+ );
+ }
+}
+
+
+var rhtml = /<|?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+ var elem, tmp, tag, wrap, attached, j,
+ fragment = context.createDocumentFragment(),
+ nodes = [],
+ i = 0,
+ l = elems.length;
+
+ for ( ; i < l; i++ ) {
+ elem = elems[ i ];
+
+ if ( elem || elem === 0 ) {
+
+ // Add nodes directly
+ if ( toType( elem ) === "object" ) {
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+ // Convert non-html into a text node
+ } else if ( !rhtml.test( elem ) ) {
+ nodes.push( context.createTextNode( elem ) );
+
+ // Convert html into DOM nodes
+ } else {
+ tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+ // Deserialize a standard representation
+ tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+ wrap = wrapMap[ tag ] || wrapMap._default;
+ tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+ // Descend through wrappers to the right content
+ j = wrap[ 0 ];
+ while ( j-- ) {
+ tmp = tmp.lastChild;
+ }
+
+ // Support: Android <=4.0 only, PhantomJS 1 only
+ // push.apply(_, arraylike) throws on ancient WebKit
+ jQuery.merge( nodes, tmp.childNodes );
+
+ // Remember the top-level container
+ tmp = fragment.firstChild;
+
+ // Ensure the created nodes are orphaned (#12392)
+ tmp.textContent = "";
+ }
+ }
+ }
+
+ // Remove wrapper from fragment
+ fragment.textContent = "";
+
+ i = 0;
+ while ( ( elem = nodes[ i++ ] ) ) {
+
+ // Skip elements already in the context collection (trac-4087)
+ if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+ if ( ignored ) {
+ ignored.push( elem );
+ }
+ continue;
+ }
+
+ attached = isAttached( elem );
+
+ // Append to fragment
+ tmp = getAll( fragment.appendChild( elem ), "script" );
+
+ // Preserve script evaluation history
+ if ( attached ) {
+ setGlobalEval( tmp );
+ }
+
+ // Capture executables
+ if ( scripts ) {
+ j = 0;
+ while ( ( elem = tmp[ j++ ] ) ) {
+ if ( rscriptType.test( elem.type || "" ) ) {
+ scripts.push( elem );
+ }
+ }
+ }
+ }
+
+ return fragment;
+}
+
+
+( function() {
+ var fragment = document.createDocumentFragment(),
+ div = fragment.appendChild( document.createElement( "div" ) ),
+ input = document.createElement( "input" );
+
+ // Support: Android 4.0 - 4.3 only
+ // Check state lost if the name is set (#11217)
+ // Support: Windows Web Apps (WWA)
+ // `name` and `type` must use .setAttribute for WWA (#14901)
+ input.setAttribute( "type", "radio" );
+ input.setAttribute( "checked", "checked" );
+ input.setAttribute( "name", "t" );
+
+ div.appendChild( input );
+
+ // Support: Android <=4.1 only
+ // Older WebKit doesn't clone checked state correctly in fragments
+ support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ // Support: IE <=11 only
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
+ div.innerHTML = "";
+ support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+
+
+var
+ rkeyEvent = /^key/,
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+ return true;
+}
+
+function returnFalse() {
+ return false;
+}
+
+// Support: IE <=9 - 11+
+// focus() and blur() are asynchronous, except when they are no-op.
+// So expect focus to be synchronous when the element is already active,
+// and blur to be synchronous when the element is not already active.
+// (focus and blur are always synchronous in other supported browsers,
+// this just defines when we can count on it).
+function expectSync( elem, type ) {
+ return ( elem === safeActiveElement() ) === ( type === "focus" );
+}
+
+// Support: IE <=9 only
+// Accessing document.activeElement can throw unexpectedly
+// https://bugs.jquery.com/ticket/13393
+function safeActiveElement() {
+ try {
+ return document.activeElement;
+ } catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+ var origFn, type;
+
+ // Types can be a map of types/handlers
+ if ( typeof types === "object" ) {
+
+ // ( types-Object, selector, data )
+ if ( typeof selector !== "string" ) {
+
+ // ( types-Object, data )
+ data = data || selector;
+ selector = undefined;
+ }
+ for ( type in types ) {
+ on( elem, type, selector, data, types[ type ], one );
+ }
+ return elem;
+ }
+
+ if ( data == null && fn == null ) {
+
+ // ( types, fn )
+ fn = selector;
+ data = selector = undefined;
+ } else if ( fn == null ) {
+ if ( typeof selector === "string" ) {
+
+ // ( types, selector, fn )
+ fn = data;
+ data = undefined;
+ } else {
+
+ // ( types, data, fn )
+ fn = data;
+ data = selector;
+ selector = undefined;
+ }
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ } else if ( !fn ) {
+ return elem;
+ }
+
+ if ( one === 1 ) {
+ origFn = fn;
+ fn = function( event ) {
+
+ // Can use an empty set, since event contains the info
+ jQuery().off( event );
+ return origFn.apply( this, arguments );
+ };
+
+ // Use same guid so caller can remove using origFn
+ fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+ }
+ return elem.each( function() {
+ jQuery.event.add( this, types, fn, data, selector );
+ } );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+ global: {},
+
+ add: function( elem, types, handler, data, selector ) {
+
+ var handleObjIn, eventHandle, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.get( elem );
+
+ // Don't attach events to noData or text/comment nodes (but allow plain objects)
+ if ( !elemData ) {
+ return;
+ }
+
+ // Caller can pass in an object of custom data in lieu of the handler
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
+ }
+
+ // Ensure that invalid selectors throw exceptions at attach time
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
+ if ( selector ) {
+ jQuery.find.matchesSelector( documentElement, selector );
+ }
+
+ // Make sure that the handler has a unique ID, used to find/remove it later
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure and main handler, if this is the first
+ if ( !( events = elemData.events ) ) {
+ events = elemData.events = {};
+ }
+ if ( !( eventHandle = elemData.handle ) ) {
+ eventHandle = elemData.handle = function( e ) {
+
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+ jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+ };
+ }
+
+ // Handle multiple events separated by a space
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // There *must* be a type, no attaching namespace-only handlers
+ if ( !type ) {
+ continue;
+ }
+
+ // If event changes its type, use the special event handlers for the changed type
+ special = jQuery.event.special[ type ] || {};
+
+ // If selector defined, determine special event api type, otherwise given type
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+
+ // Update special based on newly reset type
+ special = jQuery.event.special[ type ] || {};
+
+ // handleObj is passed to all event handlers
+ handleObj = jQuery.extend( {
+ type: type,
+ origType: origType,
+ data: data,
+ handler: handler,
+ guid: handler.guid,
+ selector: selector,
+ needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+ namespace: namespaces.join( "." )
+ }, handleObjIn );
+
+ // Init the event handler queue if we're the first
+ if ( !( handlers = events[ type ] ) ) {
+ handlers = events[ type ] = [];
+ handlers.delegateCount = 0;
+
+ // Only use addEventListener if the special events handler returns false
+ if ( !special.setup ||
+ special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add to the element's handler list, delegates in front
+ if ( selector ) {
+ handlers.splice( handlers.delegateCount++, 0, handleObj );
+ } else {
+ handlers.push( handleObj );
+ }
+
+ // Keep track of which events have ever been used, for event optimization
+ jQuery.event.global[ type ] = true;
+ }
+
+ },
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, selector, mappedTypes ) {
+
+ var j, origCount, tmp,
+ events, t, handleObj,
+ special, handlers, type, namespaces, origType,
+ elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+ if ( !elemData || !( events = elemData.events ) ) {
+ return;
+ }
+
+ // Once for each type.namespace in types; type may be omitted
+ types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+ t = types.length;
+ while ( t-- ) {
+ tmp = rtypenamespace.exec( types[ t ] ) || [];
+ type = origType = tmp[ 1 ];
+ namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+ // Unbind all events (on this namespace, if provided) for the element
+ if ( !type ) {
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+ }
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+ type = ( selector ? special.delegateType : special.bindType ) || type;
+ handlers = events[ type ] || [];
+ tmp = tmp[ 2 ] &&
+ new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+ // Remove matching events
+ origCount = j = handlers.length;
+ while ( j-- ) {
+ handleObj = handlers[ j ];
+
+ if ( ( mappedTypes || origType === handleObj.origType ) &&
+ ( !handler || handler.guid === handleObj.guid ) &&
+ ( !tmp || tmp.test( handleObj.namespace ) ) &&
+ ( !selector || selector === handleObj.selector ||
+ selector === "**" && handleObj.selector ) ) {
+ handlers.splice( j, 1 );
+
+ if ( handleObj.selector ) {
+ handlers.delegateCount--;
+ }
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+ }
+
+ // Remove generic event handler if we removed something and no more handlers exist
+ // (avoids potential for endless recursion during removal of special event handlers)
+ if ( origCount && !handlers.length ) {
+ if ( !special.teardown ||
+ special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ delete events[ type ];
+ }
+ }
+
+ // Remove data and the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ dataPriv.remove( elem, "handle events" );
+ }
+ },
+
+ dispatch: function( nativeEvent ) {
+
+ // Make a writable jQuery.Event from the native event object
+ var event = jQuery.event.fix( nativeEvent );
+
+ var i, j, ret, matched, handleObj, handlerQueue,
+ args = new Array( arguments.length ),
+ handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+ special = jQuery.event.special[ event.type ] || {};
+
+ // Use the fix-ed jQuery.Event rather than the (read-only) native event
+ args[ 0 ] = event;
+
+ for ( i = 1; i < arguments.length; i++ ) {
+ args[ i ] = arguments[ i ];
+ }
+
+ event.delegateTarget = this;
+
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
+ // Determine handlers
+ handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+ // Run delegates first; they may want to stop propagation beneath us
+ i = 0;
+ while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+ event.currentTarget = matched.elem;
+
+ j = 0;
+ while ( ( handleObj = matched.handlers[ j++ ] ) &&
+ !event.isImmediatePropagationStopped() ) {
+
+ // If the event is namespaced, then each handler is only invoked if it is
+ // specially universal or its namespaces are a superset of the event's.
+ if ( !event.rnamespace || handleObj.namespace === false ||
+ event.rnamespace.test( handleObj.namespace ) ) {
+
+ event.handleObj = handleObj;
+ event.data = handleObj.data;
+
+ ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+ handleObj.handler ).apply( matched.elem, args );
+
+ if ( ret !== undefined ) {
+ if ( ( event.result = ret ) === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+ }
+ }
+
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
+ return event.result;
+ },
+
+ handlers: function( event, handlers ) {
+ var i, handleObj, sel, matchedHandlers, matchedSelectors,
+ handlerQueue = [],
+ delegateCount = handlers.delegateCount,
+ cur = event.target;
+
+ // Find delegate handlers
+ if ( delegateCount &&
+
+ // Support: IE <=9
+ // Black-hole SVG instance trees (trac-13180)
+ cur.nodeType &&
+
+ // Support: Firefox <=42
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+ // Support: IE 11 only
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+ !( event.type === "click" && event.button >= 1 ) ) {
+
+ for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+ // Don't check non-elements (#13208)
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+ matchedHandlers = [];
+ matchedSelectors = {};
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+
+ // Don't conflict with Object.prototype properties (#13203)
+ sel = handleObj.selector + " ";
+
+ if ( matchedSelectors[ sel ] === undefined ) {
+ matchedSelectors[ sel ] = handleObj.needsContext ?
+ jQuery( sel, this ).index( cur ) > -1 :
+ jQuery.find( sel, this, null, [ cur ] ).length;
+ }
+ if ( matchedSelectors[ sel ] ) {
+ matchedHandlers.push( handleObj );
+ }
+ }
+ if ( matchedHandlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+ }
+ }
+ }
+ }
+
+ // Add the remaining (directly-bound) handlers
+ cur = this;
+ if ( delegateCount < handlers.length ) {
+ handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+ }
+
+ return handlerQueue;
+ },
+
+ addProp: function( name, hook ) {
+ Object.defineProperty( jQuery.Event.prototype, name, {
+ enumerable: true,
+ configurable: true,
+
+ get: isFunction( hook ) ?
+ function() {
+ if ( this.originalEvent ) {
+ return hook( this.originalEvent );
+ }
+ } :
+ function() {
+ if ( this.originalEvent ) {
+ return this.originalEvent[ name ];
+ }
+ },
+
+ set: function( value ) {
+ Object.defineProperty( this, name, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: value
+ } );
+ }
+ } );
+ },
+
+ fix: function( originalEvent ) {
+ return originalEvent[ jQuery.expando ] ?
+ originalEvent :
+ new jQuery.Event( originalEvent );
+ },
+
+ special: {
+ load: {
+
+ // Prevent triggered image.load events from bubbling to window.load
+ noBubble: true
+ },
+ click: {
+
+ // Utilize native event to ensure correct state for checkable inputs
+ setup: function( data ) {
+
+ // For mutual compressibility with _default, replace `this` access with a local var.
+ // `|| data` is dead code meant only to preserve the variable through minification.
+ var el = this || data;
+
+ // Claim the first handler
+ if ( rcheckableType.test( el.type ) &&
+ el.click && nodeName( el, "input" ) ) {
+
+ // dataPriv.set( el, "click", ... )
+ leverageNative( el, "click", returnTrue );
+ }
+
+ // Return false to allow normal processing in the caller
+ return false;
+ },
+ trigger: function( data ) {
+
+ // For mutual compressibility with _default, replace `this` access with a local var.
+ // `|| data` is dead code meant only to preserve the variable through minification.
+ var el = this || data;
+
+ // Force setup before triggering a click
+ if ( rcheckableType.test( el.type ) &&
+ el.click && nodeName( el, "input" ) ) {
+
+ leverageNative( el, "click" );
+ }
+
+ // Return non-false to allow normal event-path propagation
+ return true;
+ },
+
+ // For cross-browser consistency, suppress native .click() on links
+ // Also prevent it if we're currently inside a leveraged native-event stack
+ _default: function( event ) {
+ var target = event.target;
+ return rcheckableType.test( target.type ) &&
+ target.click && nodeName( target, "input" ) &&
+ dataPriv.get( target, "click" ) ||
+ nodeName( target, "a" );
+ }
+ },
+
+ beforeunload: {
+ postDispatch: function( event ) {
+
+ // Support: Firefox 20+
+ // Firefox doesn't alert if the returnValue field is not set.
+ if ( event.result !== undefined && event.originalEvent ) {
+ event.originalEvent.returnValue = event.result;
+ }
+ }
+ }
+ }
+};
+
+// Ensure the presence of an event listener that handles manually-triggered
+// synthetic events by interrupting progress until reinvoked in response to
+// *native* events that it fires directly, ensuring that state changes have
+// already occurred before other listeners are invoked.
+function leverageNative( el, type, expectSync ) {
+
+ // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
+ if ( !expectSync ) {
+ if ( dataPriv.get( el, type ) === undefined ) {
+ jQuery.event.add( el, type, returnTrue );
+ }
+ return;
+ }
+
+ // Register the controller as a special universal handler for all event namespaces
+ dataPriv.set( el, type, false );
+ jQuery.event.add( el, type, {
+ namespace: false,
+ handler: function( event ) {
+ var notAsync, result,
+ saved = dataPriv.get( this, type );
+
+ if ( ( event.isTrigger & 1 ) && this[ type ] ) {
+
+ // Interrupt processing of the outer synthetic .trigger()ed event
+ // Saved data should be false in such cases, but might be a leftover capture object
+ // from an async native handler (gh-4350)
+ if ( !saved.length ) {
+
+ // Store arguments for use when handling the inner native event
+ // There will always be at least one argument (an event object), so this array
+ // will not be confused with a leftover capture object.
+ saved = slice.call( arguments );
+ dataPriv.set( this, type, saved );
+
+ // Trigger the native event and capture its result
+ // Support: IE <=9 - 11+
+ // focus() and blur() are asynchronous
+ notAsync = expectSync( this, type );
+ this[ type ]();
+ result = dataPriv.get( this, type );
+ if ( saved !== result || notAsync ) {
+ dataPriv.set( this, type, false );
+ } else {
+ result = {};
+ }
+ if ( saved !== result ) {
+
+ // Cancel the outer synthetic event
+ event.stopImmediatePropagation();
+ event.preventDefault();
+ return result.value;
+ }
+
+ // If this is an inner synthetic event for an event with a bubbling surrogate
+ // (focus or blur), assume that the surrogate already propagated from triggering the
+ // native event and prevent that from happening again here.
+ // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
+ // bubbling surrogate propagates *after* the non-bubbling base), but that seems
+ // less bad than duplication.
+ } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
+ event.stopPropagation();
+ }
+
+ // If this is a native event triggered above, everything is now in order
+ // Fire an inner synthetic event with the original arguments
+ } else if ( saved.length ) {
+
+ // ...and capture the result
+ dataPriv.set( this, type, {
+ value: jQuery.event.trigger(
+
+ // Support: IE <=9 - 11+
+ // Extend with the prototype to reset the above stopImmediatePropagation()
+ jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
+ saved.slice( 1 ),
+ this
+ )
+ } );
+
+ // Abort handling of the native event
+ event.stopImmediatePropagation();
+ }
+ }
+ } );
+}
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+ // This "if" is needed for plain objects
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle );
+ }
+};
+
+jQuery.Event = function( src, props ) {
+
+ // Allow instantiation without the 'new' keyword
+ if ( !( this instanceof jQuery.Event ) ) {
+ return new jQuery.Event( src, props );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = src.defaultPrevented ||
+ src.defaultPrevented === undefined &&
+
+ // Support: Android <=2.3 only
+ src.returnValue === false ?
+ returnTrue :
+ returnFalse;
+
+ // Create target properties
+ // Support: Safari <=6 - 7 only
+ // Target should not be a text node (#504, #13143)
+ this.target = ( src.target && src.target.nodeType === 3 ) ?
+ src.target.parentNode :
+ src.target;
+
+ this.currentTarget = src.currentTarget;
+ this.relatedTarget = src.relatedTarget;
+
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
+ // Create a timestamp if incoming event doesn't have one
+ this.timeStamp = src && src.timeStamp || Date.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ constructor: jQuery.Event,
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse,
+ isSimulated: false,
+
+ preventDefault: function() {
+ var e = this.originalEvent;
+
+ this.isDefaultPrevented = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.preventDefault();
+ }
+ },
+ stopPropagation: function() {
+ var e = this.originalEvent;
+
+ this.isPropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopPropagation();
+ }
+ },
+ stopImmediatePropagation: function() {
+ var e = this.originalEvent;
+
+ this.isImmediatePropagationStopped = returnTrue;
+
+ if ( e && !this.isSimulated ) {
+ e.stopImmediatePropagation();
+ }
+
+ this.stopPropagation();
+ }
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+ altKey: true,
+ bubbles: true,
+ cancelable: true,
+ changedTouches: true,
+ ctrlKey: true,
+ detail: true,
+ eventPhase: true,
+ metaKey: true,
+ pageX: true,
+ pageY: true,
+ shiftKey: true,
+ view: true,
+ "char": true,
+ code: true,
+ charCode: true,
+ key: true,
+ keyCode: true,
+ button: true,
+ buttons: true,
+ clientX: true,
+ clientY: true,
+ offsetX: true,
+ offsetY: true,
+ pointerId: true,
+ pointerType: true,
+ screenX: true,
+ screenY: true,
+ targetTouches: true,
+ toElement: true,
+ touches: true,
+
+ which: function( event ) {
+ var button = event.button;
+
+ // Add which for key events
+ if ( event.which == null && rkeyEvent.test( event.type ) ) {
+ return event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+ if ( button & 1 ) {
+ return 1;
+ }
+
+ if ( button & 2 ) {
+ return 3;
+ }
+
+ if ( button & 4 ) {
+ return 2;
+ }
+
+ return 0;
+ }
+
+ return event.which;
+ }
+}, jQuery.event.addProp );
+
+jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
+ jQuery.event.special[ type ] = {
+
+ // Utilize native event if possible so blur/focus sequence is correct
+ setup: function() {
+
+ // Claim the first handler
+ // dataPriv.set( this, "focus", ... )
+ // dataPriv.set( this, "blur", ... )
+ leverageNative( this, type, expectSync );
+
+ // Return false to allow normal processing in the caller
+ return false;
+ },
+ trigger: function() {
+
+ // Force setup before trigger
+ leverageNative( this, type );
+
+ // Return non-false to allow normal event-path propagation
+ return true;
+ },
+
+ delegateType: delegateType
+ };
+} );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+ mouseenter: "mouseover",
+ mouseleave: "mouseout",
+ pointerenter: "pointerover",
+ pointerleave: "pointerout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ delegateType: fix,
+ bindType: fix,
+
+ handle: function( event ) {
+ var ret,
+ target = this,
+ related = event.relatedTarget,
+ handleObj = event.handleObj;
+
+ // For mouseenter/leave call the handler if related is outside the target.
+ // NB: No relatedTarget if the mouse left/entered the browser window
+ if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+ event.type = handleObj.origType;
+ ret = handleObj.handler.apply( this, arguments );
+ event.type = fix;
+ }
+ return ret;
+ }
+ };
+} );
+
+jQuery.fn.extend( {
+
+ on: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn );
+ },
+ one: function( types, selector, data, fn ) {
+ return on( this, types, selector, data, fn, 1 );
+ },
+ off: function( types, selector, fn ) {
+ var handleObj, type;
+ if ( types && types.preventDefault && types.handleObj ) {
+
+ // ( event ) dispatched jQuery.Event
+ handleObj = types.handleObj;
+ jQuery( types.delegateTarget ).off(
+ handleObj.namespace ?
+ handleObj.origType + "." + handleObj.namespace :
+ handleObj.origType,
+ handleObj.selector,
+ handleObj.handler
+ );
+ return this;
+ }
+ if ( typeof types === "object" ) {
+
+ // ( types-object [, selector] )
+ for ( type in types ) {
+ this.off( type, selector, types[ type ] );
+ }
+ return this;
+ }
+ if ( selector === false || typeof selector === "function" ) {
+
+ // ( types [, fn] )
+ fn = selector;
+ selector = undefined;
+ }
+ if ( fn === false ) {
+ fn = returnFalse;
+ }
+ return this.each( function() {
+ jQuery.event.remove( this, types, fn, selector );
+ } );
+ }
+} );
+
+
+var
+
+ /* eslint-disable max-len */
+
+ // See https://github.com/eslint/eslint/issues/3229
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+ /* eslint-enable */
+
+ // Support: IE <=10 - 11, Edge 12 - 13 only
+ // In IE/Edge using regex groups here causes severe slowdowns.
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
+ rnoInnerhtml = /\r\n";
+
+// inject VBScript
+document.write(IEBinaryToArray_ByteStr_Script);
+
+global.JSZipUtils._getBinaryFromXHR = function (xhr) {
+ var binary = xhr.responseBody;
+ var byteMapping = {};
+ for ( var i = 0; i < 256; i++ ) {
+ for ( var j = 0; j < 256; j++ ) {
+ byteMapping[ String.fromCharCode( i + (j << 8) ) ] =
+ String.fromCharCode(i) + String.fromCharCode(j);
+ }
+ }
+ var rawBytes = IEBinaryToArray_ByteStr(binary);
+ var lastChr = IEBinaryToArray_ByteStr_Last(binary);
+ return rawBytes.replace(/[\s\S]/g, function( match ) {
+ return byteMapping[match];
+ }) + lastChr;
+};
+
+// enforcing Stuk's coding style
+// vim: set shiftwidth=4 softtabstop=4:
+
+},{}]},{},[1])
+;
diff --git a/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js b/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js
new file mode 100644
index 000000000..93d8bc8ef
--- /dev/null
+++ b/apidocs/jquery/jszip-utils/dist/jszip-utils-ie.min.js
@@ -0,0 +1,10 @@
+/*!
+
+JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
+
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g\r\n\r\n";document.write(b),a.JSZipUtils._getBinaryFromXHR=function(a){for(var b=a.responseBody,c={},d=0;256>d;d++)for(var e=0;256>e;e++)c[String.fromCharCode(d+(e<<8))]=String.fromCharCode(d)+String.fromCharCode(e);var f=IEBinaryToArray_ByteStr(b),g=IEBinaryToArray_ByteStr_Last(b);return f.replace(/[\s\S]/g,function(a){return c[a]})+g}},{}]},{},[1]);
diff --git a/apidocs/jquery/jszip-utils/dist/jszip-utils.js b/apidocs/jquery/jszip-utils/dist/jszip-utils.js
new file mode 100644
index 000000000..775895ec9
--- /dev/null
+++ b/apidocs/jquery/jszip-utils/dist/jszip-utils.js
@@ -0,0 +1,118 @@
+/*!
+
+JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
+
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
+
+(c) 2014 Stuart Knightley, David Duponchel
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
+
+*/
+!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g
+
+(c) 2009-2016 Stuart Knightley
+Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.
+
+JSZip uses the library pako released under the MIT license :
+https://github.com/nodeca/pako/blob/master/LICENSE
+*/
+
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;
+ enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;
+
+ output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));
+
+ }
+
+ return output.join("");
+};
+
+// public method for decoding
+exports.decode = function(input) {
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0, resultIndex = 0;
+
+ var dataUrlPrefix = "data:";
+
+ if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {
+ // This is a common error: people give a data url
+ // (data:image/png;base64,iVBOR...) with a {base64: true} and
+ // wonders why things don't work.
+ // We can detect that the string input looks like a data url but we
+ // *can't* be sure it is one: removing everything up to the comma would
+ // be too dangerous.
+ throw new Error("Invalid base64 input, it looks like a data url.");
+ }
+
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ var totalLength = input.length * 3 / 4;
+ if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {
+ totalLength--;
+ }
+ if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {
+ totalLength--;
+ }
+ if (totalLength % 1 !== 0) {
+ // totalLength is not an integer, the length does not match a valid
+ // base64 content. That can happen if:
+ // - the input is not a base64 content
+ // - the input is *almost* a base64 content, with a extra chars at the
+ // beginning or at the end
+ // - the input uses a base64 variant (base64url for example)
+ throw new Error("Invalid base64 input, bad content length.");
+ }
+ var output;
+ if (support.uint8array) {
+ output = new Uint8Array(totalLength|0);
+ } else {
+ output = new Array(totalLength|0);
+ }
+
+ while (i < input.length) {
+
+ enc1 = _keyStr.indexOf(input.charAt(i++));
+ enc2 = _keyStr.indexOf(input.charAt(i++));
+ enc3 = _keyStr.indexOf(input.charAt(i++));
+ enc4 = _keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output[resultIndex++] = chr1;
+
+ if (enc3 !== 64) {
+ output[resultIndex++] = chr2;
+ }
+ if (enc4 !== 64) {
+ output[resultIndex++] = chr3;
+ }
+
+ }
+
+ return output;
+};
+
+},{"./support":30,"./utils":32}],2:[function(require,module,exports){
+'use strict';
+
+var external = require("./external");
+var DataWorker = require('./stream/DataWorker');
+var DataLengthProbe = require('./stream/DataLengthProbe');
+var Crc32Probe = require('./stream/Crc32Probe');
+var DataLengthProbe = require('./stream/DataLengthProbe');
+
+/**
+ * Represent a compressed object, with everything needed to decompress it.
+ * @constructor
+ * @param {number} compressedSize the size of the data compressed.
+ * @param {number} uncompressedSize the size of the data after decompression.
+ * @param {number} crc32 the crc32 of the decompressed file.
+ * @param {object} compression the type of compression, see lib/compressions.js.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.
+ */
+function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {
+ this.compressedSize = compressedSize;
+ this.uncompressedSize = uncompressedSize;
+ this.crc32 = crc32;
+ this.compression = compression;
+ this.compressedContent = data;
+}
+
+CompressedObject.prototype = {
+ /**
+ * Create a worker to get the uncompressed content.
+ * @return {GenericWorker} the worker.
+ */
+ getContentWorker : function () {
+ var worker = new DataWorker(external.Promise.resolve(this.compressedContent))
+ .pipe(this.compression.uncompressWorker())
+ .pipe(new DataLengthProbe("data_length"));
+
+ var that = this;
+ worker.on("end", function () {
+ if(this.streamInfo['data_length'] !== that.uncompressedSize) {
+ throw new Error("Bug : uncompressed data size mismatch");
+ }
+ });
+ return worker;
+ },
+ /**
+ * Create a worker to get the compressed content.
+ * @return {GenericWorker} the worker.
+ */
+ getCompressedWorker : function () {
+ return new DataWorker(external.Promise.resolve(this.compressedContent))
+ .withStreamInfo("compressedSize", this.compressedSize)
+ .withStreamInfo("uncompressedSize", this.uncompressedSize)
+ .withStreamInfo("crc32", this.crc32)
+ .withStreamInfo("compression", this.compression)
+ ;
+ }
+};
+
+/**
+ * Chain the given worker with other workers to compress the content with the
+ * given compresion.
+ * @param {GenericWorker} uncompressedWorker the worker to pipe.
+ * @param {Object} compression the compression object.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return {GenericWorker} the new worker compressing the content.
+ */
+CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {
+ return uncompressedWorker
+ .pipe(new Crc32Probe())
+ .pipe(new DataLengthProbe("uncompressedSize"))
+ .pipe(compression.compressWorker(compressionOptions))
+ .pipe(new DataLengthProbe("compressedSize"))
+ .withStreamInfo("compression", compression);
+};
+
+module.exports = CompressedObject;
+
+},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(require,module,exports){
+'use strict';
+
+var GenericWorker = require("./stream/GenericWorker");
+
+exports.STORE = {
+ magic: "\x00\x00",
+ compressWorker : function (compressionOptions) {
+ return new GenericWorker("STORE compression");
+ },
+ uncompressWorker : function () {
+ return new GenericWorker("STORE decompression");
+ }
+};
+exports.DEFLATE = require('./flate');
+
+},{"./flate":7,"./stream/GenericWorker":28}],4:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+
+/**
+ * The following functions come from pako, from pako/lib/zlib/crc32.js
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Use ordinary array, since untyped makes no boost here
+function makeTable() {
+ var c, table = [];
+
+ for(var n =0; n < 256; n++){
+ c = n;
+ for(var k =0; k < 8; k++){
+ c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
+ }
+ table[n] = c;
+ }
+
+ return table;
+}
+
+// Create table on load. Just 255 signed longs. Not a problem.
+var crcTable = makeTable();
+
+
+function crc32(crc, buf, len, pos) {
+ var t = crcTable, end = pos + len;
+
+ crc = crc ^ (-1);
+
+ for (var i = pos; i < end; i++ ) {
+ crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
+ }
+
+ return (crc ^ (-1)); // >>> 0;
+}
+
+// That's all for the pako functions.
+
+/**
+ * Compute the crc32 of a string.
+ * This is almost the same as the function crc32, but for strings. Using the
+ * same function for the two use cases leads to horrible performances.
+ * @param {Number} crc the starting value of the crc.
+ * @param {String} str the string to use.
+ * @param {Number} len the length of the string.
+ * @param {Number} pos the starting position for the crc32 computation.
+ * @return {Number} the computed crc32.
+ */
+function crc32str(crc, str, len, pos) {
+ var t = crcTable, end = pos + len;
+
+ crc = crc ^ (-1);
+
+ for (var i = pos; i < end; i++ ) {
+ crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];
+ }
+
+ return (crc ^ (-1)); // >>> 0;
+}
+
+module.exports = function crc32wrapper(input, crc) {
+ if (typeof input === "undefined" || !input.length) {
+ return 0;
+ }
+
+ var isArray = utils.getTypeOf(input) !== "string";
+
+ if(isArray) {
+ return crc32(crc|0, input, input.length, 0);
+ } else {
+ return crc32str(crc|0, input, input.length, 0);
+ }
+};
+
+},{"./utils":32}],5:[function(require,module,exports){
+'use strict';
+exports.base64 = false;
+exports.binary = false;
+exports.dir = false;
+exports.createFolders = true;
+exports.date = null;
+exports.compression = null;
+exports.compressionOptions = null;
+exports.comment = null;
+exports.unixPermissions = null;
+exports.dosPermissions = null;
+
+},{}],6:[function(require,module,exports){
+/* global Promise */
+'use strict';
+
+// load the global object first:
+// - it should be better integrated in the system (unhandledRejection in node)
+// - the environment may have a custom Promise implementation (see zone.js)
+var ES6Promise = null;
+if (typeof Promise !== "undefined") {
+ ES6Promise = Promise;
+} else {
+ ES6Promise = require("lie");
+}
+
+/**
+ * Let the user use/change some implementations.
+ */
+module.exports = {
+ Promise: ES6Promise
+};
+
+},{"lie":58}],7:[function(require,module,exports){
+'use strict';
+var USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');
+
+var pako = require("pako");
+var utils = require("./utils");
+var GenericWorker = require("./stream/GenericWorker");
+
+var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array";
+
+exports.magic = "\x08\x00";
+
+/**
+ * Create a worker that uses pako to inflate/deflate.
+ * @constructor
+ * @param {String} action the name of the pako function to call : either "Deflate" or "Inflate".
+ * @param {Object} options the options to use when (de)compressing.
+ */
+function FlateWorker(action, options) {
+ GenericWorker.call(this, "FlateWorker/" + action);
+
+ this._pako = null;
+ this._pakoAction = action;
+ this._pakoOptions = options;
+ // the `meta` object from the last chunk received
+ // this allow this worker to pass around metadata
+ this.meta = {};
+}
+
+utils.inherits(FlateWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+FlateWorker.prototype.processChunk = function (chunk) {
+ this.meta = chunk.meta;
+ if (this._pako === null) {
+ this._createPako();
+ }
+ this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);
+};
+
+/**
+ * @see GenericWorker.flush
+ */
+FlateWorker.prototype.flush = function () {
+ GenericWorker.prototype.flush.call(this);
+ if (this._pako === null) {
+ this._createPako();
+ }
+ this._pako.push([], true);
+};
+/**
+ * @see GenericWorker.cleanUp
+ */
+FlateWorker.prototype.cleanUp = function () {
+ GenericWorker.prototype.cleanUp.call(this);
+ this._pako = null;
+};
+
+/**
+ * Create the _pako object.
+ * TODO: lazy-loading this object isn't the best solution but it's the
+ * quickest. The best solution is to lazy-load the worker list. See also the
+ * issue #446.
+ */
+FlateWorker.prototype._createPako = function () {
+ this._pako = new pako[this._pakoAction]({
+ raw: true,
+ level: this._pakoOptions.level || -1 // default compression
+ });
+ var self = this;
+ this._pako.onData = function(data) {
+ self.push({
+ data : data,
+ meta : self.meta
+ });
+ };
+};
+
+exports.compressWorker = function (compressionOptions) {
+ return new FlateWorker("Deflate", compressionOptions);
+};
+exports.uncompressWorker = function () {
+ return new FlateWorker("Inflate", {});
+};
+
+},{"./stream/GenericWorker":28,"./utils":32,"pako":59}],8:[function(require,module,exports){
+'use strict';
+
+var utils = require('../utils');
+var GenericWorker = require('../stream/GenericWorker');
+var utf8 = require('../utf8');
+var crc32 = require('../crc32');
+var signature = require('../signature');
+
+/**
+ * Transform an integer into a string in hexadecimal.
+ * @private
+ * @param {number} dec the number to convert.
+ * @param {number} bytes the number of bytes to generate.
+ * @returns {string} the result.
+ */
+var decToHex = function(dec, bytes) {
+ var hex = "", i;
+ for (i = 0; i < bytes; i++) {
+ hex += String.fromCharCode(dec & 0xff);
+ dec = dec >>> 8;
+ }
+ return hex;
+};
+
+/**
+ * Generate the UNIX part of the external file attributes.
+ * @param {Object} unixPermissions the unix permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
+ *
+ * TTTTsstrwxrwxrwx0000000000ADVSHR
+ * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
+ * ^^^_________________________ setuid, setgid, sticky
+ * ^^^^^^^^^________________ permissions
+ * ^^^^^^^^^^______ not used ?
+ * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
+ */
+var generateUnixExternalFileAttr = function (unixPermissions, isDir) {
+
+ var result = unixPermissions;
+ if (!unixPermissions) {
+ // I can't use octal values in strict mode, hence the hexa.
+ // 040775 => 0x41fd
+ // 0100664 => 0x81b4
+ result = isDir ? 0x41fd : 0x81b4;
+ }
+ return (result & 0xFFFF) << 16;
+};
+
+/**
+ * Generate the DOS part of the external file attributes.
+ * @param {Object} dosPermissions the dos permissions or null.
+ * @param {Boolean} isDir true if the entry is a directory, false otherwise.
+ * @return {Number} a 32 bit integer.
+ *
+ * Bit 0 Read-Only
+ * Bit 1 Hidden
+ * Bit 2 System
+ * Bit 3 Volume Label
+ * Bit 4 Directory
+ * Bit 5 Archive
+ */
+var generateDosExternalFileAttr = function (dosPermissions, isDir) {
+
+ // the dir flag is already set for compatibility
+ return (dosPermissions || 0) & 0x3F;
+};
+
+/**
+ * Generate the various parts used in the construction of the final zip file.
+ * @param {Object} streamInfo the hash with informations about the compressed file.
+ * @param {Boolean} streamedContent is the content streamed ?
+ * @param {Boolean} streamingEnded is the stream finished ?
+ * @param {number} offset the current offset from the start of the zip file.
+ * @param {String} platform let's pretend we are this platform (change platform dependents fields)
+ * @param {Function} encodeFileName the function to encode the file name / comment.
+ * @return {Object} the zip parts.
+ */
+var generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {
+ var file = streamInfo['file'],
+ compression = streamInfo['compression'],
+ useCustomEncoding = encodeFileName !== utf8.utf8encode,
+ encodedFileName = utils.transformTo("string", encodeFileName(file.name)),
+ utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
+ comment = file.comment,
+ encodedComment = utils.transformTo("string", encodeFileName(comment)),
+ utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
+ useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
+ useUTF8ForComment = utfEncodedComment.length !== comment.length,
+ dosTime,
+ dosDate,
+ extraFields = "",
+ unicodePathExtraField = "",
+ unicodeCommentExtraField = "",
+ dir = file.dir,
+ date = file.date;
+
+
+ var dataInfo = {
+ crc32 : 0,
+ compressedSize : 0,
+ uncompressedSize : 0
+ };
+
+ // if the content is streamed, the sizes/crc32 are only available AFTER
+ // the end of the stream.
+ if (!streamedContent || streamingEnded) {
+ dataInfo.crc32 = streamInfo['crc32'];
+ dataInfo.compressedSize = streamInfo['compressedSize'];
+ dataInfo.uncompressedSize = streamInfo['uncompressedSize'];
+ }
+
+ var bitflag = 0;
+ if (streamedContent) {
+ // Bit 3: the sizes/crc32 are set to zero in the local header.
+ // The correct values are put in the data descriptor immediately
+ // following the compressed data.
+ bitflag |= 0x0008;
+ }
+ if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {
+ // Bit 11: Language encoding flag (EFS).
+ bitflag |= 0x0800;
+ }
+
+
+ var extFileAttr = 0;
+ var versionMadeBy = 0;
+ if (dir) {
+ // dos or unix, we set the dos dir flag
+ extFileAttr |= 0x00010;
+ }
+ if(platform === "UNIX") {
+ versionMadeBy = 0x031E; // UNIX, version 3.0
+ extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
+ } else { // DOS or other, fallback to DOS
+ versionMadeBy = 0x0014; // DOS, version 2.0
+ extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
+ }
+
+ // date
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
+ // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html
+
+ dosTime = date.getUTCHours();
+ dosTime = dosTime << 6;
+ dosTime = dosTime | date.getUTCMinutes();
+ dosTime = dosTime << 5;
+ dosTime = dosTime | date.getUTCSeconds() / 2;
+
+ dosDate = date.getUTCFullYear() - 1980;
+ dosDate = dosDate << 4;
+ dosDate = dosDate | (date.getUTCMonth() + 1);
+ dosDate = dosDate << 5;
+ dosDate = dosDate | date.getUTCDate();
+
+ if (useUTF8ForFileName) {
+ // set the unicode path extra field. unzip needs at least one extra
+ // field to correctly handle unicode path, so using the path is as good
+ // as any other information. This could improve the situation with
+ // other archive managers too.
+ // This field is usually used without the utf8 flag, with a non
+ // unicode path in the header (winrar, winzip). This helps (a bit)
+ // with the messy Windows' default compressed folders feature but
+ // breaks on p7zip which doesn't seek the unicode path extra field.
+ // So for now, UTF-8 everywhere !
+ unicodePathExtraField =
+ // Version
+ decToHex(1, 1) +
+ // NameCRC32
+ decToHex(crc32(encodedFileName), 4) +
+ // UnicodeName
+ utfEncodedFileName;
+
+ extraFields +=
+ // Info-ZIP Unicode Path Extra Field
+ "\x75\x70" +
+ // size
+ decToHex(unicodePathExtraField.length, 2) +
+ // content
+ unicodePathExtraField;
+ }
+
+ if(useUTF8ForComment) {
+
+ unicodeCommentExtraField =
+ // Version
+ decToHex(1, 1) +
+ // CommentCRC32
+ decToHex(crc32(encodedComment), 4) +
+ // UnicodeName
+ utfEncodedComment;
+
+ extraFields +=
+ // Info-ZIP Unicode Path Extra Field
+ "\x75\x63" +
+ // size
+ decToHex(unicodeCommentExtraField.length, 2) +
+ // content
+ unicodeCommentExtraField;
+ }
+
+ var header = "";
+
+ // version needed to extract
+ header += "\x0A\x00";
+ // general purpose bit flag
+ header += decToHex(bitflag, 2);
+ // compression method
+ header += compression.magic;
+ // last mod file time
+ header += decToHex(dosTime, 2);
+ // last mod file date
+ header += decToHex(dosDate, 2);
+ // crc-32
+ header += decToHex(dataInfo.crc32, 4);
+ // compressed size
+ header += decToHex(dataInfo.compressedSize, 4);
+ // uncompressed size
+ header += decToHex(dataInfo.uncompressedSize, 4);
+ // file name length
+ header += decToHex(encodedFileName.length, 2);
+ // extra field length
+ header += decToHex(extraFields.length, 2);
+
+
+ var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;
+
+ var dirRecord = signature.CENTRAL_FILE_HEADER +
+ // version made by (00: DOS)
+ decToHex(versionMadeBy, 2) +
+ // file header (common to file and central directory)
+ header +
+ // file comment length
+ decToHex(encodedComment.length, 2) +
+ // disk number start
+ "\x00\x00" +
+ // internal file attributes TODO
+ "\x00\x00" +
+ // external file attributes
+ decToHex(extFileAttr, 4) +
+ // relative offset of local header
+ decToHex(offset, 4) +
+ // file name
+ encodedFileName +
+ // extra field
+ extraFields +
+ // file comment
+ encodedComment;
+
+ return {
+ fileRecord: fileRecord,
+ dirRecord: dirRecord
+ };
+};
+
+/**
+ * Generate the EOCD record.
+ * @param {Number} entriesCount the number of entries in the zip file.
+ * @param {Number} centralDirLength the length (in bytes) of the central dir.
+ * @param {Number} localDirLength the length (in bytes) of the local dir.
+ * @param {String} comment the zip file comment as a binary string.
+ * @param {Function} encodeFileName the function to encode the comment.
+ * @return {String} the EOCD record.
+ */
+var generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {
+ var dirEnd = "";
+ var encodedComment = utils.transformTo("string", encodeFileName(comment));
+
+ // end of central dir signature
+ dirEnd = signature.CENTRAL_DIRECTORY_END +
+ // number of this disk
+ "\x00\x00" +
+ // number of the disk with the start of the central directory
+ "\x00\x00" +
+ // total number of entries in the central directory on this disk
+ decToHex(entriesCount, 2) +
+ // total number of entries in the central directory
+ decToHex(entriesCount, 2) +
+ // size of the central directory 4 bytes
+ decToHex(centralDirLength, 4) +
+ // offset of start of central directory with respect to the starting disk number
+ decToHex(localDirLength, 4) +
+ // .ZIP file comment length
+ decToHex(encodedComment.length, 2) +
+ // .ZIP file comment
+ encodedComment;
+
+ return dirEnd;
+};
+
+/**
+ * Generate data descriptors for a file entry.
+ * @param {Object} streamInfo the hash generated by a worker, containing informations
+ * on the file entry.
+ * @return {String} the data descriptors.
+ */
+var generateDataDescriptors = function (streamInfo) {
+ var descriptor = "";
+ descriptor = signature.DATA_DESCRIPTOR +
+ // crc-32 4 bytes
+ decToHex(streamInfo['crc32'], 4) +
+ // compressed size 4 bytes
+ decToHex(streamInfo['compressedSize'], 4) +
+ // uncompressed size 4 bytes
+ decToHex(streamInfo['uncompressedSize'], 4);
+
+ return descriptor;
+};
+
+
+/**
+ * A worker to concatenate other workers to create a zip file.
+ * @param {Boolean} streamFiles `true` to stream the content of the files,
+ * `false` to accumulate it.
+ * @param {String} comment the comment to use.
+ * @param {String} platform the platform to use, "UNIX" or "DOS".
+ * @param {Function} encodeFileName the function to encode file names and comments.
+ */
+function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {
+ GenericWorker.call(this, "ZipFileWorker");
+ // The number of bytes written so far. This doesn't count accumulated chunks.
+ this.bytesWritten = 0;
+ // The comment of the zip file
+ this.zipComment = comment;
+ // The platform "generating" the zip file.
+ this.zipPlatform = platform;
+ // the function to encode file names and comments.
+ this.encodeFileName = encodeFileName;
+ // Should we stream the content of the files ?
+ this.streamFiles = streamFiles;
+ // If `streamFiles` is false, we will need to accumulate the content of the
+ // files to calculate sizes / crc32 (and write them *before* the content).
+ // This boolean indicates if we are accumulating chunks (it will change a lot
+ // during the lifetime of this worker).
+ this.accumulate = false;
+ // The buffer receiving chunks when accumulating content.
+ this.contentBuffer = [];
+ // The list of generated directory records.
+ this.dirRecords = [];
+ // The offset (in bytes) from the beginning of the zip file for the current source.
+ this.currentSourceOffset = 0;
+ // The total number of entries in this zip file.
+ this.entriesCount = 0;
+ // the name of the file currently being added, null when handling the end of the zip file.
+ // Used for the emited metadata.
+ this.currentFile = null;
+
+
+
+ this._sources = [];
+}
+utils.inherits(ZipFileWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.push
+ */
+ZipFileWorker.prototype.push = function (chunk) {
+
+ var currentFilePercent = chunk.meta.percent || 0;
+ var entriesCount = this.entriesCount;
+ var remainingFiles = this._sources.length;
+
+ if(this.accumulate) {
+ this.contentBuffer.push(chunk);
+ } else {
+ this.bytesWritten += chunk.data.length;
+
+ GenericWorker.prototype.push.call(this, {
+ data : chunk.data,
+ meta : {
+ currentFile : this.currentFile,
+ percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100
+ }
+ });
+ }
+};
+
+/**
+ * The worker started a new source (an other worker).
+ * @param {Object} streamInfo the streamInfo object from the new source.
+ */
+ZipFileWorker.prototype.openedSource = function (streamInfo) {
+ this.currentSourceOffset = this.bytesWritten;
+ this.currentFile = streamInfo['file'].name;
+
+ var streamedContent = this.streamFiles && !streamInfo['file'].dir;
+
+ // don't stream folders (because they don't have any content)
+ if(streamedContent) {
+ var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
+ this.push({
+ data : record.fileRecord,
+ meta : {percent:0}
+ });
+ } else {
+ // we need to wait for the whole file before pushing anything
+ this.accumulate = true;
+ }
+};
+
+/**
+ * The worker finished a source (an other worker).
+ * @param {Object} streamInfo the streamInfo object from the finished source.
+ */
+ZipFileWorker.prototype.closedSource = function (streamInfo) {
+ this.accumulate = false;
+ var streamedContent = this.streamFiles && !streamInfo['file'].dir;
+ var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
+
+ this.dirRecords.push(record.dirRecord);
+ if(streamedContent) {
+ // after the streamed file, we put data descriptors
+ this.push({
+ data : generateDataDescriptors(streamInfo),
+ meta : {percent:100}
+ });
+ } else {
+ // the content wasn't streamed, we need to push everything now
+ // first the file record, then the content
+ this.push({
+ data : record.fileRecord,
+ meta : {percent:0}
+ });
+ while(this.contentBuffer.length) {
+ this.push(this.contentBuffer.shift());
+ }
+ }
+ this.currentFile = null;
+};
+
+/**
+ * @see GenericWorker.flush
+ */
+ZipFileWorker.prototype.flush = function () {
+
+ var localDirLength = this.bytesWritten;
+ for(var i = 0; i < this.dirRecords.length; i++) {
+ this.push({
+ data : this.dirRecords[i],
+ meta : {percent:100}
+ });
+ }
+ var centralDirLength = this.bytesWritten - localDirLength;
+
+ var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);
+
+ this.push({
+ data : dirEnd,
+ meta : {percent:100}
+ });
+};
+
+/**
+ * Prepare the next source to be read.
+ */
+ZipFileWorker.prototype.prepareNextSource = function () {
+ this.previous = this._sources.shift();
+ this.openedSource(this.previous.streamInfo);
+ if (this.isPaused) {
+ this.previous.pause();
+ } else {
+ this.previous.resume();
+ }
+};
+
+/**
+ * @see GenericWorker.registerPrevious
+ */
+ZipFileWorker.prototype.registerPrevious = function (previous) {
+ this._sources.push(previous);
+ var self = this;
+
+ previous.on('data', function (chunk) {
+ self.processChunk(chunk);
+ });
+ previous.on('end', function () {
+ self.closedSource(self.previous.streamInfo);
+ if(self._sources.length) {
+ self.prepareNextSource();
+ } else {
+ self.end();
+ }
+ });
+ previous.on('error', function (e) {
+ self.error(e);
+ });
+ return this;
+};
+
+/**
+ * @see GenericWorker.resume
+ */
+ZipFileWorker.prototype.resume = function () {
+ if(!GenericWorker.prototype.resume.call(this)) {
+ return false;
+ }
+
+ if (!this.previous && this._sources.length) {
+ this.prepareNextSource();
+ return true;
+ }
+ if (!this.previous && !this._sources.length && !this.generatedError) {
+ this.end();
+ return true;
+ }
+};
+
+/**
+ * @see GenericWorker.error
+ */
+ZipFileWorker.prototype.error = function (e) {
+ var sources = this._sources;
+ if(!GenericWorker.prototype.error.call(this, e)) {
+ return false;
+ }
+ for(var i = 0; i < sources.length; i++) {
+ try {
+ sources[i].error(e);
+ } catch(e) {
+ // the `error` exploded, nothing to do
+ }
+ }
+ return true;
+};
+
+/**
+ * @see GenericWorker.lock
+ */
+ZipFileWorker.prototype.lock = function () {
+ GenericWorker.prototype.lock.call(this);
+ var sources = this._sources;
+ for(var i = 0; i < sources.length; i++) {
+ sources[i].lock();
+ }
+};
+
+module.exports = ZipFileWorker;
+
+},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(require,module,exports){
+'use strict';
+
+var compressions = require('../compressions');
+var ZipFileWorker = require('./ZipFileWorker');
+
+/**
+ * Find the compression to use.
+ * @param {String} fileCompression the compression defined at the file level, if any.
+ * @param {String} zipCompression the compression defined at the load() level.
+ * @return {Object} the compression object to use.
+ */
+var getCompression = function (fileCompression, zipCompression) {
+
+ var compressionName = fileCompression || zipCompression;
+ var compression = compressions[compressionName];
+ if (!compression) {
+ throw new Error(compressionName + " is not a valid compression method !");
+ }
+ return compression;
+};
+
+/**
+ * Create a worker to generate a zip file.
+ * @param {JSZip} zip the JSZip instance at the right root level.
+ * @param {Object} options to generate the zip file.
+ * @param {String} comment the comment to use.
+ */
+exports.generateWorker = function (zip, options, comment) {
+
+ var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);
+ var entriesCount = 0;
+ try {
+
+ zip.forEach(function (relativePath, file) {
+ entriesCount++;
+ var compression = getCompression(file.options.compression, options.compression);
+ var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
+ var dir = file.dir, date = file.date;
+
+ file._compressWorker(compression, compressionOptions)
+ .withStreamInfo("file", {
+ name : relativePath,
+ dir : dir,
+ date : date,
+ comment : file.comment || "",
+ unixPermissions : file.unixPermissions,
+ dosPermissions : file.dosPermissions
+ })
+ .pipe(zipFileWorker);
+ });
+ zipFileWorker.entriesCount = entriesCount;
+ } catch (e) {
+ zipFileWorker.error(e);
+ }
+
+ return zipFileWorker;
+};
+
+},{"../compressions":3,"./ZipFileWorker":8}],10:[function(require,module,exports){
+'use strict';
+
+/**
+ * Representation a of zip file in js
+ * @constructor
+ */
+function JSZip() {
+ // if this constructor is used without `new`, it adds `new` before itself:
+ if(!(this instanceof JSZip)) {
+ return new JSZip();
+ }
+
+ if(arguments.length) {
+ throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
+ }
+
+ // object containing the files :
+ // {
+ // "folder/" : {...},
+ // "folder/data.txt" : {...}
+ // }
+ this.files = {};
+
+ this.comment = null;
+
+ // Where we are in the hierarchy
+ this.root = "";
+ this.clone = function() {
+ var newObj = new JSZip();
+ for (var i in this) {
+ if (typeof this[i] !== "function") {
+ newObj[i] = this[i];
+ }
+ }
+ return newObj;
+ };
+}
+JSZip.prototype = require('./object');
+JSZip.prototype.loadAsync = require('./load');
+JSZip.support = require('./support');
+JSZip.defaults = require('./defaults');
+
+// TODO find a better way to handle this version,
+// a require('package.json').version doesn't work with webpack, see #327
+JSZip.version = "3.1.5";
+
+JSZip.loadAsync = function (content, options) {
+ return new JSZip().loadAsync(content, options);
+};
+
+JSZip.external = require("./external");
+module.exports = JSZip;
+
+},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(require,module,exports){
+'use strict';
+var utils = require('./utils');
+var external = require("./external");
+var utf8 = require('./utf8');
+var utils = require('./utils');
+var ZipEntries = require('./zipEntries');
+var Crc32Probe = require('./stream/Crc32Probe');
+var nodejsUtils = require("./nodejsUtils");
+
+/**
+ * Check the CRC32 of an entry.
+ * @param {ZipEntry} zipEntry the zip entry to check.
+ * @return {Promise} the result.
+ */
+function checkEntryCRC32(zipEntry) {
+ return new external.Promise(function (resolve, reject) {
+ var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());
+ worker.on("error", function (e) {
+ reject(e);
+ })
+ .on("end", function () {
+ if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {
+ reject(new Error("Corrupted zip : CRC32 mismatch"));
+ } else {
+ resolve();
+ }
+ })
+ .resume();
+ });
+}
+
+module.exports = function(data, options) {
+ var zip = this;
+ options = utils.extend(options || {}, {
+ base64: false,
+ checkCRC32: false,
+ optimizedBinaryString: false,
+ createFolders: false,
+ decodeFileName: utf8.utf8decode
+ });
+
+ if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
+ return external.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."));
+ }
+
+ return utils.prepareContent("the loaded zip file", data, true, options.optimizedBinaryString, options.base64)
+ .then(function(data) {
+ var zipEntries = new ZipEntries(options);
+ zipEntries.load(data);
+ return zipEntries;
+ }).then(function checkCRC32(zipEntries) {
+ var promises = [external.Promise.resolve(zipEntries)];
+ var files = zipEntries.files;
+ if (options.checkCRC32) {
+ for (var i = 0; i < files.length; i++) {
+ promises.push(checkEntryCRC32(files[i]));
+ }
+ }
+ return external.Promise.all(promises);
+ }).then(function addFiles(results) {
+ var zipEntries = results.shift();
+ var files = zipEntries.files;
+ for (var i = 0; i < files.length; i++) {
+ var input = files[i];
+ zip.file(input.fileNameStr, input.decompressed, {
+ binary: true,
+ optimizedBinaryString: true,
+ date: input.date,
+ dir: input.dir,
+ comment : input.fileCommentStr.length ? input.fileCommentStr : null,
+ unixPermissions : input.unixPermissions,
+ dosPermissions : input.dosPermissions,
+ createFolders: options.createFolders
+ });
+ }
+ if (zipEntries.zipComment.length) {
+ zip.comment = zipEntries.zipComment;
+ }
+
+ return zip;
+ });
+};
+
+},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(require,module,exports){
+"use strict";
+
+var utils = require('../utils');
+var GenericWorker = require('../stream/GenericWorker');
+
+/**
+ * A worker that use a nodejs stream as source.
+ * @constructor
+ * @param {String} filename the name of the file entry for this stream.
+ * @param {Readable} stream the nodejs stream.
+ */
+function NodejsStreamInputAdapter(filename, stream) {
+ GenericWorker.call(this, "Nodejs stream input adapter for " + filename);
+ this._upstreamEnded = false;
+ this._bindStream(stream);
+}
+
+utils.inherits(NodejsStreamInputAdapter, GenericWorker);
+
+/**
+ * Prepare the stream and bind the callbacks on it.
+ * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.
+ * @param {Stream} stream the nodejs stream to use.
+ */
+NodejsStreamInputAdapter.prototype._bindStream = function (stream) {
+ var self = this;
+ this._stream = stream;
+ stream.pause();
+ stream
+ .on("data", function (chunk) {
+ self.push({
+ data: chunk,
+ meta : {
+ percent : 0
+ }
+ });
+ })
+ .on("error", function (e) {
+ if(self.isPaused) {
+ this.generatedError = e;
+ } else {
+ self.error(e);
+ }
+ })
+ .on("end", function () {
+ if(self.isPaused) {
+ self._upstreamEnded = true;
+ } else {
+ self.end();
+ }
+ });
+};
+NodejsStreamInputAdapter.prototype.pause = function () {
+ if(!GenericWorker.prototype.pause.call(this)) {
+ return false;
+ }
+ this._stream.pause();
+ return true;
+};
+NodejsStreamInputAdapter.prototype.resume = function () {
+ if(!GenericWorker.prototype.resume.call(this)) {
+ return false;
+ }
+
+ if(this._upstreamEnded) {
+ this.end();
+ } else {
+ this._stream.resume();
+ }
+
+ return true;
+};
+
+module.exports = NodejsStreamInputAdapter;
+
+},{"../stream/GenericWorker":28,"../utils":32}],13:[function(require,module,exports){
+'use strict';
+
+var Readable = require('readable-stream').Readable;
+
+var utils = require('../utils');
+utils.inherits(NodejsStreamOutputAdapter, Readable);
+
+/**
+* A nodejs stream using a worker as source.
+* @see the SourceWrapper in http://nodejs.org/api/stream.html
+* @constructor
+* @param {StreamHelper} helper the helper wrapping the worker
+* @param {Object} options the nodejs stream options
+* @param {Function} updateCb the update callback.
+*/
+function NodejsStreamOutputAdapter(helper, options, updateCb) {
+ Readable.call(this, options);
+ this._helper = helper;
+
+ var self = this;
+ helper.on("data", function (data, meta) {
+ if (!self.push(data)) {
+ self._helper.pause();
+ }
+ if(updateCb) {
+ updateCb(meta);
+ }
+ })
+ .on("error", function(e) {
+ self.emit('error', e);
+ })
+ .on("end", function () {
+ self.push(null);
+ });
+}
+
+
+NodejsStreamOutputAdapter.prototype._read = function() {
+ this._helper.resume();
+};
+
+module.exports = NodejsStreamOutputAdapter;
+
+},{"../utils":32,"readable-stream":16}],14:[function(require,module,exports){
+'use strict';
+
+module.exports = {
+ /**
+ * True if this is running in Nodejs, will be undefined in a browser.
+ * In a browser, browserify won't include this file and the whole module
+ * will be resolved an empty object.
+ */
+ isNode : typeof Buffer !== "undefined",
+ /**
+ * Create a new nodejs Buffer from an existing content.
+ * @param {Object} data the data to pass to the constructor.
+ * @param {String} encoding the encoding to use.
+ * @return {Buffer} a new Buffer.
+ */
+ newBufferFrom: function(data, encoding) {
+ // XXX We can't use `Buffer.from` which comes from `Uint8Array.from`
+ // in nodejs v4 (< v.4.5). It's not the expected implementation (and
+ // has a different signature).
+ // see https://github.com/nodejs/node/issues/8053
+ // A condition on nodejs' version won't solve the issue as we don't
+ // control the Buffer polyfills that may or may not be used.
+ return new Buffer(data, encoding);
+ },
+ /**
+ * Create a new nodejs Buffer with the specified size.
+ * @param {Integer} size the size of the buffer.
+ * @return {Buffer} a new Buffer.
+ */
+ allocBuffer: function (size) {
+ if (Buffer.alloc) {
+ return Buffer.alloc(size);
+ } else {
+ return new Buffer(size);
+ }
+ },
+ /**
+ * Find out if an object is a Buffer.
+ * @param {Object} b the object to test.
+ * @return {Boolean} true if the object is a Buffer, false otherwise.
+ */
+ isBuffer : function(b){
+ return Buffer.isBuffer(b);
+ },
+
+ isStream : function (obj) {
+ return obj &&
+ typeof obj.on === "function" &&
+ typeof obj.pause === "function" &&
+ typeof obj.resume === "function";
+ }
+};
+
+},{}],15:[function(require,module,exports){
+'use strict';
+var utf8 = require('./utf8');
+var utils = require('./utils');
+var GenericWorker = require('./stream/GenericWorker');
+var StreamHelper = require('./stream/StreamHelper');
+var defaults = require('./defaults');
+var CompressedObject = require('./compressedObject');
+var ZipObject = require('./zipObject');
+var generate = require("./generate");
+var nodejsUtils = require("./nodejsUtils");
+var NodejsStreamInputAdapter = require("./nodejs/NodejsStreamInputAdapter");
+
+
+/**
+ * Add a file in the current folder.
+ * @private
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
+ * @param {Object} originalOptions the options of the file
+ * @return {Object} the new file.
+ */
+var fileAdd = function(name, data, originalOptions) {
+ // be sure sub folders exist
+ var dataType = utils.getTypeOf(data),
+ parent;
+
+
+ /*
+ * Correct options.
+ */
+
+ var o = utils.extend(originalOptions || {}, defaults);
+ o.date = o.date || new Date();
+ if (o.compression !== null) {
+ o.compression = o.compression.toUpperCase();
+ }
+
+ if (typeof o.unixPermissions === "string") {
+ o.unixPermissions = parseInt(o.unixPermissions, 8);
+ }
+
+ // UNX_IFDIR 0040000 see zipinfo.c
+ if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
+ o.dir = true;
+ }
+ // Bit 4 Directory
+ if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
+ o.dir = true;
+ }
+
+ if (o.dir) {
+ name = forceTrailingSlash(name);
+ }
+ if (o.createFolders && (parent = parentFolder(name))) {
+ folderAdd.call(this, parent, true);
+ }
+
+ var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false;
+ if (!originalOptions || typeof originalOptions.binary === "undefined") {
+ o.binary = !isUnicodeString;
+ }
+
+
+ var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;
+
+ if (isCompressedEmpty || o.dir || !data || data.length === 0) {
+ o.base64 = false;
+ o.binary = true;
+ data = "";
+ o.compression = "STORE";
+ dataType = "string";
+ }
+
+ /*
+ * Convert content to fit.
+ */
+
+ var zipObjectContent = null;
+ if (data instanceof CompressedObject || data instanceof GenericWorker) {
+ zipObjectContent = data;
+ } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
+ zipObjectContent = new NodejsStreamInputAdapter(name, data);
+ } else {
+ zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);
+ }
+
+ var object = new ZipObject(name, zipObjectContent, o);
+ this.files[name] = object;
+ /*
+ TODO: we can't throw an exception because we have async promises
+ (we can have a promise of a Date() for example) but returning a
+ promise is useless because file(name, data) returns the JSZip
+ object for chaining. Should we break that to allow the user
+ to catch the error ?
+
+ return external.Promise.resolve(zipObjectContent)
+ .then(function () {
+ return object;
+ });
+ */
+};
+
+/**
+ * Find the parent folder of the path.
+ * @private
+ * @param {string} path the path to use
+ * @return {string} the parent folder, or ""
+ */
+var parentFolder = function (path) {
+ if (path.slice(-1) === '/') {
+ path = path.substring(0, path.length - 1);
+ }
+ var lastSlash = path.lastIndexOf('/');
+ return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
+};
+
+/**
+ * Returns the path with a slash at the end.
+ * @private
+ * @param {String} path the path to check.
+ * @return {String} the path with a trailing slash.
+ */
+var forceTrailingSlash = function(path) {
+ // Check the name ends with a /
+ if (path.slice(-1) !== "/") {
+ path += "/"; // IE doesn't like substr(-1)
+ }
+ return path;
+};
+
+/**
+ * Add a (sub) folder in the current folder.
+ * @private
+ * @param {string} name the folder's name
+ * @param {boolean=} [createFolders] If true, automatically create sub
+ * folders. Defaults to false.
+ * @return {Object} the new folder.
+ */
+var folderAdd = function(name, createFolders) {
+ createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;
+
+ name = forceTrailingSlash(name);
+
+ // Does this folder already exist?
+ if (!this.files[name]) {
+ fileAdd.call(this, name, null, {
+ dir: true,
+ createFolders: createFolders
+ });
+ }
+ return this.files[name];
+};
+
+/**
+* Cross-window, cross-Node-context regular expression detection
+* @param {Object} object Anything
+* @return {Boolean} true if the object is a regular expression,
+* false otherwise
+*/
+function isRegExp(object) {
+ return Object.prototype.toString.call(object) === "[object RegExp]";
+}
+
+// return the actual prototype of JSZip
+var out = {
+ /**
+ * @see loadAsync
+ */
+ load: function() {
+ throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
+ },
+
+
+ /**
+ * Call a callback function for each entry at this folder level.
+ * @param {Function} cb the callback function:
+ * function (relativePath, file) {...}
+ * It takes 2 arguments : the relative path and the file.
+ */
+ forEach: function(cb) {
+ var filename, relativePath, file;
+ for (filename in this.files) {
+ if (!this.files.hasOwnProperty(filename)) {
+ continue;
+ }
+ file = this.files[filename];
+ relativePath = filename.slice(this.root.length, filename.length);
+ if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root
+ cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...
+ }
+ }
+ },
+
+ /**
+ * Filter nested files/folders with the specified function.
+ * @param {Function} search the predicate to use :
+ * function (relativePath, file) {...}
+ * It takes 2 arguments : the relative path and the file.
+ * @return {Array} An array of matching elements.
+ */
+ filter: function(search) {
+ var result = [];
+ this.forEach(function (relativePath, entry) {
+ if (search(relativePath, entry)) { // the file matches the function
+ result.push(entry);
+ }
+
+ });
+ return result;
+ },
+
+ /**
+ * Add a file to the zip file, or search a file.
+ * @param {string|RegExp} name The name of the file to add (if data is defined),
+ * the name of the file to find (if no data) or a regex to match files.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded
+ * @param {Object} o File options
+ * @return {JSZip|Object|Array} this JSZip object (when adding a file),
+ * a file (when searching by string) or an array of files (when searching by regex).
+ */
+ file: function(name, data, o) {
+ if (arguments.length === 1) {
+ if (isRegExp(name)) {
+ var regexp = name;
+ return this.filter(function(relativePath, file) {
+ return !file.dir && regexp.test(relativePath);
+ });
+ }
+ else { // text
+ var obj = this.files[this.root + name];
+ if (obj && !obj.dir) {
+ return obj;
+ } else {
+ return null;
+ }
+ }
+ }
+ else { // more than one argument : we have data !
+ name = this.root + name;
+ fileAdd.call(this, name, data, o);
+ }
+ return this;
+ },
+
+ /**
+ * Add a directory to the zip file, or search.
+ * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.
+ * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.
+ */
+ folder: function(arg) {
+ if (!arg) {
+ return this;
+ }
+
+ if (isRegExp(arg)) {
+ return this.filter(function(relativePath, file) {
+ return file.dir && arg.test(relativePath);
+ });
+ }
+
+ // else, name is a new folder
+ var name = this.root + arg;
+ var newFolder = folderAdd.call(this, name);
+
+ // Allow chaining by returning a new object with this folder as the root
+ var ret = this.clone();
+ ret.root = newFolder.name;
+ return ret;
+ },
+
+ /**
+ * Delete a file, or a directory and all sub-files, from the zip
+ * @param {string} name the name of the file to delete
+ * @return {JSZip} this JSZip object
+ */
+ remove: function(name) {
+ name = this.root + name;
+ var file = this.files[name];
+ if (!file) {
+ // Look for any folders
+ if (name.slice(-1) !== "/") {
+ name += "/";
+ }
+ file = this.files[name];
+ }
+
+ if (file && !file.dir) {
+ // file
+ delete this.files[name];
+ } else {
+ // maybe a folder, delete recursively
+ var kids = this.filter(function(relativePath, file) {
+ return file.name.slice(0, name.length) === name;
+ });
+ for (var i = 0; i < kids.length; i++) {
+ delete this.files[kids[i].name];
+ }
+ }
+
+ return this;
+ },
+
+ /**
+ * Generate the complete zip file
+ * @param {Object} options the options to generate the zip file :
+ * - compression, "STORE" by default.
+ * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+ * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file
+ */
+ generate: function(options) {
+ throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
+ },
+
+ /**
+ * Generate the complete zip file as an internal stream.
+ * @param {Object} options the options to generate the zip file :
+ * - compression, "STORE" by default.
+ * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
+ * @return {StreamHelper} the streamed zip file.
+ */
+ generateInternalStream: function(options) {
+ var worker, opts = {};
+ try {
+ opts = utils.extend(options || {}, {
+ streamFiles: false,
+ compression: "STORE",
+ compressionOptions : null,
+ type: "",
+ platform: "DOS",
+ comment: null,
+ mimeType: 'application/zip',
+ encodeFileName: utf8.utf8encode
+ });
+
+ opts.type = opts.type.toLowerCase();
+ opts.compression = opts.compression.toUpperCase();
+
+ // "binarystring" is prefered but the internals use "string".
+ if(opts.type === "binarystring") {
+ opts.type = "string";
+ }
+
+ if (!opts.type) {
+ throw new Error("No output type specified.");
+ }
+
+ utils.checkSupport(opts.type);
+
+ // accept nodejs `process.platform`
+ if(
+ opts.platform === 'darwin' ||
+ opts.platform === 'freebsd' ||
+ opts.platform === 'linux' ||
+ opts.platform === 'sunos'
+ ) {
+ opts.platform = "UNIX";
+ }
+ if (opts.platform === 'win32') {
+ opts.platform = "DOS";
+ }
+
+ var comment = opts.comment || this.comment || "";
+ worker = generate.generateWorker(this, opts, comment);
+ } catch (e) {
+ worker = new GenericWorker("error");
+ worker.error(e);
+ }
+ return new StreamHelper(worker, opts.type || "string", opts.mimeType);
+ },
+ /**
+ * Generate the complete zip file asynchronously.
+ * @see generateInternalStream
+ */
+ generateAsync: function(options, onUpdate) {
+ return this.generateInternalStream(options).accumulate(onUpdate);
+ },
+ /**
+ * Generate the complete zip file asynchronously.
+ * @see generateInternalStream
+ */
+ generateNodeStream: function(options, onUpdate) {
+ options = options || {};
+ if (!options.type) {
+ options.type = "nodebuffer";
+ }
+ return this.generateInternalStream(options).toNodejsStream(onUpdate);
+ }
+};
+module.exports = out;
+
+},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(require,module,exports){
+/*
+ * This file is used by module bundlers (browserify/webpack/etc) when
+ * including a stream implementation. We use "readable-stream" to get a
+ * consistent behavior between nodejs versions but bundlers often have a shim
+ * for "stream". Using this shim greatly improve the compatibility and greatly
+ * reduce the final size of the bundle (only one stream implementation, not
+ * two).
+ */
+module.exports = require("stream");
+
+},{"stream":undefined}],17:[function(require,module,exports){
+'use strict';
+var DataReader = require('./DataReader');
+var utils = require('../utils');
+
+function ArrayReader(data) {
+ DataReader.call(this, data);
+ for(var i = 0; i < this.data.length; i++) {
+ data[i] = data[i] & 0xFF;
+ }
+}
+utils.inherits(ArrayReader, DataReader);
+/**
+ * @see DataReader.byteAt
+ */
+ArrayReader.prototype.byteAt = function(i) {
+ return this.data[this.zero + i];
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+ArrayReader.prototype.lastIndexOfSignature = function(sig) {
+ var sig0 = sig.charCodeAt(0),
+ sig1 = sig.charCodeAt(1),
+ sig2 = sig.charCodeAt(2),
+ sig3 = sig.charCodeAt(3);
+ for (var i = this.length - 4; i >= 0; --i) {
+ if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
+ return i - this.zero;
+ }
+ }
+
+ return -1;
+};
+/**
+ * @see DataReader.readAndCheckSignature
+ */
+ArrayReader.prototype.readAndCheckSignature = function (sig) {
+ var sig0 = sig.charCodeAt(0),
+ sig1 = sig.charCodeAt(1),
+ sig2 = sig.charCodeAt(2),
+ sig3 = sig.charCodeAt(3),
+ data = this.readData(4);
+ return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];
+};
+/**
+ * @see DataReader.readData
+ */
+ArrayReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ if(size === 0) {
+ return [];
+ }
+ var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = ArrayReader;
+
+},{"../utils":32,"./DataReader":18}],18:[function(require,module,exports){
+'use strict';
+var utils = require('../utils');
+
+function DataReader(data) {
+ this.data = data; // type : see implementation
+ this.length = data.length;
+ this.index = 0;
+ this.zero = 0;
+}
+DataReader.prototype = {
+ /**
+ * Check that the offset will not go too far.
+ * @param {string} offset the additional offset to check.
+ * @throws {Error} an Error if the offset is out of bounds.
+ */
+ checkOffset: function(offset) {
+ this.checkIndex(this.index + offset);
+ },
+ /**
+ * Check that the specified index will not be too far.
+ * @param {string} newIndex the index to check.
+ * @throws {Error} an Error if the index is out of bounds.
+ */
+ checkIndex: function(newIndex) {
+ if (this.length < this.zero + newIndex || newIndex < 0) {
+ throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
+ }
+ },
+ /**
+ * Change the index.
+ * @param {number} newIndex The new index.
+ * @throws {Error} if the new index is out of the data.
+ */
+ setIndex: function(newIndex) {
+ this.checkIndex(newIndex);
+ this.index = newIndex;
+ },
+ /**
+ * Skip the next n bytes.
+ * @param {number} n the number of bytes to skip.
+ * @throws {Error} if the new index is out of the data.
+ */
+ skip: function(n) {
+ this.setIndex(this.index + n);
+ },
+ /**
+ * Get the byte at the specified index.
+ * @param {number} i the index to use.
+ * @return {number} a byte.
+ */
+ byteAt: function(i) {
+ // see implementations
+ },
+ /**
+ * Get the next number with a given byte size.
+ * @param {number} size the number of bytes to read.
+ * @return {number} the corresponding number.
+ */
+ readInt: function(size) {
+ var result = 0,
+ i;
+ this.checkOffset(size);
+ for (i = this.index + size - 1; i >= this.index; i--) {
+ result = (result << 8) + this.byteAt(i);
+ }
+ this.index += size;
+ return result;
+ },
+ /**
+ * Get the next string with a given byte size.
+ * @param {number} size the number of bytes to read.
+ * @return {string} the corresponding string.
+ */
+ readString: function(size) {
+ return utils.transformTo("string", this.readData(size));
+ },
+ /**
+ * Get raw data without conversion, bytes.
+ * @param {number} size the number of bytes to read.
+ * @return {Object} the raw data, implementation specific.
+ */
+ readData: function(size) {
+ // see implementations
+ },
+ /**
+ * Find the last occurence of a zip signature (4 bytes).
+ * @param {string} sig the signature to find.
+ * @return {number} the index of the last occurence, -1 if not found.
+ */
+ lastIndexOfSignature: function(sig) {
+ // see implementations
+ },
+ /**
+ * Read the signature (4 bytes) at the current position and compare it with sig.
+ * @param {string} sig the expected signature
+ * @return {boolean} true if the signature matches, false otherwise.
+ */
+ readAndCheckSignature: function(sig) {
+ // see implementations
+ },
+ /**
+ * Get the next date.
+ * @return {Date} the date.
+ */
+ readDate: function() {
+ var dostime = this.readInt(4);
+ return new Date(Date.UTC(
+ ((dostime >> 25) & 0x7f) + 1980, // year
+ ((dostime >> 21) & 0x0f) - 1, // month
+ (dostime >> 16) & 0x1f, // day
+ (dostime >> 11) & 0x1f, // hour
+ (dostime >> 5) & 0x3f, // minute
+ (dostime & 0x1f) << 1)); // second
+ }
+};
+module.exports = DataReader;
+
+},{"../utils":32}],19:[function(require,module,exports){
+'use strict';
+var Uint8ArrayReader = require('./Uint8ArrayReader');
+var utils = require('../utils');
+
+function NodeBufferReader(data) {
+ Uint8ArrayReader.call(this, data);
+}
+utils.inherits(NodeBufferReader, Uint8ArrayReader);
+
+/**
+ * @see DataReader.readData
+ */
+NodeBufferReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = NodeBufferReader;
+
+},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(require,module,exports){
+'use strict';
+var DataReader = require('./DataReader');
+var utils = require('../utils');
+
+function StringReader(data) {
+ DataReader.call(this, data);
+}
+utils.inherits(StringReader, DataReader);
+/**
+ * @see DataReader.byteAt
+ */
+StringReader.prototype.byteAt = function(i) {
+ return this.data.charCodeAt(this.zero + i);
+};
+/**
+ * @see DataReader.lastIndexOfSignature
+ */
+StringReader.prototype.lastIndexOfSignature = function(sig) {
+ return this.data.lastIndexOf(sig) - this.zero;
+};
+/**
+ * @see DataReader.readAndCheckSignature
+ */
+StringReader.prototype.readAndCheckSignature = function (sig) {
+ var data = this.readData(4);
+ return sig === data;
+};
+/**
+ * @see DataReader.readData
+ */
+StringReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ // this will work because the constructor applied the "& 0xff" mask.
+ var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = StringReader;
+
+},{"../utils":32,"./DataReader":18}],21:[function(require,module,exports){
+'use strict';
+var ArrayReader = require('./ArrayReader');
+var utils = require('../utils');
+
+function Uint8ArrayReader(data) {
+ ArrayReader.call(this, data);
+}
+utils.inherits(Uint8ArrayReader, ArrayReader);
+/**
+ * @see DataReader.readData
+ */
+Uint8ArrayReader.prototype.readData = function(size) {
+ this.checkOffset(size);
+ if(size === 0) {
+ // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
+ return new Uint8Array(0);
+ }
+ var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);
+ this.index += size;
+ return result;
+};
+module.exports = Uint8ArrayReader;
+
+},{"../utils":32,"./ArrayReader":17}],22:[function(require,module,exports){
+'use strict';
+
+var utils = require('../utils');
+var support = require('../support');
+var ArrayReader = require('./ArrayReader');
+var StringReader = require('./StringReader');
+var NodeBufferReader = require('./NodeBufferReader');
+var Uint8ArrayReader = require('./Uint8ArrayReader');
+
+/**
+ * Create a reader adapted to the data.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.
+ * @return {DataReader} the data reader.
+ */
+module.exports = function (data) {
+ var type = utils.getTypeOf(data);
+ utils.checkSupport(type);
+ if (type === "string" && !support.uint8array) {
+ return new StringReader(data);
+ }
+ if (type === "nodebuffer") {
+ return new NodeBufferReader(data);
+ }
+ if (support.uint8array) {
+ return new Uint8ArrayReader(utils.transformTo("uint8array", data));
+ }
+ return new ArrayReader(utils.transformTo("array", data));
+};
+
+},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(require,module,exports){
+'use strict';
+exports.LOCAL_FILE_HEADER = "PK\x03\x04";
+exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
+exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
+exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
+exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
+exports.DATA_DESCRIPTOR = "PK\x07\x08";
+
+},{}],24:[function(require,module,exports){
+'use strict';
+
+var GenericWorker = require('./GenericWorker');
+var utils = require('../utils');
+
+/**
+ * A worker which convert chunks to a specified type.
+ * @constructor
+ * @param {String} destType the destination type.
+ */
+function ConvertWorker(destType) {
+ GenericWorker.call(this, "ConvertWorker to " + destType);
+ this.destType = destType;
+}
+utils.inherits(ConvertWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+ConvertWorker.prototype.processChunk = function (chunk) {
+ this.push({
+ data : utils.transformTo(this.destType, chunk.data),
+ meta : chunk.meta
+ });
+};
+module.exports = ConvertWorker;
+
+},{"../utils":32,"./GenericWorker":28}],25:[function(require,module,exports){
+'use strict';
+
+var GenericWorker = require('./GenericWorker');
+var crc32 = require('../crc32');
+var utils = require('../utils');
+
+/**
+ * A worker which calculate the crc32 of the data flowing through.
+ * @constructor
+ */
+function Crc32Probe() {
+ GenericWorker.call(this, "Crc32Probe");
+ this.withStreamInfo("crc32", 0);
+}
+utils.inherits(Crc32Probe, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+Crc32Probe.prototype.processChunk = function (chunk) {
+ this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);
+ this.push(chunk);
+};
+module.exports = Crc32Probe;
+
+},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(require,module,exports){
+'use strict';
+
+var utils = require('../utils');
+var GenericWorker = require('./GenericWorker');
+
+/**
+ * A worker which calculate the total length of the data flowing through.
+ * @constructor
+ * @param {String} propName the name used to expose the length
+ */
+function DataLengthProbe(propName) {
+ GenericWorker.call(this, "DataLengthProbe for " + propName);
+ this.propName = propName;
+ this.withStreamInfo(propName, 0);
+}
+utils.inherits(DataLengthProbe, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+DataLengthProbe.prototype.processChunk = function (chunk) {
+ if(chunk) {
+ var length = this.streamInfo[this.propName] || 0;
+ this.streamInfo[this.propName] = length + chunk.data.length;
+ }
+ GenericWorker.prototype.processChunk.call(this, chunk);
+};
+module.exports = DataLengthProbe;
+
+
+},{"../utils":32,"./GenericWorker":28}],27:[function(require,module,exports){
+'use strict';
+
+var utils = require('../utils');
+var GenericWorker = require('./GenericWorker');
+
+// the size of the generated chunks
+// TODO expose this as a public variable
+var DEFAULT_BLOCK_SIZE = 16 * 1024;
+
+/**
+ * A worker that reads a content and emits chunks.
+ * @constructor
+ * @param {Promise} dataP the promise of the data to split
+ */
+function DataWorker(dataP) {
+ GenericWorker.call(this, "DataWorker");
+ var self = this;
+ this.dataIsReady = false;
+ this.index = 0;
+ this.max = 0;
+ this.data = null;
+ this.type = "";
+
+ this._tickScheduled = false;
+
+ dataP.then(function (data) {
+ self.dataIsReady = true;
+ self.data = data;
+ self.max = data && data.length || 0;
+ self.type = utils.getTypeOf(data);
+ if(!self.isPaused) {
+ self._tickAndRepeat();
+ }
+ }, function (e) {
+ self.error(e);
+ });
+}
+
+utils.inherits(DataWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.cleanUp
+ */
+DataWorker.prototype.cleanUp = function () {
+ GenericWorker.prototype.cleanUp.call(this);
+ this.data = null;
+};
+
+/**
+ * @see GenericWorker.resume
+ */
+DataWorker.prototype.resume = function () {
+ if(!GenericWorker.prototype.resume.call(this)) {
+ return false;
+ }
+
+ if (!this._tickScheduled && this.dataIsReady) {
+ this._tickScheduled = true;
+ utils.delay(this._tickAndRepeat, [], this);
+ }
+ return true;
+};
+
+/**
+ * Trigger a tick a schedule an other call to this function.
+ */
+DataWorker.prototype._tickAndRepeat = function() {
+ this._tickScheduled = false;
+ if(this.isPaused || this.isFinished) {
+ return;
+ }
+ this._tick();
+ if(!this.isFinished) {
+ utils.delay(this._tickAndRepeat, [], this);
+ this._tickScheduled = true;
+ }
+};
+
+/**
+ * Read and push a chunk.
+ */
+DataWorker.prototype._tick = function() {
+
+ if(this.isPaused || this.isFinished) {
+ return false;
+ }
+
+ var size = DEFAULT_BLOCK_SIZE;
+ var data = null, nextIndex = Math.min(this.max, this.index + size);
+ if (this.index >= this.max) {
+ // EOF
+ return this.end();
+ } else {
+ switch(this.type) {
+ case "string":
+ data = this.data.substring(this.index, nextIndex);
+ break;
+ case "uint8array":
+ data = this.data.subarray(this.index, nextIndex);
+ break;
+ case "array":
+ case "nodebuffer":
+ data = this.data.slice(this.index, nextIndex);
+ break;
+ }
+ this.index = nextIndex;
+ return this.push({
+ data : data,
+ meta : {
+ percent : this.max ? this.index / this.max * 100 : 0
+ }
+ });
+ }
+};
+
+module.exports = DataWorker;
+
+},{"../utils":32,"./GenericWorker":28}],28:[function(require,module,exports){
+'use strict';
+
+/**
+ * A worker that does nothing but passing chunks to the next one. This is like
+ * a nodejs stream but with some differences. On the good side :
+ * - it works on IE 6-9 without any issue / polyfill
+ * - it weights less than the full dependencies bundled with browserify
+ * - it forwards errors (no need to declare an error handler EVERYWHERE)
+ *
+ * A chunk is an object with 2 attributes : `meta` and `data`. The former is an
+ * object containing anything (`percent` for example), see each worker for more
+ * details. The latter is the real data (String, Uint8Array, etc).
+ *
+ * @constructor
+ * @param {String} name the name of the stream (mainly used for debugging purposes)
+ */
+function GenericWorker(name) {
+ // the name of the worker
+ this.name = name || "default";
+ // an object containing metadata about the workers chain
+ this.streamInfo = {};
+ // an error which happened when the worker was paused
+ this.generatedError = null;
+ // an object containing metadata to be merged by this worker into the general metadata
+ this.extraStreamInfo = {};
+ // true if the stream is paused (and should not do anything), false otherwise
+ this.isPaused = true;
+ // true if the stream is finished (and should not do anything), false otherwise
+ this.isFinished = false;
+ // true if the stream is locked to prevent further structure updates (pipe), false otherwise
+ this.isLocked = false;
+ // the event listeners
+ this._listeners = {
+ 'data':[],
+ 'end':[],
+ 'error':[]
+ };
+ // the previous worker, if any
+ this.previous = null;
+}
+
+GenericWorker.prototype = {
+ /**
+ * Push a chunk to the next workers.
+ * @param {Object} chunk the chunk to push
+ */
+ push : function (chunk) {
+ this.emit("data", chunk);
+ },
+ /**
+ * End the stream.
+ * @return {Boolean} true if this call ended the worker, false otherwise.
+ */
+ end : function () {
+ if (this.isFinished) {
+ return false;
+ }
+
+ this.flush();
+ try {
+ this.emit("end");
+ this.cleanUp();
+ this.isFinished = true;
+ } catch (e) {
+ this.emit("error", e);
+ }
+ return true;
+ },
+ /**
+ * End the stream with an error.
+ * @param {Error} e the error which caused the premature end.
+ * @return {Boolean} true if this call ended the worker with an error, false otherwise.
+ */
+ error : function (e) {
+ if (this.isFinished) {
+ return false;
+ }
+
+ if(this.isPaused) {
+ this.generatedError = e;
+ } else {
+ this.isFinished = true;
+
+ this.emit("error", e);
+
+ // in the workers chain exploded in the middle of the chain,
+ // the error event will go downward but we also need to notify
+ // workers upward that there has been an error.
+ if(this.previous) {
+ this.previous.error(e);
+ }
+
+ this.cleanUp();
+ }
+ return true;
+ },
+ /**
+ * Add a callback on an event.
+ * @param {String} name the name of the event (data, end, error)
+ * @param {Function} listener the function to call when the event is triggered
+ * @return {GenericWorker} the current object for chainability
+ */
+ on : function (name, listener) {
+ this._listeners[name].push(listener);
+ return this;
+ },
+ /**
+ * Clean any references when a worker is ending.
+ */
+ cleanUp : function () {
+ this.streamInfo = this.generatedError = this.extraStreamInfo = null;
+ this._listeners = [];
+ },
+ /**
+ * Trigger an event. This will call registered callback with the provided arg.
+ * @param {String} name the name of the event (data, end, error)
+ * @param {Object} arg the argument to call the callback with.
+ */
+ emit : function (name, arg) {
+ if (this._listeners[name]) {
+ for(var i = 0; i < this._listeners[name].length; i++) {
+ this._listeners[name][i].call(this, arg);
+ }
+ }
+ },
+ /**
+ * Chain a worker with an other.
+ * @param {Worker} next the worker receiving events from the current one.
+ * @return {worker} the next worker for chainability
+ */
+ pipe : function (next) {
+ return next.registerPrevious(this);
+ },
+ /**
+ * Same as `pipe` in the other direction.
+ * Using an API with `pipe(next)` is very easy.
+ * Implementing the API with the point of view of the next one registering
+ * a source is easier, see the ZipFileWorker.
+ * @param {Worker} previous the previous worker, sending events to this one
+ * @return {Worker} the current worker for chainability
+ */
+ registerPrevious : function (previous) {
+ if (this.isLocked) {
+ throw new Error("The stream '" + this + "' has already been used.");
+ }
+
+ // sharing the streamInfo...
+ this.streamInfo = previous.streamInfo;
+ // ... and adding our own bits
+ this.mergeStreamInfo();
+ this.previous = previous;
+ var self = this;
+ previous.on('data', function (chunk) {
+ self.processChunk(chunk);
+ });
+ previous.on('end', function () {
+ self.end();
+ });
+ previous.on('error', function (e) {
+ self.error(e);
+ });
+ return this;
+ },
+ /**
+ * Pause the stream so it doesn't send events anymore.
+ * @return {Boolean} true if this call paused the worker, false otherwise.
+ */
+ pause : function () {
+ if(this.isPaused || this.isFinished) {
+ return false;
+ }
+ this.isPaused = true;
+
+ if(this.previous) {
+ this.previous.pause();
+ }
+ return true;
+ },
+ /**
+ * Resume a paused stream.
+ * @return {Boolean} true if this call resumed the worker, false otherwise.
+ */
+ resume : function () {
+ if(!this.isPaused || this.isFinished) {
+ return false;
+ }
+ this.isPaused = false;
+
+ // if true, the worker tried to resume but failed
+ var withError = false;
+ if(this.generatedError) {
+ this.error(this.generatedError);
+ withError = true;
+ }
+ if(this.previous) {
+ this.previous.resume();
+ }
+
+ return !withError;
+ },
+ /**
+ * Flush any remaining bytes as the stream is ending.
+ */
+ flush : function () {},
+ /**
+ * Process a chunk. This is usually the method overridden.
+ * @param {Object} chunk the chunk to process.
+ */
+ processChunk : function(chunk) {
+ this.push(chunk);
+ },
+ /**
+ * Add a key/value to be added in the workers chain streamInfo once activated.
+ * @param {String} key the key to use
+ * @param {Object} value the associated value
+ * @return {Worker} the current worker for chainability
+ */
+ withStreamInfo : function (key, value) {
+ this.extraStreamInfo[key] = value;
+ this.mergeStreamInfo();
+ return this;
+ },
+ /**
+ * Merge this worker's streamInfo into the chain's streamInfo.
+ */
+ mergeStreamInfo : function () {
+ for(var key in this.extraStreamInfo) {
+ if (!this.extraStreamInfo.hasOwnProperty(key)) {
+ continue;
+ }
+ this.streamInfo[key] = this.extraStreamInfo[key];
+ }
+ },
+
+ /**
+ * Lock the stream to prevent further updates on the workers chain.
+ * After calling this method, all calls to pipe will fail.
+ */
+ lock: function () {
+ if (this.isLocked) {
+ throw new Error("The stream '" + this + "' has already been used.");
+ }
+ this.isLocked = true;
+ if (this.previous) {
+ this.previous.lock();
+ }
+ },
+
+ /**
+ *
+ * Pretty print the workers chain.
+ */
+ toString : function () {
+ var me = "Worker " + this.name;
+ if (this.previous) {
+ return this.previous + " -> " + me;
+ } else {
+ return me;
+ }
+ }
+};
+
+module.exports = GenericWorker;
+
+},{}],29:[function(require,module,exports){
+'use strict';
+
+var utils = require('../utils');
+var ConvertWorker = require('./ConvertWorker');
+var GenericWorker = require('./GenericWorker');
+var base64 = require('../base64');
+var support = require("../support");
+var external = require("../external");
+
+var NodejsStreamOutputAdapter = null;
+if (support.nodestream) {
+ try {
+ NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');
+ } catch(e) {}
+}
+
+/**
+ * Apply the final transformation of the data. If the user wants a Blob for
+ * example, it's easier to work with an U8intArray and finally do the
+ * ArrayBuffer/Blob conversion.
+ * @param {String} type the name of the final type
+ * @param {String|Uint8Array|Buffer} content the content to transform
+ * @param {String} mimeType the mime type of the content, if applicable.
+ * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.
+ */
+function transformZipOutput(type, content, mimeType) {
+ switch(type) {
+ case "blob" :
+ return utils.newBlob(utils.transformTo("arraybuffer", content), mimeType);
+ case "base64" :
+ return base64.encode(content);
+ default :
+ return utils.transformTo(type, content);
+ }
+}
+
+/**
+ * Concatenate an array of data of the given type.
+ * @param {String} type the type of the data in the given array.
+ * @param {Array} dataArray the array containing the data chunks to concatenate
+ * @return {String|Uint8Array|Buffer} the concatenated data
+ * @throws Error if the asked type is unsupported
+ */
+function concat (type, dataArray) {
+ var i, index = 0, res = null, totalLength = 0;
+ for(i = 0; i < dataArray.length; i++) {
+ totalLength += dataArray[i].length;
+ }
+ switch(type) {
+ case "string":
+ return dataArray.join("");
+ case "array":
+ return Array.prototype.concat.apply([], dataArray);
+ case "uint8array":
+ res = new Uint8Array(totalLength);
+ for(i = 0; i < dataArray.length; i++) {
+ res.set(dataArray[i], index);
+ index += dataArray[i].length;
+ }
+ return res;
+ case "nodebuffer":
+ return Buffer.concat(dataArray);
+ default:
+ throw new Error("concat : unsupported type '" + type + "'");
+ }
+}
+
+/**
+ * Listen a StreamHelper, accumulate its content and concatenate it into a
+ * complete block.
+ * @param {StreamHelper} helper the helper to use.
+ * @param {Function} updateCallback a callback called on each update. Called
+ * with one arg :
+ * - the metadata linked to the update received.
+ * @return Promise the promise for the accumulation.
+ */
+function accumulate(helper, updateCallback) {
+ return new external.Promise(function (resolve, reject){
+ var dataArray = [];
+ var chunkType = helper._internalType,
+ resultType = helper._outputType,
+ mimeType = helper._mimeType;
+ helper
+ .on('data', function (data, meta) {
+ dataArray.push(data);
+ if(updateCallback) {
+ updateCallback(meta);
+ }
+ })
+ .on('error', function(err) {
+ dataArray = [];
+ reject(err);
+ })
+ .on('end', function (){
+ try {
+ var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);
+ resolve(result);
+ } catch (e) {
+ reject(e);
+ }
+ dataArray = [];
+ })
+ .resume();
+ });
+}
+
+/**
+ * An helper to easily use workers outside of JSZip.
+ * @constructor
+ * @param {Worker} worker the worker to wrap
+ * @param {String} outputType the type of data expected by the use
+ * @param {String} mimeType the mime type of the content, if applicable.
+ */
+function StreamHelper(worker, outputType, mimeType) {
+ var internalType = outputType;
+ switch(outputType) {
+ case "blob":
+ case "arraybuffer":
+ internalType = "uint8array";
+ break;
+ case "base64":
+ internalType = "string";
+ break;
+ }
+
+ try {
+ // the type used internally
+ this._internalType = internalType;
+ // the type used to output results
+ this._outputType = outputType;
+ // the mime type
+ this._mimeType = mimeType;
+ utils.checkSupport(internalType);
+ this._worker = worker.pipe(new ConvertWorker(internalType));
+ // the last workers can be rewired without issues but we need to
+ // prevent any updates on previous workers.
+ worker.lock();
+ } catch(e) {
+ this._worker = new GenericWorker("error");
+ this._worker.error(e);
+ }
+}
+
+StreamHelper.prototype = {
+ /**
+ * Listen a StreamHelper, accumulate its content and concatenate it into a
+ * complete block.
+ * @param {Function} updateCb the update callback.
+ * @return Promise the promise for the accumulation.
+ */
+ accumulate : function (updateCb) {
+ return accumulate(this, updateCb);
+ },
+ /**
+ * Add a listener on an event triggered on a stream.
+ * @param {String} evt the name of the event
+ * @param {Function} fn the listener
+ * @return {StreamHelper} the current helper.
+ */
+ on : function (evt, fn) {
+ var self = this;
+
+ if(evt === "data") {
+ this._worker.on(evt, function (chunk) {
+ fn.call(self, chunk.data, chunk.meta);
+ });
+ } else {
+ this._worker.on(evt, function () {
+ utils.delay(fn, arguments, self);
+ });
+ }
+ return this;
+ },
+ /**
+ * Resume the flow of chunks.
+ * @return {StreamHelper} the current helper.
+ */
+ resume : function () {
+ utils.delay(this._worker.resume, [], this._worker);
+ return this;
+ },
+ /**
+ * Pause the flow of chunks.
+ * @return {StreamHelper} the current helper.
+ */
+ pause : function () {
+ this._worker.pause();
+ return this;
+ },
+ /**
+ * Return a nodejs stream for this helper.
+ * @param {Function} updateCb the update callback.
+ * @return {NodejsStreamOutputAdapter} the nodejs stream.
+ */
+ toNodejsStream : function (updateCb) {
+ utils.checkSupport("nodestream");
+ if (this._outputType !== "nodebuffer") {
+ // an object stream containing blob/arraybuffer/uint8array/string
+ // is strange and I don't know if it would be useful.
+ // I you find this comment and have a good usecase, please open a
+ // bug report !
+ throw new Error(this._outputType + " is not supported by this method");
+ }
+
+ return new NodejsStreamOutputAdapter(this, {
+ objectMode : this._outputType !== "nodebuffer"
+ }, updateCb);
+ }
+};
+
+
+module.exports = StreamHelper;
+
+},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(require,module,exports){
+'use strict';
+
+exports.base64 = true;
+exports.array = true;
+exports.string = true;
+exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
+exports.nodebuffer = typeof Buffer !== "undefined";
+// contains true if JSZip can read/generate Uint8Array, false otherwise.
+exports.uint8array = typeof Uint8Array !== "undefined";
+
+if (typeof ArrayBuffer === "undefined") {
+ exports.blob = false;
+}
+else {
+ var buffer = new ArrayBuffer(0);
+ try {
+ exports.blob = new Blob([buffer], {
+ type: "application/zip"
+ }).size === 0;
+ }
+ catch (e) {
+ try {
+ var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
+ var builder = new Builder();
+ builder.append(buffer);
+ exports.blob = builder.getBlob('application/zip').size === 0;
+ }
+ catch (e) {
+ exports.blob = false;
+ }
+ }
+}
+
+try {
+ exports.nodestream = !!require('readable-stream').Readable;
+} catch(e) {
+ exports.nodestream = false;
+}
+
+},{"readable-stream":16}],31:[function(require,module,exports){
+'use strict';
+
+var utils = require('./utils');
+var support = require('./support');
+var nodejsUtils = require('./nodejsUtils');
+var GenericWorker = require('./stream/GenericWorker');
+
+/**
+ * The following functions come from pako, from pako/lib/utils/strings
+ * released under the MIT license, see pako https://github.com/nodeca/pako/
+ */
+
+// Table with utf8 lengths (calculated by first byte of sequence)
+// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
+// because max possible codepoint is 0x10ffff
+var _utf8len = new Array(256);
+for (var i=0; i<256; i++) {
+ _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
+}
+_utf8len[254]=_utf8len[254]=1; // Invalid sequence start
+
+// convert string to array (typed, when possible)
+var string2buf = function (str) {
+ var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
+
+ // count binary size
+ for (m_pos = 0; m_pos < str_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
+ }
+
+ // allocate buffer
+ if (support.uint8array) {
+ buf = new Uint8Array(buf_len);
+ } else {
+ buf = new Array(buf_len);
+ }
+
+ // convert
+ for (i=0, m_pos = 0; i < buf_len; m_pos++) {
+ c = str.charCodeAt(m_pos);
+ if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
+ c2 = str.charCodeAt(m_pos+1);
+ if ((c2 & 0xfc00) === 0xdc00) {
+ c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
+ m_pos++;
+ }
+ }
+ if (c < 0x80) {
+ /* one byte */
+ buf[i++] = c;
+ } else if (c < 0x800) {
+ /* two bytes */
+ buf[i++] = 0xC0 | (c >>> 6);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else if (c < 0x10000) {
+ /* three bytes */
+ buf[i++] = 0xE0 | (c >>> 12);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ } else {
+ /* four bytes */
+ buf[i++] = 0xf0 | (c >>> 18);
+ buf[i++] = 0x80 | (c >>> 12 & 0x3f);
+ buf[i++] = 0x80 | (c >>> 6 & 0x3f);
+ buf[i++] = 0x80 | (c & 0x3f);
+ }
+ }
+
+ return buf;
+};
+
+// Calculate max possible position in utf8 buffer,
+// that will not break sequence. If that's not possible
+// - (very small limits) return max size as is.
+//
+// buf[] - utf8 bytes array
+// max - length limit (mandatory);
+var utf8border = function(buf, max) {
+ var pos;
+
+ max = max || buf.length;
+ if (max > buf.length) { max = buf.length; }
+
+ // go back from last position, until start of sequence found
+ pos = max-1;
+ while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }
+
+ // Fuckup - very small and broken sequence,
+ // return max, because we should return something anyway.
+ if (pos < 0) { return max; }
+
+ // If we came to start of buffer - that means vuffer is too small,
+ // return max too.
+ if (pos === 0) { return max; }
+
+ return (pos + _utf8len[buf[pos]] > max) ? pos : max;
+};
+
+// convert array to string
+var buf2string = function (buf) {
+ var str, i, out, c, c_len;
+ var len = buf.length;
+
+ // Reserve max possible length (2 words per char)
+ // NB: by unknown reasons, Array is significantly faster for
+ // String.fromCharCode.apply than Uint16Array.
+ var utf16buf = new Array(len*2);
+
+ for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }
+
+ // apply mask on first byte
+ c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
+ // join the rest
+ while (c_len > 1 && i < len) {
+ c = (c << 6) | (buf[i++] & 0x3f);
+ c_len--;
+ }
+
+ // terminated by end of string?
+ if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }
+
+ if (c < 0x10000) {
+ utf16buf[out++] = c;
+ } else {
+ c -= 0x10000;
+ utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
+ utf16buf[out++] = 0xdc00 | (c & 0x3ff);
+ }
+ }
+
+ // shrinkBuf(utf16buf, out)
+ if (utf16buf.length !== out) {
+ if(utf16buf.subarray) {
+ utf16buf = utf16buf.subarray(0, out);
+ } else {
+ utf16buf.length = out;
+ }
+ }
+
+ // return String.fromCharCode.apply(null, utf16buf);
+ return utils.applyFromCharCode(utf16buf);
+};
+
+
+// That's all for the pako functions.
+
+
+/**
+ * Transform a javascript string into an array (typed if possible) of bytes,
+ * UTF-8 encoded.
+ * @param {String} str the string to encode
+ * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
+ */
+exports.utf8encode = function utf8encode(str) {
+ if (support.nodebuffer) {
+ return nodejsUtils.newBufferFrom(str, "utf-8");
+ }
+
+ return string2buf(str);
+};
+
+
+/**
+ * Transform a bytes array (or a representation) representing an UTF-8 encoded
+ * string into a javascript string.
+ * @param {Array|Uint8Array|Buffer} buf the data de decode
+ * @return {String} the decoded string.
+ */
+exports.utf8decode = function utf8decode(buf) {
+ if (support.nodebuffer) {
+ return utils.transformTo("nodebuffer", buf).toString("utf-8");
+ }
+
+ buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);
+
+ return buf2string(buf);
+};
+
+/**
+ * A worker to decode utf8 encoded binary chunks into string chunks.
+ * @constructor
+ */
+function Utf8DecodeWorker() {
+ GenericWorker.call(this, "utf-8 decode");
+ // the last bytes if a chunk didn't end with a complete codepoint.
+ this.leftOver = null;
+}
+utils.inherits(Utf8DecodeWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+Utf8DecodeWorker.prototype.processChunk = function (chunk) {
+
+ var data = utils.transformTo(support.uint8array ? "uint8array" : "array", chunk.data);
+
+ // 1st step, re-use what's left of the previous chunk
+ if (this.leftOver && this.leftOver.length) {
+ if(support.uint8array) {
+ var previousData = data;
+ data = new Uint8Array(previousData.length + this.leftOver.length);
+ data.set(this.leftOver, 0);
+ data.set(previousData, this.leftOver.length);
+ } else {
+ data = this.leftOver.concat(data);
+ }
+ this.leftOver = null;
+ }
+
+ var nextBoundary = utf8border(data);
+ var usableData = data;
+ if (nextBoundary !== data.length) {
+ if (support.uint8array) {
+ usableData = data.subarray(0, nextBoundary);
+ this.leftOver = data.subarray(nextBoundary, data.length);
+ } else {
+ usableData = data.slice(0, nextBoundary);
+ this.leftOver = data.slice(nextBoundary, data.length);
+ }
+ }
+
+ this.push({
+ data : exports.utf8decode(usableData),
+ meta : chunk.meta
+ });
+};
+
+/**
+ * @see GenericWorker.flush
+ */
+Utf8DecodeWorker.prototype.flush = function () {
+ if(this.leftOver && this.leftOver.length) {
+ this.push({
+ data : exports.utf8decode(this.leftOver),
+ meta : {}
+ });
+ this.leftOver = null;
+ }
+};
+exports.Utf8DecodeWorker = Utf8DecodeWorker;
+
+/**
+ * A worker to endcode string chunks into utf8 encoded binary chunks.
+ * @constructor
+ */
+function Utf8EncodeWorker() {
+ GenericWorker.call(this, "utf-8 encode");
+}
+utils.inherits(Utf8EncodeWorker, GenericWorker);
+
+/**
+ * @see GenericWorker.processChunk
+ */
+Utf8EncodeWorker.prototype.processChunk = function (chunk) {
+ this.push({
+ data : exports.utf8encode(chunk.data),
+ meta : chunk.meta
+ });
+};
+exports.Utf8EncodeWorker = Utf8EncodeWorker;
+
+},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(require,module,exports){
+'use strict';
+
+var support = require('./support');
+var base64 = require('./base64');
+var nodejsUtils = require('./nodejsUtils');
+var setImmediate = require('core-js/library/fn/set-immediate');
+var external = require("./external");
+
+
+/**
+ * Convert a string that pass as a "binary string": it should represent a byte
+ * array but may have > 255 char codes. Be sure to take only the first byte
+ * and returns the byte array.
+ * @param {String} str the string to transform.
+ * @return {Array|Uint8Array} the string in a binary format.
+ */
+function string2binary(str) {
+ var result = null;
+ if (support.uint8array) {
+ result = new Uint8Array(str.length);
+ } else {
+ result = new Array(str.length);
+ }
+ return stringToArrayLike(str, result);
+}
+
+/**
+ * Create a new blob with the given content and the given type.
+ * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use
+ * an Uint8Array because the stock browser of android 4 won't accept it (it
+ * will be silently converted to a string, "[object Uint8Array]").
+ *
+ * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:
+ * when a large amount of Array is used to create the Blob, the amount of
+ * memory consumed is nearly 100 times the original data amount.
+ *
+ * @param {String} type the mime type of the blob.
+ * @return {Blob} the created blob.
+ */
+exports.newBlob = function(part, type) {
+ exports.checkSupport("blob");
+
+ try {
+ // Blob constructor
+ return new Blob([part], {
+ type: type
+ });
+ }
+ catch (e) {
+
+ try {
+ // deprecated, browser only, old way
+ var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
+ var builder = new Builder();
+ builder.append(part);
+ return builder.getBlob(type);
+ }
+ catch (e) {
+
+ // well, fuck ?!
+ throw new Error("Bug : can't construct the Blob.");
+ }
+ }
+
+
+};
+/**
+ * The identity function.
+ * @param {Object} input the input.
+ * @return {Object} the same input.
+ */
+function identity(input) {
+ return input;
+}
+
+/**
+ * Fill in an array with a string.
+ * @param {String} str the string to use.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
+ */
+function stringToArrayLike(str, array) {
+ for (var i = 0; i < str.length; ++i) {
+ array[i] = str.charCodeAt(i) & 0xFF;
+ }
+ return array;
+}
+
+/**
+ * An helper for the function arrayLikeToString.
+ * This contains static informations and functions that
+ * can be optimized by the browser JIT compiler.
+ */
+var arrayToStringHelper = {
+ /**
+ * Transform an array of int into a string, chunk by chunk.
+ * See the performances notes on arrayLikeToString.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @param {String} type the type of the array.
+ * @param {Integer} chunk the chunk size.
+ * @return {String} the resulting string.
+ * @throws Error if the chunk is too big for the stack.
+ */
+ stringifyByChunk: function(array, type, chunk) {
+ var result = [], k = 0, len = array.length;
+ // shortcut
+ if (len <= chunk) {
+ return String.fromCharCode.apply(null, array);
+ }
+ while (k < len) {
+ if (type === "array" || type === "nodebuffer") {
+ result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
+ }
+ else {
+ result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
+ }
+ k += chunk;
+ }
+ return result.join("");
+ },
+ /**
+ * Call String.fromCharCode on every item in the array.
+ * This is the naive implementation, which generate A LOT of intermediate string.
+ * This should be used when everything else fail.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+ stringifyByChar: function(array){
+ var resultStr = "";
+ for(var i = 0; i < array.length; i++) {
+ resultStr += String.fromCharCode(array[i]);
+ }
+ return resultStr;
+ },
+ applyCanBeUsed : {
+ /**
+ * true if the browser accepts to use String.fromCharCode on Uint8Array
+ */
+ uint8array : (function () {
+ try {
+ return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;
+ } catch (e) {
+ return false;
+ }
+ })(),
+ /**
+ * true if the browser accepts to use String.fromCharCode on nodejs Buffer.
+ */
+ nodebuffer : (function () {
+ try {
+ return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;
+ } catch (e) {
+ return false;
+ }
+ })()
+ }
+};
+
+/**
+ * Transform an array-like object to a string.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
+ * @return {String} the result.
+ */
+function arrayLikeToString(array) {
+ // Performances notes :
+ // --------------------
+ // String.fromCharCode.apply(null, array) is the fastest, see
+ // see http://jsperf.com/converting-a-uint8array-to-a-string/2
+ // but the stack is limited (and we can get huge arrays !).
+ //
+ // result += String.fromCharCode(array[i]); generate too many strings !
+ //
+ // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
+ // TODO : we now have workers that split the work. Do we still need that ?
+ var chunk = 65536,
+ type = exports.getTypeOf(array),
+ canUseApply = true;
+ if (type === "uint8array") {
+ canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;
+ } else if (type === "nodebuffer") {
+ canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;
+ }
+
+ if (canUseApply) {
+ while (chunk > 1) {
+ try {
+ return arrayToStringHelper.stringifyByChunk(array, type, chunk);
+ } catch (e) {
+ chunk = Math.floor(chunk / 2);
+ }
+ }
+ }
+
+ // no apply or chunk error : slow and painful algorithm
+ // default browser on android 4.*
+ return arrayToStringHelper.stringifyByChar(array);
+}
+
+exports.applyFromCharCode = arrayLikeToString;
+
+
+/**
+ * Copy the data from an array-like to an other array-like.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
+ * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
+ * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
+ */
+function arrayLikeToArrayLike(arrayFrom, arrayTo) {
+ for (var i = 0; i < arrayFrom.length; i++) {
+ arrayTo[i] = arrayFrom[i];
+ }
+ return arrayTo;
+}
+
+// a matrix containing functions to transform everything into everything.
+var transform = {};
+
+// string to ?
+transform["string"] = {
+ "string": identity,
+ "array": function(input) {
+ return stringToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return transform["string"]["uint8array"](input).buffer;
+ },
+ "uint8array": function(input) {
+ return stringToArrayLike(input, new Uint8Array(input.length));
+ },
+ "nodebuffer": function(input) {
+ return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));
+ }
+};
+
+// array to ?
+transform["array"] = {
+ "string": arrayLikeToString,
+ "array": identity,
+ "arraybuffer": function(input) {
+ return (new Uint8Array(input)).buffer;
+ },
+ "uint8array": function(input) {
+ return new Uint8Array(input);
+ },
+ "nodebuffer": function(input) {
+ return nodejsUtils.newBufferFrom(input);
+ }
+};
+
+// arraybuffer to ?
+transform["arraybuffer"] = {
+ "string": function(input) {
+ return arrayLikeToString(new Uint8Array(input));
+ },
+ "array": function(input) {
+ return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
+ },
+ "arraybuffer": identity,
+ "uint8array": function(input) {
+ return new Uint8Array(input);
+ },
+ "nodebuffer": function(input) {
+ return nodejsUtils.newBufferFrom(new Uint8Array(input));
+ }
+};
+
+// uint8array to ?
+transform["uint8array"] = {
+ "string": arrayLikeToString,
+ "array": function(input) {
+ return arrayLikeToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return input.buffer;
+ },
+ "uint8array": identity,
+ "nodebuffer": function(input) {
+ return nodejsUtils.newBufferFrom(input);
+ }
+};
+
+// nodebuffer to ?
+transform["nodebuffer"] = {
+ "string": arrayLikeToString,
+ "array": function(input) {
+ return arrayLikeToArrayLike(input, new Array(input.length));
+ },
+ "arraybuffer": function(input) {
+ return transform["nodebuffer"]["uint8array"](input).buffer;
+ },
+ "uint8array": function(input) {
+ return arrayLikeToArrayLike(input, new Uint8Array(input.length));
+ },
+ "nodebuffer": identity
+};
+
+/**
+ * Transform an input into any type.
+ * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
+ * If no output type is specified, the unmodified input will be returned.
+ * @param {String} outputType the output type.
+ * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
+ * @throws {Error} an Error if the browser doesn't support the requested output type.
+ */
+exports.transformTo = function(outputType, input) {
+ if (!input) {
+ // undefined, null, etc
+ // an empty string won't harm.
+ input = "";
+ }
+ if (!outputType) {
+ return input;
+ }
+ exports.checkSupport(outputType);
+ var inputType = exports.getTypeOf(input);
+ var result = transform[inputType][outputType](input);
+ return result;
+};
+
+/**
+ * Return the type of the input.
+ * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
+ * @param {Object} input the input to identify.
+ * @return {String} the (lowercase) type of the input.
+ */
+exports.getTypeOf = function(input) {
+ if (typeof input === "string") {
+ return "string";
+ }
+ if (Object.prototype.toString.call(input) === "[object Array]") {
+ return "array";
+ }
+ if (support.nodebuffer && nodejsUtils.isBuffer(input)) {
+ return "nodebuffer";
+ }
+ if (support.uint8array && input instanceof Uint8Array) {
+ return "uint8array";
+ }
+ if (support.arraybuffer && input instanceof ArrayBuffer) {
+ return "arraybuffer";
+ }
+};
+
+/**
+ * Throw an exception if the type is not supported.
+ * @param {String} type the type to check.
+ * @throws {Error} an Error if the browser doesn't support the requested type.
+ */
+exports.checkSupport = function(type) {
+ var supported = support[type.toLowerCase()];
+ if (!supported) {
+ throw new Error(type + " is not supported by this platform");
+ }
+};
+
+exports.MAX_VALUE_16BITS = 65535;
+exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
+
+/**
+ * Prettify a string read as binary.
+ * @param {string} str the string to prettify.
+ * @return {string} a pretty string.
+ */
+exports.pretty = function(str) {
+ var res = '',
+ code, i;
+ for (i = 0; i < (str || "").length; i++) {
+ code = str.charCodeAt(i);
+ res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
+ }
+ return res;
+};
+
+/**
+ * Defer the call of a function.
+ * @param {Function} callback the function to call asynchronously.
+ * @param {Array} args the arguments to give to the callback.
+ */
+exports.delay = function(callback, args, self) {
+ setImmediate(function () {
+ callback.apply(self || null, args || []);
+ });
+};
+
+/**
+ * Extends a prototype with an other, without calling a constructor with
+ * side effects. Inspired by nodejs' `utils.inherits`
+ * @param {Function} ctor the constructor to augment
+ * @param {Function} superCtor the parent constructor to use
+ */
+exports.inherits = function (ctor, superCtor) {
+ var Obj = function() {};
+ Obj.prototype = superCtor.prototype;
+ ctor.prototype = new Obj();
+};
+
+/**
+ * Merge the objects passed as parameters into a new one.
+ * @private
+ * @param {...Object} var_args All objects to merge.
+ * @return {Object} a new object with the data of the others.
+ */
+exports.extend = function() {
+ var result = {}, i, attr;
+ for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
+ for (attr in arguments[i]) {
+ if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
+ result[attr] = arguments[i][attr];
+ }
+ }
+ }
+ return result;
+};
+
+/**
+ * Transform arbitrary content into a Promise.
+ * @param {String} name a name for the content being processed.
+ * @param {Object} inputData the content to process.
+ * @param {Boolean} isBinary true if the content is not an unicode string
+ * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.
+ * @param {Boolean} isBase64 true if the string content is encoded with base64.
+ * @return {Promise} a promise in a format usable by JSZip.
+ */
+exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {
+
+ // if inputData is already a promise, this flatten it.
+ var promise = external.Promise.resolve(inputData).then(function(data) {
+
+
+ var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);
+
+ if (isBlob && typeof FileReader !== "undefined") {
+ return new external.Promise(function (resolve, reject) {
+ var reader = new FileReader();
+
+ reader.onload = function(e) {
+ resolve(e.target.result);
+ };
+ reader.onerror = function(e) {
+ reject(e.target.error);
+ };
+ reader.readAsArrayBuffer(data);
+ });
+ } else {
+ return data;
+ }
+ });
+
+ return promise.then(function(data) {
+ var dataType = exports.getTypeOf(data);
+
+ if (!dataType) {
+ return external.Promise.reject(
+ new Error("Can't read the data of '" + name + "'. Is it " +
+ "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")
+ );
+ }
+ // special case : it's way easier to work with Uint8Array than with ArrayBuffer
+ if (dataType === "arraybuffer") {
+ data = exports.transformTo("uint8array", data);
+ } else if (dataType === "string") {
+ if (isBase64) {
+ data = base64.decode(data);
+ }
+ else if (isBinary) {
+ // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask
+ if (isOptimizedBinaryString !== true) {
+ // this is a string, not in a base64 format.
+ // Be sure that this is a correct "binary string"
+ data = string2binary(data);
+ }
+ }
+ }
+ return data;
+ });
+};
+
+},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"core-js/library/fn/set-immediate":36}],33:[function(require,module,exports){
+'use strict';
+var readerFor = require('./reader/readerFor');
+var utils = require('./utils');
+var sig = require('./signature');
+var ZipEntry = require('./zipEntry');
+var utf8 = require('./utf8');
+var support = require('./support');
+// class ZipEntries {{{
+/**
+ * All the entries in the zip file.
+ * @constructor
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntries(loadOptions) {
+ this.files = [];
+ this.loadOptions = loadOptions;
+}
+ZipEntries.prototype = {
+ /**
+ * Check that the reader is on the specified signature.
+ * @param {string} expectedSignature the expected signature.
+ * @throws {Error} if it is an other signature.
+ */
+ checkSignature: function(expectedSignature) {
+ if (!this.reader.readAndCheckSignature(expectedSignature)) {
+ this.reader.index -= 4;
+ var signature = this.reader.readString(4);
+ throw new Error("Corrupted zip or bug: unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
+ }
+ },
+ /**
+ * Check if the given signature is at the given index.
+ * @param {number} askedIndex the index to check.
+ * @param {string} expectedSignature the signature to expect.
+ * @return {boolean} true if the signature is here, false otherwise.
+ */
+ isSignature: function(askedIndex, expectedSignature) {
+ var currentIndex = this.reader.index;
+ this.reader.setIndex(askedIndex);
+ var signature = this.reader.readString(4);
+ var result = signature === expectedSignature;
+ this.reader.setIndex(currentIndex);
+ return result;
+ },
+ /**
+ * Read the end of the central directory.
+ */
+ readBlockEndOfCentral: function() {
+ this.diskNumber = this.reader.readInt(2);
+ this.diskWithCentralDirStart = this.reader.readInt(2);
+ this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
+ this.centralDirRecords = this.reader.readInt(2);
+ this.centralDirSize = this.reader.readInt(4);
+ this.centralDirOffset = this.reader.readInt(4);
+
+ this.zipCommentLength = this.reader.readInt(2);
+ // warning : the encoding depends of the system locale
+ // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
+ // On a windows machine, this field is encoded with the localized windows code page.
+ var zipComment = this.reader.readData(this.zipCommentLength);
+ var decodeParamType = support.uint8array ? "uint8array" : "array";
+ // To get consistent behavior with the generation part, we will assume that
+ // this is utf8 encoded unless specified otherwise.
+ var decodeContent = utils.transformTo(decodeParamType, zipComment);
+ this.zipComment = this.loadOptions.decodeFileName(decodeContent);
+ },
+ /**
+ * Read the end of the Zip 64 central directory.
+ * Not merged with the method readEndOfCentral :
+ * The end of central can coexist with its Zip64 brother,
+ * I don't want to read the wrong number of bytes !
+ */
+ readBlockZip64EndOfCentral: function() {
+ this.zip64EndOfCentralSize = this.reader.readInt(8);
+ this.reader.skip(4);
+ // this.versionMadeBy = this.reader.readString(2);
+ // this.versionNeeded = this.reader.readInt(2);
+ this.diskNumber = this.reader.readInt(4);
+ this.diskWithCentralDirStart = this.reader.readInt(4);
+ this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
+ this.centralDirRecords = this.reader.readInt(8);
+ this.centralDirSize = this.reader.readInt(8);
+ this.centralDirOffset = this.reader.readInt(8);
+
+ this.zip64ExtensibleData = {};
+ var extraDataSize = this.zip64EndOfCentralSize - 44,
+ index = 0,
+ extraFieldId,
+ extraFieldLength,
+ extraFieldValue;
+ while (index < extraDataSize) {
+ extraFieldId = this.reader.readInt(2);
+ extraFieldLength = this.reader.readInt(4);
+ extraFieldValue = this.reader.readData(extraFieldLength);
+ this.zip64ExtensibleData[extraFieldId] = {
+ id: extraFieldId,
+ length: extraFieldLength,
+ value: extraFieldValue
+ };
+ }
+ },
+ /**
+ * Read the end of the Zip 64 central directory locator.
+ */
+ readBlockZip64EndOfCentralLocator: function() {
+ this.diskWithZip64CentralDirStart = this.reader.readInt(4);
+ this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
+ this.disksCount = this.reader.readInt(4);
+ if (this.disksCount > 1) {
+ throw new Error("Multi-volumes zip are not supported");
+ }
+ },
+ /**
+ * Read the local files, based on the offset read in the central part.
+ */
+ readLocalFiles: function() {
+ var i, file;
+ for (i = 0; i < this.files.length; i++) {
+ file = this.files[i];
+ this.reader.setIndex(file.localHeaderOffset);
+ this.checkSignature(sig.LOCAL_FILE_HEADER);
+ file.readLocalPart(this.reader);
+ file.handleUTF8();
+ file.processAttributes();
+ }
+ },
+ /**
+ * Read the central directory.
+ */
+ readCentralDir: function() {
+ var file;
+
+ this.reader.setIndex(this.centralDirOffset);
+ while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {
+ file = new ZipEntry({
+ zip64: this.zip64
+ }, this.loadOptions);
+ file.readCentralPart(this.reader);
+ this.files.push(file);
+ }
+
+ if (this.centralDirRecords !== this.files.length) {
+ if (this.centralDirRecords !== 0 && this.files.length === 0) {
+ // We expected some records but couldn't find ANY.
+ // This is really suspicious, as if something went wrong.
+ throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
+ } else {
+ // We found some records but not all.
+ // Something is wrong but we got something for the user: no error here.
+ // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length);
+ }
+ }
+ },
+ /**
+ * Read the end of central directory.
+ */
+ readEndOfCentral: function() {
+ var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
+ if (offset < 0) {
+ // Check if the content is a truncated zip or complete garbage.
+ // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
+ // extractible zip for example) but it can give a good hint.
+ // If an ajax request was used without responseType, we will also
+ // get unreadable data.
+ var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);
+
+ if (isGarbage) {
+ throw new Error("Can't find end of central directory : is this a zip file ? " +
+ "If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");
+ } else {
+ throw new Error("Corrupted zip: can't find end of central directory");
+ }
+
+ }
+ this.reader.setIndex(offset);
+ var endOfCentralDirOffset = offset;
+ this.checkSignature(sig.CENTRAL_DIRECTORY_END);
+ this.readBlockEndOfCentral();
+
+
+ /* extract from the zip spec :
+ 4) If one of the fields in the end of central directory
+ record is too small to hold required data, the field
+ should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
+ ZIP64 format record should be created.
+ 5) The end of central directory record and the
+ Zip64 end of central directory locator record must
+ reside on the same disk when splitting or spanning
+ an archive.
+ */
+ if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
+ this.zip64 = true;
+
+ /*
+ Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
+ the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents
+ all numbers as 64-bit double precision IEEE 754 floating point numbers.
+ So, we have 53bits for integers and bitwise operations treat everything as 32bits.
+ see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
+ and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
+ */
+
+ // should look for a zip64 EOCD locator
+ offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+ if (offset < 0) {
+ throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");
+ }
+ this.reader.setIndex(offset);
+ this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
+ this.readBlockZip64EndOfCentralLocator();
+
+ // now the zip64 EOCD record
+ if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {
+ // console.warn("ZIP64 end of central directory not where expected.");
+ this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+ if (this.relativeOffsetEndOfZip64CentralDir < 0) {
+ throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");
+ }
+ }
+ this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
+ this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
+ this.readBlockZip64EndOfCentral();
+ }
+
+ var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;
+ if (this.zip64) {
+ expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator
+ expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;
+ }
+
+ var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;
+
+ if (extraBytes > 0) {
+ // console.warn(extraBytes, "extra bytes at beginning or within zipfile");
+ if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {
+ // The offsets seem wrong, but we have something at the specified offset.
+ // So… we keep it.
+ } else {
+ // the offset is wrong, update the "zero" of the reader
+ // this happens if data has been prepended (crx files for example)
+ this.reader.zero = extraBytes;
+ }
+ } else if (extraBytes < 0) {
+ throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes.");
+ }
+ },
+ prepareReader: function(data) {
+ this.reader = readerFor(data);
+ },
+ /**
+ * Read a zip file and create ZipEntries.
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
+ */
+ load: function(data) {
+ this.prepareReader(data);
+ this.readEndOfCentral();
+ this.readCentralDir();
+ this.readLocalFiles();
+ }
+};
+// }}} end of ZipEntries
+module.exports = ZipEntries;
+
+},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(require,module,exports){
+'use strict';
+var readerFor = require('./reader/readerFor');
+var utils = require('./utils');
+var CompressedObject = require('./compressedObject');
+var crc32fn = require('./crc32');
+var utf8 = require('./utf8');
+var compressions = require('./compressions');
+var support = require('./support');
+
+var MADE_BY_DOS = 0x00;
+var MADE_BY_UNIX = 0x03;
+
+/**
+ * Find a compression registered in JSZip.
+ * @param {string} compressionMethod the method magic to find.
+ * @return {Object|null} the JSZip compression object, null if none found.
+ */
+var findCompression = function(compressionMethod) {
+ for (var method in compressions) {
+ if (!compressions.hasOwnProperty(method)) {
+ continue;
+ }
+ if (compressions[method].magic === compressionMethod) {
+ return compressions[method];
+ }
+ }
+ return null;
+};
+
+// class ZipEntry {{{
+/**
+ * An entry in the zip file.
+ * @constructor
+ * @param {Object} options Options of the current file.
+ * @param {Object} loadOptions Options for loading the stream.
+ */
+function ZipEntry(options, loadOptions) {
+ this.options = options;
+ this.loadOptions = loadOptions;
+}
+ZipEntry.prototype = {
+ /**
+ * say if the file is encrypted.
+ * @return {boolean} true if the file is encrypted, false otherwise.
+ */
+ isEncrypted: function() {
+ // bit 1 is set
+ return (this.bitFlag & 0x0001) === 0x0001;
+ },
+ /**
+ * say if the file has utf-8 filename/comment.
+ * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
+ */
+ useUTF8: function() {
+ // bit 11 is set
+ return (this.bitFlag & 0x0800) === 0x0800;
+ },
+ /**
+ * Read the local part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readLocalPart: function(reader) {
+ var compression, localExtraFieldsLength;
+
+ // we already know everything from the central dir !
+ // If the central dir data are false, we are doomed.
+ // On the bright side, the local part is scary : zip64, data descriptors, both, etc.
+ // The less data we get here, the more reliable this should be.
+ // Let's skip the whole header and dash to the data !
+ reader.skip(22);
+ // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
+ // Strangely, the filename here is OK.
+ // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
+ // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
+ // Search "unzip mismatching "local" filename continuing with "central" filename version" on
+ // the internet.
+ //
+ // I think I see the logic here : the central directory is used to display
+ // content and the local directory is used to extract the files. Mixing / and \
+ // may be used to display \ to windows users and use / when extracting the files.
+ // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
+ this.fileNameLength = reader.readInt(2);
+ localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
+ // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.
+ this.fileName = reader.readData(this.fileNameLength);
+ reader.skip(localExtraFieldsLength);
+
+ if (this.compressedSize === -1 || this.uncompressedSize === -1) {
+ throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory " + "(compressedSize === -1 || uncompressedSize === -1)");
+ }
+
+ compression = findCompression(this.compressionMethod);
+ if (compression === null) { // no compression found
+ throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + utils.transformTo("string", this.fileName) + ")");
+ }
+ this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));
+ },
+
+ /**
+ * Read the central part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readCentralPart: function(reader) {
+ this.versionMadeBy = reader.readInt(2);
+ reader.skip(2);
+ // this.versionNeeded = reader.readInt(2);
+ this.bitFlag = reader.readInt(2);
+ this.compressionMethod = reader.readString(2);
+ this.date = reader.readDate();
+ this.crc32 = reader.readInt(4);
+ this.compressedSize = reader.readInt(4);
+ this.uncompressedSize = reader.readInt(4);
+ var fileNameLength = reader.readInt(2);
+ this.extraFieldsLength = reader.readInt(2);
+ this.fileCommentLength = reader.readInt(2);
+ this.diskNumberStart = reader.readInt(2);
+ this.internalFileAttributes = reader.readInt(2);
+ this.externalFileAttributes = reader.readInt(4);
+ this.localHeaderOffset = reader.readInt(4);
+
+ if (this.isEncrypted()) {
+ throw new Error("Encrypted zip are not supported");
+ }
+
+ // will be read in the local part, see the comments there
+ reader.skip(fileNameLength);
+ this.readExtraFields(reader);
+ this.parseZIP64ExtraField(reader);
+ this.fileComment = reader.readData(this.fileCommentLength);
+ },
+
+ /**
+ * Parse the external file attributes and get the unix/dos permissions.
+ */
+ processAttributes: function () {
+ this.unixPermissions = null;
+ this.dosPermissions = null;
+ var madeBy = this.versionMadeBy >> 8;
+
+ // Check if we have the DOS directory flag set.
+ // We look for it in the DOS and UNIX permissions
+ // but some unknown platform could set it as a compatibility flag.
+ this.dir = this.externalFileAttributes & 0x0010 ? true : false;
+
+ if(madeBy === MADE_BY_DOS) {
+ // first 6 bits (0 to 5)
+ this.dosPermissions = this.externalFileAttributes & 0x3F;
+ }
+
+ if(madeBy === MADE_BY_UNIX) {
+ this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
+ // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
+ }
+
+ // fail safe : if the name ends with a / it probably means a folder
+ if (!this.dir && this.fileNameStr.slice(-1) === '/') {
+ this.dir = true;
+ }
+ },
+
+ /**
+ * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
+ * @param {DataReader} reader the reader to use.
+ */
+ parseZIP64ExtraField: function(reader) {
+
+ if (!this.extraFields[0x0001]) {
+ return;
+ }
+
+ // should be something, preparing the extra reader
+ var extraReader = readerFor(this.extraFields[0x0001].value);
+
+ // I really hope that these 64bits integer can fit in 32 bits integer, because js
+ // won't let us have more.
+ if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
+ this.uncompressedSize = extraReader.readInt(8);
+ }
+ if (this.compressedSize === utils.MAX_VALUE_32BITS) {
+ this.compressedSize = extraReader.readInt(8);
+ }
+ if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
+ this.localHeaderOffset = extraReader.readInt(8);
+ }
+ if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
+ this.diskNumberStart = extraReader.readInt(4);
+ }
+ },
+ /**
+ * Read the central part of a zip file and add the info in this object.
+ * @param {DataReader} reader the reader to use.
+ */
+ readExtraFields: function(reader) {
+ var end = reader.index + this.extraFieldsLength,
+ extraFieldId,
+ extraFieldLength,
+ extraFieldValue;
+
+ if (!this.extraFields) {
+ this.extraFields = {};
+ }
+
+ while (reader.index < end) {
+ extraFieldId = reader.readInt(2);
+ extraFieldLength = reader.readInt(2);
+ extraFieldValue = reader.readData(extraFieldLength);
+
+ this.extraFields[extraFieldId] = {
+ id: extraFieldId,
+ length: extraFieldLength,
+ value: extraFieldValue
+ };
+ }
+ },
+ /**
+ * Apply an UTF8 transformation if needed.
+ */
+ handleUTF8: function() {
+ var decodeParamType = support.uint8array ? "uint8array" : "array";
+ if (this.useUTF8()) {
+ this.fileNameStr = utf8.utf8decode(this.fileName);
+ this.fileCommentStr = utf8.utf8decode(this.fileComment);
+ } else {
+ var upath = this.findExtraFieldUnicodePath();
+ if (upath !== null) {
+ this.fileNameStr = upath;
+ } else {
+ // ASCII text or unsupported code page
+ var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName);
+ this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);
+ }
+
+ var ucomment = this.findExtraFieldUnicodeComment();
+ if (ucomment !== null) {
+ this.fileCommentStr = ucomment;
+ } else {
+ // ASCII text or unsupported code page
+ var commentByteArray = utils.transformTo(decodeParamType, this.fileComment);
+ this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);
+ }
+ }
+ },
+
+ /**
+ * Find the unicode path declared in the extra field, if any.
+ * @return {String} the unicode path, null otherwise.
+ */
+ findExtraFieldUnicodePath: function() {
+ var upathField = this.extraFields[0x7075];
+ if (upathField) {
+ var extraReader = readerFor(upathField.value);
+
+ // wrong version
+ if (extraReader.readInt(1) !== 1) {
+ return null;
+ }
+
+ // the crc of the filename changed, this field is out of date.
+ if (crc32fn(this.fileName) !== extraReader.readInt(4)) {
+ return null;
+ }
+
+ return utf8.utf8decode(extraReader.readData(upathField.length - 5));
+ }
+ return null;
+ },
+
+ /**
+ * Find the unicode comment declared in the extra field, if any.
+ * @return {String} the unicode comment, null otherwise.
+ */
+ findExtraFieldUnicodeComment: function() {
+ var ucommentField = this.extraFields[0x6375];
+ if (ucommentField) {
+ var extraReader = readerFor(ucommentField.value);
+
+ // wrong version
+ if (extraReader.readInt(1) !== 1) {
+ return null;
+ }
+
+ // the crc of the comment changed, this field is out of date.
+ if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {
+ return null;
+ }
+
+ return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));
+ }
+ return null;
+ }
+};
+module.exports = ZipEntry;
+
+},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(require,module,exports){
+'use strict';
+
+var StreamHelper = require('./stream/StreamHelper');
+var DataWorker = require('./stream/DataWorker');
+var utf8 = require('./utf8');
+var CompressedObject = require('./compressedObject');
+var GenericWorker = require('./stream/GenericWorker');
+
+/**
+ * A simple object representing a file in the zip file.
+ * @constructor
+ * @param {string} name the name of the file
+ * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
+ * @param {Object} options the options of the file
+ */
+var ZipObject = function(name, data, options) {
+ this.name = name;
+ this.dir = options.dir;
+ this.date = options.date;
+ this.comment = options.comment;
+ this.unixPermissions = options.unixPermissions;
+ this.dosPermissions = options.dosPermissions;
+
+ this._data = data;
+ this._dataBinary = options.binary;
+ // keep only the compression
+ this.options = {
+ compression : options.compression,
+ compressionOptions : options.compressionOptions
+ };
+};
+
+ZipObject.prototype = {
+ /**
+ * Create an internal stream for the content of this object.
+ * @param {String} type the type of each chunk.
+ * @return StreamHelper the stream.
+ */
+ internalStream: function (type) {
+ var result = null, outputType = "string";
+ try {
+ if (!type) {
+ throw new Error("No output type specified.");
+ }
+ outputType = type.toLowerCase();
+ var askUnicodeString = outputType === "string" || outputType === "text";
+ if (outputType === "binarystring" || outputType === "text") {
+ outputType = "string";
+ }
+ result = this._decompressWorker();
+
+ var isUnicodeString = !this._dataBinary;
+
+ if (isUnicodeString && !askUnicodeString) {
+ result = result.pipe(new utf8.Utf8EncodeWorker());
+ }
+ if (!isUnicodeString && askUnicodeString) {
+ result = result.pipe(new utf8.Utf8DecodeWorker());
+ }
+ } catch (e) {
+ result = new GenericWorker("error");
+ result.error(e);
+ }
+
+ return new StreamHelper(result, outputType, "");
+ },
+
+ /**
+ * Prepare the content in the asked type.
+ * @param {String} type the type of the result.
+ * @param {Function} onUpdate a function to call on each internal update.
+ * @return Promise the promise of the result.
+ */
+ async: function (type, onUpdate) {
+ return this.internalStream(type).accumulate(onUpdate);
+ },
+
+ /**
+ * Prepare the content as a nodejs stream.
+ * @param {String} type the type of each chunk.
+ * @param {Function} onUpdate a function to call on each internal update.
+ * @return Stream the stream.
+ */
+ nodeStream: function (type, onUpdate) {
+ return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate);
+ },
+
+ /**
+ * Return a worker for the compressed content.
+ * @private
+ * @param {Object} compression the compression object to use.
+ * @param {Object} compressionOptions the options to use when compressing.
+ * @return Worker the worker.
+ */
+ _compressWorker: function (compression, compressionOptions) {
+ if (
+ this._data instanceof CompressedObject &&
+ this._data.compression.magic === compression.magic
+ ) {
+ return this._data.getCompressedWorker();
+ } else {
+ var result = this._decompressWorker();
+ if(!this._dataBinary) {
+ result = result.pipe(new utf8.Utf8EncodeWorker());
+ }
+ return CompressedObject.createWorkerFrom(result, compression, compressionOptions);
+ }
+ },
+ /**
+ * Return a worker for the decompressed content.
+ * @private
+ * @return Worker the worker.
+ */
+ _decompressWorker : function () {
+ if (this._data instanceof CompressedObject) {
+ return this._data.getContentWorker();
+ } else if (this._data instanceof GenericWorker) {
+ return this._data;
+ } else {
+ return new DataWorker(this._data);
+ }
+ }
+};
+
+var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"];
+var removedFn = function () {
+ throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
+};
+
+for(var i = 0; i < removedMethods.length; i++) {
+ ZipObject.prototype[removedMethods[i]] = removedFn;
+}
+module.exports = ZipObject;
+
+},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(require,module,exports){
+require('../modules/web.immediate');
+module.exports = require('../modules/_core').setImmediate;
+},{"../modules/_core":40,"../modules/web.immediate":56}],37:[function(require,module,exports){
+module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+};
+},{}],38:[function(require,module,exports){
+var isObject = require('./_is-object');
+module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+};
+},{"./_is-object":51}],39:[function(require,module,exports){
+var toString = {}.toString;
+
+module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+};
+},{}],40:[function(require,module,exports){
+var core = module.exports = {version: '2.3.0'};
+if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+},{}],41:[function(require,module,exports){
+// optional / simple context binding
+var aFunction = require('./_a-function');
+module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+};
+},{"./_a-function":37}],42:[function(require,module,exports){
+// Thank's IE8 for his funny defineProperty
+module.exports = !require('./_fails')(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+});
+},{"./_fails":45}],43:[function(require,module,exports){
+var isObject = require('./_is-object')
+ , document = require('./_global').document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+module.exports = function(it){
+ return is ? document.createElement(it) : {};
+};
+},{"./_global":46,"./_is-object":51}],44:[function(require,module,exports){
+var global = require('./_global')
+ , core = require('./_core')
+ , ctx = require('./_ctx')
+ , hide = require('./_hide')
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+};
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
+},{"./_core":40,"./_ctx":41,"./_global":46,"./_hide":47}],45:[function(require,module,exports){
+module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+};
+},{}],46:[function(require,module,exports){
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+},{}],47:[function(require,module,exports){
+var dP = require('./_object-dp')
+ , createDesc = require('./_property-desc');
+module.exports = require('./_descriptors') ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+} : function(object, key, value){
+ object[key] = value;
+ return object;
+};
+},{"./_descriptors":42,"./_object-dp":52,"./_property-desc":53}],48:[function(require,module,exports){
+module.exports = require('./_global').document && document.documentElement;
+},{"./_global":46}],49:[function(require,module,exports){
+module.exports = !require('./_descriptors') && !require('./_fails')(function(){
+ return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;
+});
+},{"./_descriptors":42,"./_dom-create":43,"./_fails":45}],50:[function(require,module,exports){
+// fast apply, http://jsperf.lnkit.com/fast-apply/5
+module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+};
+},{}],51:[function(require,module,exports){
+module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
+},{}],52:[function(require,module,exports){
+var anObject = require('./_an-object')
+ , IE8_DOM_DEFINE = require('./_ie8-dom-define')
+ , toPrimitive = require('./_to-primitive')
+ , dP = Object.defineProperty;
+
+exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+};
+},{"./_an-object":38,"./_descriptors":42,"./_ie8-dom-define":49,"./_to-primitive":55}],53:[function(require,module,exports){
+module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+};
+},{}],54:[function(require,module,exports){
+var ctx = require('./_ctx')
+ , invoke = require('./_invoke')
+ , html = require('./_html')
+ , cel = require('./_dom-create')
+ , global = require('./_global')
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+var listener = function(event){
+ run.call(event.data);
+};
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(require('./_cof')(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+}
+module.exports = {
+ set: setTask,
+ clear: clearTask
+};
+},{"./_cof":39,"./_ctx":41,"./_dom-create":43,"./_global":46,"./_html":48,"./_invoke":50}],55:[function(require,module,exports){
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = require('./_is-object');
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+};
+},{"./_is-object":51}],56:[function(require,module,exports){
+var $export = require('./_export')
+ , $task = require('./_task');
+$export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+});
+},{"./_export":44,"./_task":54}],57:[function(require,module,exports){
+(function (global){
+'use strict';
+var Mutation = global.MutationObserver || global.WebKitMutationObserver;
+
+var scheduleDrain;
+
+{
+ if (Mutation) {
+ var called = 0;
+ var observer = new Mutation(nextTick);
+ var element = global.document.createTextNode('');
+ observer.observe(element, {
+ characterData: true
+ });
+ scheduleDrain = function () {
+ element.data = (called = ++called % 2);
+ };
+ } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
+ var channel = new global.MessageChannel();
+ channel.port1.onmessage = nextTick;
+ scheduleDrain = function () {
+ channel.port2.postMessage(0);
+ };
+ } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
+ scheduleDrain = function () {
+
+ // Create a
+
+
+
+
+
+var pathtoroot = "../../../";
+var useModuleDirectories = true;
+loadScripts(document, 'script');
JavaScript is disabled on your browser.
+
+
+
-
+
+
+
+
+
-java.lang.Object
+java.lang.Object
org.kohsuke.github.AbuseLimitHandler
@@ -109,17 +132,16 @@ var activeTableTab = "activeTableTab";
@@ -128,78 +150,91 @@ extends
+
-
+
Field Summary
-
+
+
+
-
+
Constructor Summary
-
+
+
+
-
+
Method Summary
-
+
-
+
-Methods inherited from class java.lang.Object
-clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+Methods inherited from class java.lang.Object
+clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
+
@@ -207,40 +242,43 @@ extends
+
+
-
+
Constructor Detail
-
+
@@ -251,34 +289,36 @@ extends
-
+
Method Detail
-
+
onError
-public abstract void onError(IOException e,
- HttpURLConnection uc)
- throws IOException
+public abstract void onError(IOException e,
+ HttpURLConnection uc)
+ throws IOException
Called when the library encounters HTTP error indicating that the API abuse limit is reached.
- Any exception thrown from this method will cause the request to fail, and the caller of github-api
- will receive an exception. If this method returns normally, another request will be attempted.
- For that to make sense, the implementation needs to wait for some time.
+ Any exception thrown from this method will cause the request to fail, and the caller of github-api will receive
+ an exception. If this method returns normally, another request will be attempted. For that to make sense, the
+ implementation needs to wait for some time.
Parameters:
-e - Exception from Java I/O layer. If you decide to fail the processing, you can throw
- this exception (or wrap this exception into another exception and throw it).
+e - Exception from Java I/O layer. If you decide to fail the processing, you can throw this exception (or
+ wrap this exception into another exception and throw it).
uc - Connection that resulted in an error. Useful for accessing other response headers.
Throws:
-IOException
+IOException - on failure
See Also:
API documentation from GitHub
@@ -286,21 +326,25 @@ extends
+
-