From ffc5b85edbe716d32ed5ccdd0e729acb43cbfe4f Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 16 Aug 2011 21:54:38 +0200 Subject: [PATCH] Git repository importer: use LibGit2Sharp instead of GitSharp. --- .../CollectorServiceLibrary.csproj | 9 +- .../Tasks/ImportGitRepository.cs | 75 +- .../Collector/RepositoryImport/Program.cs | 1 - .../Collector/lib/GitSharp licence.txt | 36 - .../Project/Collector/lib/GitSharp.Core.dll | Bin 569344 -> 0 bytes .../Project/Collector/lib/GitSharp.Core.xml | 19608 ---------------- .../Collector/lib/ICSharpCode.SharpZipLib.dll | Bin 188416 -> 0 bytes .../Project/Collector/lib/JGit licence.txt | 34 - .../Project/Collector/lib/LibGit2Sharp.dll | Bin 0 -> 52224 bytes .../Project/Collector/lib/LibGit2Sharp.xml | 1426 ++ .../Project/Collector/lib/License.txt | 21 + .../Project/Collector/lib/Tamir.SharpSSH.dll | Bin 212992 -> 0 bytes .../lib/Winterdom.IO.FileMap License.txt | 457 - .../Collector/lib/Winterdom.IO.FileMap.dll | Bin 9728 -> 0 bytes .../Project/Collector/lib/git2.dll | Bin 0 -> 253952 bytes 15 files changed, 1486 insertions(+), 20181 deletions(-) delete mode 100644 UsageDataCollector/Project/Collector/lib/GitSharp licence.txt delete mode 100644 UsageDataCollector/Project/Collector/lib/GitSharp.Core.dll delete mode 100644 UsageDataCollector/Project/Collector/lib/GitSharp.Core.xml delete mode 100644 UsageDataCollector/Project/Collector/lib/ICSharpCode.SharpZipLib.dll delete mode 100644 UsageDataCollector/Project/Collector/lib/JGit licence.txt create mode 100644 UsageDataCollector/Project/Collector/lib/LibGit2Sharp.dll create mode 100644 UsageDataCollector/Project/Collector/lib/LibGit2Sharp.xml create mode 100644 UsageDataCollector/Project/Collector/lib/License.txt delete mode 100644 UsageDataCollector/Project/Collector/lib/Tamir.SharpSSH.dll delete mode 100644 UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap License.txt delete mode 100644 UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap.dll create mode 100644 UsageDataCollector/Project/Collector/lib/git2.dll diff --git a/UsageDataCollector/Project/Collector/CollectorServiceLibrary/CollectorServiceLibrary.csproj b/UsageDataCollector/Project/Collector/CollectorServiceLibrary/CollectorServiceLibrary.csproj index fc57fcb..7834f0f 100644 --- a/UsageDataCollector/Project/Collector/CollectorServiceLibrary/CollectorServiceLibrary.csproj +++ b/UsageDataCollector/Project/Collector/CollectorServiceLibrary/CollectorServiceLibrary.csproj @@ -34,8 +34,8 @@ 4 - - ..\lib\GitSharp.Core.dll + + ..\lib\LibGit2Sharp.dll ..\..\..\..\..\SharpDevelop\src\Libraries\log4net\log4net.dll @@ -77,6 +77,7 @@ Always + Designer Always @@ -97,6 +98,10 @@ + + git2.dll + Always + diff --git a/UsageDataCollector/Project/Collector/CollectorServiceLibrary/Tasks/ImportGitRepository.cs b/UsageDataCollector/Project/Collector/CollectorServiceLibrary/Tasks/ImportGitRepository.cs index c4ea24b..cd8a3e1 100644 --- a/UsageDataCollector/Project/Collector/CollectorServiceLibrary/Tasks/ImportGitRepository.cs +++ b/UsageDataCollector/Project/Collector/CollectorServiceLibrary/Tasks/ImportGitRepository.cs @@ -3,12 +3,11 @@ using System.Linq; using System.Text; using Microsoft.Build.Utilities; -using GitSharp.Core.Transport; using Microsoft.Build.Framework; -using GitSharp.Core; using System.Diagnostics; using ICSharpCode.UsageDataCollector.DataAccess.Collector; using System.Text.RegularExpressions; +using LibGit2Sharp; namespace ICSharpCode.UsageDataCollector.ServiceLibrary.Tasks { @@ -42,11 +41,6 @@ public ImportGitRepository() /// public DateTime EarliestCommitDate { get; set; } - /// - /// Whether to run "git fetch" in the repository. - /// - public bool Fetch { get; set; } - /// /// Whether to look for 'git-svn' in messages; used to adjust sessions created by SharpDevelop versions prior to the git migration. /// @@ -58,19 +52,18 @@ public override bool Execute() db = new CollectorRepository(); db.Context = context; - using (repo = Repository.Open(this.Directory)) { - if (Fetch) { - using (Transport t = Transport.open(repo, this.Remote)) { - t.RemoveDeletedRefs = true; - t.fetch(NullProgressMonitor.Instance, null); - } - } - foreach (var tag in repo.getTags()) { - ImportTag(tag.Key, tag.Value.PeeledObjectId ?? tag.Value.ObjectId, true); + using (repo = new Repository(System.IO.Path.Combine(this.Directory, ".git"))) { + foreach (var tag in repo.Tags) { + ObjectId commitID = tag.IsAnnotated ? tag.Annotation.TargetId : tag.Target.Id; + ImportTag(tag.Name, (LibGit2Sharp.Commit)repo.Lookup(commitID, GitObjectType.Commit), true); } - foreach (var branch in repo.RefDatabase.getRefs("refs/remotes/" + this.Remote + "/")) { - if (branch.Key == "HEAD") continue; - ImportTag(branch.Key, branch.Value.PeeledObjectId ?? branch.Value.ObjectId, false); + foreach (var branch in repo.Branches) { + if (branch.IsRemote && branch.Name.StartsWith(this.Remote + "/", StringComparison.Ordinal)) { + string branchName = branch.Name.Substring(this.Remote.Length + 1); + if (branchName != "HEAD") { + ImportTag(branchName, branch.Tip, false); + } + } } } if (EnableGitSvnImport && svnRevisionToCommitIdMapping.Count > 0) { @@ -93,8 +86,9 @@ public override bool Execute() return true; } - private void ImportTag(string name, ObjectId commit, bool isRelease) + private void ImportTag(string name, LibGit2Sharp.Commit commit, bool isRelease) { + Debug.WriteLine("ImportTag({0}, {1}, {2})", name, commit.Sha, isRelease); int? commitId = ImportCommit(commit); if (commitId == null) return; @@ -102,10 +96,10 @@ private void ImportTag(string name, ObjectId commit, bool isRelease) if (tag != null) { if (tag.CommitId == commitId) return; - Debug.WriteLine("Update " + (isRelease ? "tag" : "branch") + " " + name + " (commit " + commit + ")"); + Debug.WriteLine("Update " + (isRelease ? "tag" : "branch") + " " + name + " (commit " + commit.Sha + ")"); tag.CommitId = commitId.Value; } else { - Debug.WriteLine("Import " + (isRelease ? "tag" : "branch") + " " + name + " (commit " + commit + ")"); + Debug.WriteLine("Import " + (isRelease ? "tag" : "branch") + " " + name + " (commit " + commit.Sha + ")"); tag = new TaggedCommit(); tag.CommitId = commitId.Value; tag.Name = name; @@ -121,21 +115,21 @@ private void ImportTag(string name, ObjectId commit, bool isRelease) Dictionary svnRevisionToCommitIdMapping = new Dictionary(); /* Recursive implementation - runs into StackOverflowException - private int? ImportCommit(ObjectId commitRef) + private int? ImportCommit(LibGit2Sharp.Commit gitCommit) { - var gitCommit = repo.MapCommit(commitRef); + var gitCommit = (LibGit2Sharp.Commit)repo.Lookup(commitRef, GitObjectType.Commit); // Test whether this commit is already imported - var commit = db.GetCommitByHash(gitCommit.CommitId.Name); + var commit = db.GetCommitByHash(gitCommit.Sha); if (commit != null) return commit.Id; // Test whether the commit is too old to be imported - if (GetDate(gitCommit.Committer) < EarliestCommitDate) + if (gitCommit.Committer.When < EarliestCommitDate) return null; List parentCommits = new List(); - foreach (ObjectId parent in gitCommit.ParentIds) { + foreach (LibGit2Sharp.Commit parent in gitCommit.Parents) { int? parentCommit = ImportCommit(parent); if (parentCommit != null) parentCommits.Add(parentCommit.Value); @@ -145,38 +139,38 @@ private void ImportTag(string name, ObjectId commit, bool isRelease) class Frame { - public readonly GitSharp.Core.Commit gitCommit; + public readonly LibGit2Sharp.Commit gitCommit; public int state; // 0 = initial state; 1 = check loop condition; 2 = within loop public int loopIndex; public List parentCommitIds; - public Frame(GitSharp.Core.Commit gitCommit) + public Frame(LibGit2Sharp.Commit gitCommit) { this.gitCommit = gitCommit; } } - int? ImportCommit(ObjectId commitRef) + int? ImportCommit(LibGit2Sharp.Commit startingCommit) { // Using an explicit stack, because we would run into StackOverflowException when writing this // as a recursive method. See comment above "class Frame" for the recursive implementation. int? result = null; // variable used to store the return value (passed from one stack frame to the calling frame) Stack stack = new Stack(); - stack.Push(new Frame(repo.MapCommit(commitRef))); + stack.Push(new Frame(startingCommit)); while (stack.Count > 0) { Frame f = stack.Peek(); switch (f.state) { case 0: // Test whether this commit is already imported - var commit = db.GetCommitByHash(f.gitCommit.CommitId.Name); + var commit = db.GetCommitByHash(f.gitCommit.Sha); if (commit != null) { result = commit.Id; stack.Pop(); break; } // Test whether the commit is too old to be imported - if (GetDate(f.gitCommit.Committer) < EarliestCommitDate) { + if (f.gitCommit.Committer.When < EarliestCommitDate) { result = null; stack.Pop(); break; @@ -186,10 +180,10 @@ public Frame(GitSharp.Core.Commit gitCommit) goto case 1; // proceed to first loop iteration case 1: // check the loop condition (whether we have imported all necessary commits) - if (f.loopIndex < f.gitCommit.ParentIds.Length) { + if (f.loopIndex < f.gitCommit.Parents.Count()) { // recursive invocation (to fetch the commit ID of the parent) f.state = 2; - stack.Push(new Frame(repo.MapCommit(f.gitCommit.ParentIds[f.loopIndex]))); + stack.Push(new Frame(f.gitCommit.Parents.ElementAt(f.loopIndex))); break; } else { // we are done with the loop; all parent commit IDs were collected @@ -208,17 +202,12 @@ public Frame(GitSharp.Core.Commit gitCommit) return result; } - DateTime GetDate(GitSharp.Core.PersonIdent personIdent) - { - return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc) + TimeSpan.FromMilliseconds(personIdent.When); - } - - int? FinishImportCommit(GitSharp.Core.Commit gitCommit, List parentCommits) + int? FinishImportCommit(LibGit2Sharp.Commit gitCommit, List parentCommits) { - string commitHash = gitCommit.CommitId.Name; + string commitHash = gitCommit.Sha; var commit = new DataAccess.Collector.Commit(); commit.Hash = commitHash; - commit.CommitDate = GetDate(gitCommit.Committer); + commit.CommitDate = gitCommit.Committer.When.UtcDateTime; db.Context.Commits.AddObject(commit); db.Context.SaveChanges(); Debug.WriteLine("Imported commit " + commitHash + " as " + commit.Id); diff --git a/UsageDataCollector/Project/Collector/RepositoryImport/Program.cs b/UsageDataCollector/Project/Collector/RepositoryImport/Program.cs index 70fd326..83487c3 100644 --- a/UsageDataCollector/Project/Collector/RepositoryImport/Program.cs +++ b/UsageDataCollector/Project/Collector/RepositoryImport/Program.cs @@ -14,7 +14,6 @@ static void Main(string[] args) task.ConnectionString = "name=UDCContext"; task.Directory = "c:\\sharpdevelop"; task.EnableGitSvnImport = true; - task.Fetch = false; task.Execute(); } } diff --git a/UsageDataCollector/Project/Collector/lib/GitSharp licence.txt b/UsageDataCollector/Project/Collector/lib/GitSharp licence.txt deleted file mode 100644 index e44347b..0000000 --- a/UsageDataCollector/Project/Collector/lib/GitSharp licence.txt +++ /dev/null @@ -1,36 +0,0 @@ -Git# is Copyright (C) 2007-2009 by the Git Development Community -See source file headers for specific contributor copyrights - -All rights reserved. - -Redistribution and use in source and binary forms, with or -without modification, are permitted provided that the following -conditions are met: - -- Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -- Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - -- Neither the name of the Git Development Community nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/UsageDataCollector/Project/Collector/lib/GitSharp.Core.dll b/UsageDataCollector/Project/Collector/lib/GitSharp.Core.dll deleted file mode 100644 index ba33cad39da1ea3981a199b631f4719c4dec841f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 569344 zcmeFad4L>Ob?@J*s;*vUky2oNAZ64nF=AuNsw`);vsApw#=fCTK{=X-8dbpeKye#MEa=C!tgAe9%@8_+*?e;wMW0Bzg`Um@Se^I*cu=lSx z_rAlPbnUM8$PKOdn$~51G;+mdPk(xR)5zsljkIol`pB-QkDT_nCyxA4eC1W+eSPI4 z6Vex)p39xP!q1)X?DDy3YTwCuhxM!|=5mYtMjW*NwTb(Uyv3d1s~q3BjDNjz-ys~h z{`}nb+s$Ks9tk{o8O}%d7ITl43%b9RAeR4qw3zD!HVxkT) zKQEWhUGyD4_pJ{ExfKTeUw<6uMT5Cq*&B|$TrO-};#VhnS`fRTy$0}Z&z}b#G;#x5 z^116EPf#To>uEKGQWc7i@6nkrh_`vUupGoE^XduW3wcFEYL2aTo@!hpR=lWSKZsA{ z9Tvjbct~9M`Tih?FI5~SIKoDbbi>>+#D|MYwLEY2 zxB|eN6W6oRFhmCefMjMVFdxJh11rS?S;$PZR_I|q34zZfP7+e^D?uf!f zz=IDWL!YvHTA~_WeS5^bNIBlXW0_~nugwJhY!s552P3ta{ve-vM-Cco3Bhs)tue60 z&$UUHX_|^x?wJwM+Q-KV4 z3ut3dwP#9Gd8Teyo+YE1}VNd14U!XfRcplr&f89Rkp|! z+N(CYLnoGmPIV~NZGfbw(za{!<=I)FI+~K#}43HNrnAtYRZP~L3J)X;q6NP7yoIFA&kAfqB5$#CeGW6cdod-R* zsrWa;wO0-YBZ@a1J>Fr4R?bsRmrQ8oG_}Dc7Mih|TIrGtt>`HCD*q5dbQoHq0yBpc zLN?OREs`FYt#}cWl3}@CzLSz&(Nm~~cOWHiU!m4|CWXGQFyuJ6<9dSk6^2`L23_ko zNucXmw-|K2<0ye{NN_hg&Jt+7)OxNVM~90u0%f0!)g$GAFY$*mnLJ=zU`%}wZNd>Y zHp@xPcX5tN;;ci4XAlQFP-(q@1Spb-u-@jX)n0TouAZ&{dj->YVU#S zvANv3coe|5!q#hv7>x-@I=ceVc)7mZhDNR*(m9k*yqXZj<8i%7qT_QP20$KyQ42(rrU@F%}jYaHXn6Bcy~PtyZ3rg>%bfYLz^MvG8_-LT=`j7_G5 zfD|J54JqJB7eC&r=o`KEqB0zX;bT^!*@&=v|L)DpHRRG!j zmn)C zaEt@vM~@Phu5JGdc%uogI7~mF0}wxk;4+d{otiA=U4@vKbZ-Zq?MX;ubAp0{#V3K^ z>-oiep*Uk{gt02a@OZBiNEnlFncjm8)fSpkSGl$x8DqKz{L-&`C%cZ0U;SBEjEG#QbW)}D#kRc;aI=JaK6!kH;1(i8uXKT zn_qpo*M4i6e9`3!y!Pkiq|%|maDs7|r{^Y-neDiSH%%qH&vCURK*V)4+|j54IAdcj6^zw&A<6!X?O$7N~+|iwHf3d0~2<=Wi;{ zs}RFYJ@b-CVO|1uQi$I{%FY?Y?=-g>Bn{D;JW(A zD=hugP*1b(-GLaFDz^cilwbVpnr33$KJGvOc<;wb=?|o>SpwRGqI%7;lpVNJS zVQ8e%!B&zMzDm%QSRvj{SZ|uxK$^kTUZEJDES`#mfnsT()GQPSij`oX1eHp$(#0^| z_!KbJdscPnh=YK4Wm>{es1$z{Z#XntCK(ma32$OFK4PfsuesTk^qfpN zC8AQFlRZbN;u-OF1l{>nUK%6|%WzG0!%(dq{BY1H`;FBMqZ(D8?zW}j<;a@-9Ww6W zR3f7!qiQO$wTK;5rD^a!OmC=&=lNyyEQYc;iQK!0NVm4qNkM%wJ~QfOLkUEmvSfuA z(+dhG2%yR?4?3Qp=u94)Yu3T*lH<7vPt8UW$>dm@O?-(Y8P}w;obAX`jnCFDS*j`A z^8P@AoRvT&OJ!bTj^(mEVBAcWYK#sg%OLm6WwNvwOJ!-GOqQ7>Guq1~sQ`v^lB1+g zg*O2wV9AgUL?T7HYDa*sE*t&Ipz(#Q0Th_1deJ@8YtOFeaXpw3Au=$z976MSp#yrI ze)L|HJ-QH3<2Xkuemjt%*~a-)>6zdr?4HLEHrgo^@~l3=B5$*Yb0XuLK?%(5jEnld zj+hH82gYP-dCUWGi`SckCEmVbI9n>rj&BqNF&}PX7<^Y??gH+fyF@)KPJX9GKRIvZ zx(JItt@2Z!l^zNb782NMx$>q(@Z6R-dMz2dGsGyqIayTXf z=pq}v2Uchxptk>7;?kxhyqF-{Z?ia6Ym{m|%_&E*;PRe$(!67E#8a^pU4gVMN`V~H z0aDQ!z1r;LUx$ubNSc0*`fdD<Ps7G_nT9a5 zpwoHh5G6Z*6mBVzU?xwhnYNUW2Li&yf6y>KBcuJP5cV7w4Y7dRCv-BNEOEMuyxy#)JfQdYa~Y%DH}Vq zxW-O#2|LAv9p#TA7e*30-h+%24(an66QnPldOUAxUBXAo#n6QlN4dBUBl{-fuH<6! z7B-&Y#n&rU6L)-T$N5}^K81Og6@=Pz&n`cT1>Hf<#USoUWxhdRmHileO7|IOZt%jS z(1X-5%Mj5kxRItm5rp~4Z~FP!#>T-m{lla#yFL)Mz2X_P9LBo|3>#1P;-gmO!qyk* znc8T%&ETpWwJfH_*i({Kcf3V{#wxAv62WsZu=3^Ij^O^%<}kh;j0e_|vc}W7+(@n% z8K0FGx$RszW)iksmn$LV6)*Ox z*Uc+2Z()?D%S?4?W(Kwta)TayKl0+YPb9s~(cfyavOaic8yY=+p<3^a{u0JRx#Az< zDnz%yAelaM1(`k#h1*?N8~uuq-r~@BwY3Xy(MB7t6b-{GY%~;?zR6zm{dZ?1>Le}evcnuI>+z*s0rIFK5f5MZt zzl4Y*%y{2&T_v12eVq*m2g;RlwRJC9+E*#p3ekcwR~~Bp%z=h0;T>qs3PRVmR(gi! zhJq%dO1R7NKEP~$p;{?WQBClP#~AY}h4wGtXs|tu+)X8?H^N4tdRP7A$(mj}wydI$ zN{>96C;e&mYCdQ@IeuDo(v40gx31*E_}j{0u~IB(9i~aK?gYaHnoXs?@fx7AoTgM_a2*UWf=G5LcU^HqMTD(9J__4=^1|w z|0r_}^3>w5;Hxo}1`o1t81Ni@b8LiyY1g9XQ663x-w$4N8*Z~{-^cgBS|T}{)}QNN z?`)ddkuxyPL(p)Q5`7;*Ha#PYkhYTOwLDad)g&+0f)>{fMZW{DNXw`SVV*)!)fZZ{ zeKHEw>$V(L?L#hBqe^=VF;yWf)n@uiNj3Um^Kyqe@)JLoyY9kW>f$S^^IyDcWcw*A zb2|p|)q$`%mekB}??6FgFGhh6KyMUJOiv=L6kGxo#%2Ry1v6+>_0!&*tm^35?eEdQ z94I<3${4Rjy?N~iT&!A^b9q_|@T&lKrMcQ@nL>RBnGd9w?6`u=Iue;p3TPkX`%Vu|^ z3z{cD?%lc&j`q=>NG-xxp+H7n{{ZTKP+lutQ;05 z-%sIOMH*g?LdnrDLU%>b->Yt5Pm|>!c?)}c!(#Mw_!(PSEGPX-E6#5hOvZjr`CdzW zdKDHW4+SPPDbpZo@Eq-DM6k+d1ZeTTkyo!yPUhs3B#jTsDVej3o={iW;s6xip0mQtc=bbm^jnb`RFyufgfEh?58s-ycUNa(=LWdP!L_Guyw4X-vEc`cO~Dx9`j8fvCXS} zSw#~-T6vEj<$iR?)ACy4?Jkb`r7<8!1R12X zwU9d#Mi6yS~!cF$H5|fLV2E z-#}h=eX6(E#Y!a@1vUn(!wgo0nJ>%ntPqy4Ew*+ZT4`%p0#tdh~M=<7V~(Ygq22;Um(&C4iU0 z-N4l#Nd%?|CdOIX6cTH`LfTY@j3|foiPuqIETVCGupA&ObO}|lKgX~3yzE3WZU+ow z6cd3TDWr+*DYLqVTEi$q!R=51hD+X!Y zeC{#CJuHh`_D%9VbPlV@BtdVpzgUP>+{HPu)LR@a6-@}?_>USbN$H9%Df#h7L5=Q7 zd3!7L4~PCTJjb0ACKW<*qz>xE40iNp-V8#HWP43AQl_JmxMryw`B6p^jdU3f2$jS_zXNJx6)fF6_F3=nN!Ke?%Xiw`k85O@9FAn;_n@n=0^l9xai+aBd8_T=>Xua8H5dXQj zKHRIte`)M9t7rw`nGVl3p5Lv~^k%vPU8_u2LMovy1*34c8^as`=%hJ-IRG4=0?Yy6 zgcM*704JsZa{$1IIU44;WMq*-S(FV*2F;6TFB1i7o6jdme_r%DGJ_6%*kd4qppdnZ}!jF(;EE8vKrhSaG$;KnYj|@fLw=O`JH2COw8F-M6~b)^rcEa=L0TcCDjRZ43|=GwFbSLazv2Awt#YK% zw7(|vh|1aMTIT&s6y~*Jn=#om`;!o6EDgbmZd9gEWyiY0rd2Dd6YrOP1i6`%?zstF z#okT=wb^;SQd+ZJaz8i+wONOkCh~Sc8b?a@UL+-O8Mc1fyd;tcO?`6)6qcw{ z#SK7?zk|q5FI-r>5h!b%t~O%F6vMY16ihziN&NPbBPq zD1XOzb9(#n;{aj4%@<#QXRObS8f;!y8}j~0L|R=K)h((x{|q?mUfcZZDKNFk+Ch+HuA!^eCTCVOICwBu~<;Ip$|EH5;;6> zHPe3VN-I84rIku|rI8ILWL!21Zgl46oji7q{(59ZzZ6I1zMl7H$=4*rhBOJPC!~@U zG%a}pzQ&#ftfCuFVq(JflSy__AcHTeOjrU;cGcJjeE!@eFq;o>FqG87sIAd2L|l$v z$}!&hzG}=qbxV@+5QxJx=@k{`?NOU{?P^UQ9rkZ%&^2NjBfA z#piCIn|JL7oiG#qEAwk353Xd13_WwMiE%Hqe(L;1jO-cz>`k zt6VXwr&(HC|J58-Bo(Ho=4M)g==bt6(5O0>jfwx7JV#kM_|Y0nIMWML=)Pv z?ve}F&RB@e#9o+gvNj$A&55~j?lM{-Jlvw4_D!{0;<`a=WfdTrVS%wbBPYz!}>yNUS*_G)NW?tHc`%O3MX|XQ-!mV;c{a|SITXrTm%%&_sx@+x~!#g#{ z(ghuIxz$j@+J75Lm~K5C9;I7Mn9zwB$zeKnGP^KNY38=)a#P236zO)SNDk9YHgvSf zi)3ts=BpXN0_%8lAjK+xMMe2;Y(bV~V zH_ZAbNb(8iI^ zw2jLfJwKRZL>^S5vso7@ht4<4&J}t9hkFHQBb7#im?T&*Jz)P{S7v{sD@kuoIjv3}Mt{(FFy)@V0${Mo0QJEc!(>S!uJw7vJBJa5NlRsNiZ>_0 zRiN$JLg&8HXhie3^@xR?z|&BsEmP;-7=1<9@`RbHR z(Mrb63%-T&K#Ub809mYHoW@ax*ZEWc6<&0TWSD?Q1dcSe8S~dP!BB3yF{-bFM=L$| zqI3Br;s<^RaZa4c;|Pq_yg7-5$!3j;2dK%IQ;0)|Ayvh2+kdbF zl=|(uWbrjjh*@n&%7!*9pSu@{&;zPuVy*TB$Z`6e!2RN086TU5A7y`P`yLXZ1L%aB zXMdN3I&oR5F|GrL)YAd_nXvE1(U>vz2Kb1NWf!eGZ7#XtcL`y$`kUhQmFm@*J~Hma z)hq35ZX!uZi@ma}!=^DvB|l44i@+ZHVz}+G3_nU5k9yhMi8psCJdPgW-hM1KqqQ61 z6;mV2oBjGkO!Y2rX2_=@e|2m1AmM1YYS$iZueSDI?azqmsNgogT694G@S9G-%>Su7qIN)=l7bd>FrN{gv3%m z=Rd1k`@W^3aQ3a|M znpk6tqs*m<5$2KfYM$$XRAH@bwmk%9pI0bF9B&OvR{2V4;o3T5zT^sRm7fqv{673Ayi0cctzKm zE+wP#53T<}@m10^X4&Dd#0r?~36`zJt?^`zFr{elaByGa<=EvwTSb_7Tje!ZdO@l< z2B3)kMO*Jp*JgNcA+115^nod2nLb4i8KSy2H)WeA!&0_5K;30=fVN+|DP?!aUQjAd zez8=X;t+rqiy&5Q6pFLhTu*D~t{+ER#Eha4raa$8_ruAbuYno$yJGMTxAHK(_l+Cl zgkidMZ~hloD_Cko3dPbye|@5RNuslWQJB~!xoswQOx$G z6#Sw<247UmO=}dvsXK6oT9-9Q476D_aZx^HRvB7vvQeQ1gxYOfW+I^rltj41Yu#^X zoYHoKM~90{wEyOG-dmAP(ynP5jx&7giZLv4gikA@WoLL;GBE>GjG3<~kKMn&TpXoA zpwZ(bpKA!A<<^q>az{N%U0vo!lF2SRdHCOF%6K9#+FOzE6t>o}H15*&;$0-y+Z-*% z*Wu_1TUTXa@JGi!Wwv#F7LYLf4+mt}@jINGe!S!NYDVWLNK(i0@cj1EAURKl=`DM6 zdbgQ=ON!xmP;3t7pk+jX#PC7kG4?7)7+_bZ<}lHqn`LGMyV3I6n35!MgItvKJ)#ob zh%YPY4(K7OafUXKGR=1`48{yD>D{Xy9FAPohw;Y3g_{ITJ2U2s&I3CuNZE_mV=Sh? zuQ%!!v~MOt*=PTN)GdAnkIjD2`Z0VN#EYLP__KJ}=G(G%;tHicmPGD~=xO(BdGu%q zJeU%2BwYybdLbcfYi5)-dwr!RUIeL4qezpDmXS%YRSP;mr@#lNZCsm$1LsW^FCSfkZkht=@Oqh@G!G4-bMRb+$*$#X z4fs*$gKe8=y$>>OPb8y+Gr%%h<^8KSo9dU@W0*Lo(YY1t(HZ{g^;`+rQVVdihZ?0_ zVcb1W>HMFm+pODO1~q2huxtS4Wb*Q8Q1fW?3_0r zJxzX-T`U*;YrdX#&i2)KZk~(2RI3km*<9mPpWQXdewtx++}K>H6JHXartVI1Nym)C8OSXk%>$$gU9B+A zBxR8Pd~~f~m$&N3io+eziz!04as4H@oS50oo(SBEqG1GE@xP}l!uMh^jcQ9!31?y0w zmePE=g;R4-^<}x?;8nsriQ}!Rtf}9{%p`0@b%__<0i^ZEFyciV3ka?GV49=#7UOMM zA2IDn8ZEOGT{#==8_1M9wE&@7x>+uJy> zJdkZBQ^@8#-T+fRM|US+W6bwS#_bs z5fk(buH;~-N^*Ym9>N;`mL*3Ih83;&P7-hL;W1AqhG_&n18p_oym40`-I+jZH9_>3 zkcr+cTF>|VIZ^Q~lF`?4^oA0QS0S)l{VXp>hI7YYFDc3Q5v@FA$!XNOfJqMGmw{Tz z_k{6XIM{LAJc)kv%W?OW;&&2ZbXB1gzXE@W^K1B^8oep!#7`MQuman0HODU%$8z zzsk5-Gj-rduO_rL2C?XW;IcWF*T}(Mu6QpF7Rgu{8{NrS=7}A^UJI-mzm8}8df~CW zYOCnwJJeBfw}4=zS%0pC18hp?NHHf0-yjG*ur*VCm6AGk3D=eK5L+jEnqH~5xaRot z=n@s(x)5^J7?=57_54PylN&VJ{}T^063svI>KD445pQavSBRC5KIR6Z_alw?jrcs1 zRZsI|j}4xmW&)C9-b}D|5Q<*(S0Hn)nSL3o+=dfsuYUVuBJw7P=t?P06FRZKSbKZC z97BiPvEt33?R^PP=fQ=Fpsyq;)*H;N2lZ{^1I@$zTJ!-3vWYzYV-T8kmI;>t`b+J1 zbs?zm(lp=Z_74^6FglClDFyS-s+cH5bsT7n;4m?g7?*GmqZYo_5@oNBdXi zqCdsqxA#N4;kUn|7j%>d3`p*H(VJ7{V1M#k!5r*i4r#(wqhkCvAbll2ek;+Gqr&(q zu`M9?eipDbcE*tTk)j+0Ny@OAfB z69K#vq`u}*Nt^#T*<;l^`g7c)L9KUxwd97%-`QU-jdHAilz?wBZy+ArxN{(P8jnF)>tZFp1^?(KhqFMv4Gbgk)AMxx z>1!;;jaiH}%VSLIma;or*{mSM$hwO;SAn?$>% zE85pqDB3%+Xem1#hOrW0d@RG@ETah5534UMr+kQP)4PSrmoqA9It)7#!JKaxKg}@G zbVmM{(kU91KV($Wbe@}~^COhA(5jTvB1Eu3)-Zqy2xgNp8X>Pet^KSZ@Bxjo&+IhN*q!{O@CrfdUK6q za{YL7XS6;*-Zr*BNX$jmV;0@heiw5o+S>CRK`-~__T#PT#oAu zZ0f1T4-mIdBWw+5ylT80G@-ycW0Ju1TST{L7jGrRwww(qmqbF>c@nxqgc;ppH(f_T zoxhY}nWuzeB^-|uia0lP@tQzw6Jf@osB@CoB||^Zs8-4;Ef+95J5X*8s-tLP zNdkeEl1%obO!a~?Ad&PM=GK*!UOJu$$Gy$(64ioxTyTG-XMj~CD~X=w$B8UK4)lR$ zj{cOKiw0*3G72u8*_nYpI9rAXw4c%`Rr+eKq=v{*|B$(tQgpYZhGN4wEiN$E64-r( z$NlmT+$&n>0(@HlH1MhLII&7HcJ8FuumU;{Qf3BNL^v^r)h;)lVu!Tt(Z+m)ix&9u z%wjN)Ba6Z0jjlp_v0hvl#qeJhYfhnhD_C!Z>uurG5#0rF0eWx>sxZjavnX*Ge}Z&} zv2Q{Ad+B(7`Zr)=PyZfxufr+EKNjXEf!O^hec@OH*zv}bfidfSVTzhuiNrUOli!}Y?wceauw7W{%5BJ9Z2xH9T zF*0P8a`HRyD+Hp^_<8f0b0J*k{;N_o9Et#b~BOuDCb;tjHz99LL1uSG@Rl60Wt=x!hB88*a+=9tkP+(T}Fg zP9x7Qd4F$mREV7|itX=hy+neTCH`)Q5-dXrmZFH6`0Fs?_*$R=58}Ve{An`r2bY0@ zyM6KQHKSK;v}GAxX7C#LB;#2En)%(wod%i|-d7w> znYS6?ecWvDMZ;egCV=$`;)X&3h(3!lBo~H+@fA>uerr;cP08m*(3R7Xn;nrY4>}Fy z_`eRw_Uz}@Njn=`NY1y0xk}BQZ)GLVMDzm)qP}g$0Ab_mJC@*E(>RCfMRSK(2feZuv~T>(}8f9=5RRKjZ+V$LydGe?&d@~whzUj zt~nfcT~i;I`GxHtxq{YS+Kb^+f2|**FV*&1ifi$8@YecQ{59u)J^uEQ3VDNEUqK3s z|5Gk?SQp=jYe7+>0Z|8=N7xR!9CW^pQHgp|)pljM6Sy>RdO=X=B zD=#P!Fa8?N(Q2#E%e-vsXr9(2xoz4G#gD%Z4q6#~gZH;Y)6D_&=C+>b^it!4BY>Zk zrP0%!#y5!vfr2BD*b)zG-@mpK|0v?0eW3U{q*m5#?9BtxSiRBFNUcAkg<%Q6pMR4w z7|ieEC1sY^y2b*uH%L5MwE8*41=b%c^bBuKZ)Y6$>_XkpOBqTB*KRu_-dNjuCZb|E z(Qb$i;KTG*S6lR$T;|xMcJ7U_ONiqrzXa%;d7b|gB}86jKWn_tksc4-c{3(8IWQgU z3*-L~6}thy)0WUY3{7!$Uu1z*F4UeAu_U3ASFJ_AQ8Y}x;LhT_9Q;j^N78iNg^8K} zQ_JLyH0<+l6+6-qX4kcsi#nxHJHhXqT#8J5cWyt0NG8?2@iQQ{xf{kJw87YY>&=O@ z7T3f1x8a)pIhl31wRld3&UuE+!=CvmuK!WewW0VHg1JMZR*l9;dipQ2m{mjWD-}{? z_U9$YLkTh+z#Q9du-PJ3O^B6KV$JJZK>U2AacU_VC56$lgr~G>Wv)ziklIiJDW;I2 z;RKS9cp)Tc(37ZM62V)JrmGE(^O)`R<|GJr!`Gk*h07o89zTi7i++t%H9a2Azg=<| z2=@1F<^a1qY@6NBo+K1Ubq|ZOV*Q>KeUC<>S9_y_?(DBEZP^9V+RLwtYP1&u8=gB? z#=q-l0Fs-`N2WA`j@a?lPC zhnQ!d!kbw$gY=WNriQiag-6P{`SLchD*84KAsB(-j zY1*TcC`DG>w(C`k&eE$Iox{rw@aOImy85o>Kq{Y20p+LYi0f3g-0n7n_*4zQi z0f1)R0n7n_*4+Wj0pLq1z#Qo9V0^BaO6}bF&dxQ_;EtV(&J&7_v)IIwdz^40ec2=4 zkI^6FN_l<8!;7}r^JJdUC5W=&k4|6>z4$mFwVCn5Tc1E$sn?Xb^>xYbcBr_v%#Y3o zcl6P|EVA!c_ih>sH`|_RU1sr+R2V9;3-a|A0d zF8kQx<>-~H)ZM2)=(t-N97eDVxJ?6f ztS&|0m6P=+Mp*3O-9rR`-vc=IJ*L-64^%Itt#@Oug01Z~DsH}>aTfL>SHCOgzX;mg zm$KsUN2g~2ecdDC_9AMEo=Zdey>PEr-D{U<+D#t}O8%MMk?OaS^V|h0qeSp`-od^b ztx)xHyUX_w8ArHS%wenKr)wxCZhF zv65$TW^ep8l8i1?y4hB2lKxC-ptyf}AZ%6oayKxuc?Ck+9S)SM1Ke@MTt$!VNVmJI zzC+v!w@+%zQ>9GY?|e&A(;a*syDrwB=jJ4Hyk7Muxs?TzUw`hN_v)w#cffdajQY(U zeKL7}DtUi8tq$g(gK#FfmW}#Mf^e^UN5?yObhh5laCkMAFXt4|n-jgLpS{}+%0PSJ zhDrDFX1^F02b;!LZuZ*WCx={qEdXo1e!KuJZ@i~<9s)=%^f7(%;~#)2x?6ep2DNlpQA>(yts~BMi7f7im&H}d_zQw|;tJ*^ai7r@ zm+AjBXI<$E+KFo_GVIblt}8Cf154t%bOr6iwRDrX51`+vKt8f8uF~)q1ntD_PWNxS z;(l~lT$iq(ow(iUKEEsO$2xI0Fg~z)xga1>lOB((RrASd7zwAD>_iZ7S%f3g2p{i6 zSc|I2E4Je6C_*|!ez5IFEJ^u|pLdE`>JLs3shB&p&}l*I1z5D`CzuxIDXLZqF0RYA zYR0m-miIY5m&A2y$yFmxRZVMQP^xJJtfrU(C#jh2y&U0DlPk>~Nd~QnXTP$EE~(5D zC#SjZs>#f3xSGr*r-`7us_{yNsv4V2Cin5F1G67((t8r==`@R<*gcN496nX+GG9SH zF<<58qw_sYySzH!c!f*HuCy*q{Zmkw^71`hhD>;7$jYHf#;s>NciHS$U~P@^>v41k zm0}jQy2bOjJCO^iUya}Osq;FUo38)Y!r{x)9+kgI=OON@Z<(E812#8Pe?PSQiRcsN zb5|4R$({C~K5iyHk!6@z{GL=TW!3xH130f{GXcVd@*r?@0>Uci^kKABz8xi^JHFq2hau4Xv*pWAzqS=j6u4=$zJ2^( zIb<@V6D46V&aHz)FW*%ku})JLV9Wr+vp#qF`CC@xz6U-1wO%VVw!Xe>bL(B1SGKqH z@ysjR+WKkcm3p=c{b^j;$<~I~0Rw|<>@rPprv;IR}6uDS03;V{?X)Yuyn(02iGdQqTu7ZxD( zake6(r${%_ex{8Y=w}u~t_aWinE%ESkwyR@B_EI@9IM6s<75DTf4ib3qf*8TJF`$tzGllgpUO}(cM_`$|gq7CMO(?O{_y# zBPrWqjbt;kt6god>}u8o?}mo6tD!dByZRaC{v0NsiagstRV8jVlSKHoow{2+L1F9q zWDw-1H7fomP`O!*>hO8)O8pr=PIJAI{{H-T;F#F}z2bico>Fr)n2Az_q@~V>8eERp z?`KtYUs8KnX22wLYA@});?ezQ1By2<1uj&HdHpdOx{_0No#&rzWH#EkyHit{DN7IeJwJhn#jB|p$B zKmUCpGx`uz(r#_EY!HlYB@^4WyHSAC!FynBRyxsJuzrW(IBW2_p#9ryGi`3(zq>GThU*Uz&&zFF?^k>(8V zq~yjxJB8m6KcE+lpWHl-+caMY3GUK-5ijk}lqfdEe`-KWN^7VN_%;VrntW80D@`i} zW+D>yf^E;H42r?TPR~fXNJeNzpN|oV_{~I}I%x@lh|YM?^A&PrSX`hsr}mnyV_n?L z8aG9(ia72j-$i`ltS-+(F=q!@19mFV>RHKjg}VW#wGFq;Ud11R_B8hc&`xzF)5YY( zsgBu)hI6acQsV9;SL^zv#OWw3B`#TWz&8`n7OuKFaM~x`s<<6YH}&Q=`AdN2w|rRIICG3Efd8=CuhbX`NWkE^tANs*+xOe>h~2I%gQa*uCpK81IpyXvBB=XW?ipchRY zw}hTw>muG9SrXQ)EDiP0Ty797Vi=w6&^LFjkNj?kKkWR_66CAVOOc0VruE-t=Il;p zjv}2Ye(TcAjCF{4j4z^>L6vHkrJzI0f-AM=a{ec8cQ(Y`^Lmlw(;w_DbGH4JJz>3^ z?qsh{@DapUQigU@>`X5oHBf2%9LQ#Hi*ImqPDj9##y}j&FB3b+ztZ;j_XPPubuv$1 zu*um^kxB562jALXpOrDSiN5s_x%r~~3$W(t0%=1<)ti&cFSMCC3FBW9_G+S1UUJec|q}yLYe*|5-hII7jV-(ivPHv`DsL8`P&1ySmm+59x-jGd|WhjXm zrukeJpyTzz>X>skpQM_4F|ugCR99;kym=+e-g(XUS!+HoLhch1-1zRuMvH`Yw=dzm zXuCWX9tdBiDZ76or!l?dvgcwIIvJr^=`iD(k%!=HbZFTyLsxeFj+>zB%0-MUU`|p*7s3xtI?czLgJ{D*uSU?b5u(1eBwZVrN3&;*}h7Dt>Vty;T&rH4$F;W zm}4|EX5sNfn9#B{bAqbF*TwL*>&b>|If_Z6Jn^XR_O3WHJJ6FR@0!pa*RCvW<+3*7 zNXmTYG97cwAF7R@i&8H3Oz%fTsa?fbbun6-nPAP8FFf9*{-9|@m}&%CZGU<@TaVId zANEtxp*%Wdo!oJDtEMs3Gt#7rVl+3q9w&RYlQu=nG}kQiTmNTGx_P^cv&p?`U3BkE zrUnx=j8W$6qS|SLs%ab4hrBL*xbo_>5D4otF#ms0SdU*Ktf7vu)Ow*qPFN#c#liPB zSxa+`)*7*dM=ce##dQ-8D5f_$F^%ylb=}UDiN~UL1k;dUIvY$G7;BhCUqr(!8ZX;m z%COi*RPt+NmHLG(ztCwUwKmGj<|@27BV|Em?8?cFP91P)^K}-_&)rVErrH7;SSIE^ zcPRp}?;G&F0`hu?`G2jdg+=AtN3CO5We1$S==Gq)|KS33<~l+0qSq=QiP5=K7v@DkI^ewRDfE{+jMsomwVFxe=0C;o&a{%~F z3NXjoHm~yTlS~7H|yQ@)PkmM0Mx?dx4OI9BHt@yn}65@TT7bx*sf%@pJ&h z90{@hT4@kK-qV1Up7|8|H%aL4mxRjK73wscPtJLHrch_sPvpr=^E8Okhfj%4`r*PS zI^H9gBo}8r1&ihv68@(gS07QjCX#K3QAgAIbrzYpT;&n8H6O`Ed6prj-16~d0Q6Za zZX}96YS9b%_;LXmKIfy4$;Is~r|@Qm@x8nX^iu-u*~(o3%^=@?IzToj`!N|T^8xP; zO+=B<1ey|Mv-JU~I$J<}UdC%azFJHioSi-F9?D)cM0%sObJhN1aC4R?oCOAuPN|-7jDvJa@&vV>;B*o?fqO9p>6Ft6Qn4^mF4y^=bg@k@9WynK8I?^R6J$G73|3-Lv~g8T^|Mg(DS7q^X-kJq$islNUAKehLj$G_3S zx(4JY*z9Wetdv&q#SMp5jL#rg^+Egm9z%Mpy|6u&95D8(7WFAFZU&@wxmD+&*0UezwLsZh z(sfx97g)J{;2x&v@T1f7pMLH(XfhtEwANM9wFw!G)>P(|Qnk*`ywa$lJIVGs-DPoo z3TIBY^@5IPQ8I4bodOnBF0Hp@UX^I;-ps3c8f}5%zxJv;9iGTSr41VGW9!Qx>JGnh zxXw11uxcFp^4aw5Zqz8Q_4tI{XQ82+|KK*p(wDiu$JZ+g zcy8XG-(2n4&-NJ^Y_~t}qFm{!Tt39BGbE?N%dP|R;#(^0FM8MsIQm<2rQ;lZ)orvO zcb(+_FRuyu6m?rVP!z0e3^F#Z9qO3*q_VLx$hNhbcM zF84ooxqsf}{v~ei_^F;WO=T;vEtG8{I#Qos$MmX3=Jmc=eP*dl&p2q!k_7!Rdbs6S zF)QJwfx@wL3~~<)Ec7uj9lLBpy9oBC)>WWZqmsE}+_l6#k9#O_zXbPi;(k5uwTb)f zxYs4_zr?-X+z$*aDv2beN`dRtIeStbeP*S|HAt=txsvyKen;~=hTnF6GWg9WtY${x zGq61UR=o1uC(r8=&u8U%Y2snOMmVi%A+*ooX+BG?FUs|FxxOsdm2%xH*A6b8<^Iz| zKBYv69VrR%^FrLpbx$2cZgVneFGc(ZAr@2G)b#HI80%^MHF9v9#7XCf0nIjAkc;h9 zpz-(K1+B9QGnK%-Q*NmNZc_=V0q$LbOARc>v%6y4eUKOyJBx8oSB#JRw=rD*<4%pkALDk$VN>fJxHlw5<3qSNChkw*u9p(eKgz>_1Z2Fa^>ulA63=(# z=}kO8m8UQ9{Hr|uiRX9ntV}#B*5Fx{cuMkA5>G{*)rn_Vo`J-3m^_1t=V*D>B%ZDE zq*6Ino>VL+%j4vN5tKL+sg_m;W&@AqwitQ^rw^l-d48+;)%lI`JC@%W{GQ0~Qhw-4 zZa2Rd@Wa68-o)>n{656*Q~bWn?|b}y!H=dshpci{emdjFHi+Db{H9Omfd-uoW3kl> zJU4cG-qP*)$8Jx)+7)N4+jB*?=Ox{q_jY^kKd7gt)qna1AekLxQ zVMq}8XhmxOoWV-q&M+1e)96~1B*R@O= z7qYYun|~8O5~w)%LL=z35oD5A`YN3b68~-m!n$ zUoMO?pvR_h^=mqo>C3G>DjmzX?`qrtJ}cCG^MXoek}Siu;; z<5sR$-0O5h=K=oY%c-8Mu(q&;EcAg6G$UTatEbRcvT=kO&+eaxe=WZIi;){F?f}MD$4`yI#(3n3JPyLG)kC6Vp9Z7ZT|ZGOH5Y z{Zm>a{CfFuaTQ-TGNP<=N8dEpDqO!`nozn3%tSCo#Z66{0{}L{0n7maYvBOq06;Bp z0CNDKJ~)6m0H93{U=9H2l>?YV<>u=QhQ2{uaR=BL>$s#eed0c=%bn;-VPDw!&aNf3 zFI?Bs_-9|pVN0d3FWk_2t^sV0gKzK7T>+RY)$MteJ-J*c@SbxG&*_k6n(3c&wjfCZzf>aeSK(r;lHWq&}nTxlhsK2D#thDL0wKtU4#(Y!^}Tt^BKx z`V7U9T92+8w8^XA;_l%?sTp37yLeSDM|LZ1R#+GkhS4zm&9})&82uaQn{}%kmDuAh z*I(f`qtjb-(;>yyyJUGZ8)9{w?=;6*CfyR_M?gq`?9fT>7QH>~u$0UuXd-z@g7`ljQ#c=KR7j=LlrbWT(_#n$%P z*y;rG$rLiWx!Af_+^aWMY<*u&^?dlYvz%&br-z|*Fsy8#KmG6hS$hB8P5n0=>MMsc z>TBdQ>K`Irv2|dq4)wbYYn@^_PPcYwb+BTvy2Zt^^ziKIK_XF2nrqN;5?VBUnh|_V zhv0b~f=`swnA-?eIQJZcs1+>Sz#Q86B zx`O{rmcWRyabT>KYf~BhCsy%bv<}O#z66$&zzD5nPEwdspiBO2IbHIP%c8u=2p<@0 zSB5obgjGbfsjaJ5%w3DCUOG7ab{6yGEavdkbbU7ZHOf9V(N#=$3)M0BZaE!;AIS)) zJ#gAFJT;LJP=z{hyl-dmKGl=TLc2+R?!v zb?|Iz{M6-GQwnm~IWfc9x*V%3(@)N@dcbNwh^RCl%qdl~l$RrPUD=wMy?Heb8AN7k zUJV5wIhj{ep|=_f;{S)NP0?m?S~8QBU``Fl9j{^2x{}8NBY2VLcL8^``D=SZ*K<%WG zFQth;(C;yXUCfWJR_?6{-aqnYmqTtHN_H|o#p_nWuLIMqd7Dt>$MWOoOzzeEy6LkL zpJQ@ASE2!%;P+&HbNt@K@00xgh2H??=U9F_`Q6Ts?}q0-&+j+oalw#UZd>l40#R1lGGVtZNT}b$^C+$|0~; z)YD>Ke+aCt8Pv@O3x-Y}Jaju>(mUZ zcnGW)WLV#$N*zoRpUkj6dJIm zF)y+u&>ag{{w6=#(|#6u_ACm33&HF{!X9@iBJ)su$~uTP(1+#&>@?c!@+w3d@%D1H zex0|jK=J2ZPOo{OS{F3d538+CTeO-Ju z&&wjt46IBeu6#&DL6$}wOp&|Ek?p=T+pHP5E$iEc*b!I^VXZbhuqp^=hb|moC)_RM zy1KREm5SA3rPATkUx++T2|R(|QL?hCQelTCTi?n}WZ-<8Ou|WqXDX}08B28I%)n}Y z?rzF#wCvt{b~RU22L`GGgU!P#tG&wVaE6Syu*%@xcr%2ER2hWV!OCD|VDjsJe4`3z zjaOMC^vb}{4#m;8AIr?E`L;a;LtgPMeY;}l`ok%zZ98@`%T?RSU807!PNgfnF~8d6 zAj~@PwXlFm&Ne;|cZtMHTAMqBLn}QP`P|?*^OdTpneXjTJEG zR2y6!hCv8HNAL~`ShIH;KfIoPtU29 zUd&Da;^}F(o1IUE>ZBj71m3vBznLjXkE`SSo8)j@RdwrMGz@}Wv8#^+MF`Qp#v8>A z^0&Eh&JtKtd4_ZCt=h<&j)Cq^>qHs_p`5p^z4j$okcIn{1h+nDA5hf9Y$S&5>(${} zZVAjhSPNy^h19t`N|{c4tGq~=HlH8rlflf6iy_@9d9F!R8*{s8`)dPEM`YCfjq+yn z{d%wbSqgrAmHb&6jc=sH-oU=$gb>c5gb2>zBtFiyNmM&;<>$^%^BgV9^Q*XLG$fnG zm3iu9%$Rb%p@b#p8%Y>4pA=5j`ZP2dZ+86im}W+g}Qf1 z*-bLt4OY&5tI1I}SVBld(G8Y7e5>1roz^qf`5hlF@gVvY2``~%siS@m4KW6SjRy!Z z9)f!B0fLN=puVarDCOmvWxTxd0DRPDmO>p5L(8Bp{o!R$m-N~M%3%WkCYC9@sDWr2 zz;YCy61dp z-E+RQ?#ajP01;COVS7wQa7XLgbcwu37b3gQ9i1#wbek8A6Z|>j`Wzrr1<$h3@Y=^I z6X*DL!*5_uQ>?~uD_1;Fon^iw-YODsH>meQRe$Yci4~oo$MHPu8s)|3OLsY15^x-p zYOzs-xt<`}AjjH;7btk6w`gxWTQP|Y=)@%7DynngWwpTt46C`o;%?IVLUbm_2R3uO zj+3O(Y&&;zoqfB#xq35~hsKH>v~PBUYq(&1c*c|NaS3c6ljO~pdxQL4+qJcc zMXMP+Jhm6iJ0vfU?Y}j|VR?CM|EYP`%FAQ>H_W?EULM=;HScq+uvZ`dP#mgx8LaiWdrb>y2bPBJ?7&%btArB^YNUz0$-o`cuqYTU%&ZyPMwKw zrTKW$Ow(eRk0;HvU$2;tC(X29Uu`~~G}C^4zyirP}(P>C_lS z(i+&zp416+iDNjr5U1*}wYMTPdq3xF(;1XpnZ{ryl8ZG$Ra`lHaSk~r&3=8vId!Ph zY`gSoAl%br9{|Qjka&9W#41_wu|DqZ zJ|95)8InR6e-(-MI8YdW0nd1b!R&aryU;)^n5UZ=!Fbl)GEUX+;|ffKSPQO6%&KP68dM2&PaOMcGW*#3ph` z&d0e-Mjt1S$?>-Oi2EEpM^`%^`sC!MgJNPYL{Qmhh0V^Ye(8_yq>7?GvU7~j1UJ2U z>>{P`RVnaBgnUOu47gjWCz0D{r z?&X7u(lCFgKfb24$+<6$Rq@&RzKfU6e-{grU*a0>RSa|zlS;S!I%-L(6I{uKmIy5S;^j6#>lX2DFornM1x_jx-e7~{ zzE8%de#wDx6A3;9H?V!ii%aP4Oz0-x{0^fh0pP|Q-7o7-!fMQQ9%Sby^TcYfvkc}O>-~wIK?RDiT2D@B?_4BGOPLd#u5tqlJ-K}+7 zSNeN))n=1h_&5yC=8az?B4wp_ZJSldGPfMHNmHpu=UEPmTdyw+&Dd>3!oNfxA!2El zW{WAE$*H0$_xS5d>pohDi&pe`b~={7hT}?(&>7QOT_|P zYOT`1i*!eOx&AloH&*>(s3vEe4{X&Zt5(++Uo7QD$zP%OtFUty5tAycX&i6iE}rw6 zh4U6(Cg&@87>{|K+si%A%3k4nn0y%j$DaMQibMuo07OJ6HsY2-Q^9l}!v}9YA=IxfI7|GJ43zMd43?^v`Y-tLZrI}#N z+^JyFw7_L)8qQ`HM!S%>um;A5XXnDZm^IAvC1)OxE;(ax0>< zK%hdOEj-ycKNkakk?HNZ0DJx)*3JY@uAl`T&(hQCtWr5T1zpf{5aV2qGZLA_5AdqA0lU>wEG4 z{hhkErze2=-v8y3>09fmQ>UsG^Y7O2(Tw_VJr9 z#AlUj9j5Sd>u^5fw#M_D7SvS8mevu9Zt8c{H-PAzo78Npu8`ja7#&+LQrf|^2>DzQ zM=HGBdNH5M;p8xXQ{FADmng2O-|7faau~H+M=4^i0UIbj#?<6ZfmT-DtkK6eI1VNw z^cp`pn$XHl31S_vh7wqltER}HIs!-^-zw}Xf9ZyO{>bTPKVtPzEc0HAAFaV9Tl@WX zFg+^haQ+y|>JKXl`$tO(>-4Q4VtFp{Rgh(u1Th2HO3g}uniu)5RwaQLVCdM*^ zGof-FgDWf9Cg{y9&4)HvR(uH+%RaBu)g~+e(ki@6Rp?^QVN}^af8uNKVqN2)+D!&L zjnH04&zj{0wC4=*OJrN`V(MEtJwpSiT3txBVY^zK&S-m1Sj+hgQ8e$W#aV&0T0Ezv z2)kX^RZA~4+pdhC8O^8;3AaWda`m_;A?=C_<|Mp(bAn3}!Ih&%b-!}*{}FC$i_eJL z+F5>iMJ88X`khR9>E&~bZCNMT-EZpK?-tB9zg$U=W^GAdS4_2#OhLQMj_3&M%h1`{NlsYX?SSxVLv1K^c9fJ%Z)uF{ z3KZ{4nNr|o~ij=Z>`cSu{<<^Ag%kp{GmEMsA?EO7B z8c&rSnY0e_lC{Z?AvBXx^l~8SLZB1)!mQs*BlyktsVQEekmgl#o~T4$3N|5K`?cZv za}Y`HmD_IYiC;;qZ7C;@H3Sjd5$+*Av_Jj#Qu@Z!{_&wwnc4nvhC|&iZ~NR{v0gQw z8RoYXd4u~^KyeF2IQ-9@en@=xE$VBT=!4WCW1FCE2|BPZC~?kx%jwp&6K~j{z8(bMNSqfh{sF6mvLbR zC}Y4gt*a?}l#TDoQLbD%45~XTrIfWa@kRhwm$CP4-smGhbOcWmXq&Us9iKuDcZrtX zintC|(5^sdxvm%&;wr-$jQaG2mE~-(TaEhi87@9Mj}qXkOiJ`BR_&#Hl1tTNp+*+0 z_m|#fJjnM(AS+}?A0nFS!IUyLp0xMed9Z_EmUldz!u5kr=G0!)Th&g{hm|MkQm>{a zh=;s(r+&7$n>kpHeCry1E0IeTbus_-%nqX0keUl@EYd}VaZK0<>hs1Y0ZX@jt=~9} zpq6^9-#A@P^;kcuO(iBNAn4ez25VW z@ige5i03s|OWe_+)H_5lUL|vQ1@`JtyMHNOl-w@9 z-RTr>y-vN$9N;Y;&W4xH$y1^_J9a1FcgE+bQ~R0H{-EJYG;}F)@n+RVYMFL^Hn67W zzjeF()o0JIeKE%A^!ySN+vRgjUi<@^;^_zofA$l+cWsxyo%O^_7Yxsi<4ExC=5G#v zvYV(ZPQg}|2Mt585+yaQ3W9Be-@o_|zlNY5%@CYKknp@0m z`U;h>akPuoJ{R3fc=Et&?Wx=*Rgwc;ZfhI^`0JtODHMXJC9okk-PeBUAj+U7Vpk@4Nhp2K~(lR>k;pb!N`b(K&<=CW|a*nGF zI3`osKWVh>f~&3xb;J!AJJAHCtlIPaU{vVPxX>Ti-?Pr2bnS{%&mw@fijBK=u+-5- z@YWX)>H2@h)?$I^6FopE3;JB6NMT01y{L`F8C$Cj3=g@pd3S=twB97H7hP{#d5bMA zTShil$@U}AUG?_QvBzXrt6C1?93|ENDrmKK-wbRa=Z~e)bCyhtW_s4_muzg=Ovs&7 zzUjEHq#i+h9^>2k?dx%f|9_i`{agGWy{+l*qlZMG@A%R8`BoQDq$(J!chhfz05udM zYzj0#;bQd}ecU%Mf=iOk`KRS|K?wllTFZ#C)+P;Uk8K;z`NSiZK)v@+w{kI%GO&a) zP9#^Z>1N z)#*H;5w5Y|MwD-zaGmyfxZ7=m(jmA#*7;R>+Tn2P`M^x2H`m;$5N887exoX3Qq;d& zHQG4iJr~#*Dlm3UJ`7rD+j$)}FpKTJci8PU~}>AH4-nt=B(Ckxo^Kv6COY z6|d8GDS}Np_2*$qx=MI!htz?X?YT@j18CMEPOeiOub!S(58$e%Q`NLevhOoFxP8rf z3a*CkeOId^r`wjKb;P|itt0L|TpdrM01?crzEFw(*m4S}$e z6@hu1U)5l{OhK<_cKwu+Oe{sz9*Az0o2v`4AZRJo=tN*KD|@y4JX3ws@pn$;EA8lN z?I8aaSK}Ocp^fJ5-S}Q(G!l>?ej8=g*fR93=pcSO{`hi!bmO;77aG6gCqkU40J7bC zZW9LL9qWO&)!->8h@Ypu;+XTlxp)s5JNQk7XDmE370y+f(H{Vek+pp})xA7BhgRv& z7nWxA=580O&&k|~e$m*q^;^dr1AC!weJ9v-JrC4WOTiiX#vhhN!4Wg5Xt0Sh1s0)i z{0*>h5#@~th|%jB z+dzD?#Lgc890iH zg2+Lhytc?McSerYA5bgPg2l5f_V1msb+-c33uS?=#a8Nxu%IzBt#8(BX|7d$^@4Rb zuZ#KvTcR$-D`aU`y%e>35f1>J&u~VSg7qvLy}MItuE8NTh$q_Z3hfM5)I-zf_AbqXkJvM}$z=-zF6Y+VVEs^P%C!tG|JK}4{SBT1>=JZ!^8~NE zg^<;^0!;MB@F9h1YAw5cHiu@7#|%0)+J0=8P)Y~8l6>!P=S!)I>Y<v{WG?fTBv%(r_v6c_6Mn*Kx&)O zZ5L=uCSWfi(ZvULrQ-*bKl(Z&SAE4j=!@EHPMFJIw(uWReBFJ{xW<%cn%194-qh9j z%}7_Peh3VWsKD-7f)^V82`_AYgVxGa4-4woibywrL2W3gf1vH@F?V1>C1Owgql!7W zGnsjMT%IIZwiW~!@<($a2U25irg1YlTKA~8FzKmG%-fsta|iZ(QpHz@b=3XnFJM~# zB!#$S^_y_o6DqRW9~c;jhD728K{Ti@Gv_?MZMwTP;PuoQd&*N2drF=F$`9|etePK= z*4haq^|{VJ@qGO$jFe+zm9hNraqhhJ0AcB0ez@rZnbBoz@9A67>w5MAvC((Mn+GsP zas+q1h6^pJgVTgEl)tG;2aPS%xAm=r5c)!h#ce{szNXVcxjJaU%01etlMqM^){`Q_+-FsvBzy_-76wN5W(Hma&bws@ixV5^PK^*>LmF_e9b-YV8b^tD)7?<|H|x&0hr9D&mCAW0^30n?p6i^E z>~vnz?rjICk^IJf`dDAv1>7(;>EMOi*-RxI5Dw;e;0g_OZkSBR`o02{b~1z8*~u)H z^~k|W#oQ!j$3VMZ1cckz_aOI8CQVT;32}3yWj(0=pz$4LuqFBE*-mB{%O?^8_q+=z z!}kc4B|DdWsGH66oif7<6#MVW44e)AU&;(tOs-)7I%I~!0Z9EH099m$Zwq5&26>a} zv$kj|IPs1SNM=xcA~Pt?(Z#B1^ZP%M8I)5p!}p<{$qdT>3^GH4*Mr1vFEc3YX);4~ zx^d2r?OyNcGK2DMFEc3YnPi43I{!N|gDTUO84{3BlNns`&nPo!ZKiqSgY^3bhu1O4 z^y3})j)cgG>ytM3?fT{qrD=-3h%hVBNm%N(O5$fpt`&Zx4=@P`+U9=-;{=tQ!Z6R& zi206M22RUrOMKIBD!`2djklL7>+b9tDmZ=#DU2si4}P(NZ3SBwE%0?mj(k;KQ zLQbITX@k7hi$i<jz2<9-^;o{5~T7)qI>#HX#@B z2q>=j98zLR7N5tL-G(0$#z%=TEjpLL>TqXDmp|8fVk%vdS>wU?4xpTmS~-G5IWkp^ zUk@BC88-{u5*g}uR%4T7}zJ_6P2@6ucWndhdhhem} zf!g?uOZja*rL>39akmc>ZN$%PuOWzEN#f|j>G{y?o=8YwdqeF#gc*>|`f24S^f`l% zhS40ZG}m9y^XQ&o`peHifp*L_-U2XXeh1%{LUZx^a5}onAHNeX!$WR{Rljqj4e+w0 zZ%+K2=u6I0y?>#EVDU?rA!wO{fM2Bn<{%(V`Rg>o9E`}fQlvq&HjUmU3@i};sBixA zHs8(RQ|&8oSR*R4+AX>a$5i`1EuEmU|6GjTJ}uo;KS>K zYkg&S)_QFa%Fj-@uwd`dVx_f3Yn`&X-;=^OHF4_?a%Nh8)Tilw6=d0Ykm*mj1w}Dd zhRy;v+bL}91l|MG;p5h?ES*YI*VOT^>h3vXmO6}I*^$$tTQE?PE_i4i?@Sq_&}o4= zIV+_x7x}MvI5%q8b>}omEdsPxo5n zv<}aUhRW&sE|b}R<6$b($2ZT!e3Z^BZga`33wN=dtHDy0vN*}H)^cz<&7_U7#;w$I z^EQB}Pn%rC_W}YsJ^g)f4}KZH)Mr9`yey9h+y z=t$`|6_s;Si%XYecJfBtE=Q1PpQtl;F1`wg&sN$MDlJd!l{lCzI`E6HcKH;;SQqRR z1-V_>l65|9<0C2CWS#er1zG3ad?f3*=~4+C7?X8WCs$rBzL^4x)(!8UpIu*M|Ywug@%&`KIUmMzC?jErfm1LHiywW_pUn#S!m-Ac4 zF2mrIlYaMW63*G_zRQ$_Lvr-7v;C$aW_cZC2iP4X+b-IWZ3@-&oLSavV2ak)t)fk( z8Q#kd0n*8oHn%Ln&3BReCMN{V7cQNJ+Fi+(Vn6u^l^oUHmtf_RvxHPt@p&DN>qJ-f zk`9lTVZueux?XH_K%)JinwZ{nW(RH6m!v~+{H_PUYy>l@ioetrKLcO!n@W^26uDC- zWU!>ib$rFaa%-qgzA~8d6(yL?NDhOMOohgdgE$w*)e^9*}!owNyWp z(HS^X8ae@EG~t}7#iJ^cXc^dB6#xA>Wqi)YisEb*Z!h&`yPDX!bTcFnPt!42_ayE? zI<=U}*c^dg=A><`gSr_%qJhc7p~InVb*XX^IXsITjzLlh{nd(3Idv{`=?RxKtt30&a95WsS1s2{I=zy5z|W02*h3 zUTZE%{l=mK&Ow|GFW-9}czs@YZTbqG46844aiu7vlqsHS;_SPUTQq(cm@S@!Ia^lc z*?*VKD>`4xX8q=h?O-n7&enBeIS53zNEqbOgMU`s*S0IJKyhCnA6AE(ZUtY?SOn2u zK)2F6y^O%_M;I9E_n)D#wC<84ZH|t<1k85V?wFpdT$p1Yw*mI>rI`5#N=Ji-M3R-@2Vy~_Ef+p7p%n^4h3`;* zgA1SUH?ix;*flVOFR*K^aoE;<;{cf~LHl+~80`~3^JZ? z&Yk&(>3u&r@}JV8V6>=xy9bm>jH;(jpH(CJ$UN3Jq(kbGV%QVf%_%FHH)YAnD~t! z{f26`7jZL2!%eUazxq>$YZ#AVCsTVQtiJ^^J2Te0>%s}=Floq8QHx;R!tq zwuuahB2l=n<3anTm1AkS5dqY>k`irzNnP1;U#@bbZi?8F@Z$+pd|hqanc7Z>7)W2p zPF9xAydLuF8NVK9 zSmizC#eI2eu~HtZzde$KZ=OncE>7BII1QMWB#XSoX}(aOY*gR_yhvv2 z$aQ9@?&P|I>Q}&GhZ?=aY}N&*>_zk=Z<;CnvD^^_xcZGGafa?D>r-qsE!G@Bey=Qw z4s&1B46^{o#aficRc+Dxi1ed5^18K+)^}e~|BbF9s;e@Ow|1_^Rb;C}S#!=r+#nDI zYc19u#crF+;x@PKwt?l=GNBhOb#~J4>`$*E)%~N%RiIqdV)*z5n%$PkXG=9kIrlPO zxf7UD6mSWj`OCtcY6>}1AJTe78A(NQXvR~^Z6!Z*LB{OKkSLLZm0R=P5E-j|IYWd) zSAr9+3(3dXx!eMLjcdsq&BVkhq0vTYga`zUlsG+mAeg+!Jbx=0Sb zgzs(8r}1m-iX{FF@76+(furbib5Ab19aFw8ciU8Eesb58^M>&^80oEXK;{-Vm1$_r z;=ZiQp6$-$qeHlAXJ9Q1Wk-a|Ox|4%)LKo3j@z6J$?a})8lwIEj{A_5M)rtD+O0n2 ze|pDJns$AXHnk1=S9cu!^L+oKJC06j-}$7vx@KwIiZCW_BzozqC>pcBrGlqgwK&*e zc(A9U*tgR+*|*!<`P{DF-`COIO!x3AzPGENTiWS!8Dd^KCv|gWjP18YsPs7g%Y8^I z=sU>r%u>nnk(g3$>p)j}thcb@fw0QG0?|rR#wTd9aXMwsfslLnHy7W zfkvY_kJ?CG#VP(yC2TkVLL6e?D)=yXJ(@v8-212$gjdG;u+m+pw<)wV7U{pyK z0Ym6JImga%_N}F?lLyEO1gqz8p7+s14)?%u(%i^vcI)Dfqjk zTy0izSSJzQ%UEHBwIP>4dcW)DRtL|O2ulqRCvbNE~?Aj>fws(5~SZ+?t^5# z<-VDflYlt$^4eax(#$P=-0PoqQVu5cRQ8{adB)wD*HY|hJO#sO?evEv@^TGz5UiTT`JI{pdj^fYa*G&^okc?>Umy8yM;#j%3I6yer zdNr2XNa}#vEEl>74W(ZV1{78eOPE&E)e4(FPH10P?#m-X<_nFF3Qm~RqaOqD#;!0J zJG{_U%I~ng54l)n6bup0g6X=oZOT*tY)`3h2Fg25%}KQ9o_(3bu!f#pDl~3)i3*J| z@wP&Os%BC{wc4K~hcEF+U1QJARGMjBDn&h(7S~M?jjiUZEG}iMJC;I|q!UJ=v|mh1 z{iZpDlPJo^D2IeUK>gN6Np;J`gGaL7~rABIp z*oEF`9c6OFWj&v^z1fc)h{UepW@aA&HiL~eXz}zw_YHV=TR*f2Vcu3am=aFl%gg&y ztBL)9~Tv$3}44qP@R&zS%31wSX9Zu9-<~=D@r>fvEzJrq6_)j!{E@M|3gM8EMt!8u$` zON-e1Q&O~^rx3rXPyGBG)51X=0f#C8ZKQ4r4T9*{b{QG(1XlzXAaA-7=2zFicpfqH&w);E5IsQwxp)(RS}%2x0@u(MQtLPcG(HAlTgSUNh1A~*_2T=L z;AI`5pKOP&>j?dFJ9NE5n+CF}6!Eu#kOm0Qv;d{HfKE;sovcm)r{upF@GD8=)(MNC z$+tw4=1GKA`x_qzY0jdWH~s`3jQSL2d?=%L&=Wosi-cLa%?2FNM)|O$=2Kk=flrm+ zkTxw0t!;z|qB;?6_B9#(57<|mf9un zv-|yKnBJ@3Te^SR=ZfCJFS6@E;M=};BHZvkqpx+gqjWk}v!X*PSJ{IhFQj0xLduQ* z_#TkLz`tp&Yxe9-kuQvIAgK)?vKdCVfRW_5oWqEV&q=|;VFfbKjX04{1vhUXdl0v_ z16k+*nOwwhJ0L?qh7M$=y!Td!IsF)qBvZkikRl}hN=Jtjp7H0~0WhW&NDJ|8?GW22 z(dss_Z{r#%1Xk;|GU2a2BCqvxd24sIy`n?gv(ezGFqpTfQn_YyhVg|Rz3L0owixgZ zIL@_&UXoaHbs8Rf`+RJwjj(a@?x&3glD^VYnJ7F%W!>gwzp{4w0;Hel6Sg$lccLt{VLQiwc`>mW9svB^&f(8v<{pce`|`7@r)1` zf20v3czUWyDz=XYTQ4U~WdXq}JAwyXaLA1riuaphkFJb^(_{(DtRI&K0B)f53W1vg zxHH?qVG^9)La#bp&N#wenK#WLEBc5sVl}qOWfnWpYo>UOHl{TzyS}xW9L!3Zh3Xdp zo>6i*39MD>r{t*Bel%7rlFJ-HBJJ>SeqHTTL3~$8SIp^&2KG0n<}v9s^4viERwohV z;(N)fX;|t8yHizMDbHWId0~a_AL+_aFM#q+ z{HY4*A2-&xww+#PSYGyNzp19KeZ=&^uOQF2jn9cK3|_+iJzC+i8!wz1bR&FgF8-bk zTqWW{L4G@U#nYLIO^C)D8Xwch5f^cHPaHvc530Nf)N{s7yDF?;94~cjG&+r_Y0{Sr zg(ZwxOv3K&o-Bq{Oc{-%C-;(cd#es~<45w1?ta%l*It25841S{PckN;wTE=e`Zss3 z8;8=9?t))?Y%COwrzwLo($Lb)<{MeOTby{B;HbZA{`!v5Q}c%3)G)z##-t>y9ZVhv z6WTc9fmqgoZpg*-Y8lCz2y-OvxS@a`K7)@>gl7Kuay%`~_oIJvb#imGn;W_zT7r;s z8f$h=Yp~D2ZP`B{8B$}i8&kiQ-dF!5KLc@#nAWQWo#mi?#~L3cY_o(cX;q`wDepv@ zx78q=&E0nq+F;#LZ1Lu=);*Hh4yDgO1RbP@?R8FrH+WBo+?g+Kd_qA}S7TOhY zGmQ3h`nk)tsYZatS??$?e^`CZo*dd3okL72Byg4~ADd6&GJZq8jD z^}kXVu22ZJhJ#Lh70%6W4TtIjHHAlr*~xuofYE(8KjHgGQbu&H3dq&Ci5DZd7D-Vp zYJp`T0~@>gbTe4 z2fn-W0~?pm3Ck%&Tfsf8%zPMq9s(cBe&&8XJ6I((i?g$A3u#k1XgHpUCy>2+`Q_InRBONc%pqKh8lm)}k4!Slx{Jtpe({hY0& z?GQzDAC>Q(T-D{U;!^wiONEo&qMu+?0HH#HPXTlahE3?O;l?1xmxi_IU&YkKsWaVW ztU|?0vz~hH_k>GRBe51voW`fZp=%Ub7a-XhBUU&5o~frp z!uX3sF~`m3N~$l($p#a;dc9#n$d?JJJ>f2?x~RR`naAA5@lfA;kvDvr+n?h+T;qBQ zjrwTigeSZRd><9Q(S<@R*PIZZ;zX7AUkp613D!q9yX%`bpKW7S=W!747K-mmGP#t| z9I}ptqbK-Hv7Y!Vq;NpvTXBw9xfyQ{%H2P0Gf@K5Vnhm&p}ahwE5~=z{MdepY`U;9 zC7)5cU$oBHSbGc@{RsS1Wu2>1zY3i0%0f0VZ^P9Uit^V`O0_2!HqRkNbb-nw{&wPP z54lawx3&o=@+JG5gI?`GM?cL$8YPBzZKi3&bmT*-6_U8=-7Sc*~pRqa5*_ z5AxlW@_NyaY4on(8W`t#X?f$yd8y~Pi_f55^-JjXW{z8|yxO7|=1C4*Q#tS?Io>{% zW3_UKAGjQHwR6am@8As{pt;)}?a3*Up&QE&H^&@=0zdhY^m?-e({q`jO9>kMAa1(icK%T%_BmTND z%{A`igJ_%tszb5v<(>!YQ9T7Z)K)-p5MGxwR%aEOXVF6F`-ZZ)$5)dlz6TdFZja<#j^T+QON;s5Z2V1J zD{f3(D_5nF%PNa=c6Gcf1LrU|MCjurG*?E z_3hvRgI;=CLE#6NYWOtk2+JC3Y~Rr zi4T+tynEyLX+FLe6jRJrdqJNnnOw_DkvBO+`H(UeySwjV!0rWN0VTXcAD;BtEDMBael z_G93u>(Ms1ai|y{9N&jTZC2QP9R(O4l*0*Pp>^Ks%U$WUwYlNroCpQC6xGvI*0pQx z7tV62SVuBNMQ5q^m}oZ@HT+TsY8>6Z=fJIE7~oV*O)VTcoMunJoQlq4N@v~%87{OD zF~S&do7fXR{%wd;U6HHb2>VFURKr#mxo+T3!9!)@ysh z_TE4sK#6OOeC+lVg{T3uGKW~g-)tQ}hF9zfP-8e|2G zzmTQ#@Ns}WlKa`WfVqv%v=YOMN|}`dg>YbaQS?qls&}*_Us}qHb=5ylgEjV*P9P~y z7?11ik9>8akhgwkKyfR30^=&cQRJ0^svc3WZe$t=+h?dQEx4ev`+SW)xk$5@EvR|4PC z!h*c8+V6@eFQ4kY<*wo5^ZUM^=oFKl!tkPHeT6w=)xvOb&*P=_7+y5?^2(`&;S-j1 z7g(MhjB9L3<@mzzYsPAY;WNg1Do4~WX`|O3d*j1o&MioW@oafgb=!Exe8(qoe}Z`J zkw5;VNclP7C&K_PELh?ema_?tJ zyl5)%3zhg`5|2Gle}H=CZ0NZfhWAAeQHfe{cuW9mA*K{zTFEn@+S78RDmufP5ve_v zQsZHOpx9UMdK%u(3HQ95bZwLme%5qj@$jDESaEnK;ZmHc!5ZbgQ#H7){`Ypvr?_Xs z;hIDH5wI8;-vrvqjU|+Nqv~T3l~R4DrPHgQROZ;St!Xx&#?UgZvRP}g4t>QLcv0Tz zV8bGS9lIUeSBup8gFi}8&xFrGnDF)HJsTo=S)0?Qgi*8;SP0lIiqCi+kL z*nAa>%39oLnTHZO(-J$Cme>>gS~id|4JIXg%_j9;xYjd8*z~Bq`hJa$*SFO_l0Wt7`q^7+ZgvY>$Y#(e_I<}{Zq9U=A+ z+!VxS(c8%NEKvgJ1Us%)R{1m0$jia0W|J(PzQ1GpD4cJ2IW)1-7-)&4)Z%1%+v+hG zB0GFp8GpqzOYzZ++wGvO&5+@gv^hIBKG;PtYZTY#XL^r3>GsdGUU&)huRx|mo@X!T zO@MIwN@_IiG`+taA{r{By~Wge6CtT|fEuM7e;;Zm%vf#HMce#RZDSkunMRpwhfz!% z2$AC-khJkbwN4OoQI>P_s*^?9#&53D&zej70z50`cI9O3L72!<`_c3bR9K}fLgF8h zB(QGjdO}#)g$+@4gFbgI28FFP+AKy`tw;J-^BU-6XW^UEH&W@^8gTKBppRR%j_1ow z`?FhAiLTe?@W=S!QPjj>qDs6!6;aBrZCy-0`ZfZ)k49?8HLe|eULM~4hICIe@UDku zzq0;(v-)$c{zV$V-N(vajJ5MUgyfGNt(+EFgu;Du>KEa5|3Ja7j2y6%P#Xy z3tc`9`m@VDTqK>ZpGvS5Q0*RI3teDPJ`CpTo7xfDI-47_9YRbgGiPOrNsAQu=zPK( z9AD&pin(kXOZe@}7SNN+RMs%6%;@K3B4qyo$ffmljiW$Tmm7dU_!Ni&?-Yd#Y#dZd zrEs3Pcoa4lU(0yvuxDD_?QEB{CR@FnvC-M;h05WW2wJOSt`xtItn*jy^kc|1qIo5l1@Vw=iK`II6zK8Fx)us)uEi1O(LPy}8Kbn_0@)CJ63%!Mj4O;6`i~Rzz-T6U8#psJTD{ROq zWh~3K`YNz9zJ2!O!Pt`>OaikflcOWuH1>*6zg=`{WoFzr;s3jMm6xP8X1HJK4Tm-t z;6BG2&f%7nypj*l!%IjmA>aQ&+v3uEpbB(U(B#Y!qo`rd98( z+KXw9X|`43tuc82Ry1m=LF2u_pIJ}tpd4_&=>Y`j?X!$KProz_@_G&Vw=PXCeuAFj z-1&{sO`IdihfDii8e}=a8F1lt4kW<5?s$oB*a^8l_bST&oyw1HSFea}Q~Px6C%#o! z*?!_>xF+}h7yYCAY27DpMvD1{>psTUWVf~`O8X4%gI%AI<&w(Nc#v$xs7h>?RCb5$ zlDym5E-C$T(tpQjX=6a=mw4~X2b>-?;r0#ATwLJ|k7=-<~t`%QE^Y!&s>ZRWJLOHW+kGxS1QxwV!NNg^2 zms`TeLc84(L%}fqDR3rNjbLw0o;Q)lb<)WZ*=A1-@@pv{uBYSP#9XNxfnXbI= zP~J?+o9W79-h5I7DOTp`fPop-luA7LY1TgMd@k-QYLi8V9gF+A+?ILm+ml0mY=XB@ ztlzC#b|*DsH)b7hpAy_zm0f1fihd?%Pl;*CY>LW-5}jX-SnAQcm=#Al68@ZowQnN) z&)Qao-6rp+bd;13W0I{OObbkW8r|Y%KvB)xQ zou0}a=8s!0i#c5+VUdGUqnko(5JfF{<2lX=Ye6eZbO3PTKCdgi1yM|sKi zd4+x`UAZ|?t@Spt_>ErzruBAn{z}fvagN$MEbEnte;n`cp_$P){g&oTZbph;ia=B= z)&ERT!X2Sak?ts1LHuiAaa+s$747KVI-)c7^i{+TSY>4N0$sZF91^CNr`!7&?hTFT z>oB&_m+{=BvjOA5X*=vKE0T($S1t^S&He} zR=&1Ptj;O}F(8qnRS-+$rhg-t_>8vshq|F7E9XUTOx?fpjz4ThullU-ZJ66tY<4^XD?&V|ed!0xbf3kT|;1_pC4^dQ5-;a^zRvbO%cB7Xoa-wgM(~ir{*Uh3V z^`0akaPnRT-NImcI8HYIkM?&>hWQ9%iQ=Q^7iNj(J>Fr*iOqT5%|ZQ8m2)uB9KtY< z&2uW}L4nQ0A$7q_89u^3bo7vwl_#vNZUK&TORwPjXX=4*L$q1t55jseH@$C-pm#t`~`d)SCk}_`7MXEih_q8B}QkwFgG}` zL!%1>TdGgaYUM}wfd1lI_sB#yG37=Nzi}@=E`DA-6E`I(A? z9qy z9QQ^}{9E!@HImGxwZOsR6;Je|oqMip9JFX_97L_Yx(MP}KKoP04+uEhO-(Rf)8qR(@ABA3E4Thpth&^fCBJPGt!)1^nkx$MifHsxQM@~7>R)Naoqgz1HLdqBC+o;zr)9E|9$vboO65_P-qm9{1tQWts|0N&`ir{<)8P=98k4mj3@(7F8u(5zee<@(SWbf910M5FgBKGng{ z&g;~F4Ke)aX9VTV-n2W9#+b*Ye@_T|5B2{hzCLFq6#ES!ApT25KzH?b7W3k=rA%Wj zXT2%%zlg--qrX2sfdJ*NkhOkbJAZjv{xg)F{6YLTGV&a&I3vh*)n7^u$8*DY9<3DZ zz)w7%A8}e2W*w(H)A%C`Ml8Kmc3-A`89DRTyy(2@AHc^Uu$Lf6#60bnW18%b`*5h) z|1)hva}e}sh)Kpp71|4nFM2N9$D!HIh%CTJ~Iwpg^? zf=f@c6>{a!bRIA#*FZlaS9hKU%3}%gI{`l0hp%k@fXZ%^0OXvnmC*fp(FGY)H=Qnk z8dYZdVZNhd9Vt_GPa9?RcA}RNeo+^ovhj_ES^O0~v#=X2FGKr%t2~*YhVwQ#XZX25 zwnjNTT^aQAnP{Qtzau}n_!dIxCUYB$@WNN_7RBS8@E~9BY)Nh>iA3Y-d`l#o)B2y) z6d9Keg}D;?2-G1-LmqtzqC76M99m2iw(xZ-F_6 z@oH$oLiU3YEgz2npr=q9X)G~EE{^!dyYN%U$D@3bgoU`Gu=aa^Ink;4Az;*A$q&3E zDZ4Pe?D~sT>EdU0ibu_C@`xiv71Cn@H zV70I|G$GN+I$+`T4tT*Q!I6{B2Wqq>Ipgwf? zAthqmf0)cRA((@JkE8+SAmF2EfH?^GSQ=msCs!1q7=Mht0RY$EL>--Ce?k2k+^~SD z@XJYRoV$zn(Ome)JJR3Yk>0{P(my9je@{pHr#jMGct`pk+l)_2?_y@@13R~Arp0D} z+0}AL$TduaSG$6Gb~h03j0)UBG_X4lT}t^ibk$%sJGt~yt4A|oy9 zH&&{tJ_+f3TlKd-WzJm{dV@K4lk?N&)Zxk2jdG^@*&mlD)A|G-8^fmplRYlRut3JU zlb09S<=n%Zf)kIMQ*h!{a$+9306Zr-#%qDA3FK*I?vmOQ7yQm=^1!zjzS>i)f4N!e z6YcdcD-b#zl9%s2*PHj!bX{BZio2W2$o3m_%_c?FN2hU*N$x4G*2w?I}!riqpC)3w{*g?XL6|Cb-=( zvl6BCE(9dR-H&Y5o&9JrLA4!V-|R-Db$B6lKr9vh0?D1W?5PZtdhE2N)F$c+OcbW9A=r@r0m%1&e2+uEqoMQeAZTx891W~CDRu6^ z&L~Oon_RcUa>nW@9W$EWF=R}{9ZnsLDj-qhetEhgx3j(@Olj-@S)GUcXh*BERl>-j zOJzj{w$82Y9L8=JXDV%Jlr3ZpsW`QlDIuyD5bLG;LkVti*?;!T=m0q}W@QuXDH;@0 z)p!pj>sf;cMSF&=cE4lqZI$G&I_vKG>&l~yc=1>0=z9T$uXTAsW z?F>H=|AB;maJ%plVb~FQXqMe#6~F#12bgrf5W;l9C@E$LK6ATw1mD;4HN_Ebg$Mk+ zf$s%;({k~8D07${Jdb(P<`co`LUx58+CMk!>VKrZN!w^J+K7q|rysj`PMujZvq#F1 zRL_hSFww^^AjKrRuf~?#06szk`1zzuTVMMh)k-qF4vqv4jUE%F?lxu3= zJKsC{d(NE-zlQ|zPZ%Ivj41uZEOe)CjjnYkLQtvkUeomiEycT80yWJ0q((TD+Qcv5 zXGDTSKfQkxXqqIsRdEWMTLTH+Ou@S9!F!?L9cJ*H9_KRha90QORGU4- zOW;NISJDSePHH^F#i-0Z5A&%WpNk*k+c+E$=*4Zs9)X*ud}jyIi*Rw8EuIH{K|bdG ziyWax5?cEqgFo0-{@m2y?>M2!m6`w@nWoGEFWLI|-oD;WuSn;zUA=u8P8RgNh2BXQ zIJb03cay#}y&jEU=rWz8TTF5GY-J8z>PG8m2>m*!8~>7&X+L{>`+hb>nC-U6a+RT^ ze|2N<;mlAB+^+;K=`fE??=ZRe_eAP(?)g)@P4+@}PfxuG%?pmX>A;!viQ2(gbYR-I zPW6^tp1MokmJg?LF>jaLs9t64$Gh?KUXOT-?6D4qE)PmCvE6v8WvVgd+a{-a+^-A8#0~`)oBR!Y0W?LI*YzHP6#Ls1fvlf_F zzlqAZu=q8Du ze6+eVHY#mwl5m^B3uzv%*Rq1ZMto!SNzOuR+C>viH@b^=&0VfdRcF>VUjOudY&)}0 zW0*aaRmp`0p{wX9E!D0Oi{d_aT|v?>twtd>3KB08dzCMDUPJ)R9X^Y^17GFZ6#GK= z488kpyeRDw);?M9ZQwcwT-|P4F%uuAesqA(S;s1+z{lgC5@H;$>Q8QPtSyX>fr69s zyX!Oe@J@4?>PO+U9+7w5-%*_IU{gTOrRuk9TO2Y8{WV=RX7hsrU(BcwuK{>c7r3Ff zWOr}A#=;354HjhTEJROh{1D_wN?*%)Tlto!(;c3--GI+lHl}lwqcxMxluVqf?8cy% zOx(lT{#emsXB_Kr^ko7%g5>0QCCJvg{Qx;C6GmhBQciK}bWV}-qf4gqBh}4h{Jp&A zPNckGfp_LR(moXGPIPa8x^PfR9io`wb!{trz-$)l=c@9LgG?9NHHmTwZH~iP%|3P> z*~4u7GZKXHll+MCU*2$lh1ahq3yos;f#uDwwT;Eu$ z?!bCV!O3l9B>J2Z9ZOWSNQsV15-FHRvkB6%zLr3;rc>6@BVDGzMBN}ltYq`~waHax zO5rz-2TDsIl8O50Al9mt#%|tBC{N3&7?c9LDWQV=Xk1kp@q==-mt3011KC}AgX)W> z7Y!O`(*~$w4j=`l+(F|U6q?b2O7G_~(Y|dEdpi)O4_yU}xz7S)-azAJpn&Ch2dsD< zL7_o>ZX2S(Hk`!Uhk(Ztb$_BkXE7wG&Z|E_y9e>fpjiJsPRG{g(Aa1D=o;4p)KKNH zS$r%RLswfXLj3L+;LhuW8^4?^4nHnG#f`z?0!}Z!0w>xc1J+YWfN>~`U}8_?Q+os% zgR_mdv}Ftqzd4?^gI77&$q>@jt1dgJ%&w4yiJLSfmsf`Ucq0|zM%7n4l3N`yK2~Tk zHyT|0B&kiO)vzkQ#zi?=U0c0KXf-Lc8(Hb2dH6o{4>|w-ss8}y z|0}R8{oinq{^zOx7ta5i)c;%O-zUw#xANB)kIQ(19#w1{t=0es-2wL_zVoR&N5UJg zglMz;#z}n8Jwyl7Jgnwzecv^{m4vLi#Llp{6YFAgCO#U`(Bx+s$7(QQej~0gwQ4OW z@X1v7L&N$)N_YFjE0cs;0}n5C5vBloCs?r_&XslTsp+Ayq|^GYFUy=Im|U@%iJk{m zTq((+F6hV7b|>^H#4i-R>T7Az z)>p)}tmCw9mD6rhYkgJDffl-@j9))X>29A&_cb|f=@J+}i~mF0X|Pw70eihgpIkgi zXzNbgV&)3dSH*EpU0}NxwIJYlb{h@Ft6(YY7uRwlrYbU26eC{PAna(~)TP+wo@_8|lf&a;Na&&asm)!+EvFh*R@1mkFqg%~zIU_N3UJ zf^i76YbiHi>th*XnQLRSoNX<{r;@5tAo*)>)V>a<#!Bk;Hm9Z(i@1!4urneDgIX;X zfQr1a1C9W3X+GalE?Ik@>h1NxbbWZZ*SOWWMHBd*wpM|DSdfmSWjB8j4C-gLy;xe1q;VIIXt>lrO!E4d`N>7^ zA{EUMLrBce7}#Q`7H2MZ#MGAV2n&VA29k?qJ82?*1K{F&xMV)wNQB*MBAMfH%G+7x zHA?Jnw7v^YZQb^_Yj(X05i^e{)#@SX<>8!wI0O9%MdPUe@pSk6n>mKewaEQm*ZstZv{E+|5Ngl)4s@$`nvUp0r-)k zpX-9fd@Pd!eo4esfJW&Ll=Kiks0IC%Y-0zlIqP6d|4|=31_5L-bPopOuhBRB=se=6 z!%xYz;S#K4{MM5={YG8&`Gq+fa{dZuP`{fVktB}qAV0_ZclM+I07ftnf1QBjim$Hv zuhrki=_zO1@%@c1*NXf7==CZwdV})BcM6B*&wyRt`{Q&8zbO*J+vcoJv%`%yDMwQ@ zs2-fqOZDb8Zhqr4K(8B1M?czxi)Fgv!o*C{k6uflSvvBX!<}sg;5UCxssyX0d-zSY zOf9M}rCf(=9Lkx;Pi|TW;1XnkBHRG{ieEjd@s()J^)yUZ)!Be`_YvjrQOu=qYdd0NC|3K zrAWy37KQBef+E*#^;VU-??C)Iq3W6$>V4Xk!fJ?o|}9d3zUt3KyK^J}Mf*NfWy&0YSn;#NmX$tyY|vJc(E}Iv)iybhn1tq zYyk9Sm_x?O^}mxiurcTs7dHHQlZ!v?NRHnWOV38PfmQrtm2Cl>jQmmC)0??;!^Y@q z(^HhEB}lT`oL~Ur?~}b8XW*c8A%)8@WHSzAhqWeJ-7OCoW&6Be>7TO~=vN z4}Fri#M*kQ-=w$pxp!dSXNi>-HH#OKw!c{E^W$p?X9kM@Q-F)%EYGj~OmA`LY_CV@ zv~B-7VxzP8VeqGMbu?YA)-$O{rr73B%~-j3Gf`oD9>18i4`bH;dO3BdP?bmY&DZzalWB94cEgE& z1JSjIfrHsP`xWUy6u(^M-`uoq5yCbVu8rkNbh;jI` zI~-Cjn(OwSQ2#KRw}XtgSOc|#2Ei(b|AWc~+4y{Yj8c_@VD;im@dbp@cWf565M167EP8N?ur-AgnN!Wa?tkUyVA`%j`sd zxZCh|y)Y>@#jRufb<)M9O3D)C1UvUhjtXixm6x9knqzyG+BLEB#zIfqs#cd$HmS_c zNo92Kg44$qTbY>z>SBD?7#;1CgpKR=;+*l}Ad&!3?G4SBF&|>$G3xI&CBR3Fr>H}> zTnBd*kel6ReW-w1)XnKxZ#VjLMLfw#zX^AFBdxv0Bw<*p26tIk&>F>eC$pb30a-A# z-=)3us==_NNkTRfD=u^6&42@t^1F~rH!Ph;t9J%C-`e;h(mKJ)mJ@U=EgZ_rd!dzF z(XW|{Dj`-ayHG%P9x$p_3^J9_gw1K2W=_v?l(*}foSsE?tHQSiz7q?1vg^_fLu-cC zP^IW%IDn3TE^;j$=GRN!AtLPSOsoiGB~!(b{huTUeO8aco}w zTjVG>!CCiRcFyogrUh%F->Idv?x1{$3e0U;(_fw|IV-x9ppG^zN}@0{akxdEYi0F0 z=wr=H5^JMG_;6ichtQs_DQ#{ZbwJGv13 zXsxMfBYKmF7)o~Q4kf$w453S&$8+uqFNAP9o?kQRjY}-&uj$K#iTw7c-Jkp{@*A3C zdw$>|T5gkP;Bg|)OnehtI zTL1zD+LK!2Y64_4m(9C@QLZ0OVGgiqtsKi0&Q2$l z_ht@w&qLPr_x78Qfw14yq_=SmW~Vmxf^^~uS{9v5if)Qb$JU{OXKO6YdE8VzU;|!n zlqz6gt(#D-ZxN;v7V{*S&9C8Q$@0a~IT!cCU2MITvA2A-gR7Ow{}0^PCglgN^aR7e zVVKs3zGn5os@0Hnvn%}8YH;a>+*)16q^hk6ma@om98dnvB!1KMUY18&?lhldrLOuZ zVpa!QYdQku)+7WHh+xH=U8zoPxqcdLgS|8s{tc}5b@*|Ov_m@0ViUcKa~wBmP^-;! z?5D(tY1m)!tk|nvM+3$yXGHDaG||mr&>^B!v5lB2gQ;5i6Uj$}_}92Ep4MeMJE&W` zd><^9*_f09hT3UDV7BCX(bIGBrLd~%{)O_2on6;+gh~WACsZbc(j=Gk=~V7Zlf4BX z;iVh$Yb9JQSlSchH?EyEqufmx*Gl9 z4dE?^4uMU-&_U#IbT}^jU($gApuW^ehdj0{+y#w>#??4z z^d?Ipt*dkBYFx^)XQxFs8mbT8l-9Y|yWuNSb-wx8>%8`VQD^a;o@c3ZuziiMa{cE2 zw~FmLzWchVI&S@htK+eCP9UDe-Dv3D1rH6|q;{gN#hQG8kCPTXHT<&V(d~|?};&i=)F166|-F6}B zF{s&r3U$}|S@>u{Q^;%I*0l0$^R{D5F+UZ=TN$Q7z;_p|&Gy6bpgt z3jg}~f}QQqFtO{S1TuMc6%49NO8Fq30l?bq`n5{$Ol95hn=FjDl-n40(x?JpsgT^H z@`ha;qK_=<>-TJ*+X?+hTT@waS_hj6QUM8v?gsx+9Xe22m%|dF+ zx^0Nd^*Do=w|y*~`dlzHqo8r_d6&&7ZJjYB_eljw}_^q^{8<~^-r z7N=^DT(Fg=R3NCX0Mr&n;MDNqqZzx`a3y^xV<%bs=yFDGU*odTu;Q(pK=y?y$+~|=UF;SqC zpaTo#kXw3+{i{O9>ibaD z&3}`7cfa{gQ96DXzinSsVbM6{tID@JNtqFiDl#2YPlko)yFhz14~dhzD|Yi{Cib@MYY%iKzWPh70Vw;oMHXKcH(^fGTg8|yOQ(e`S@D$VZ;;0|0w`-%6;X^-laLE@)oT< zqnja^8TMGu(YwO6+17XZy0G>sbw#kc%7~sYe!t+9c|x+xbHQ^i-LT^3@y%$X@(~sX zmDQVY*01a+`JjA!oeCV_9fpDE19Ecg$n}`s67Ql}(bjQ@zn=KoLys*5%Itw{2&9Hy0dfwNx1au&dL&Y!VW?9C1Kw+0lfGgh^Bopio1X^ zgIfl-D6Y65f{Kc`EE;GO+);H4w6sH5YI>5WWFPw-9P&UC2%C~Rcp=dpPgg> z6xbW@1K3nB(JhMyrY@a5e;R&W6wZ6*v037Qfh?m1RQUqWXs~~9vaAx6`v?06nsO4< zs`3S$NQ)_#FDgs>4t(!lkdkVSyo@~^H=bASlgsZnbgg_v?!LDx`LVl$;GJEk{;4az zjU*u~XTM`ZJE9GPE5m)?mb%XNv z{J!Xd%yTSxj?W5*{9U5Vu=yC)Y_%@&w{72r?7;1Za{9YSc2r4|ykAW=gPXVJb!(}1 z#_O0?eN?DtXqzgu*0%Bu+py@@vnt8Vn7BzXtO$BU7#QnDBx zHj;dRF!r%w@HS}FKk00B9oAZ{I7dJ=+Z@IZLLYB}Y0|JE7y4ikOyk1_N$4YAFb#Q| zaYFCBf>{SRy zT=t8FEtz)?Ck2ce??R7+wOAo|BlTRdb%7olMx|cU4E0`Cz279sZhalj+%RNyEUq7q z-}~CBQ9Lp_Zn~jq33;2R9_1eQ&{#Y=?st@n_0yFA-jCgqxnsrpGuz%_yw|tABV+ZK z;>!%ATJECp8PIs3(fCcHaUwSJp=0sLMsBXec13wCwsLX=paK@FadJ1SfMPtfQKlIS zd@E*(OCe@$5uC!k|KGyBJCr+N(K`LL;5bP1S>EBK>bg2&1Z1A%Xu3ZOT{IO|#ElQp ziiymtX>aH-A%cXPG<3Mv1K4aO7{=t{$cme&He11l-Y3ZPxhdei!QQc-!cor z&>C5|DmWkg;;!XxSzXUYV=EwEQ_sO0&huVURS@q6B@ZCsOunO@cVCFfOO7nQk0+e8 z$digz9m!-y0=ZpGJ1csb%-lRp+~j-0h{-OcvGW%#sD&*`exM+=Nq5Vh`*5W;6vj){ zbnJ%<5oZMd{K#$5$Yry-;_B)d(Zr8yWe*=+d0Sjv!5h=|ZzWbIR|jjb_p&b+tM?Dq z1_z-3a!GJ$a2fUjuLv#~opsZTsE?%&&Ex`JavXKGO&R3;SZ6*5TYuA#6c_p}t>b$p z=~_jH=RWjRj)!i4fOtMA7?s2NG(JolH|OCjm@VU;+A6nX%o zIf5%wd`f-@0Fo^5T-@5fKf$*)CpOd0+Lu~-9Y>H!HdCe?2I#R846R6_+h;(7{ zV}7Yf-+$JE11`&Tqzl16u|PQ#I<0cDis&%+Tw1%42<*nu_mK*NGIHDAc1caz|?`e`=D6T1ICHEy>Jmq}H^s&_pVTK^(V$-?|f`lI!b{-WF6)U(JU4}}eaZ^JcF zF3zbG=&}bfUxHX^x8dkQ2D-;e z7;7Q!!SHt#u$SQ6Ga{jkwy2cxBqxrZ_oQt zf3U|Imt*92QVuhItD)4!-CJAXohQTH6Q}T)lS*yI9#`;_al%nBk||BGv{NJ z-B<#8YHsElUEw!C5dB-1689%+cK`2*&ij8fl8>pwf+d$aEf-|P`6+!TBjR#W>z37m zyke5oaG1uOT4ca#1&+*;w=E##mDIwRl|0#nC)!Tyu+#YJUu&vZs3?Wzs6O4zMfwai z7xS@!6Zt^Yd&Di6U#CXEGi)$|_9VJiM8c)7km)OI`YNfudt~1{{u24o!X8Y1r!wmP zmx3V2LbM*TByt!IpWo^7!L@Le1vgzqXW}5}A*@LG?KiAkf$2u`|A~QxnMFSWjFECa zNsu25#>0M67-PlZ-`dc58FYS_{0is}e~ywhRTR95JlCmz4mA%DiTO;szdYfjK0afx zn}>zSZ#OTto+8&88VnVK$y4z(4^)hJ5(~P8=0Wa0UG9V3eTLkJxcf}G50!iCMRFc) zPD!_#>&z+fSMvy*s$ONPuSn4MIDJ)jC(FSUeJtPfIh4$xCv`%v5tKA4oQ0YLfT%Tq zIRJ=c1DFGV=r({k0El=4m;=CJIlvqMRF2jil2*x-zlzlgX%$o4Nj6KvpHnY>=Cv_c@LWF+ z3Ig2Qux~~X_BNg&B4+#7&MPR6V8#oiVR?kjRT^pa&*-)KN8r~LlfWDK~k<2#ykdAOfJ!3OfQ#;WkMre zt=!Tz_PZayuoMoLY-TgR*DuSm* ze0S#0>C*Zgec_xA>vkvc+@rrRF=UHz>19?&7rmKf3TRMwsbZgeE>>+S+gWs~8<*0r zG4y!$VS}E5=$D<^Ct4=*vaRRoD+cSwQUTnBOlCoQ+4r#V^fvN-XcI3 zZ}c?Vts*P6^;qMV6i~MxtvY@4ii+w;`XB02!_xTC0AtN1=5Iy{(%<9q(gMDlKDPE7 zEVVS|Y#+v{>5O2`bMaol2vULU$(Hm3l(wmkOg)Fe;q(_2s#qEtr@99;eplmTxLDU{ z${JqIqi<8ZwVQk#V18HQyDdp*6(NzY6?%g`mb=Vc^U_6kKfT%t=20{~q-h&qO zhsI1RkRrUa9w>d(xJ>LGXg%8M!KTa1R7k5%`f4=}8&oH(p8lP*6Z48$-OScn-6ram z=@6n?O+D!6678DG2FSa$CNnEH1x$uy_9=E_G9Q-sS_vwZCLAaqTW^_uo)P*0U<=fnO&i>j`TH zFKNCVbbm3VFzzDaDP0%{wQsfYJIhKa|_Kd z&$o{6XPhBUZCNx+dzB^5MLI#k@T(Svq=jMV@ZV7b#R-KE9FgZxQm)2{o*u_fRdX4i zw5-*ny;F0S#b{}@mS{%t;~(#c+iL#4EN*Mz=5cQ%Zt1$`gPbdo{zca|vqOKlwrYq~ z;&E2Y;?ZIWzCkNe%YUGHruO8q2sU!IAv2Uy{mbI{R-Gt_c%;~PL;I>VZ>c)BFzfog zR7NeY4BA;8^uS*2&FqF{yN_~5=mn6=KkQ$a{l_uBbMY79C4w`*82qfA;M#AG5Pk<= z-64V%X}Y(4xZw8zukaNf1@!Uv-@r+G%n2)To(!)5UXOCrUB>guS zM`Yu?w{&!Y=$#fXRD{}OwiRi2)Lv4^mn;BNJd_OciD1-f+4MifiFha{t{p)h8Wt8l zElFhDBpFij`mr?GQ2HCuk>mJNj$>-1Cz@YBl^7j6b?+T!H#(mO?!7lK-2urTSxpAV zQ|71=A6>?+La0sDUY&nxuRXG`S`t>RtBr*VvhTv|>mzzB^oeRLoZmL~5w-1n7)@>y zRC~M=+Pvozv}5C5eh|;Jm~C%uE^|!>vyIji;jx& zy(r*%%TKGi@l8B~Kz;cduPxq4G1VPM<0o_w(O26uxamV7P4A$xuM&Xl+I+Wk-MpMG%$j__*={0@%){`-yQrt%-@szt)(u5QvJ)K z*l?`5+O%b?m`rWnnGHX|dNO6>q$6(s>^S zLfX9u-p7JPV`4Rb93ddZZSy9<#mR4^G3MgQdDg44!TnQsxbMj_T@_pCf0AyiH&D8n zk^Nu3L9ZVMf%TL5shWZ7rnca0;;1(U zta-39r4o5v%WlHVk$@SI{R$gNbrgTd2@^SmL@hgZRt~3E(^HWGT9w$D_L1N@Mfp|Y zYt;d)LJ?!A5{v0WB#;1hPxeuUSr~XF*VUTpWe8Q+3PQkCRAKm8Otf$FNubF3GNt7k#n zWMhf5Cu}?Xija8x+w>l=Iuh-uV=Sz=yXyhM@2Q_Mjpyfg=x z1HffDz#ITB&jIFmOU96^$?+nwnylBy1sl(hb1*rXkMsghkvB>VT5zcIz+cio&d^@h zic2r7e?U~;1(m#OJ7kz+e?p@Yj~VX*9Y&cKtE)C+ zLCY=lI{__;hQ$aI8D(-bbHYUSe%zyb8Y&Tju~v);E|IrmtlA~lEa`5^QQ^m?@=450 zGkL{DW^%}D&n-JTosk)V@nVR7Nj!0y#!};SQ0b*X)w}Czp1w<%vWv}}j2CCXO&D?Z z_#LV$d;O*z?x7YHb@Vw$x1u=j+!eoSw|Daz2pI^qb$JdF|@b0)R&{{X4qWp6v$i|OBH^X z>%DZN$PIG2U%6#{`f{9}NZ7NEm;;B<;fY+biHb}6{q=SkPNf~u6wcpePLwAGmPTu? zNR<_g>nv8n>@jICR8@S)W*kDTXtvtU)UCj)J@RJ0r>mbZ9$v2Tz&=8n+&a8SU&L(C z=-2GTfie?fZ1Y*;KAgyoG=cG45nCipV7m{BaD5Ii2Y~100CNC%ehx4PfGs(|8~`SB zfH|le*?W*Y?F<`BgH(>RB06dc>n}7(WEB=B&%#~5iF!=8QFpAdZr;?mpZZ9yRO1iC zRZMIx&}9J@Zi%c67R|b2`dQ-0E}kxb_LFG!52j&!-EJ^mZ5T^cUKv~DQId>~ zQX9tS7{=b}Kp(dBFrU9&ruk+0jCXrZH@Z@@a*juT~XDxUav8w4-q9xDYCGfKr zIH|xJ3DkPKJNOfO#xunyCOUhEt(F)zpQn1gz1_rRcWsadUoQnJqq(odfTL}ZfL#WR z_snO^?(Q^fIgL1VuQ+`z`R9n$?2ed+(r3qRJCn2jHsZLAIDT5h>SfartMzlsaD$m; zIN4UW&9+WYayxFKc$yuzX%wroO-HOgkQNgdqQSCSXt0<6vvCNj!r#tL(=x&r2@M9E|Pm_0#r!Q!{)?(YSQ|D3y5ckOwm>jA%I2KS1;K!fuf z1G}9U3RP#}2)&V39(xt>coXAkqP$vB4AmF^CaPB|-bvH&r#A_<#d~Iyeo5(VJ`-n( zj42H<_Zy>%(k~ON$m(sKk=-v2W|7^SM^+Dt(g#|Y-G8-3zQox}`W1Zc#3T!D9`7Xr;>%Smp_vVOJmP}*@+s|}Vx+iAU zAEwFczu>3wMy9zfXwYtlps+ArX034qLflM!Ecs`FlYinj+Y?vo3y#6!b$wrcP282; z6vbGPqGCPh&3tEck1vYG7lhG_?(QK^Z&G2i*qpqP7&YBzl7l@^6Nl!R1Hz^tA-i zo8uT0g*%0&nxiP&@+js2@S+@G4gfFC0p=hNk&>C#Blw0q*c<>}k^{^E;H5dh8~|RH z1I+O%F0z3U%|gSBbX|qZJx|J$&EwoxLJAS|kM`e$OUgU->u4JEbhztBydCk}`Uea! z%oQa7H?sB#cf=zZ6jKuI`k5%!?;>uk>cG%iAf1PhARR_NvxDQ9&l;`;d7qFlt0R>< z%C4yvhRNFqm?)ZVE%r~pVn{~I^`E(ek)l@K5s$KhxNTb0|MD2U^*P6?RHM|$4vSE) z0jSL}t$v4@)A}UwW@P0Xote?22O)sZs{czMM5YBi_OD^`payExd_DD#tnUr_bT{9q zk5Sv)-gdqT=h#RC>2qbvZa*-KN>%^wHuQZwIR@!GrVF0&aLyPv9p8cz8wC3B1SY>J z!Z;a|(Y}Lqt`4tQ>(`F!OgnL?$BhbTQYxw53a{8Le!YpeC@yZO6p9;Wh26!C*k$uv zik?e%b>&Ah3L<+5bB^|yQSeRj(!RpO^v?R5McNu`IEnTNb7zg@}gFsIeMz`${E$-$_iSn zs#Kn90#e}FCd3#k7Z-b@YRUGMQl7XQ;^0GEKDNEytghOJ=tc1kTpKk{({oNTcRra}sU{Bi1`7%=rPdF+1-?5-{keq0+w@p!Sr#`K^=&3q?LO>6>~g7{3fxS{d6CG=Dbj;!UP7x0 zM`X9e6)UDr#=ex7L6BWb;DmTFvg(`8sKvaEg--`h_c5Dk%d7?6S5@I1&(}BKOTN6Q zki3VVgsg%d62(QMq;_yTdKqfa zihZu<(DtvHwNvVuJEcYm(Fh-EiVT-i>R9$&^fkXP$3!RcU3}xOYGk6Ej6exd{}(m6 zthOm?=iE~qy=(=-phelOy3tC9kBz0Ji0jugbTZT#mh6#Ymj`*V^2j$Z<$L4;*NZZe zYQ1s&g)J;RVG6M>N3y3E9bnp|n$h(R!cmk@|GetQC-Rz>0;npZ{z}kU71!)-LV>P~ zGY~DUnnLeUwIc0dWtiGY>%yvOUQ2a5Goa0i@J>ZLO^`>`Xj|Vc)#MKgNT7Y+rH%QU z$kQ2)C*g(lZwmA^Slkw-Ba11ySZr^qoMZh;xJ~QyeCG1%%BWgH&?5JuUos`1!+LBz zp0vRxo)ww7uft6wb3Y$93o&zFkDIB%N#ZF1riU&q5R`>eWH0OL1rdQTvkhTWYncTs zJz7Io(g*l#;o}!J^vr@oF?|bk=|r>)yBpjF#)ca8@4BX^2diEZ%)isv8}7FS^WTnJ z@0>2RR#H1DM;kw?g^ZdI>ZVGxg94@Qo5}9V!N7bTYT+OCdkW)H+GAVqCY_EkN9@6K+j)mJUD~VX^I9jGPt^B3Ub}8vz}P&45K&`a zvi|eHYm3ju6xnV22srD{Ai8_+lK0}4_oH}+ZyGj1Zq@etto`jt1Ewc?X>v!rO=MvZ zfz91XVDyJ{cr^~U%+Kl>9o^YVh16uFI{S|T8pi%*=R?GJek(?9Etl^0!WNKwnLh=W z@{vkX^J8Sovo-wkc+W36Zq7X2=^E`Re%gj`q$GVIb?uLfRvnF*gK?tt>5mkedw$aC z`E94?ck*CzLTRE@T1U&;UMVsy8+(_;!Y^&poW77AENOQACV*j@;x+NL565THU0Bcm zC#}q)zw<+Tg~7|Hq4U)bc0#Hl!V)Rf@Tjhw8`@Z!m=&fPM=Y7s=jf|k-`>jA*Hwgx zgo#yV0mF=6cx<}^j6oB7yq6J@GLY);Cv|G)in?9=PdNj@Yza0JEipF~Kxc`Y_o{B~ z>{yD~pT%b%_+rJAjqJp1DKw8$HxCM%p~G`bnHV1gO|IwMTDpoGGq? z&kEpiO2!MbH>JvIhxsb?kwMQ%K@{WVm4#sRh+q%#KlRD?5L#=`!%;R*=2I%`DC6Af z7Fkd=J5#A&NYOJ`2Z0XB0M?^dt?ckwNtZ8->+dM-oLZ5ySvbohpJSz(Q%LQytIllB zhUSY^hf#6~y^XWEr>OAer)f~;7JV9nR7xzzVoR%BY_^c2-3r!?1j_G*$aZEQdKRkt z5cllG-j8-F$47)TE605#ryTlpmP11Q|NqOOT&x^&>{Jec{$4rMhc2aF5dZGN*K%g* zX2Aj?q&pio{gmj(TM0u+>$w!>w;Fi2v8PQJ%%tUg&L<34O(UoT~rl zD;;s%@x40+M*VkW?5YsxZ??uurVU{$T<)Cwry}*}q_9+7Jyt|GFznAjB_$9R^AT5! zN+T{KFgVtBqn#qeNm&W(q`>ZyTn??58m-@_X2Rs#{MNhHQyGg?8Q}Y7X z3>u=*7p^%hL#I;`_!t*q{M5U;su-IHIKy1;fkx!XBFR=aStd-OgMe5&xjoX$RW_&4 zP+~A#>!>gq>!|IVdH(OUPLH(?x|9=;;>}+wTK$$fIaH=zd6%;7<6!CIG^5FJvOWGyDm=csO3`1$y{QzI)#O7ipIR|!yEdk@8QM+Y)5iqsKGUu>Q zjr<)}JGHpSW1?yHIdaWt>4O$7Rn6q%Yxo4BgJN*j`CKW71)KW{=gqRHTY7o0cpSLq z`6CsTe>tBP`QmRG^^Ze+Q(1KuljgEgP7!DfTs|0|pVQC8#!{PSchsNr>?l2>Rezs1 z#QJU5pZUE0%=v$-{=Pu287==O^>>6Qhdc-+BqvXMwHilh5W2 z_(aIDU+n;|Kg|^^KmVb*;tWNVEj^LsSL? z;)-lQuz#1wxC~kejUTEXd{G4nC-teH3)aRHf_@3_6wk0<4Wy7T1~CBgBLcQ$_CHF& zQ6~lipD?}`1$&V9vy49}U1K$UR`}n{w+FS|wS3d#7%kHK5I<9Vn=5^u5Vxw-U#=p# z5xaHdm#>m}OKVTU$IhvLf(TLl8~k>hqn%U#t%1uYP6NAM3u0GWvum$bBSNOv5)BTf z%amt~_E4t3Jng2H_xZU&-%{6kJt3^`OL7;2r%Oc+phI>7DbFZ)7I|)>F1Yy9$DWPt z-pQ?;NB3@=PthuI}#=e8(uiBps^Ya+5=Qc78pS9;=lN(`R?m|I;kl$mW+h@k&K&c296#uyVcAp*BYZ==-NAU2JvlSC+A;FPAIvJ)XIj z1Or7I8{KyI`6}`nT6XiaZ!7j5*fvO?&~@p{jg7b&lMYMz+3ze{do=>& z5=*Z8$;{r9SkYhadPZF^FUHXF=qwYSz@khq%j9vL2pFt2HH0yVb9q-)MJGc)j zGjBXEu0_|x%2NH+@Y)f2n6J@FNV``s``=(~vPSrZ)GQ2^) zFAceob>x|OKZ=8m7Y5zxM;a4vgPv4nw(3CqYXoEA@)z`mYni3Gu-^Ggxj%&)bB<5q zmiE}92S~Z5QckhWUm1v}&Mlg;fpYpQ{C-x$7^rMftEa!t5$GzBp;&Y)-FOWq=(W;p z{D$x?j)3qM2DGb{Kji=f~d(Y{qJ?PDxX4xn;+r;cwAQ07fF zwMDYh)&E7U=`)TAFqd`2@W7XnZPBHh*rVEIEG`NbuL~AvZi0khbTl~3$70dmmVb`g zmq(gVwzoFzDIV~7q7_HWHV)XAtSA<}5sUdjWnVEn#Po~Zg|gi*u~p{y<>jiI(HwUD zSu~^U=C&$x0&AWJsyk3`{vQ1dO$q&;-bPt+uyvR6)&m%_ymxC?U#MD**KC-cq4!tv z2n8Ex79y$d0s9kJ&X9~?>9h>ORLsXt1kX2R19a;e2JajHS=Me0nL zE;}vPsPgzXUDV^-(f>0!-MqG_EtAu|6su}x=^2UKbdh1^+pP!^J^J!V6w9Q4E_kZC z=*jlR(5`uh?h(}058HdvuyGuf-nl|K6@Ruu$Nj%Ie#>BRKz*P^uK^vJ{s$3~-|^G@2C1g@LgaZinAq9W_as47 zKZM^{uY>tx@2!&u=fMXAC)|+lS#aMNEc{HyBW|Zm&uy2f+sedKW;@e4seE@PwiB>> zLQiZH>MwTaOj#7~;7oZ3$H}rDz;SY9_;(bu$2yAhyevD4$=9jRR%syG=9Io*{f4|e zxGxTlRC)5LjO}j?18`CL2dh@O3+CSF>-3x9O4n0npJN(t=heu8QUiO|(q>SrxWV;B z0Mb9{=YR2o)rvtLza}Xv)}?FjC%^PRfdhLMFmy%d^jEGc1D0NH`#tQ&|3f66Bx_*E zrqUEG#q`g@*IQdKyEpl7IpI2m^e?!qiE;lGH-Q-1tW10#z02OGs!uQn`+_P<-&ebS zcAux$q|r()o@6%SeQrDrpWd(a4f#=e_uHi)^RfqP-^5O3pjgJX1@@FH<9qa%toF2` zNKvn$$oeTW_v(mClPTF6W!s>vuamO4zw}hRgX(OAN)z!jwQQhVKb-~-t%d8)#MxhN zchvr}&mvkcs3Xt;cX|nwL<`$JgG$;2}Y`XoNh` zdreO7jrg}fZ&ZIbx!C*(7w6gL7HP3@iHxz8D9O~3J?#oK+Wt-j7M(V)z-*NE{@&n)Vk1t)`bH z&%6FV)@p=yzzVyE)>}*RRZPZciq26h6s8qPr7D!FE5DV!Prw{H;Qa-z6)e5Y%cZiQ ziWR&-ZIR*Eb2wdN5tdNDf)JVMrn7(dsKQe0!MD5j=G=3_5Tv&85~L^X95u)(OyM-!}lszc5Y2}x(jQ26I<)+qL)$AI9?>w zLri3)>sbNXZfZ@ubuEj-v8@>Y)4khRHV}iYqEFLCHg{*!VSCEp762@hnCzm99aBc! zo-$&eGT1OMWfYykPp$9u0b{n4jC=0rZ;hG$oa^+Lh6}(mzSCctSMqVw?*pflF;<^# z%FGsJn=RO*wC4&eS8?XbjDwt}GI2(|d~(}&Ou-ljo6mIw4s@4&I_RY%@zzk(-;HS% zi(%nb`?c8_+!xl?L}c5VEqKWDiPk)p?Hd*bix11$d>ou|RqaM6~TWW8a4`9M}diKzzSe3d;TYo;L^`6*~nC7DpVPy^YJXhBfKq-MfQ;9uZ6_T zIQ|%?R7X?_eMOqSKhRgIB<291YBGR109eXnvTGC<5!y6}@3jz)1TRwk^1vKHDCte< zV`!_Z4&_z4me=*B8uyg75u0pB>wxp_vZEwUhPT{hi1{TW&=bx3k#(90PD!Ks zkJQmtnA50nr{(U>mZ`v~e!XaN=(%m@v2ABlec2)mrOR~``!{MCVyv21D)01Ae(ij2 z4de91^rIoVhFUs(m`S>4s%Kd|-u*b5Tdcc^X01K>C6fbsdByspDuRhnk)w+pj!q!W zd>ynDop(yeu_Yc)^Uzh77e^;D5vv>3vDBqZklI_yEC`B=%YtChEeP6G%ei*d5)E;+ zQaRPOq`&i)p8S}G7V@JVe6lURHGEdJ@$x_8D$*{ zOEK}p&@S=Z2%#=QUO^A2R@Odbh5@}FaN;y8=y|U3)Q5xq9|u^(47w!Od3L)W7^e_+ zYLJ#NuX?d}(SYgC%A!jwL3)9+P1Sf(MA);wPAwk@JV%d9-Wxf@U4GSy-TVv?l*lHAL0`q z!bD;H)#`|9$pbK+k5wY?3WqP3r=ux)!&34r2s=Q-q68_*q_2E*gtwc&gZR6MzqMy0 zU+bV}=HK9ZKUo~rcrhYk&5*>09{e#_>LOTO_%8{f#oo7 zqeUI1aXZJZ&D$z6`Yxj&?HrM|UOp4@F}wq>)*+iWUjdkd1poKKkZO=SHZ`YJ+wr9Nao7X$PI-hs`@CCoX{nVUq zF{O;X&wc*-4C>0sm1N-0&L~zEYA3%FdyJ~J5EJLuC`);aQe;IFqiPW8sSz5J#)sU@$-dt2@l zJti|$)W>&XD6dBw{g1b5tLic;ZtVvzGumw$GUl!sig989WAOq&8|yHG*}Nc_I*37R zdJv@6HPmY+JmHv{>3K|Z{8*dlb+u)B-0`Aa?ilDE68}@|#>bf!c&2%LaPBlv<3ZqH z)EcI2=o>>?#3B^SklL&z0@4Lq(;|LdY+nhfoX2JTdVf~TSsI%PmF9qdrgF3C>D|I{ zCqG<@e->|1eMC;Wn<|-!!3^ITM=xmsa7=&6xFDDA;a)8!JFz@}Yk6V`@~v{3K+MFj zIc1p0{NrWwA1pe1e53Xn41;!v^awAc`PuGI`3vuIfHr z*_vRW>$+ET^-?nQmAl+PvlUY%Nm-mwFSah|g`kXfciI?qrwtW%YCV^kK~qziQ|rk8 zz+=lsa{%~V4loCR-{$~x0Qf@=Fb9A?<^Xd5_)`urhvt)4Li-u&|89?GFqzGG;l%xV z22y_3FOyA`S}}=Zj-0h z6(`p!4M4Wl*-(3QoVk~(RO*gA+ zDqd!*#%T0BBq=lsu&w`2QM2o1;T$6}y9T#|k;y6UPWRxvcwr(%3Y+ot;)XmT%!v;eSvbA4qvQujcxsHyZy3;+pd^Sea8hx zuj#+v3Z0h||6Y}5xpX$1)sd6gY6TTdt)Q^6`XnPJs^7qotu0U*a~TEb`q+8LU@&`G z5KY=z68GLgRKlHK@$l}c`wwAoGKJK?e6#FV1G2HF4D+$4j^<^LOuyeo593qX&-s{C zH?ck<;{)ezid!Tke*fqrYW=$m{#%SsA12#ye~viFz(p@SD7xAGdKN z%Ka`>2T)YU-q`J!qBu4U=Z=^nHny(dc9cYD>~}KqltWA|L&>WNz)^Jv^r@cz!WX$w z%T|)r^)UNnt7ungs^3X>clD;M&X*IxD%>JOD19268=q!A$tvC=c!wN6I!n#%yTe;X zmaG-BSe7~O4trxvLne?b`e)5@q?3pd2x}%26WUH@Vt&lba3Nh}8Q0`&D9HFz+pLqd zq?gR~p*1(Yj(T{d%|Qyz-{Jj)X2yL%h1m?jeUr-x!{~}P^X3t=PX)t6yx;mSIJd;f zO~mQp{qr1B#67fedvAUHYVCa_xE-$uI2RxfbsF3iBZf=Wl5rb{i8=eBU$3pnMI-vy z(of6vZG^g~wj?ZWx653KHuu=~4w+^X)KzNf2wbUFDiW(WXXSTe8Cs}}@l+)<>)6)% zpH#N((7jF5XZ^lYbFa9u$^YI?e*2K0t^u~!2;KPptjJZ>%M2+CR!+;kQ97SY3iUxC zwmnZ5;Fl#Lqp{MR>1X!W*AgRpWX^PJ@|0ViCglt?v`p~bUw_L^NwtoU9>QLHwTBSB zKP8S+SpPN7sBPCcGCiD1j6KEMXs&JlkBXZgN1J82g3;=gdMi<6ZP5)bzFt1d>kuZy zR~bL$7&C5`xDOE8d*aQqInQQA7+w1dn7h=-j%Tge{4X-XeH!kGXt37Zn6H$77Sy%( ziag@XBB$8=Z-XtQ=9;mv+2MDyXwFeV3vy2Cw~#IZz#F*+?>4x8Tkyq-UlDwyv4`Bf za)*!l}#9YPV}>w^yq!yOTSqV2%ym!KcPHTCvh4#7~#@6bV^j=W<1LMHPfSK_rOm9C)dOsElC)I{&jljMd=G>BTT&Tq@ zAt}BIC3=!0dF;IXTPu~Poit}l|;W?w(iG&L{)g%x%WnA z?TG14OwP8sRhnJA_Q!GLgcN=4V*E zH%e>pP7K7PR77Q2rbCF$(9?psMY_%JeMCp;a=81%;`&8k?kG=Gf6d-7L^Pr@{TxI( zR%vQ%@At@HsNdIEzt^ab(raM=YyYb9P6|*>U!dcMIF0)>%k`D#Zai8wk^j|Jc)V~@ z+z?Z6#LifUgNo^c~y(0$StkBI&qAa>F`K!km6PAFYVR= zVPVLrxbb^3Hq>93TYnD4!@=X6%G_TK>o1J>17ZCItXQZB>5HI=X!GkB(pLNhQF^i} zbrnB&7updk4zK*9Bv{T;KA)5a{sBqf)ZE_sOQzRucKo<=ovyR}0A=EzHcZFcP0Lnz7lHS+8Yd=d7G4QV ztlp=^oyvWuf#2nN#sK7<7$$Hhc7SDK>wEK7V)Khuzs35B=8A%KJ5cD3?)#w*r#Awk zfVnQ(=S2=}`Fe}CR4duW2_Etnk`EMW%R+chI?&yjvRm!gPT8HM>?S2@SDx4Eht~dt`tjLQBdU__!_NSGLGx+4FP^CW9vaw< z%%Bu73MB)@saXT1u)u-+J$N5~D>$Ywc>Wb8mdE;w2fPM9eD3S;(gWBR%6&Pd9hg}= ztAD0l7Z{*?n!*ufNnkd>Y?gWLK%_D;;qwh|2@}hwrf|}h2R2zt($%<+ywm+4aT!>} zR43jJN1cg2!pv;qX*WPtp#6zmJ)~D6c2pQYtg=Yy?P3IGYZbKWY+MK68kkjE-9IZm zP)=qKYl~i6kvOLQ-fXQgsRc&vBZblN#m55%NB=BHnU&9h;#xeWr;dC8+;X6={srna zJHe4MgYTZNW|$4|BK-Kd{e9^{M$@U8YiRkNyG_&I*I)(aysWmz(?qGJ2ZPL1D?mSE zOBah-opKKSI+&#~7~pT^O-6yi<1*@JT;Opt|may>yb;2>N*;N z$*z=M1G=P%Z`tm`9p;;c9GO;XB&~00bx9ke&J#KJjj>IWony@l79J3kHC|M%O~Btk zxoT(f$h|sUYZhZpF@PqqLj5)n=a$kIF&uh|$bp}(fm?%F;uqq}kTX6Sv}ptdi z@va7SAem)tX}+-1>U!FNf4&uYNCCFF7+L;^J6Z+{r7k^BRnDIj4chDU&{vAdN2xHD zTGxJ#j-K2tkDa4jO@cRB8)&1QewZz{-deE@a@iM`(TZ^D#BkEWuOJ+yOkZdUi!U_$ zcmTUL8!dNxCq-H1OE10l_>0=xd+Uj+(^VF&Z%Ba5zY8z)vsTHrwYJqi=$8N>KRTXP z{w&BUsiT;Ak?mmGNR86X&}y;*A-;j>AayM}{(mS}{ptkm`%?z9f%PMc$Yt_d_bfjx~xI0Iy6A{=u77|a3Y05B&9m_syo z2cL)LB^oQaqGCUh(7>CmPj_>cJ~IlBXwIv+}1UMqKcVLZ8W}>*q1tiuGslYb?=b zE}O8DPm-y|ez)m3-)7~}B2zoD#MY29<}^MGndZBX$vF8m5gz|F<=1V{NtLF)1>E7J z$aJBtT{({GFKdCTqrJ9^tG_mFJ3+c-#* z>mn(bnyJZN-k&dV4UoNXB`RCebJGXdNM&-mSuwJ3E}9=j_|m@W%11g?1E*$k(AZuc zKQ+>M1=;sw*^(Oza_x9nbJ(d0c0n}ObvTv6qj1%6zxNsj+k->Clk45SJUH(s!AzeI z)(7wXV-6qg8W`^~xW>XoV0g3Ip`&80Z*)|wcc|E2edUf-iZ)b?{8D``t;-GXa*#Tu zJBa4J$>M9EGoe2&~c^F%;>K$-9BXq|%%RpmBxPP=)j{py}iM@UFr+ z>~E)VB8HTGXw0NY-`{l&OQpo#-5jL*%L;eVU*CKO&e|TPo+rBmzl52K3`*d432`$vp7n=Kz!~R5}7+-GiO&4_-#eDbiYgh-qZ0; z=qb#~Q`O(M1g{x}nPKt((Z-92?!JN}oK&ezsWqHbNn$^iS zEWW|5B6@25Y^zlf5j)klXuNcW@4JqPNk{ z1~KXrPO4KD8dcPBdQE`cXTK=Yd+(W5t0Fw`O4H?D^#vDCXF`S_QQ%GqLvl17)MeoP ztO5I7)rbWPwPk8XCfnxx1-_R(dN;!Y1#ry$?KNOORoU-VX?7+#;Hs6=K~+%Ep`f{Z2x~JtdnoY%ZWqEi3LclaW;Z)lVImo&~XK%{r!_MKi@we@xwj zXTF`GdoIk`iV+w3EA^j?!^2uCX7ppAr$o1v0@d_R>j{cVU{gXnL2rrvIOYjDI;Wjs zNesiV{TkT&XXyQsPD)20*U=*U5!t-(I};x8MU^1-kN4p}st7Z^httv4-Ksw9_XhXm zdpv)={OO`cMdM5ds^7?3!1R|iK3qpJ3TE`@Z|a2s3OvEvZT=AN@plRACHV?g9V6!> zh*@;oDZP?P*0dnj5v9+B7iR&R6tFVSQ*1a*sKhM!6qYrdt6(tcN;R~2iq-;7qs8A_ z^llETYkF@{%Kik@JJ9^8vfZXKvlO;`}|+=WHX5d_a$>J&m<`@$8~j{sM!B zyj_&>%P}pID>)?{Y;X!iUav#mEI!WZ*zS{7dN!SDf@?$?9XvK?-*f{&>4#=|o7Y1l z8e;u+LnuoA6}s9QxER8G04WFqOa-vJY(+EIG9}@tvC@TSX&YpGwtf_DOF);l1UCaH zdxANdGAzXofQXPR3AAT2rbnD<9>I=>tyK9T#iQS39uBX$czdJdU-EUjCj;2YG*JE;@5$df&@NFyl|n+W>WzL+TfHfpckJ}j9P7grwG zRI+&idjtb)Rbs4I&`~Qo-jwy1T}=3N%o{68HjDi2l=c5mdzfyCuT>6g=*+WH9_Ild zugChIiISNBQU^;PqT6{t4tXj3)(`r+Qe|BMpShi~@)ldWdJ9PuAwBC4pNoF?3m0-qmqdDd+UJQmT}y{h-a3luxN~_v zK25mgl2xqCZ`i3%)@Ph8xej;GD>nA> zx@261*v(viNZvPJ9lWU5*Dk!fn|xIasL))XetAhasc(nDs)8G3LL=l4)-t}w<$N;J zo#k#sCFS6mQ8>Chd$Uq1ueo+B;3Wj0M^G6%t1$(RZ41ev@e{d5m1nMOl0D}Uj`3K^ zUcohje^*&*AF+=7n1k3;KM$z@vY|EDvW&JaB7Hguq-UtNwlFH0ySQdXRPvw~5;Q?f zOtJKq;?-03T1Z7XETgKh^podN54Vb{H5f#UG8bj zL93~@Q}X0cVA8B2qqw>~&NIqT;?lk!ICw+MsNObY5g z82__9G<}pn*$h{pc`yuD&%(Yfq#hz?N1a5$5!A`Gw2Pm==s6r_5ql2Da<#swcN^AI z89QR+?3RIgsNTf6!Qz?>8?(_l^?QnJ@JfcLFZ%N=7zEX!?;JDr?FE=9RC}g+TSvb? z8ya&Pabd9cF6jo{M7RnHQ|L_gbIzhXze2Evbnj{9m$zHBr#7f9sc0x}PgM&T0oi~Z z7es(R&s$Rc^gPmYmY>_?x7u(92oA2$qf%*gk+IemO4W$N46nmM{p#rLie>OLVY_DPGL*ZF70-URVnLYhF3rlbxYT3H{v4_FvPgDZu z;tdYg&=hTrx`YyPzM_v!x6QqAjcu2@<+fHf2<8R$Uxau!fFrw;rMlOC>wPv36-#Z_ zUn<|ioVjAnbSCwr+KZX%ochh+_FU^9qjqfHYxiC^g6sXll^n)=0Ts8kX*bYKhiVe4 zVv|t17=5+DvTe|NaYB3K~b z!*|V>iJPg*)1Sj=AL13l>h?yz@P&=4KJ6MEQ%!}F`dF4ag_@78gC5~jGC(XbvGP*vH9 zhHz3*Z{DPOHD__V(cT-CB(zm~_m#B`iC2HW+@gTGO>)<_*=%|;ra&e61RdfTrc9c{0Vk0wSgDzV|%Jv+5|`Z5yAlsQ97ar~F6 zeu)sWh&+Ku?NCMux2_VdrGlQoGWRWl74!f{B9QEuzZKBfN0>lY3(uV98hxtGee}`$ zVKFzMs?B}za(=K{sib!L zHhP3Q$O?|t5ta-Tq}QcA@>dE3OY?Dyt0Yhc=^e~no<(63Y*99vCPT?9P~|?8JP@{b z*rxqUD<|sfgR0;3L;RW|#@55pW(?E!<4$5e!nqsU-?&(6C#*OS&Bk%EH<5d$*o;04@MEmzoKMBUtg4^Mvp7AjaFM4LH6>zH=JGzOU;C_T0L zy#AzKRV!#+=fTBWCVpQWowK1Q8rryYR#$aZp%}0EPBh*(vnxU4vC_DJpDiS8_rq2O zT3g)#U0f#>T|6B*DfBD%fG9aUP1cjG3%8O+)s@q8h=w-YguDxz_H&XWVRCSdJ>wz0 z^R^$;1LniuvRkTI2aB*Z--?HBowH^-$}q0p>Z6E2r^PEqXDq5u_R6d|m7Xe6i^NPl zm0PegwQ?idj}FM_qT=$t((om{C53J1t^J5g_n%cCOTNJG^vK2WC0sWETq@o+HL#4B zZ?~8^D9{G5_8{;t3m%USZt!94^0Kpno{NJ4^h>%{SM5k{n^=c7hhijp70OrzCqT;D zaEzUVZfAG$Hlgcg4I#WFXzZ)bJYt78Vh@ql!pS4}T|-M9BwS%~KbRH;|A9_I zh3~c?SU#IC#4lgN_X)nMYWvcKl&onO@EqR4v^_bRVlC}y3SDu`i`DsSd`>**E~DX4 zqS=|NiaIerY@c;D4-rzo8KPLwW(*WvYcbHH$R>;@70F}9lZw@}s5;kO%z#A41v$WZ zM1`;Q8X4G5lGGYurw~}0O!Z7Dx31+UQ#zABQ#y;%jl}LLVjOSt8f2mtw9>TAcmULh zxOr0_Qb2d3_OWs4Kw<0tU_f%S`TR|{+@|ljO26_4o<5I?zR1S(XF8ZSw64R3Mcfn66yr?iVbxXhJCj$DS1E0&zk4&?_JLAyc{wZQ)Dn-FO5+XFymR98V33#${V@)( zy-{Q-2^s&1{O}L^hdOHxq@u|h%H;7OU#5uQ5Bw>-mv864Il%On$EOd&FV#K7FAsHR zIJpi0{^#=YsKTNRO?`as6ysS>1&^JThi>#xhpOLp+gZfj)@M3;n^d$nkTNYWZ`hcR z(=*jn*#InV$OhsLx>uZ@P7oRg8tV?v-agDc8+>f84wF-aQ*F+c*gfaSa{&)W@U;mm z=_5G>c<6kZ!Ct2=h@>#i;gFdus>z04i?p zE05O@cb-cY2@PJGSWql2NBLPXOXVH7G?>$~2p5;i_WugKdDH59!%|a~?9sO#fHPtK ztFc(IVOrf?g&#O=>{>ZqO*!_^n#F31i!!P-HUg^F-pD?t=(L2x!dvW>&I^kz*GBcx zaSU~}w9ZQ_u=-VA{YZbIv|@HUNtB!fzKujHui!3_JRMjV>w@Hwth=pTwR+7y`|h{@ zTGWnYXXuoy6OLAl4=;TP&E!II99?{y#@(>#k8aa=-g+cIwhBEBq>YQT3KhuU+f-52 zo4Cv!ZaWaCgd<1kE9+F|SQaL#f}1yu1wG_Dp5==vJ!`2H0Y)V`gBVjo%jz>Wu;ua= zoB-aqgrEE^1G6zX^h$b1){jhYGmHIFB5E2L)ORx*BoIQu(U3x4z8GI}GCznGqT~pL z6?P4)6H`6++T$oq`Yc@6v1{yVT&RSaS5JcWkI_d5nNo#W_ak!WB{(a&kpP|y-D_2K?iwW5Pb!&c7DSP{cKJ;ZO_Z=Y|iH9 zaVk-AK1e9uF?gcnda2s%hq1I1pRl{u<*>s&s zD4$al30gH*{4?KAisnh>DpA74?yPRFpcG@frhF6jyZAco$x!hfj|WqBYccxapW(xr zNVKwdR1s~PmLZ9E)b`GtjK-T(zS`WZ#7yxyth8GSwRia<^nD8Yv|rs1j**=YWYkuo zn>QgaUS29%IcqEiR19tRpI?qwWJM`&N83~;m9;9eLnT{6{d<4G%43XpKZ3OmotR)N zW@Y0hm=#W!daQKi?H%Ql^2UzZtS~BXw_;&HM-UU67gyiF3?o8zs`CTGtiZ|j-ezY!7fMmszr>sY9mpMqaBgc89AA3Z4^T`LArswJ^C+p~-Xj9iIc!vHmmERLY^= z$6pL;M^O7TW}%*oZNSro)B0;@MR-*pgRESnN^fm9YWIS5opt|Ha1kg&lq0O6O^E zDj3jKjlV=fHYgI`r6UAi zYS&jjW__@;g4pPg5-Z)TE%z(C=wZ2KQ*P%lKA+{TI25li+OIL;k5K=xy;3>7(_BT4 z$$c%7=e7Da_7I|cXoF1&8EYuAl`>wF$Fnx`b`FCZp!>_vEqwvwH`{w^WS=>U&O&Cw zww7iQSol1Vfy3fhv1q)tMi=rVD2a&cOe`)H(|6*)?!}6pQpsYKdTNz2@3(lG={P^b zVoKxaAn18O^=MrZc`^5;4RvulsC_uhz<}i4;4V4C%r*ncAL1T%Jgi@K!n5Ztc=}4| z$DR(&Bi5%2+|~$!uZW(kYByTdRx34*X|2S0!EG|)nd1#QBFt!cO!|v*8{6AcY%eQB zX$_CnRI)m%t_Vv#os96?Fng* zF|0gmn4&jK(Ho|9=KO=&9UNrD$s0&yWrAO_QvRy)8fq#Rx}Twpt^4K9>D|wuyX}5! zAAs^4LDmBgq#Fhuo$%nSIC~VmFe4@VPQVJ1TUDrX)-P*Y891V;-D|HZPqacW%J7`( z>Bog zJH}hjA}qa~{%XQl=S^*<;o~_9uBOxvS{tf`1`4|EdP-T90ZEk7)lW_3KVf3-(L z2kTq+;Eh>#2zzg70;_8_zPJjxCvS+BJpTA28JJsmb~n0T!|k1L&phub^8Olmv&S;> zE%&vr1Zo6i-6UFmt+(sMRmF}{v3gvwn#*+eK?645Y#EyMCTBvAz-ts})S>~e7`45j zmNmcDuEk1ip2rv;*iF<!0T8(*b(8-Le1I5~W?n+AzVQm$yDRTKqSg|X$ zariEIaEs9L0JC`6Kc2P*iemK5jNN^ zRhrMlldI}ApQRA#*y+|o5PV(zZc;Ip_9WjSb~vdRHww+{(9xC5mn1kq4FA zK@&)4+DS1FDir;NjtEP_7bt>bc&e&!vj@TYvtV=$Ri=8Xl_?&Y`aXGeyxrXwyyO-? z?-1P!p_{#IPItxWjtm87C7zfv`dLX|P|nUuly;P~-`IVbr)9iz+LN-n+(ZFjz*fIJ zqiXeQu!L)DRIK#*R*}a;mWM)?_BnmYm3WW674LX#p%+cdg zo0CQscx@|i#?a=m8FMzfEZ{iG@UZHnegrd|*{~Wf)=$BWfBY7cIR#)}ZH)|QO z4bK*6k!oI)9HZlYTl4QpTIApT9Ec5rk<;EV?tZ7XV7?T(c~ijxR{s)>DDUDg0#(jJ zZqmSQzF74^sr8NCArO1rDA)q-|FW^EBrTrOj%EB{qU3yGe4kDP7Q{luaXz*1HNxr< zJGlkp-q3ZwQ{jJuXI%Ci@BbrP+1V60wYo^3g;8>YXy^M9eZ4+sLiabRWN+KO(H zJjK`7SnaUCWMTiKup^?vQ1X3TnBsV;FfHfgY;N)cAP;krfG7Dj?&NEV?EXjP|AzeS zxX&{8h^5=aVMJ6|Xzq?E4|hblx-*I`8QTx3Mojz>ja}GC7q~-R;APOYW$Xl<=!sI0 zcc+gje@4v9MYG2BE977h7m`=XMIR}e?v&1ANBks}xsr!1iBcRnXG5Z5yv3IABdec` z8?Ulds>j&m&EF#3=q%fIR-)w9gi0Pe5Ee_fZXStCBj=>Q1%b(Am7X~)4#eZ^?APLJ z4>2cN|L7TH6IY%5yHDuvODE`-pp9gi|l5>{?KklBGRsS5dUVlhc&n@}NmhPK3%_tN$ ztjGdN8wt1x!nUX-W)!SgQsS71s+fb`JVZOG01R5_&OOJpD9<4TZ*B$4Gm?kUuNLO+ z6WS%nLDTTcv)hDcH6B9NyG^5}QIN|APA2X@DHQVwnwJm^bG=xD>QENKa^M$O`*DNw zH9yB}%oWyd1+(ABR-#`uGqh1{J=7f+H%4|mv-!eDZi^OPI;+cCyRiCa>W>9p@5Q1E z{i?cI@n^;hFQG4PxaHXwRV-fj>fczO{iwEg5n9WehkOAhAS@SAcBJ#SGy&O*zM2A8x&zuLndI`)St`uXF#x z%P!7i<$#XZ9yhx9iPvSZBpZS(nf&quxcQoWZ@=`(cf9Vhx2%4}4`#gcwzx>i~-f-3%uNt`jJy%|~<-acZ>#x6Z`KwMouWRsoSH+iJddSQ_|EaHZ(*uj1 zeb5E7Hl6s>br(Haf6g;^Jp9w>;A6j4SpV0T_C0dt-Id$_{GPk_z3Po0IpW)2`Q#4{ z|F2Ko@sq2*yZXBGet7gZ`o8_x#zP){{~as8x9q@R>eOwge&>Pe#SeYv?mvEX@t$9} z>#R4u?%r?Ay#3Q3f6K?ir1XmJ3qSI`-Y+eAvggj1zaU-Ff8w(?ynn&PpFL#aihEwW z?y={_&-uas%h{U%)>%~j|F_R`_nWj$o8F`;?G1&7hukD>6P8l8vItssL`lk0XlbEk zdGKBkZA_>Ou28KkVlAiz6nPa{1Q8H?QC|f&sK`!0P;miK^mTvX|M{MIo_lZFfd2l0 z-e=~_%$YOWnVBe zWyAHkE84G|{PVk-*IwAW@7dW;opsvANhhxS)t`?!^UM{ep0&ec3szlpWMaiDFI}EK zYxufJv;OgeBmecEsDxaVW<`S3UX^~~(2SG=Y7i5Y)-&rdI2 zb@;>o96a@wBYu3$ZHv!K+A1+4fnsN`RRS$kvjT@1H4_PPA%N?!Oo`p=iPS3 z@wZ+ScIF;l{f*E5;?y5c{`=U;SKj~lu5+(^@TRX_|LFJH_PurJz0F_i+xx_Ce*G(F z-TAG~_uui-?YG{$sp+}f{Y_hMK5wr>fA-t2Ua^Nqj%{pEW$9CXju+kUp;rc-`> z%_EPDUi#4IzjNPXi;jKenWO%A`dts5e*E2EcshOC{)g>x%bTAlH$Qgxto&F1vee(> zly%7izWwqk&%EuK)31Md!#NAzeb1UhF242DA9TEb_1&M_8qV9}xigNv{DP(*`iB4JHIRSwtM!z^SeReo40&&+1JX+wYQ%5#n&FaZ{bfKyzOIGKi)I@#<3G_y6?2l zbiK0j#m(2OJwJcx+1{7Zxy}3UG5L2Fot~*oKR%Iq-_m<8Z(VoCb2pZ69$qx-_NLEl z*!s!ldw%xIufP1%dv<*0$-={1fBL}#pL_U^f4lYRGtPPc6Qv&&?|JVDUElc2&o8(s zyx`EUxBqHc_QU6{o$}fPd#6{QSeVrE+SRK*zUIaifBWfcXP)||pPW^E*K_&L{eEln zqsP5JdE|Y!`g@()b@~_oT0G^!BMx2jmM1SbXTPOuAG-0WWsf|*y70`BKkWV3o^QSJ z?k|1!>bu4+{K+kc{^qsY7VPlKH^2GO`|f;T!KJsp^$XX0ZRgY;58ioc`q3Zldi>aN z_n!XvPJQcE-+IT=Q@`WQI^(3v%3=4O_Y}VN`3+6qp7l&>*(EP~z2|i5JoOTev?k4a zu%&j!Exu%XRn7B{z{jT~f{!x~^7#ZGt+zJv9U48Ih(n!IcafEW?*Ae9lYra$rdC+& zom-i<3|7i@Ddx|%;8H?HFXN|rIX}Tn<3f^0a#)jilsvrR+F%Eu!hQu&-2CJ0$38~5 ze^&4*z+;T9GKoZ6 z8+(nm>Sn@4!&Q9OtAJYB+r*R{StEwc)>Tku0DWtl5c9;F5c9;F5cAmPB2E*}8Ws}o zNaTrjB>Oqsnr#l&E<&4ih1RztF0yS$-sugCE=88QP8>CwsMe0358Wi-<}hCDO9od{ z%%Crt6Quj_Y3f9OUbHA2ISb?*K)#nwGIF-urbi&Off~37f$LZ#F#NPJ!bBLhD#8b& ziYiT=pcv08hQ?abOtWeqOLX<3Vq0(k?SSqaXHF65Qa3KsW=|I*qR0f)lIm*Z!)slQ zD=I%(rn!pyqBu6`r$cb*g3aPwSNVeRteeJ{}`n zaY(b4tf}-+8z)K@wQaCDN6Ljseww{(E?5dtI!Nn9a_rPMc?(bk8 zf$-o|cIy4t*}gPs_KUTSu9s=tDs@~TUZ+e)olq~6-dD2@9`Oil`alh7Zc|3d%MLB(PBKHrd=OVpcc+rg>0*up$wS+J*9d&i_AM696Ly5dbvZLX(KzO|6@Dri%8Wo0l)YW~x z?K#^zFlxMXGVN-a=IgFhNCm)b`tfb+%b2~tU=a5JBO)9opIGyaj(~Xyu-A^2c zzheUYI%aa|o|CGVk;*$qZ6l&Nsx1`IG~2}U!V#2Od1zj^fUo{)^Fme0qIuywx&NQ% z1x=6>&I=a^oj-EEKBMSI(bywNbR z;a*|oy%1?(Y5(Ob5tZrFzSdvOcf}yuqD2cUxiCKM1i_jIO|ltqvQzGY$N33VQWH-y zzvx)&Ux<3KA8{??n^zb8@H!lMxJvj19ObNBU&Lj+MQPhei@7TF1g9m!>y-*-C5GxgVWj2_%!4Yeu>0gjcMm17hGzI(W#xr-6P3Pc^!(nkgO_|(CI10 zp<3Ki7$%`_<}m;*|JPJ+;J4u0!y~<@7?}m0{2ZPkPmc~$jT!rmE^vnbMPz%2>0+&w z0~lvMpPkn>)KpyXpsrU{-cDmV6y+>7PNl?~_skqyI*{R0QwJ5l)!EmMeDBnJ>4#qi zF_QDvF07-CHFaSEHP)p?!%FdGFG_!fg42sN_vD0sIzi^fmQ6Nxw7 z+#LyfA8C%Gi2aRG7R-dOnx{h^?w9PTdEzf#V213__>AIy1wu#Pqwc1Ad85>E^+rJJ z1u}TR?Zt8cwPiJ`Qg?sS8y$<&NT`DTP1=58k6lM3y42B9F$A*ViHoWN;VxlO6)v zwOq^#Zw8gQJ*SNv-U1-#aG1iqD1>hCdEu=Bo0(WH4d8as+q(NIr_f~U)zq<^vS_{V zgF>OP?`>Avz%&$(Tm2xG_SdWXu^Kj(uB6Etxj)>|_6RGV&<@Jd3O zV2^(i%j#cK^yNG>QSK=15M?vJ@=wej=F7W8-%{m1Woz_(oxCgmlJ@{=%`L2Jq`X(8 zXdGV%!vBDdE~4olTSxn98(!YIw3E?M={}iU%nopQeq|p#qR4$ql|cpmJBs>(57R#D zt+M-qkIHSe)fZeWw~>q40v!jl%D97~X@{*ZjOiQlLXiFza5~(NHHO`oCH6?{nOKzA zD{(5fMOG$GORPfTEZ+YW;ypv%vt52KLuuZF(`s^*i>Q}T{h;VxC2ai%aWfN4AC)6* zLFr4kZZ;`x6tVyL(&;Yp2Nbzbo;oT=#$>*mO?+;E4VZi=EodsYm@k{oYFkh zlr8PG@VBK?xxZ^cxm@Ygp;CTu>t?it9%{~&Rxf;^d#(j}8yg(($wN?yxAp2`%JeK{ zO6GkQ-Ds9`HG8Pws4h)e{_Muh>5kL#EdQscd!H{)ZU`=J+??^}|K9p|%I4My@Tf}C z!gJ|W5uVAygK0r!Q(ABpDE_22Q2oL&Y;8X$=?^Vn>Ig2^*t7k^&S-eI4Njf3F}Mtv z^jp%^uQKk|r8`#S)7j{>Va|NEX8jMR=VXRDmTBt3ybSAvPtubj-Qn;~+FVLM7H~yF zz+F*5y|;V_+GU?cUq6)T>1f<<5m_tT^?lz)3BSxYfdy28yFuj`r(d1R{m|eM*%{(c zG(RD_>s}9?1)RJcrs_ANeyefFzE@10yTNoIJ9FVAV2E3Hy?@HMdUbZt)HW7}_o$?& zbQz2$gn!=@=E#O1`$;=17(MeBOg|UuqyvZR5AMc3!;Ybh865z z2GcB#SPW}Zt=DY5WT{*vZX%;OeKR>YKl*@5FfWg?r5tJh>h617HvYIRe*_!g9f;sY z5g28fyt@0yawY;sk^28&{aZR8KUdj}ybWtgQwL`*Yd^uAo;sjxq}c#=i0P80lUzb)d5T%K6Sb)e zgRiL+@tvCIM5pz!=-LLV!jd1d`(C@SrLu|M%6ms*%C;lUI9Ai-thENWfhybFXpJ>T zT&FKHIkDS;vHgUk?IG1BXx7DYN3LruC{%Jh?&7wc$u!ahBqJtScpN+$pW+pkjsqss zr?A`YCOX(Qy`NsoXib5|=i#uSsmaO7;)44Pk8cyf^OUtbhub2ic0uyB4EXhg+a{9bkc)!wiHhvf^u#ZTK18Wr6-%oMHrMzn4htv`A!j^*)x z3#%cZ2MU|@Ksivb<`-19AASd4{cVS9KH9yCK4V~3<+o}b^Vz1}wG%rIMB>BB2tIV+ za*F3b#m3AnRrqZpMRc?cS&7-5#%2DF0$WGEtB)W451*0m@gvc+zBYurwRe|%M1NlR zeZk|w>7u#x-muWfGLydH{rvE5!g`~at`1JCSX8D2|N!#k|#+ZN5CFp^ys zKNL$-gZi?wbYs$6#Xagw`aFjF$Q3Y9G3ig~%YlKuK4a@Lbv~1$dc%t2 zUtyfuqD3^+d9|P}n&Z`vlacdNiwd+_lq2nbR=iryZF#l9j8{J*I-_ippN)96fKkE* zUX7X-yjld-d9}(#WeaG$T8Lv_ZN)YE|6h5vQf96QpQ7=)B3>=T+w*Gl#9WVUt3FNS zkt>Nsmvq43Ih9Rq=p_z9aI>d{yt}V5%NS||x755cUsyj^2QHtPs74hx({sg$xxx({1 z2F>jv|3bm!t+wZ2G@&^SUEkoBz~PBar!eAJpXp)JPYd0z`0;}mlxnGHO>W(soU?MO z$1J>cbN3CRt`2H%aBmw`^#ZS7##etHOZR%h9U9!T8r&TX?*BBS#a?^xYv^qcej}>m zCam-D-w7P^#}_Dna0DAX4pn)Lampn0h+iT?`eHdr9ddKHjEd;XO66o99Em1=O}gqI zfYF!#$cM)sv*9Z^3h8N+f5b5TdK6vHV?`ziBaAx6uHqC&DgaB?gpIN*iY;PK9$iaO4Gsz z=}kX76?Mf%83(mr3at6Zv-wBynX&%@0n|#ep;o->tX9A&84#sO{6@ILzY?`jo}957 zKolAL4S;*WvG=!)miX-rLJw8SjvZZ@7klB~iObGbM9__$H~a@c#<2Oqf67w}`j>q5 zbpO{F^Hq7`J%%d>o%=PQTwQcULMByD41a3CJW0MdQ*T_5FJC=fvN2|=(UTsREYldI zTB@Np59b_NVqjF#3v)R1CM>gte(8GF1vJD*tjqRQ4%g_+6S%I?ZF=ILpe=r@b_)uG z7Z;x41x+}@W_}9gLooCTm*kPUYe5lC2IyN)Kpg6H=jW?SO#x2hP36;sU^Hs@7R3&y z@f)@1En`8Zhsz+=n;SZ6k6u`*^}=vEDWdkCkvR7BcrEW?Wi^q&E_O?`l^Afia0cI~ z|4HxyLuXG>RN%CPzfTG*}`Fc&RbpllAReo>XL} zqXxLC&Qze^wxGl>4Z#209>*SRwG%*-SDAJyONSkCH~V$>^dzqU>9$b7?8pi9jOljc zW>$_1H{1-$Y;yQ|r?zBxoQ~SE3pc6$XIj!T28yGbAZB{gw5DJ#czI@XCqCUgT{k#A zTb`3^$!;c3I~wYrTZ%*6La>Yki~I>!jdOU7BS!#!-m_V+Lud^r#^=!R-8icdhb0O}?3| zwBwBK%F)||F7$c#{ae(P?rplln|Wid<=+o-O^&oiK3IUqpN8Y6BICJHpKo5o`X^DlIIdo0h2OAd{vPINNnWN4m%ThFk$lJ{Di6wb zR9i8hjRyhuFypX&#(|SNtem;Lv|um_1;@;lv&RD(z19+tx&N7Voe(xyqtqD~?|yas z5N>C5EST*lH1ENm zz+(9_6?9@>b7Y`&^P;yAGSm2(jz87EP zKSkX8dVq^wa`9I0J{#Dn?g?kjf(JzKzBey=z&X$9JB%omAs$&t*kx`6k!D<0Un%)4 z`aD05wAq^%eW~V|vw6|xny1vXdC`WtFTZ)w`ns=qbNT$JY_N>Ak+ZP5yxck2rVMS| zTt3FWl&u+MB!A=dWNAT5asjspOM5Puk(;@q8P-qeDb4I^klQ8upK!@@TQ`?yL`YBE z+=$Xo?*9>2& z&)`EcCf*p$fs=#P#g5U4&#+EQ{F%Ps1^WQxyiFrSS7N4RFxq84=vw<@uS|FLm*uso%u|ccywD{l)zB}h$ z0xfrvF3DQhnS3lQ*z9*>NsSu=?Gb47I*3n}@+WQF%=(+%tmCXmjt>u zCLZw@%B52nNN6gjToY&Kqerl@)Y0+8%0G4eL0v+&cr~ zlXQ*p&h9gt$V{{g`rC7*y%tPQm-5T-4Mn8^D0ZB4&nC_VL?MS|+_wx@$~nr=xVHib==M75k?_=GtYs zwRI|=e*-GxHDfAq);nT4lbkCi5`Tlv%GY@SJ-9{cHGYTblxfb?{3wHoP!jCIqN!=D z8QaeA@=P_ryDnRMcYfDh6U|zO>g+&ryKQmKiEuhxyS^c=9eH!t;qo~H<(?q)c~Xql zBC$>k9eB#ZbhTTA@Oo);lTns+l*MNaBv0(Llf$Pz%qmrz752cb!9h04N~fJvNS98- zieYJ=Wtl-6KS_IcSbd#7X17}0X`g!^A>IG7FC7$)rQV{^8_P@oAvzVmHRj%hOtLSP zDdlb5k?#Ms-~B$_yBlbwSJU~pEyJ-Rr-%-3aefW&;W6F-djAPtOSXecHX}}kCf?S* z6urQ$YvwcHRK`6?^Dojcr<8U+p{k=ZPS-ktt`Bd*Q=UrG>b#2e&QdZm4*4Rsv;?!g zn$xL?%kTG2_Dg*lEoq+_l;~+U+Rp8J8RG?;Fh~|0AcDz3`D^C*Ptt-0qf8r1r(zO2 zrUZPS*%seo@G;9--TJ+~j)w9)C8gx(@cN^li_`FaUO%==YWVzg|D!XkO?~T^F}^h$77rx-!r0UqJX7J=-ZNde6PX&nfk&joYv-bCV<*|z`e9@lb=`|yTcArC z*+6pl&&)%1;!)xQta8Yg_1H<2E{}SX+$WpcIw>iP$A|W^7HkLHWEW=nk*~H`Ljd?OvTcTM_4jMY|}M9chd^3Fgc0dSVwr&dk}2D+7v^ss708|u>mpoZ2*pVb+sY8K(=e7vlu8IXBBgW#aDfuDCl{;+~v zILdzyO3G^WRZ_na->}HlrO1)cno#6mAwMjhhX9EH!_8@*zIC~x&f~SGcW`$X1e-bO z!M2rH))oQTO@2^?kIKrGE}<978J;o7c4sl@*Z&A3WL5X#B5bvvxUYJ`tag+_S!)p*TOkrdQ%knG{LF^{89iE(>54ez3?Wz=6SBlLccRHkJjiq<+LJ zW9eL^YvbrGF5EkAnN8ti^tGAsI#^^$i=0qz31sQ=!Q1%iK3LXr@K}ZI(V8Y?rlCryMn|a4DC)&XyH}fuO3{BAqw+86`?G zx^J3Q)KNMJT-u1Lx<7$BQ&_^+ZM1(JF{sLuEs1kSz5-+Of&&O0xv}p2YTbF0INv8@ zrsm=&UEI`&#p6M7i^R2;;A8N|R>wy*Z)y#naeU-5La18BOos=OA2)VTmJxFPw}#zY=MlBQyoM;aQaZjLZ!li{H;%A6MNstIh)ySRkDISxgU z?-u2&iQ1j7?w#0Wg)`kQ-g`6U%{7#_wLlxYY7qtVnih1$eyc{ZP$&;MDhF#smjlUM z?beeu)OJjnOQwK`Fp{}OswZn`G?K{|Sy+8)99#Yi;a) zW6l;_N;>y!W_fPT9(HWX^k@OYvuzEWE$diX^i|MzfH-TwBdf^d08T31N1h zAfLF{)i24jj@r|Zvh@}F5%aif4{SJXEx9YWSPyb0t!}IVTu(3!W?b_{a*H^F@YaUh z!rSDrbGHM*S5Q4P>-;pT$D0Yp2u(ITg6fjBJXLu3BWf%<@Bihv^Zx3Qs@1rR(-NhH zu8iaDPEF{e8m*z z5w}sZT7`XC$@t#jzSfU4StvZTE_6FC>q1{8O7&>atQTlhKhv8t1)7xJbp3oAEh!XyZgE z^5qT(nm4Rq<{Ev{;jxg|#hVCxddFOhHe(ykZIQcgj6BMwX9^w3G8F=ragId8;MR-M z-FOT1>CZ)NVEdNT`HdAc_-%}vzp)68nz-$#5cN3ImAu4dfwjxypq|z79S{U@`qVr3 z{IlRB1~QJ-5GuCAGH&D>#E;`Rn(7$hICnP0add7U=Pu&tM&jLk#g2lzpman&2aCF+ z?G1N=cIyLHZ&;wVRQbk4D3_UvJn_?dt0ghn+S{nD7btuirPzmqPpaC8bU`YI1YB5geSyDqbr3MOG$?PhYW2)4?}Y_1WIZ+XT$BoQdXYDHGgH zJQw+Oi0bpkRk%YiuQ@`IGg8K3nW)tByJIBQvW{3@T#4w#>bVN)=xDVyyl-!7O|g1Z zYejXS26dH%WmKyb*TjnADhoM|YK4`=RLU+mndrl1XP#$s#*Pr*n_kzNs9!q18(}nN zdn;^Fio43guim5DY%GG&uw8d_&}}=QgNlUKhW+6;@v}d?hmV$L<{g$Vyj+>Fy|W-E zchm)=X_9rhc!4;#A70F_29qM%oMQ}qA(T@*>$@M|JC!>0&;Ky%>YjD}dHNdT&qr?Y zvO@a&vtaZ+%QEL{{oQkH<~)6|Nvr9|QBq%E^$fVDrKugGSFa(XEYTWF=4M6@m-Zu9 z6C3kjieP5u8^&nSIjJ!Ew2lj*uSIPf9>M;%XBW@3@QZ8vXFJ!!?uf@}C79klIgRaW z>X(I1J$+*lIOxe_i#fZT>1B(U6bKI{mwC;_1utYwvy)UAFO<&ZQ(9!Xc{`Co>}5owp#2c(*14Eoh?-r#rdN41<(sDZ z=aC9spDS`7Rksni8*1OO=ks!aD??_j9~?yDHLMV`SeUmWG^cZ%f#lXY9sPyLTyepp z>9yVW`N@SlRu&*lsT{(OZ;J3q`wh+kN6o^TKNMytwEBb2n9zMnOcy;S!Icuz5yWm9 zo5`ETD-pr*1iHqdP#|i>Svv>Gpv01x`4M_azvoO;KA>(YeBk9KL88^#@iLO4ccqWc z_ex%*>Je#h&`(-8IN)a}dbv4c>NWk3rZas>OrRlZF`Owoew_i%(g}74Z2i6Ta?a$M zN99PTui`}Rp?unW2%COWIsjRe`7)(bGo=HD1|PaAIt*OK<*fZYln*?w+hTZ^l8NZn zUPSv~_a>+l8?q#9Lu_aoDkki4N0V-o>l96%jiraeu@oF8JM^7RPrLl6^1E7)rFO{f zq;942Vi?iSsJRtxIu?$G{zrAMLOQ3P0I&W$Zu5VH#;JUsA7@jq@~8cz#QY#F(7Q|J zzj|w)j>^+&Mi^BM?S*!?r8>5@@4JtN z@Pa35{lMMXE~+04f19u#*1G!oTb*(=%Fe`P{q#FNJ%JZIt?xFGsxK-IH#yYG;ShZ= zJ^Vj%&l~<8AKQD&k@3;wmAr^PnW*R4drlc8!p3|$Tt2;T+aB}icZJyS4yCLg7OancAJts{}`yt!Y?l;oeSP&$J+OGC= zHR@U=Tt=g;HC$_#HRin5_@3T!JCAf+)@58hs@8No4Qp8#^un$7Ly=G@_o50d3i44E7hMlA{vY+0PR_&=CxqY6 zB&0WOlso_>2;=IMh>tm1c1|ol+0pVuG%#Si&r&hut1)DCctUkKd5);tJ8G=SZ2;&B zRvm8D-!>GULUiS!dGrx|Ro|{0Y9K?3$VnN@XB;!HJxP`$8j!DtE*f?XSjgv8kVO#H zPgA*b8qY!D!T^wvWukVnRzqIaXK#{&Bn$&~dMRVnLorFU=UWywjtr)p`liRKyhR9*t*_%V$|;Xqzwe=%Ve z5+P(0R!8V_N;Ou;>fX?f7+l8EqVf^B4iI-`GRlv9hv?q0eof=Ht=+vUb&iAe@_dIzRCg3*rJWkMK5zmh z*}?jNQY+?T7W3Z^!G`>*E7ZhU9{5>f%dJL<0NS~(9S%w~9pz*J>U%5}60__1asZYL z9#_uLF#0Kunl-#?1&Z%mTH{Bos0j1PxZ#y)7+LPNrCZ4ru)5TE;j-4QeTm&yI$G48 z^Q<-L6M+pc%eIGorm_zLi0ZONlviCND$nG^`T98d~X}-Ymvn}Z<{!n3;vJjra@)zydj_+7Mk!h5ca?t%(DtlxSF5t z(eJASS_e(Cad5KjFX}1gZkqxwV4s&}!!v+&NgiEGF98EXZGUP|bBTLv zsH8Fk|AbC3D5y}(EI_FtZN!+yL+~#`%TI`|q^&DENy7qaZIF@S4<~jclF?q&Sg|qnWeO7n0)+@yJSB9)=La_h0Ln&poBdTTtq zbR6p?+@vz&;lbG;pk16V8Jr_8QrM8MJCdu#JXb-ae}}&3NTnvg#@px7mWpKO4CGnl zWqrgqwMb??)4`wKRa@QIikOrwmA}u^(zCu$^n&k^8hsKDgCj&*FKbPKh=ezehvqEf zw%DMzz~hO)^a3WS63b)^3JevJGF5h(*(>YbT3c{FKozoQ{((NJkss>ALBo∈QAC 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 diff --git a/UsageDataCollector/Project/Collector/lib/GitSharp.Core.xml b/UsageDataCollector/Project/Collector/lib/GitSharp.Core.xml deleted file mode 100644 index 27d212d..0000000 --- a/UsageDataCollector/Project/Collector/lib/GitSharp.Core.xml +++ /dev/null @@ -1,19608 +0,0 @@ - - - - GitSharp.Core - - - - - Format an as a Git style unified patch script. - - - - - Create a new formatter with a default level of context. - - - - - Change the number of lines of context to display. - - - Number of lines of context to see before the first - modification and After the last modification within a hunk of - the modified file. - - - - - Format a patch script, reusing a previously parsed FileHeader. - - This formatter is primarily useful for editing an existing patch script - to increase or reduce the number of lines of context within the script. - All header lines are reused as-is from the supplied FileHeader. - - stream to write the patch script out to. - existing file header containing the header lines to copy. - - Text source for the pre-image version of the content. - This must match the content of . - - writing to the supplied stream failed. - - - - Formats a list of edits in unified diff format - - where the unified diff is written to - the text A which was compared - the text B which was compared - some differences which have been calculated between A and B - - - - A modified region detected between two versions of roughly the same content. - - Regions should be specified using 0 based notation, so add 1 to the - start and end marks for line numbers in a file. - - An edit where beginA == endA && beginB > endB is an insert edit, - that is sequence B inserted the elements in region - [beginB, endB) at beginA. - - An edit where beginA > endA && beginB > endB is a replace edit, - that is sequence B has replaced the range of elements between - [beginA, endA) with those found in [beginB, endB). - - - - - Create a new empty edit. - - beginA: start and end of region in sequence A; 0 based. - beginB: start and end of region in sequence B; 0 based. - - - - Create a new empty edit. - - beginA: start and end of region in sequence A; 0 based. - endA: end of region in sequence A; must be >= as. - beginB: start and end of region in sequence B; 0 based. - endB: end of region in sequence B; must be >= bs. - - - - Increase by 1. - - - - - Increase by 1. - - - - - Swap A and B, so the edit goes the other direction. - - - - - Determines whether the specified is - equal to the current . - - - true if the specified is equal to the - current ; otherwise, false. - - The to compare with - the current . - - - The parameter is null. - - 2 - - - - Gets the type of this region. - - - - - Start point in sequence A. - - - - - End point in sequence A. - - - - - Start point in sequence B. - - - - - End point in sequence B. - - - - - Type of edit - - - - - Sequence B has inserted the region. - - - - - Sequence B has removed the region. - - - - - Sequence B has replaced the region with different content. - - - - - Sequence A and B have zero length, describing nothing. - - - - - Specialized list of - - s in a document. - - - - - Diff algorithm, based on "An O(ND) Difference Algorithm and its - Variations", by Eugene Myers. - - The basic idea is to put the line numbers of text A as columns ("x") and the - lines of text B as rows ("y"). Now you try to find the shortest "edit path" - from the upper left corner to the lower right corner, where you can - always go horizontally or vertically, but diagonally from (x,y) to - (x+1,y+1) only if line x in text A is identical to line y in text B. - - Myers' fundamental concept is the "furthest reaching D-path on diagonal k": - a D-path is an edit path starting at the upper left corner and containing - exactly D non-diagonal elements ("differences"). The furthest reaching - D-path on diagonal k is the one that contains the most (diagonal) elements - which ends on diagonal k (where k = y - x). - - Example: - - H E L L O W O R L D - ____ - L \___ - O \___ - W \________ - - Since every D-path has exactly D horizontal or vertical elements, it can - only end on the diagonals -D, -D+2, ..., D-2, D. - - Since every furthest reaching D-path contains at least one furthest - reaching (D-1)-path (except for D=0), we can construct them recursively. - - Since we are really interested in the shortest edit path, we can start - looking for a 0-path, then a 1-path, and so on, until we find a path that - ends in the lower right corner. - - To save space, we do not need to store all paths (which has quadratic space - requirements), but generate the D-paths simultaneously from both sides. - When the ends meet, we will have found "the middle" of the path. From the - end points of that diagonal part, we can generate the rest recursively. - - This only requires linear space. - - The overall (runtime) complexity is - - O(N * D^2 + 2 * N/2 * (D/2)^2 + 4 * N/4 * (D/4)^2 + ...) - = O(N * D^2 * 5 / 4) = O(N * D^2), - - (With each step, we have to find the middle parts of twice as many regions - as before, but the regions (as well as the D) are halved.) - - So the overall runtime complexity stays the same with linear space, - albeit with a larger constant factor. - - - - - The list of edits found during the last call to - - - - - The first text to be compared. Referred to as "Text A" in the comments - - - - - The second text to be compared. Referred to as "Text B" in the comments - - - - - The only constructor - - the text A which should be compared - the text B which should be compared - - - the list of edits found during the last call to {@link #calculateEdits()} - - - - Entrypoint into the algorithm this class is all about. This method triggers that the - differences between A and B are calculated in form of a list of edits. - - - - - Calculates the differences between a given part of A against another given part of B - - start of the part of A which should be compared (0<=beginA<sizeof(A)) - end of the part of A which should be compared (beginA<=endA<sizeof(A)) - start of the part of B which should be compared (0<=beginB<sizeof(B)) - end of the part of B which should be compared (beginB<=endB<sizeof(B)) - - - - A class to help bisecting the sequences a and b to find minimal - edit paths. - - As the arrays are reused for space efficiency, you will need one - instance per thread. - - The entry function is the calculate() method. - - - - - This function calculates the "middle" Edit of the shortest - edit path between the given subsequences of a and b. - - Once a forward path and a backward path meet, we found the - middle part. From the last snake end point on both of them, - we construct the Edit. - - It is assumed that there is at least one edit in the range. - - - - - A sequence supporting UNIX formatted text in byte[] format. - - Elements of the sequence are the lines of the file, as delimited by the UNIX - newline character ('\n'). The file content is treated as 8 bit binary text, - with no assumptions or requirements on character encoding. - - Note that the first line of the file is element 0, as defined by the Sequence - interface API. Traditionally in a text editor a patch file the first line is - line number 1. Callers may need to subtract 1 prior to invoking methods if - they are converting from "line number" to "element index". - - - - - Arbitrary sequence of elements with fast comparison support. - - A sequence of elements is defined to contain elements in the index range - [0, ), like a standard Java List implementation. - Unlike a List, the members of the sequence are not directly obtainable, but - element equality can be tested if two Sequences are the same implementation. - - An implementation may chose to implement the equals semantic as necessary, - including fuzzy matching rules such as ignoring insignificant sub-elements, - e.g. ignoring whitespace differences in text. - - Implementations of Sequence are primarily intended for use in content - difference detection algorithms, to produce an of - instances describing how two Sequence instances differ. - - - - - Total number of items in the sequence. - - - - - Determine if the i-th member is equal to the j-th member. - - Implementations must ensure equals(thisIdx,other,otherIdx) - returns the same as other.equals(otherIdx,this,thisIdx). - - - Index within this sequence; must be in the range - [ 0, this.size() ). - - - Another sequence; must be the same implementation class, that - is this.getClass() == other.getClass(). - - Index within other sequence; must be in the range - [ 0, other.size() ). - - true if the elements are equal; false if they are not equal. - - - - - Create a new sequence from an existing content byte array. - - The entire array (indexes 0 through length-1) is used as the content. - - - the content array. The array is never modified, so passing - through cached arrays is safe. - - - - - Create a new sequence from a file. - The entire file contents are used. - - the text file. - - - - Write a specific line to the output stream, without its trailing LF. - - The specified line is copied as-is, with no character encoding - translation performed. - - If the specified line ends with an LF ('\n'), the LF is not - copied. It is up to the caller to write the LF, if desired, between - output lines. - - - Stream to copy the line data onto. - - Index of the line to extract. Note this is 0-based, so line - number 1 is actually index 0. - - the stream write operation failed. - - - - - Determine if the file ends with a LF ('\n'). - - true if the last line has an LF; false otherwise. - - - - Compute a hash code for a single line. - - The raw file content. - - First byte of the content line to hash. - - 1 past the last byte of the content line. - - - Hash code for the region [ptr, end) of raw. - - - - - The content of the raw text as byte array. - - - - - Represents starting points of lines in Content. Note: the line indices are 1-based and - are mapped to 0-based positions in the Content byte array. As line indices are based on 1 the result of line 0 is undefined. - - - - - Generic update/editing support for . - - The different update strategies extend this class to provide their - own unique services to applications. - - - - - Entry table this builder will eventually replace into . - - Use or to - make additions to this table. The table is automatically expanded if it - is too small for a new addition. - - Typically the entries in here are sorted by their path names, just like - they are in the DirCache instance. - - - - - Construct a new editor. - - - the cache this editor will eventually update. - - - estimated number of entries the editor will have upon - completion. This sizes the initial entry table. - - - - - - - - The cache we will update on . - - - - - Append one entry into the resulting entry list. - - The entry is placed at the end of the entry list. The caller is - responsible for making sure the final table is correctly sorted. - - The table is automatically expanded - if there is insufficient space for the new addition. - - The new entry to add. - - - - Add a range of existing entries from the destination cache. - - The entries are placed at the end of the entry list, preserving their - current order. The caller is responsible for making sure the final table - is correctly sorted. - - This method copies from the destination cache, which has not yet been - updated with this editor's new table. So all offsets into the destination - cache are not affected by any updates that may be currently taking place - in this editor. - - The table is automatically expanded if there is - insufficient space for the new additions. - - First entry to copy from the destination cache. - Number of entries to copy. - - - * Finish this builder and update the destination . - - When this method completes this builder instance is no longer usable by - the calling application. A new builder must be created to make additional - changes to the index entries. - - After completion the DirCache returned by will - contain all modifications. - - - Note to implementors: Make sure is fully sorted - then invoke to update the DirCache with the new table. - - - - - Update the DirCache with the contents of . - - This method should be invoked only during an implementation of - , and only after is sorted. - - - - - Finish, write, commit this change, and release the index lock. - - If this method fails (returns false) the lock is still released. - - This is a utility method for applications as the finish-write-commit - pattern is very common after using a builder to update entries. - - - True if the commit was successful and the file contains the new - data; false if the commit failed and the file remains with the - old data. - - - The output file could not be created. The caller no longer - holds the lock. - - - - - Support for the Git dircache (aka index file). - - The index file keeps track of which objects are currently checked out in the - working directory, and the last modified time of those working files. Changes - in the working directory can be detected by comparing the modification times - to the cached modification time within the index file. - - Index files are also used during merges, where the merge happens within the - index file first, and the working directory is updated as a post-merge step. - Conflicts are stored in the index file to allow tool (and human) based - resolutions to be easily performed. - - - - - Create a new empty index which is never stored on disk. - - - An empty cache which has no backing store file. The cache may not - be read or written, but it may be queried and updated (in memory). - - - - - Create a new in-core index representation and read an index from disk. - - The new index will be read before it is returned to the caller. Read - failures are reported as exceptions and therefore prevent the method from - returning a partially populated index. - - Location of the index file on disk. - a cache representing the contents of the specified index file (if - it exists) or an empty cache if the file does not exist. - - - The index file is present but could not be read. - - - The index file is using a format or extension that this - library does not support. - - - - - Create a new in-core index representation and read an index from disk. - - The new index will be read before it is returned to the caller. Read - failures are reported as exceptions and therefore prevent the method from - returning a partially populated index. - - - repository the caller wants to read the default index of. - - - A cache representing the contents of the specified index file (if - it exists) or an empty cache if the file does not exist. - - - The index file is present but could not be read. - - - The index file is using a format or extension that this - library does not support. - - - - - Create a new in-core index representation, lock it, and read from disk. - - The new index will be locked and then read before it is returned to the - caller. Read failures are reported as exceptions and therefore prevent - the method from returning a partially populated index. On read failure, - the lock is released. - - - location of the index file on disk. - - - A cache representing the contents of the specified index file (if - it exists) or an empty cache if the file does not exist. - - - The index file is present but could not be read, or the lock - could not be obtained. - - - the index file is using a format or extension that this - library does not support. - - - - - Create a new in-core index representation, lock it, and read from disk. - - The new index will be locked and then read before it is returned to the - caller. Read failures are reported as exceptions and therefore prevent - the method from returning a partially populated index. - - - Repository the caller wants to read the default index of. - - - A cache representing the contents of the specified index file (if - it exists) or an empty cache if the file does not exist. - - - The index file is present but could not be read, or the lock - could not be obtained. - - - The index file is using a format or extension that this - library does not support. - - - - - Create a new in-core index representation. - - The new index will be empty. Callers may wish to read from the on disk - file first with . - - location of the index file on disk. - - - - Create a new builder to update this cache. - - Callers should add all entries to the builder, then use - to update this instance. - - A new builder instance for this cache. - - - - Create a new editor to recreate this cache. - - Callers should add commands to the editor, then use - to update this instance. - - A new builder instance for this cache. - - - - Read the index from disk, if it has changed on disk. - - This method tries to avoid loading the index if it has not changed since - the last time we consulted it. A missing index file will be treated as - though it were present but had no file entries in it. - - - The index file is present but could not be read. This - instance may not be populated correctly. - - - The index file is using a format or extension that this - library does not support. - - - - - Empty this index, removing all entries. - - - - - Try to establish an update lock on the cache file. - - - True if the lock is now held by the caller; false if it is held - by someone else. - - - The output file could not be created. The caller does not - hold the lock. - - - - - Write the entry records from memory to disk. - - The cache must be locked first by calling and receiving - true as the return value. Applications are encouraged to lock the index, - then invoke to ensure the in-memory data is current, - prior to updating the in-memory entries. - - Once written the lock is closed and must be either committed with - or rolled back with . - - - The output file could not be created. The caller no longer - holds the lock. - - - - - Commit this change and release the lock. - - If this method fails (returns false) the lock is still released. - - - True if the commit was successful and the file contains the new - data; false if the commit failed and the file remains with the - old data. - - - the lock is not held. - - - - - Unlock this file and abort this change. - - The temporary file (if created) is deleted before returning. - - - - - Locate the position a path's entry is at in the index. - - If there is at least one entry in the index for this path the position of - the lowest stage is returned. Subsequent stages can be identified by - testing consecutive entries until the path differs. - - If no path matches the entry -(position+1) is returned, where position is - the location it would have gone within the index. - - The path to search for. - - if >= 0 then the return value is the position of the entry in the - index; pass to to obtain the entry - information. If > 0 the entry does not exist in the index. - - - - - - Determine the next index position past all entries with the same name. - - As index entries are sorted by path name, then stage number, this method - advances the supplied position to the first position in the index whose - path name does not match the path name of the supplied position's entry. - - - entry position of the path that should be skipped. - - - Position of the next entry whose path is after the input. - - - - - Total number of file entries stored in the index. - - This count includes unmerged stages for a file entry if the file is - currently conflicted in a merge. This means the total number of entries - in the index may be up to 3 times larger than the number of files in the - working directory. - - Note that this value counts only files. - - Number of entries available. - - - - - Get a specific entry. - - - position of the entry to get. - - The entry at position . - - - - Get a specific entry. - - The path to search for. - The entry at position . - - - - Recursively get all entries within a subtree. - - - The subtree path to get all entries within. - - - All entries recursively contained within the subtree. - - - - - Obtain (or build) the current cache tree structure. - - This method can optionally recreate the cache tree, without flushing the - tree objects themselves to disk. - - - If true and the cache tree is not present in the index it will - be generated and returned to the caller. - - - The cache tree; null if there is no current cache tree available - and was false. - - - - - Write all index trees to the object store, returning the root tree. - - - The writer to use when serializing to the store. - - identity for the root tree. - - One or more paths contain higher-order stages (stage > 0), - which cannot be stored in a tree object. - - - One or more paths contain an invalid mode which should never - appear in a tree object. - - - An unexpected error occurred writing to the object store. - - - - - Updates a by adding individual s. - - A builder always starts from a clean slate and appends in every single - which the final updated index must have to reflect - its new content. - - For maximum performance applications should add entries in path name order. - Adding entries out of order is permitted, however a final sorting pass will - be implicitly performed during to correct any out-of-order - entries. Duplicate detection is also delayed until the sorting is complete. - - - - - - Construct a new builder. - - - the cache this builder will eventually update. - - - Estimated number of entries the builder will have upon - completion. This sizes the initial entry table. - - - - - Append one entry into the resulting entry list. - - The entry is placed at the end of the entry list. If the entry causes the - list to now be incorrectly sorted a final sorting phase will be - automatically enabled within . - - The internal entry table is automatically expanded if there is - insufficient space for the new addition. - - the new entry to add. - - - - Add a range of existing entries from the destination cache. - - The entries are placed at the end of the entry list. If any of the - entries causes the list to now be incorrectly sorted a final sorting - phase will be automatically enabled within . - - This method copies from the destination cache, which has not yet been - updated with this editor's new table. So all offsets into the destination - cache are not affected by any updates that may be currently taking place - in this editor. - - The internal entry table is automatically expanded if there is - insufficient space for the new additions. - - - First entry to copy from the destination cache. - - Number of entries to copy. - - - - Recursively add an entire tree into this builder. - - If pathPrefix is "a/b" and the tree contains file "c" then the resulting - DirCacheEntry will have the path "a/b/c". - - All entries are inserted at stage 0, therefore assuming that the - application will not insert any other paths with the same pathPrefix. - - - UTF-8 encoded prefix to mount the tree's entries at. If the - path does not end with '/' one will be automatically inserted - as necessary. - - Stage of the entries when adding them. - - Repository the tree(s) will be read from during recursive - traversal. This must be the same repository that the resulting - would be written out to (or used in) otherwise - the caller is simply asking for deferred MissingObjectExceptions. - - - The tree to recursively add. This tree's contents will appear - under . The ObjectId must be that of a - tree; the caller is responsible for dereferencing a tag or - commit (if necessary). - - - A tree cannot be read to iterate through its entries. - - - - - Iterate and update a as part of a . - - Like this iterator allows a - to be used in parallel with other sorts of iterators in a . - However any entry which appears in the source and which - is skipped by the is automatically copied into - , thus retaining it in the newly updated index. - - This iterator is suitable for update processes, or even a simple delete - algorithm. For example deleting a path: - - - DirCache dirc = DirCache.lock(db); - DirCacheBuilder edit = dirc.builder(); - - TreeWalk walk = new TreeWalk(db); - walk.reset(); - walk.setRecursive(true); - walk.setFilter(PathFilter.Create("name/to/remove")); - walk.addTree(new DirCacheBuildIterator(edit)); - - while (walk.next()) - ; // do nothing on a match as we want to remove matches - edit.commit(); - - - - - - Iterate a as part of a . - - This is an iterator to adapt a loaded instance (such as - Read from an existing .git/index file) to the tree structure - used by a , making it possible for applications to walk - over any combination of tree objects already in the object database, index - files, or working directories. - - - - - - Walks a Git tree (directory) in Git sort order. - - A new iterator instance should be positioned on the first entry, or at eof. - Data for the first entry (if not at eof) should be available immediately. - - Implementors must walk a tree in the Git sort order, which has the following - odd sorting: - - A.c - A/c - A0c - - - In the second item, A is the name of a subtree and - c is a file within that subtree. The other two items are files - in the root level tree. - - - - - - Default size for the buffer. - - - - - A dummy buffer that matches the zero . - - - - - Create a new iterator with no parent. - - - - - Create a new iterator with no parent and a prefix. - - The prefix path supplied is inserted in front of all paths generated by - this iterator. It is intended to be used when an iterator is being - created for a subsection of an overall repository and needs to be - combined with other iterators that are created to run over the entire - repository namespace. - - - position of this iterator in the repository tree. The value - may be null or the empty string to indicate the prefix is the - root of the repository. A trailing slash ('/') is - automatically appended if the prefix does not end in '/'. - - - - - Create a new iterator with no parent and a prefix. - - The prefix path supplied is inserted in front of all paths generated by - this iterator. It is intended to be used when an iterator is being - created for a subsection of an overall repository and needs to be - combined with other iterators that are created to run over the entire - repository namespace. - - - position of this iterator in the repository tree. The value - may be null or the empty array to indicate the prefix is the - root of the repository. A trailing slash ('/') is - automatically appended if the prefix does not end in '/'. - - - - - Create an iterator for a subtree of an existing iterator. - - parent tree iterator. - - - - Create an iterator for a subtree of an existing iterator. - The caller is responsible for setting up the path of the child iterator. - - parent tree iterator. - - Path array to be used by the child iterator. This path must - contain the path from the top of the walk to the first child - and must end with a '/'. - - - position within childPath where the child can - insert its data. The value at - childPath[childPathOffset-1] must be '/'. - - - - - Grow the _path buffer larger. - - - Number of live bytes in the path buffer. This many bytes will - be moved into the larger buffer. - - - - - Ensure that path is capable to hold at least bytes. - - the amount of bytes to hold - the amount of live bytes in path buffer - - - - Set path buffer capacity to the specified size - - the new size - the amount of bytes to copy - - - - Compare the path of this current entry to another iterator's entry. - - - The other iterator to compare the path against. - - - return -1 if this entry sorts first; 0 if the entries are equal; 1 if - 's entry sorts first. - - - - - Compare the path of this current entry to another iterator's entry. - - - The other iterator to compare the path against. - - - The other iterator bits. - - - return -1 if this entry sorts first; 0 if the entries are equal; 1 if - 's entry sorts first. - - - - - Check if the current entry of both iterators has the same id. - - This method is faster than as it does not - require copying the bytes out of the buffers. A direct - compare operation is performed. - - the other iterator to test against. - - true if both iterators have the same object id; false otherwise. - - - - - Gets the of the current entry. - - The for the current entry. - - - - Gets the of the current entry. - - buffer to copy the object id into. - - - - Get the byte array buffer object IDs must be copied out of. - - The id buffer contains the bytes necessary to construct an for - the current entry of this iterator. The buffer can be the same buffer for - all entries, or it can be a unique buffer per-entry. Implementations are - encouraged to expose their private buffer whenever possible to reduce - garbage generation and copying costs. - - byte array the implementation stores object IDs within. - - - - Get the position within {@link #idBuffer()} of this entry's ObjectId. - - @return offset into the array returned by {@link #idBuffer()} where the - ObjectId must be copied out of. - - - Create a new iterator for the current entry's subtree. - - The parent reference of the iterator must be this, - otherwise the caller would not be able to exit out of the subtree - iterator correctly and return to continue walking this. - - @param repo - repository to load the tree data from. - @return a new parser that walks over the current subtree. - @throws IncorrectObjectTypeException - the current entry is not actually a tree and cannot be parsed - as though it were a tree. - @throws IOException - a loose object or pack file could not be Read. - - - Create a new iterator as though the current entry were a subtree. - - @return a new empty tree iterator. - - - Create a new iterator for the current entry's subtree. - - The parent reference of the iterator must be this, otherwise - the caller would not be able to exit out of the subtree iterator - correctly and return to continue walking this. - - @param repo - repository to load the tree data from. - @param idBuffer - temporary ObjectId buffer for use by this method. - @param curs - window cursor to use during repository access. - @return a new parser that walks over the current subtree. - @throws IncorrectObjectTypeException - the current entry is not actually a tree and cannot be parsed - as though it were a tree. - @throws IOException - a loose object or pack file could not be Read. - - - Is this tree iterator positioned on its first entry? - - An iterator is positioned on the first entry if back(1) - would be an invalid request as there is no entry before the current one. - - An empty iterator (one with no entries) will be - first() && eof(). - - @return true if the iterator is positioned on the first entry. - - - Is this tree iterator at its EOF point (no more entries)? - - An iterator is at EOF if there is no current entry. - - @return true if we have walked all entries and have none left. - - - Move to next entry, populating this iterator with the entry data. - - The delta indicates how many moves forward should occur. The most common - delta is 1 to move to the next entry. - - Implementations must populate the following members: -
    -
  • {@link #mode}
  • -
  • {@link #_path} (from {@link #_pathOffset} to {@link #_pathLen})
  • -
  • {@link #_pathLen}
  • -
- as well as any implementation dependent information necessary to - accurately return data from {@link #idBuffer()} and {@link #idOffset()} - when demanded. - - @param delta - number of entries to move the iterator by. Must be a positive, - non-zero integer. - @throws CorruptObjectException - the tree is invalid. -
- - - Move to prior entry, populating this iterator with the entry data. - - The delta indicates how many moves backward should occur. - The most common delta is 1 to move to the prior entry. - - Implementations must populate the following members: -
    -
  • -
  • {@link #_path} (from {@link #_pathOffset} to {@link #_pathLen})
  • -
  • {@link #_pathLen}
  • -
- as well as any implementation dependent information necessary to - accurately return data from and - when demanded. -
- - Number of entries to move the iterator by. Must be a positive, - non-zero integer. - -
- - - Advance to the next tree entry, populating this iterator with its data. - - This method behaves like seek(1) but is called by - only if a was used and - ruled out the current entry from the results. In such cases this tree - iterator may perform special behavior. - - - - - Indicates to the iterator that no more entries will be Read. - - This is only invoked by TreeWalk when the iteration is aborted early due - to a being thrown from - within a TreeFilter. - - - - - Get the name component of the current entry path into the provided buffer. - - - The buffer to get the name into, it is assumed that buffer can hold the name. - - - The offset of the name in the - - - - - - The file mode of the current entry. - - - - - The file mode of the current entry as bits. - - - - - Gets the path of the current entry, as a string. - - - - - Gets the Length of the name component of the path for the current entry. - - - - - - Iterator for the parent tree; null if we are the root iterator. - - - - - The iterator this current entry is path equal to. - - - - - Number of entries we moved forward to force a D/F conflict match. - - - - - - bits for the current entry. - - A numerical value from FileMode is usually faster for an iterator to - obtain from its data source so this is the preferred representation. - - - - - Path buffer for the current entry. - - This buffer is pre-allocated at the start of walking and is shared from - parent iterators down into their subtree iterators. The sharing allows - the current entry to always be a full path from the root, while each - subtree only needs to populate the part that is under their control. - - - - - Position within this iterator starts writing at. - - This is the first offset in that this iterator must - populate during . At the root level (when - is null) this is 0. For a subtree iterator the index before this position - should have the value '/'. - - - - - Total Length of the current entry's complete _path from the root. - - This is the number of bytes within that pertain to the - current entry. Values at this index through the end of the array are - garbage and may be randomly populated from prior entries. - - - - - Create a new iterator for an already loaded DirCache instance. - - The iterator implementation may copy part of the cache's data during - construction, so the cache must be Read in prior to creating the - iterator. - - - The cache to walk. It must be already loaded into memory. - - - - - Get the DirCacheEntry for the current file. - - - The current cache entry, if this iterator is positioned on a - non-tree. - - - - - The cache this iterator was created to walk. - - - - - The tree this iterator is walking. - - - - - First position in this tree. - - - - - Last position in this tree. - - - - - Special buffer to hold the of . - - - - - Index of entry within . - - - - - Next subtree to consider within . - - - - - The current file entry from . - - - - - The subtree containing if this is first entry. - - - - - Create a new iterator for an already loaded instance. - - The iterator implementation may copy part of the cache's data during - construction, so the cache must be Read in prior to creating the - iterator. - - - The cache builder for the cache to walk. The cache must be - already loaded into memory. - - - - - Create a new iterator for an already loaded instance. - - The iterator implementation may copy part of the cache's data during - construction, so the cache must be Read in prior to creating the - iterator. - - The parent iterator - The cache tree - - - - Updates a by supplying discrete edit commands. - - An editor updates a by taking a list of - commands and executing them against the entries - of the destination cache to produce a new cache. This edit style allows - applications to insert a few commands and then have the editor compute - the proper entry indexes necessary to perform an efficient in-order - update of the index records. This can be easier to use than - . - - - - - - Construct a new editor. - - - The cache this editor will eventually update. - - - Estimated number of entries the editor will have upon - completion. This sizes the initial entry table. - - - - - Append one edit command to the list of commands to be applied. - - Edit commands may be added in any order chosen by the application. They - are automatically rearranged by the builder to provide the most efficient - update possible. - - Another edit command. - - - - Any index record update. - - Applications should subclass and provide their own implementation for the - method. The editor will invoke apply once - for each record in the index which matches the path name. If there are - multiple records (for example in stages 1, 2 and 3), the edit instance - will be called multiple times, once for each stage. - - - - - Create a new update command by path name. - - path of the file within the repository. - - - - Create a new update command for an existing entry instance. - - - Entry instance to match path of. Only the path of this - entry is actually considered during command evaluation. - - - - - Apply the update to a single cache entry matching the path. - - After apply is invoked the entry is added to the output table, and - will be included in the new index. - - - The entry being processed. All fields are zeroed out if - the path is a new path in the index. - - - - - Deletes a single file entry from the index. - - This deletion command removes only a single file at the given location, - but removes multiple stages (if present) for that path. To remove a - complete subtree use instead. - - - - - - Create a new deletion command by path name. - - - Path of the file within the repository. - - - - - Create a new deletion command for an existing entry instance. - - - Entry instance to remove. Only the path of this entry is - actually considered during command evaluation. - - - - - Recursively deletes all paths under a subtree. - - This deletion command is more generic than as it can - remove all records which appear recursively under the same subtree. - Multiple stages are removed (if present) for any deleted entry. - - This command will not remove a single file entry. To remove a single file - use . - - - - - - Create a new tree deletion command by path name. - - - Path of the subtree within the repository. If the path - does not end with "/" a "/" is implicitly added to ensure - only the subtree's contents are matched by the command. - - - - - A single file (or stage of a file) in a . - - An entry represents exactly one stage of a file. If a file path is unmerged - then multiple DirCacheEntry instances may appear for the same path name. - - - - The standard (fully merged) stage for an entry. - - - The base tree revision for an entry. - - - The first tree revision (usually called "ours"). - - - The second tree revision (usually called "theirs"). - - - - Mask applied to data in to get the name Length. - - - - - (Possibly shared) header information storage. - - - - - First location within where our header starts. - - - - - Our encoded path name, from the root of the repository. - - - - - Create an empty entry at stage 0. - - Name of the cache entry. - - - - Create an empty entry at the specified stage. - - name of the cache entry. - the stage index of the new entry. - - - - Create an empty entry at stage 0. - - - name of the cache entry, in the standard encoding. - - - - - Create an empty entry at the specified stage. - - - Name of the cache entry, in the standard encoding. - - The stage index of the new entry. - - - - Is it possible for this entry to be accidentally assumed clean? - - The "racy git" problem happens when a work file can be updated faster - than the filesystem records file modification timestamps. It is possible - for an application to edit a work file, update the index, then edit it - again before the filesystem will give the work file a new modification - timestamp. This method tests to see if file was written out at the same - time as the index. - - - Seconds component of the index's last modified time. - - - Nanoseconds component of the index's last modified time. - - true if extra careful checks should be used. - - - - Force this entry to no longer match its working tree file. - - This avoids the "racy git" problem by making this index entry no longer - match the file in the working directory. Later git will be forced to - compare the file content to ensure the file matches the working tree. - - - - - Is this entry always thought to be unmodified? - - Most entries in the index do not have this flag set. Users may however - set them on if the file system stat() costs are too high on this working - directory, such as on NFS or SMB volumes. - - true if we must assume the entry is unmodified. - - - - Set the assume valid flag for this entry, - - - True to ignore apparent modifications; false to look at last - modified to detect file modifications. - - - - - Get the stage of this entry. - - Entries have one of 4 possible stages: 0-3. - - the stage of this entry. - - - - Obtain the raw bits for this entry. - - mode bits for the entry. - - - - - Obtain the for this entry. - - The file mode singleton for this entry. - - - - Set the file mode for this entry. - - The new mode constant. - - - - Get the cached last modification date of this file, in milliseconds. - - One of the indicators that the file has been modified by an application - changing the working tree is if the last modification time for the file - differs from the time stored in this entry. - - last modification time of this file, in milliseconds since the - Java epoch (midnight Jan 1, 1970 UTC). - - - - - Set the cached last modification date of this file, using milliseconds. - - - new cached modification date of the file, in milliseconds. - - - - - Get the cached size (in bytes) of this file. - - One of the indicators that the file has been modified by an application - changing the working tree is if the size of the file (in bytes) differs - from the size stored in this entry. - - Note that this is the length of the file in the working directory, which - may differ from the size of the decompressed blob if work tree filters - are being used, such as LF<->CRLF conversion. - - cached size of the working directory file, in bytes. - - - - Set the cached size (in bytes) of this file. - - new cached size of the file, as bytes. - - - - Obtain the ObjectId for the entry. - - Using this method to compare ObjectId values between entries is - inefficient as it causes memory allocation. - - object identifier for the entry. - - - - Set the ObjectId for the entry. - - - New object identifier for the entry. May be - to remove the current identifier. - - - - - Set the ObjectId for the entry from the raw binary representation. - - - The raw byte buffer to read from. At least 20 bytes after - must be available within this byte array. - - position to read the first byte of data from. - - - - Get the entry's complete path. - - This method is not very efficient and is primarily meant for debugging - and final output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - - Complete path of the entry, from the root of the repository. If - the entry is in a subtree there will be at least one '/' in the - returned string. - - - - - Copy the ObjectId and other meta fields from an existing entry. - - This method copies everything except the path from one entry to another, - supporting renaming. - - - The entry to copy ObjectId and meta fields from. - - - - - - - - - New cached modification date of the file, in milliseconds. - - - - - Single tree record from the 'TREE' extension. - - A valid cache tree record contains the object id of a tree object and the - total number of instances (counted recursively) from - the DirCache contained within the tree. This information facilitates faster - traversal of the index and quicker generation of tree objects prior to - creating a new commit. - - An invalid cache tree record indicates a known subtree whose file entries - have changed in ways that cause the tree to no longer have a known object id. - Invalid cache tree records must be revalidated prior to use. - - - - - Determine if this cache is currently valid. - - A valid cache tree knows how many instances from - the parent reside within this tree (recursively - enumerated). It also knows the object id of the tree, as the tree should - be readily available from the repository's object database. - - - True if this tree is knows key details about itself; false if the - tree needs to be regenerated. - - - - - Get the number of entries this tree spans within the DirCache. - - If this tree is not valid (see ) this method's return - value is always strictly negative (less than 0) but is otherwise an - undefined result. - - - Total number of entries (recursively) contained within this tree. - - - - - Get the number of cached subtrees contained within this tree. - - - Number of child trees available through this tree. - - - - - Get the i-th child cache tree. - - Index of the child to obtain. - The child tree. - - - - Get the tree's name within its parent. - - This method is not very efficient and is primarily meant for debugging - and final output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - - Name of the tree. This does not contain any '/' characters. - - - - - Get the tree's path within the repository. - - This method is not very efficient and is primarily meant for debugging - and final output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - - Path of the tree, relative to the repository root. If this is not - the root tree the path ends with '/'. The root tree's path string - is the empty string (""). - - - - - Write (if necessary) this tree to the object store. - - the complete cache from DirCache. - - first position of cache that is a member of this - tree. The path of cache[cacheIdx].path for the - range [0,pathOff-1) matches the complete path of - this tree, from the root of the repository. - - number of bytes of cache[cacheIdx].path that - matches this tree's path. The value at array position - cache[cacheIdx].path[pathOff-1] is always '/' if - pathOff is > 0. - - - the writer to use when serializing to the store. - - identity of this tree. - - one or more paths contain higher-order stages (stage > 0), - which cannot be stored in a tree object. - - - an unexpected error occurred writing to the object store. - - - - - Update (if necessary) this tree's entrySpan. - - the complete cache from DirCache. - - Number of entries in cache that are valid for - iteration. - - - First position of cache that is a member of this - tree. The path of cache[cacheIdx].path for the - range [0,pathOff-1) matches the complete path of - this tree, from the root of the repository. - - - number of bytes of cache[cacheIdx].path that - matches this tree's path. The value at array position - cache[cacheIdx].path[pathOff-1] is always '/' if - pathOff is > 0. - - - - - Construct a for the specified file - - - - - Construct a for the specified file - - - - - Construct a for the specified file - - - - - - An exception detailing multiple reasons for failure. - - - - - Constructs an exception detailing many potential reasons for failure. - - - Two or more exceptions that may have been the problem. - - - - - Get the complete list of reasons why this failure happened. - - - Unmodifiable collection of all possible reasons. - - - - - Indicates a text string is not a valid Git style configuration. - - - - - Construct an invalid configuration error. - - Why the configuration is invalid. - - - - Construct an invalid configuration error. - - why the configuration is invalid. - Construct an invalid configuration error. - - - - An exception thrown when a gitlink entry is found and cannot be - handled. - - - - - Construct a GitlinksNotSupportedException for the specified link - - - Name of link in tree or workdir - - - - - Construct a GitlinksNotSupportedException for the specified link - - Name of link in tree or workdir - Inner Exception - - - - An inconsistency with respect to handling different object types. - - This most likely signals a programming error rather than a corrupt - object database. - - - - - Construct and IncorrectObjectTypeException for the specified object id. - - Provide the type to make it easier to track down the problem. - - - SHA-1 - - - Object type - - - - - Construct and IncorrectObjectTypeException for the specified object id. - Provide the type to make it easier to track down the problem. - - SHA-1 - Object type - Inner Exception. - - - - Construct and IncorrectObjectTypeException for the specified object id. - - Provide the type to make it easier to track down the problem. - - - SHA-1 - - - Object type - - - - - Construct and IncorrectObjectTypeException for the specified object id. - - Provide the type to make it easier to track down the problem. - - - SHA-1 - - - Object type - - - - - Construct and IncorrectObjectTypeException for the specified object id. - Provide the type to make it easier to track down the problem. - - SHA-1 - Object type - Inner Exception. - - - - Thrown when an invalid object id is passed in as an argument. - - - - - Create exception with bytes of the invalid object id. - - containing the invalid id. - offset in the byte array where the error occurred. - length of the sequence of invalid bytes. - - - - Create exception with bytes of the invalid object id. - - containing the invalid id. - offset in the byte array where the error occurred. - length of the sequence of invalid bytes. - Inner Exception. - - - - The invalid pattern. - - - - - Indicates a base/common object was required, but is not found. - - - - - Constructs a MissingBundlePrerequisiteException for a set of objects. - - URI used for transport - - the Map of the base/common object(s) we don't have. Keys are - ids of the missing objects and values are short descriptions. - - - - - An expected object is missing. - - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - Inner Exception. - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - Inner Exception. - - - - Construct a MissingObjectException for the specified object id. - Expected type is reported to simplify tracking down the problem. - - SHA-1 - Object type - Inner Exception. - - - - Indicates a local repository does not exist - - - - - Constructs an exception indicating a local repository does not exist - - - Description of the repository not found, usually file path - - - - - Constructs an exception indicating a local repository does not exist - - - Description of the repository not found, usually file path - - - - - Constructs an exception indicating a local repository does not exist - - Description of the repository not found, usually file path - Inner Exception. - - - - Constructs an exception indicating a local repository does not exist - - Description of the repository not found, usually file path - Inner Exception. - - - - Indicates a checked exception was thrown inside of . - - Usually this exception is thrown from the Iterator created around a RevWalk - instance, as the Iterator API does not allow checked exceptions to be thrown - from hasNext() or next(). The of this exception - is the original checked exception that we really wanted to throw back to the - application for handling and recovery. - - - - - Create a new walk exception an original cause. - - The checked exception that describes why the walk failed. - - - - Stops the driver loop of walker and finish with current result - - - - Singleton instance for throwing within a filter. - - - - Indicates one or more paths in a DirCache have non-zero stages present. - - - - - Create a new unmerged path exception. - - The first non-zero stage of the unmerged path. - - - - Create a new unmerged path exception. - - The first non-zero stage of the unmerged path. - Inner Exception. - - - - Returns the first non-zero stage of the unmerged path. - - - - - - - - the character which decides which heads are returned. - a list of heads based on the input. - - - - - A list of s which will not be modified. - - - - This class can be used to match filenames against fnmatch like patterns. - It is not thread save. - - Supported are the wildcard characters * and ? and groups with: -
    -
  • characters e.g. [abc]
  • -
  • ranges e.g. [a-z]
  • -
  • the following character classes -
      -
    • [:alnum:]
    • -
    • [:alpha:]
    • -
    • [:blank:]
    • -
    • [:cntrl:]
    • -
    • [:digit:]
    • -
    • [:graph:]
    • -
    • [:lower:]
    • -
    • [:print:]
    • -
    • [:punct:]
    • -
    • [:space:]
    • -
    • [:upper:]
    • -
    • [:word:]
    • -
    • [:xdigit:]
    • -
    - e. g. [[:xdigit:]]
  • -
-
-
- - - needs a list for the - new heads, allocating a new array would be bad for the performance, as - the method gets called very often. - - - - - - - Must be a list which will never be modified. - - - - - - must be a list which will never be modified. - a list which will be cloned and then used as current head list. - - - - - must contain a pattern which fnmatch would accept. - - if this parameter isn't null then this character will not - match at wildcards(* and ? are wildcards). - - - if the patternString contains a invalid fnmatch pattern. - - - - - A copy constructor which creates a new with the - same state and Reset point like other. - - - another instance. - - - - - - - Extends the string which is matched against the patterns of this class. - - - - - Resets this matcher to it's state right After construction. - - - - - - - A instance which uses the same pattern - like this matcher, but has the current state of this matcher as - Reset and start point. - - - - - - - True, if the string currently being matched does match. - - - - - - - False, if the string being matched will not match when the string gets extended. - - - - - - - The character to test - Returns true if the character matches a pattern. - - - - Don't call this constructor, use - - - - - Provides the merge algorithm which does a three-way merge on content provided - as RawText. Makes use of {@link MyersDiff} to compute the diffs. - - - - - Since this class provides only static methods I add a private default - constructor to prevent instantiation. - - - - - Does the three way merge between a common base and two sequences. - - base the common base sequence - ours the first sequence to be merged - theirs the second sequence to be merged - the resulting content - - - - Helper method which returns the next Edit for an Iterator over Edits. - When there are no more edits left this method will return the constant - END_EDIT. - - the iterator for which the next edit should be returned - the next edit from the iterator or END_EDIT if there no more edits - - - - One chunk from a merge result. Each chunk contains a range from a - single sequence. In case of conflicts multiple chunks are reported for one - conflict. The conflictState tells when conflicts start and end. - - - - - Creates a new empty MergeChunk - - determines to which sequence this chunks belongs to. Same as in - - the first element from the specified sequence which should be included in the merge result. Indexes start with 0. - - specifies the end of the range to be added. The element this index points to is the first element which not added to the - merge result. All elements between begin (including begin) and this element are added. - - the state of this chunk. See - - - the index of the sequence to which sequence this chunks belongs to. Same as in - - - the first element from the specified sequence which should be included in the merge result. Indexes start with 0. - - - - the end of the range of this chunk. The element this index points to is the first element which not added to the merge - result. All elements between begin (including begin) and this element are added. - - - - the state of this chunk. See - - - - A state telling whether a MergeChunk belongs to a conflict or not. The - first chunk of a conflict is reported with a special state to be able to - distinguish the border between two consecutive conflicts - - - - - This chunk does not belong to a conflict - - - - - This chunk does belong to a conflict and is the first one of the conflicting chunks - - - - - This chunk does belong to a conflict but is not the first one of the conflicting chunks. It's a subsequent one. - - - - - A class to convert merge results into a Git conformant textual presentation - - - - - Formats the results of a merge of objects in a Git - conformant way. This method also assumes that the objects - being merged are line oriented files which use LF as delimiter. This - method will also use LF to separate chunks and conflict metadata, - therefore it fits only to texts that are LF-separated lines. - - the outputstream where to write the textual presentation - the merge result which should be presented - - When a conflict is reported each conflicting range will get a - name. This name is following the "<<<<<<< " or ">>>>>>> " - conflict markers. The names for the sequences are given in - this list - - - the name of the characterSet used when writing conflict - metadata - - - - - Formats the results of a merge of exactly two objects in - a Git conformant way. This convenience method accepts the names for the - three sequences (base and the two merged sequences) as explicit - parameters and doesn't require the caller to specify a List - - - the where to write the textual - presentation - - the merge result which should be presented - the name ranges from the base should get - the name ranges from ours should get - the name ranges from theirs should get - - the name of the characterSet used when writing conflict - metadata - - - - - Instance of a specific for a single . - - - - - Create a new merge instance for a repository. - - - the repository this merger will read and write data on. - - - - - An object writer to Create objects in . - - - - - - Merge together two or more tree-ish objects. - - Any tree-ish may be supplied as inputs. Commits and/or tags pointing at - trees or commits may be passed as input objects. - - - source trees to be combined together. The merge base is not - included in this set. - - True if the merge was completed without conflicts; false if the - merge strategy cannot handle this merge or there were conflicts - preventing it from automatically resolving all paths. - - - one of the input objects is not a commit, but the strategy - requires it to be a commit. - - - one or more sources could not be read, or outputs could not - be written to the Repository. - - - - - Create an iterator to walk the merge base of two commits. - - - Index of the first commit in . - - - Index of the second commit in . - - the new iterator - - one of the input objects is not a commit. - - - objects are missing or multiple merge bases were found. - - - - - Open an iterator over a tree. - - - the tree to scan; must be a tree (not a ). - - An iterator for the tree. - - the input object is not a tree. - - - the tree object is not found or cannot be read. - - - - - Execute the merge. - - This method is called from after the - , and - have been populated. - - true if the merge was completed without conflicts; false if the - merge strategy cannot handle this merge or there were conflicts - preventing it from automatically resolving all paths. - - one of the input objects is not a commit, but the strategy - requires it to be a commit. - - one or more sources could not be read, or outputs could not - be written to the Repository. - - - - - - - - Resulting tree, if returned true. - - - - - The repository this merger operates on. - - - - - A for computing merge bases, or listing incoming commits. - - - - - The original objects supplied in the merge; this can be any . - - - - - If [i] is a commit, this is the commit. - - - - - The trees matching every entry in . - - - - - The result of merging a number of objects. These sequences - have one common predecessor sequence. The result of a merge is a list of - MergeChunks. Each MergeChunk contains either a range (a subsequence) from - one of the merged sequences, a range from the common predecessor or a - conflicting range from one of the merged sequences. A conflict will be - reported as multiple chunks, one for each conflicting range. The first chunk - for a conflict is marked specially to distinguish the border between two - consecutive conflicts. - - This class does not know anything about how to present the merge result to - the end-user. MergeFormatters have to be used to construct something human - readable. - - - - - - Creates a new empty MergeResult - - - contains the common predecessor sequence at position 0 - followed by the merged sequences. This list should not be - modified anymore during the lifetime of this . - - - - - Adds a new range from one of the merged sequences or from the common - predecessor. This method can add conflicting and non-conflicting ranges - controlled by the conflictState parameter - - - determines from which sequence this range comes. An index of - x specifies the x+1 element in the list of sequences - specified to the constructor - - - the first element from the specified sequence which should be - included in the merge result. Indexes start with 0. - - - specifies the end of the range to be added. The element this - index points to is the first element which not added to the - merge result. All elements between begin (including begin) and - this element are added. - - - when set to NO_CONLICT a non-conflicting range is added. - This will end implicitly all open conflicts added before. - - - - - Returns the common predecessor sequence and the merged sequence in one - list. The common predecessor is is the first element in the list - - - the common predecessor at position 0 followed by the merged - sequences. - - - - an iterator over the MergeChunks. The iterator does not support the remove operation - - - true if this merge result contains conflicts - - - - A method of combining two or more trees together to form an output tree. - - Different strategies may employ different techniques for deciding which paths - (and ObjectIds) to carry from the input trees into the final output tree. - - - - - Simple strategy that sets the output tree to the first input tree. - - - - - Simple strategy that sets the output tree to the second input tree. - - - - - Simple strategy to merge paths, without simultaneous edits. - - - - - Register a merge strategy so it can later be obtained by name. - - the strategy to register. - - a strategy by the same name has already been registered. - - - - - Register a merge strategy so it can later be obtained by name. - - - name the strategy can be looked up under. - the strategy to register. - - a strategy by the same name has already been registered. - - - - - Locate a strategy by name. - - name of the strategy to locate. - - The strategy instance; null if no strategy matches the name. - - - - - Get all registered strategies. - - - The registered strategy instances. No inherit order is returned; - the caller may modify (and/or sort) the returned array if - necessary to obtain a reasonable ordering. - - - - - Create a new merge instance. - - - repository database the merger will read from, and eventually - write results back to. - - the new merge instance which implements this strategy. - - - - default name of this strategy implementation. - - - - - - Trivial merge strategy to make the resulting tree exactly match an input. - - This strategy can be used to cauterize an entire side branch of history, by - setting the output tree to one of the inputs, and ignoring any of the paths - of the other inputs. - - - - - Create a new merge strategy to select a specific input tree. - - name of this strategy. - - the position of the input tree to accept as the result. - - - - - Merges two commits together in-memory, ignoring any working directory. - - The strategy chooses a path from one of the two input trees if the path is - unchanged in the other relative to their common merge base tree. This is a - trivial 3-way merge (at the file path level only). - - Modifications of the same file path (content and/or file mode) by both input - trees will cause a merge conflict, as this strategy does not attempt to merge - file contents. - - - - - A merge strategy to merge 2 trees, using a common base ancestor tree. - - - - - A merge of 2 trees, using a common base ancestor tree. - - - - - Create a new merge instance for a repository. - - - The repository this merger will Read and write data on. - - - - - Set the common ancestor tree. - - - Common base treeish; null to automatically compute the common - base from the input commits during - . - - - The object is not a . - - - The object does not exist. - - - The object could not be read. - - - - - Merge together two objects. - - Any tree-ish may be supplied as inputs. Commits and/or tags pointing at - trees or commits may be passed as input objects. - - source tree to be combined together. - source tree to be combined together. - - true if the merge was completed without conflicts; false if the - merge strategy cannot handle this merge or there were conflicts - preventing it from automatically resolving all paths. - - - one of the input objects is not a commit, but the strategy - requires it to be a commit. - - - one or more sources could not be read, or outputs could not - be written to the Repository. - - - - - Create an iterator to walk the merge base. - - - An iterator over the caller-specified merge base, or the natural - merge base of the two input commits. - - - - - Part of a "GIT binary patch" to describe the pre-image or post-image - - - Offset within {@link #file}.buf to the "literal" or "delta " line. - - - Position 1 past the end of this hunk within {@link #file}'s buf. - - - Type of the data meaning. - - - Inflated length of the data. - - - @return header for the file this hunk applies to - - - @return the byte array holding this hunk's patch script. - - - @return offset the start of this hunk in {@link #getBuffer()}. - - - @return offset one past the end of the hunk in {@link #getBuffer()}. - - - @return type of this binary hunk - - - @return inflated size of this hunk's data - - - Type of information stored in a binary hunk. - - - The full content is stored, deflated. - - - A Git pack-style delta is stored, deflated. - - - A file in the Git "diff --cc" or "diff --combined" format. - - A combined diff shows an n-way comparison between two or more ancestors and - the final revision. Its primary function is to perform code reviews on a - merge which introduces changes not in any ancestor. - - - - Patch header describing an action for a single file path. - - - - - Convert the patch script for this file into a string. - - The default character encoding is assumed for - both the old and new files. - - - The patch script, as a Unicode string. - - - - - Convert the patch script for this file into a string. - - hint character set to decode the old lines with. - hint character set to decode the new lines with. - the patch script, as a Unicode string. - - - - Convert the patch script for this file into a string. - - - optional array to suggest the character set to use when - decoding each file's line. If supplied the array must have a - length of + 1 - representing the old revision character sets and the new - revision character set. - - the patch script, as a Unicode string. - - - - The old file mode, if described in the patch - - - - - The type of change this patch makes on - - - - - Returns similarity score between and - if is - or . - - - - - - Get the old object id from the index. - - - The object id; null if there is no index line - - - - - Get the new object id from the index. - - - The object id; null if there is no index line - - - - - Style of patch used to modify this file - - - - - - True if this patch modifies metadata about a file - - - - - - If a , the new-image delta/literal - - - - - - If a , the old-image delta/literal - - - - - - Returns a list describing the content edits performed on this file. - - - - - - Parse a "diff --git" or "diff --cc" line. - - - first character After the "diff --git " or "diff --cc " part. - - - one past the last position to parse. - - - first character After the LF at the end of the line; -1 on error. - - - - - Determine if this is a patch hunk header. - - the buffer to scan - first position in the buffer to evaluate - - last position to consider; usually the end of the buffer - (buf.length) or the first position on the next - line. This is only used to avoid very long runs of '@' from - killing the scan loop. - - - the number of "ancestor revisions" in the hunk header. A - traditional two-way diff ("@@ -...") returns 1; a combined diff - for a 3 way-merge returns 3. If this is not a hunk header, 0 is - returned instead. - - - - - The byte array holding this file's patch script. - - - - - - Offset the start of this file's script in - - - - - Offset one past the end of the file script. - - - - - - Get the old name associated with this file. - - The meaning of the old name can differ depending on the semantic meaning - of this patch: -
    -
  • file add: always /dev/null
  • -
  • file modify: always
  • -
  • file delete: always the file being deleted
  • -
  • file copy: source file the copy originates from
  • -
  • file rename: source file the rename originates from
  • -
-
- Old name for this file. -
- - - Get the new name associated with this file. - - The meaning of the new name can differ depending on the semantic meaning - of this patch: -
    -
  • file add: always the file being created
  • -
  • file modify: always
  • -
  • file delete: always /dev/null
  • -
  • file copy: destination file the copy ends up at
  • -
  • file rename: destination file the rename ends up at
  • -
-
- -
- - - The new file mode, if described in the patch - - - - - Gets the hunks altering this file; in order of appearance in patch - - - - - - General type of change a single file-level patch describes. - - - - - Add a new file to the project - - - - - Modify an existing file in the project (content and/or mode) - - - - - Delete an existing file from the project - - - - - Rename an existing file to a new location - - - - - Copy an existing file to a new location, keeping the original - - - - - Type of patch used by this file. - - - - - A traditional unified diff style patch of a text file. - - - - - An empty patch with a message "Binary files ... differ" - - - - - A Git binary patch, holding pre and post image deltas - - - - - Get the file mode of the first parent. - - - - Get the file mode of the nth ancestor - - @param nthParent - the ancestor to get the mode of - @return the mode of the requested ancestor. - - - @return get the object id of the first parent. - - - Get the ObjectId of the nth ancestor - - @param nthParent - the ancestor to get the object id of - @return the id of the requested ancestor. - - - - Number of ancestor revisions mentioned in this diff. - - - - - Hunk header for a hunk appearing in a "diff --cc" style patch. - - - - - Hunk header describing the layout of a single block of lines. - - - - - Returns a list describing the content edits performed within the hunk. - - - - - - Header for the file this hunk applies to. - - - - - The byte array holding this hunk's patch script. - - - - - - Offset within to the "@@ -" line. - - - - - Position 1 past the end of this hunk within 's buffer. - - - - - First line number in the post-image file where the hunk starts. - - - - - Total number of post-image lines this hunk covers (context + inserted) - - - - - Total number of lines of context appearing in this hunk. - - - - - Gets the data related to the nth ancestor - - The ancestor to get the old image data of - The image data of the requested ancestor. - - - - An error in a patch script. - - - - - The severity of the error. - - - - - - A message describing the error. - - - - - - The byte buffer holding the patch script. - - - - - - Byte offset within where the error is - - - - - - Line of the patch script the error appears on. - - - - - - Classification of an error. - - - - - The error is unexpected, but can be worked around. - - - - - The error indicates the script is severely flawed. - - - - - Details about an old image of the file. - - - - - Returns the of the pre-image file. - - - - - - Returns the of this hunk. - - - - - Return the first line number the hunk starts on in this file. - - - - - - rReturn the total number of lines this hunk covers in this file. - - - - - Returns the number of lines deleted by the post-image from this file. - - - - - Returns the number of lines added by the post-image not in this file. - - - - - A parsed collection of s from a unified diff patch file. - - - - - Create an empty patch. - - - - Add a single file to this patch. - - Typically files should be added by parsing the text through one of this - class's parse methods. - - @param fh - the header of the file. - - - @return list of files described in the patch, in occurrence order. - - - Add a formatting error to this patch script. - - @param err - the error description. - - - @return collection of formatting errors, if any. - - - Parse a patch received from an InputStream. - - Multiple parse calls on the same instance will concatenate the patch - data, but each parse input must start with a valid file header (don't - split a single file across parse calls). - - @param is - the stream to Read the patch data from. The stream is Read - until EOF is reached. - @throws IOException - there was an error reading from the input stream. - - - Parse a patch stored in a byte[]. - - Multiple parse calls on the same instance will concatenate the patch - data, but each parse input must start with a valid file header (don't - split a single file across parse calls). - - @param buf - the buffer to parse. - @param ptr - starting position to parse from. - @param end - 1 past the last position to end parsing. The total length to - be parsed is end - ptr. - - - The build number if the system is Windows Server 2003 R2; otherwise, 0. - - - - Basic commit graph renderer for graphical user interfaces. - - Lanes are drawn as columns left-to-right in the graph, and the commit short - message is drawn to the right of the lane lines for this cell. It is assumed - that the commits are being drawn as rows of some sort of table. - - - Client applications can subclass this implementation to provide the necessary - drawing primitives required to display a commit graph. Most of the graph - layout is handled by this class, allowing applications to implement only a - handful of primitive stubs. - - - This class is suitable for us within an AWT TableCellRenderer or within a SWT - PaintListener registered on a Table instance. It is meant to rubber stamp the - graphics necessary for one row of a plotted commit list. - - - Subclasses should call {@link #paintCommit(PlotCommit, int)} after they have - otherwise configured their instance to draw one commit into the current - location. - - - All drawing methods assume the coordinate space for the current commit's cell - starts at (upper left corner is) 0,0. If this is not true (like say in SWT) - the implementation must perform the cell offset computations within the - various draw methods. - - - type of color object used by the graphics library. - - - - Paint one commit using the underlying graphics library. - - the commit to render in this cell. Must not be null. - total height (in pixels) of this cell. - - - - Draw a decoration for the Ref ref at x,y - - left - top - A peeled ref - width of label in pixels - - - - Obtain the color reference used to paint this lane. - - Colors returned by this method will be passed to the other drawing - primitives, so the color returned should be application specific. - - - If a null lane is supplied the return value must still be acceptable to a - drawing method. Usually this means the implementation should return a - default color. - - - the current lane. May be null. - graphics specific color reference. Must be a valid color. - - - - Draw a single line within this cell. - - the color to use while drawing the line. - starting X coordinate, 0 based. - starting Y coordinate, 0 based. - ending X coordinate, 0 based. - ending Y coordinate, 0 based. - number of pixels wide for the line. Always at least 1. - - - - Draw a single commit dot. - - Usually the commit dot is a filled oval in blue, then a drawn oval in - black, using the same coordinates for both operations. - - - upper left of the oval's bounding box. - upper left of the oval's bounding box. - width of the oval's bounding box. - height of the oval's bounding box. - - - - Draw a single boundary commit (aka uninteresting commit) dot. - - Usually a boundary commit dot is a light gray oval with a white center. - - upper left of the oval's bounding box. - upper left of the oval's bounding box. - width of the oval's bounding box. - height of the oval's bounding box. - - - - Draw a single line of text. - - The font and colors used to render the text are left up to the - implementation. - - - the text to draw. Does not contain LFs. - first pixel from the left that the text can be drawn at. Character data must not appear before this position. - pixel coordinate of the centerline of the text. Implementations must adjust this coordinate to account for the way their implementation handles font rendering. - - - - A commit reference to a commit in the DAG. - - - - - A commit reference to a commit in the DAG. - - - - - Base object type accessed during revision walking. - - - - - A (possibly mutable) SHA-1 abstraction. - - If this is an instance of the concept of equality - with this instance can alter at any time, if this instance is modified to - represent a different object name. - - - - - Compare to object identifier byte sequences for equality. - - the first identifier to compare. Must not be null. - the second identifier to compare. Must not be null. - - - - - Determine if this ObjectId has exactly the same value as another. - - the other id to compare to. May be null. - true only if both ObjectIds have identical bits. - - - - Copy this ObjectId to an output writer in hex format. - - the stream to copy to. - - - - Copy this ObjectId to a StringBuilder in hex format. - - - temporary char array to buffer construct into before writing. - Must be at least large enough to hold 2 digits for each byte - of object id (40 characters or larger). - - the string to append onto. - - - - Copy this ObjectId to an output writer in hex format. - - - temporary char array to buffer construct into before writing. - Must be at least large enough to hold 2 digits for each byte - of object id (40 characters or larger). - - the stream to copy to. - - - - Copy this ObjectId to an output writer in hex format. - - the stream to copy to. - - - - Copy this ObjectId to a byte array. - - the buffer to copy to. - the offset within b to write at. - - - - Copy this ObjectId to a int array. - - the buffer to copy to. - the offset within b to write at. - - - - Return unique abbreviation (prefix) of this object SHA-1. - - This method is a utility for abbreviate(repo, 8). - - repository for checking uniqueness within. - SHA-1 abbreviation. - - - - Return unique abbreviation (prefix) of this object SHA-1. - - Current implementation is not guaranteeing uniqueness, it just returns - fixed-length prefix of SHA-1 string. - - repository for checking uniqueness within. - minimum length of the abbreviated string. - SHA-1 abbreviation. - - - - For ObjectIdMap - - A discriminator usable for a fan-out style map - - - - Compare this ObjectId to another and obtain a sort ordering. - - the other id to compare to. Must not be null. - - < 0 if this id comes before other; 0 if this id is equal to - other; > 0 if this id comes after other. - - - - - Tests if this ObjectId starts with the given abbreviation. - - the abbreviation. - - True if this ObjectId begins with the abbreviation; else false. - - - - - Obtain an immutable copy of this current object name value. - - Only returns this if this instance is an unsubclassed - instance of {@link ObjectId}; otherwise a new instance is returned - holding the same value. - - This method is useful to shed any additional memory that may be tied to - the subclass, yet retain the unique identity of the object id for future - lookups within maps and repositories. - - an immutable copy, using the smallest memory footprint possible. - - - - Obtain an immutable copy of this current object name value. - - See if this is a possibly subclassed (but - immutable) identity and the application needs a lightweight identity - only reference. - - - an immutable copy. May be this if this is already - an immutable instance. - - - - - string form of the SHA-1, in lower case hexadecimal. - - - - - Determines whether the specified objects are equal. - - - true if the specified objects are equal; otherwise, false. - - - The first object of type to compare. - - - The second object of type to compare. - - - - - Returns a hash code for the specified object. - - - A hash code for the specified object. - - - The for which a hash code is to be returned. - - - The type of is a reference type and is null. - - - - - Test a string of characters to verify it is a hex format. - - If true the string can be parsed with . - - the string to test. - true if the string can converted into an . - - - - - Convert an ObjectId into a hex string representation. - - The id to convert. May be null. - The hex string conversion of this id's content. - - - - Compare to object identifier byte sequences for equality. - - - the first buffer to compare against. Must have at least 20 - bytes from position ai through the end of the buffer. - - - first offset within firstBuffer to begin testing. - - - the second buffer to compare against. Must have at least 2 - bytes from position bi through the end of the buffer. - - - first offset within secondBuffer to begin testing. - - - return true if the two identifiers are the same. - - - - - Convert an ObjectId from raw binary representation. - - - The raw byte buffer to read from. At least 20 bytes after - must be available within this byte array. - - - Position to read the first byte of data from. - - The converted object id. - - - - Convert an ObjectId from raw binary representation. - - - The raw byte buffer to read from. At least 20 bytes must be - available within this byte array. - - the converted object id. - - - - Get the name of this object. - - Unique hash of this object. - - - - Test to see if the flag has been set on this object. - - the flag to test. - - true if the flag has been added to this object; false if not. - - - - - Test to see if any flag in the set has been set on this object. - - the flags to test. - - true if any flag in the set has been added to this object; false - if not. - - - - - Test to see if all flags in the set have been set on this object. - - the flags to test. - true if all flags of the set have been added to this object; - false if some or none have been added. - - - - - Add a flag to this object. - - If the flag is already set on this object then the method has no effect. - - - The flag to mark on this object, for later testing. - - - - - Add a set of flags to this object. - - - The set of flags to mark on this object, for later testing. - - - - - Remove a flag from this object. - - If the flag is not set on this object then the method has no effect. - - - The flag to remove from this object. - - - - - Remove a set of flags from this object. - - - The flag to remove from this object. - - - - - Release as much memory as possible from this object. - - - - - - - - Buffer to Append a debug description of core RevFlags onto. - - - - - Get Git object type. See . - - - - - - Create a new commit reference. - - object name for the commit. - - - - Carry a RevFlag set on this commit to its parents. - - If this commit is parsed, has parents, and has the supplied flag set on - it we automatically add it to the parents, grand-parents, and so on until - an unparsed commit or a commit with no parents is discovered. This - permits applications to force a flag through the history chain when - necessary. - - - The single flag value to carry back onto parents. - - - - - Parse this commit buffer for display. - - - revision walker owning this reference. - - - Parsed commit. - - - - - Get the nth parent from this commit's parent list. - - - the specified parent - - - Parent index to obtain. Must be in the range 0 through - -1. - - - An invalid parent index was specified. - - - - - Parse the author identity from the raw buffer. - - This method parses and returns the content of the author line, after - taking the commit's character set into account and decoding the author - name and email address. This method is fairly expensive and produces a - new PersonIdent instance on each invocation. Callers should invoke this - method only if they are certain they will be outputting the result, and - should cache the return value for as long as necessary to use all - information from it. - - implementations should try to use to scan - the instead, as this will allow faster evaluation - of commits. - - - Identity of the author (name, email) and the time the commit was - made by the author; null if no author line was found. - - - - - Parse the committer identity from the raw buffer. - - This method parses and returns the content of the committer line, after - taking the commit's character set into account and decoding the committer - name and email address. This method is fairly expensive and produces a - new PersonIdent instance on each invocation. Callers should invoke this - method only if they are certain they will be outputting the result, and - should cache the return value for as long as necessary to use all - information from it. - - implementations should try to use to scan - the instead, as this will allow faster evaluation - of commits. - - - Identity of the committer (name, email) and the time the commit - was made by the committer; null if no committer line was found. - - - - - Parse the complete commit message and decode it to a string. - - This method parses and returns the message portion of the commit buffer, - After taking the commit's character set into account and decoding the - buffer using that character set. This method is a fairly expensive - operation and produces a new string on each invocation. - - - Decoded commit message as a string. Never null. - - - - - Parse the commit message and return the first "line" of it. - - The first line is everything up to the first pair of LFs. This is the - "oneline" format, suitable for output in a single line display. - - This method parses and returns the message portion of the commit buffer, - after taking the commit's character set into account and decoding the - buffer using that character set. This method is a fairly expensive - operation and produces a new string on each invocation. - - - Decoded commit message as a string. Never null. The returned - string does not contain any LFs, even if the first paragraph - spanned multiple lines. Embedded LFs are converted to spaces. - - - - - Parse the footer lines (e.g. "Signed-off-by") for machine processing. - - This method splits all of the footer lines out of the last paragraph of - the commit message, providing each line as a key-value pair, ordered by - the order of the line's appearance in the commit message itself. - - A footer line's key must match the pattern {@code ^[A-Za-z0-9-]+:}, while - the value is free-form, but must not contain an LF. Very common keys seen - in the wild are: -
    -
  • {@code Signed-off-by} (agrees to Developer Certificate of Origin)
  • -
  • {@code Acked-by} (thinks change looks sane in context)
  • -
  • {@code Reported-by} (originally found the issue this change fixes)
  • -
  • {@code Tested-by} (validated change fixes the issue for them)
  • -
  • {@code CC}, {@code Cc} (copy on all email related to this change)
  • -
  • {@code Bug} (link to project's bug tracking system)
  • -
-
- - Ordered list of footer lines; empty list if no footers found. - -
- - - Get the values of all footer lines with the given key. - - - footer key to find values of, case insensitive. - - - values of footers with key of , ordered by their - order of appearance. Duplicates may be returned if the same - footer appeared more than once. Empty list if no footers appear - with the specified key, or there are no footers at all. - - - - - - Get the values of all footer lines with the given key. - - - footer key to find values of, case insensitive. - - - values of footers with key of , ordered by their - order of appearance. Duplicates may be returned if the same - footer appeared more than once. Empty list if no footers appear - with the specified key, or there are no footers at all. - - - - - - Reset this commit to allow another RevWalk with the same instances. - - Subclasses must call base.reset() to ensure the - basic information can be correctly cleared out. - - - - - Gets the time from the "committer " line of the buffer. - - - - - Obtain an array of all parents (NOTE - THIS IS NOT A COPY). - - This method is exposed only to provide very fast, efficient access to - this commit's parent list. Applications relying on this list should be - very careful to ensure they do not modify its contents during their use - of it. - - - - - Get a reference to this commit's tree. - - - - - Gets the number of parent commits listed in this commit. - - - - - Obtain the raw unparsed commit body (NOTE - THIS IS NOT A COPY). - - This method is exposed only to provide very fast, efficient access to - this commit's message buffer within a RevFilter. Applications relying on - this buffer should be very careful to ensure they do not modify its - contents during their use of it. - - - This property returns the raw unparsed commit body. This is NOT A COPY. - Altering the contents of this buffer may alter the walker's - knowledge of this commit, and the results it produces. - - - - - Determine the encoding of the commit message buffer. - - Locates the "encoding" header (if present) and then returns the proper - character set to apply to this buffer to evaluate its contents as - character data. - - If no encoding header is present, is assumed. - - - The preferred encoding of . - - - - - Obtain the lane this commit has been plotted into. - - the assigned lane for this commit. - - - - Create a new commit. - - the identity of this commit. - the tags associated with this commit, null for no tags - - - - Get the number of child commits listed in this commit. - - number of children; always a positive value but can be 0. - - - - Get the nth child from this commit's child list. - - child index to obtain. Must be in the range 0 through () - 1 - the specified child. - - - - Determine if the given commit is a child (descendant) of this commit. - - the commit to test. - true if the given commit built on top of this commit. - - - - An ordered list of subclasses. - - Commits are allocated into lanes as they enter the list, based upon their - connections between descendant (child) commits and ancestor (parent) commits. - - - The source of the list must be a {@link PlotWalk} and {@link #fillTo(int)} - must be used to populate the list. - - - - - - An ordered list of subclasses. - - type of subclass of RevCommit the list is storing. - - - - An ordered list of subclasses. - - - Type of subclass of RevObject the list is storing. - - - - - Create an empty object list. - - - - - Items stored in this list. - - If = 0 this block holds the list elements; otherwise - it holds pointers to other {@link Block} instances which use a shift that - is smaller. - - - - - - Current number of elements in the list. - - - - - One level of contents, either an intermediate level or a leaf level. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - 1 - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - 2 - - - - Apply a flag to all commits matching the specified filter. - - applyFlag(matching, flag, 0, size()), but without - the incremental behavior. - - - the filter to test commits with. If the filter includes a - commit it will have the flag set; if the filter does not - include the commit the flag will be unset. - - - revision filter needed to Read additional objects, but an - error occurred while reading the pack files or loose objects - of the repository. - - - - - Apply a flag to all commits matching the specified filter. - - This version allows incremental testing and application, such as from a - background thread that needs to periodically halt processing and send - updates to the UI. - - - the filter to test commits with. If the filter includes a - commit it will have the flag set; if the filter does not - include the commit the flag will be unset. - - - the flag to Apply (or remove). Applications are responsible - for allocating this flag from the source RevWalk. - - - first commit within the list to begin testing at, inclusive. - Must not be negative, but may be beyond the end of the list. - - - last commit within the list to end testing at, exclusive. If - smaller than or equal to rangeBegin then no - commits will be tested. - - - Revision filter needed to Read additional objects, but an - error occurred while reading the pack files or loose objects - of the repository. - - - - - Remove the given flag from all commits. - - Same as clearFlag(flag, 0, size()), but without the - incremental behavior. - - the flag to remove. Applications are responsible for - allocating this flag from the source . - - - - Remove the given flag from all commits. - - This method is actually implemented in terms of: - applyFlag(RevFilter.NONE, flag, rangeBegin, rangeEnd). - - - The flag to remove. Applications are responsible for - allocating this flag from the source . - - - First commit within the list to begin testing at, inclusive. - Must not be negative, but may be beyond the end of the list. - - - Last commit within the list to end testing at, exclusive. If - smaller than or equal to rangeBegin then no - commits will be tested. - - - - - Find the next commit that has the given flag set. - - the flag to test commits against. - - First commit index to test at. Applications may wish to begin - at 0, to test the first commit in the list. - - - Index of the first commit at or After index begin - that has the specified flag set on it; -1 if no match is found. - - - - - Find the next commit that has the given flag set. - - the flag to test commits against. - - First commit index to test at. Applications may wish to begin - at size()-1, to test the last commit in the - list. - - Index of the first commit at or before index begin - that has the specified flag set on it; -1 if no match is found. - - - - - Set the revision walker this list populates itself from. - - the walker to populate from. - - - - Ensure this list contains at least a specified number of commits. - - The revision walker specified by is pumped until - the given number of commits are contained in this list. If there are - fewer total commits available from the walk then the method will return - early. Callers can test the size of the list by to - determine if the high water mark specified was met. - - - Number of commits the caller wants this list to contain when - the fill operation is complete. - - - - - Optional callback invoked when commits enter the list by fillTo. - - This method is only called during . - - the list position this object will appear at. - the object being added (or set) into the list. - - - - Is this list still pending more items? - - - true if might be able to extend the list - size when called. - - - - - Find the set of lanes passing through a commit's row. - Lanes passing through a commit are lanes that the commit is not directly - on, but that need to travel through this commit to connect a descendant - (child) commit to an ancestor (parent) commit. Typically these lanes will - be drawn as lines in the passed commit's box, and the passed commit won't - appear to be connected to those lines. - This method modifies the passed collection by adding the lanes in any order. - - the commit the caller needs to get the lanes from. - collection to add the passing lanes into. - - - a new Lane appropriate for this particular PlotList. - - - - Return colors and other reusable information to the plotter when a lane is no longer needed. - - - - - A line space within the graph. - Commits are strung onto a lane. For many UIs a lane represents a column. - - - - - Logical location of this lane within the graphing plane. - - location of this lane, 0 through the maximum number of lanes. - - - - Specialized RevWalk for visualization of a commit graph. - - - - - Walks a commit graph and produces the matching commits in order. - - A RevWalk instance can only be used once to generate results. Running a - second time requires creating a new RevWalk instance, or invoking - before starting again. Resetting an existing instance may be - faster for some applications as commit body parsing can be avoided on the - later invocations. - - RevWalk instances are not thread-safe. Applications must either restrict - usage of a RevWalk instance to a single thread, or implement their own - synchronization at a higher level. - - Multiple simultaneous RevWalk instances per are permitted, - even from concurrent threads. Equality of s from two - different RevWalk instances is never true, even if their s - are equal (and thus they describe the same commit). - - The offered iterator is over the list of RevCommits described by the - configuration of this instance. Applications should restrict themselves to - using either the provided Iterator or , but never use both on - the same RevWalk at the same time. The Iterator may buffer RevCommits, while - does not. - - - - - Set on objects whose important header data has been loaded. - - For a RevCommit this indicates we have pulled apart the tree and parent - references from the raw bytes available in the repository and translated - those to our own local RevTree and RevCommit instances. The raw buffer is - also available for message and other header filtering. - - For a RevTag this indicates we have pulled part the tag references to - find out who the tag refers to, and what that object's type is. - - - - - Set on RevCommit instances added to our queue. - - We use this flag to avoid adding the same commit instance twice to our - queue, especially if we reached it by more than one path. - - - - - Set on RevCommit instances the caller does not want output. - - We flag commits as uninteresting if the caller does not want commits - reachable from a commit given to . - This flag is always carried into the commit's parents and is a key part - of the "rev-list B --not A" feature; A is marked UNINTERESTING. - - - - - Set on a RevCommit that can collapse out of the history. - - If the concluded that this commit matches his - parents' for all of the paths that the filter is interested in then we - mark the commit REWRITE. Later we can rewrite the parents of a REWRITE - child to remove chains of REWRITE commits before we produce the child to - the application. - - - - - - Temporary mark for use within generators or filters. - - This mark is only for local use within a single scope. If someone sets - the mark they must unset it before any other code can see the mark. - - - - - Temporary mark for use within . - - This mark indicates the commit could not produce when it wanted to, as at - least one child was behind it. Commits with this flag are delayed until - all children have been output first. - - - - - Create a new revision walker for a given repository. - - - The repository the walker will obtain data from. - - - - - Mark a commit to start graph traversal from. - - Callers are encouraged to use to obtain - the commit reference, rather than , as - this method requires the commit to be parsed before it can be added as a - root for the traversal. - - The method will automatically parse an unparsed commit, but error - handling may be more difficult for the application to explain why a - is not actually a commit. The object pool of this - walker would also be 'poisoned' by the non-commit RevCommit. - - - The commit to start traversing from. The commit passed must be - from this same revision walker. - - - The commit supplied is not available from the object - database. This usually indicates the supplied commit is - invalid, but the reference was constructed during an earlier - invocation to . - - - The object was not parsed yet and it was discovered during - parsing that it is not actually a commit. This usually - indicates the caller supplied a non-commit SHA-1 to - . - - - - - Mark a commit to start graph traversal from. - - Callers are encouraged to use to obtain - the commit reference, rather than , as - this method requires the commit to be parsed before it can be added as a - root for the traversal. - - The method will automatically parse an unparsed commit, but error - handling may be more difficult for the application to explain why a - is not actually a commit. The object pool of this - walker would also be 'poisoned' by the non-commit RevCommit. - - - Commits to start traversing from. The commits passed must be - from this same revision walker. - - - The commit supplied is not available from the object - database. This usually indicates the supplied commit is - invalid, but the reference was constructed during an earlier - invocation to . - - - The object was not parsed yet and it was discovered during - parsing that it is not actually a commit. This usually - indicates the caller supplied a non-commit SHA-1 to - . - - - - - Mark a commit to not produce in the output. - - Uninteresting commits denote not just themselves but also their entire - ancestry chain, back until the merge base of an uninteresting commit and - an otherwise interesting commit. - - Callers are encouraged to use to obtain - the commit reference, rather than , as - this method requires the commit to be parsed before it can be added as a - root for the traversal. - - The method will automatically parse an unparsed commit, but error - handling may be more difficult for the application to explain why a - RevCommit is not actually a commit. The object pool of this walker would - also be 'poisoned' by the non-commit RevCommit. - - - The commit to start traversing from. The commit passed must be - from this same revision walker. - - - The commit supplied is not available from the object - database. This usually indicates the supplied commit is - invalid, but the reference was constructed during an earlier - invocation to . - - - the object was not parsed yet and it was discovered during - parsing that it is not actually a commit. This usually - indicates the caller supplied a non-commit SHA-1 to - . - - - a pack file or loose object could not be read. - - - - - Determine if a commit is reachable from another commit. - - A commit base is an ancestor of tip if we - can find a path of commits that leads from tip and ends at - base. - - This utility function resets the walker, inserts the two supplied - commits, and then executes a walk until an answer can be obtained. - Currently allocated RevFlags that have been added to RevCommit instances - will be retained through the reset. - - - commit the caller thinks is reachable from tip. - - - commit to start iteration from, and which is most likely a - descendant (child) of base. - - - true if there is a path directly from tip to - base (and thus base is fully merged - into tip); false otherwise. - - - one or or more of the next commit's parents are not available - from the object database, but were thought to be candidates - for traversal. This usually indicates a broken link. - - - one or or more of the next commit's parents are not actually - commit objects. - - - a pack file or loose object could not be read. - - - - - Pop the next most recent commit. - - - Next most recent commit; null if traversal is over. - - - one or or more of the next commit's parents are not available - from the object database, but were thought to be candidates - for traversal. This usually indicates a broken link. - - - one or or more of the next commit's parents are not actually - commit objects. - - - a pack file or loose object could not be read. - - - - - Check whether the provided sorting strategy is enabled. - - - a sorting strategy to look for. - - - True if this strategy is enabled, false otherwise - - - - - Select a single sorting strategy for the returned commits. - - Disables all sorting strategies, then enables only the single strategy - supplied by the caller. - - a sorting strategy to enable. - - - - Add or remove a sorting strategy for the returned commits. - - Multiple strategies can be applied at once, in which case some strategies - may take precedence over others. As an example, must - take precedence over , otherwise it - cannot enforce its ordering. - - A sorting strategy to enable or disable. - - true if this strategy should be used, false if it should be - removed. - - - - - Get the currently configured commit filter. - - - Return the current filter. Never null as a filter is always needed. - - - - - Set the commit filter for this walker. - - Multiple filters may be combined by constructing an arbitrary tree of - or instances to - describe the boolean expression required by the application. Custom - filter implementations may also be constructed by applications. - - Note that filters are not thread-safe and may not be shared by concurrent - RevWalk instances. Every RevWalk must be supplied its own unique filter, - unless the filter implementation specifically states it is (and always - will be) thread-safe. Callers may use to create - a unique filter tree for this RevWalk instance. - - - The new filter. If null the special - filter will be used instead, as it matches every commit. - - - - - - - Get the tree filter used to simplify commits by modified paths. - - - The current filter. Never null as a filter is always needed. If - no filter is being applied is returned. - - - - - Set the tree filter used to simplify commits by modified paths. - - If null or the path limiter is removed. Commits - will not be simplified. - - If non-null and not then the tree filter will be - installed and commits will have their ancestry simplified to hide commits - that do not contain tree entries matched by the filter. - - Usually callers should be inserting a filter graph including - along with one or more - instances. - - - New filter. If null the special filter - will be used instead, as it matches everything. - - - - - - Should the body of a commit or tag be retained after parsing its headers? - - Usually the body is always retained, but some application code might not - care and would prefer to discard the body of a commit as early as - possible, to reduce memory usage. - - true if the body should be retained; false it is discarded. - - - - Set whether or not the body of a commit or tag is retained. - - If a body of a commit or tag is not retained, the application must - call before the body can be safely - accessed through the type specific access methods. - - True to retain bodies; false to discard them early. - - - - Locate a reference to a blob without loading it. - - The blob may or may not exist in the repository. It is impossible to tell - from this method's return value. - - name of the blob object. - Reference to the blob object. Never null. - - - - Locate a reference to a tree without loading it. - - The tree may or may not exist in the repository. It is impossible to tell - from this method's return value. - - Name of the tree object. - Reference to the tree object. Never null. - - - - Locate a reference to a commit without loading it. - - The commit may or may not exist in the repository. It is impossible to - tell from this method's return value. - - name of the commit object. - reference to the commit object. Never null. - - - - Locate a reference to any object without loading it. - - The object may or may not exist in the repository. It is impossible to - tell from this method's return value. - - name of the object. - - type of the object. Must be a valid Git object type. - - Reference to the object. Never null. - - - - - Locate a reference to a commit and immediately parse its content. - - Unlike this method only returns - successfully if the commit object exists, is verified to be a commit, and - was parsed without error. - - name of the commit object. - reference to the commit object. Never null. - - the supplied commit does not exist. - - - the supplied id is not a commit or an annotated tag. - - - a pack file or loose object could not be read. - - - - - Locate a reference to a tree. - - This method only returns successfully if the tree object exists, is - verified to be a tree. - - - Name of the tree object, or a commit or annotated tag that may - reference a tree. - - Reference to the tree object. Never null. - - The supplied tree does not exist. - - - The supplied id is not a tree, a commit or an annotated tag. - - - A pack file or loose object could not be read. - - - - - Locate a reference to any object and immediately parse its headers. - - This method only returns successfully if the object exists and was parsed - without error. Parsing an object can be expensive as the type must be - determined. For blobs this may mean the blob content was unpacked - unnecessarily, and thrown away. - - Name of the object. - Reference to the object. Never null. - the supplied does not exist. - - a pack file or loose object could not be read. - - - - - Ensure the object's critical headers have been parsed. - - This method only returns successfully if the object exists and was parsed - without error. - - The object the caller needs to be parsed. - - The supplied does not exist. - - - A pack file or loose object could not be read. - - - - * Ensure the object's fully body content is available. - - This method only returns successfully if the object exists and was parsed - without error. - - the object the caller needs to be parsed. - - the supplied does not exist. - - - a pack file or loose object could not be read. - - - - - Create a new flag for application use during walking. - - Applications are only assured to be able to create 24 unique flags on any - given revision walker instance. Any flags beyond 24 are offered only if - the implementation has extra free space within its internal storage. - - - description of the flag, primarily useful for debugging. - - newly constructed flag instance. - - too many flags have been reserved on this revision walker. - - - - - Automatically carry a flag from a child commit to its parents. - - A carried flag is copied from the child commit onto its parents when the - child commit is popped from the lowest level of walk's internal graph. - - - The flag to carry onto parents, if set on a descendant. - - - - - Automatically carry flags from a child commit to its parents. - - A carried flag is copied from the child commit onto its parents when the - child commit is popped from the lowest level of walk's internal graph. - - - The flags to carry onto parents, if set on a descendant. - - - - - Allow a flag to be recycled for a different use. - - Recycled flags always come back as a different Java object instance when - assigned again by . - - If the flag was previously being carried, the carrying request is - removed. Disposing of a carried flag while a traversal is in progress has - an undefined behavior. - - the to recycle. - - - - Resets internal state and allows this instance to be used again. - - Unlike previously acquired RevObject (and RevCommit) - instances are not invalidated. RevFlag instances are not invalidated, but - are removed from all RevObjects. - - - - - Resets internal state and allows this instance to be used again. - - Unlike previously acquired RevObject (and RevCommit) - instances are not invalidated. RevFlag instances are not invalidated, but - are removed from all RevObjects. - - - application flags that should not be cleared from - existing commit objects. - - - - - Resets internal state and allows this instance to be used again. - - Unlike previously acquired RevObject (and RevCommit) - instances are not invalidated. RevFlag instances are not invalidated, but - are removed from all RevObjects. - - - application flags that should not be cleared from - existing commit objects. - - - - - Resets internal state and allows this instance to be used again. - - Unlike previously acquired RevObject (and RevCommit) - instances are not invalidated. RevFlag instances are not invalidated, but - are removed from all RevObjects. - - - application flags that should not be cleared from - existing commit objects. - - - - - Returns an Iterator over the commits of this walker. - - The returned iterator is only useful for one walk. If this RevWalk gets - reset a new iterator must be obtained to walk over the new results. - - Applications must not use both the Iterator and the API - at the same time. Pick one API and use that for the entire walk. - - If a checked exception is thrown during the walk (see ) - it is rethrown from the Iterator as a . - - an iterator over this walker's commits. - - - - - Throws an exception if we have started producing output. - - - - - Construct a new unparsed commit for the given object. - - - the object this walker requires a commit reference for. - - a new unparsed reference for the object. - - - - - Dispose all internal state and invalidate all RevObject instances. - - All RevObject (and thus RevCommit, etc.) instances previously acquired - from this RevWalk are invalidated by a dispose call. Applications must - not retain or use RevObject instances obtained prior to the dispose call. - All RevFlag instances are also invalidated, and must not be reused. - - - - - Get the repository this walker loads objects from. - - - - - Obtain the sort types applied to the commits returned. - - - The sorting strategies employed. At least one strategy is always - used, but that strategy may be . - - - - - Set on objects whose important header data has been loaded. - - For a RevCommit this indicates we have pulled apart the tree and parent - references from the raw bytes available in the repository and translated - those to our own local RevTree and RevCommit instances. The raw buffer is - also available for message and other header filtering. - - For a RevTag this indicates we have pulled part the tag references to - find out who the tag refers to, and what that object's type is. - - - - - Set on RevCommit instances added to our queue. - - We use this flag to avoid adding the same commit instance twice to our - queue, especially if we reached it by more than one path. - - - - - Set on RevCommit instances the caller does not want output. - - We flag commits as uninteresting if the caller does not want commits - reachable from a commit given to . - This flag is always carried into the commit's parents and is a key part - of the "rev-list B --not A" feature; A is marked UNINTERESTING. - - - - - Set on a RevCommit that can collapse out of the history. - - If the concluded that this commit matches his - parents' for all of the paths that the filter is interested in then we - mark the commit REWRITE. Later we can rewrite the parents of a REWRITE - child to remove chains of REWRITE commits before we produce the child to - the application. - - - - - - Temporary mark for use within generators or filters. - - This mark is only for local use within a single scope. If someone sets - the mark they must unset it before any other code can see the mark. - - - - - Temporary mark for use within {@link TopoSortGenerator}. - - This mark indicates the commit could not produce when it wanted to, as at - least one child was behind it. Commits with this flag are delayed until - all children have been output first. - - - - - Create a new revision walker for a given repository. - - the repository the walker will obtain data from. - - - the list of knows tags referring to this commit - - - - Includes a commit only if all subfilters include the same commit. - - Classic shortcut behavior is used, so evaluation of the - method stops as soon as a false - result is obtained. Applications can improve filtering performance by placing - faster filters that are more likely to reject a result earlier in the list. - - - - - Selects interesting revisions during walking. - - This is an abstract interface. Applications may implement a subclass, or use - one of the predefined implementations already available within this package. - Filters may be chained together using and - to create complex boolean expressions. - - Applications should install the filter on a RevWalk by - prior to starting traversal. - - Unless specifically noted otherwise a RevFilter implementation is not thread - safe and may not be shared by different RevWalk instances at the same time. - This restriction allows RevFilter implementations to cache state within their - instances during if it is beneficial to - their implementation. Deep clones created by may be used to - construct a thread-safe copy of an existing filter. - - Message filters: -
    -
  • Author name/email:
  • -
  • Committer name/email:
  • -
  • Message body:
  • -
- - Merge filters: -
    -
  • Skip all merges: .
  • -
- - Boolean modifiers: -
    -
  • AND:
  • -
  • OR:
  • -
  • NOT:
  • -
-
-
- - - Default filter that always returns true (thread safe). - - - - - Default filter that always returns false (thread safe). - - - - - Excludes commits with more than one parent (thread safe). - - - - - Selects only merge bases of the starting points (thread safe). - - This is a special case filter that cannot be combined with any other - filter. Its include method always throws an exception as context - information beyond the arguments is necessary to determine if the - supplied commit is a merge base. - - - - - Create a new filter that does the opposite of this filter. - - - A new filter that includes commits this filter rejects. - - - - - Determine if the supplied commit should be included in results. - - - The active walker this filter is being invoked from within. - - - The commit currently being tested. The commit has been parsed - and its body is available for inspection. - - - true to include this commit in the results; false to have this - commit be omitted entirely from the results. - - - The filter knows for certain that no additional commits can - ever match, and the current commit doesn't match either. The - walk is halted and no more results are provided. - - - An object the filter needs to consult to determine its answer - does not exist in the Git repository the Walker is operating - on. Filtering this commit is impossible without the object. - - - An object the filter needed to consult was not of the - expected object type. This usually indicates a corrupt - repository, as an object link is referencing the wrong type. - - - A loose object or pack file could not be Read to obtain data - necessary for the filter to make its decision. - - - - - Clone this revision filter, including its parameters. - - This is a deep Clone. If this filter embeds objects or other filters it - must also Clone those, to ensure the instances do not share mutable data. - - - Another copy of this filter, suitable for another thread. - - - - - Default filter that always returns false (thread safe). - - - - - Excludes commits with more than one parent (thread safe). - - - - - Selects only merge bases of the starting points (thread safe). - - This is a special case filter that cannot be combined with any other - filter. Its include method always throws an exception as context - information beyond the arguments is necessary to determine if the - supplied commit is a merge base. - - - - Create a filter with two filters, both of which must match. - - First filter to test. - Second filter to test. - - A filter that must match both input filters. - - - - - Create a filter around many filters, all of which must match. - - - List of filters to match against. Must contain at least 2 - filters. - - - A filter that must match all input filters. - - - - - Create a filter around many filters, all of which must match. - - - List of filters to match against. Must contain at least 2 - filters. - - - A filter that must match all input filters. - - - - - Matches only commits whose author name matches the pattern. - - - - - Create a new author filter. - - An optimized substring search may be automatically selected if the - pattern does not contain any regular expression meta-characters. - - The search is performed using a case-insensitive comparison. The - character encoding of the commit message itself is not respected. The - filter matches on raw UTF-8 byte sequences. - - Regular expression pattern to match. - - A new filter that matches the given expression against the author - name and address of a commit. - - - - - Abstract filter that searches text using extended regular expressions. - - - - - Encode a string pattern for faster matching on byte arrays. - - Force the characters to our funny UTF-8 only convention that we use on - raw buffers. This avoids needing to perform character set decodes on the - individual commit buffers. - - - original pattern string supplied by the user or the - application. - - - Same pattern, but re-encoded to match our funny raw UTF-8 - character sequence . - - - - - Construct a new pattern matching filter. - - - Text of the pattern. Callers may want to surround their - pattern with ".*" on either end to allow matching in the - middle of the string. - - - Should .* be wrapped around the pattern of ^ and $ are - missing? Most users will want this set. - - - should be applied to the pattern - before compiling it? - - - flags from to control how matching performs. - - - - Obtain the raw text to match against. - - Current commit being evaluated. - - Sequence for the commit's content that we need to match on. - - - - - Get the pattern this filter uses. - - - The pattern this filter is applying to candidate strings. - - - - - Abstract filter that searches text using only substring search. - - - - - Can this string be safely handled by a substring filter? - - - the pattern text proposed by the user. - - - True if a substring filter can perform this pattern match; false - if must be used instead. - - - - - Construct a new matching filter. - - - text to locate. This should be a safe string as described by - the as regular expression meta - characters are treated as literals. - - - - - Obtain the raw text to match against. - - Current commit being evaluated. - - Sequence for the commit's content that we need to match on. - - - - - Matches only commits whose committer name matches the pattern. - - - - - Create a new committer filter. - - An optimized substring search may be automatically selected if the - pattern does not contain any regular expression meta-characters. - - The search is performed using a case-insensitive comparison. The - character encoding of the commit message itself is not respected. The - filter matches on raw UTF-8 byte sequences. - - Regular expression pattern to match. - - A new filter that matches the given expression against the author - name and address of a commit. - - - - - Selects commits based upon the commit time field. - - - - - Create a new filter to select commits before a given date/time. - - the point in time to cut on. - - a new filter to select commits on or before . - - - - - Create a new filter to select commits After a given date/time. - - the point in time to cut on. - - a new filter to select commits on or After . - - - - - Create a new filter to select commits after or equal a given date/time since - and before or equal a given date/time until. - - the point in time to cut on. - the point in time to cut off. - a new filter to select commits between the given date/times. - - - - - - git internal time (seconds since epoch) - - - - - - git internal time (seconds since epoch) - - - - Matches only commits whose message matches the pattern. - - - - - Create a message filter. - - An optimized substring search may be automatically selected if the - pattern does not contain any regular expression meta-characters. - - The search is performed using a case-insensitive comparison. The - character encoding of the commit message itself is not respected. The - filter matches on raw UTF-8 byte sequences. - - Regular expression pattern to match. - - A new filter that matches the given expression against the - message body of the commit. - - - - - Includes a commit only if the subfilter does not include the commit. - - - - - Create a filter that negates the result of another filter. - - Filter to negate. - - A filter that does the reverse of a. - - - - - Includes a commit if any subfilters include the same commit. - - Classic shortcut behavior is used, so evaluation of the - method stops as soon as a true - result is obtained. Applications can improve filtering performance by placing - faster filters that are more likely to accept a result earlier in the list. - - - - - Create a filter with two filters, one of which must match. - - First filter to test. - Second filter to test. - - A filter that must match at least one input filter. - - - - - Create a filter around many filters, one of which must match. - - - List of filters to match against. Must contain at least 2 - filters. - - - A filter that must match at least one input filter. - - - - - Create a filter around many filters, one of which must match. - - - List of filters to match against. Must contain at least 2 - filters. - - - A filter that must match at least one input filter. - - - - - Matches only commits with some/all RevFlags already set. - - - - - Create a new filter that tests for a single flag. - - The flag to test. - - Filter that selects only commits with flag . - - - - - Create a new filter that tests all flags in a set. - - Set of flags to test. - - Filter that selects only commits with all flags in . - - - - - Create a new filter that tests all flags in a set. - - Set of flags to test. - filter that selects only commits with all flags in . - - - - - Create a new filter that tests for any flag in a set. - - Set of flags to test. - - Filter that selects only commits with any flag in a. - - - - - Create a new filter that tests for any flag in a set. - - Set of flags to test. - - Filter that selects only commits with any flag in a. - - - - Produces commits for RevWalk to return to applications. - - Implementations of this basic class provide the real work behind RevWalk. - Conceptually a Generator is an iterator or a queue, it returns commits until - there are no more relevant. Generators may be piped/stacked together to - Create a more complex set of operations. - - @see PendingGenerator - @see StartGenerator - - - - Connect the supplied queue to this generator's own free list (if any). - - - Another FIFO queue that wants to share our queue's free list. - - - - - Return the next commit to the application, or the next generator. - - - Next available commit; null if no more are to be returned. - - - - - * Obtain flags describing the output behavior of this generator. - - - - - Commits are sorted by commit date and time, descending. - - - - - Output may have marked on it. - - - - - Output needs . - - - - - Topological ordering is enforced (all children before parents). - - - - - Output may have marked on it. - - - - - Add a commit to the queue. - - This method always adds the commit, even if it is already in the queue or - previously was in the queue but has already been removed. To control - queue admission use . - - Commit to add. - - - Add a commit if it does not have a flag set yet, then set the flag. - - This method permits the application to test if the commit has the given - flag; if it does not already have the flag than the commit is added to - the queue and the flag is set. This later will prevent the commit from - being added twice. - - @param c - commit to add. - @param queueControl - flag that controls admission to the queue. - - - - Add a commit's parents if one does not have a flag set yet. - - This method permits the application to test if the commit has the given - flag; if it does not already have the flag than the commit is added to - the queue and the flag is set. This later will prevent the commit from - being added twice. - - - commit whose parents should be added. - - - flag that controls admission to the queue. - - - - - Remove all entries from this queue. - - - - - Current output flags set for this generator instance. - - - - Create an empty queue. - - - Next block in our chain of blocks; null if we are the last. - - - Our table of queued objects. - - - Next valid entry in {@link #objects}. - - - Next free entry in {@link #objects} for addition at. - - - - Create an empty revision queue. - - - - - Create an empty revision queue. - - - - - Reconfigure this queue to share the same free list as another. - - Multiple revision queues can be connected to the same free list, making - it less expensive for applications to shuttle commits between them. This - method arranges for the receiver to take from / return to the same free - list as the supplied queue. - - Free lists are not thread-safe. Applications must ensure that all queues - sharing the same free list are doing so from only a single thread. - - the other queue we will steal entries from. - - - - Next free entry in for addition at. - - - - - Next valid entry in . - - - - - Our table of queued commits. - - - - - Next block in our chain of blocks; null if we are the last. - - - - - A queue of commits sorted by commit time order. - - - - - Create an empty date queue. - - - - - Peek at the Next commit, without removing it. - - - The Next available commit; null if there are no commits left. - - - - Delays commits to be at least {@link PendingGenerator#OVER_SCAN} late. - - This helps to "fix up" weird corner cases resulting from clock skew, by - slowing down what we produce to the caller we get a better chance to ensure - PendingGenerator reached back far enough in the graph to correctly mark - commits {@link RevWalk#UNINTERESTING} if necessary. - - This generator should appear before {@link FixUninterestingGenerator} if the - lower level {@link #pending} isn't already fully buffered. - - - - A queue of commits in FIFO order. - - - - - Create an empty FIFO queue. - - - - - Insert the commit pointer at the front of the queue. - - - The commit to insert into the queue. - - - - - Filters out commits marked . - - This generator is only in front of another generator that has fully buffered - commits, such that we are called only After the has - exhausted its input queue and given up. It skips over any uninteresting - commits that may have leaked out of the PendingGenerator due to clock skew - being detected in the commit objects. - - - - - Case insensitive key for a . - - - - - Standard Signed-off-by - - - - - Standard Acked-by - - - - - Standard CC - - - - - Create a key for a specific footer line. - - Name of the footer line. - - - - Single line at the end of a message, such as a "Signed-off-by: someone". - - These footer lines tend to be used to represent additional information about - a commit, like the path it followed through reviewers before finally being - accepted into the project's main repository as an immutable commit. - - - - - - - - - Key to test this line's key name against. - - - true if code key.Name.Equals(Key, StringComparison.InvariantCultureIgnoreCase)). - - - - - - Extract the email address (if present) from the footer. - - If there is an email address looking string inside of angle brackets - (e.g. "<a@b>"), the return value is the part extracted from inside the - brackets. If no brackets are found, then is returned - if the value contains an '@' sign. Otherwise, null. - - email address appearing in the value of this footer, or null. - - - - Key name of this footer; that is the text before the ":" on the - line footer's line. The text is decoded according to the commit's - specified (or assumed) character encoding. - - - - - Value of this footer; that is the text after the ":" and any - leading whitespace has been skipped. May be the empty string if - the footer has no value (line ended with ":"). The text is - decoded according to the commit's specified (or assumed) - character encoding. - - - - - A queue of commits in LIFO order. - - - - - Create an empty LIFO queue. - - - - - Computes the merge base(s) of the starting commits. - - This generator is selected if the RevFilter is only - . - - To compute the merge base we assign a temporary flag to each of the starting - commits. The maximum number of starting commits is bounded by the number of - free flags available in the RevWalk when the generator is initialized. These - flags will be automatically released on the next reset of the RevWalk, but - not until then, as they are assigned to commits throughout the history. - - Several internal flags are reused here for a different purpose, but this - should not have any impact as this generator should be run alone, and without - any other generators wrapped around it. - - - - - Specialized subclass of RevWalk to include trees, blobs and tags. - - Unlike RevWalk this subclass is able to remember starting roots that include - annotated tags, or arbitrary trees or blobs. Once commit generation is - complete and all commits have been popped by the application, individual - annotated tag, tree and blob objects can be popped through the additional - method . - - Tree and blob objects reachable from interesting commits are automatically - scheduled for inclusion in the results of , returning - each object exactly once. Objects are sorted and returned according to the - the commits that reference them and the order they appear within a tree. - Ordering can be affected by changing the used to order - the commits that are returned first. - - - - - Indicates a non-RevCommit is in . - - We can safely reuse here for the same value as it - is only set on RevCommit and never has RevCommit - instances inserted into it. - - - - - Create a new revision and object walker for a given repository. - - - The repository the walker will obtain data from. - - - - - Mark an object or commit to start graph traversal from. - - Callers are encouraged to use - instead of , as this method - requires the object to be parsed before it can be added as a root for the - traversal. - - The method will automatically parse an unparsed object, but error - handling may be more difficult for the application to explain why a - RevObject is not actually valid. The object pool of this walker would - also be 'poisoned' by the invalid . - - This method will automatically call - if passed RevCommit instance, or a that directly (or indirectly) - references a . - - - The object to start traversing from. The object passed must be - from this same revision walker. - - - The object supplied is not available from the object - database. This usually indicates the supplied object is - invalid, but the reference was constructed during an earlier - invocation to . - - - The object was not parsed yet and it was discovered during - parsing that it is not actually the type of the instance - passed in. This usually indicates the caller used the wrong - type in a call. - - - A pack file or loose object could not be Read. - - - - - Mark an object to not produce in the output. - - Uninteresting objects denote not just themselves but also their entire - reachable chain, back until the merge base of an uninteresting commit and - an otherwise interesting commit. - - Callers are encouraged to use - instead of , as this method - requires the object to be parsed before it can be added as a root for the - traversal. - - The method will automatically parse an unparsed object, but error - handling may be more difficult for the application to explain why a - RevObject is not actually valid. The object pool of this walker would - also be 'poisoned' by the invalid . - - This method will automatically call - if passed RevCommit instance, or a that directly (or indirectly) - references a . - - - The object to start traversing from. The object passed must be - from this same revision walker. - - - The object supplied is not available from the object - database. This usually indicates the supplied object is - invalid, but the reference was constructed during an earlier - invocation to . - - - The object was not parsed yet and it was discovered during - parsing that it is not actually the type of the instance - passed in. This usually indicates the caller used the wrong - type in a call. - - - A pack file or loose object could not be Read. - - - - - Pop the next most recent object. - - next most recent object; null if traversal is over. - - One or or more of the next objects are not available from the - object database, but were thought to be candidates for - traversal. This usually indicates a broken link. - - - One or or more of the objects in a tree do not match the type indicated. - - - A pack file or loose object could not be Read. - - - - - Verify all interesting objects are available, and reachable. - - Callers should populate starting points and ending points with - and - and then use this method to verify all objects between those two points - exist in the repository and are readable. - - This method returns successfully if everything is connected; it throws an - exception if there is a connectivity problem. The exception message - provides some detail about the connectivity failure. - - - One or or more of the next objects are not available from the - object database, but were thought to be candidates for - traversal. This usually indicates a broken link. - - - One or or more of the objects in a tree do not match the type - indicated. - - - A pack file or loose object could not be Read. - - - - - Get the current object's complete path. - - This method is not very efficient and is primarily meant for debugging - and output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - - Complete path of the current entry, from the root of the - repository. If the current entry is in a subtree there will be at - least one '/' in the returned string. Null if the current entry - has no path, such as for annotated tags or root level trees. - - - - - Default (and first pass) RevCommit Generator implementation for RevWalk. - - This generator starts from a set of one or more commits and process them in - descending (newest to oldest) commit time order. Commits automatically cause - their parents to be enqueued for further processing, allowing the entire - commit graph to be walked. A may be used to select a subset - of the commits and return them to the caller. - - - - Number of additional commits to scan After we think we are done. - - This small buffer of commits is scanned to ensure we didn't miss anything - as a result of clock skew when the commits were made. We need to set our - constant to 1 additional commit due to the use of a pre-increment - operator when accessing the value. - - - Last commit produced to the caller from {@link #Next()}. - - - Number of commits we have remaining in our over-scan allotment. - - Only relevant if there are {@link #UNINTERESTING} commits in the - {@link #_pending} queue. - - - - A binary file, or a symbolic link. - - - - - Create a new blob reference. - - object name for the blob. - - - - Application level mark bit for s. - - - - - Uninteresting by . - - We flag commits as uninteresting if the caller does not want commits - reachable from a commit to . - This flag is always carried into the commit's parents and is a key part - of the "rev-list B --not A" feature; A is marked UNINTERESTING. - - This is a static flag. Its RevWalk is not available. - - - - - Get the revision walk instance this flag was created from. - - - - - Multiple application level mark bits for s. - - - - - Create a set of flags. - - - - - Create a set of flags. - - the set to copy flags from. - - - - Create a set of flags. - - the collection to copy flags from. - - - Sorting strategies supported by {@link RevWalk} and {@link ObjectWalk}. - - - No specific sorting is requested. - - Applications should not rely upon the ordering produced by this strategy. - Any ordering in the output is caused by low level implementation details - and may change without notice. - - - Sort by commit time, descending (newest first, oldest last). - - This strategy can be combined with {@link #TOPO}. - - - Topological sorting (all children before parents). - - This strategy can be combined with {@link #COMMIT_TIME_DESC}. - - - Flip the output into the reverse ordering. - - This strategy can be combined with the others described by this type as - it is usually performed at the very end. - - - Include {@link RevFlag#UNINTERESTING} boundary commits After all others. - In {@link ObjectWalk}, objects associated with such commits (trees, - blobs), and all other objects marked explicitly as UNINTERESTING are also - included. - - A boundary commit is a UNINTERESTING parent of an interesting commit that - was previously output. - - - - An annotated tag. - - - - - Create a new tag reference. - - - Object name for the tag. - - - - - Parse the tagger identity from the raw buffer. - - This method parses and returns the content of the tagger line, After - taking the tag's character set into account and decoding the tagger - name and email address. This method is fairly expensive and produces a - new PersonIdent instance on each invocation. Callers should invoke this - method only if they are certain they will be outputting the result, and - should cache the return value for as long as necessary to use all - information from it. - - - Identity of the tagger (name, email) and the time the tag - was made by the tagger; null if no tagger line was found. - - - - - Parse the complete tag message and decode it to a string. - - This method parses and returns the message portion of the tag buffer, - After taking the tag's character set into account and decoding the buffer - using that character set. This method is a fairly expensive operation and - produces a new string on each invocation. - - - Decoded tag message as a string. Never null. - - - - - Parse the tag message and return the first "line" of it. - - The first line is everything up to the first pair of LFs. This is the - "oneline" format, suitable for output in a single line display. - - This method parses and returns the message portion of the tag buffer, - After taking the tag's character set into account and decoding the buffer - using that character set. This method is a fairly expensive operation and - produces a new string on each invocation. - - - Decoded tag message as a string. Never null. The returned string - does not contain any LFs, even if the first paragraph spanned - multiple lines. Embedded LFs are converted to spaces. - - - - - Parse this tag buffer for display. - - revision walker owning this reference. - parsed tag. - - - - Get a reference to the @object this tag was placed on. - - - Object this tag refers to. - - - - - Get the name of this tag, from the tag header. - - - Name of the tag, according to the tag header. - - - - - A reference to a tree of subtrees/files. - - - - - Create a new tree reference. - - Object name for the tree. - - - - Replaces a 's parents until not colored with - . - - Before a is returned to the caller its parents are updated to - Create a dense DAG. Instead of reporting the actual parents as recorded when - the commit was created the returned commit will reflect the Next closest - commit that matched the revision walker's filters. - - This generator is the second phase of a path limited revision walk and - assumes it is receiving RevCommits from , - After they have been fully buffered by . The full - buffering is necessary to allow the simple loop used within our own - to pull completely through a strand of - colored commits and come up with a simplification - that makes the DAG dense. Not fully buffering the commits first would cause - this loop to abort early, due to commits not being parsed and colored - correctly. - - - - - - First phase of a path limited revision walk. - - This filter is ANDed to evaluate After all other filters and ties the - configured into the revision walking process. - - Each commit is differenced concurrently against all of its parents to look - for tree entries that are interesting to the TreeFilter. If none are found - the commit is colored with , allowing a later pass - implemented by to remove those colored commits from - the DAG. - - - - - - Initial RevWalk generator that bootstraps a new walk. - - Initially RevWalk starts with this generator as its chosen implementation. - The first request for a from the - instance calls to our method, and we replace ourselves with - the best implementation available based upon the - current configuration. - - - - - Sorts commits in topological order. - - - - - Create a new sorter and completely spin the generator. - - When the constructor completes the supplied generator will have no - commits remaining, as all of the commits will be held inside of this - generator's internal buffer. - - - Generator to pull all commits out of, and into this buffer. - - - - - Base helper class for implementing operations connections. - - - - - Represent connection for operation on a remote repository. - - Currently all operations on remote repository (fetch and push) provide - information about remote refs. Every connection is able to be closed and - should be closed - this is a connection client responsibility. - - - - - Get a single advertised ref by name. - - The name supplied should be valid ref name. To get a peeled value for a - ref (aka refs/tags/v1.0^{}) use the base name (without - the ^{} suffix) and look at the peeled object id. - - name of the ref to obtain. - the requested ref; null if the remote did not advertise this ref. - - - - Close any resources used by this connection. - - If the remote repository is contacted by a network socket this method - must close that network socket, disconnecting the two peers. If the - remote repository is actually local (same system) this method must close - any open file handles used to read the "remote" repository. - - - - Get the complete map of refs advertised as available for fetching or - pushing. - - Returns available/advertised refs: map of refname to ref. Never null. Not - modifiable. The collection can be empty if the remote side has no - refs (it is an empty/newly created repository). - - - - - Get the complete list of refs advertised as available for fetching or - pushing. - - The returned refs may appear in any order. If the caller needs these to - be sorted, they should be copied into a new array or List and then sorted - by the caller as necessary. - - Returns available/advertised refs. Never null. Not modifiable. The - collection can be empty if the remote side has no refs (it is an - empty/newly created repository). - - - - - Denote the list of refs available on the remote repository. - - Implementors should invoke this method once they have obtained the refs - that are available from the remote repository. - - - the complete list of refs the remote has to offer. This map - will be wrapped in an unmodifiable way to protect it, but it - does not get copied. - - - - - Helper method for ensuring one-operation per connection. Check whether - operation was already marked as started, and mark it as started. - - - - - Base helper class for fetch connection implementations. Provides some common - typical structures and methods used during fetch connection. - - Implementors of fetch over pack-based protocols should consider using - instead. - - - - - Lists known refs from the remote and copies objects of selected refs. - - A fetch connection typically connects to the git-upload-pack - service running where the remote repository is stored. This provides a - one-way object transfer service to copy objects from the remote repository - into this local repository. - - Instances of a FetchConnection must be created by a that - implements a specific object transfer protocol that both sides of the - connection understand. - - FetchConnection instances are not thread safe and may be accessed by only one - thread at a time. - - - - - Fetch objects we don't have but that are reachable from advertised refs. -

- Only one call per connection is allowed. Subsequent calls will result in - . -

- - Implementations are free to use network connections as necessary to - efficiently (for both client and server) transfer objects from the remote - repository into this repository. When possible implementations should - avoid replacing/overwriting/duplicating an object already available in - the local destination repository. Locally available objects and packs - should always be preferred over remotely available objects and packs. - should be honored if applicable. -
- - progress monitor to inform the end-user about the amount of - work completed, or to indicate cancellation. Implementations - should poll the monitor at regular intervals to look for - cancellation requests from the user. - - - one or more refs advertised by this connection that the caller - wants to store locally. - - - additional objects known to exist in the destination - repository, especially if they aren't yet reachable by the ref - database. Connections should take this set as an addition to - what is reachable through all Refs, not in replace of it. - -
- - - Set the lock message used when holding a pack out of garbage collection. - - Callers that set a lock message must ensure they call - after - , even if an exception - was thrown, and release the locks that are held. - - message to use when holding a pack in place. - - - - Did the last get tags? - - Some Git aware transports are able to implicitly grab an annotated tag if - or was selected and - the object the tag peels to (references) was transferred as part of the - last call. If it is - possible for such tags to have been included in the transfer this method - returns true, allowing the caller to attempt tag discovery. - - By returning only true/false (and not the actual list of tags obtained) - the transport itself does not need to be aware of whether or not tags - were included in the transfer. - - Returns true if the last fetch call implicitly included tag objects; - false if tags were not implicitly obtained. - - - - - Did the last validate - graph? - - Some transports walk the object graph on the client side, with the client - looking for what objects it is missing and requesting them individually - from the remote peer. By virtue of completing the fetch call the client - implicitly tested the object connectivity, as every object in the graph - was either already local or was requested successfully from the peer. In - such transports this method returns true. - - Some transports assume the remote peer knows the Git object graph and is - able to supply a fully connected graph to the client (although it may - only be transferring the parts the client does not yet have). Its faster - to assume such remote peers are well behaved and send the correct - response to the client. In such transports this method returns false. - - Returns true if the last fetch had to perform a connectivity check on the - client side in order to succeed; false if the last fetch assumed - the remote peer supplied a complete graph. - - - - - All locks created by the last call. - - Returns collection (possibly empty) of locks created by the last call to - fetch. The caller must release these after refs are updated in - order to safely permit garbage collection. - - - - - Implementation of - without checking for multiple fetch. - - as in - as in - as in - - - - Default implementation of - - returning false. - - - - - Base helper class for pack-based operations implementations. Provides partial - implementation of pack-protocol - refs advertising and capabilities support, - and some other helper methods. - - - - - The repository this transport fetches into, or pushes out of. - - - - - Remote repository location. - - - - - A transport connected to . - - - - - Buffered output stream sending to the remote. - - - - - Buffered input stream reading from the remote. - - - - - Packet line decoder around . - - - - - Packet line encoder around . - - - - - Send before closing ? - - - - - Capability tokens advertised by the remote side. - - - - - Extra objects the remote has, but which aren't offered as refs. - - - - - Create an exception to indicate problems finding a remote repository. The - caller is expected to throw the returned exception. - - Subclasses may override this method to provide better diagnostics. - - - a TransportException saying a repository cannot be found and - possibly why. - - - - - Fetch implementation using the native Git pack transfer service. - - This is the canonical implementation for transferring objects from the remote - repository to the local repository by talking to the 'git-upload-pack' - service. Objects are packed on the remote side into a pack file and then sent - down the pipe to us. - - This connection requires only a bi-directional pipe or socket, and thus is - easily wrapped up into a local process pipe, anonymous TCP socket, or a - command executed through an SSH tunnel. - - Concrete implementations should just call - and - methods in constructor or before any use. They - should also handle resources releasing in method if needed. - - - - - Maximum number of 'have' lines to send before giving up. - - During we send at most this many - commits to the remote peer as 'have' lines without an ACK response before - we give up. - - - - - Amount of data the client sends before starting to read. - - Any output stream given to the client must be able to buffer this many - bytes before the client will stop writing and start reading from the - input stream. If the output stream blocks before this many bytes are in - the send queue, the system will deadlock. - - - - - All commits that are immediately reachable by a local ref. - - - - - Marks an object as having all its dependencies. - - - - - Marks a commit known to both sides of the connection. - - - - - Marks a commit listed in the advertised refs. - - - - - Parses a section of the configuration into an application model object. - - Instances must implement hashCode and equals such that model objects can - be cached by using the as a key of a - Dictionary. - - As the itself is used as the key of the internal - Dictionary applications should be careful to ensure the SectionParser key - does not retain unnecessary application state which may cause memory to - be held longer than expected. - - type of the application model created by the parser. - - - - Git style .config, .gitconfig, .gitmodules file. - - - - - Immutable current state of the configuration data. - - This state is copy-on-write. It should always contain an immutable list - of the configuration keys/values. - - - - Magic value indicating a missing entry. - This value is tested for reference equality in some contexts, so we - must ensure it is a special copy of the empty string. It also must - be treated like the empty string. - - - - Create a configuration with no default fallback. - - - - - Create an empty configuration with a fallback for missing keys. - - - the base configuration to be consulted when a key is missing - from this configuration instance. - - - - - Escape the value before saving - - The value to escape. - The escaped value. - - - - Obtain an integer value from the configuration. - - Section the key is grouped within. - Name of the key to get. - - Default value to return if no value was present. - - - An integer value from the configuration, or . - - - - - Obtain an integer value from the configuration. - - Section the key is grouped within. - - Subsection name, such a remote or branch name. - - Name of the key to get. - - Default value to return if no value was present. - - An integer value from the configuration, or . - - - - - Obtain an integer value from the configuration. - - Section the key is grouped within. - - Subsection name, such a remote or branch name. - - Name of the key to get. - - Default value to return if no value was present. - - - An integer value from the configuration, or . - - - - - Get a boolean value from the git config. - - Section the key is grouped within. - Name of the key to get. - - Default value to return if no value was present. - - - True if any value or is true, false - for missing or explicit false. - - - - - Get a boolean value from the git config. - - Section the key is grouped within. - - Subsection name, such a remote or branch name. - - Name of the key to get. - - Default value to return if no value was present. - - - True if any value or defaultValue is true, false for missing or - explicit false. - - - - - Get string value. - - The section. - The subsection for the value. - The key name. - A value from git config. - - - - Get a list of string values - - If this instance was created with a base, the base's values are returned - first (if any). - - The section. - The subsection for the value. - The key name. - Array of zero or more values from the configuration. - - - Section to search for. - set of all subsections of specified section within this - configuration and its base configuration; may be empty if no - subsection exists. - - - - - Obtain a handle to a parsed set of configuration values. - - - Parser which can create the model if it is not already - available in this configuration file. The parser is also used - as the key into a cache and must obey the hashCode and equals - contract in order to reuse a parsed model. - - - The parsed object instance, which is cached inside this config. - - Type of configuration model to return. - - - - Remove a cached configuration object. - - If the associated configuration object has not yet been cached, this - method has no effect. - - Parser used to obtain the configuration object. - - - - - Add or modify a configuration value. The parameters will result in a - configuration entry like this. - -
-            [section "subsection"]
-            name = value
-            
-
- Section name, e.g "branch" - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - Parameter value. -
- - - Add or modify a configuration value. The parameters will result in a - configuration entry like this. - -
-            [section "subsection"]
-            name = value
-            
-
- Section name, e.g "branch" - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - Parameter value. -
- - - Add or modify a configuration value. The parameters will result in a - configuration entry like this. - -
-            [section "subsection"]
-            name = value
-            
-
- Section name, e.g "branch" - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - Parameter value. -
- - - Add or modify a configuration value. The parameters will result in a - configuration entry like this. - -
-            [section "subsection"]
-            name = value
-            
-
- Section name, e.g "branch" - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - Parameter value. -
- - - Remove a configuration value. - - Section name, e.g "branch". - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - - - - Remove all configuration values under a single section. - - section name, e.g "branch" - optional subsection value, e.g. a branch name - - - - Set a configuration value. - -
-            [section "subsection"]
-            name = value
-            
-
Section name, e.g "branch". - Optional subsection value, e.g. a branch name. - Parameter name, e.g. "filemode". - List of zero or more values for this key. -
- - - This configuration, formatted as a Git style text file. - - - - - Clear this configuration and reset to the contents of the parsed string. - - - Git style text file listing configuration properties. - - - The text supplied is not formatted correctly. No changes were - made to this. - - - - The configuration file entry. - - - - - The key name. - - - - - The text content before entry. - - - - - The section name for the entry. - - - - - Subsection name. - - - - - The text content after entry. - - - - - The value - - - - - Parses a section of the configuration into an application model object. - - Instances must implement hashCode and equals such that model objects can - be cached by using the as a key of a - Dictionary. - - As the itself is used as the key of the internal - Dictionary applications should be careful to ensure the SectionParser key - does not retain unnecessary application state which may cause memory to - be held longer than expected. - - type of the application model created by the parser. - - - - Create a model object from a configuration. - - - The configuration to read values from. - - The application model instance. - - - - Push implementation using the native Git pack transfer service. - - This is the canonical implementation for transferring objects to the remote - repository from the local repository by talking to the 'git-receive-pack' - service. Objects are packed on the local side into a pack file and then sent - to the remote repository. - - This connection requires only a bi-directional pipe or socket, and thus is - easily wrapped up into a local process pipe, anonymous TCP socket, or a - command executed through an SSH tunnel. - - This implementation honors option. - - Concrete implementations should just call - and - methods in constructor or before any use. They - should also handle resources releasing in method if needed. - - - - - Lists known refs from the remote and sends objects to the remote. - - A push connection typically connects to the git-receive-pack - service running where the remote repository is stored. This provides a - one-way object transfer service to copy objects from the local repository - into the remote repository, as well as a way to modify the refs stored by the - remote repository. - - Instances of a PushConnection must be created by a {@link Transport} that - implements a specific object transfer protocol that both sides of the - connection understand. - - PushConnection instances are not thread safe and may be accessed by only one - thread at a time. - - - - - Pushes to the remote repository basing on provided specification. This - possibly result in update/creation/deletion of refs on remote repository - and sending objects that remote repository need to have a consistent - objects graph from new refs. - - Only one call per connection is allowed. Subsequent calls will result in - . - - Implementation may use local repository to send a minimum set of objects - needed by remote repository in efficient way. - should be honored if applicable. - refUpdates should be filled with information about status of each update. - - - progress monitor to update the end-user about the amount of - work completed, or to indicate cancellation. Implementors - should poll the monitor at regular intervals to look for - cancellation requests from the user. - - - map of remote refnames to remote refs update - specifications/statuses. Can't be empty. This indicate what - refs caller want to update on remote side. Only refs updates - with should passed. - Implementation must ensure that and appropriate status with - optional message should be set during call. No refUpdate with - or - - can be leaved by implementation after return from this call. - - - Objects could not be copied due to a network failure, - critical protocol error, or error on remote side, or - connection was already used for push - new connection must be - created. Non-critical errors concerning only isolated refs - should be placed in refUpdates. - - - - - Time in milliseconds spent transferring the pack data. - - - - - Fetch connection for bundle based classes. It used by - instances of - - - - - Creates a Git bundle file, for sneaker-net transport to another system. - - Bundles generated by this class can be later read in from a file URI using - the bundle transport, or from an application controlled buffer by the more - generic . - - Applications creating bundles need to call one or more include - calls to reflect which objects should be available as refs in the bundle for - the other side to fetch. At least one include is required to create a valid - bundle file, and duplicate names are not permitted. - - Optional assume calls can be made to declare commits which the - recipient must have in order to fetch from the bundle file. Objects reachable - from these assumed commits can be used as delta bases in order to reduce the - overall bundle size. - - - - - Create a writer for a bundle. - - repository where objects are stored. - operations progress monitor. - - - - Include an object (and everything reachable from it) in the bundle. - - - name the recipient can discover this object as from the - bundle's list of advertised refs . The name must be a valid - ref format and must not have already been included in this - bundle writer. - - - object to pack. Multiple refs may point to the same object. - - - - - Include a single ref (a name/object pair) in the bundle. - This is a utility function for: - include(r.getName(), r.getObjectId()). - - the ref to include. - - - - Assume a commit is available on the recipient's side. - - In order to fetch from a bundle the recipient must have any assumed - commit. Each assumed commit is explicitly recorded in the bundle header - to permit the recipient to validate it has these objects. - - - the commit to assume being available. This commit should be - parsed and not disposed in order to maximize the amount of - debugging information available in the bundle stream. - - - - Generate and write the bundle to the output stream. - - This method can only be called once per BundleWriter instance. - - @param os - the stream the bundle is written to. If the stream is not - buffered it will be buffered by the writer. Caller is - responsible for closing the stream. - @throws IOException - an error occurred reading a local object's data to include in - the bundle, or writing compressed object data to the output - stream. - - - - Basic daemon for the anonymous git:// transport protocol. - - - - - Configure a daemon to listen on any available network port. - - - - - Configure a new daemon for the specified network address. - - - Address to listen for connections on. If null, any available - port will be chosen on all network interfaces. - - - - * Lookup a supported service so it can be reconfigured. - - - Name of the service; e.g. "receive-pack"/"git-receive-pack" or - "upload-pack"/"git-upload-pack". - - - The service; null if this daemon implementation doesn't support - the requested service type. - - - - - Add a single repository to the set that is exported by this daemon. - - The existence (or lack-thereof) of git-daemon-export-ok is - ignored by this method. The repository is always published. - - - name the repository will be published under. - - the repository instance. - - - - Recursively export all Git repositories within a directory. - - - the directory to export. This directory must not itself be a - git repository, but any directory below it which has a file - named git-daemon-export-ok will be published. - - - - - Start this daemon on a background thread. - - - the server socket could not be opened. - - - the daemon is already running. - - - - - true if this daemon is receiving connections. - - - - - Stop this daemon. - - - - - Loads known hosts and private keys from $HOME/.ssh. - - This is the default implementation used by JGit and provides most of the - compatibility necessary to match OpenSSH, a popular implementation of SSH - used by C Git. - - If user interactivity is required by SSH (e.g. to obtain a password), the - connection will immediately fail. - - - - - The base session factory that loads known hosts and private keys from - $HOME/.ssh. - - This is the default implementation used by JGit and provides most of the - compatibility necessary to match OpenSSH, a popular implementation of SSH - used by C Git. - - The factory does not provide UI behavior. Override the method - - to supply appropriate {@link UserInfo} to the session. - - - - - Creates and destroys SSH connections to a remote system. - - Different implementations of the session factory may be used to control - communicating with the end-user as well as reading their personal SSH - configuration settings, such as known hosts and private keys. - - A must be returned to the factory that created it. Callers - are encouraged to retain the SshSessionFactory for the duration of the period - they are using the Session. - - - - - Get the currently configured factory. - - A factory is always available. By default the factory will read from the - user's $HOME/.ssh and assume OpenSSH compatibility. - - - - - Change the JVM-wide factory to a different implementation. - - - factory for future sessions to be created through. If null the - default factory will be restored. - - - - - Open (or reuse) a session to a host. - - A reasonable UserInfo that can interact with the end-user (if necessary) - is installed on the returned session by this method. - - The caller must connect the session by invoking connect() - if it has not already been connected. - - - username to authenticate as. If null a reasonable default must - be selected by the implementation. This may be - System.getProperty("user.name"). - - - optional user account password or passphrase. If not null a - UserInfo that supplies this value to the SSH library will be - configured. - - hostname (or IP address) to connect to. Must not be null. - - port number the server is listening for connections on. May be <= - 0 to indicate the IANA registered port of 22 should be used. - - a session that can contact the remote host. - - - - Close (or recycle) a session to a host. - - - a session previously obtained from this factory's - method. - - - - - Create a new JSch session for the requested address. - - host configuration - login to authenticate as. - server name to connect to. - port number of the SSH daemon (typically 22). - new session instance, but otherwise unconfigured. - - - - Provide additional configuration for the session based on the host - information. This method could be used to supply {@link UserInfo}. - - host configuration - session to configure - - - - Obtain the JSch used to create new sessions. - - host configuration - the JSch instance to use. - - - - Returns the new default JSch implementation - - the new default JSch implementation - - - Transport we will fetch over. - - - List of things we want to fetch from the remote repository. - - - Set of refs we will actually wind up asking to obtain. - - - Objects we know we have locally. - - - Updates to local tracking branches (if any). - - - Records to be recorded into FETCH_HEAD. - - - - Final status after a successful fetch from a remote repository. - - - - - Class holding result of operation on remote repository. This includes refs - advertised by remote repo and local tracking refs updates. - - - - - Get a single advertised ref by name. - - The name supplied should be valid ref name. To get a peeled value for a - ref (aka refs/tags/v1.0^{}) use the base name (without - the ^{} suffix) and look at the peeled object id. - - name of the ref to obtain. - the requested ref; null if the remote did not advertise this ref. - - - - Get the status for a specific local tracking ref update. - - name of the local ref (e.g. "refs/remotes/origin/master"). - - status of the local ref; null if this local ref was not touched - during this operation. - - - - - Get the URI this result came from. - - Each transport instance connects to at most one URI at any point in time. - - Returns the URI describing the location of the remote repository. - - - - - Get the complete list of refs advertised by the remote. - - The returned refs may appear in any order. If the caller needs these to - be sorted, they should be copied into a new array or List and then sorted - by the caller as necessary. - - Returns available/advertised refs. Never null. Not modifiable. The - collection can be empty if the remote side has no refs (it is an - empty/newly created repository). - - - - - Get the status of all local tracking refs that were updated. - - - unmodifiable collection of local updates. Never null. Empty if - there were no local tracking refs updated. - - - - - The base class for transports that use HTTP as underlying protocol. This class - allows customizing HTTP connection settings. - - - - - Connects two Git repositories together and copies objects between them. - - A transport can be used for either fetching (copying objects into the - caller's repository from the remote repository) or pushing (copying objects - into the remote repository from the caller's repository). Each transport - implementation is responsible for the details associated with establishing - the network connection(s) necessary for the copy, as well as actually - shuffling data back and forth. - - Transport instances and the connections they Create are not thread-safe. - Callers must ensure a transport is accessed by only one thread at a time. - - - - - Default setting for option. - - - - - Default setting for option. - - - - - Open a new transport instance to connect two repositories. - - This method assumes . - - existing local repository. - - location of the remote repository - may be URI or remote - configuration name. - - - the new transport instance. Never null. In case of multiple URIs - in remote configuration, only the first is chosen. - - - - - Open a new transport instance to connect two repositories. - - existing local repository. - location of the remote repository - may be URI or remote configuration name. - - planned use of the returned Transport; the URI may differ - based on the type of connection desired. - - - the new transport instance. Never null. In case of multiple URIs - in remote configuration, only the first is chosen. - - - - - Open new transport instances to connect two repositories. - - This method assumes . - - existing local repository. - - location of the remote repository - may be URI or remote - configuration name. - - - the list of new transport instances for every URI in remote - configuration. - - - - - Open new transport instances to connect two repositories. - - existing local repository. - - location of the remote repository - may be URI or remote - configuration name. - - - planned use of the returned Transport; the URI may differ - based on the type of connection desired. - - - the list of new transport instances for every URI in remote - configuration. - - - - - Open a new transport instance to connect two repositories. - - This method assumes . - - existing local repository. - - configuration describing how to connect to the remote - repository. - - - the new transport instance. Never null. In case of multiple URIs - in remote configuration, only the first is chosen. - - - - - Open a new transport instance to connect two repositories. - - existing local repository. - - configuration describing how to connect to the remote - repository. - - - planned use of the returned Transport; the URI may differ - based on the type of connection desired. - - - - - - Open a new transport instance to connect two repositories. - - This method assumes . - - existing local repository. - - configuration describing how to connect to the remote - repository. - - - the list of new transport instances for every URI in remote - configuration. - - - - - Open new transport instances to connect two repositories. - - existing local repository. - - configuration describing how to connect to the remote - repository. - - - planned use of the returned Transport; the URI may differ - based on the type of connection desired. - - - the list of new transport instances for every URI in remote - configuration. - - - - - Open a new transport instance to connect two repositories. - - existing local repository. - location of the remote repository. - the new transport instance. Never null. - - - - Convert push remote refs update specification from form - to . Conversion expands wildcards by matching - source part to local refs. expectedOldObjectId in RemoteRefUpdate is - always set as null. Tracking branch is configured if RefSpec destination - matches source of any fetch ref spec for this transport remote - configuration. - - local database. - collection of RefSpec to convert. - - fetch specifications used for finding localtracking refs. May - be null or empty collection. - - collection of set up . - - - - Specification for fetch or push operations, to fetch or push all tags. - Acts as --tags. - - - - - Specification for push operation, to push all refs under refs/heads. Acts - as --all - - - - - The repository this transport fetches into, or pushes out of. - - - - - The URI used to create this transport. - - - - - Name of the upload pack program, if it must be executed. - - - - - Specifications to apply during fetch. - - - - - How should handle tags. - - We default to so as to avoid fetching annotated - tags during one-shot fetches used for later merges. This prevents - dragging down tags from repositories that we do not have established - tracking branches for. If we do not track the source repository, we most - likely do not care about any tags it publishes. - - - - - Should fetch request thin-pack if remote repository can produce it. - - - - - Name of the receive pack program, if it must be executed. - - - - - Specifications to apply during push. - - - - - Should push produce thin-pack when sending objects to remote repository. - - - - - Should push just check for operation result, not really push. - - - - - Should an incoming (fetch) transfer validate objects? - - - - - Should refs no longer on the source be pruned from the destination? - - - - - Timeout in seconds to wait before aborting an IO read or write. - - - - - Create a new transport instance. - - - the repository this instance will fetch into, or push out of. - This must be the repository passed to - . - - - the URI used to access the remote repository. This must be the - URI passed to . - - - - - Apply provided remote configuration on this transport. - - configuration to apply on this transport. - - - - Fetch objects and refs from the remote repository to the local one. - - This is a utility function providing standard fetch behavior. Local - tracking refs associated with the remote repository are automatically - updated if this transport was created from a with - fetch RefSpecs defined. - - - progress monitor to inform the user about our processing - activity. Must not be null. Use if - progress updates are not interesting or necessary. - - - specification of refs to fetch locally. May be null or the - empty collection to use the specifications from the - RemoteConfig. Source for each RefSpec can't be null. - - information describing the tracking refs updated. - - - - Push objects and refs from the local repository to the remote one. - - This is a utility function providing standard push behavior. It updates - remote refs and send there necessary objects according to remote ref - update specification. After successful remote ref update, associated - locally stored tracking branch is updated if set up accordingly. Detailed - operation result is provided after execution. - - For setting up remote ref update specification from ref spec, see helper - method , predefined refspecs - (, ) or consider using - directly for more possibilities. - - When is true, result of this operation is just - estimation of real operation result, no real action is performed. - - - progress monitor to inform the user about our processing - activity. Must not be null. Use if - progress updates are not interesting or necessary. - - - specification of refs to push. May be null or the empty - collection to use the specifications from the RemoteConfig - converted by . No - more than 1 RemoteRefUpdate with the same remoteName is - allowed. These objects are modified during this call. - - - information about results of remote refs updates, tracking refs - updates and refs advertised by remote repository. - - - - - Convert push remote refs update specification from form - to . Conversion expands wildcards by matching - source part to local refs. expectedOldObjectId in RemoteRefUpdate is - always set as null. Tracking branch is configured if RefSpec destination - matches source of any fetch ref spec for this transport remote - configuration. - - Conversion is performed for context of this transport (database, fetch - specifications). - - collection of RefSpec to convert. - collection of set up . - - - - Begins a new connection for fetching from the remote repository. - - a fresh connection to fetch from the remote repository. - - - - Begins a new connection for pushing into the remote repository. - - a fresh connection to push into the remote repository. - - - - Close any resources used by this transport. - - If the remote repository is contacted by a network socket this method - must close that network socket, disconnecting the two peers. If the - remote repository is actually local (same system) this method must close - any open file handles used to read the "remote" repository. - - - - - Get the URI this transport connects to. - - Each transport instance connects to at most one URI at any point in time. - - Returns the URI describing the location of the remote repository. - - - - - name of the remote executable providing upload-pack service (typically "git-upload-pack"). - - - - - description of how annotated tags should be treated during fetch. - - - - - thin-pack preference for fetch operation. Default setting is: . - - - - - true to enable checking received objects; false to assume all received objects are valid. - - - - - remote executable providing receive-pack service for pack transports. - Default setting is: - - - - - thin-pack preference for push operation. Default setting is: . - true when push should produce thin-pack in pack transports; false when it shouldn't. - - - - - Whether or not to remove refs which no longer exist in the source. - - If true, refs at the destination repository (local for fetch, remote for - push) are deleted if they no longer exist on the source side (remote for - fetch, local for push). - - False by default, as this may cause data to become unreachable, and - eventually be deleted on the next GC. - - - - - true if push operation should just check for possible result and - not really update remote refs, false otherwise - when push should - act normally. - - - - - number of seconds to wait (with no data transfer occurring) - before aborting an IO read or write operation with this - remote. - - - - - Type of operation a Transport is being opened for. - - - - - Transport is to fetch objects locally. - - - - - Transport is to push objects remotely. - - - - - Create a new transport instance. - - - the repository this instance will fetch into, or push out of. - This must be the repository passed to - - - The URI used to access the remote repository. This must be the - URI passed to . - - - - - Indexes Git pack files for local use. - - - - - Progress message when reading raw data from the pack. - - - - - Progress message when computing names of delta compressed objects. - - - - - Size of the internal stream buffer. - - If callers are going to be supplying IndexPack a BufferedInputStream they - should use this buffer size as the size of the buffer for that - BufferedInputStream, and any other its may be wrapping. This way the - buffers will cascade efficiently and only the IndexPack buffer will be - receiving the bulk of the data stream. - - - - - Create an index pack instance to load a new pack into a repository. - - The received pack data and generated index will be saved to temporary - files within the repository's objects directory. To use the - data contained within them call once the - indexing is complete. - - the repository that will receive the new pack. - - stream to read the pack data from. If the stream is buffered - use as the buffer size for the stream. - - a new index pack instance. - - - - Object database used for loading existing objects - - - - - If this is the last byte of the original checksum. - - - - - Create a new pack indexer utility. - - - - stream to read the pack data from. If the stream is buffered - use as the buffer size for the stream. - - - - - - Set the pack index file format version this instance will create. - - - the version to write. The special version 0 designates the - oldest (most compatible) format available for the objects. - - - - - Configure this index pack instance to make a thin pack complete. - - Thin packs are sometimes used during network transfers to allow a delta - to be sent without a base object. Such packs are not permitted on disk. - They can be fixed by copying the base object onto the end of the pack. - - true to enable fixing a thin pack. - - - - Configure this index pack instance to keep an empty pack. - - By default an empty pack (a pack with no objects) is not kept, as doing - so is completely pointless. With no objects in the pack there is no data - stored by it, so the pack is unnecessary. - - true to enable keeping an empty pack. - - - - Configure this index pack instance to keep track of new objects. - - By default an index pack doesn't save the new objects that were created - when it was instantiated. Setting this flag to {@code true} allows the - caller to use {@link #getNewObjectIds()} to retrieve that list. - - True to enable keeping track of new objects. - - - - Configure this index pack instance to keep track of the objects assumed - for delta bases. - - By default an index pack doesn't save the objects that were used as delta - bases. Setting this flag to {@code true} will allow the caller to - use getBaseObjectIds() to retrieve that list. - - True to enable keeping track of delta bases. - - - the new objects that were sent by the user - - - the set of objects the incoming pack assumed for delta purposes - - - - Configure the checker used to validate received objects. - - Usually object checking isn't necessary, as Git implementations only - create valid objects in pack files. However, additional checking may be - useful if processing data from an untrusted source. - - the checker instance; null to disable object checking. - - - - Configure the checker used to validate received objects. - - Usually object checking isn't necessary, as Git implementations only - create valid objects in pack files. However, additional checking may be - useful if processing data from an untrusted source. - - This is shorthand for: - -
-            setObjectChecker(on ? new ObjectChecker() : null);
-            
-
- true to enable the default checker; false to disable it. -
- - - Consume data from the input stream until the packfile is indexed. - - progress feedback - - - - Cleanup all resources associated with our input parsing. - - - - - Read one entire object or delta from the input. - - - - Current position of within the entire file. - - - - Consume exactly one byte from the buffer and return it. - - - - - Consume exactly one byte from the buffer and return it. - - - - - Consume cnt byte from the buffer. - - - - - Ensure at least need bytes are available in in . - - - - - Ensure at least need bytes are available in in . - - - - - Store consumed bytes in up to . - - - - - Rename the pack to it's final name and location and open it. - - If the call completes successfully the repository this IndexPack instance - was created with will have the objects in the pack available for reading - and use, without needing to scan for packs. - - - - - Rename the pack to it's final name and location and open it. - - If the call completes successfully the repository this IndexPack instance - was created with will have the objects in the pack available for reading - and use, without needing to scan for packs. - - - message to place in the pack-*.keep file. If null, no lock - will be created, and this method returns null. - - the pack lock object, if lockMessage is not null. - - - Marker interface an object transport using Git pack transfers. - - Implementations of PackTransport setup connections and move objects back and - forth by creating pack files on the source side and indexing them on the - receiving side. - - @see BasePackFetchConnection - @see BasePackPushConnection - - - - A simple no-op hook. - - - - - Hook invoked by {@link ReceivePack} after all updates are executed. - - The hook is called after all commands have been processed. Only commands with - a status of {@link ReceiveCommand.Result#OK} are passed into the hook. To get - all commands within the hook, see {@link ReceivePack#getAllCommands()}. - - Any post-receive hook implementation should not update the status of a - command, as the command has already completed or failed, and the status has - already been returned to the client. - - Hooks should execute quickly, as they block the server and the client from - completing the connection. - - - - - Invoked after all commands are executed and status has been returned. - - - the process handling the current receive. Hooks may obtain - details about the destination repository through this handle. - - - unmodifiable set of successfully completed commands. May be - the empty set. - - - - - A simple no-op hook. - - - - - Hook invoked by before any updates are executed. - - The hook is called with any commands that are deemed valid after parsing them - from the client and applying the standard receive configuration options to - them: -
    -
  • receive.denyDenyDeletes
  • -
  • receive.denyNonFastForwards
  • -
- This means the hook will not receive a non-fast-forward update command if - denyNonFastForwards is set to true in the configuration file. To get all - commands within the hook, see . - - As the hook is invoked prior to the commands being executed, the hook may - choose to block any command by setting its result status with - . - - The hook may also choose to perform the command itself (or merely pretend - that it has performed the command), by setting the result status to - . - - Hooks should run quickly, as they block the caller thread and the client - process from completing. - - Hooks may send optional messages back to the client via methods on - . Implementors should be aware that not all network - transports support this output, so some (or all) messages may simply be - discarded. These messages should be advisory only. -
-
- - - Invoked just before commands are executed. - - See the class description for how this method can impact execution. - - - the process handling the current receive. Hooks may obtain - details about the destination repository through this handle. - - - unmodifiable set of valid commands still pending execution. - May be the empty set. - - - - - Marker interface for transports that supports fetching from a git bundle - (sneaker-net object transport). - - Push support for a bundle is complex, as one does not have a peer to - communicate with to decide what the peer already knows. So push is not - supported by the bundle transport. - - - - - Marker interface for an object transport walking transport. - - Implementations of WalkTransport transfer individual objects one at a time - from the loose objects directory, or entire packs if the source side does not - have the object as a loose object. - - WalkTransports are not as efficient as {@link PackTransport} instances, but - can be useful in situations where a pack transport is not acceptable. - - see - - - - - Simple Map<long,Object> helper for . - - type of the value instance - - - - Simple configuration parser for the OpenSSH ~/.ssh/config file. - - Since JSch does not (currently) have the ability to parse an OpenSSH - configuration file this is a simple parser to read that file and make the - critical options available to {@link SshSessionFactory}. - - - - - IANA assigned port number for SSH. - - - - - Obtain the user's configuration data. - - The configuration file is always returned to the caller, even if no file - exists in the user's home directory at the time the call was made. Lookup - requests are cached and are automatically updated if the user modifies - the configuration file since the last time it was cached. - - a caching reader of the user's configuration file. - - - - The user's home directory, as key files may be relative to here. - - - - - The .ssh/config file we read and monitor for updates. - - - - - Modification time of when loaded. - - - - - Cached entries read out of the configuration file. - - - - - Locate the configuration for a specific host request. - - - the name the user has supplied to the SSH tool. This may be a - real host name, or it may just be a "Host" block in the - configuration file. - - configuration for the requested name. Never null. - - - - Configuration of one "Host" block in the configuration file. - - If returned from some or all of the - properties may not be populated. The properties which are not populated - should be defaulted by the caller. - - When returned from any wildcard - entries which appear later in the configuration file will have been - already merged into this block. - - - - - - the value StrictHostKeyChecking property, the valid values - are "yes" (unknown hosts are not accepted), "no" (unknown - hosts are always accepted), and "ask" (user should be asked - before accepting the host) - - - - the real IP address or host name to connect to; never null. - - - the real port number to connect to; never 0. - - - - path of the private key file to use for authentication; null - if the caller should use default authentication strategies. - - - - the real user name to connect as; never null. - - - - the preferred authentication methods, separated by commas if - more than one authentication method is preferred. - - - - - true if batch (non-interactive) mode is preferred for this - host connection. - - - - - Description of an object stored in a pack file, including offset. - - When objects are stored in packs Git needs the ObjectId and the offset - (starting position of the object data) to perform random-access reads of - objects from the pack. This extension of ObjectId includes the offset. - - - - - - Create a new structure to remember information about an object. - - - The identity of the object the new instance tracks. - - - - - offset in pack when object has been already written, or 0 if it - has not been written yet - - - - - the 32 bit CRC checksum for the packed data. - - checksum of all packed data (including object type code, - inflated length and delta base reference) as computed by - - - - - - NAK - - - - - ACK - - - - - ACK + continue - - - - - ACK + common - - - - - ACK + ready - - - - - Write Git style pkt-line formatting to an output stream. - - This class is not thread safe and may issue multiple writes to the underlying - stream for each method call made. - - This class performs no buffering on its own. This makes it suitable to - interleave writes performed by this class with writes performed directly - against the underlying OutputStream. - - - - - Create a new packet line writer. - - stream - - - - Write a UTF-8 encoded string as a single length-delimited packet. - - string to write. - - - - Write a binary packet to the stream. - - - the packet to write; the length of the packet is equal to the - size of the byte array. - - - - - Write a packet end marker, sometimes referred to as a flush command. - - Technically this is a magical packet type which can be detected - separately from an empty string or an empty packet. - - Implicitly performs a flush on the underlying OutputStream to ensure the - peer will receive all data written thus far. - - - - - Flush the underlying OutputStream. - - Performs a flush on the underlying OutputStream to ensure the peer will - receive all data written thus far. - - - - - Class performing push operation on remote repository. - - - - - Task name for used during opening connection. - - - Transport used to perform this operation. - - - Push operation connection created to perform this operation - - - Refs to update on remote side. - - - Revision walker for checking some updates properties. - - - - Create process for specified transport and refs updates specification. - - - transport between remote and local repository, used to Create - connection. - - specification of refs updates (and local tracking branches). - - - - - - Perform push operation between local and remote repository - set remote - refs appropriately, send needed objects and update local tracking refs. - - When is true, result of this operation is - just estimation of real operation result, no real action is performed. - - - Progress monitor used for feedback about operation. - - result of push operation with complete status description. - - When push operation is not supported by provided transport. - - - When some error occurred during operation, like I/O, protocol - error, or local database consistency error. - - - - - Result of push operation to the remote repository. Holding information of - and remote refs updates status. - - see - - - - - Get status of specific remote ref update by remote ref name. Together - with it provide full description/status - of this ref update. - - remote ref name - status of remote ref update - - - - A command being processed by . - - This command instance roughly translates to the server side representation of - the created by the client. - - - - - Create a new command for . - - - the old object id; must not be null. Use - to indicate a ref creation. - - - the new object id; must not be null. Use - to indicate a ref deletion. - - name of the ref being affected. - - - the old value the client thinks the ref has. - - - the requested new value for this ref. - - - the name of the ref being updated. - - - the type of this command; see . - - - the ref, if this was advertised by the connection. - - - the current status code of this command. - - - the message associated with a failure status. - - - - Set the status of this command. - - the new status code for this command. - - - - Set the status of this command. - - the new status code for this command. - optional message explaining the new status. - - - - Type of operation requested. - - - - - Create a new ref; the ref must not already exist. - - - - - Update an existing ref with a fast-forward update. - - During a fast-forward update no changes will be lost; only new - commits are inserted into the ref. - - - - - Update an existing ref by potentially discarding objects. - - The current value of the ref is not fully reachable from the new - value of the ref, so a successful command may result in one or more - objects becoming unreachable. - - - - - Delete an existing ref; the ref should already exist. - - - - - Result of the update command. - - - - - The command has not yet been attempted by the server. - - - - - The server is configured to deny creation of this ref. - - - - - The server is configured to deny deletion of this ref. - - - - - The update is a non-fast-forward update and isn't permitted. - - - - - The update affects HEAD and cannot be permitted. - - - - - One or more objects aren't in the repository. - - This is severe indication of either repository corruption on the - server side, or a bug in the client wherein the client did not supply - all required objects during the pack transfer. - - - - - Other failure; see . - - - - - The ref could not be locked and updated atomically; try again. - - - - - The change was completed successfully. - - - - - Implements the server side of a push connection, receiving objects. - - - - - Database we write the stored objects into. - - - - - Revision traversal support over . - - - - - Is the client connection a bi-directional socket or pipe? - - If true, this class assumes it can perform multiple read and write cycles - with the client over the input and output streams. This matches the - functionality available with a standard TCP/IP connection, or a local - operating system or in-memory pipe. - - If false, this class runs in a read everything then output results mode, - making it suitable for single round-trip systems RPCs such as HTTP. - - - - - Should an incoming transfer validate objects? - - - - - Should an incoming transfer permit create requests? - - - - - Should an incoming transfer permit delete requests? - - - - - Should an incoming transfer permit non-fast-forward requests? - - - - - Identity to record action as within the reflog. - - - - - Filter used while advertising the refs to the client. - - - - - Hook to validate the update commands before execution. - - - - - Hook to report on the commands after execution. - - - - - The refs we advertised as existing at the start of the connection. - - - - - Capabilities requested by the client. - - - - - Commands to execute, as received by the client. - - - - - An exception caught while unpacking and fsck'ing the objects. - - - - - if has - - - - - Lock around the received pack file, while updating refs. - - - - - Create a new pack receive for an open repository. - - the destination repository. - - - - Returns the repository this receive completes into. - - - - - - Returns the RevWalk instance used by this connection. - - - - - - Returns all refs which were advertised to the client. - - - - - - Configure this receive pack instance to keep track of the objects assumed - for delta bases. - - By default a receive pack doesn't save the objects that were used as - delta bases. Setting this flag to {@code true} will allow the caller to - use to retrieve that list. - - true to enable keeping track of delta bases. - - - the set of objects the incoming pack assumed for delta purposes - - - - Configure this receive pack instance to keep track of new objects. - - By default a receive pack doesn't save the new objects that were created - when it was instantiated. Setting this flag to {@code true} allows the - caller to use {@link #getNewObjectIds()} to retrieve that list. - - true to enable keeping track of new objects. - - - the new objects that were sent by the user - - - - true if this class expects a bi-directional pipe opened between - the client and itself. The default is true. - - - - - if true, this class will assume the socket is a fully - bidirectional pipe between the two peers and takes advantage - of that by first transmitting the known refs, then waiting to - read commands. If false, this class assumes it must read the - commands before writing output and does not perform the - initial advertising. - - - - - Returns true if this instance will verify received objects are formatted correctly. - Validating objects requires more CPU time on this side of the connection. - - - - - true to enable checking received objects; false to assume all received objects are valid. - - - - Returns true if the client can request refs to be created. - - - - - true to permit create ref commands to be processed. - - - - Returns true if the client can request refs to be deleted. - - - - true to permit delete ref commands to be processed. - - - - Returns true if the client can request non-fast-forward updates of a ref, possibly making objects unreachable. - - - - true to permit the client to ask for non-fast-forward updates of an existing ref. - - - - Returns identity of the user making the changes in the reflog. - - - - - Set the identity of the user appearing in the affected reflogs. - - The timestamp portion of the identity is ignored. A new identity with the - current timestamp will be created automatically when the updates occur - and the log records are written. - - - identity of the user. If null the identity will be - automatically determined based on the repository - configuration. - - - the filter used while advertising the refs to the client - - - - Set the filter used while advertising the refs to the client. - - Only refs allowed by this filter will be shown to the client. - Clients may still attempt to create or update a reference hidden - by the configured . These attempts should be - rejected by a matching . - - the filter; may be null to show all refs. - - - the hook invoked before updates occur. - - - - Set the hook which is invoked prior to commands being executed. - - Only valid commands (those which have no obvious errors according to the - received input and this instance's configuration) are passed into the - hook. The hook may mark a command with a result of any value other than - to block its execution. - - The hook may be called with an empty command collection if the current - set is completely invalid. - - the hook instance; may be null to disable the hook. - - - the hook invoked after updates occur. - - - - - Only successful commands (type is ) are passed into the - Set the hook which is invoked after commands are executed. - hook. The hook may be called with an empty command collection if the - current set all resulted in an error. - - - the hook instance; may be null to disable the hook. - - - all of the command received by the current request. - - - - Send an error message to the client, if it supports receiving them. - - If the client doesn't support receiving messages, the message will be - discarded, with no other indication to the caller or to the client. - - - s should always try to use - with a result status of - to indicate any reasons for - rejecting an update. Messages attached to a command are much more likely - to be returned to the client. - - - string describing the problem identified by the hook. The string must not end with an LF, and must not contain an LF. - - - - Send a message to the client, if it supports receiving them. - - If the client doesn't support receiving messages, the message will be - discarded, with no other indication to the caller or to the client. - - - string describing the problem identified by the hook. The string must not end with an LF, and must not contain an LF. - - - - Execute the receive task on the socket. - - Raw input to read client commands and pack data from. Caller must ensure the input is buffered, otherwise read performance may suffer. Response back to the Git network client. Caller must ensure the output is buffered, otherwise write performance may suffer. - Secondary "notice" channel to send additional messages out through. When run over SSH this should be tied back to the standard error channel of the command execution. For most other network connections this should be null. - - - - Generate an advertisement of available refs and capabilities. - - the advertisement formatter. - - - - Support for the start of and . - - - - - Initialize a new advertisement formatter. - - the RevWalk used to parse objects that are advertised. - - flag marked on any advertised objects parsed out of the - 's object pool, permitting the caller to - later quickly determine if an object was advertised (or not). - - - - - Toggle tag peeling. - - This method must be invoked prior to any of the following: - , , . - - - true to show the dereferenced value of a tag as the special - ref $tag^{} ; false to omit it from the output. - - - - - Add one protocol capability to the initial advertisement. - - This method must be invoked prior to any of the following: - , , . - - - the name of a single protocol capability supported by the - caller. The set of capabilities are sent to the client in the - advertisement, allowing the client to later selectively enable - features it recognizes. - - - - - Format an advertisement for the supplied refs. - - - zero or more refs to format for the client. The collection is - sorted before display if necessary, and therefore may appear - in any order. - - - - - Advertise one object is available using the magic .have. - - The magic .have advertisement is not available for fetching by a - client, but can be used by a client when considering a delta base - candidate before transferring data in a push. Within the record created - by this method the ref name is simply the invalid string .have. - - - identity of the object that is assumed to exist. - - - - - Include references of alternate repositories as {@code .have} lines. - - - - true if no advertisements have been sent yet. - - - - Advertise one object under a specific name. - - If the advertised object is a tag, this method does not advertise the - peeled version of it. - - - the object to advertise. - - - name of the reference to advertise the object as, can be any - string not including the NUL byte. - - - - - Write a single advertisement line. - - - the advertisement line to be written. The line always ends - with LF. Never null or the empty string. - - - - - Mark the end of the advertisements. - - - - - Advertiser which frames lines in a {@link PacketLineOut} format. - - - - - Create a new advertiser for the supplied stream. - - the output stream. - - - - The default filter, allows all refs to be shown. - - - - - Filters the list of refs that are advertised to the client. - - The filter is called by {@link ReceivePack} and {@link UploadPack} to ensure - that the refs are filtered before they are advertised to the client. - - This can be used by applications to control visibility of certain refs based - on a custom set of rules. - - - - - Filters a {@code Map} of refs before it is advertised to the client. - - the refs which this method need to consider. - the filtered map of refs. - - - - Describes how refs in one repository copy into another repository. - - A ref specification provides matching support and limited rules to rewrite a - reference in one repository to another reference in another repository. - - - - - Suffix for wildcard ref spec component, that indicate matching all refs - with specified prefix. - - - - - Check whether provided string is a wildcard ref spec component. - - ref spec component - string to test. Can be null. - true if provided string is a wildcard ref spec component. - - - - Construct an empty RefSpec. - - A newly created empty RefSpec is not suitable for use in most - applications, as at least one field must be set to match a source name. - - - - - Parse a ref specification for use during transport operations. - - Specifications are typically one of the following forms: -
    -
  • refs/head/master
  • -
  • refs/head/master:refs/remotes/origin/master
  • -
  • refs/head/*:refs/remotes/origin/*
  • -
  • +refs/head/master
  • -
  • +refs/head/master:refs/remotes/origin/master
  • -
  • +refs/head/*:refs/remotes/origin/*
  • -
  • :refs/head/master
  • -
-
- string describing the specification. -
- - - Create a new RefSpec with a different force update setting. - - new value for force update in the returned instance. - a new RefSpec with force update as specified. - - - - Create a new RefSpec with a different source name setting. - - new value for source in the returned instance. - a new RefSpec with source as specified. - - - - Create a new RefSpec with a different destination name setting. - - new value for destination in the returned instance. - a new RefSpec with destination as specified. - - - - Create a new RefSpec with a different source/destination name setting. - - new value for source in the returned instance. - new value for destination in the returned instance. - a new RefSpec with destination as specified. - - - - Does this specification's source description match the ref name? - - ref name that should be tested. - true if the names match; false otherwise. - - - - Does this specification's source description match the ref? - - ref whose name should be tested. - true if the names match; false otherwise. - - - - Does this specification's destination description match the ref name? - - ref name that should be tested. - true if the names match; false otherwise. - - - - Does this specification's destination description match the ref? - - ref whose name should be tested. - true if the names match; false otherwise. - - - - Expand this specification to exactly match a ref name. - - Callers must first verify the passed ref name matches this specification, - otherwise expansion results may be unpredictable. - - - a ref name that matched our source specification. Could be a - wildcard also. - - - a new specification expanded from provided ref name. Result - specification is wildcard if and only if provided ref name is - wildcard. - - - - - Expand this specification to exactly match a ref. - - Callers must first verify the passed ref matches this specification, - otherwise expansion results may be unpredictable. - - - a ref that matched our source specification. Could be a - wildcard also. - - - a new specification expanded from provided ref name. Result - specification is wildcard if and only if provided ref name is - wildcard. - - - - - Expand this specification to exactly match a ref name. - - Callers must first verify the passed ref name matches this specification, - otherwise expansion results may be unpredictable. - - - a ref name that matched our destination specification. Could - be a wildcard also. - - - a new specification expanded from provided ref name. Result - specification is wildcard if and only if provided ref name is - wildcard. - - - - - Expand this specification to exactly match a ref. - - Callers must first verify the passed ref matches this specification, - otherwise expansion results may be unpredictable. - - a ref that matched our destination specification. - - a new specification expanded from provided ref name. Result - specification is wildcard if and only if provided ref name is - wildcard. - - - - - Check if this specification wants to forcefully update the destination. - - Returns true if this specification asks for updates without merge tests. - - - - - Check if this specification is actually a wildcard pattern. - - If this is a wildcard pattern then the source and destination names - returned by and will not - be actual ref names, but instead will be patterns. - - Returns true if this specification could match more than one ref. - - - - Get the source ref description. - - During a fetch this is the name of the ref on the remote repository we - are fetching from. During a push this is the name of the ref on the local - repository we are pushing out from. - - Returns name (or wildcard pattern) to match the source ref. - - - - - Get the destination ref description. - - During a fetch this is the local tracking branch that will be updated - with the new ObjectId after fetching is complete. During a push this is - the remote ref that will be updated by the remote's receive-pack process. - - If null during a fetch no tracking branch should be updated and the - ObjectId should be stored transiently in order to prepare a merge. - - If null during a push, use instead. - - Returns name (or wildcard) pattern to match the destination ref. - - - - - A remembered remote repository, including URLs and RefSpecs. - - A remote configuration remembers one or more URLs for a frequently accessed - remote repository as well as zero or more fetch and push specifications - describing how refs should be transferred between this repository and the - remote repository. - - - - - Default value for if not specified. - - - - - Default value for if not specified. - - - - - Parse all remote blocks in an existing configuration file, looking for - remotes configuration. - - - The existing configuration to get the remote settings from. - The configuration must already be loaded into memory. - - - All remotes configurations existing in provided repository - configuration. Returned configurations are ordered - lexicographically by names. - - - - - Parse a remote block from an existing configuration file. - - This constructor succeeds even if the requested remote is not defined - within the supplied configuration file. If that occurs then there will be - no URIs and no ref specifications known to the new instance. - - - the existing configuration to get the remote settings from. - The configuration must already be loaded into memory. - - subsection key indicating the name of this remote. - - - - Update this remote's definition within the configuration. - - the configuration file to store ourselves into. - - - - Add a new URI to the end of the list of URIs. - - the new URI to add to this remote. - true if the URI was added; false if it already exists. - - - - Remove a URI from the list of URIs. - - the URI to remove from this remote. - true if the URI was added; false if it already exists. - - - - Add a new push-only URI to the end of the list of URIs. - - the new URI to add to this remote. - true if the URI was added; false if it already exists. - - - - Remove a push-only URI from the list of URIs. - - the URI to remove from this remote. - true if the URI was added; false if it already exists. - - - - Add a new fetch RefSpec to this remote. - - the new specification to add. - true if the specification was added; false if it already exists. - - - - Override existing fetch specifications with new ones. - - - list of fetch specifications to set. List is copied, it can be - modified after this call. - - - - - Override existing push specifications with new ones. - - - list of push specifications to set. List is copied, it can be - modified after this call. - - - - - Remove a fetch RefSpec from this remote. - - the specification to remove. - true if the specification existed and was removed. - - - - Add a new push RefSpec to this remote. - - the new specification to add. - true if the specification was added; false if it already exists. - - - - Remove a push RefSpec from this remote. - - the specification to remove. - true if the specification existed and was removed. - - - - Set the description of how annotated tags should be treated on fetch. - - method to use when handling annotated tags. - - - - local name this remote configuration is recognized as - - - - - all configured URIs under this remote - - - - - all configured push-only URIs under this remote. - - - - - Remembered specifications for fetching from a repository. - - - - - Remembered specifications for pushing to a repository. - - - - - Override for the location of 'git-upload-pack' on the remote system. - - This value is only useful for an SSH style connection, where Git is - asking the remote system to execute a program that provides the necessary - network protocol. - - returns location of 'git-upload-pack' on the remote system. If no - location has been configured the default of 'git-upload-pack' is - returned instead. - - - - - Override for the location of 'git-receive-pack' on the remote system. - - This value is only useful for an SSH style connection, where Git is - asking the remote system to execute a program that provides the necessary - network protocol. - - returns location of 'git-receive-pack' on the remote system. If no - location has been configured the default of 'git-receive-pack' is - returned instead. - - - - - Get the description of how annotated tags should be treated during fetch. - - returns option indicating the behavior of annotated tags in fetch. - - - - - mirror flag to automatically delete remote refs. - - true if pushing to the remote automatically deletes remote refs - - - - - timeout before willing to abort an IO call. - - number of seconds to wait (with no data transfer occurring) - before aborting an IO read or write operation with this - remote. A timeout of 0 will block indefinitely. - - - - - Represent request and status of a remote ref update. Specification is - provided by client, while status is handled by class, - being read-only for client. - - Client can create instances of this class directly, basing on user - specification and advertised refs ({@link Connection} or through - helper methods. Apply this specification on remote - repository using - method. - - - - Construct remote ref update request by providing an update specification. - Object is created with default {@link Status#NOT_ATTEMPTED} status and no - message. - - local repository to push from. - - source revision - any string resolvable by - . This resolves to the new - object that the caller want remote ref to be after update. Use - null or string for delete request. - - - full name of a remote ref to update, e.g. "refs/heads/master" - (no wildcard, no short name). - - - true when caller want remote ref to be updated regardless - whether it is fast-forward update (old object is ancestor of - new object). - - - optional full name of a local stored tracking branch, to - update after push, e.g. "refs/remotes/zawir/dirty" (no - wildcard, no short name); null if no local tracking branch - should be updated. - - - optional object id that caller is expecting, requiring to be - advertised by remote side before update; update will take - place ONLY if remote side advertise exactly this expected id; - null if caller doesn't care what object id remote side - advertise. Use {@link ObjectId#zeroId()} when expecting no - remote ref with this name. - - - - - Create a new instance of this object basing on existing instance for - configuration. State (like , ) - of base object is not shared. Expected old object id is set up from - scratch, as this constructor may be used for 2-stage push: first one - being dry run, second one being actual push. - - configuration base. - new expected object id value. - - - - Update locally stored tracking branch with the new object. - - walker used for checking update properties. - - - - expectedOldObjectId required to be advertised by remote side, as - set in constructor; may be null. - - - - - true if some object is required to be advertised by remote side, - as set in constructor; false otherwise. - - - - - newObjectId for remote ref, as set in constructor. - - - - - true if this update is deleting update; false otherwise. - - - - - name of remote ref to update, as set in constructor. - - - - - local tracking branch update if localName was set in constructor. - - - - - source revision as specified by user (in constructor), could be - any string parseable by ; can - be null if specified that way in constructor - this stands for - delete request. - - - - - true if user specified a local tracking branch for remote update; - false otherwise. - - - - - true if user specified a local tracking branch for remote update; - false otherwise. - - - - - status of remote ref update operation. - - - - - Check whether update was fast-forward. Note that this result is - meaningful only after successful update (when status is . - - true if update was fast-forward; false otherwise. - - - - - message describing reasons of status when needed/possible; may be null. - - - - - Represent current status of a remote ref update. - - - - - Push process hasn't yet attempted to update this ref. This is the - default status, prior to push process execution. - - - - - Remote ref was up to date, there was no need to update anything. - - - - - Remote ref update was rejected, as it would cause non fast-forward - update. - - - - - Remote ref update was rejected, because remote side doesn't - support/allow deleting refs. - - - - - Remote ref update was rejected, because old object id on remote - repository wasn't the same as defined expected old object. - - - - - Remote ref update was rejected for other reason, possibly described - in . - - - - - Remote ref didn't exist. Can occur on delete request of a non - existing ref. - - - - - Push process is awaiting update report from remote repository. This - is a temporary state or state after critical error in push process. - - - - - Remote ref was successfully updated. - - - - - Multiplexes data and progress messages. - - This stream is buffered at packet sizes, so the caller doesn't need to wrap - it in yet another buffered stream. - - - - - Number of bytes in that are valid data. - - Initialized to if there is no application data in the - buffer, as the packet header always appears at the start of the buffer. - - - - - Create a new stream to write side band packets. - - channel number to prefix all packets with, so the remote side - can demultiplex the stream and get back the original data. - Must be in the range [0, 255]. - maximum size of a data packet within the stream. The remote - side needs to agree to the packet size to prevent buffer - overflows. Must be in the range [HDR_SIZE + 1, MAX_BUF). - stream that the packets are written onto. This stream should - be attached to a SideBandInputStream on the remote side. - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - We are forced to implement this interface member even though we don't need it - - - - - Write progress messages out to the sideband channel. - - - - - The base class for transports that use SSH protocol. This class allows - customizing SSH connection settings. - - - - - The base class for transports based on TCP sockets. This class - holds settings common for all TCP based transports. - - - - - Create a new transport instance. - - - The repository this instance will fetch into, or push out of. - This must be the repository passed to . - - - the URI used to access the remote repository. This must be the - URI passed to . - - - - - Create a new transport instance. - - - the repository this instance will fetch into, or push out of. - This must be the repository passed to - . - - - the URI used to access the remote repository. This must be the - URI passed to {@link #open(Repository, URIish)}. - - - - - Initialize SSH session - - - - - The open SSH session - - - - - the SSH session factory that will be used for creating SSH sessions - - - - - Specification of annotated tag behavior during fetch. - - - - - Automatically follow tags if we fetch the thing they point at. - - This is the default behavior and tries to balance the benefit of having - an annotated tag against the cost of possibly objects that are only on - branches we care nothing about. Annotated tags are fetched only if we can - prove that we already have (or will have when the fetch completes) the - object the annotated tag peels (dereferences) to. - - - - - Never fetch tags, even if we have the thing it points at. - - This option must be requested by the user and always avoids fetching - annotated tags. It is most useful if the location you are fetching from - publishes annotated tags, but you are not interested in the tags and only - want their branches. - - - - - Always fetch tags, even if we do not have the thing it points at. - - Unlike {@link #AUTO_FOLLOW} the tag is always obtained. This may cause - hundreds of megabytes of objects to be fetched if the receiving - repository does not yet have the necessary dependencies. - - - - - - Convert a command line/configuration file text into a value instance. - - the configuration file text value. - the option that matches the passed parameter. - - - - Command line/configuration file text for this value. - - - - - Update of a locally stored tracking branch. - - - - - the name of the remote ref. - - Usually this is of the form "refs/heads/master". - - - - - Get the name of the local tracking ref. - - Usually this is of the form "refs/remotes/origin/master". - - - - - Get the new value the ref will be (or was) updated to. Null if the caller has not configured it. - - - - - The old value of the ref, prior to the update being attempted. - - This value may differ before and after the update method. Initially it is - populated with the value of the ref before the lock is taken, but the old - value may change if someone else modified the ref between the time we - last read it and when the ref was locked for update. - - Returns the value of the ref prior to the update being attempted; null if - the updated has not been attempted yet. - - - - - the status of this update. - - - - - Single shot fetch from a streamed Git bundle. - - The bundle is Read from an unbuffered input stream, which limits the - transport to opening at most one FetchConnection before needing to recreate - the transport instance. - - - - - Create a new transport to fetch objects from a streamed bundle. - - The stream can be unbuffered (buffering is automatically provided - internally to smooth out short reads) and unpositionable (the stream is - Read from only once, sequentially). - - When the FetchConnection or the this instance is closed the supplied - input stream is also automatically closed. This frees callers from - needing to keep track of the supplied stream. - - repository the fetched objects will be loaded into. - - symbolic name of the source of the stream. The URI can - reference a non-existent resource. It is used only for - exception reporting. - - the stream to Read the bundle from. - - - - Transport through a git-daemon waiting for anonymous TCP connections. - - This transport supports the git:// protocol, usually run on - the IANA registered port 9418. It is a popular means for distributing open - source projects, as there are no authentication or authorization overheads. - - - - - Transport through an SSH tunnel. - - The SSH transport requires the remote side to have Git installed, as the - transport logs into the remote system and executes a Git helper program on - the remote side to read (or write) the remote repository's files. - - This transport does not support direct SCP style of copying files, as it - assumes there are Git specific smarts on the remote side to perform object - enumeration, save file modification and hook execution. - - - - - the error stream for the channel, the stream is used to detect - specific error reasons for exceptions. - - - - - Transport over HTTP and FTP protocols. - - If the transport is using HTTP and the remote HTTP service is Git-aware - (speaks the "smart-http protocol") this client will automatically take - advantage of the additional Git-specific HTTP extensions. If the remote - service does not support these extensions, the client will degrade to direct - file fetching. - - If the remote (server side) repository does not have the specialized Git - support, object files are retrieved directly through standard HTTP GET (or - binary FTP GET) requests. This make it easy to serve a Git repository through - a standard web host provider that does not offer specific support for Git. - - - - - Transfers object data through a dumb transport. - - Implementations are responsible for resolving path names relative to the - objects/ subdirectory of a single remote Git repository or - naked object database and make the content available as a Java input stream - for reading during fetch. The actual object traversal logic to determine the - names of files to retrieve is handled through the generic, protocol - independent . - - - - - Obtain the list of available packs (if any). - - Pack names should be the file name in the packs directory, that is - pack-035760ab452d6eebd123add421f253ce7682355a.pack. Index - names should not be included in the returned collection. - - list of pack names; null or empty list if none are available. - - - - Obtain alternate connections to alternate object databases (if any). - - Alternates are typically read from the file or - . The content of each line must be resolved - by the implementation and a new database reference should be returned to - represent the additional location. - - Alternates may reuse the same network connection handle, however the - fetch connection will each created alternate. - - - list of additional object databases the caller could fetch from; - null or empty list if none are configured. - - - - - Open a single file for reading. - - Implementors should make every attempt possible to ensure - {@link FileNotFoundException} is used when the remote object does not - exist. However when fetching over HTTP some misconfigured servers may - generate a 200 OK status message (rather than a 404 Not Found) with an - HTML formatted message explaining the requested resource does not exist. - Callers such as are prepared to handle this - by validating the content received, and assuming content that fails to - match its hash is an incorrectly phrased FileNotFoundException. - - - location of the file to read, relative to this objects - directory (e.g. - cb/95df6ab7ae9e57571511ef451cf33767c26dd2 or - pack/pack-035760ab452d6eebd123add421f253ce7682355a.pack). - - a stream to read from the file. Never null. - - - - Create a new connection for a discovered alternate object database - - This method is typically called by when - subclasses us the generic alternate parsing logic for their - implementation of . - - - the location of the new alternate, relative to the current - object database. - - - a new database connection that can read from the specified - alternate. - - - - - Close any resources used by this connection. - - If the remote repository is contacted by a network socket this method - must close that network socket, disconnecting the two peers. If the - remote repository is actually local (same system) this method must close - any open file handles used to read the "remote" repository. - - - - - Delete a file from the object database. - - Path may start with ../ to request deletion of a file that - resides in the repository itself. - - When possible empty directories must be removed, up to but not includin - the current object database directory itself. - - This method does not support deletion of directories. - - - name of the item to be removed, relative to the current object - database. - - - - - Open a remote file for writing. - - Path may start with ../ to request writing of a file that - resides in the repository itself. - - The requested path may or may not exist. If the path already exists as a - file the file should be truncated and completely replaced. - - This method creates any missing parent directories, if necessary. - - - name of the file to write, relative to the current object - database. - - - (optional) progress monitor to post write completion to during - the stream's close method. - - - (optional) task name to display during the close method. - - - stream to write into this file. Caller must close the stream to - complete the write request. The stream is not buffered and each - write may cause a network request/response so callers should - buffer to smooth out small writes. - - - - - Atomically write a remote file. - - This method attempts to perform as atomic of an update as it can, - reducing (or eliminating) the time that clients might be able to see - partial file content. This method is not suitable for very large - transfers as the complete content must be passed as an argument. - - Path may start with ../ to request writing of a file that - resides in the repository itself. - - The requested path may or may not exist. If the path already exists as a - file the file should be truncated and completely replaced. - - This method creates any missing parent directories, if necessary. - - - name of the file to write, relative to the current object - database. - - complete new content of the file. - - - - Delete a loose ref from the remote repository. - - - name of the ref within the ref space, for example - refs/heads/pu. - - - - - Delete a reflog from the remote repository. - - - name of the ref within the ref space, for example - refs/heads/pu. - - - - - Overwrite (or create) a loose ref in the remote repository. - - This method creates any missing parent directories, if necessary. - - - name of the ref within the ref space, for example - refs/heads/pu. - - new value to store in this ref. Must not be null. - - - - Rebuild the for dumb transport clients. - - This method rebuilds the contents of the file to - match the passed list of pack names. - - - names of available pack files, in the order they should appear - in the file. Valid pack name strings are of the form - pack-035760ab452d6eebd123add421f253ce7682355a.pack. - - - - - Open a buffered reader around a file. - - This is shorthand for calling and then wrapping it - in a reader suitable for line oriented files like the alternates list. - - - location of the file to read, relative to this objects - directory (e.g. info/packs). - - a stream to read from the file. Never null. - - - - Read a standard Git alternates file to discover other object databases. - - This method is suitable for reading the standard formats of the - alternates file, such as found in objects/info/alternates - or objects/info/http-alternates within a Git repository. - - Alternates appear one per line, with paths expressed relative to this - object database. - - - location of the alternate file to read, relative to this - object database (e.g. info/alternates). - - - the list of discovered alternates. Empty list if the file exists, - but no entries were discovered. - - - - - Read a standard Git packed-refs file to discover known references. - - - return collection of references. Any existing entries will be - replaced if they are found in the packed-refs file. - - - - - Implements the server side of a fetch connection, transmitting objects. - - - - - Database we read the objects from. - - - - - Revision traversal support over . - - - - - Timeout in seconds to wait for client interaction. - - - - - Is the client connection a bi-directional socket or pipe? - - If true, this class assumes it can perform multiple read and write cycles - with the client over the input and output streams. This matches the - functionality available with a standard TCP/IP connection, or a local - operating system or in-memory pipe. - - If false, this class runs in a read everything then output results mode, - making it suitable for single round-trip systems RPCs such as HTTP. - - - - - The refs we advertised as existing at the start of the connection. - - - - - Filter used while advertising the refs to the client. - - - - - Capabilities requested by the client. - - - - - Objects the client wants to obtain. - - - - - Objects the client wants to obtain. - - - - - Objects on both sides, these don't have to be sent. - - - - - null if should be examined again. - - - - - Marked on objects we sent in our advertisement list. - - - - - Marked on objects the client has asked us to give them. - - - - - Marked on objects both we and the client have. - - - - - Marked on objects in . - - - - - Create a new pack upload for an open repository. - - the source repository. - - - - true if this class expects a bi-directional pipe opened between - the client and itself. The default is true. - - - - - if true, this class will assume the socket is a fully - bidirectional pipe between the two peers and takes advantage - of that by first transmitting the known refs, then waiting to - read commands. If false, this class assumes it must read the - commands before writing output and does not perform the - initial advertising. - - - - - the filter used while advertising the refs to the client - - - - Set the filter used while advertising the refs to the client. - - Only refs allowed by this filter will be sent to the client. This can - be used by a server to restrict the list of references the client can - obtain through clone or fetch, effectively limiting the access to only - certain refs. - - the filter; may be null to show all refs. - - - - Execute the upload task on the socket. - - - raw input to read client commands from. Caller must ensure the - input is buffered, otherwise read performance may suffer. - - - response back to the Git network client, to write the pack - data onto. Caller must ensure the output is buffered, - otherwise write performance may suffer. - - - secondary "notice" channel to send additional messages out - through. When run over SSH this should be tied back to the - standard error channel of the command execution. For most - other network connections this should be null. - - - - - - Generate an advertisement of available refs and capabilities. - - the advertisement formatter. - - - - the repository this upload is reading from. - - - - - the RevWalk instance used by this connection. - - - - - number of seconds to wait (with no data transfer occurring) - before aborting an IO read or write operation with the - connected client. - - - - - This URI like construct used for referencing Git archives over the net, as - well as locally stored archives. The most important difference compared to - RFC 2396 URI's is that no URI encoding/decoding ever takes place. A space or - any special character is written as-is. - - - - - Construct a URIish from a standard URL. - - The source URL to convert from. - - - - Parse and construct an from a string - - - - - - Create an empty, non-configured URI. - - - - - Return a new URI matching this one, but with a different host. - - the new value for host. - a new URI with the updated value. - - - - Return a new URI matching this one, but with a different scheme. - - the new value for scheme. - a new URI with the updated value. - - - - Return a new URI matching this one, but with a different path. - - the new value for path. - a new URI with the updated value. - - - - Return a new URI matching this one, but with a different user. - - the new value for user. - a new URI with the updated value. - - - - Return a new URI matching this one, but with a different password. - - the new value for password. - A new URI with the updated value. - - - - Return a new URI matching this one, but with a different port. - - The new value for port. - A new URI with the updated value. - - - - Obtain the string form of the URI, with the password included. - - The URI, including its password field, if any. - - - - Get the "humanish" part of the path. Some examples of a 'humanish' part for a full path: - - - /path/to/repo.git -> repo - - - /path/to/repo.git/ -> repo - - - /path/to/repo/.git -> repo - - - /path/to/repo/ -> repo - - - /path//to -> an empty string - - - the "humanish" part of the path. May be an empty string. Never null. - - - - Returns true if this URI references a repository on another system. - - - - - Generic fetch support for dumb transport protocols. - - Since there are no Git-specific smarts on the remote side of the connection - the client side must determine which objects it needs to copy in order to - completely fetch the requested refs and their history. The generic walk - support in this class parses each individual object (once it has been copied - to the local repository) and examines the list of objects that must also be - copied to create a complete history. Objects which are already available - locally are retained (and not copied), saving bandwidth for incremental - fetches. Pack files are copied from the remote repository only as a last - resort, as the entire pack must be copied locally in order to access any - single object. - - This fetch connection does not actually perform the object data transfer. - Instead it delegates the transfer to a , - which knows how to read individual files from the remote repository and - supply the data as a standard Java InputStream. - - - - - The repository this transport fetches into, or pushes out of. - - - - - If not null the validator for received objects. - - - - - List of all remote repositories we may need to get objects out of. - - The first repository in the list is the one we were asked to fetch from; - the remaining repositories point to the alternate locations we can fetch - objects through. - - - - - Most recently used item in . - - - - - Objects whose direct dependents we know we have (or will have). - - - - - Objects that have already entered . - - - - - Commits that have already entered . - - - - - Commits already reachable from all local refs. - - - - - Objects we need to copy from the remote repository. - - - - - Databases we have not yet obtained the list of packs from. - - - - - Databases we have not yet obtained the alternates from. - - - - - Packs we have discovered, but have not yet fetched locally. - - - - - Packs whose indexes we have looked at in . - - We try to avoid getting duplicate copies of the same pack through - multiple alternates by only looking at packs whose names are not yet in - this collection. - - - - - Errors received while trying to obtain an object. - - If the fetch winds up failing because we cannot locate a specific object - then we need to report all errors related to that object back to the - caller as there may be cascading failures. - - - - - Generic push support for dumb transport protocols. - - Since there are no Git-specific smarts on the remote side of the connection - the client side must handle everything on its own. The generic push support - requires being able to delete, create and overwrite files on the remote side, - as well as create any missing directories (if necessary). Typically this can - be handled through an FTP style protocol. - - Objects not on the remote side are uploaded as pack files, using one pack - file per invocation. This simplifies the implementation as only two data - files need to be written to the remote repository. - - Push support supplied by this class is not multiuser safe. Concurrent pushes - to the same repository may yield an inconsistent reference database which may - confuse fetch clients. - - A single push is concurrently safe with multiple fetch requests, due to the - careful order of operations used to update the repository. Clients fetching - may receive transient failures due to short reads on certain files if the - protocol does not support atomic file replacement. - - see . - - - - - The repository this transport pushes out of. - - - - - Location of the remote repository we are writing to. - - - - - Database connection to the remote repository. - - - - - Packs already known to reside in the remote repository. - - - - - Complete listing of refs the remote will have after our push. - - - - - Updates which require altering the packed-refs file to complete. - - If this collection is non-empty then any refs listed in - with a storage class of will be written. - - - - - Writes out refs to the and - files. - - This class is abstract as the writing of the files must be handled by the - caller. This is because it is used by transport classes as well. - - - - - the complete set of references. This should have been computed - by applying updates to the advertised refs already discovered. - - - - - the complete set of references. This should have been computed - by applying updates to the advertised refs already discovered. - - - - - Rebuild the . - - This method rebuilds the contents of the file - to match the passed list of references. - - - - - Rebuild the file. - - This method rebuilds the contents of the - file to match the passed list of references, including only those refs - that have a storage type of . - - - - - Handles actual writing of ref files to the git repository, which may - differ slightly depending on the destination and transport. - - path to ref file. - byte content of file to be written. - - - Includes a tree entry only if all subfilters include the same tree entry. - - Classic shortcut behavior is used, so evaluation of the - {@link TreeFilter#include(TreeWalk)} method stops as soon as a false result - is obtained. Applications can improve filtering performance by placing faster - filters that are more likely to reject a result earlier in the list. - - - Selects interesting tree entries during walking. - - This is an abstract interface. Applications may implement a subclass, or use - one of the predefined implementations already available within this package. - - Unless specifically noted otherwise a TreeFilter implementation is not thread - safe and may not be shared by different TreeWalk instances at the same time. - This restriction allows TreeFilter implementations to cache state within - their instances during {@link #include(TreeWalk)} if it is beneficial to - their implementation. Deep clones created by {@link #Clone()} may be used to - construct a thread-safe copy of an existing filter. - - - Path filters: -
    -
  • Matching pathname: {@link PathFilter}
  • -
- - - Difference filters: -
    -
  • Only select differences: {@link #ANY_DIFF}.
  • -
- - - Boolean modifiers: -
    -
  • AND: {@link AndTreeFilter}
  • -
  • OR: {@link OrTreeFilter}
  • -
  • NOT: {@link NotTreeFilter}
  • -
-
- - Selects all tree entries. - - - Selects only tree entries which differ between at least 2 trees. - - This filter also prevents a TreeWalk from recursing into a subtree if all - parent trees have the identical subtree at the same path. This - dramatically improves walk performance as only the changed subtrees are - entered into. - - If this filter is applied to a walker with only one tree it behaves like - {@link #ALL}, or as though the walker was matching a virtual empty tree - against the single tree it was actually given. Applications may wish to - treat such a difference as "all names added". - - - Create a new filter that does the opposite of this filter. - - @return a new filter that includes tree entries this filter rejects. - - - Determine if the current entry is interesting to report. - - This method is consulted for subtree entries even if - {@link TreeWalk#isRecursive()} is enabled. The consultation allows the - filter to bypass subtree recursion on a case-by-case basis, even when - recursion is enabled at the application level. - - @param walker - the walker the filter needs to examine. - @return true if the current entry should be seen by the application; - false to hide the entry. - @throws MissingObjectException - an object the filter needs to consult to determine its answer - does not exist in the Git repository the walker is operating - on. Filtering this current walker entry is impossible without - the object. - @throws IncorrectObjectTypeException - an object the filter needed to consult was not of the - expected object type. This usually indicates a corrupt - repository, as an object link is referencing the wrong type. - @throws IOException - a loose object or pack file could not be Read to obtain data - necessary for the filter to make its decision. - - - Does this tree filter require a recursive walk to match everything? - - If this tree filter is matching on full entry path names and its pattern - is looking for a '/' then the filter would require a recursive TreeWalk - to accurately make its decisions. The walker is not required to enable - recursive behavior for any particular filter, this is only a hint. - - @return true if the filter would like to have the walker recurse into - subtrees to make sure it matches everything correctly; false if - the filter does not require entering subtrees. - - - Clone this tree filter, including its parameters. - - This is a deep Clone. If this filter embeds objects or other filters it - must also Clone those, to ensure the instances do not share mutable data. - - @return another copy of this filter, suitable for another thread. - - - Create a filter with two filters, both of which must match. - - @param a - first filter to test. - @param b - second filter to test. - @return a filter that must match both input filters. - - - Create a filter around many filters, all of which must match. - - @param list - list of filters to match against. Must contain at least 2 - filters. - @return a filter that must match all input filters. - - - Create a filter around many filters, all of which must match. - - @param list - list of filters to match against. Must contain at least 2 - filters. - @return a filter that must match all input filters. - - - Includes an entry only if the subfilter does not include the entry. - - - Create a filter that negates the result of another filter. - - @param a - filter to negate. - @return a filter that does the reverse of a. - - - Includes a tree entry if any subfilters include the same tree entry. - - Classic shortcut behavior is used, so evaluation of the - {@link TreeFilter#include(TreeWalk)} method stops as soon as a true result is - obtained. Applications can improve filtering performance by placing faster - filters that are more likely to accept a result earlier in the list. - - - Create a filter with two filters, one of which must match. - - @param a - first filter to test. - @param b - second filter to test. - @return a filter that must match at least one input filter. - - - Create a filter around many filters, one of which must match. - - @param list - list of filters to match against. Must contain at least 2 - filters. - @return a filter that must match at least one input filter. - - - Create a filter around many filters, one of which must match. - - @param list - list of filters to match against. Must contain at least 2 - filters. - @return a filter that must match at least one input filter. - - - Includes tree entries only if they match the configured path. - - Applications should use {@link PathFilterGroup} to connect these into a tree - filter graph, as the group supports breaking out of traversal once it is - known the path can never match. - - - Create a new tree filter for a user supplied path. - - Path strings are relative to the root of the repository. If the user's - input should be assumed relative to a subdirectory of the repository the - caller must prepend the subdirectory's path prior to creating the filter. - - Path strings use '/' to delimit directories on all platforms. - - @param path - the path to filter on. Must not be the empty string. All - trailing '/' characters will be trimmed before string's Length - is checked or is used as part of the constructed filter. - @return a new filter for the requested path. - @throws ArgumentException - the path supplied was the empty string. - - - Includes tree entries only if they match one or more configured paths. - - Operates like {@link PathFilter} but causes the walk to abort as soon as the - tree can no longer match any of the paths within the group. This may bypass - the bool logic of a higher level AND or OR group, but does improve - performance for the common case of examining one or more modified paths. - - This filter is effectively an OR group around paths, with the early abort - feature described above. - - - Create a collection of path filters from Java strings. - - Path strings are relative to the root of the repository. If the user's - input should be assumed relative to a subdirectory of the repository the - caller must prepend the subdirectory's path prior to creating the filter. - - Path strings use '/' to delimit directories on all platforms. - - Paths may appear in any order within the collection. Sorting may be done - internally when the group is constructed if doing so will improve path - matching performance. - - @param paths - the paths to test against. Must have at least one entry. - @return a new filter for the list of paths supplied. - - - Create a collection of path filters. - - Paths may appear in any order within the collection. Sorting may be done - internally when the group is constructed if doing so will improve path - matching performance. - - @param paths - the paths to test against. Must have at least one entry. - @return a new filter for the list of paths supplied. - - - Includes tree entries only if they match the configured path. - - - Create a new tree filter for a user supplied path. - - Path strings use '/' to delimit directories on all platforms. - - @param path - the path (suffix) to filter on. Must not be the empty string. - @return a new filter for the requested path. - @throws IllegalArgumentException - the path supplied was the empty string. - - - - Parses raw Git trees from the canonical semi-text/semi-binary format. - - - - First offset within {@link #_raw} of the prior entry. - - - First offset within {@link #_raw} of the current entry's data. - - - Offset one past the current entry (first byte of next entry). - - - - Create a new parser. - - - - Create a new parser for a tree appearing in a subset of a repository. - - @param prefix - position of this iterator in the repository tree. The value - may be null or the empty array to indicate the prefix is the - root of the repository. A trailing slash ('/') is - automatically appended if the prefix does not end in '/'. - @param repo - repository to load the tree data from. - @param treeId - identity of the tree being parsed; used only in exception - messages if data corruption is found. - @param curs - a window cursor to use during data access from the repository. - @throws MissingObjectException - the object supplied is not available from the repository. - @throws IncorrectObjectTypeException - the object supplied as an argument is not actually a tree and - cannot be parsed as though it were a tree. - @throws IOException - a loose object or pack file could not be Read. - - - Reset this parser to walk through the given tree data. - - @param treeData - the raw tree content. - - - Reset this parser to walk through the given tree. - - @param repo - repository to load the tree data from. - @param id - identity of the tree being parsed; used only in exception - messages if data corruption is found. - @param curs - window cursor to use during repository access. - @return the root level parser. - @throws MissingObjectException - the object supplied is not available from the repository. - @throws IncorrectObjectTypeException - the object supplied as an argument is not actually a tree and - cannot be parsed as though it were a tree. - @throws IOException - a loose object or pack file could not be Read. - - - - Return this iterator, or its parent, if the tree is at eof. - - - - - Reset this parser to walk through the given tree. - - @param repo - repository to load the tree data from. - @param id - identity of the tree being parsed; used only in exception - messages if data corruption is found. - @param curs - window cursor to use during repository access. - @throws MissingObjectException - the object supplied is not available from the repository. - @throws IncorrectObjectTypeException - the object supplied as an argument is not actually a tree and - cannot be parsed as though it were a tree. - @throws IOException - a loose object or pack file could not be Read. - - - Back door to quickly Create a subtree iterator for any subtree. - - Don't use this unless you are ObjectWalk. The method is meant to be - called only once the current entry has been identified as a tree and its - identity has been converted into an ObjectId. - - @param repo - repository to load the tree data from. - @param id - ObjectId of the tree to open. - @param curs - window cursor to use during repository access. - @return a new parser that walks over the current subtree. - @throws IOException - a loose object or pack file could not be Read. - - - - Iterator over an empty tree (a directory with no files). - - - - - Create a new iterator with no parent. - - - - - Create an iterator for a subtree of an existing iterator. - The caller is responsible for setting up the path of the child iterator. - - Parent tree iterator. - - - - Create an iterator for a subtree of an existing iterator. - The caller is responsible for setting up the path of the child iterator. - - Parent tree iterator. - - Path array to be used by the child iterator. This path must - contain the path from the top of the walk to the first child - and must end with a '/'. - - - position within where the child can - insert its data. The value at - [-1] - must be '/'. - - - - - Working directory iterator for standard Java IO. - - This iterator uses the standard java.io package to Read the - specified working directory as part of a . - - - - - Walks a working directory tree as part of a {@link TreeWalk}. - - Most applications will want to use the standard implementation of this - iterator, {@link FileTreeIterator}, as that does all IO through the standard - java.io package. Plugins for a Java based IDE may however wish - to Create their own implementations of this class to allow traversal of the - IDE's project space, as well as benefit from any caching the IDE may have. - - - - - - - Size we perform file IO in if we have to Read and hash a file. - - - - - An empty entry array, suitable for . - - - - - The for the current entry. - - - - - Index within that came from. - - - - - Buffer used to perform computations. - - - - - Digest computer for computations. - - - - - File name character encoder. - - - - - List of entries obtained from the subclass. - - - - - Total number of _entries in that are valid. - - - - - Current position within . - - - - - Create a new iterator with no parent. - - - - - Create a new iterator with no parent and a prefix. - - The prefix path supplied is inserted in front of all paths generated by - this iterator. It is intended to be used when an iterator is being - created for a subsection of an overall repository and needs to be - combined with other iterators that are created to run over the entire - repository namespace. - - - Position of this iterator in the repository tree. The value - may be null or the empty string to indicate the prefix is the - root of the repository. A trailing slash ('/') is - automatically appended if the prefix does not end in '/'. - - - - - Create an iterator for a subtree of an existing iterator. - - Parent tree iterator. - - - - Get the byte Length of this entry. - - Size of this file, in bytes. - - - - Get the last modified time of this entry. - - - Last modified time of this file, in milliseconds since the epoch - (Jan 1, 1970 UTC). - - - - - Constructor helper. - - - Files in the subtree of the work tree this iterator operates on. - - - - - Obtain the current entry from this iterator. - - - - - A single entry within a working directory tree. - - - - - Obtain an input stream to Read the file content. - - Efficient implementations are not required. The caller will usually - obtain the stream only once per entry, if at all. - - The input stream should not use buffering if the implementation can - avoid it. The caller will buffer as necessary to perform efficient - block IO operations. - - The caller will close the stream once complete. - - - A stream to Read from the file. - - - - - Get the type of this entry. - - Note: Efficient implementation required. - - The implementation of this method must be efficient. If a subclass - needs to compute the value they should cache the reference within an - instance member instead. - - - A file mode constant from . - - - - - Get the byte Length of this entry. - - Note: Efficient implementation required. - - The implementation of this method must be efficient. If a subclass - needs to compute the value they should cache the reference within an - instance member instead. - - - - - Get the last modified time of this entry. - - Note: Efficient implementation required. - - The implementation of this method must be efficient. If a subclass - needs to compute the value they should cache the reference within an - instance member instead. - - - - - Get the name of this entry within its directory. - - Efficient implementations are not required. The caller will obtain - the name only once and cache it once obtained. - - - - - Create a new iterator to traverse the given directory and its children. - - - The starting directory. This directory should correspond to - the root of the repository. - - - - - Create a new iterator to traverse a subdirectory. - - - The parent iterator we were created from. - - - The subdirectory. This should be a directory contained within - the parent directory. - - - - - Wrapper for a standard file - - - - - Get the underlying file of this entry. - - - - Specialized TreeWalk to detect directory-file (D/F) name conflicts. - - Due to the way a Git tree is organized the standard {@link TreeWalk} won't - easily find a D/F conflict when merging two or more trees together. In the - standard TreeWalk the file will be returned first, and then much later the - directory will be returned. This makes it impossible for the application to - efficiently detect and handle the conflict. - - Using this walk implementation causes the directory to report earlier than - usual, at the same time as the non-directory entry. This permits the - application to handle the D/F conflict in a single step. The directory is - returned only once, so it does not get returned later in the iteration. - - When a D/F conflict is detected {@link TreeWalk#isSubtree()} will return true - and {@link TreeWalk#enterSubtree()} will recurse into the subtree, no matter - which iterator originally supplied the subtree. - - Because conflicted directories report early, using this walk implementation - to populate a {@link DirCacheBuilder} may cause the automatic resorting to - run and fix the entry ordering. - - This walk implementation requires more CPU to implement a look-ahead and a - look-behind to merge a D/F pair together, or to skip a previously reported - directory. In typical Git repositories the look-ahead cost is 0 and the - look-behind doesn't trigger, as users tend not to Create trees which contain - both "foo" as a directory and "foo.c" as a file. - - In the worst-case however several thousand look-ahead steps per walk step may - be necessary, making the overhead quite significant. Since this worst-case - should never happen this walk implementation has made the time/space tradeoff - in favor of more-time/less-space, as that better suits the typical case. - - - Walks one or more {@link AbstractTreeIterator}s in parallel. - - This class can perform n-way differences across as many trees as necessary. - - Each tree added must have the same root as existing trees in the walk. - - A TreeWalk instance can only be used once to generate results. Running a - second time requires creating a new TreeWalk instance, or invoking - {@link #reset()} and adding new trees before starting again. Resetting an - existing instance may be faster for some applications as some internal - buffers may be recycled. - - TreeWalk instances are not thread-safe. Applications must either restrict - usage of a TreeWalk instance to a single thread, or implement their own - synchronization at a higher level. - - Multiple simultaneous TreeWalk instances per {@link Repository} are - permitted, even from concurrent threads. - - - Open a tree walk and filter to exactly one path. - - The returned tree walk is already positioned on the requested path, so - the caller should not need to invoke {@link #next()} unless they are - looking for a possible directory/file name conflict. - - @param db - repository to Read tree object data from. - @param path - single path to advance the tree walk instance into. - @param trees - one or more trees to walk through, all with the same root. - @return a new tree walk configured for exactly this one path; null if no - path was found in any of the trees. - @throws IOException - reading a pack file or loose object failed. - @throws CorruptObjectException - an tree object could not be Read as its data stream did not - appear to be a tree, or could not be inflated. - @throws IncorrectObjectTypeException - an object we expected to be a tree was not a tree. - @throws MissingObjectException - a tree object was not found. - - - Open a tree walk and filter to exactly one path. - - The returned tree walk is already positioned on the requested path, so - the caller should not need to invoke {@link #next()} unless they are - looking for a possible directory/file name conflict. - - @param db - repository to Read tree object data from. - @param path - single path to advance the tree walk instance into. - @param tree - the single tree to walk through. - @return a new tree walk configured for exactly this one path; null if no - path was found in any of the trees. - @throws IOException - reading a pack file or loose object failed. - @throws CorruptObjectException - an tree object could not be Read as its data stream did not - appear to be a tree, or could not be inflated. - @throws IncorrectObjectTypeException - an object we expected to be a tree was not a tree. - @throws MissingObjectException - a tree object was not found. - - - - Create a new tree walker for a given repository. - - - The repository the walker will obtain data from. - - - - Get the currently configured filter. - - @return the current filter. Never null as a filter is always needed. - - - Set the tree entry filter for this walker. - - Multiple filters may be combined by constructing an arbitrary tree of - AndTreeFilter or OrTreeFilter instances to - describe the bool expression required by the application. Custom - filter implementations may also be constructed by applications. - - Note that filters are not thread-safe and may not be shared by concurrent - TreeWalk instances. Every TreeWalk must be supplied its own unique - filter, unless the filter implementation specifically states it is (and - always will be) thread-safe. Callers may use {@link TreeFilter#Clone()} - to Create a unique filter tree for this TreeWalk instance. - - @param newFilter - the new filter. If null the special {@link TreeFilter#ALL} - filter will be used instead, as it matches every entry. - @see org.spearce.jgit.treewalk.filter.AndTreeFilter - @see org.spearce.jgit.treewalk.filter.OrTreeFilter - - - - Reset this walker so new tree iterators can be added to it. - - - - Reset this walker to run over a single existing tree. - - @param id - the tree we need to parse. The walker will execute over this - single tree if the reset is successful. - @throws MissingObjectException - the given tree object does not exist in this repository. - @throws IncorrectObjectTypeException - the given object id does not denote a tree, but instead names - some other non-tree type of object. Note that commits are not - trees, even if they are sometimes called a "tree-ish". - @throws CorruptObjectException - the object claimed to be a tree, but its contents did not - appear to be a tree. The repository may have data corruption. - @throws IOException - a loose object or pack file could not be Read. - - - Reset this walker to run over a set of existing trees. - - @param ids - the trees we need to parse. The walker will execute over this - many parallel trees if the reset is successful. - @throws MissingObjectException - the given tree object does not exist in this repository. - @throws IncorrectObjectTypeException - the given object id does not denote a tree, but instead names - some other non-tree type of object. Note that commits are not - trees, even if they are sometimes called a "tree-ish". - @throws CorruptObjectException - the object claimed to be a tree, but its contents did not - appear to be a tree. The repository may have data corruption. - @throws IOException - a loose object or pack file could not be Read. - - - Add an already existing tree object for walking. - - The position of this tree is returned to the caller, in case the caller - has lost track of the order they added the trees into the walker. - - The tree must have the same root as existing trees in the walk. - - @param id - identity of the tree object the caller wants walked. - @return position of this tree within the walker. - @throws MissingObjectException - the given tree object does not exist in this repository. - @throws IncorrectObjectTypeException - the given object id does not denote a tree, but instead names - some other non-tree type of object. Note that commits are not - trees, even if they are sometimes called a "tree-ish". - @throws CorruptObjectException - the object claimed to be a tree, but its contents did not - appear to be a tree. The repository may have data corruption. - @throws IOException - a loose object or pack file could not be Read. - - - Add an already created tree iterator for walking. - - The position of this tree is returned to the caller, in case the caller - has lost track of the order they added the trees into the walker. - - The tree which the iterator operates on must have the same root as - existing trees in the walk. - - @param parentIterator - an iterator to walk over. The iterator should be new, with no - parent, and should still be positioned before the first entry. - The tree which the iterator operates on must have the same root - as other trees in the walk. - - @return position of this tree within the walker. - @throws CorruptObjectException - the iterator was unable to obtain its first entry, due to - possible data corruption within the backing data store. - - - Get the number of trees known to this walker. - - @return the total number of trees this walker is iterating over. - - - Advance this walker to the next relevant entry. - - @return true if there is an entry available; false if all entries have - been walked and the walk of this set of tree iterators is over. - @throws MissingObjectException - {@link #isRecursive()} was enabled, a subtree was found, but - the subtree object does not exist in this repository. The - repository may be missing objects. - @throws IncorrectObjectTypeException - {@link #isRecursive()} was enabled, a subtree was found, and - the subtree id does not denote a tree, but instead names some - other non-tree type of object. The repository may have data - corruption. - @throws CorruptObjectException - the contents of a tree did not appear to be a tree. The - repository may have data corruption. - @throws IOException - a loose object or pack file could not be Read. - - - - Obtain the tree iterator for the current entry. - - Entering into (or exiting out of) a subtree causes the current tree - iterator instance to be changed for the nth tree. This allows the tree - iterators to manage only one list of items, with the diving handled by - recursive trees. - - type of the tree iterator expected by the caller. - tree to obtain the current iterator of. - type of the tree iterator expected by the caller. - - The current iterator of the requested type; null if the tree - has no entry to match the current path. - - - - Obtain the raw {@link FileMode} bits for the current entry. - - Every added tree supplies mode bits, even if the tree does not contain - the current entry. In the latter case {@link FileMode#MISSING}'s mode - bits (0) are returned. - - @param nth - tree to obtain the mode bits from. - @return mode bits for the current entry of the nth tree. - @see FileMode#FromBits(int) - - - Obtain the {@link FileMode} for the current entry. - - Every added tree supplies a mode, even if the tree does not contain the - current entry. In the latter case {@link FileMode#MISSING} is returned. - - @param nth - tree to obtain the mode from. - @return mode for the current entry of the nth tree. - - - Obtain the ObjectId for the current entry. - - Using this method to compare ObjectId values between trees of this walker - is very inefficient. Applications should try to use - {@link #idEqual(int, int)} or {@link #getObjectId(MutableObjectId, int)} - whenever possible. - - Every tree supplies an object id, even if the tree does not contain the - current entry. In the latter case {@link ObjectId#zeroId()} is returned. - - @param nth - tree to obtain the object identifier from. - @return object identifier for the current tree entry. - @see #getObjectId(MutableObjectId, int) - @see #idEqual(int, int) - - - Obtain the ObjectId for the current entry. - - Every tree supplies an object id, even if the tree does not contain the - current entry. In the latter case {@link ObjectId#zeroId()} is supplied. - - Applications should try to use {@link #idEqual(int, int)} when possible - as it avoids conversion overheads. - - @param out - buffer to copy the object id into. - @param nth - tree to obtain the object identifier from. - @see #idEqual(int, int) - - - Compare two tree's current ObjectId values for equality. - - @param nthA - first tree to compare the object id from. - @param nthB - second tree to compare the object id from. - @return result of - getObjectId(nthA).Equals(getObjectId(nthB)). - @see #getObjectId(int) - - - Get the current entry's name within its parent tree. - - This method is not very efficient and is primarily meant for debugging - and output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - @return name of the current entry within the parent tree (or directory). - The name never includes a '/'. - - - Get the current entry's complete path. - - This method is not very efficient and is primarily meant for debugging - and output generation. Applications should try to avoid calling it, - and if invoked do so only once per interesting entry, where the name is - absolutely required for correct function. - - @return complete path of the current entry, from the root of the - repository. If the current entry is in a subtree there will be at - least one '/' in the returned string. - - - Get the current entry's complete path as a UTF-8 byte array. - - @return complete path of the current entry, from the root of the - repository. If the current entry is in a subtree there will be at - least one '/' in the returned string. - - - Test if the supplied path matches the current entry's path. - - This method tests that the supplied path is exactly equal to the current - entry, or is one of its parent directories. It is faster to use this - method then to use {@link #getPathString()} to first Create a string - object, then test startsWith or some other type of string - match function. - - @param p - path buffer to test. Callers should ensure the path does not - end with '/' prior to invocation. - @param pLen - number of bytes from buf to test. - @return < 0 if p is before the current path; 0 if p matches the current - path; 1 if the current path is past p and p will never match - again on this tree walk. - - - Test if the supplied path matches (being suffix of) the current entry's - path. - - This method tests that the supplied path is exactly equal to the current - entry, or is relative to one of entry's parent directories. It is faster - to use this method then to use {@link #getPathString()} to first Create - a String object, then test endsWith or some other type of - string match function. - - @param p - path buffer to test. - @param pLen - number of bytes from buf to test. - @return true if p is suffix of the current path; - false if otherwise - - - Is the current entry a subtree? - - This method is faster then testing the raw mode bits of all trees to see - if any of them are a subtree. If at least one is a subtree then this - method will return true. - - @return true if {@link #enterSubtree()} will work on the current node. - - - Is the current entry a subtree returned After its children? - - @return true if the current node is a tree that has been returned After - its children were already processed. - @see #isPostOrderTraversal() - - - Enter into the current subtree. - - If the current entry is a subtree this method arranges for its children - to be returned before the next sibling following the subtree is returned. - - @throws MissingObjectException - a subtree was found, but the subtree object does not exist in - this repository. The repository may be missing objects. - @throws IncorrectObjectTypeException - a subtree was found, and the subtree id does not denote a - tree, but instead names some other non-tree type of object. - The repository may have data corruption. - @throws CorruptObjectException - the contents of a tree did not appear to be a tree. The - repository may have data corruption. - @throws IOException - a loose object or pack file could not be Read. - - - - Gets the repository this tree walker is reading from. - - - - - Is this walker automatically entering into subtrees? - - If recursive mode is enabled the walker will hide subtree nodes from the - calling application and will produce only file level nodes. If a tree - (directory) is deleted then all of the file level nodes will appear to be - deleted, recursively, through as many levels as necessary to account for - all entries. - - - - Does this walker return a tree entry After it exits the subtree? - - If post order traversal is enabled then the walker will return a subtree - After it has returned the last entry within that subtree. This may cause - a subtree to be seen by the application twice if {@link #isRecursive()} - is false, as the application will see it once, call - {@link #enterSubtree()}, and then see it again as it leaves the subtree. - - If an application does not enable {@link #isRecursive()} and it does not - call {@link #enterSubtree()} then the tree is returned only once as none - of the children were processed. - - @return true if subtrees are returned After entries within the subtree. - - - Get the current subtree depth of this walker. - - @return the current subtree depth of this walker. - - - Create a new tree walker for a given repository. - - @param repo - the repository the walker will obtain data from. - - - - Atomically set the value to the given updated value if the current value == the expected value. the expected value - - the expected value - the new value - true if successful. False return indicates that the actual value was not equal to the expected value. - - - - Set to the given value. - - the new value - - - - Get the current value. - - the current value - - - - Atomically add the given value to current value. - - the value to add - the updated value - - - - Atomically increment by one the current value. - - the updated value - - - - Atomically decrement by one the current value. - - the updated value - - - - A normal Stream might provide a timeout on a specific read opreation. - However, using StreamReader.ReadToEnd() on it can still get stuck for a long time. - - This class offers a timeout from the moment of it's construction to the read. - Every read past the timeout from the stream's construction will fail. - - If the timeout elapsed while a read is in progress TimeoutStream is not responsible for aborting - the read (there is no known good way in .NET to do it) - - See - - http://www.dotnet247.com/247reference/msgs/36/182553.aspx and - http://www.google.co.il/search?q=cancel+async+Stream+read+.net - - - - Stream originalStream = GetStream(); - StreamReader reader = new StreamReader(new TimeoutStream(originalStream, 5000)); - - // assuming the originalStream has a per-operation timeout, then ReadToEnd() - // will return in (5000 + THAT_TIMEOUT) - string foo = reader.ReadToEnd(); - - - - - - Assigns the specified int value to each element of the specified array of ints. - - type of the array's values - the array to be filled - the value to be stored in all elements of the array - - - - Assigns the specified int value to each element of the specified range of the specified array of ints. - The range to be filled extends from index fromIndex, inclusive, to index toIndex, exclusive. - (If fromIndex==toIndex, the range to be filled is empty.) - - type of the array's values - the array to be filled - the index of the first element (inclusive) to be filled with the specified value - the index of the last element (exclusive) to be filled with the specified value - the value to be stored in the specified range of elements of the array - - - - Implementation of EndianBitConverter which converts to/from big-endian - byte arrays. - - - - - Equivalent of System.BitConverter, but with either endianness. - - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - Different computer architectures store data using different byte orders. "Big-endian" - means the most significant byte is on the left end of a word. "Little-endian" means the - most significant byte is on the right end of a word. - - true if this converter is little-endian, false otherwise. - - - - Converts the specified double-precision floating point number to a - 64-bit signed integer. Note: the endianness of this converter does not - affect the returned value. - - The number to convert. - A 64-bit signed integer whose value is equivalent to value. - - - - Converts the specified 64-bit signed integer to a double-precision - floating point number. Note: the endianness of this converter does not - affect the returned value. - - The number to convert. - A double-precision floating point number whose value is equivalent to value. - - - - Converts the specified single-precision floating point number to a - 32-bit signed integer. Note: the endianness of this converter does not - affect the returned value. - - The number to convert. - A 32-bit signed integer whose value is equivalent to value. - - - - Converts the specified 32-bit signed integer to a single-precision floating point - number. Note: the endianness of this converter does not - affect the returned value. - - The number to convert. - A single-precision floating point number whose value is equivalent to value. - - - - Returns a Boolean value converted from one byte at a specified position in a byte array. - - An array of bytes. - The starting position within value. - true if the byte at startIndex in value is nonzero; otherwise, false. - - - - Returns a Unicode character converted from two bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A character formed by two bytes beginning at startIndex. - - - - Returns a double-precision floating point number converted from eight bytes - at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A double precision floating point number formed by eight bytes beginning at startIndex. - - - - Returns a single-precision floating point number converted from four bytes - at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A single precision floating point number formed by four bytes beginning at startIndex. - - - - Returns a 16-bit signed integer converted from two bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 16-bit signed integer formed by two bytes beginning at startIndex. - - - - Returns a 32-bit signed integer converted from four bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 32-bit signed integer formed by four bytes beginning at startIndex. - - - - Returns a 64-bit signed integer converted from eight bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 64-bit signed integer formed by eight bytes beginning at startIndex. - - - - Returns a 16-bit unsigned integer converted from two bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 16-bit unsigned integer formed by two bytes beginning at startIndex. - - - - Returns a 32-bit unsigned integer converted from four bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 32-bit unsigned integer formed by four bytes beginning at startIndex. - - - - Returns a 64-bit unsigned integer converted from eight bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A 64-bit unsigned integer formed by eight bytes beginning at startIndex. - - - - Checks the given argument for validity. - - The byte array passed in - The start index passed in - The number of bytes required - value is a null reference - - startIndex is less than zero or greater than the length of value minus bytesRequired. - - - - - Checks the arguments for validity before calling FromBytes - (which can therefore assume the arguments are valid). - - The bytes to convert after checking - The index of the first byte to convert - The number of bytes to convert - - - - - Convert the given number of bytes from the given array, from the given start - position, into a long, using the bytes as the least significant part of the long. - By the time this is called, the arguments have been checked for validity. - - The bytes to convert - The index of the first byte to convert - The number of bytes to use in the conversion - The converted number - - - - Returns a String converted from the elements of a byte array. - - An array of bytes. - All the elements of value are converted. - - A String of hexadecimal pairs separated by hyphens, where each pair - represents the corresponding element in value; for example, "7F-2C-4A". - - - - - Returns a String converted from the elements of a byte array starting at a specified array position. - - An array of bytes. - The starting position within value. - The elements from array position startIndex to the end of the array are converted. - - A String of hexadecimal pairs separated by hyphens, where each pair - represents the corresponding element in value; for example, "7F-2C-4A". - - - - - Returns a String converted from a specified number of bytes at a specified position in a byte array. - - An array of bytes. - The starting position within value. - The number of bytes to convert. - The length elements from array position startIndex are converted. - - A String of hexadecimal pairs separated by hyphens, where each pair - represents the corresponding element in value; for example, "7F-2C-4A". - - - - - Returns a decimal value converted from sixteen bytes - at a specified position in a byte array. - - An array of bytes. - The starting position within value. - A decimal formed by sixteen bytes beginning at startIndex. - - - - Returns the specified decimal value as an array of bytes. - - The number to convert. - An array of bytes with length 16. - - - - Copies the specified decimal value into the specified byte array, - beginning at the specified index. - - A character to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Returns an array with the given number of bytes formed - from the least significant bytes of the specified value. - This is used to implement the other GetBytes methods. - - The value to get bytes for - The number of significant bytes to return - - - - Returns the specified Boolean value as an array of bytes. - - A Boolean value. - An array of bytes with length 1. - - - - Returns the specified Unicode character value as an array of bytes. - - A character to convert. - An array of bytes with length 2. - - - - Returns the specified double-precision floating point value as an array of bytes. - - The number to convert. - An array of bytes with length 8. - - - - Returns the specified 16-bit signed integer value as an array of bytes. - - The number to convert. - An array of bytes with length 2. - - - - Returns the specified 32-bit signed integer value as an array of bytes. - - The number to convert. - An array of bytes with length 4. - - - - Returns the specified 64-bit signed integer value as an array of bytes. - - The number to convert. - An array of bytes with length 8. - - - - Returns the specified single-precision floating point value as an array of bytes. - - The number to convert. - An array of bytes with length 4. - - - - Returns the specified 16-bit unsigned integer value as an array of bytes. - - The number to convert. - An array of bytes with length 2. - - - - Returns the specified 32-bit unsigned integer value as an array of bytes. - - The number to convert. - An array of bytes with length 4. - - - - Returns the specified 64-bit unsigned integer value as an array of bytes. - - The number to convert. - An array of bytes with length 8. - - - - Copies the given number of bytes from the least-specific - end of the specified value into the specified byte array, beginning - at the specified index. - This is used to implement the other CopyBytes methods. - - The value to copy bytes for - The number of significant bytes to copy - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the given number of bytes from the least-specific - end of the specified value into the specified byte array, beginning - at the specified index. - This must be implemented in concrete derived classes, but the implementation - may assume that the value will fit into the buffer. - - The value to copy bytes for - The number of significant bytes to copy - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified Boolean value into the specified byte array, - beginning at the specified index. - - A Boolean value. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified Unicode character value into the specified byte array, - beginning at the specified index. - - A character to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified double-precision floating point value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 16-bit signed integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 32-bit signed integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 64-bit signed integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified single-precision floating point value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 16-bit unsigned integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 32-bit unsigned integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Copies the specified 64-bit unsigned integer value into the specified byte array, - beginning at the specified index. - - The number to convert. - The byte array to copy the bytes into - The first index into the array to copy the bytes into - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - - - Returns a little-endian bit converter instance. The same instance is - always returned. - - - - - Returns a big-endian bit converter instance. The same instance is - always returned. - - - - - Union used solely for the equivalent of DoubleToInt64Bits and vice versa. - - - - - Int32 version of the value. - - - - - Single version of the value. - - - - - Creates an instance representing the given integer. - - The integer value of the new instance. - - - - Creates an instance representing the given floating point number. - - The floating point value of the new instance. - - - - Returns the value of the instance as an integer. - - - - - Returns the value of the instance as a floating point number. - - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - Different computer architectures store data using different byte orders. "Big-endian" - means the most significant byte is on the left end of a word. "Little-endian" means the - most significant byte is on the right end of a word. - - true if this converter is little-endian, false otherwise. - - - - Copies the specified number of bytes from value to buffer, starting at index. - - The value to copy - The number of bytes to copy - The buffer to copy the bytes into - The index to start at - - - - Returns a value built from the specified number of bytes from the given buffer, - starting at index. - - The data in byte array format - The first index to use - The number of bytes to use - The value built from the given bytes - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - - - Gets the DateTime in the sortable ISO format. - - - - - - - Gets the DateTimeOffset in the sortable ISO format. - - - - - - - A light version of a std Java class that updates a hash while writing bytes to a stream. - - - - - Equivalent of System.IO.BinaryReader, but with either endianness, depending on - the EndianBitConverter it is constructed with. No data is buffered in the - reader; the client may seek within the stream at will. - - - - - Whether or not this reader has been disposed yet. - - - - - Decoder to use for string conversions. - - - - - Buffer used for temporary storage before conversion into primitives - - - - - Buffer used for temporary storage when reading a single character - - - - - Minimum number of bytes used to encode a character - - - - - Equivalent of System.IO.BinaryWriter, but with either endianness, depending on - the EndianBitConverter it is constructed with. - - Converter to use when reading data - Stream to read data from - - - - Constructs a new binary reader with the given bit converter, reading - to the given stream, using the given encoding. - - Converter to use when reading data - Stream to read data from - Encoding to use when reading character data - - - - Closes the reader, including the underlying stream.. - - - - - Seeks within the stream. - - Offset to seek to. - Origin of seek operation. - - - - Reads a single byte from the stream. - - The byte read - - - - Reads a single signed byte from the stream. - - The byte read - - - - Reads a boolean from the stream. 1 byte is read. - - The boolean read - - - - Reads a 16-bit signed integer from the stream, using the bit converter - for this reader. 2 bytes are read. - - The 16-bit integer read - - - - Reads a 32-bit signed integer from the stream, using the bit converter - for this reader. 4 bytes are read. - - The 32-bit integer read - - - - Reads a 64-bit signed integer from the stream, using the bit converter - for this reader. 8 bytes are read. - - The 64-bit integer read - - - - Reads a 16-bit unsigned integer from the stream, using the bit converter - for this reader. 2 bytes are read. - - The 16-bit unsigned integer read - - - - Reads a 32-bit unsigned integer from the stream, using the bit converter - for this reader. 4 bytes are read. - - The 32-bit unsigned integer read - - - - Reads a 64-bit unsigned integer from the stream, using the bit converter - for this reader. 8 bytes are read. - - The 64-bit unsigned integer read - - - - Reads a single-precision floating-point value from the stream, using the bit converter - for this reader. 4 bytes are read. - - The floating point value read - - - - Reads a double-precision floating-point value from the stream, using the bit converter - for this reader. 8 bytes are read. - - The floating point value read - - - - Reads a decimal value from the stream, using the bit converter - for this reader. 16 bytes are read. - - The decimal value read - - - - Reads a single character from the stream, using the character encoding for - this reader. If no characters have been fully read by the time the stream ends, - -1 is returned. - - The character read, or -1 for end of stream. - - - - Reads the specified number of characters into the given buffer, starting at - the given index. - - The buffer to copy data into - The first index to copy data into - The number of characters to read - The number of characters actually read. This will only be less than - the requested number of characters if the end of the stream is reached. - - - - - Reads the specified number of bytes into the given buffer, starting at - the given index. - - The buffer to copy data into - The first index to copy data into - The number of bytes to read - The number of bytes actually read. This will only be less than - the requested number of bytes if the end of the stream is reached. - - - - - Reads the specified number of bytes, returning them in a new byte array. - If not enough bytes are available before the end of the stream, this - method will return what is available. - - The number of bytes to read - The bytes read - - - - Reads the specified number of bytes, returning them in a new byte array. - If not enough bytes are available before the end of the stream, this - method will throw an IOException. - - The number of bytes to read - The bytes read - - - - Reads a 7-bit encoded integer from the stream. This is stored with the least significant - information first, with 7 bits of information per byte of value, and the top - bit as a continuation flag. This method is not affected by the endianness - of the bit converter. - - The 7-bit encoded integer read from the stream. - - - - Reads a 7-bit encoded integer from the stream. This is stored with the most significant - information first, with 7 bits of information per byte of value, and the top - bit as a continuation flag. This method is not affected by the endianness - of the bit converter. - - The 7-bit encoded integer read from the stream. - - - - Reads a length-prefixed string from the stream, using the encoding for this reader. - A 7-bit encoded integer is first read, which specifies the number of bytes - to read from the stream. These bytes are then converted into a string with - the encoding for this reader. - - The string read from the stream. - - - - Checks whether or not the reader has been disposed, throwing an exception if so. - - - - - Reads the given number of bytes from the stream, throwing an exception - if they can't all be read. - - Buffer to read into - Number of bytes to read - - - - Reads the given number of bytes from the stream if possible, returning - the number of bytes actually read, which may be less than requested if - (and only if) the end of the stream is reached. - - Buffer to read into - Number of bytes to read - Number of bytes actually read - - - - Disposes of the underlying stream. - - - - - The bit converter used to read values from the stream - - - - - The encoding used to read strings - - - - - Gets the underlying stream of the EndianBinaryReader. - - - - - Equivalent of System.IO.BinaryWriter, but with either endianness, depending on - the EndianBitConverter it is constructed with. - - - - - Whether or not this writer has been disposed yet. - - - - - Buffer used for temporary storage during conversion from primitives - - - - - Buffer used for Write(char) - - - - - Constructs a new binary writer with the given bit converter, writing - to the given stream, using UTF-8 encoding. - - Converter to use when writing data - Stream to write data to - - - - Constructs a new binary writer with the given bit converter, writing - to the given stream, using the given encoding. - - Converter to use when writing data - Stream to write data to - Encoding to use when writing character data - - - - Closes the writer, including the underlying stream. - - - - - Flushes the underlying stream. - - - - - Seeks within the stream. - - Offset to seek to. - Origin of seek operation. - - - - Writes a boolean value to the stream. 1 byte is written. - - The value to write - - - - Writes a 16-bit signed integer to the stream, using the bit converter - for this writer. 2 bytes are written. - - The value to write - - - - Writes a 32-bit signed integer to the stream, using the bit converter - for this writer. 4 bytes are written. - - The value to write - - - - Writes a 64-bit signed integer to the stream, using the bit converter - for this writer. 8 bytes are written. - - The value to write - - - - Writes a 16-bit unsigned integer to the stream, using the bit converter - for this writer. 2 bytes are written. - - The value to write - - - - Writes a 32-bit unsigned integer to the stream, using the bit converter - for this writer. 4 bytes are written. - - The value to write - - - - Writes a 64-bit unsigned integer to the stream, using the bit converter - for this writer. 8 bytes are written. - - The value to write - - - - Writes a single-precision floating-point value to the stream, using the bit converter - for this writer. 4 bytes are written. - - The value to write - - - - Writes a double-precision floating-point value to the stream, using the bit converter - for this writer. 8 bytes are written. - - The value to write - - - - Writes a decimal value to the stream, using the bit converter for this writer. - 16 bytes are written. - - The value to write - - - - Writes a signed byte to the stream. - - The value to write - - - - Writes an unsigned byte to the stream. - - The value to write - - - - Writes an array of bytes to the stream. - - The values to write - - - - Writes a portion of an array of bytes to the stream. - - An array containing the bytes to write - The index of the first byte to write within the array - The number of bytes to write - - - - Writes a single character to the stream, using the encoding for this writer. - - The value to write - - - - Writes an array of characters to the stream, using the encoding for this writer. - - An array containing the characters to write - - - - Writes a string to the stream, using the encoding for this writer. - - The value to write. Must not be null. - value is null - - - - Writes a 7-bit encoded integer from the stream. This is stored with the least significant - information first, with 7 bits of information per byte of value, and the top - bit as a continuation flag. - - The 7-bit encoded integer to write to the stream - - - - Checks whether or not the writer has been disposed, throwing an exception if so. - - - - - Writes the specified number of bytes from the start of the given byte array, - after checking whether or not the writer has been disposed. - - The array of bytes to write from - The number of bytes to write - - - - Disposes of the underlying stream. - - - - - The bit converter used to write values to the stream - - - - - The encoding used to write strings - - - - - Gets the underlying stream of the EndianBinaryWriter. - - - - - Endianness of a converter - - - - - Little endian - least significant byte first - - - - - Big endian - most significant byte first - - - - - Adds or replaces the a value based on a key. - - - - The dict. - The key. - The value. - - - - Adds or replaces the a value based on a key. - - - - The dict. - The key. - The value. - the previous value of the specified key in this dictionary, or null if it did not have one. - - - - Returns a value from a dictionary or the values default - - Key Type - Value Type - dictionary to search - Key to search for - default(V) or item if Key is found - - - - Returns the time that the file denoted by this abstract pathname was last modified. - - A file - A long value representing the time the file was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the file does not exist or if an I/O error occurs. - - - - Returns the time that the directory denoted by this abstract pathname was last modified. - - A directory - A long value representing the time the directory was last modified, measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the directory does not exist or if an I/O error occurs. - - - Does this operating system and JRE support the execute flag on files? - - @return true if this implementation can provide reasonably accurate - executable bit information; false otherwise. - - - Determine if the file is executable (or not). - - Not all platforms and JREs support executable flags on files. If the - feature is unsupported this method will always return false. - - @param f - abstract path to test. - @return true if the file is believed to be executable by the user. - - - Set a file to be executable by the user. - - Not all platforms and JREs support executable flags on files. If the - feature is unsupported this method will always return false and no - changes will be made to the file specified. - - @param f - path to modify the executable status of. - @param canExec - true to enable execution; false to disable it. - @return true if the change succeeded; false otherwise. - - - Resolve this file to its actual path name that the JRE can use. - - This method can be relatively expensive. Computing a translation may - require forking an external process per path name translated. Callers - should try to minimize the number of translations necessary by caching - the results. - - Not all platforms and JREs require path name translation. Currently only - Cygwin on Win32 require translation for Cygwin based paths. - - @param dir - directory relative to which the path name is. - @param name - path name to translate. - @return the translated path. new File(dir,name) if this - platform does not require path name translation. - - - Resolve this file to its actual path name that the JRE can use. - - This method can be relatively expensive. Computing a translation may - require forking an external process per path name translated. Callers - should try to minimize the number of translations necessary by caching - the results. - - Not all platforms and JREs require path name translation. Currently only - Cygwin on Win32 require translation for Cygwin based paths. - - @param dir - directory relative to which the path name is. - @param name - path name to translate. - @return the translated path. new File(dir,name) if this - platform does not require path name translation. - - - Determine the user's home directory (location where preferences are). - - This method can be expensive on the first invocation if path name - translation is required. Subsequent invocations return a cached result. - - Not all platforms and JREs require path name translation. Currently only - Cygwin on Win32 requires translation of the Cygwin HOME directory. - - @return the user's home directory; null if the user does not have one. - - - Determine the user's home directory (location where preferences are). - - @return the user's home directory; null if the user does not have one. - - - Determine the global application directory (location where preferences are). - Also known as the "all users" directory. - - This method can be expensive on the first invocation if path name - translation is required. Subsequent invocations return a cached result. - - - @return the user's home directory; null if the user does not have one. - - - - Returns the global (user-specific) path for application settings based on OS - - Value of the global path - - - Determine the system-wide application directory (location where preferences are). - Also known as the "all users" directory. - - This method can be expensive on the first invocation if path name - translation is required. Subsequent invocations return a cached result. - - - @return the user's home directory; null if the user does not have one. - - - - Returns the system-wide path for application settings based on OS - - - - - - Resembles Java's CharSequence interface - - - - - computes the number of 1 bits in the two's complement binary representation of the integer - - - - - - - computes the number of 0 bits to the right of the first 1 - - - - - - - Returns the number of zero bits preceding the highest-order ("leftmost") one-bit in the two's complement - binary representation of the specified int value. Returns 32 if the specified value has no one-bits in its two's - complement representation, in other words if it is equal to zero. - - - - - - - A more efficient using a primitive integer array. - - - - - Create an empty list with a default capacity. - - - - - Create an empty list with the specified capacity. - - number of entries the list can initially hold. - - - - Number of entries in this list - - - - - - - index to Read, must be in the range [0, ). - the number at the specified index - - - - Empty this list - - - - - Add an entry to the end of the list. - - The nbumber to add - - - - Assign an entry in the list. - - index to set, must be in the range [0, ). - value to store at the position. - - - - Pad the list with entries. - - index position to stop filling at. 0 inserts no filler. 1 ensures the list has a size of 1, adding val if the list is currently empty. - value to insert into padded positions. - - - - Input/Output utilities - - - - - Read an entire local file into memory as a byte array. - - Location of the file to read. - Complete contents of the requested local file. - - The file exists, but its contents cannot be read. - - - - - Read an entire local file into memory as a byte array. - - Location of the file to read. - - Maximum number of bytes to Read, if the file is larger than - this limit an IOException is thrown. - - - Complete contents of the requested local file. - - - The file exists, but its contents cannot be Read. - - - - - - Read the entire byte array into memory, or throw an exception. - - Input stream to read the data from. - buffer that must be fully populated - position within the buffer to start writing to. - number of bytes that must be read. - - The stream ended before was fully populated. - - - There was an error reading from the stream. - - - - - Read the entire byte array into memory, or throw an exception. - - Stream to read the data from. - Position to read from the file at. - Buffer that must be fully populated, [off, off+len]. - position within the buffer to start writing to. - number of bytes that must be read. - - The ended before the requested number of - bytes were read. - - - The does not supports seeking. - - - There was an error reading from the stream. - - - - - Skip an entire region of an input stream. - - The input stream's position is moved forward by the number of requested - bytes, discarding them from the input. This method does not return until - the exact number of bytes requested has been skipped. - - The stream to skip bytes from. - - Total number of bytes to be discarded. Must be >= 0. - - - The stream ended before the requested number of bytes were - skipped. - - - There was an error reading from the stream. - - - - - Java style iterator with remove capability (which is not supported by IEnumerator). - This iterator is able to iterate over a list without being corrupted by removal of elements - via the remove() method. - - - - - Implementation of EndianBitConverter which converts to/from little-endian - byte arrays. - - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - Different computer architectures store data using different byte orders. "Big-endian" - means the most significant byte is on the left end of a word. "Little-endian" means the - most significant byte is on the right end of a word. - - true if this converter is little-endian, false otherwise. - - - - Copies the specified number of bytes from value to buffer, starting at index. - - The value to copy - The number of bytes to copy - The buffer to copy the bytes into - The index to start at - - - - Returns a value built from the specified number of bytes from the given buffer, - starting at index. - - The data in byte array format - The first index to use - The number of bytes to use - The value built from the given bytes - - - - Indicates the byte order ("endianess") in which data is converted using this class. - - - - Empty this list - - - Add an entry to the end of the list. - - @param n - the number to add. - - - Assign an entry in the list. - - @param index - index to set, must be in the range [0, {@link #size()}). - @param n - value to store at the position. - - - Pad the list with entries. - - @param toIndex - index position to stop filling at. 0 inserts no filler. 1 - ensures the list has a size of 1, adding val if - the list is currently empty. - @param val - value to insert into padded positions. - - - A boxed integer that can be modified. - - - Current value of this boxed value. - - - - Conversion utilities for network byte order handling. - - - - - Compare a 32 bit unsigned integer stored in a 32 bit signed integer. - - This function performs an unsigned compare operation, even though Java - does not natively support unsigned integer values. Negative numbers are - treated as larger than positive ones. - - the first value to compare. - the second value to compare. - return < 0 if a < b; 0 if a == b; > 0 if a > b. - - - - Convert sequence of 2 bytes (network byte order) into unsigned value. - - - Buffer to acquire the 2 bytes of data from. - - - Position within the buffer to begin reading from. This - position and the next byte After it (for a total of 2 bytes) - will be read. - - - Unsigned integer value that matches the 16 bits Read. - - - - - Convert sequence of 4 bytes (network byte order) into unsigned value. - - buffer to acquire the 4 bytes of data from. - - position within the buffer to begin reading from. This - position and the next 3 bytes After it (for a total of 4 - bytes) will be read. - - - Unsigned integer value that matches the 32 bits Read. - - - - - Convert sequence of 4 bytes (network byte order) into unsigned value. - - buffer to acquire the 4 bytes of data from. - - position within the buffer to begin reading from. This - position and the next 3 bytes After it (for a total of 4 - bytes) will be read. - - - Unsigned integer value that matches the 32 bits Read. - - - - - Convert sequence of 4 bytes (network byte order) into signed value. - - Buffer to acquire the 4 bytes of data from. - - position within the buffer to begin reading from. This - position and the next 3 bytes After it (for a total of 4 - bytes) will be read. - - - Signed integer value that matches the 32 bits Read. - - - - - Convert sequence of 8 bytes (network byte order) into unsigned value. - - buffer to acquire the 8 bytes of data from. - - Position within the buffer to begin reading from. This - position and the next 7 bytes After it (for a total of 8 - bytes) will be read. - - - Unsigned integer value that matches the 64 bits read. - - - - - This function takes two arguments; the integer value to be - converted and the base value (2, 8, or 16) to which the number - is converted to. - - the decimal - the base of the output - a string representation of the base number - - - - This function takes two arguments; a string value representing the binary, octal, or hexadecimal - value and the corresponding integer base value respective to the first argument. For instance, - if you pass the first argument value "1101", then the second argument should take the value "2". - - the string in base sBase notation - the base to convert from - decimal - - - Write a 16 bit integer as a sequence of 2 bytes (network byte order). - - @param intbuf - buffer to write the 2 bytes of data into. - @param offset - position within the buffer to begin writing to. This position - and the next byte After it (for a total of 2 bytes) will be - replaced. - @param v - the value to write. - - - Write a 32 bit integer as a sequence of 4 bytes (network byte order). - - @param intbuf - buffer to write the 4 bytes of data into. - @param offset - position within the buffer to begin writing to. This position - and the next 3 bytes After it (for a total of 4 bytes) will be - replaced. - @param v - the value to write. - - - Write a 64 bit integer as a sequence of 8 bytes (network byte order). - - @param intbuf - buffer to write the 48bytes of data into. - @param offset - position within the buffer to begin writing to. This position - and the next 7 bytes After it (for a total of 8 bytes) will be - replaced. - @param v - the value to write. - - - - Converts an unsigned byte (.NET default when reading files, for instance) - to a signed byte - - The value to be converted. - - - - - Basic implementation of the NestedDictionaryBase using an underlying Dictionary - - - - - - - Base class used for a nested dictionary - NOTE: You should overload the implicit operator for converting V to your class for best functionality - - Key Type - Value Type - Nested Dictionary Type (Typically inherits from NestedDictionaryBase) - - - - Basic implementation of the NestedDictionaryBase using an underlying SortedDictionary - - - - - - - Delete file without complaining about readonly status - - - - - - Delete file without complaining about readonly status - - - - - - Computes relative path, where path is relative to reference_path - - - - - - - - Utility functions related to quoted string handling. - - - - - Quoting style that obeys the rules Git applies to file names. - - - - - Quoting style used by the Bourne shell. - - Quotes are unconditionally inserted during . This - protects shell meta-characters like $ or ~ from - being recognized as special. - - - - - Bourne style, but permits ~user at the start of the string. - - - - - Quote an input string by the quoting rules. - - If the input string does not require any quoting, the same String - reference is returned to the caller. - - Otherwise a quoted string is returned, including the opening and closing - quotation marks at the start and end of the string. If the style does not - permit raw Unicode characters then the string will first be encoded in - UTF-8, with unprintable sequences possibly escaped by the rules. - - any non-null Unicode string - a quoted . See above for details. - - - - Clean a previously quoted input, decoding the result via UTF-8. - - This method must match quote such that: - - - a.Equals(qequote(quote(a))); - - is true for any a. - - a Unicode string to remove quoting from. - the cleaned string. - - - - - Decode a previously quoted input, scanning a UTF-8 encoded buffer. - - This method must match quote such that: - - - a.Equals(Dequote(Constants.encode(quote(a)))); - - is true for any a. - - This method removes any opening/closing quotation marks added by - - - The input buffer to parse. - - - First position within to scan. - - - One position past in to scan. - - The cleaned string. - . - - - - Quoting style used by the Bourne shell. - - Quotes are unconditionally inserted during . This - protects shell meta-characters like $ or ~ from - being recognized as special. - - - - - Bourne style, but permits ~user at the start of the string. - - - - - Quoting style that obeys the rules Git applies to file names - - - - A rough character sequence around a raw byte buffer. - - Characters are assumed to be 8-bit US-ASCII. - - - A zero-Length character sequence. - - - Create a rough character sequence around the raw byte buffer. - - @param buf - buffer to scan. - @param start - starting position for the sequence. - @param end - ending position for the sequence. - - - - Determine if b[ptr] matches src. - - the buffer to scan. - first position within b, this should match src[0]. - the buffer to test for equality with b. - ptr + src.Length if b[ptr..src.Length] == src; else -1. - - - - Format a base 10 numeric into a temporary buffer. - - Formatting is performed backwards. The method starts at offset - o-1 and ends at o-1-digits, where - digits is the number of positions necessary to store the - base 10 value. - - The argument and return values from this method make it easy to chain - writing, for example: - - - byte[] tmp = new byte[64]; - int ptr = tmp.Length; - tmp[--ptr] = '\n'; - ptr = RawParseUtils.formatBase10(tmp, ptr, 32); - tmp[--ptr] = ' '; - ptr = RawParseUtils.formatBase10(tmp, ptr, 18); - tmp[--ptr] = 0; - string str = new string(tmp, ptr, tmp.Length - ptr); - - - buffer to write into. - - One offset past the location where writing will begin; writing - proceeds towards lower index values. - - the value to store. - - the new offset value o. This is the position of - the last byte written. Additional writing should start at one - position earlier. - - - - Parse a base 10 numeric from a sequence of ASCII digits into an int. - - Digit sequences can begin with an optional run of spaces before the - sequence, and may start with a '+' or a '-' to indicate sign position. - Any other characters will cause the method to stop and return the current - result to the caller. - - @param b - buffer to scan. - @param ptr - position within buffer to start parsing digits at. - @param ptrResult - optional location to return the new ptr value through. If null - the ptr value will be discarded. - @return the value at this location; 0 if the location is not a valid - numeric. - - - - Parse a base 10 numeric from a sequence of ASCII digits into a long. - - Digit sequences can begin with an optional run of spaces before the - sequence, and may start with a '+' or a '-' to indicate sign position. - Any other characters will cause the method to stop and return the current - result to the caller. - - Buffer to scan. - - Position within buffer to start parsing digits at. - - - Optional location to return the new ptr value through. If null - the ptr value will be discarded. - - - The value at this location; 0 if the location is not a valid - numeric. - - - - - Parse 4 character base 16 (hex) formatted string to unsigned integer. - - The number is read in network byte order, that is, most significant - nibble first. - - - buffer to parse digits from; positions [p, p+4] will - be parsed. - - First position within the buffer to parse. - The integer value. - - If the string is not hex formatted. - - - - - Parse 8 character base 16 (hex) formatted string to unsigned integer. - - The number is read in network byte order, that is, most significant - nibble first. - - - Buffer to parse digits from; positions [p, p+8] will - be parsed. - - First position within the buffer to parse. - the integer value. - - if the string is not hex formatted. - - - - - Parse a single hex digit to its numeric value (0-15). - - Hex character to parse. - Numeric value, in the range 0-15. - - If the input digit is not a valid hex digit. - - - - - Parse a Git style timezone string. - - The sequence "-0315" will be parsed as the numeric value -195, as the - lower two positions count minutes, not 100ths of an hour. - - Buffer to scan. - - Position within buffer to start parsing digits at. - the timezone at this location, expressed in minutes. - - - - Locate the first position after LF. - - buffer to scan. - - position within buffer to start looking for LF at. - - New position just after LF. - - - Locate the first position After either the given character or LF. - - This method stops on the first match it finds from either chrA or '\n'. - - @param b - buffer to scan. - @param ptr - position within buffer to start looking for chrA or LF at. - @param chrA - character to find. - @return new position just After the first chrA or LF to be found. - - - Locate the first position before a given character. - - @param b - buffer to scan. - @param ptr - position within buffer to start looking for chrA at. - @param chrA - character to find. - @return new position just before chrA, -1 for not found - - - Locate the first position before the previous LF. - - This method stops on the first '\n' it finds. - - @param b - buffer to scan. - @param ptr - position within buffer to start looking for LF at. - @return new position just before the first LF found, -1 for not found - - - Locate the previous position before either the given character or LF. - - This method stops on the first match it finds from either chrA or '\n'. - - @param b - buffer to scan. - @param ptr - position within buffer to start looking for chrA or LF at. - @param chrA - character to find. - @return new position just before the first chrA or LF to be found, -1 for - not found - - - Index the region between [ptr, end) to find line starts. - - The returned list is 1 indexed. Index 0 contains - {@link Integer#MIN_VALUE} to pad the list out. - - Using a 1 indexed list means that line numbers can be directly accessed - from the list, so list.get(1) (aka get line 1) returns - ptr. - - The last element (index map.size()-1) always contains - end. - - @param buf - buffer to scan. - @param ptr - position within the buffer corresponding to the first byte of - line 1. - @param end - 1 past the end of the content within buf. - @return a line map indexing the start position of each line. - - - Locate the "author " header line data. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the - commit buffer and does not accidentally look at message body. - @return position just After the space in "author ", so the first - character of the author's name. If no author header can be - located -1 is returned. - - - Locate the "committer " header line data. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the - commit buffer and does not accidentally look at message body. - @return position just After the space in "committer ", so the first - character of the committer's name. If no committer header can be - located -1 is returned. - - - Locate the "tagger " header line data. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the tag - buffer and does not accidentally look at message body. - @return position just After the space in "tagger ", so the first - character of the tagger's name. If no tagger header can be - located -1 is returned. - - - Locate the "encoding " header line. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the - buffer and does not accidentally look at the message body. - @return position just After the space in "encoding ", so the first - character of the encoding's name. If no encoding header can be - located -1 is returned (and UTF-8 should be assumed). - - - Parse the "encoding " header into a character set reference. - - Locates the "encoding " header (if present) by first calling - {@link #encoding(byte[], int)} and then returns the proper character set - to Apply to this buffer to evaluate its contents as character data. - - If no encoding header is present, {@link Constants#CHARSET} is assumed. - - @param b - buffer to scan. - @return the Java character set representation. Never null. - - - Parse a name line (e.g. author, committer, tagger) into a PersonIdent. - - When passing in a value for nameB callers should use the - return value of {@link #author(byte[], int)} or - {@link #committer(byte[], int)}, as these methods provide the proper - position within the buffer. - - @param raw - the buffer to parse character data from. - @param nameB - first position of the identity information. This should be the - first position After the space which delimits the header field - name (e.g. "author" or "committer") from the rest of the - identity line. - @return the parsed identity. Never null. - - - Parse a name data (e.g. as within a reflog) into a PersonIdent. - - When passing in a value for nameB callers should use the - return value of {@link #author(byte[], int)} or - {@link #committer(byte[], int)}, as these methods provide the proper - position within the buffer. - - @param raw - the buffer to parse character data from. - @param nameB - first position of the identity information. This should be the - first position After the space which delimits the header field - name (e.g. "author" or "committer") from the rest of the - identity line. - @return the parsed identity. Never null. - - - Locate the end of a footer line key string. - - If the region at {@code raw[ptr]} matches {@code ^[A-Za-z0-9-]+:} (e.g. - "Signed-off-by: A. U. Thor\n") then this method returns the position of - the first ':'. - - If the region at {@code raw[ptr]} does not match {@code ^[A-Za-z0-9-]+:} - then this method returns -1. - - @param raw - buffer to scan. - @param ptr - first position within raw to consider as a footer line key. - @return position of the ':' which terminates the footer line key if this - is otherwise a valid footer line key; otherwise -1. - - - Decode a buffer under UTF-8, if possible. - - If the byte stream cannot be decoded that way, the platform default is tried - and if that too fails, the fail-safe ISO-8859-1 encoding is tried. - - @param buffer - buffer to pull raw bytes from. - @return a string representation of the range [start,end), - After decoding the region through the specified character set. - - - Decode a buffer under UTF-8, if possible. - - If the byte stream cannot be decoded that way, the platform default is - tried and if that too fails, the fail-safe ISO-8859-1 encoding is tried. - - @param buffer - buffer to pull raw bytes from. - @param start - start position in buffer - @param end - one position past the last location within the buffer to take - data from. - @return a string representation of the range [start,end), - After decoding the region through the specified character set. - - - Decode a buffer under the specified character set if possible. - - If the byte stream cannot be decoded that way, the platform default is tried - and if that too fails, the fail-safe ISO-8859-1 encoding is tried. - - @param cs - character set to use when decoding the buffer. - @param buffer - buffer to pull raw bytes from. - @return a string representation of the range [start,end), - After decoding the region through the specified character set. - - - Decode a region of the buffer under the specified character set if possible. - - If the byte stream cannot be decoded that way, the platform default is tried - and if that too fails, the fail-safe ISO-8859-1 encoding is tried. - - @param cs - character set to use when decoding the buffer. - @param buffer - buffer to pull raw bytes from. - @param start - first position within the buffer to take data from. - @param end - one position past the last location within the buffer to take - data from. - @return a string representation of the range [start,end), - After decoding the region through the specified character set. - - - Decode a region of the buffer under the specified character set if - possible. - - If the byte stream cannot be decoded that way, the platform default is - tried and if that too fails, an exception is thrown. - - @param cs - character set to use when decoding the buffer. - @param buffer - buffer to pull raw bytes from. - @param start - first position within the buffer to take data from. - @param end - one position past the last location within the buffer to take - data from. - @return a string representation of the range [start,end), - After decoding the region through the specified character set. - @throws CharacterCodingException - the input is not in any of the tested character sets. - - - Decode a region of the buffer under the ISO-8859-1 encoding. - - Each byte is treated as a single character in the 8859-1 character - encoding, performing a raw binary->char conversion. - - @param buffer - buffer to pull raw bytes from. - @param start - first position within the buffer to take data from. - @param end - one position past the last location within the buffer to take - data from. - @return a string representation of the range [start,end). - - - Locate the position of the commit message body. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the - commit buffer. - @return position of the user's message buffer. - - - Locate the position of the tag message body. - - @param b - buffer to scan. - @param ptr - position in buffer to start the scan at. Most callers should - pass 0 to ensure the scan starts from the beginning of the tag - buffer. - @return position of the user's message buffer. - - - Locate the end of a paragraph. - - A paragraph is ended by two consecutive LF bytes. - - @param b - buffer to scan. - @param start - position in buffer to start the scan at. Most callers will - want to pass the first position of the commit message (as - found by {@link #commitMessage(byte[], int)}. - @return position of the LF at the end of the paragraph; - b.Length if no paragraph end could be located. - - - Searches text using only substring search. - - Instances are thread-safe. Multiple concurrent threads may perform matches on - different character sequences at the same time. - - - Construct a new substring pattern. - - @param patternText - text to locate. This should be a literal string, as no - meta-characters are supported by this implementation. The - string may not be the empty string. - - - Match a character sequence against this pattern. - - @param rcs - the sequence to match. Must not be null but the Length of the - sequence is permitted to be 0. - @return offset within rcs of the first occurrence of this - pattern; -1 if this pattern does not appear at any position of - rcs. - - - Get the literal pattern string this instance searches for. - - @return the pattern string given to our constructor. - - - - Specialized variant of an ArrayList to support a {@code RefDatabase}. - - This list is a hybrid of a Map<String,Ref> and of a List<Ref>. It - tracks reference instances by name by keeping them sorted and performing - binary search to locate an entry. Lookup time is O(log N), but addition and - removal is O(N + log N) due to the list expansion or contraction costs. - - This list type is copy-on-write. Mutation methods return a new copy of the - list, leaving {@code this} unmodified. As a result we cannot easily implement - the {@link java.util.List} interface contract. - - the type of reference being stored in the collection. - - - an empty unmodifiable reference list. - - - - Initialize this list to use the same backing array as another list. - - the source list - - - this cast as an immutable, standard {@link java.util.List}. - - - number of items in this list. - - - true if the size of this list is 0. - - - - Locate an entry by name. - - the name of the reference to find. - - the index the reference is at. If the entry is not present - returns a negative value. The insertion position for the given - name can be computed from {@code -(index + 1)}. - - - - - Determine if a reference is present. - - name of the reference to find. - true if the reference is present; false if it is not. - - - - Get a reference object by name. - - the name of the reference. - the reference object; null if it does not exist in this list. - - - - Get the reference at a particular index. - - the index to obtain. Must be {@code 0 <= idx < size()}. - the reference value, never null. - - - - Obtain a builder initialized with the first {@code n} elements. - - Copies the first {@code n} elements from this list into a new builder, - which can be used by the caller to add additional elements. - - the number of elements to copy. - a new builder with the first {@code n} elements already added. - - - - Obtain a new copy of the list after changing one element. - - This list instance is not affected by the replacement. Because this - method copies the entire list, it runs in O(N) time. - - index of the element to change. - the new value, must not be null. - copy of this list, after replacing {@code idx} with {@code ref}. - - - - Add an item at a specific index. - - This list instance is not affected by the addition. Because this method - copies the entire list, it runs in O(N) time. - - - position to add the item at. If negative the method assumes it - was a direct return value from and will - adjust it to the correct position. - - the new reference to insert. - copy of this list, after making space for and adding {@code ref}. - - - - Remove an item at a specific index. - - This list instance is not affected by the addition. Because this method - copies the entire list, it runs in O(N) time. - - position to remove the item from. - copy of this list, after making removing the item at {@code idx}. - - - - Store a reference, adding or replacing as necessary. - - This list instance is not affected by the store. The correct position is - determined, and the item is added if missing, or replaced if existing. - Because this method copies the entire list, it runs in O(N + log N) time. - - the reference to store. - copy of this list, after performing the addition or replacement. - - - - Builder to facilitate fast construction of an immutable RefList. - - type of reference being stored. - - - - Create an empty list ready for items to be added. - - - - - Create an empty list with at least the specified capacity. - - the new capacity. - - - number of items in this builder's internal collection. - - - - Get the reference at a particular index. - - the index to obtain. Must be {@code 0 <= idx < size()}. - the reference value, never null. - - - - Remove an item at a specific index. - - position to remove the item from. - - - - Add the reference to the end of the array. - - References must be added in sort order, or the array must be sorted - after additions are complete using {@link #sort()}. - - - - - - Add all items from a source array. - - References must be added in sort order, or the array must be sorted - after additions are complete using . - - the source array. - position within {@code src} to start copying from. - number of items to copy from {@code src}. - - - - Replace a single existing element. - - index, must have already been added previously. - the new reference. - - - - Sort the list's backing array in-place. - - - - an unmodifiable list using this collection's backing array. - - - - Specialized Map to present a {@code RefDatabase} namespace. - - Although not declared as a {@link java.util.SortedMap}, iterators from this - map's projections always return references in {@link RefComparator} ordering. - The map's internal representation is a sorted array of {@link Ref} objects, - which means lookup and replacement is O(log N), while insertion and removal - can be as expensive as O(N + log N) while the list expands or contracts. - Since this is not a general map implementation, all entries must be keyed by - the reference name. - - This class is really intended as a helper for {@code RefDatabase}, which - needs to perform a merge-join of three sorted {@link RefList}s in order to - present the unified namespace of the packed-refs file, the loose refs/ - directory tree, and the resolved form of any symbolic references. - - - - - Prefix denoting the reference subspace this map contains. - - All reference names in this map must start with this prefix. If the - prefix is not the empty string, it must end with a '/'. - - - - - Immutable collection of the packed references at construction time. - - - - - Immutable collection of the loose references at construction time. - - If an entry appears here and in {@link #packed}, this entry must take - precedence, as its more current. Symbolic references in this collection - are typically unresolved, so they only tell us who their target is, but - not the current value of the target. - - - - - Immutable collection of resolved symbolic references. - - This collection contains only the symbolic references we were able to - resolve at map construction time. Other loose references must be read - from {@link #loose}. Every entry in this list must be matched by an entry - in {@code loose}, otherwise it might be omitted by the map. - - - - - Construct an empty map with a small initial capacity. - - - - - Construct a map to merge 3 collections together. - - - prefix used to slice the lists down. Only references whose - names start with this prefix will appear to reside in the map. - Must not be null, use {@code ""} (the empty string) to select - all list items. - - - items from the packed reference list, this is the last list - searched. - - - items from the loose reference list, this list overrides - {@code packed} if a name appears in both. - - - resolved symbolic references. This list overrides the prior - list {@code loose}, if an item appears in both. Items in this - list must also appear in {@code loose}. - - - - - Helper function to easily replace all occurences of the incompatible string.Substring method in ported java code - - - The string from which a part has to extracted. - - - The beginning index, inclusive. - - - The ending index, exclusive. - - - The specified substring. - - - - - Compares two strings lexicographically. (cf. http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html#compareTo(java.lang.String)) - - the reference string - the string to be compared - the value 0 if the string to compared with is equal to this string; a value less than 0 if this string is lexicographically less than the string to compare with; and a value greater than 0 if this string is lexicographically greater than the string to compare with. - - - - Miscellaneous string comparison utility methods. - - - - - Convert the input to lowercase. - - This method does not honor the JVM locale, but instead always behaves as - though it is in the US-ASCII locale. Only characters in the range 'A' - through 'Z' are converted. All other characters are left as-is, even if - they otherwise would have a lowercase character equivalent. - - - the input character. - lowercase version of the input. - - - - Convert the input string to lower case, according to the "C" locale. - - This method does not honor the JVM locale, but instead always behaves as - though it is in the US-ASCII locale. Only characters in the range 'A' - through 'Z' are converted, all other characters are left as-is, even if - they otherwise would have a lowercase character equivalent. - - - the input string. Must not be null. - a copy of the input string, After converting characters in the range 'A'..'Z' to 'a'..'z'. - - - - Test if two strings are equal, ignoring case. - - This method does not honor the JVM locale, but instead always behaves as - though it is in the US-ASCII locale. - - - first string to compare. - second string to compare. - true if a equals b - - - - Parse a string as a standard Git boolean value. - - The terms {@code yes}, {@code true}, {@code 1}, {@code on} can all be - used to mean {@code true}. - - The terms {@code no}, {@code false}, {@code 0}, {@code off} can all be - used to mean {@code false}. - - Comparisons ignore case, via . - - the string to parse. - the boolean interpretation of . - - - - A fully buffered output stream. - - Subclasses determine the behavior when the in-memory buffer capacity has been - exceeded and additional bytes are still being received for output. - - - - - Maximum number of bytes we will permit storing in memory. - - When this limit is reached the data will be shifted to a file on disk, - preventing the JVM heap from growing out of control. - - - - - If - - has been reached, remainder goes here. - - - - - Create a new empty temporary buffer. - - - maximum number of bytes to store in memory before entering the overflow output path. - - - - - Copy all bytes remaining on the input stream into this buffer. - - the stream to Read from, until EOF is reached. - - - - Convert this buffer's contents into a contiguous byte array. - - The buffer is only complete After {@link #close()} has been invoked. - - the complete byte array; length matches . - - - - Send this buffer to an output stream. - - This method may only be invoked After {@link #close()} has completed - normally, to ensure all data is completely transferred. - - stream to send this buffer's complete content to. - - if not null progress updates are sent here. Caller should - initialize the task and the number of work units to - /1024. - - - - - Reset this buffer for reuse, purging all buffered content. - - - - - Open the overflow output stream, so the remaining output can be stored. - - - the output stream to receive the buffered content, followed by - the remaining output. - - - - - Clear this buffer so it has no data, and cannot be used again. - - - - - Obtain the length (in bytes) of the buffer. - - The length is only accurate After has been invoked. - - - - - A fully buffered output stream using local disk storage for large data. - - Initially this output stream buffers to memory and is therefore similar - to ByteArrayOutputStream, but it shifts to using an on disk temporary - file if the output gets too large. - - The content of this buffered stream may be sent to another OutputStream - only after this stream has been properly closed by - - . - - - - - Location of our temporary file if we are on disk; otherwise null. - - If we exceeded the {@link #inCoreLimit} we nulled out {@link #blocks} - and created this file instead. All output goes here through - {@link #overflow}. - - - - - Create a new temporary buffer. - - - - - Create a new temporary buffer, limiting memory usage. - - - maximum number of bytes to store in memory. Storage beyond - this limit will use the local file. - - - - - A temporary buffer that will never exceed its in-memory limit. - - If the in-memory limit is reached an IOException is thrown, rather than - attempting to spool to local disk. - - - - - Create a new heap buffer with a maximum storage limit. - - - maximum number of bytes that can be stored in this buffer. - Storing beyond this many will cause an IOException to be - thrown during write. - - - - - An InputStream which reads from one or more InputStreams. - - This stream may enter into an EOF state, returning -1 from any of the read - methods, and then later successfully read additional bytes if a new - InputStream is added after reaching EOF. - - Currently this stream does not support the mark/reset APIs. If mark and later - reset functionality is needed the caller should wrap this stream with a - {@link java.io.BufferedInputStream}. - - - - - Create an empty InputStream that is currently at EOF state. - - - - - Create an InputStream that is a union of the individual streams. - - As each stream reaches EOF, it will be automatically closed before bytes - from the next stream are read. - - streams to be pushed onto this stream. - - - - Add the given InputStream onto the end of the stream queue. - - When the stream reaches EOF it will be automatically closed. - - the stream to add; must not be null. - - - - Returns true if there are no more InputStreams in the stream queue. - - If this method returns true then all read methods will signal EOF - by returning -1, until another InputStream has been pushed into the queue - with . - - true if there are no more streams to read from. - - - - A prefix abbreviation of an {@link ObjectId}. - - Sometimes Git produces abbreviated SHA-1 strings, using sufficient leading - digits from the ObjectId name to still be unique within the repository the - string was generated from. These ids are likely to be unique for a useful - period of time, especially if they contain at least 6-10 hex digits. - - This class converts the hex string into a binary form, to make it more - efficient for matching against an object. - - - - Number of half-bytes used by this id. - - - - Convert an AbbreviatedObjectId from hex characters (US-ASCII). - - the US-ASCII buffer to read from. - position to read the first character from. - - one past the last position to read (end-offset is - the Length of the string). - - the converted object id. - - - - Convert an AbbreviatedObjectId from hex characters. - - - the string to read from. Must be <= 40 characters. - - the converted object id. - - - - - - - true if this ObjectId is actually a complete id. - - - - - - - - Return a complete ; null if is false. - - - - - Compares this abbreviation to a full object id. - - the other object id. - - Return <0 if this abbreviation names an object that is less than - other; 0 if this abbreviation exactly matches the - first digits of other.name(); - >0 if this abbreviation names an object that is after - other. - - - - - - - string form of the abbreviation, in lower case hexadecimal. - - - - Number of hex digits appearing in this id - - - - - Visitor interface for traversing the index and two trees in parallel. - - When merging we deal with up to two tree nodes and a base node. Then - we figure out what to do. - - A File argument is supplied to allow us to check for modifications in - a work tree or update the file. - - - - - Visit a blob, and corresponding tree and index entries. - - - - - - - - - Visit a blob, and corresponding tree nodes and associated index entry. - - - - - - - - - - Invoked after handling all child nodes of a tree, during a three way merge - - - - - - - - - Invoked after handling all child nodes of a tree, during two way merge. - - - - - - - - - An ObjectDatabase of another . - - This {@code ObjectDatabase} wraps around another {@code Repository}'s object - database, providing its contents to the caller, and closing the Repository - when this database is closed. The primary user of this class is - , when the {@code info/alternates} file points at the - {@code objects/} directory of another repository. - - - - - Abstraction of arbitrary object storage. - - An object database stores one or more Git objects, indexed by their unique - . Optionally an object database can reference one or more - alternates; other instances that are searched in - addition to the current database. - - Databases are usually divided into two halves: a half that is considered to - be fast to search, and a half that is considered to be slow to search. When - alternates are present the fast half is fully searched (recursively through - all alternates) before the slow half is considered. - - - - - Constant indicating no alternate databases exist. - - - - - Initialize a new database instance for access. - - - - - Does this database exist yet? - - - true if this database is already created; false if the caller - should invoke to create this database location. - - - - - Initialize a new object database at this location. - - - - - Close any resources held by this database and its active alternates. - - - - - Close any resources held by this database only; ignoring alternates. - - To fully close this database and its referenced alternates, the caller - should instead invoke . - - - - - Fully close all loaded alternates and clear the alternate list. - - - - - Does the requested object exist in this database? - - Alternates (if present) are searched automatically. - - identity of the object to test for existence of. - - True if the specified object is stored in this database, or any - of the alternate databases. - - - - - Fast half of . - - - Identity of the object to test for existence of. - - - true if the specified object is stored in this database. - - - - - Slow half of . - - - Identity of the object to test for existence of. - - - true if the specified object is stored in this database. - - - - - Open an object from this database. - - Alternates (if present) are searched automatically. - - - Temporary working space associated with the calling thread. - - Identity of the object to open. - - A for accessing the data of the named - object, or null if the object does not exist. - - - - - Fast half of . - - - temporary working space associated with the calling thread. - - identity of the object to open. - - A for accessing the data of the named - object, or null if the object does not exist. - - - - - Slow half of . - - - temporary working space associated with the calling thread. - - Name of the object to open. - identity of the object to open. - - A for accessing the data of the named - object, or null if the object does not exist. - - - - - Open the object from all packs containing it. - - If any alternates are present, their packs are also considered. - - - Result collection of loaders for this object, filled with - loaders from all packs containing specified object - - - Temporary working space associated with the calling thread. - - of object to search for. - - - - Open the object from all packs containing it. - - If any alternates are present, their packs are also considered. - - - Result collection of loaders for this object, filled with - loaders from all packs containing specified object. - - - Temporary working space associated with the calling thread. - - of object to search for. - - - - true if the fast-half search should be tried again. - - - - - - Get the alternate databases known to this database. - - - The alternate list. Never null, but may be an empty array. - - - - - Load the list of alternate databases into memory. - - This method is invoked by if the alternate list - has not yet been populated, or if has been - called on this instance and the alternate list is needed again. - - If the alternate array is empty, implementors should consider using the - constant . - - The alternate list for this database. - - The alternate list could not be accessed. The empty alternate - array will be assumed by the caller. - - - - - Close the list of alternates returned by . - - the alternate list, from . - - - - Create a new cached database instance over this database. This instance might - optimize queries by caching some information about database. So some modifications - done after instance creation might fail to be noticed. - - new cached database instance - - - the alternate repository to wrap and export. - - - the alternate repository objects are borrowed from. - - - - Recreate a stream from a base stream and a GIT pack delta. - - This entire class is heavily cribbed from patch-delta.c in the - GIT project. The original delta patching code was written by Nicolas Pitre - (<nico@cam.org>). - - - - - Apply the changes defined by delta to the data in base, yielding a new - array of bytes. - - some byte representing an object of some kind. - - A git pack delta defining the transform from one version to - another. - - Patched base - - - - The configuration file based on the blobs stored in the repository. - - - - - The constructor from a byte array - - the base configuration file - the byte array, should be UTF-8 encoded text. - - The byte array is not a valid configuration format. - - - - * The constructor from object identifier - - the base configuration file - the repository - the object identifier - - the blob cannot be read from the repository. - - the blob is not a valid configuration format. - - - - - The constructor from commit and path - - The base configuration file - The commit that contains the object - The path within the tree of the commit - - the path does not exist in the commit's tree. - - - the tree and/or blob cannot be accessed. - - - the blob is not a valid configuration format. - - - - - A with an underlying byte array for storage. - - - - - A window of data currently stored within a cache. - - All bytes in the window can be assumed to be "immediately available", that is - they are very likely already in memory, unless the operating system's memory - is very low and has paged part of this process out to disk. Therefore copying - bytes from a window is very inexpensive. - - - - * Copy bytes from the window to a caller supplied buffer. - - offset within the file to start copying from. - destination buffer to copy into. - - Offset within to start copying into. - - - number of bytes to copy. This value may exceed the number of - bytes remaining in the window starting at offset - . - - - Number of bytes actually copied; this may be less than - if exceeded the number of - bytes available. - - - - Copy bytes from the window to a caller supplied buffer. - - - offset within the window to start copying from. - - destination buffer to copy into. - - offset within to start copying into. - - - number of bytes to copy. This value may exceed the number of - bytes remaining in the window starting at offset - . - - - Number of bytes actually copied; this may be less than - if exceeded - the number of bytes available. - - - - - Pump bytes into the supplied inflater as input. - - - offset within the file to start supplying input from. - - - destination buffer the inflater should output decompressed - data to. - - - current offset within to inflate into. - - - the inflater to feed input to. The caller is responsible for - initializing the inflater as multiple windows may need to - supply data to the same inflater to completely decompress - something. - - - Updated based on the number of bytes - successfully copied into by - . If the inflater is not yet finished then - another window's data must still be supplied as input to finish - decompression. - - - the inflater encountered an invalid chunk of data. Data - stream corruption is likely. - - - - - Pump bytes into the supplied inflater as input. - - - offset within the file to start supplying input from. - - - destination buffer the inflater should output decompressed - data to. - - - current offset within to inflate into. - - - the inflater to feed input to. The caller is responsible for - initializing the inflater as multiple windows may need to - supply data to the same inflater to completely decompress - something. - - - Updated based on the number of bytes - successfully copied into by - . If the inflater is not yet finished then - another window's data must still be supplied as input to finish - decompression. - - - the inflater encountered an invalid chunk of data. Data - stream corruption is likely. - - - - - A window for accessing git packs using a for storage. - - - - - wrapper providing temporary lookup caching. - - The base class for {@code ObjectDatabase}s that wrap other database instances - and optimize querying for objects by caching some database dependent - information. Instances of this class (or any of its subclasses) can be - returned from the method . This - class can be used in scenarios where the database does not change, or when - changes in the database while some operation is in progress is an acceptable - risk. - - The default implementation delegates all requests to the wrapped database. - The instance might be indirectly invalidated if the wrapped instance is - closed. Closing the delegating instance does not implies closing the wrapped - instance. For alternative databases, cached instances are used as well. - - - - - The wrapped database instance - - - - - Create the delegating database instance - - the wrapped object database - - - - The cached instance of an . - - This class caches the list of loose objects in memory, so the file system is - not queried with stat calls. - - - - - The set that contains unpacked objects identifiers, it is created when - the cached instance is created. - - - - - The constructor - - the wrapped database - - - - Instances of this class represent a Commit object. It represents a snapshot - in a Git repository, who created it and when. - - - - - Create an empty commit object. More information must be fed to this - object to make it useful. - - - The repository with which to associate it. - - - - - Create a commit associated with these parents and associate it with a - repository. - - - The repository to which this commit object belongs. - - - Id's of the parent(s). - - - - - Create a commit object with the specified id and data from an existing - commit object in a repository. - - - The repository to which this commit object belongs. - - Commit id. - Raw commit object data. - - - - Persist this commit object - - - - - - Hash function used natively by Git for all objects. - - - - - A Git object hash is 160 bits, i.e. 20 bytes. - - Changing this assumption is not going to be as easy as changing this declaration. - - - - - - A Git object can be expressed as a 40 character string of hexadecimal digits. - - - - - Special name for the "HEAD" symbolic-ref. - - - - - Text string that identifies an object as a commit. - - Commits connect trees into a string of project histories, where each - commit is an assertion that the best way to continue is to use this other - tree (set of files). - - - - - Text string that identifies an object as a blob. - - Blobs store whole file revisions. They are used for any user file, as - well as for symlinks. Blobs form the bulk of any project's storage space. - - - - - Text string that identifies an object as a tree. - - Trees attach object ids (hashes) to names and file modes. The normal use - for a tree is to store a version of a directory and its contents. - - - - - Text string that identifies an object as an annotated tag. - - Annotated tags store a pointer to any other object, and an additional - message. It is most commonly used to record a stable release of the - project. - - - - - An unknown or invalid object type code. - - - - - In-pack object type: extended types. - - This header code is reserved for future expansion. It is currently - undefined/unsupported. - - - - - In-pack object type: commit. - - Indicates the associated object is a commit. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: tree. - - Indicates the associated object is a tree. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: blob. - - Indicates the associated object is a blob. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: annotated tag. - - Indicates the associated object is an annotated tag. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: reserved for future use. - - - - - In-pack object type: offset delta - - Objects stored with this type actually have a different type which must - be obtained from their delta base object. Delta objects store only the - changes needed to apply to the base object in order to recover the - original object. - - An offset delta uses a negative offset from the start of this object to - refer to its delta base. The base object must exist in this packfile - (even in the case of a thin pack). - - This constant is fixed and is defined by the Git packfile format. - - - - - In-pack object type: reference delta - - Objects stored with this type actually have a different type which must - be obtained from their delta base object. Delta objects store only the - changes needed to apply to the base object in order to recover the - original object. - - A reference delta uses a full object id (hash) to reference the delta - base. The base object is allowed to be omitted from the packfile, but - only in the case of a thin pack being transferred over the network. - - This constant is fixed and is defined by the Git packfile format. - - - - - Default main branch name - - - - - Prefix for branch refs - - - - - Prefix for remotes refs - - - - - Prefix for tag refs - - - - - Prefix for any ref - - - - - Logs folder name - - - - - Info refs folder - - - - - Packed refs file - - - - - The environment variable that contains the system user name - - - - - The environment variable that contains the author's name - - - - - The environment variable that contains the author's email - - - - - The environment variable that contains the commiter's name - - - - - The environment variable that contains the commiter's email - - - - - The environment variable that limits how close to the root of the file systems JGit will traverse when looking for a repository root. - - - - - The environment variable that tells us which directory is the ".git" directory - - - - - The environment variable that tells us which directory is the working directory. - - - - - The environment variable that tells us which file holds the Git index. - - - - - The environment variable that tells us where objects are stored - - - - - The environment variable that tells us where to look for objects, besides the default objects directory. - - - - - Default value for the user name if no other information is available - - - - - Beginning of the common "Signed-off-by: " commit message line - - - - - Default remote name used by clone, push and fetch operations - - - - - Default name for the Git repository directory - - - - - A bare repository typically ends with this string - - - - - A gitignore file name - - - - - Pack file signature that occurs at file header - identifies file as Git - packfile formatted. - - This constant is fixed and is defined by the Git packfile format. - - - - - Native character encoding for commit messages, file names... - - - - - Create a new digest function for objects. - - A new digest object. - - - - Convert an OBJ_* type constant to a TYPE_* type constant. - - - typeCode the type code, from a pack representation. - - The canonical string name of this type. - - - - Convert an OBJ_* type constant to an ASCII encoded string constant. - - The ASCII encoded string is often the canonical representation of - the type within a loose object header, or within a tag header. - - - typeCode the type code, from a pack representation. - - - The canonical ASCII encoded name of this type. - - - - - Parse an encoded type string into a type constant. - - - this type string came from; may be null if - that is not known at the time the parse is occurring. - - string version of the type code. - - Character immediately following the type string. Usually ' ' - (space) or '\n' (line feed). - - - Position within where the parse - should start. Updated with the new position (just past - when the parse is successful). - - - A type code constant (one of , - , , - - - - - - Convert an integer into its decimal representation. - - the integer to convert. - - Decimal representation of the input integer. The returned array - is the smallest array that will hold the value. - - - - - Convert a string to US-ASCII encoding. - - - The string to convert. Must not contain any characters over - 127 (outside of 7-bit ASCII). - - - A byte array of the same Length as the input string, holding the - same characters, in the same order. - - - The input string contains one or more characters outside of - the 7-bit ASCII character space. - - - - - Convert a string to a byte array in UTF-8 character encoding. - - - The string to convert. May contain any Unicode characters. - - - A byte array representing the requested string, encoded using the - default character encoding (UTF-8). - - - - - Return whether to log all refUpdates - - - - - Reader for a deltified object Stored in a pack file. - - - - - Base class for a set of object loader classes for packed objects. - - - - - Base class for a set of loaders for different representations of Git objects. - New loaders are constructed for every object. - - - - - Git in pack object type, see . - - - - - - Size of object in bytes - - - - - - Obtain a copy of the bytes of this object. - - Unlike this method returns an array that might - be modified by the caller. - - The bytes of this object. - - - - Obtain a reference to the (possibly cached) bytes of this object. - - This method offers direct access to the internal caches, potentially - saving on data copies between the internal cache and higher level code. - Callers who receive this reference must not modify its contents. - Changes (if made) will affect the cache but not the repository itself. - - A copy of the cached bytes of this object. - - - - Raw object type from object header, as stored in storage (pack, - loose file). This may be different from result - for packs (see ). - - - - - - Raw size of object from object header (pack, loose file). - Interpretation of this value depends on . - - - - - - Force this object to be loaded into memory and pinned in this loader. - - Once materialized, subsequent get operations for the following methods - will always succeed without raising an exception, as all information is - pinned in memory by this loader instance. -
    -
  • {@link Type}
  • -
  • {@link Size}
  • -
  • {@link #getBytes()}, {@link #getCachedBytes}
  • -
  • {@link #getRawSize()}
  • -
  • {@link #getRawType()}
  • -
-
- temporary thread storage during data access. -
- - - Peg the pack file open to support data copying. - - Applications trying to copy raw pack data should ensure the pack stays - open and available throughout the entire copy. To do that use: - - loader.beginCopyRawData(); - try - { - loader.CopyRawData(out, tmpbuf, curs); - } - finally - { - loader.endCopyRawData(); - } - - - - This loader contains stale information and cannot be used. - The most likely cause is the underlying pack file has been - deleted, and the object has moved to another pack file. - - - - - Release resources after . - - - - - Copy raw object representation from storage to provided output stream. - - Copied data doesn't include object header. User must provide temporary - buffer used during copying by underlying I/O layer. - - - - Output stream when data is copied. No buffering is guaranteed. - - - Temporary buffer used during copying. Recommended size is at - least few kB. - - temporary thread storage during data access. - - When the object cannot be read. - - - - - - Gets the offset of object header within pack file - - - - - - Gets the offset of object data within pack file - - - - - - Gets if this loader is capable of fast raw-data copying basing on - compressed data checksum; false if raw-data copying needs - uncompressing and compressing data - - - - - - Gets the id of delta base object for this object representation. - It returns null if object is not stored as delta. - - - - - - - - Temporary thread storage during data access. - - - The object loader for the base object - - - - - Reads a deltified object which uses an to find its base. - - - - Bit pattern for {@link #TYPE_MASK} matching {@link #GITLINK}. - - - Bit pattern for {@link #TYPE_MASK} matching {@link #MISSING}. - - - - Returns the number of bytes written by - - - - - Bit pattern for {@link #TYPE_MASK} matching {@link #REGULAR_FILE}. - - - - A TreeVisitor is invoked depth first for every node in a tree and is expected - to perform different actions. - - - - - Visit to a tree node before child nodes are visited. - - Tree - - - - - Visit to a tree node. after child nodes have been visited. - - Tree - - - - - Visit to a blob. - - Blob - - - - - Visit to a symlink. - - Symlink entry. - - - - - Visit to a gitlink. - - Gitlink entry. - - - - - A representation of the Git index. - - The index points to the objects currently checked out or in the process of - being prepared for committing or objects involved in an unfinished merge. - - The abstract format is:
path stage flags statdata SHA-1 -
    -
  • Path is the relative path in the workdir
  • -
  • stage is 0 (normally), but when - merging 1 is the common ancestor version, 2 is 'our' version and 3 is 'their' - version. A fully resolved merge only contains stage 0.
  • -
  • flags is the object type and information of validity
  • -
  • statdata is the size of this object and some other file system specifics, - some of it ignored by JGit
  • -
  • SHA-1 represents the content of the references object
  • -
- An index can also contain a tree cache which we ignore for now. We drop the - tree cache when writing the index. -
-
- - - Stage 0 represents merged entries. - - - - - Construct a Git index representation. - - - - - - Reread index data from disk if the index file has been changed - - - - - - Add the content of a file to the index. - - workdir - the file - a new or updated index entry for the path represented by f - - - - - Add the content of a file to the index. - - workdir - the file - content of the file - a new or updated index entry for the path represented by f - - - - - Add the encoded filename and content of a file to the index. - - relative filename with respect to the working directory - - - - - - Remove a path from the index. - - workdir - the file whose path shall be removed. - true if such a path was found (and thus removed) - - - - - Read the cache file into memory. - - - - - - Write content of index to disk. - - - - - - Read a Tree recursively into the index - - The tree to read - - - - - Add tree entry to index - - tree entry - new or modified index entry - - - - - Check out content of the content represented by the index - - workdir - - - - - Check out content of the specified index entry - - workdir - index entry - - - - - Construct and write tree out of index. - - SHA-1 of the constructed tree - - - - - Look up an entry with the specified path. - - - Index entry for the path or null if not in index. - - - - True if we have modified the index in memory since reading it from disk. - - - - - Return the members of the index sorted by the unsigned byte - values of the path names. - - Small beware: Unaccounted for are unmerged entries. You may want - to abort if members with stage != 0 are found if you are doing - any updating operations. All stages will be found after one another - here later. Currently only one stage per name is returned. - - - The index entries sorted - - - - - An index entry - - - - - Update this index entry with stat and SHA-1 information if it looks - like the file has been modified in the workdir. - - file in work dir - true if a change occurred - - - - - Update this index entry with stat and SHA-1 information if it looks - like the file has been modified in the workdir. - - file in work dir - the new content of the file - true if a change occurred - - - - - Check if an entry's content is different from the cache, - - File status information is used and status is same we - consider the file identical to the state in the working - directory. Native git uses more stat fields than we - have accessible in Java. - - working directory to compare content with - true if content is most likely different. - - - - Check if an entry's content is different from the cache, - - File status information is used and status is same we - consider the file identical to the state in the working - directory. Native git uses more stat fields than we - have accessible in Java. - - working directory to compare content with - - True if the actual file content should be checked if modification time differs. - - true if content is most likely different. - - - true if this entry shall be assumed valid - - - true if this entry should be checked for changes - - - - Set whether to always assume this entry valid - - true to ignore changes - - - - Set whether this entry must be checked - - - - - - Return raw file mode bits. See - - file mode bits - - - path name for this entry - - - path name for this entry as byte array, hopefully UTF-8 encoded - - - the stage this entry is in - - - size of disk object - - - - Evaluate if the given path is ignored. If not yet loaded this loads all .gitignore files on the path and respects them. - - relative path to a file in the repository - - - - - Construct an indexdiff for diffing the workdir against the index. - - - - - - Construct an indexdiff for diffing the workdir against both the index and a tree. - - - - - - - Run the diff operation. Until this is called, all lists will be empty - - true if anything is different between index, tree, and workdir - - - - List of files added to the index, not in the tree - - - - - List of files changed from tree to index - - - - - List of files removed from index, but in tree - - - - - List of files in index, but not filesystem - - - - - List of files modified on disk relative to the index - - - - - List of files in index and have a merge conflict - - - - - Returns the number of files checked into the git repository - - - - - Obtain an Inflater for decompression. - - Inflaters obtained through this cache should be returned (if possible) by - to avoid garbage collection and reallocation. - - An available inflater. Never null. - - - Release an inflater previously obtained from this cache. - - @param i - the inflater to return. May be null, in which case this method - does nothing. - - - - Git style file locking and replacement. - - To modify a ref file Git tries to use an atomic update approach: we write the - new data into a brand new file, then rename it in place over the old name. - This way we can just delete the temporary file if anything goes wrong, and - nothing has been damaged. To coordinate access from multiple processes at - once Git tries to atomically create the new temporary file under a well-known - name. - - - - - Create a new lock for any file. - - the file that will be locked. - - - - Try to establish the lock. - - - True if the lock is now held by the caller; false if it is held - by someone else. - - - the temporary output file could not be created. The caller - does not hold the lock. - - - - - Try to establish the lock for appending. - - - True if the lock is now held by the caller; false if it is held - by someone else. - - - The temporary output file could not be created. The caller - does not hold the lock. - - - - - Copy the current file content into the temporary file. - - This method saves the current file content by inserting it into the - temporary file, so that the caller can safely append rather than replace - the primary file. - - This method does nothing if the current file does not exist, or exists - but is empty. - - - The temporary file could not be written, or a read error - occurred while reading from the current file. The lock is - released before throwing the underlying IO exception to the - caller. - - - - - Write an ObjectId and LF to the temporary file. - - - the id to store in the file. The id will be written in hex, - followed by a sole LF. - - - - - Write arbitrary data to the temporary file. - - - the bytes to store in the temporary file. No additional bytes - are added, so if the file must end with an LF it must appear - at the end of the byte array. - - - - - Obtain the direct output stream for this lock. - - The stream may only be accessed once, and only after has - been successfully invoked and returned true. Callers must close the - stream prior to calling to commit the change. - - - A stream to write to the new file. The stream is unbuffered. - - - - - Request that remember modification time. - - true if the commit method must remember the modification time. - - - - Wait until the lock file information differs from the old file. - - This method tests both the length and the last modification date. If both - are the same, this method sleeps until it can force the new lock file's - modification date to be later than the target file. - - - - - Commit this change and release the lock. - - If this method fails (returns false) the lock is still released. - - - true if the commit was successful and the file contains the new - data; false if the commit failed and the file remains with the - old data. - - - - - Unlock this file and abort this change. - - The temporary file (if created) is deleted before returning. - - - - - Wraps a FileStream and tracks its locking status - - - - - Make this id match . - - - - - Verifies that an object is formatted correctly. - - Verifications made by this class only check that the fields of an object are - formatted correctly. The ObjectId checksum of the object is not verified, and - connectivity links between objects are also not verified. Its assumed that - the caller can provide both of these validations on its own. - - Instances of this class are not thread safe, but they may be reused to - perform multiple object validations. - - - - Header "tree " - - - Header "parent " - - - Header "author " - - - Header "committer " - - - Header "encoding " - - - Header "object " - - - Header "type " - - - Header "tag " - - - Header "tagger " - - - - Check an object for parsing errors. - - - Type of the object. Must be a valid object type code in - . - - The raw data which comprises the object. This should be in the - canonical format (that is the format used to generate the - of the object). The array is never modified. - - If any error is identified. - - - - Check a commit for errors. - - The commit data. The array is never modified. - If any error was detected. - - - - Check an annotated tag for errors. - - The tag data. The array is never modified. - If any error was detected. - - - - Check a canonical formatted tree for errors. - - The raw tree data. The array is never modified. - If any error was detected. - - - - Check a blob for errors. - - The blob data. The array is never modified. - If any error was detected. - - - - Traditional file system based . - - This is the classical object database representation for a Git repository, - where objects are stored loose by hashing them into directories by their - , or are stored in compressed containers known as - s. - - - - - Initialize a reference to an on-disk object directory. - - the location of the objects directory. - a list of alternate object directories - - - - Gets the location of the objects directory. - - - - - Compute the location of a loose object file. - - Identity of the loose object to map to the directory. - Location of the object, if it were to exist as a loose object. - - - - unmodifiable collection of all known pack files local to this - directory. Most recent packs are presented first. Packs most - likely to contain more recent objects appear before packs - containing objects referenced by commits further back in the - history of the repository. - - - - - Add a single existing pack to the list of available pack files. - - Path of the pack file to open. - Path of the corresponding index file. - - Index file could not be opened, read, or is not recognized as - a Git pack file index. - - - - - Last wall-clock time the directory was read. - - - - - Last modification time of . - - - - - All known packs, sorted by . - - - - - Any reference whose peeled value is not yet known. - - - - - A that points directly at an . - - - - - Pairing of a name and the it currently has. - - A ref in Git is (more or less) a variable that holds a single object - identifier. The object identifier can be any valid Git object (blob, tree, - commit, annotated tag, ...). - - The ref name has the attributes of the ref that was asked for as well as the - ref it was resolved to for symbolic refs plus the object id it points to and - (for tags) the peeled target object id, i.e. the tag resolved recursively - until a non-tag object is referenced. - - - - - What this ref is called within the repository. - - name of this ref. - - - - Test if this reference is a symbolic reference. - - A symbolic reference does not have its own {@link ObjectId} value, but - instead points to another {@code Ref} in the same database and always - uses that other reference's value as its own. - - - true if this is a symbolic reference; false if this reference - contains its own ObjectId. - - - - - Traverse target references until {@link #isSymbolic()} is false. - - If {@link #isSymbolic()} is false, returns {@code this}. - - If {@link #isSymbolic()} is true, this method recursively traverses - {@link #getTarget()} until {@link #isSymbolic()} returns false. - - This method is effectively - -
-            return isSymbolic() ? getTarget().getLeaf() : this;
-            
-
- the reference that actually stores the ObjectId value. -
- - - Get the reference this reference points to, or {@code this}. - - If {@link #isSymbolic()} is true this method returns the reference it - directly names, which might not be the leaf reference, but could be - another symbolic reference. - - If this is a leaf level reference that contains its own ObjectId,this - method returns {@code this}. - - the target reference, or {@code this}. - - - - Cached value of this ref. - - the value of this ref at the last time we read it. - - - - Cached value of ref^{} (the ref peeled to commit). - - - if this ref is an annotated tag the id of the commit (or tree or - blob) that the annotated tag refers to; null if this ref does not - refer to an annotated tag. - - - - whether the Ref represents a peeled tag - - - - How was this ref obtained? - - The current storage model of a Ref may influence how the ref must be - updated or deleted from the repository. - - type of ref. - - - - Create a new ref pairing. - - method used to store this ref. - name of this ref. - - current value of the ref. May be null to indicate a ref that - does not exist yet. - - - - - Create a new ref pairing. - - method used to store this ref. - name of this ref. - - current value of the ref. May be null to indicate a ref that - does not exist yet. - - - - - An annotated tag whose peeled object has been cached. - - - - - Create a new ref pairing. - - method used to store this ref. - name of this ref. - - current value of the ref. - - the first non-tag object that tag {@code id} points to. - - - - A reference to a non-tag object coming from a cached source. - - - - - Create a new ref pairing. - - method used to store this ref. - name of this ref. - - current value of the ref. May be null to indicate a ref that - does not exist yet. - - - - - Fast, efficient map specifically for {@link ObjectId} subclasses. - - This map provides an efficient translation from any ObjectId instance to a - cached subclass of ObjectId that has the same value. - - Raw value equality is tested when comparing two ObjectIds (or subclasses), - not reference equality and not .Equals(Object) equality. This - allows subclasses to override Equals to supply their own - extended semantics. - - - Type of subclass of ObjectId that will be stored in the map. - - - - - Lookup an existing mapping. - - the object identifier to find. - the instance mapped to toFind, or null if no mapping exists. - - - - An unknown or invalid object type code. - - - - - In-pack object type: extended types. - - This header code is reserved for future expansion. It is currently - undefined/unsupported. - - - - - In-pack object type: commit. - - Indicates the associated object is a commit. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: tree. - - Indicates the associated object is a tree. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: blob. - - Indicates the associated object is a blob. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: annotated tag. - - Indicates the associated object is an annotated tag. - - This constant is fixed and is defined by the Git packfile format. - - - - - - In-pack object type: reserved for future use. - - - - - In-pack object type: offset delta - - Objects stored with this type actually have a different type which must - be obtained from their delta base object. Delta objects store only the - changes needed to apply to the base object in order to recover the - original object. - - An offset delta uses a negative offset from the start of this object to - refer to its delta base. The base object must exist in this packfile - (even in the case of a thin pack). - - This constant is fixed and is defined by the Git packfile format. - - - - - In-pack object type: reference delta - - Objects stored with this type actually have a different type which must - be obtained from their delta base object. Delta objects store only the - changes needed to apply to the base object in order to recover the - original object. - - A reference delta uses a full object id (hash) to reference the delta - base. The base object is allowed to be omitted from the packfile, but - only in the case of a thin pack being transferred over the network. - - This constant is fixed and is defined by the Git packfile format. - - - - - Construct an object writer for the specified repository. - - - - - - Compute the SHA-1 of a blob without creating an object. This is for - figuring out if we already have a blob or not. - - number of bytes to consume. - stream for read blob data from. - SHA-1 of a looked for blob. - - - - - Write a blob with the data in the specified file - - A file containing blob data. - SHA-1 of the blob. - - - - - Write a blob with the specified data. - - Bytes of the blob. - SHA-1 of the blob. - - - - - Write a blob with data from a stream - - Number of bytes to consume from the stream. - Stream with blob data. - SHA-1 of the blob. - - - - - Write a canonical tree to the object database. - - The canonical encoding of the tree object. - SHA-1 of the tree. - - - - - Write a Commit to the object database - - Commit to store. - SHA-1 of the commit. - - - - - Write an annotated Tag to the object database - - Tag - SHA-1 of the tag. - - - - - Least frequently used cache for objects specified by PackFile positions. - - This cache maps a (PackFile, position) tuple to an object. - - This cache is suitable for objects that are "relative expensive" to compute - from the underlying PackFile, given some known position in that file. - - Whenever a cache miss occurs, is invoked by - exactly one thread for the given (PackFile,position) key tuple. - This is ensured by an array of _locks, with the tuple hashed to a @lock instance. - - During a miss, older entries are evicted from the cache so long as - returns true. - - Its too expensive during object access to be 100% accurate with a least - recently used (LRU) algorithm. Strictly ordering every read is a lot of - overhead that typically doesn't yield a corresponding benefit to the - application. - - This cache : a loose LRU policy by randomly picking a window - comprised of roughly 10% of the cache, and evicting the oldest accessed entry - within that window. - - Entities created by the cache are held under SoftReferences, permitting the - Java runtime's garbage collector to evict entries when heap memory gets low. - Most JREs implement a loose least recently used algorithm for this eviction. - - The internal hash table does not expand at runtime, instead it is fixed in - size at cache creation time. The internal @lock table used to gate load - invocations is also fixed in size. - - The key tuple is passed through to methods as a pair of parameters rather - than as a single object, thus reducing the transient memory allocations of - callers. It is more efficient to avoid the allocation, as we can't be 100% - sure that a JIT would be able to stack-allocate a key tuple. - - This cache has an implementation rule such that: - - is invoked by at most one thread at a time - for a given (PackFile, position) tuple. - For every load() invocation there is exactly one - invocation to wrap a SoftReference - around the cached entity. - For every Reference created by createRef() there will be - exactly one call to to cleanup any resources associated - with the (now expired) cached entity. - - - - Therefore, it is safe to perform resource accounting increments during the - or - methods, and matching decrements during . Implementors may - need to override in order to embed - additional accounting information into an implementation specific - subclass, as the cached entity may have already been - evicted by the JRE's garbage collector. - - To maintain higher concurrency workloads, during eviction only one thread - performs the eviction work, while other threads can continue to insert new - objects in parallel. This means that the cache can be temporarily over limit, - especially if the nominated eviction thread is being starved relative to the - other threads. - - Type of value stored in the cache. - - Subtype of subclass used by the cache. - - - - - Queue that must use. - - - - - Number of entries in . - - - - - Access clock for loose LRU. - - - - - Hash bucket directory; entries are chained below. - - - - - Locks to prevent concurrent loads for same (PackFile, position). - - - - - Lock to elect the eviction thread after a load occurs. - - - - - Number of buckets to scan for an eviction window. - - - - - Create a new cache with a fixed size entry table and @Lock table. - - number of entries in the entry hash table. - - number of entries in the table. This is the maximum - concurrency rate for creation of new objects through - invocations. - - - - - Lookup a cached object, creating and loading it if it doesn't exist. - - the pack that "contains" the cached object. - offset within of the object. - The object reference. - - The object reference was not in the cache and could not be - obtained by - - - - - Clear every entry from the cache. - - This is a last-ditch effort to clear out the cache, such as before it - gets replaced by another cache that is configured differently. This - method tries to force every cached entry through to - ensure that resources are correctly accounted for and cleaned up by the - subclass. A concurrent reader loading entries while this method is - running may cause resource accounting failures. - - - - - Clear all entries related to a single file. - - Typically this method is invoked during , when we - know the pack is never going to be useful to us again (for example, it no - longer exists on disk). A concurrent reader loading an entry from this - same pack may cause the pack to become stuck in the cache anyway. - - the file to purge all entries of. - - - - Materialize an object that doesn't yet exist in the cache. - - This method is invoked by when the - specified entity does not yet exist in the cache. Internal locking - ensures that at most one thread can call this method for each unique - (pack,position), but multiple threads can call this method - concurrently for different (pack,position) tuples. - - The file to materialize the entry from. - Offset within the file of the entry. - the materialized object. Must never be null. - - The method was unable to materialize the object for this - input pair. The usual reasons would be file corruption, file - not found, out of file descriptors, etc. - - - - - Construct a Ref (SoftReference) around a cached entity. - - Implementing this is only necessary if the subclass is performing - resource accounting during and - requires some information to update the accounting. - - Implementors MUST ensure that the returned reference uses the - Queue, otherwise will not be - invoked at the proper time. - - The file to materialize the entry from. - Offset within the file of the entry. - - The object returned by . - - - A weak reference subclass wrapped around . - - - - - Update accounting information now that an object has left the cache. - - This method is invoked exactly once for the combined - and - invocation pair that was used - to construct and insert an object into the cache. - - - the reference wrapped around the object. Implementations must - be prepared for @ref.get() to return null. - - - - - Determine if the cache is full and requires eviction of entries. - - By default this method returns false. Implementors may override to - consult with the accounting updated by , - and . - - - True if the cache is still over-limit and requires eviction of - more entries. - - - - - Compute the hash code value for a (PackFile,position) tuple. - - For example, return packHash + (int) (position >>> 4). - Implementors must override with a suitable hash (for example, a different - right shift on the position). - - hash code for the file being accessed. - position within the file being accessed. - a reasonable hash code mixing the two values. - - - - Next entry in the hash table's chain list. - - - - - The referenced object. - - - - - Marked true when returns null and the - is garbage collected. - - A true here indicates that the @ref is no longer accessible, and that - we therefore need to eventually purge this Entry object out of the - bucket's chain. - - - - - A wrapped around a cached object. - - Type of the cached object. - - - - A Git version 2 pack file representation. A pack file contains Git objects in - delta packed format yielding high compression of lots of object where some - objects are similar. - - - - - Sorts PackFiles to be most recently created to least recently created. - - - - - Construct a Reader for an existing, pre-indexed packfile. - - path of the .idx file listing the contents. - path of the .pack file holding the data. - - - - - - - - - The file object which locates this pack on disk. - - - - - * Determine if an object is contained within the pack file. - - For performance reasons only the index file is searched; the main pack - content is ignored entirely. - - - The object to look for. Must not be null. - True if the object is in this pack; false otherwise. - - - - Get an object from this pack. - - temporary working space associated with the calling thread. - the object to obtain from the pack. Must not be null. - - The object loader for the requested object if it is contained in - this pack; null if the object was not found. - - - - - Close the resources utilized by this repository. - - - - - Search for object id with the specified start offset in associated pack - (reverse) index. - - start offset of object to find - - Object id for this offset, or null if no object was found - - - - - The object which locates this pack on disk. - - - - - Obtain the total number of objects available in this pack. This method - relies on pack index, giving number of effectively available objects. - - - Number of objects in index of this pack, likewise in this pack. - - - The index file cannot be loaded into memory. - - - - - Access path to locate objects by in a . - - Indexes are strictly redundant information in that we can rebuild all of the - data held in the index file from the on disk representation of the pack file - itself, but it is faster to access for random requests because data is stored - by ObjectId. - - - - - Determine if an object is contained within the pack file. - - - The object to look for. Must not be null. - - - True if the object is listed in this index; false otherwise. - - - - Get ObjectId for the n-th object entry returned by {@link #iterator()}. - - This method is a constant-time replacement for the following loop: - -
-             Iterator<MutableEntry> eItr = index.iterator();
-             int curPosition = 0;
-             while (eItr.hasNext() && curPosition++ < nthPosition)
-             	eItr.next();
-             ObjectId result = eItr.next().ToObjectId();
-             
- - @param nthPosition - position within the traversal of {@link #iterator()} that the - caller needs the object for. The first returned - {@link MutableEntry} is 0, the second is 1, etc. - @return the ObjectId for the corresponding entry. -
- - Get ObjectId for the n-th object entry returned by {@link #iterator()}. - - This method is a constant-time replacement for the following loop: - -
-             Iterator<MutableEntry> eItr = index.iterator();
-             int curPosition = 0;
-             while (eItr.hasNext() && curPosition++ < nthPosition)
-             	eItr.next();
-             ObjectId result = eItr.next().ToObjectId();
-             
- - @param nthPosition - unsigned 32 bit position within the traversal of - {@link #iterator()} that the caller needs the object for. The - first returned {@link MutableEntry} is 0, the second is 1, - etc. Positions past 2**31-1 are negative, but still valid. - @return the ObjectId for the corresponding entry. -
- - Locate the file offset position for the requested object. - - @param objId - name of the object to locate within the pack. - @return offset of the object's header and compressed content; -1 if the - object does not exist in this index and is thus not stored in the - associated pack. - - - - Retrieve stored CRC32 checksum of the requested object raw-data - (including header). - - id of object to look for - - CRC32 checksum of specified object (at 32 less significant bits). - - - When requested ObjectId was not found in this index - - - when this index doesn't support CRC32 checksum - - - - - Open an existing pack .idx file for reading.. -

- The format of the file will be automatically detected and a proper access - implementation for that format will be constructed and returned to the - caller. The file may or may not be held open by the returned instance. -

-
- existing pack .idx to read. - -
- - - Footer checksum applied on the bottom of the pack file. - - - - Obtain the total number of objects described by this index. - - @return number of objects in this index, and likewise in the associated - pack that this index was generated from. - - - Obtain the total number of objects needing 64 bit offsets. - - @return number of objects in this index using a 64 bit offset; that is an - object positioned after the 2 GB position within the file. - - - - Check whether this index supports (has) CRC32 checksums for objects. - - - - - Returns mutable copy of this mutable entry. - - - Copy of this mutable entry - - - - - Returns offset for this index object entry - - - - - Returns hex string describing the object id of this entry - - - - - Provide iterator that gives access to index entries. Note, that iterator - returns reference to mutable object, the same reference in each call - - for performance reason. If client needs immutable objects, it must copy - returned object on its own. - - Iterator returns objects in SHA-1 lexicographical order. - - - - - Support for the pack index v2 format. - - - - 256 arrays of contiguous object names. - - - 256 arrays of the 32 bit offset data, matching {@link #names}. - - - 256 arrays of the CRC-32 of objects, matching {@link #names}. - - - 64 bit offset table. - - - - Create a new writer for the oldest (most widely understood) format. - - This method selects an index format that can accurate describe the - supplied objects and that will be the most compatible format with older - Git implementations. - - Index version 1 is widely recognized by all Git implementations, but - index version 2 (and later) is not as well recognized as it was - introduced more than a year later. Index version 1 can only be used if - the resulting pack file is under 4 gigabytes in size; packs larger than - that limit must use index version 2. - - - - The stream the index data will be written to. If not already - buffered it will be automatically wrapped in a buffered - stream. Callers are always responsible for closing the stream. - - - The objects the caller needs to store in the index. Entries - will be examined until a format can be conclusively selected. - - - A new writer to output an index file of the requested format to - the supplied stream. - - - No recognized pack index version can support the supplied - objects. This is likely a bug in the implementation. - - - - - Create a new writer instance for a specific index format version. - - - The stream the index data will be written to. If not already - buffered it will be automatically wrapped in a buffered - stream. Callers are always responsible for closing the stream. - - - Index format version number required by the caller. Exactly - this formatted version will be written. - - - A new writer to output an index file of the requested format to - the supplied stream. - - - The version requested is not supported by this - implementation. - - - - - Create a new writer instance. - - - The stream this instance outputs to. If not already buffered - it will be automatically wrapped in a buffered stream. - - - - - Write all object entries to the index stream. - - After writing the stream passed to the factory is flushed but remains - open. Callers are always responsible for closing the output stream. - - - - Sorted list of objects to store in the index. The caller must - have previously sorted the list using 's - native {@link Comparable} implementation. - - - Checksum signature of the entire pack data content. This is - traditionally the last 20 bytes of the pack file's own stream. - - - - - Writes the index file to out. - - Implementations should go something like: - - WriteFanOutTable(); - foreach (PackedObjectInfo po in entries) - { - WriteOneEntry(po); - } - WriteChecksumFooter(); - - - Where the logic for writeOneEntry is specific to the index - format in use. Additional headers/footers may be used if necessary and - the entries collection may be iterated over more than once if - necessary. Implementors therefore have complete control over the data. - - - - - Output the version 2 (and later) TOC header, with version number. - - Post version 1 all index files start with a TOC header that makes the - file an invalid version 1 file, and then includes the version number. - This header is necessary to recognize a version 1 from a version 2 - formatted index. - - Version number of this index format being written. - - - - utput the standard 256 entry first-level fan-out table. - - The fan-out table is 4 KB in size, holding 256 32-bit unsigned integer - counts. Each count represents the number of objects within this index - whose matches the count's position in the - fan-out table. - - - - - Output the standard two-checksum index footer. - - The standard footer contains two checksums (20 byte SHA-1 values): -
    -
  1. Pack data checksum - taken from the last 20 bytes of the pack file.
  2. -
  3. Index data checksum - checksum of all index bytes written, including - the pack data checksum above.
  4. -
-
-
- - - Keeps track of a associated .keep file. - - - - - Create a new lock for a pack file. - - - Location of the pack-*.pack file. - - - - - Create the pack-*.keep file, with the given message. - - message to store in the file. - - true if the keep file was successfully written; false otherwise. - - - The keep file could not be written. - - - - - Remove the .keep file that holds this pack in place. - - - - - Reverse index for forward pack index. Provides operations based on offset - instead of object id. Such offset-based reverse lookups are performed in - O(log n) time. - - - /// - - - - Create reverse index from straight/forward pack index, by indexing all - its entries. - - - Forward index - entries to (reverse) index. - - - - - Search for object id with the specified start offset in this pack - (reverse) index. - - start offset of object to find. - - for this offset, or null if no object was found. - - - - - Search for the next offset to the specified offset in this pack (reverse) - index. - - - start offset of previous object (must be valid-existing offset). - - - maximum offset in a pack (returned when there is no next offset). - - - offset of the next object in a pack or maxOffset if provided - offset was the last one. - - - When there is no object with the provided offset. - - - - - Creates new PersonIdent from config info in repository, with current time. - This new PersonIdent gets the info from the default committer as available - from the configuration. - - - - - - Copy a . - - Original . - - - - Construct a new with current time. - - - - - - - Copy a PersonIdent, but alter the clone's time stamp - - Original . - Local date time in milliseconds (since Epoch). - Time zone offset in minutes. - - - - Copy a , but alter the clone's time stamp - - Original . - Local date time in milliseconds (since Epoch). - - - - Construct a PersonIdent from simple data - - - - Local date time in milliseconds (since Epoch). - Time zone offset in minutes. - - - - Construct a - - - - Local date time in milliseconds (since Epoch). - Time zone offset in minutes. - - - - Copy a PersonIdent, but alter the clone's time stamp - - Original . - Local date time in milliseconds (since Epoch). - Time zone offset in minutes. - - - - Construct a PersonIdent from a string with full name, email, time time - zone string. The input string must be valid. - - A Git internal format author/committer string. - - - - Format for Git storage. - - A string in the git author format. - - - - Elapsed milliseconds since Epoch (1970.1.1 00:00:00 GMT) - - - - - TimeZone offset in minutes - - - - - Location where a is Stored. - - - - - The ref does not exist yet, updating it may create it. - - Creation is likely to choose storage. - - - - - The ref is Stored in a file by itself. - - Updating this ref affects only this ref. - - - - - The ref is stored in the packed-refs file, with others. - - Updating this ref requires rewriting the file, with perhaps many - other refs being included at the same time. - - - - - The ref is both and . - - Updating this ref requires only updating the loose file, but deletion - requires updating both the loose file and the packed refs file. - - - - - The ref came from a network advertisement and storage is unknown. - - This ref cannot be updated without Git-aware support on the remote - side, as Git-aware code consolidate the remote refs and reported them - to this process. - - - - - Util for sorting (or comparing) Ref instances by name. - - Useful for command line tools or writing out refs to file. - - - - - Singleton instance of RefComparator - - - - - Sorts the collection of refs, returning a new collection. - - collection to be sorted - sorted collection of refs - - - - Compare a reference to a name. - - the reference instance. - the name to compare to. - standard Comparator result - - - - Compare two references by name. - - the reference instance. - the other reference instance. - standard Comparator result - - - - Abstraction of name to mapping. - - A reference database stores a mapping of reference names to . - Every has a single reference database, mapping names to - the tips of the object graph contained by the . - - - - - Order of prefixes to search when using non-absolute references. - - The implementation's method must take this search - space into consideration when locating a reference by name. The first - entry in the path is always {@code ""}, ensuring that absolute references - are resolved without further mangling. - - - - - Maximum number of times a can be traversed. - - If the reference is nested deeper than this depth, the implementation - should either fail, or at least claim the reference does not exist. - - - - - Magic value for to return all references. - - - - - Initialize a new reference database at this location. - - - - - Close any resources held by this database. - - - - - Determine if a proposed reference name overlaps with an existing one. - - Reference names use '/' as a component separator, and may be stored in a - hierarchical storage such as a directory on the local filesystem. - - If the reference "refs/heads/foo" exists then "refs/heads/foo/bar" must - not exist, as a reference cannot have a value and also be a container for - other references at the same time. - - If the reference "refs/heads/foo/bar" exists than the reference - "refs/heads/foo" cannot exist, for the same reason. - - proposed name. - - true if the name overlaps with an existing reference; false if - using this name right now would be safe. - - - - - Create a new update command to create, modify or delete a reference. - - the name of the reference. - - if {@code true} and {@code name} is currently a - , the update will replace it with an - . Otherwise, the update will recursively - traverse s and operate on the leaf - . - - a new update for the requested name; never null. - - - - Create a new update command to rename a reference. - - name of reference to rename from - name of reference to rename to - an update command that knows how to rename a branch to another. - - - - Read a single reference. - - Aside from taking advantage of , this method may be - able to more quickly resolve a single reference name than obtaining the - complete namespace by {@code getRefs(ALL).get(name)}. - - - the name of the reference. May be a short name which must be - searched for using the standard {@link #SEARCH_PATH}. - - the reference (if it exists); else {@code null}. - - - - Get a section of the reference namespace. - - - prefix to search the namespace with; must end with {@code /}. - If the empty string (), obtain a complete snapshot - of all references. - - - modifiable map that is a complete snapshot of the current - reference namespace, with {@code prefix} removed from the start - of each key. The map can be an unsorted map. - - - - - Peel a possibly unpeeled reference by traversing the annotated tags. - - If the reference cannot be peeled (as it does not refer to an annotated - tag) the peeled id stays null, but will be true. - - Implementors should check before performing any - additional work effort. - - The reference to peel - - {@code ref} if {@code ref.isPeeled()} is true; otherwise a new - Ref object representing the same data as Ref, but isPeeled() will - be true and getPeeledObjectId() will contain the peeled object - (or null). - - - - - Traditional file system based {@link RefDatabase}. - - This is the classical reference database representation for a Git repository. - References are stored in two formats: loose, and packed. - - Loose references are stored as individual files within the {@code refs/} - directory. The file name matches the reference name and the file contents is - the current {@link ObjectId} in string form. - - Packed references are stored in a single text file named {@code packed-refs}. - In the packed format, each reference is stored on its own line. This file - reduces the number of files needed for large reference spaces, reducing the - overall size of a Git repository on disk. - - - - - Magic string denoting the start of a symbolic reference file. - - - - - Magic string denoting the header of a packed-refs file. - - - - - If in the header, denotes the file has peeled data. - - - - - Immutable sorted list of loose references. - - Symbolic references in this collection are stored unresolved, that is - their target appears to be a new reference with no ObjectId. These are - converted into resolved references during a get operation, ensuring the - live value is always returned. - - - - - Immutable sorted list of packed references. - - - - - Number of modifications made to this database. - - This counter is incremented when a change is made, or detected from the - filesystem during a read operation. - - - - - Last that we sent to listeners. - - This value is compared to , and a notification is sent to - the listeners only when it differs. - - - - - Create a reference update to write a temporary reference. - - an update for a new temporary reference. - - - - Locate the file on disk for a single reference name. - - - name of the ref, relative to the Git repository top level - directory (so typically starts with refs/). - - the loose file location. - - - - Locate the log file on disk for a single reference name. - - - name of the ref, relative to the Git repository top level - directory (so typically starts with refs/). - - the log file location. - - - - A reference that indirectly points at another . - - A symbolic reference always derives its current value from the target - reference. - - - - - Create a new ref pairing. - - name of this ref. - the ref we reference and derive our value from. - - - - Rename any reference stored by {@link RefDirectory}. - - This class works by first renaming the source reference to a temporary name, - then renaming the temporary name to the destination reference. - - This strategy permits switching a reference like {@code refs/heads/foo}, - which is a file, to {@code refs/heads/foo/bar}, which is stored inside a - directory that happens to match the source name. - - - - - A RefUpdate combination for renaming a reference. - - If the source reference is currently pointed to by {@code HEAD}, then the - HEAD symbolic reference is updated to point to the new destination. - - - - - Update operation to read and delete the source reference. - - - - - Update operation to create/overwrite the destination reference. - - - - - Initialize a new rename operation. - - operation to read and delete the source. - operation to create (or overwrite) the destination. - - - identity of the user making the change in the reflog. - - - - Set the identity of the user appearing in the reflog. - - The timestamp portion of the identity is ignored. A new identity with the - current timestamp will be created automatically when the rename occurs - and the log record is written. - - - identity of the user. If null the identity will be - automatically determined based on the repository - configuration. - - - - - Get the message to include in the reflog. - - - message the caller wants to include in the reflog; null if the - rename should not be logged. - - - - - Set the message to include in the reflog. - - the message to describe this change. - - - - Don't record this rename in the ref's associated reflog. - - - - - - - result of rename operation - - - the result of the new ref update - - - the result of the rename operation. - - - - true if the {@code Constants#HEAD} reference needs to be linked - to the new destination name. - - - - - The value of the source reference at the start of the rename. - - At the end of the rename the destination reference must have this same - value, otherwise we have a concurrent update and the rename must fail - without making any changes. - - - - - True if HEAD must be moved to the destination reference. - - - - - A reference we backup {@link #objId} into during the rename. - - - - - Updates any reference stored by . - - - - - Creates, updates or deletes any reference. - - - - - New value the caller wants this ref to have. - - - - - Does this specification ask for forced updated (rewind/reset)? - - - - - Identity to record action as within the reflog. - - - - - Message the caller wants included in the reflog. - - - - - Should the Result value be appended to . - - - - - Old value of the ref, obtained after we lock it. - - - - - If non-null, the value {@link #oldValue} must have to continue. - - - - - Result of the update operation. - - - - the reference database this update modifies. - - - the repository storing the database's objects. - - - - Try to acquire the lock on the reference. - - If the locking was successful the implementor must set the current - identity value by calling . - - - true if the lock should be taken against the leaf level - reference; false if it should be taken exactly against the - current reference. - - - true if the lock was acquired and the reference is likely - protected from concurrent modification; false if it failed. - - - - - Releases the lock taken by {@link #tryLock} if it succeeded. - - - - identity of the user making the change in the reflog. - - - - Set the identity of the user appearing in the reflog. - - The timestamp portion of the identity is ignored. A new identity with the - current timestamp will be created automatically when the update occurs - and the log record is written. - - - identity of the user. If null the identity will be - automatically determined based on the repository - configuration. - - - - - Get the message to include in the reflog. - - - message the caller wants to include in the reflog; null if the - update should not be logged. - - - - {@code true} if the ref log message should show the result. - - - - Set the message to include in the reflog. - - - the message to describe this change. It may be null if - appendStatus is null in order not to append to the reflog - - - true if the status of the ref change (fast-forward or - forced-update) should be appended to the user supplied - message. - - - - - Don't record this update in the ref's associated reflog. - - - - - Force the ref to take the new value. - - This is just a convenient helper for setting the force flag, and as such - the merge test is performed. - - the result status of the update. - - - - Gracefully update the ref to the new value. - - Merge test will be performed according to . - - This is the same as: - -
-            return update(new RevWalk(getRepository()));
-            
-
- the result status of the update. -
- - - Gracefully update the ref to the new value. - - Merge test will be performed according to . - - - a RevWalk instance this update command can borrow to perform - the merge test. The walk will be reset to perform the test. - - - the result status of the update. - - - - - Delete the ref. - - This is the same as: - -
-            return delete(new RevWalk(getRepository()));
-            
-
- the result status of the delete. -
- - - Delete the ref. - - - a RevWalk instance this delete command can borrow to perform - the merge test. The walk will be reset to perform the test. - - the result status of the delete. - - - - Replace this reference with a symbolic reference to another reference. - - This exact reference (not its traversed leaf) is replaced with a symbolic - reference to the requested name. - - - name of the new target for this reference. The new target name - must be absolute, so it must begin with {@code refs/}. - - or on success. - - - name of the underlying ref this update will operate on. - - - - the reference this update will create or modify. - - - - new value the ref will be (or was) updated to. - - - - the expected value of the ref after the lock is taken, but - before update occurs. Null to avoid the compare and swap test. - Use to indicate expectation of a - non-existant ref. - - - - - Will this update want to forcefully change the ref, this ignoring merge results ? - - - - - The old value of the ref, prior to the update being attempted. - - This value may differ before and after the update method. Initially it is - populated with the value of the ref before the lock is taken, but the old - value may change if someone else modified the ref between the time we - last read it and when the ref was locked for update. - - - - - Get the status of this update. - - The same value that was previously returned from an update method. - - - - - - Status of an update request. - - - - - The ref update/delete has not been attempted by the caller. - - - - - The ref could not be locked for update/delete. - - This is generally a transient failure and is usually caused by - another process trying to access the ref at the same time as this - process was trying to update it. It is possible a future operation - will be successful. - - - - - Same value already stored. - - Both the old value and the new value are identical. No change was - necessary for an update. For delete the branch is removed. - - - - - The ref was created locally for an update, but ignored for delete. - - The ref did not exist when the update started, but it was created - successfully with the new value. - - - - - The ref had to be forcefully updated/deleted. - - The ref already existed but its old value was not fully merged into - the new value. The configuration permitted a forced update to take - place, so ref now contains the new value. History associated with the - objects not merged may no longer be reachable. - - - - - The ref was updated/deleted in a fast-forward way. - - The tracking ref already existed and its old value was fully merged - into the new value. No history was made unreachable. - - - - - Not a fast-forward and not stored. - - The tracking ref already existed but its old value was not fully - merged into the new value. The configuration did not allow a forced - update/delete to take place, so ref still contains the old value. No - previous history was lost. - - - - - Rejected because trying to delete the current branch. - - Has no meaning for update. - - - - - The ref was probably not updated/deleted because of I/O error. - - Unexpected I/O error occurred when writing new ref. Such error may - result in uncertain state, but most probably ref was not updated. - - This kind of error doesn't include {@link #LOCK_FAILURE}, which is a - different case. - - - - - The ref was renamed from another name - - - - - Handle the abstraction of storing a ref update. This is because both - updating and deleting of a ref have merge testing in common. - - - - - Utility for reading reflog entries. - - - - - Parsed reflog entry. - - - - - Get the last entry in the reflog. - - The latest reflog entry, or null if no log. - - - - - all reflog entries in reverse order. - - - - - Max number of entries to read. - All reflog entries in reverse order. - - - - - Gets the commit id before the change. - - - - - Gets the commit id after the change. - - - - - Gets the user performing the change. - - - - - Gets the textual description of the change. - - - - - Represents a Git repository. A repository holds all objects and refs used for - managing source code (could by any type of file, but source code is what - SCM's are typically used for). - - In Git terms all data is stored in GIT_DIR, typically a directory called - .git. A work tree is maintained unless the repository is a bare repository. - Typically the .git directory is located at the root of the work dir. -
    -
  • GIT_DIR -
      -
    • objects/ - objects
    • -
    • refs/ - tags and heads
    • -
    • config - configuration
    • -
    • info/ - more configurations
    • -
    -
  • -
- - This class is thread-safe. - - This implementation only handles a subtly undocumented subset of git features. -
-
- - - Construct a representation of a Git repository. - The work tree, object directory, alternate object directories and index file locations are deduced from the given git directory and the default rules. - - GIT_DIR (the location of the repository metadata). - - - - Construct a representation of a Git repository. - The work tree, object directory, alternate object directories and index file locations are deduced from the given git directory and the default rules. - - GIT_DIR (the location of the repository metadata). - GIT_WORK_TREE (the root of the checkout). May be null for default value. - - - - Construct a representation of a Git repository using the given parameters possibly overriding default conventions.. - - GIT_DIR (the location of the repository metadata). May be null for default value in which case it depends on GIT_WORK_TREE. - GIT_WORK_TREE (the root of the checkout). May be null for default value if GIT_DIR is - GIT_OBJECT_DIRECTORY (where objects and are stored). May be null for default value. Relative names ares resolved against GIT_WORK_TREE - GIT_ALTERNATE_OBJECT_DIRECTORIES (where more objects are read from). May be null for default value. Relative names ares resolved against GIT_WORK_TREE - GIT_INDEX_FILE (the location of the index file). May be null for default value. Relative names ares resolved against GIT_WORK_TREE. - - - - Create a new Git repository initializing the necessary files and - directories. - - - - - Create a new Git repository initializing the necessary files and - directories. - - if true, a bare repository is created. - - - - Override default workdir - - the work tree directory - - - - Construct a filename where the loose object having a specified SHA-1 - should be stored. If the object is stored in a shared repository the path - to the alternative repo will be returned. If the object is not yet store - a usable path in this repo will be returned. It is assumed that callers - will look for objects in a pack first. - - - Suggested file name - - - - - - - - true if the specified object is stored in this repo or any of the - known shared repositories. - - - - - - - - Temporary working space associated with the calling thread. - - SHA-1 of an object. - - A for accessing the data of the named - object, or null if the object does not exist. - - - - - - - SHA-1 of an object. - - A for accessing the data of the named - object, or null if the object does not exist. - - - - - Open object in all packs containing specified object. - - id of object to search for - - Temporary working space associated with the calling thread. - - - Collection of loaders for this object, from all packs containing - this object - - - - - Open object in all packs containing specified object. - - of object to search for - - Result collection of loaders for this object, filled with - loaders from all packs containing specified object - - - Temporary working space associated with the calling thread. - - - - - - - SHA'1 of a blob - - An for accessing the data of a named blob - - - - - - - SHA'1 of a tree - - An for accessing the data of a named tree - - - - - Access a Commit object using a symbolic reference. This reference may - be a SHA-1 or ref in combination with a number of symbols translating - from one ref or SHA1-1 to another, such as HEAD^ etc. - - a reference to a git commit object - A named by the specified string - - - - Access a Commit by SHA'1 id. - - - Commit or null - - - - Access any type of Git object by id and - - SHA-1 of object to read - optional, only relevant for simple tags - The Git object if found or null - - - - Access a Tree object using a symbolic reference. This reference may - be a SHA-1 or ref in combination with a number of symbols translating - from one ref or SHA1-1 to another, such as HEAD^{tree} etc. - - a reference to a git commit object - a Tree named by the specified string - - - - Access a Tree by SHA'1 id. - - - Tree or null - - - - Access a tag by symbolic name. - - - Tag or null - - - - Access a Tag by SHA'1 id - - - - Commit or null - - - - Create a command to update (or create) a ref in this repository. - - - name of the ref the caller wants to modify. - - - An update command. The caller must finish populating this command - and then invoke one of the update methods to actually make a - change. - - - - - Create a command to update, create or delete a ref in this repository. - - name of the ref the caller wants to modify. - true to create a detached head - An update command. The caller must finish populating this command and then invoke one of the update methods to actually make a change. - - - - Create a command to rename a ref in this repository - - Name of ref to rename from. - Name of ref to rename to. - - An update command that knows how to rename a branch to another. - - The rename could not be performed. - - - - Parse a git revision string and return an object id. - - Currently supported is combinations of these. -
    -
  • SHA-1 - a SHA-1
  • -
  • refs/... - a ref name
  • -
  • ref^n - nth parent reference
  • -
  • ref~n - distance via parent reference
  • -
  • ref@{n} - nth version of ref
  • -
  • ref^{tree} - tree references by ref
  • -
  • ref^{commit} - commit references by ref
  • -
- - Not supported is -
    -
  • timestamps in reflogs, ref@{full or relative timestamp}
  • -
  • abbreviated SHA-1's
  • -
-
- A git object references expression. - - An or null if revstr can't be resolved to any . - - On serious errors. -
- - - Close all resources used by this repository - - - - the index file location - - - - Replaces any windows director separators (backslash) with / - - - - - - - Strip work dir and return normalized repository path - - Work directory - File whose path shall be stripp off it's workdir - Normalized repository relative path - - - Register a {@link RepositoryListener} which will be notified - when ref changes are detected. - - @param l - - - Remove a registered {@link RepositoryListener} - @param l - - - Register a global {@link RepositoryListener} which will be notified - when a ref changes in any repository are detected. - - @param l - - - Remove a globally registered {@link RepositoryListener} - @param l - - - Force a scan for changed refs. - - @throws IOException - - - mutable map of all known refs (heads, tags, remotes). - - - - mutable map of all tags; key is short tag name ("v1.0") and value - of the entry contains the ref with the full tag name - ("refs/tags/v1.0"). - - - - @return a map with all objects referenced by a peeled ref. - - - - Check validity of a ref name. It must not contain character that has - a special meaning in a Git object reference expression. Some other - dangerous characters are also excluded. - - - - Returns true if is a valid ref name. - - - - - Get the short name of the current branch that {@code HEAD} points to. - - This is essentially the same as {@link #getFullBranch()}, except the - leading prefix {@code refs/heads/} is removed from the reference before - it is returned to the caller. - - - name of current branch (for example {@code master}), or an - ObjectId in hex format if the current branch is detached. - - - - - - - - A more user friendly ref name - - - - - - - - A for the supplied , - or null if the named ref does not exist. - - The could not be accessed. - - - - The reference database which stores the reference namespace. - - - - - Gets a representation of the index associated with this repo - - - - - Gets the state - - - - - Get the name of the reference that {@code HEAD} points to. - Returns name of current branch (for example {@code refs/heads/master}) or - an ObjectId in hex format if the current branch is detached. - - This is essentially the same as doing: - - - return getRef(Constants.HEAD).getTarget().getName() - - - Except when HEAD is detached, in which case this method returns the - current ObjectId in hexadecimal string format. - - - - Invoked when a ref changes - - @param e - information about the changes. - - - Invoked when the index changes - - @param e - information about the changes. - - - @return the live instance to read system properties. - - - @param newReader - the new instance to use when accessing properties. - - - Gets the hostname of the local host. If no hostname can be found, the - hostname is set to the default value "localhost". - - @return the canonical hostname - - - @param variable system variable to read - @return value of the system variable - - - * @param key of the system property to read - * @return value of the system property - - - @return the git configuration found in the user home - - - @return the current system time - - - @param when TODO - @return the local time zone - - - - Returns Windows, Linux or Mac for identification of the OS in use - - Operating System name - - - - Returns the GitSharp configuration file from the OS-dependant location. - - - - - - Returns the GitSharp configuration file based on a user-specified location. - - - - - Construct a new, yet unnamed Tag. - - @param db - - - Construct a Tag representing an existing with a known name referencing an known object. - This could be either a simple or annotated tag. - - @param db {@link Repository} - @param id target id. - @param refName tag name or null - @param raw data of an annotated tag. - - - Store a tag. - If author, message or type is set make the tag an annotated tag. - - @ - - - @return tagger of a annotated tag or null - - - @return comment of an annotated tag, or null - - - @return creator of this tag. - - - @return tag target type - - - - the SHA'1 of the object this tag refers to - - - - Id of the object this tag refers to - - - - A representation of a Git tree entry. A Tree is a directory in Git. - - - - - Compare two names represented as bytes. Since git treats names of trees and - blobs differently we have one parameter that represents a '/' for trees. For - other objects the value should be NUL. The names are compare by their positive - byte value (0..255). - - A blob and a tree with the same name will not compare equal. - - name - name - '/' if a is a tree, else NULL. - '/' if b is a tree, else NULL. - < 0 if a is sorted before b, 0 if they are the same, else b - - - - Compare two names represented as bytes. Since git treats names of trees and - blobs differently we have one parameter that represents a '/' for trees. For - other objects the value should be NUL. The names are compare by their positive - byte value (0..255). - - A blob and a tree with the same name will not compare equal. - - - - - - '/' if a is a tree, else NULL. - '/' if b is a tree, else NULL. - Return < 0 if a is sorted before b, 0 if they are the same, else b - - - - Constructor for a new Tree - - The repository that owns the Tree. - - - - Construct a Tree object with known content and hash value - - - - - - - - - Construct a new Tree under another Tree - - - - - - - Construct a Tree with a known SHA-1 under another tree. Data is not yet - specified and will have to be loaded on demand. - - - - - - - - Forget the in-memory data for this tree. - - - - - Adds a new or existing file with the specified name to this tree. - Trees are added if necessary as the name may contain '/':s. - - Name - A for the added file. - - - - - Adds a new or existing file with the specified name to this tree. - Trees are added if necessary as the name may contain '/':s. - - an array containing the name - when the name starts in the tree. - - A for the added file. - - - - - Adds a new or existing Tree with the specified name to this tree. - Trees are added if necessary as the name may contain '/':s. - - - A for the added tree. - - - - - Adds a new or existing Tree with the specified name to this tree. - Trees are added if necessary as the name may contain '/':s. - - an array containing the name - when the name starts in the tree. - A for the added tree. - - - - - Add the specified tree entry to this tree. - - - - - - Path to the tree. - - True if a tree with the specified path can be found under this - tree. - - - - - - True if a blob or symlink with the specified name can be found - under this tree. - - - - - - a representing an object with the specified - relative path. - - - - - - - Tree name - return a with the name treeName or null - - - - Returns true of the data of this Tree is loaded. - - - - - Gets the number of members in this tree. - - - - - - Return all members of the tree sorted in Git order. - - Entries are sorted by the numerical unsigned byte - values with (sub)trees having an implicit '/'. An - example of a tree with three entries. a:b is an - actual file name here. - - 100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 a.b - 040000 tree 4277b6e69d25e5efa77c455340557b384a4c018a a - 100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 a:b - - All entries in this Tree, sorted. - - - - - Construct a for visiting all non-tree nodes. - - - - - - Construct a for visiting all nodes in a - tree in a given order - - Root node - - - - - Construct a . - - First node to visit - Visitation - True to include tree node - - - - Traversal order - - - - - Visit node first, then leaves - - - - - Visit leaves first, then node - - - - - Abstract TreeVisitor for visiting all files known by a Tree. - - - - - Loose object loader. This class loads an object not stored in a pack. - - - - - Construct an ObjectLoader to read from the file. - - location of the loose object to read. - Expected identity of the object being loaded, if known. - - The loose object file does not exist. - - - The loose object file exists, but is corrupt. - - - - - Construct an ObjectLoader from a loose object's compressed form. - - - Entire content of the loose object file. - - - The compressed data supplied does not match the format for a - valid loose object. - - - - - Reader for a non-delta (just deflated) object in a pack file. - - - - - Caches slices of a in memory for faster read access. - - The WindowCache serves as a Java based "buffer cache", loading segments of a - into the JVM heap prior to use. As JGit often wants to do reads of - only tiny slices of a file, the WindowCache tries to smooth out these tiny - reads into larger block-sized IO operations. - - - - - Modify the configuration of the window cache. - - The new configuration is applied immediately. If the new limits are - smaller than what what is currently cached, older entries will be purged - as soon as possible to allow the cache to meet the new limit. - - - Maximum number of bytes to hold within this instance. - - - Number of bytes per window within the cache. - - - True to enable use of mmap when creating windows. - - - Number of bytes to hold in the delta base cache. - - - - - Modify the configuration of the window cache. - - The new configuration is applied immediately. If the new limits are - smaller than what what is currently cached, older entries will be purged - as soon as possible to allow the cache to meet the new limit. - - - The new window cache configuration. - - - - - Configuration parameters for . - - - - - 1024 (number of bytes in one kibibyte/kilobyte) - - - - - 1024 (number of bytes in one mebibyte/megabyte) - - - - - Create a default configuration. - - - - - Update properties by setting fields from the configuration. - - If a property is not defined in the configuration, then it is left - unmodified. - - Configuration to read properties from. - - - - - - - The maximum number of streams to open at a time. Open packs count - against the process limits. Default is 128. - - - - - - - maximum number bytes of heap memory to dedicate to caching pack - file data. Default is 10 MB. - - - - Gets/Sets the size in bytes of a single window read in from the pack file. - - - - - Gets/sets the use of Java NIO virtual memory mapping for - windows; false reads entire window into a byte[] with standard - read calls. - - - - - Gets/Sets the maximum number of bytes to cache in - for inflated, recently accessed objects, without delta chains. - Default 10 MB. - - - - - Active handle to a ByteWindow. - - - - - Copy bytes from the window to a caller supplied buffer. - - The file the desired window is stored within. - Position within the file to read from. - Destination buffer to copy into. - Offset within to start copying into. - - The number of bytes to copy. This value may exceed the number of - bytes remaining in the window starting at offset . - - - number of bytes actually copied; this may be less than - if exceeded the number of - bytes available. - - - This cursor does not match the provider or id and the proper - window could not be acquired through the provider's cache. - - - - - Pump bytes into the supplied inflater as input. - - The file the desired window is stored within. - Position within the file to read from. - - Destination buffer the inflater should output decompressed - data to. - - Current offset within to inflate into. - - Updated based on the number of bytes - successfully inflated into . - - - this cursor does not match the provider or id and the proper - window could not be acquired through the provider's cache. - - - - - Release the current window cursor. - - - - - Release the window cursor. - - cursor to Release; may be null. - - always null - - - - Temporary buffer large enough for at least one raw object id. - - - - - This class handles checking out one or two trees merging - with the index (actually a tree too). - - Three-way merges are no performed. See . - - - - - Create a checkout class for checking out one tree, merging with the index - - - workdir - current index - tree to check out - - - - Create a checkout class for merging and checking our two trees and the index. - - - workdir - - - - - - - Execute this checkout - - - - - - If true, will scan first to see if it's possible to check out, - otherwise throw . If false, - it will silently deal with the problem. - - - - - The list of conflicts created by this checkout - - - - - - The list of all files removed by this checkout - - - - - - A tree visitor for writing a directory tree to the git object database. - Blob data is fetched from the files, not the cached blobs. - - - - - Construct a WriteTree for a given directory - - - - -
-
diff --git a/UsageDataCollector/Project/Collector/lib/ICSharpCode.SharpZipLib.dll b/UsageDataCollector/Project/Collector/lib/ICSharpCode.SharpZipLib.dll deleted file mode 100644 index e565e3a17f192e667e1d07c2fa42b75c4d2a7b8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188416 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
&23z(?hfW3C_A}$O&&QFoKzqBPt*ON_&^~Ht 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 literal 0 HcmV?d00001 diff --git a/UsageDataCollector/Project/Collector/lib/LibGit2Sharp.xml b/UsageDataCollector/Project/Collector/lib/LibGit2Sharp.xml new file mode 100644 index 0000000..011d886 --- /dev/null +++ b/UsageDataCollector/Project/Collector/lib/LibGit2Sharp.xml @@ -0,0 +1,1426 @@ + + + + LibGit2Sharp + + + + + Uniquely identifies a . + + + + + Initializes a new instance of the class. + + The oid. + + + + Initializes a new instance of the class. + + The byte array. + + + + Initializes a new instance of the class. + + The sha. + + + + Converts the specified string representation of a Sha-1 to its equivalent and returns a value that indicates whether the conversion succeeded. + + A string containing a Sha-1 to convert. + When this method returns, contains the value equivalent to the Sha-1 contained in , if the conversion succeeded, or null if the conversion failed. + true if the parameter was converted successfully; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Returns the , a representation of the current . + + The that represents the current . + + + + Returns the , a representation of the current . + + The number of chars the should be truncated to. + The that represents the current . + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Gets the raw id. + + + + + Gets the sha. + + + + + A GitObject + + + + + Initializes a new instance of the class. + + The it should be identified by. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Gets the id of this object + + + + + Gets the 40 character sha1 of this object. + + + + + A branch is a special kind of reference + + + + + Initializes a new instance of the class. + + The commit which is pointed at by this Branch + The repo. + The full name of the reference + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Returns the , a representation of the current . + + The that represents the current . + + + + Gets the full name of this branch. + + + + + Gets the name of this branch. + + + + + Gets a value indicating whether this instance is a remote. + + + true if this instance is remote; otherwise, false. + + + + + Gets a value indicating whether this instance is current branch (HEAD) in the repository. + + + true if this instance is current branch; otherwise, false. + + + + + Gets the commit id that this branch points to. + + + + + Gets the commits on this branch. (Starts walking from the References's target). + + + + + The collection of Branches in a + + + + + Initializes a new instance of the class. + + The repo. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Checkout the branch with the specified by name. + + The name of the branch to checkout. + + + + + Create a new local branch with the specified name + + The name of the branch. + The target sha or branch name. + + + + + Deletes the branch with the specified name. + + The name of the branch to delete. + + + + Rename an existing branch with a new name. + + The current branch name. + The new name of the existing branch should bear. + True to allow silent overwriting a potentially existing branch, false otherwise. + + + + + Gets the with the specified name. + + + + + A Commit + + + + + Gets the commit message. + + + + + Gets the short commit message which is usually the first line of the commit. + + + + + Gets the author of this commit. + + + + + Gets the committer. + + + + + Gets the Tree associated to this commit. + + + + + Gets the parents of this commit. This property is lazy loaded and can throw an exception if the commit no longer exists in the repo. + + + + + A collection of commits in a + + + + + Gets the current sorting strategy applied when enumerating the collection. + + + + + Returns the list of commits of the repository matching the specified . + + The options used to control which commits will be returned. + A collection of commits, ready to be enumerated. + + + + Stores the content of the content as a new into the repository. + + The of who made the change. + The of who added the change to the repository. + The description of why a change was made to the repository. + The generated . + + + + Initializes a new instance of the class. + The commits will be enumerated according in reverse chronological order. + + The repository. + + + + Initializes a new instance of the class. + + The repository. + The sorting strategy which should be applied when enumerating the commits. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns the list of commits of the repository matching the specified . + + The options used to control which commits will be returned. + A collection of commits, ready to be enumerated. + + + + Stores the content of the as a new into the repository. + + The of who made the change. + The of who added the change to the repository. + The description of why a change was made to the repository. + The generated . + + + + Gets the current sorting strategy applied when enumerating the collection + + + + + Ensure input parameters + + + + + Checks an argument to ensure it isn't null. + + The argument value to check. + The name of the argument. + + + + Checks a string argument to ensure it isn't null or empty. + + The argument value to check. + The name of the argument. + + + + Check that the result of a C call was successful + + This usually means that the method is expected to return 0. + In some rare cases, some methods may return negative values for errors and + positive values carrying information. Those positive values should be interpreted + as successful calls as well. + + + The result to examine. + False to only allow success when comparing against 0, + True when positive values are allowed as well. + + + + Checks an argument by applying provided checker. + + The argument value to check. + The predicate which has to be satisfied + The name of the argument. + + + + Provides helper methods to help converting between Epoch (unix timestamp) and . + + + + + Builds a from a Unix timestamp and a timezone offset. + + The number of seconds since 00:00:00 UTC on 1 January 1970. + The number of minutes from UTC in a timezone. + A representing this instant. + + + + Converts the part of a into a Unix timestamp. + + The to convert. + The number of seconds since 00:00:00 UTC on 1 January 1970. + + + + Operation completed successfully. + + + + + Operation failed, with unspecified reason. + This value also serves as the base error code; all other + error codes are subtracted from it such that all errors + are < 0, in typical POSIX C tradition. + + + + + Input was not a properly formatted Git object id. + + + + + Input does not exist in the scope searched. + + + + + Not enough space available. + + + + + Consult the OS error information. + + + + + The specified object is of invalid type + + + + + The specified repository is invalid + + + + + The object type is invalid or doesn't match + + + + + The object cannot be written that because it's missing internal data + + + + + The packfile for the ODB is corrupted + + + + + Failed to adquire or release a file lock + + + + + The Z library failed to inflate/deflate an object's data + + + + + The queried object is currently busy + + + + + The index file is not backed up by an existing repository + + + + + The name of the reference is not valid + + + + + The specified reference has its data corrupted + + + + + The specified symbolic reference is too deeply nested + + + + + The pack-refs file is either corrupted of its format is not currently supported + + + + + The path is invalid + + + + + The revision walker is empty; there are no more commits left to iterate + + + + + The state of the reference is not valid + + + + + This feature has not been implemented yet + + + + + A reference with this name already exists + + + + + The given integer literal is too large to be parsed + + + + + The given literal is not a valid number + + + + + Streaming error + + + + + invalid arguments to function + + + + + The specified object has its data corrupted + + + + + The given short oid is ambiguous + + + + + Skip and passthrough the given ODB backend + + + + + Represents a unique id in git which is the sha1 hash of this id's content. + + + + + The raw binary 20 byte Id. + + + + + Provides support for lazy initialization. + + Specifies the type of object that is being lazily initialized. + + + + Initializes a new instance of the class. + + + + + + Gets the lazily initialized value of the current instance. + + + + + A DirectReference points directly to a + + + + + A Reference to another git object + + + + + Recursively peels the target of the reference until a direct reference is encountered. + + The this points to. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Returns the , a representation of the current . + + The that represents the current . + + + + Gets the full name of this reference. + + + + + Gets the target declared by the reference. + + If this reference is a , returns the canonical name of the target. + Otherwise, if this reference is a , returns the sha of the target. + + + + + + As a is already peeled, invoking this will return the same . + + This instance. + + + + Gets the target of this + + + + + Underlying type of a + + + + + Object can be of any type. + + + + + Object is invalid. + + + + + Reserved for future use. + + + + + A commit object. + + + + + A tree (directory listing) object. + + + + + A file revision object. + + + + + An annotated tag object. + + + + + Reserved for future use. + + + + + A delta, base is given by an offset. + + + + + A delta, base is given by object id. + + + + + Sort the repository contents in no particular ordering; + this sorting is arbitrary, implementation-specific + and subject to change at any time. + + + + + Sort the repository contents in topological order + (parents before children); this sorting mode + can be combined with time sorting. + + + + + Sort the repository contents by commit time; + this sorting mode can be combined with + topological sorting. + + + + + Iterate through the repository contents in reverse + order; this sorting mode can be combined with + any of the above. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Options used to filter out the commits of the repository when querying its history. + + + + + Initializes a new instance of . + + + + + The ordering stragtegy to use. + + By default, the commits are shown in reverse chronological order. + + + + + + The pointer to the commit to consider as a starting point. + + Can be either a containing the sha or reference canonical name to use, a or a . + By default, the will be used as boundary. + + + + + + The pointer to the commit which will be excluded (along with its ancestors) from the enumeration. + + Can be either a containing the sha or reference canonical name to use, a or a . + + + + + + The Collection of references in a + + + + + Initializes a new instance of the class. + + The repo. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Creates a direct or symbolic reference with the specified name and target + + The name of the reference to create. + The target which can be either a sha or the canonical name of another reference. + True to allow silent overwriting a potentially existing reference, false otherwise. + A new . + + + + Delete a reference with the specified name + + The name of the reference to delete. + + + + Rename an existing reference with a new name + + The canonical name of the reference to rename. + The new canonical name. + True to allow silent overwriting a potentially existing reference, false otherwise. + + + + + Updates the target on a reference. + + The name of the reference. + The target which can be either a sha or the name of another reference. + + + + Gets the with the specified name. + + The canonical name of the reference to resolve. + The resolved if it has been found, null otherwise. + + + + A Repository is the primary interface into a git repository + + + + + Initializes a new instance of the class. + For a standard repository, should point to the ".git" folder. For a bare repository, should directly point to the repository folder. + + The path to the git repository to open. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Tells if the specified sha exists in the repository. + + Exceptions: + ArgumentException + ArgumentNullException + + The sha. + + + + + Init a repo at the specified . + + The path to the working folder when initializing a standard ".git" repository. Otherwise, when initializing a bare repository, the path to the expected location of this later. + true to initialize a bare repository. False otherwise, to initialize a standard ".git" repository. + Path the git repository. + + + + Try to lookup an object by its and . If no matching object is found, null will be returned. + + The id to lookup. + The kind of GitObject being looked up + The or null if it was not found. + + + + Try to lookup an object by its sha or a reference canonical name and . If no matching object is found, null will be returned. + + The sha or reference canonical name to lookup. + The kind of being looked up + The or null if it was not found. + + + + Probe for a git repository. + The lookup start from and walk upward parent directories if nothing has been found. + + The base path where the lookup starts. + The path to the git repository. + + + + Shortcut to return the reference to HEAD + + + + + + Gets the index. + + + + + Lookup and enumerate references in the repository. + + + + + Lookup and enumerate commits in the repository. + Iterating this collection directly starts walking from the HEAD. + + + + + Lookup and enumerate branches in the repository. + + + + + Lookup and enumerate tags in the repository. + + + + + Provides high level information about this repository. + + + + + Provides high level information about a repository. + + + + + Gets the normalized path to the git repository. + + + + + Gets the normalized path to the working directory. + + Is the repository is bare, null is returned. + + + + + + Indicates whether the repository has a working directory. + + + + + Gets a value indicating whether this repository is empty. + + + true if this repository is empty; otherwise, false. + + + + + Indicates whether the Head points to an arbitrary commit instead of the tip of a local banch. + + + + + Provides helper overloads to a . + + + + + Try to lookup an object by its sha or a reference name. + + + The being looked up. + The shaOrRef to lookup. + + + + + Try to lookup an object by its . + + + The being looked up. + The id. + + + + + Creates a lightweight tag with the specified name. This tag will point at the commit pointed at by the . + + The being worked with. + The name of the tag to create. + + + + Creates a lightweight tag with the specified name. This tag will point at the . + + The being worked with. + The name of the tag to create. + The canonical reference name or sha which should be pointed at by the Tag. + + + + Creates an annotated tag with the specified name. This tag will point at the commit pointed at by the . + + The being worked with. + The name of the tag to create. + The identity of the creator of this tag. + The annotation message. + + + + Creates an annotated tag with the specified name. This tag will point at the . + + The being worked with. + The name of the tag to create. + The canonical reference name or sha which should be pointed at by the Tag. + The identity of the creator of this tag. + The annotation message. + + + + Creates a branch with the specified name. This branch will point at the commit pointed at by the . + + The being worked with. + The name of the branch to create. + + + + Creates a branch with the specified name. This branch will point at the commit pointed at by the . + + The being worked with. + The name of the branch to create. + The canonical reference name or sha which should be pointed at by the Branch. + + + + Stores the content of the as a new into the repository. + + The being worked with. + The of who made the change. + The of who added the change to the repository. + The description of why a change was made to the repository. + The generated . + + + + A signature + + + + + Initializes a new instance of the class. + + The name. + The email. + The when. + + + + Gets the name. + + + + + Gets the email. + + + + + Gets the date when this signature happened. + + + + + A SymbolicReference is a reference that points to another reference + + + + + Recursively peels the target of the reference until a direct reference is encountered. + + The this points to. + + + + Gets the target of this + + + + + A Tag + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Gets the optional information associated to this tag. + When the is a lightweight tag, null is returned. + + + + + Gets the full name of this branch. + + + + + Gets the name of this tag. + + + + + Gets the that this tag points to. + + + + + Indicates whether the tag holds any metadata. + + + + + A TagAnnotation + + + + + Gets the name of this tag. + + + + + Gets the message of this tag. + + + + + Gets the target id that this tag points to. + + + + + Gets the tagger. + + + + + The collection of s in a + + + + + Initializes a new instance of the class. + + The repo. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Creates an annotated tag with the specified name. + + The name. + The target which can be sha or a canonical reference name. + The tagger. + The message. + True to allow silent overwriting a potentially existing tag, false otherwise. + + + + + Creates a lightweight tag with the specified name. + + The name. + The target which can be sha or a canonical reference name. + True to allow silent overwriting a potentially existing tag, false otherwise. + + + + + Deletes the tag with the specified name. + + The short or canonical name of the tag or the to delete. + + + + Gets the with the specified name. + + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through the collection. + + An object that can be used to iterate through the collection. + + + + Representation of an entry in a . + + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + True if the specified is equal to the current ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + Tests if two are equal. + + First to compare. + Second to compare. + True if the two objects are equal; false otherwise. + + + + Tests if two are different. + + First to compare. + Second to compare. + True if the two objects are different; false otherwise. + + + + Gets the UNIX file attributes. + + + + + Gets the filename. + The filename is expressed in a relative form. Path segments are separated with a forward slash."/> + + + + + Gets the being pointed at. + + + + + Gets the of the being pointed at. + + + + diff --git a/UsageDataCollector/Project/Collector/lib/License.txt b/UsageDataCollector/Project/Collector/lib/License.txt new file mode 100644 index 0000000..36d82c3 --- /dev/null +++ b/UsageDataCollector/Project/Collector/lib/License.txt @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2011 LibGit2Sharp contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/UsageDataCollector/Project/Collector/lib/Tamir.SharpSSH.dll b/UsageDataCollector/Project/Collector/lib/Tamir.SharpSSH.dll deleted file mode 100644 index c2f67a826be086aacfd8d1488d0789c7f5e64ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212992 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 CT3X=% diff --git a/UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap License.txt b/UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap License.txt deleted file mode 100644 index 448e595..0000000 --- a/UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap License.txt +++ /dev/null @@ -1,457 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - diff --git a/UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap.dll b/UsageDataCollector/Project/Collector/lib/Winterdom.IO.FileMap.dll deleted file mode 100644 index f3965d6daeedf84a2fd080d4bf6d559dfbed2019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9728 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 diff --git a/UsageDataCollector/Project/Collector/lib/git2.dll b/UsageDataCollector/Project/Collector/lib/git2.dll new file mode 100644 index 0000000000000000000000000000000000000000..0e2378d9b2781a05929d90e6a998723f3d34a356 GIT binary patch literal 253952 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

li#j4eYD5;3T(p)wgU5|r)m6jmPW79`{?f-N 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 IFM;T5H$k?U3(nk&@}vi5lx>C zM$=@VAs$VpUW$_e#O%K&VuotU@V*6f+rEK?2*TSoe@G@0amIzVkCqeDnUg>3hu z^wd24j`=W6s6QYW4x~z{Ug3+~^4}(i1>_=`dc9r!b*W|gZ(}PmMEtn*jW5e$O^z`{ zTIEVOQSwy`%eBA_qD{vwZu-jHTSp9=p@Htd_=fPs+H|n@K75p#_mXo37TA}QuqyL7 z@s48viPUGW6I452G9v-%O`0zMq^tm;ECyKkD!_QB!s9Vgynz9Z5L;|n>MKW}K)?cx zK-kzTKIEAGN?JKS@TFK_?-Eew_OUC(&>g019bIL(23R}7Jwf5SaVt#qgXN7CoWkrb2z@%TAxE~sjO z#`lz}KHzW->_H*?|HjAO{ktfHoE4S0;>4{O{vfsVT~lfq3muq`rDAOV<2yN3xxbTiE4s^pZfu$n(f-U&9==iwBcw9?b zNB?QV+elnh^kU^c`GRHBEfD5GYE3#*84A}-VzkIE*AVSuH_OLz<<<6VvGy(1V6(h9 zgl|p{)V|mz=oB2b)gP$74rwHw>n%~H&p{N^25^0^kkw%l%>%Q@7cJE{$F;Nplt)2Y z^frhC(nJ{(zP|o28bh}>#2TY~WVOM&BIq$xLxYFIXT!{5EAEvA?5L54eW9vWSoFX! z6Dc4J|IpNR?r@`h;GK1yKg?st&?oHPQ$Xv~!SSdFnlb^Mq8JAG`jkGPEcd9vKV}}_6y$gZ^r=pt5B>0+Cw!)leWr6#%Ue)eWS_v% zgj9VBF{Fc*O|y!ij%Z1MW?-_^0_`O0gx@-TLFBZ)9hLuN9JX(9SFfq9{_y6$E)BZl z7MC+H`5YcdP8Ng+nSppU3@7y|@&Q<%VtK)$7-}Hh7X63thIk@% z3kLEoXsEXu0yjl?GTTL&l)7D{fP$#Dzit|7r(mQVPUcoQTNARdso!)^-b)!1stREg zT$MPF!44#|?HYA(ovu%@Z{1(V6#aVM{U=yY(U0#n?VLauY1+oS z19RG0IQ&0cVUn707TJHL13@1t9Xd4F;%vpK!1A9Yh{oq}IB;3*56DRgG1~VDpEA~v z!N1US@Msr6ziI;!yIXscS7B`>+b2DqRwEbX!kxT_i;#vOLN7Ef z7GLx{naHzfP@ZWru5Rl$Rqa-nW{ouR!7kmG8~-9}34>ov@vrgoi?$PdftMlCmXTT( z`i{S&MA11_j624ZDEJZ+*Q}6YquV3C_?E6LGZw;+L_5u0R4gU?U^r#RVoEYBZywTy zz8LB`+oCyR&;Q?>c+WKi%1LkVNA;%Sk~?rcFqxSh`5xh;?P4`==4@;i|;J<6lV8_2^Jm-dl&l z28#JZztu$)FKKE*(4yT%m$BtcRU2q&a%(vtBy~G2P`EEf5EajF0QuT&e>zf zP`Q0*`)N}<{4iiUesFyh(WZw0}?*mmMaY!~sVEcd*^`OCD|;18{Gr*gO8T!p{@0uQ1G z_THvJz~bV2d=jSs!TO6~kbaG;T(qaaRl%PJ`6!5VxAqR%Twj$&WF*qT^@kg3KpKVG z&L2=lup>cav2?fJC=)X5pc zf)m0?0ZFg7OLuVAP9ia6NW;($w9flaQ^(&7qV;HR;~dbV?ZsaJj{tl;9p_gA@)i~c zHSY-B6dM_p#e--{b?7VB%_B`+H79XlKnF!azuC|hi6k0oDLk$*m^d7`HJop!y-px; zxZz1Uc)+2TXQ)qcB|)O#@`~37KW!g*&A^)*x12qeg=&kn+{^=+5mVkN@AdE2_8MyD z{SVi`i_3Yf~ zMtpik|HR)~Ar?fmNAyqc9WmNI!M{XQVn|3ZCS3bJ2!9Fq|Nqv1Mxy^#Gq%XuBmgon z%-lx`;YN$JOG40B~(MyJH^ctL05IirwT-LmzE}G`N!F76NU;!s;BNWxA>i1r? z{xW!2ky~2?$WNfs9QtU`vH>;9f*sT8_e$-ndJO~p&BT|1{>pRA$4xfwX+<+R znCqV!FxeubmU0pgjP%>^3X;#o`%fvWULZKpe@O4YkM|$mQXJ%0Ao>xGig2weXg{IM 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 literal 0 HcmV?d00001