wukong-gitlog-cli 0.0.2 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.5](https://github.com/tomatobybike/wukong-gitlog-cli/compare/v0.0.4...v0.0.5) (2025-11-27)
6
+
7
+ ### [0.0.4](https://github.com/tomatobybike/wukong-gitlog-cli/compare/v0.0.3...v0.0.4) (2025-11-27)
8
+
9
+ ### [0.0.3](https://github.com/tomatobybike/wukong-gitlog-cli/compare/v0.0.2...v0.0.3) (2025-11-26)
10
+
11
+
12
+ ### Features
13
+
14
+ * 🎸 gerrit ([76f71b8](https://github.com/tomatobybike/wukong-gitlog-cli/commit/76f71b8ab7b1636bee4c243fd670383268e1f771))
15
+
5
16
  ### [0.0.2](https://github.com/tomatobybike/wukong-gitlog-cli/compare/v0.0.1...v0.0.2) (2025-11-26)
6
17
 
7
18
  ### 0.0.1 (2025-11-26)
package/README.md CHANGED
@@ -1,4 +1,16 @@
1
- # wukong-gitlog-cli
1
+ ## 📦 `wukong-gitlog-cli`
2
+
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/tomatobybike/wukong-gitlog-cli/main/images/logo.svg" width="200" alt="wukong-dev Logo" />
5
+ </p>
6
+
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/wukong-gitlog-cli"><img src="https://img.shields.io/npm/v/wukong-gitlog-cli.svg" alt="npm version"></a>
9
+ <a href="https://www.npmjs.com/package/wukong-gitlog-cli"><img src="https://img.shields.io/npm/dm/wukong-gitlog-cli.svg" alt="downloads"></a>
10
+ <a href="https://github.com/tomatobybike/wukong-gitlog-cli/blob/master/LICENSE"><img src="https://img.shields.io/github/license/tomatobybike/wukong-gitlog-cli.svg" alt="license"></a>
11
+ <a href="https://github.com/tomatobybike/wukong-gitlog-cli"><img src="https://img.shields.io/github/stars/tomatobybike/wukong-gitlog-cli.svg?style=social" alt="GitHub stars"></a>
12
+ <a href="https://github.com/tomatobybike/wukong-gitlog-cli/issues"><img src="https://img.shields.io/github/issues/tomatobybike/wukong-gitlog-cli.svg" alt="issues"></a>
13
+ </p>
2
14
 
3
15
  Advanced Git commit log exporter with Excel/JSON/TXT output, grouping, stats and CLI.
4
16
 
@@ -65,7 +77,9 @@ Command-line options:
65
77
  - `--format <type>` Output format: `text` | `excel` | `json` (default: `text`)
66
78
  - `--group-by <type>` Group commits by date: `day` | `month`
67
79
  - `--stats` Include a `Stats` sheet in the Excel export
68
- - `--gerrit <prefix>` Show Gerrit URL for each commit (supports templates `{{hash}}` and `{{changeId}}`; `{{changeId}}` falls back to `hash` when absent)
80
+ - `--gerrit-api <url>` Optional: Gerrit REST API base URL for resolving `{{changeNumber}}` (e.g. `https://gerrit.example.com/gerrit`)
81
+ - `--gerrit-auth <token>` Optional: Authorization for Gerrit REST API (either `user:pass` for Basic or token string for Bearer)
82
+ - `--gerrit <prefix>` Show Gerrit URL for each commit (supports templates `{{hash}}`, `{{changeId}}` and `{{changeNumber}}`; `{{changeId}}` falls back to `hash` when absent; `{{changeNumber}}` requires `--gerrit-api` and falls back to `changeId` or `hash`)
69
83
  - `--out <file>` Output file name (without path). Defaults: `commits.json` / `commits.txt` / `commits.xlsx`
70
84
  - `--out-dir <dir>` Output directory path — supports relative or absolute path, e.g., `--out-dir ../output`
71
85
  - `--out-parent` Place output in the parent directory's `output/` folder (same as `--out-dir ../output`)
@@ -105,8 +119,9 @@ Note: `--out <file>` is the filename only and the directory used to store that f
105
119
  For example:
106
120
 
107
121
  ```bash
108
- node ./src/cli.mjs --out parent.json --out-parent
109
- node ./src/cli.mjs --out demo.txt --out-dir ../temp
122
+ # using globally installed CLI
123
+ wukong-gitlog-cli --out parent.json --out-parent
124
+ wukong-gitlog-cli --out demo.txt --out-dir ../temp
110
125
  ```
111
126
 
112
127
  ---
@@ -116,7 +131,20 @@ node ./src/cli.mjs --out demo.txt --out-dir ../temp
116
131
  Export as text, grouped by month, with Gerrit links:
117
132
 
118
133
  ```bash
119
- node ./src/cli.mjs --format text --group-by month --gerrit "https://gerrit.example.com/c/project/+/{{hash}}"
134
+ wukong-gitlog-cli --format text --group-by month --gerrit "https://gerrit.example.com/c/project/+/{{hash}}"
135
+ ```
136
+
137
+ // Resolve numeric change ID using Gerrit API (if available)
138
+ wukong-gitlog-cli --format text --group-by month --gerrit "https://gerrit.example.com/c/project/+/{{changeNumber}}" --gerrit-api <GERRIT_API_BASE_URL>
139
+
140
+ If your Gerrit requires authentication (HTTP Basic or token), use `--gerrit-auth`:
141
+
142
+ ```bash
143
+ # HTTP Basic: username:password
144
+ wukong-gitlog-cli --format text --gerrit "https://gerrit.example.com/c/project/+/{{changeNumber}}" --gerrit-api <GERRIT_API_BASE_URL> --gerrit-auth "username:password"
145
+
146
+ # Token (Bearer)
147
+ wukong-gitlog-cli --format text --gerrit "https://gerrit.example.com/c/project/+/{{changeNumber}}" --gerrit-api <GERRIT_API_BASE_URL> --gerrit-auth "MYTOKEN"
120
148
  ```
121
149
 
122
150
  Export to Excel with stats and Gerrit URLs:
@@ -0,0 +1,639 @@
1
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ width="100%" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
3
+ <path fill="#FDFDFD" opacity="1.000000" stroke="none"
4
+ d="
5
+ M567.000000,1025.000000
6
+ C378.000000,1025.000000 189.500000,1025.000000 1.000000,1025.000000
7
+ C1.000000,683.666687 1.000000,342.333344 1.000000,1.000000
8
+ C342.333344,1.000000 683.666687,1.000000 1025.000000,1.000000
9
+ C1025.000000,342.333344 1025.000000,683.666687 1025.000000,1025.000000
10
+ C872.500000,1025.000000 720.000000,1025.000000 567.000000,1025.000000
11
+ M483.164215,68.736946
12
+ C461.910278,71.667229 440.369049,73.261200 419.451965,77.758286
13
+ C327.170166,97.598457 248.243103,141.947067 184.915649,211.938599
14
+ C94.776855,311.562866 56.905380,429.182648 70.445824,562.733398
15
+ C77.036369,627.736633 98.142601,688.463257 132.373215,744.168823
16
+ C185.117706,830.003174 258.251129,892.043457 352.466583,928.322937
17
+ C440.913391,962.381104 531.586121,968.173706 623.245667,944.301575
18
+ C740.463684,913.772949 831.106995,846.290100 894.406555,742.814880
19
+ C930.570435,683.698303 950.804199,619.170898 956.731995,550.244690
20
+ C960.246704,509.377960 957.986206,468.720673 950.125916,428.374786
21
+ C934.570923,348.533569 900.183899,277.813599 846.037842,217.265717
22
+ C780.011414,143.432800 698.222778,96.212654 600.905884,76.456573
23
+ C562.322144,68.623772 523.377197,66.026299 483.164215,68.736946
24
+ z"/>
25
+ <path fill="#2C567B" opacity="1.000000" stroke="none"
26
+ d="
27
+ M483.626587,68.693680
28
+ C523.377197,66.026299 562.322144,68.623772 600.905884,76.456573
29
+ C698.222778,96.212654 780.011414,143.432800 846.037842,217.265717
30
+ C900.183899,277.813599 934.570923,348.533569 950.125916,428.374786
31
+ C957.986206,468.720673 960.246704,509.377960 956.731995,550.244690
32
+ C950.804199,619.170898 930.570435,683.698303 894.406555,742.814880
33
+ C831.106995,846.290100 740.463684,913.772949 623.245667,944.301575
34
+ C531.586121,968.173706 440.913391,962.381104 352.466583,928.322937
35
+ C258.251129,892.043457 185.117706,830.003174 132.373215,744.168823
36
+ C98.142601,688.463257 77.036369,627.736633 70.445824,562.733398
37
+ C56.905380,429.182648 94.776855,311.562866 184.915649,211.938599
38
+ C248.243103,141.947067 327.170166,97.598457 419.451965,77.758286
39
+ C440.369049,73.261200 461.910278,71.667229 483.626587,68.693680
40
+ M441.030640,342.992065
41
+ C442.717834,342.427551 445.165802,342.381500 445.963501,341.210846
42
+ C449.888947,335.450226 456.815399,336.834808 462.308380,334.559479
43
+ C467.674316,345.379150 482.733673,349.494720 493.168457,342.882385
44
+ C494.059082,342.318054 495.061432,340.726379 494.870544,339.864929
45
+ C493.990234,335.892487 492.705414,332.009644 491.526062,327.958679
46
+ C489.517487,328.613983 488.134216,329.177551 486.697662,329.512878
47
+ C482.368347,330.523468 479.583008,328.793243 479.465637,324.410095
48
+ C479.225525,315.442047 479.393616,306.463104 479.393616,296.779236
49
+ C484.179657,296.779236 488.549286,296.779236 492.862122,296.779236
50
+ C492.862122,291.469330 492.862122,286.878754 492.862122,281.685364
51
+ C488.350433,281.685364 484.137268,281.685364 479.258362,281.685364
52
+ C479.258362,275.854126 479.258362,270.627289 479.258362,265.541290
53
+ C472.801727,265.541290 467.042633,265.541290 460.938721,265.541290
54
+ C460.938721,271.005341 460.938721,276.113312 460.938721,281.744415
55
+ C458.466766,281.744415 456.298309,281.475922 454.242767,281.841827
56
+ C452.942047,282.073395 451.809723,283.250885 449.861023,284.006989
57
+ C447.574432,283.337982 445.287811,282.668976 442.927734,281.286682
58
+ C440.907654,278.389404 438.887573,275.492126 437.301971,272.099884
59
+ C441.873596,269.173950 443.153442,264.886841 441.595306,259.982971
60
+ C440.064484,255.164963 436.169800,253.109665 431.262146,252.799042
61
+ C427.322876,252.549683 424.069946,253.736374 421.831024,257.153229
62
+ C418.890381,261.640930 419.728180,265.966400 422.075989,270.945862
63
+ C419.068481,274.110443 416.272614,277.520874 412.980713,280.355164
64
+ C410.703400,282.315826 407.741486,283.481293 404.902679,284.209747
65
+ C404.223358,283.320251 403.577850,281.693054 402.859192,281.660095
66
+ C397.925385,281.433807 392.976196,281.541260 387.890778,281.541260
67
+ C387.655304,283.967926 387.469025,285.887756 387.271820,287.919891
68
+ C369.737030,277.152222 356.075592,277.880341 345.787659,289.982758
69
+ C335.457214,302.135162 335.799194,322.744751 346.619110,334.575409
70
+ C350.777100,339.121857 355.870270,342.199036 362.072632,343.013092
71
+ C371.506348,344.251312 379.770874,341.773560 386.458282,333.975311
72
+ C387.903778,348.130463 380.927887,355.976746 367.818024,354.672791
73
+ C361.436249,354.038086 355.267090,351.265533 348.438507,349.298462
74
+ C346.649719,352.563965 344.454193,356.572021 341.582672,361.814178
75
+ C348.081635,364.258209 353.731995,367.164368 359.732025,368.501007
76
+ C382.757050,373.630371 399.752533,363.666168 405.237396,342.920074
77
+ C409.429901,345.360107 413.356537,348.785370 417.878204,350.005615
78
+ C424.403015,351.766479 431.348389,352.057953 438.143097,352.641571
79
+ C439.268616,352.738220 440.540710,351.127930 442.087494,350.072937
80
+ C441.193878,348.192474 440.381226,346.482422 439.797791,344.176117
81
+ C439.960114,343.782501 440.122437,343.388916 441.030640,342.992065
82
+ M368.050415,605.147461
83
+ C368.033020,604.762695 368.015656,604.377869 368.629852,603.713928
84
+ C378.143524,599.097900 381.868195,592.076843 380.735291,581.475342
85
+ C380.595306,580.165100 381.330536,578.148438 382.348206,577.418945
86
+ C398.958832,565.512329 411.291809,549.471436 424.552032,534.308716
87
+ C425.494904,533.230530 427.958832,532.558716 429.362701,532.953247
88
+ C440.941925,536.207275 451.759247,530.157959 454.012024,518.438232
89
+ C454.719696,514.756409 456.522827,513.707092 459.746429,512.934509
90
+ C476.686981,508.874298 493.834229,507.092743 511.250305,507.125427
91
+ C588.410645,507.270203 665.571106,507.314850 742.731506,507.251526
92
+ C747.156189,507.247894 749.822693,508.034210 751.981506,512.483093
93
+ C756.015625,520.796570 765.153564,524.164124 774.074158,521.688782
94
+ C782.288086,519.409485 788.185181,511.656525 788.153870,503.178131
95
+ C788.120422,494.123169 782.052185,486.256042 773.435974,484.097107
96
+ C764.790588,481.930878 755.709534,485.472961 751.859680,493.530548
97
+ C749.947510,497.532562 747.591797,497.995453 743.810669,497.990601
98
+ C665.816528,497.890839 587.822205,497.951019 509.828094,497.863953
99
+ C491.562958,497.843567 473.610291,499.766266 455.973358,504.652588
100
+ C454.611298,505.029968 452.168793,504.091980 451.215424,502.945038
101
+ C444.484161,494.847015 434.144501,492.748138 425.228241,497.978119
102
+ C416.450775,503.126678 413.224670,513.498779 417.799194,523.178040
103
+ C418.967468,525.649902 418.561890,526.995972 416.952423,528.786499
104
+ C408.709717,537.955994 400.770233,547.409485 392.280823,556.341736
105
+ C387.066528,561.828064 381.055450,566.557190 375.627167,571.424561
106
+ C361.365723,562.812378 351.479797,565.262329 343.222931,578.486877
107
+ C342.498871,579.646606 340.371887,580.499573 338.882812,580.520569
108
+ C328.886505,580.661438 318.886475,580.533691 308.887665,580.502930
109
+ C304.630920,580.489868 300.374115,580.500793 295.727417,580.500793
110
+ C295.727417,576.929138 295.724060,574.125916 295.727936,571.322632
111
+ C295.758270,549.324402 295.790710,527.326172 295.819427,505.327972
112
+ C295.821167,503.994965 296.291687,502.341492 295.679962,501.396545
113
+ C294.462524,499.515900 292.643127,498.024933 291.072418,496.372986
114
+ C289.479553,497.997650 287.695740,499.485107 286.383392,501.311371
115
+ C285.822357,502.092102 286.222382,503.579071 286.222412,504.745117
116
+ C286.225250,594.904785 286.230377,685.064453 286.244141,775.224121
117
+ C286.244598,778.223083 285.753510,781.397156 286.584381,784.161072
118
+ C287.161804,786.081787 289.614838,787.438660 291.229950,789.047363
119
+ C292.745392,787.408569 294.362091,785.847412 295.714142,784.083374
120
+ C296.116272,783.558777 295.775665,782.464600 295.774933,781.631409
121
+ C295.753479,756.800110 295.731842,731.968811 295.710602,707.137512
122
+ C295.709106,705.383362 295.710388,703.629150 295.710388,701.661621
123
+ C313.279541,701.661621 330.101654,701.400574 346.911804,701.737549
124
+ C362.626282,702.052490 376.058380,708.249268 385.250610,721.030090
125
+ C392.669739,731.345581 398.552429,742.766174 404.995361,753.494385
126
+ C403.290955,755.316162 402.472443,756.135437 401.715912,757.008423
127
+ C395.414948,764.279419 394.976807,774.850769 400.651550,782.370178
128
+ C406.187500,789.705688 415.487915,792.090881 423.888702,788.329529
129
+ C432.717773,784.376404 437.078247,775.826721 435.166779,766.216553
130
+ C433.295074,756.806641 425.931335,750.964050 415.960907,750.467773
131
+ C414.318909,750.385986 412.104706,748.881592 411.288391,747.407166
132
+ C408.067047,741.588989 405.435059,735.448242 402.336182,729.557861
133
+ C389.335419,704.845398 369.530762,691.308594 340.890350,691.951599
134
+ C327.732330,692.247009 314.560425,691.925049 301.394836,691.884827
135
+ C299.616364,691.879395 297.837921,691.884094 295.924500,691.884094
136
+ C295.924500,674.339966 295.924500,657.418030 295.924500,640.037842
137
+ C297.338593,640.037842 298.459991,640.039062 299.581390,640.037659
138
+ C326.579071,640.004272 353.578979,640.162415 380.573395,639.848572
139
+ C392.424805,639.710815 402.975800,642.868896 412.219360,650.084351
140
+ C420.225952,656.334167 427.943481,662.955261 435.763580,669.442749
141
+ C444.792633,676.933167 454.956787,682.182556 466.592499,683.873352
142
+ C473.648529,684.898560 480.850281,685.305664 487.987854,685.319641
143
+ C521.817749,685.385803 555.648132,685.184082 589.478088,685.247620
144
+ C591.170715,685.250793 593.677673,686.395630 594.419434,687.761597
145
+ C599.430359,696.988403 605.427185,700.842285 614.677002,700.152039
146
+ C623.013428,699.529907 629.016052,694.045776 632.150146,684.598145
147
+ C632.618652,683.185974 634.118896,681.395508 635.441162,681.094299
148
+ C658.349365,675.877075 677.261230,664.139954 692.489868,646.398987
149
+ C695.888855,642.439270 699.152832,640.835205 704.785095,642.192810
150
+ C713.338806,644.254578 721.458679,639.319763 725.222595,631.357300
151
+ C728.913452,623.549377 727.341187,614.854370 721.153748,608.855591
152
+ C715.111938,602.997986 706.232788,601.851440 698.473450,605.926941
153
+ C690.870667,609.920227 685.922485,618.321350 688.950012,626.378113
154
+ C691.923157,634.290283 688.513306,638.256592 683.457886,642.617188
155
+ C681.066895,644.679565 678.983826,647.095032 676.707520,649.294861
156
+ C664.905701,660.700500 650.796448,667.877258 634.942078,671.656616
157
+ C633.311218,672.045410 630.268250,671.402039 629.616150,670.252869
158
+ C622.697449,658.058777 602.152222,656.867493 594.824707,673.258667
159
+ C594.278992,674.479431 592.259827,675.794067 590.921570,675.798462
160
+ C553.591614,675.920349 516.260986,675.943604 478.930878,675.829712
161
+ C465.150909,675.787720 452.718445,671.533875 442.025574,662.689880
162
+ C435.992676,657.700134 429.972687,652.685425 424.132111,647.474365
163
+ C410.697693,635.487854 395.145508,629.906189 377.066254,630.199402
164
+ C351.741302,630.610046 326.405212,630.334534 301.073883,630.352295
165
+ C299.310638,630.353516 297.547394,630.352417 295.821716,630.352417
166
+ C295.821716,625.010010 295.821716,620.426208 295.821716,615.332458
167
+ C298.291260,615.332458 300.415253,615.332031 302.539246,615.332581
168
+ C330.369629,615.339050 358.200348,615.262878 386.030212,615.384705
169
+ C401.559021,615.452698 415.078125,610.545288 426.651459,600.157410
170
+ C433.719360,593.813477 440.523621,587.070862 448.178497,581.516296
171
+ C455.368652,576.298889 463.488190,572.349365 471.266296,567.961548
172
+ C474.329590,566.233459 476.321198,567.013245 478.456116,570.260559
173
+ C482.725342,576.754333 489.319794,579.639221 497.046661,578.492737
174
+ C505.073517,577.301819 510.742035,572.786011 513.301086,564.820618
175
+ C513.591919,563.915344 514.021179,563.054565 514.457214,562.001770
176
+ C531.654968,562.001770 548.648071,561.912170 565.636414,562.156250
177
+ C567.144226,562.177917 569.170044,564.068848 570.020264,565.608093
178
+ C574.597778,573.895813 583.454224,578.235535 592.252502,576.143860
179
+ C601.054077,574.051270 607.518677,566.182495 607.577332,557.490417
180
+ C607.638000,548.500427 601.315063,540.741821 592.078247,538.472229
181
+ C583.417542,536.344177 574.540710,540.303406 570.457520,548.821838
182
+ C568.926514,552.015747 567.139526,552.607666 563.992920,552.595642
183
+ C549.828857,552.541687 535.657837,552.532104 521.502197,552.945312
184
+ C516.333130,553.096130 512.310669,552.753357 509.968994,547.205383
185
+ C509.113586,545.178772 506.539490,543.578064 504.399445,542.442993
186
+ C492.751862,536.265381 480.127014,541.513916 475.746185,554.006897
187
+ C475.198700,555.568176 473.761444,557.609009 472.369293,557.956421
188
+ C461.789764,560.596558 452.503021,565.646545 444.239380,572.578369
189
+ C435.944305,579.536499 428.241608,587.256287 419.579529,593.701904
190
+ C413.837189,597.974854 407.184418,602.240662 400.366211,603.569275
191
+ C389.873535,605.613892 378.889008,605.134583 368.050415,605.147461
192
+ M632.987183,341.852783
193
+ C643.727112,345.101807 653.271545,343.246796 661.269592,334.640747
194
+ C663.374878,346.860870 657.983887,354.498322 646.500061,354.684021
195
+ C641.042053,354.772278 635.513550,352.743256 630.087646,351.390381
196
+ C628.108826,350.897034 626.334656,349.583252 624.063110,348.440552
197
+ C621.734741,352.852753 619.603638,356.891083 617.339905,361.180847
198
+ C627.168640,367.540527 637.520325,370.176483 648.565613,369.368134
199
+ C669.740723,367.818420 679.882202,356.599365 679.938049,335.268799
200
+ C679.980347,319.118286 680.018738,302.967743 680.057739,286.817230
201
+ C680.061951,285.075562 680.058350,283.333893 680.058350,281.552063
202
+ C673.842834,281.552063 668.417053,281.552063 662.737427,281.552063
203
+ C662.463501,283.754150 662.217590,285.731293 661.931213,288.033783
204
+ C649.642334,275.716370 632.655090,278.883545 623.939392,286.560150
205
+ C608.614563,300.057953 609.758972,332.865356 632.987183,341.852783
206
+ M593.027649,338.597229
207
+ C603.553955,329.646851 607.088440,318.242188 604.193726,304.967743
208
+ C601.462585,292.443176 593.461121,284.606079 581.139404,281.285919
209
+ C566.075684,277.226868 550.600037,282.471558 543.007324,294.052185
210
+ C535.053894,306.182892 535.555847,321.874329 544.263733,333.324860
211
+ C554.807068,347.188904 576.232910,349.727844 593.027649,338.597229
212
+ M524.859253,307.500000
213
+ C524.859253,290.925110 524.859253,274.350250 524.859253,257.733154
214
+ C518.270325,257.733154 512.377014,257.733154 506.479492,257.733154
215
+ C506.479492,286.829285 506.479492,315.544617 506.479492,344.315796
216
+ C512.733337,344.315796 518.626648,344.315796 524.854309,344.315796
217
+ C524.854309,332.106232 524.854309,320.303131 524.859253,307.500000
218
+ z"/>
219
+ <path fill="#F7F9FA" opacity="1.000000" stroke="none"
220
+ d="
221
+ M368.113159,605.726074
222
+ C378.889008,605.134583 389.873535,605.613892 400.366211,603.569275
223
+ C407.184418,602.240662 413.837189,597.974854 419.579529,593.701904
224
+ C428.241608,587.256287 435.944305,579.536499 444.239380,572.578369
225
+ C452.503021,565.646545 461.789764,560.596558 472.369293,557.956421
226
+ C473.761444,557.609009 475.198700,555.568176 475.746185,554.006897
227
+ C480.127014,541.513916 492.751862,536.265381 504.399445,542.442993
228
+ C506.539490,543.578064 509.113586,545.178772 509.968994,547.205383
229
+ C512.310669,552.753357 516.333130,553.096130 521.502197,552.945312
230
+ C535.657837,552.532104 549.828857,552.541687 563.992920,552.595642
231
+ C567.139526,552.607666 568.926514,552.015747 570.457520,548.821838
232
+ C574.540710,540.303406 583.417542,536.344177 592.078247,538.472229
233
+ C601.315063,540.741821 607.638000,548.500427 607.577332,557.490417
234
+ C607.518677,566.182495 601.054077,574.051270 592.252502,576.143860
235
+ C583.454224,578.235535 574.597778,573.895813 570.020264,565.608093
236
+ C569.170044,564.068848 567.144226,562.177917 565.636414,562.156250
237
+ C548.648071,561.912170 531.654968,562.001770 514.457214,562.001770
238
+ C514.021179,563.054565 513.591919,563.915344 513.301086,564.820618
239
+ C510.742035,572.786011 505.073517,577.301819 497.046661,578.492737
240
+ C489.319794,579.639221 482.725342,576.754333 478.456116,570.260559
241
+ C476.321198,567.013245 474.329590,566.233459 471.266296,567.961548
242
+ C463.488190,572.349365 455.368652,576.298889 448.178497,581.516296
243
+ C440.523621,587.070862 433.719360,593.813477 426.651459,600.157410
244
+ C415.078125,610.545288 401.559021,615.452698 386.030212,615.384705
245
+ C358.200348,615.262878 330.369629,615.339050 302.539246,615.332581
246
+ C300.415253,615.332031 298.291260,615.332458 295.821716,615.332458
247
+ C295.821716,620.426208 295.821716,625.010010 295.821716,630.352417
248
+ C297.547394,630.352417 299.310638,630.353516 301.073883,630.352295
249
+ C326.405212,630.334534 351.741302,630.610046 377.066254,630.199402
250
+ C395.145508,629.906189 410.697693,635.487854 424.132111,647.474365
251
+ C429.972687,652.685425 435.992676,657.700134 442.025574,662.689880
252
+ C452.718445,671.533875 465.150909,675.787720 478.930878,675.829712
253
+ C516.260986,675.943604 553.591614,675.920349 590.921570,675.798462
254
+ C592.259827,675.794067 594.278992,674.479431 594.824707,673.258667
255
+ C602.152222,656.867493 622.697449,658.058777 629.616150,670.252869
256
+ C630.268250,671.402039 633.311218,672.045410 634.942078,671.656616
257
+ C650.796448,667.877258 664.905701,660.700500 676.707520,649.294861
258
+ C678.983826,647.095032 681.066895,644.679565 683.457886,642.617188
259
+ C688.513306,638.256592 691.923157,634.290283 688.950012,626.378113
260
+ C685.922485,618.321350 690.870667,609.920227 698.473450,605.926941
261
+ C706.232788,601.851440 715.111938,602.997986 721.153748,608.855591
262
+ C727.341187,614.854370 728.913452,623.549377 725.222595,631.357300
263
+ C721.458679,639.319763 713.338806,644.254578 704.785095,642.192810
264
+ C699.152832,640.835205 695.888855,642.439270 692.489868,646.398987
265
+ C677.261230,664.139954 658.349365,675.877075 635.441162,681.094299
266
+ C634.118896,681.395508 632.618652,683.185974 632.150146,684.598145
267
+ C629.016052,694.045776 623.013428,699.529907 614.677002,700.152039
268
+ C605.427185,700.842285 599.430359,696.988403 594.419434,687.761597
269
+ C593.677673,686.395630 591.170715,685.250793 589.478088,685.247620
270
+ C555.648132,685.184082 521.817749,685.385803 487.987854,685.319641
271
+ C480.850281,685.305664 473.648529,684.898560 466.592499,683.873352
272
+ C454.956787,682.182556 444.792633,676.933167 435.763580,669.442749
273
+ C427.943481,662.955261 420.225952,656.334167 412.219360,650.084351
274
+ C402.975800,642.868896 392.424805,639.710815 380.573395,639.848572
275
+ C353.578979,640.162415 326.579071,640.004272 299.581390,640.037659
276
+ C298.459991,640.039062 297.338593,640.037842 295.924500,640.037842
277
+ C295.924500,657.418030 295.924500,674.339966 295.924500,691.884094
278
+ C297.837921,691.884094 299.616364,691.879395 301.394836,691.884827
279
+ C314.560425,691.925049 327.732330,692.247009 340.890350,691.951599
280
+ C369.530762,691.308594 389.335419,704.845398 402.336182,729.557861
281
+ C405.435059,735.448242 408.067047,741.588989 411.288391,747.407166
282
+ C412.104706,748.881592 414.318909,750.385986 415.960907,750.467773
283
+ C425.931335,750.964050 433.295074,756.806641 435.166779,766.216553
284
+ C437.078247,775.826721 432.717773,784.376404 423.888702,788.329529
285
+ C415.487915,792.090881 406.187500,789.705688 400.651550,782.370178
286
+ C394.976807,774.850769 395.414948,764.279419 401.715912,757.008423
287
+ C402.472443,756.135437 403.290955,755.316162 404.995361,753.494385
288
+ C398.552429,742.766174 392.669739,731.345581 385.250610,721.030090
289
+ C376.058380,708.249268 362.626282,702.052490 346.911804,701.737549
290
+ C330.101654,701.400574 313.279541,701.661621 295.710388,701.661621
291
+ C295.710388,703.629150 295.709106,705.383362 295.710602,707.137512
292
+ C295.731842,731.968811 295.753479,756.800110 295.774933,781.631409
293
+ C295.775665,782.464600 296.116272,783.558777 295.714142,784.083374
294
+ C294.362091,785.847412 292.745392,787.408569 291.229919,789.047363
295
+ C289.614838,787.438660 287.161804,786.081787 286.584381,784.161072
296
+ C285.753510,781.397156 286.244598,778.223083 286.244141,775.224121
297
+ C286.230377,685.064453 286.225250,594.904785 286.222412,504.745117
298
+ C286.222382,503.579071 285.822357,502.092102 286.383392,501.311371
299
+ C287.695740,499.485107 289.479553,497.997650 291.072418,496.372986
300
+ C292.643127,498.024933 294.462524,499.515900 295.679962,501.396545
301
+ C296.291687,502.341492 295.821167,503.994965 295.819427,505.327972
302
+ C295.790710,527.326172 295.758270,549.324402 295.727936,571.322632
303
+ C295.724060,574.125916 295.727417,576.929138 295.727417,580.500793
304
+ C300.374115,580.500793 304.630920,580.489868 308.887665,580.502930
305
+ C318.886475,580.533691 328.886505,580.661438 338.882812,580.520569
306
+ C340.371887,580.499573 342.498871,579.646606 343.222931,578.486877
307
+ C351.479797,565.262329 361.365723,562.812378 375.627167,571.424561
308
+ C381.055450,566.557190 387.066528,561.828064 392.280823,556.341736
309
+ C400.770233,547.409485 408.709717,537.955994 416.952423,528.786499
310
+ C418.561890,526.995972 418.967468,525.649902 417.799194,523.178040
311
+ C413.224670,513.498779 416.450775,503.126678 425.228241,497.978119
312
+ C434.144501,492.748138 444.484161,494.847015 451.215424,502.945038
313
+ C452.168793,504.091980 454.611298,505.029968 455.973358,504.652588
314
+ C473.610291,499.766266 491.562958,497.843567 509.828094,497.863953
315
+ C587.822205,497.951019 665.816528,497.890839 743.810669,497.990601
316
+ C747.591797,497.995453 749.947510,497.532562 751.859680,493.530548
317
+ C755.709534,485.472961 764.790588,481.930878 773.435974,484.097107
318
+ C782.052185,486.256042 788.120422,494.123169 788.153870,503.178131
319
+ C788.185181,511.656525 782.288086,519.409485 774.074158,521.688782
320
+ C765.153564,524.164124 756.015625,520.796570 751.981506,512.483093
321
+ C749.822693,508.034210 747.156189,507.247894 742.731506,507.251526
322
+ C665.571106,507.314850 588.410645,507.270203 511.250305,507.125427
323
+ C493.834229,507.092743 476.686981,508.874298 459.746429,512.934509
324
+ C456.522827,513.707092 454.719696,514.756409 454.012024,518.438232
325
+ C451.759247,530.157959 440.941925,536.207275 429.362701,532.953247
326
+ C427.958832,532.558716 425.494904,533.230530 424.552032,534.308716
327
+ C411.291809,549.471436 398.958832,565.512329 382.348206,577.418945
328
+ C381.330536,578.148438 380.595306,580.165100 380.735291,581.475342
329
+ C381.868195,592.076843 378.143524,599.097900 367.896912,603.836060
330
+ C362.773346,603.976624 358.382660,603.995056 353.700562,603.835205
331
+ C350.050171,600.136108 346.772858,596.531494 343.290527,593.137207
332
+ C341.971741,591.851868 340.202332,590.210022 338.600525,590.167847
333
+ C328.798584,589.910278 318.985840,590.067749 309.176666,590.081909
334
+ C304.762970,590.088257 300.349274,590.083008 295.853088,590.083008
335
+ C295.853088,595.508118 295.853088,600.271118 295.853088,605.627319
336
+ C315.397614,605.627319 334.639648,605.627319 354.341003,605.744873
337
+ C359.237976,605.816956 363.675568,605.771484 368.113159,605.726074
338
+ M616.388611,690.215576
339
+ C620.749329,688.265503 623.324890,685.085022 622.974854,680.127197
340
+ C622.665649,675.747986 620.326477,672.615540 616.295532,670.991028
341
+ C612.334351,669.394653 608.750366,670.601318 605.680786,673.299927
342
+ C602.324768,676.250427 601.504028,681.132996 603.501465,685.160889
343
+ C605.724426,689.643677 609.605408,691.351379 616.388611,690.215576
344
+ M489.281738,550.504089
345
+ C485.534698,553.266235 483.167358,556.635010 484.510406,561.577271
346
+ C485.601990,565.594116 487.994690,568.426697 492.228088,569.136292
347
+ C496.865387,569.913574 500.843567,568.694092 503.399780,564.432373
348
+ C505.822601,560.392883 505.470520,556.349304 502.530579,552.832703
349
+ C499.158478,548.799133 494.830078,547.867554 489.281738,550.504089
350
+ M416.410767,760.040405
351
+ C410.106171,760.750122 406.633759,763.668152 405.971283,768.813232
352
+ C405.348907,773.646912 407.712738,777.987610 411.966614,779.822693
353
+ C417.566711,782.238403 423.828156,779.451477 425.737915,773.693115
354
+ C427.867828,767.270935 424.615845,762.085083 416.410767,760.040405
355
+ M709.102783,612.983765
356
+ C704.199158,612.293335 700.674805,614.430786 698.455872,618.608459
357
+ C696.601379,622.099915 696.837585,625.718811 699.282104,628.909668
358
+ C701.901733,632.328979 705.396362,633.880554 709.765320,633.105774
359
+ C714.048523,632.346252 717.475647,628.625366 717.919067,624.228394
360
+ C718.414612,619.313965 715.699463,615.549683 709.102783,612.983765
361
+ M351.473663,587.822693
362
+ C352.107056,589.161072 352.543243,590.645691 353.408234,591.812439
363
+ C357.013885,596.675659 363.695923,597.245300 368.318390,593.200134
364
+ C372.741364,589.329468 372.921844,582.928894 368.667145,578.634888
365
+ C365.520355,575.459045 361.608185,574.812317 357.648285,576.367310
366
+ C352.967285,578.205505 350.954773,582.040527 351.473663,587.822693
367
+ M426.467712,519.740540
368
+ C428.861603,523.102051 432.092041,524.899231 436.241730,524.518616
369
+ C442.172211,523.974609 446.308075,518.647644 445.291931,513.090881
370
+ C444.158020,506.890106 438.252686,503.108154 432.333435,504.791962
371
+ C426.211578,506.533417 423.649933,512.374207 426.467712,519.740540
372
+ M760.746033,509.734283
373
+ C765.474304,513.557068 769.951294,514.296082 773.924988,511.604980
374
+ C777.665283,509.071960 779.614990,505.525635 778.546936,500.901581
375
+ C777.603577,496.817688 774.947388,494.067352 770.868835,493.245575
376
+ C766.684509,492.402435 762.912964,493.528381 760.276672,497.174072
377
+ C757.412415,501.135071 757.300232,505.153717 760.746033,509.734283
378
+ M593.772644,565.575989
379
+ C598.774414,561.028809 599.526794,555.185059 595.680725,550.754883
380
+ C591.864563,546.359131 585.292908,545.888000 580.965759,549.699951
381
+ C577.470459,552.779114 576.690979,558.195801 579.131348,562.447388
382
+ C581.808655,567.111694 586.712280,568.348083 593.772644,565.575989
383
+ z"/>
384
+ <path fill="#FAFBFB" opacity="1.000000" stroke="none"
385
+ d="
386
+ M404.424744,342.840240
387
+ C399.752533,363.666168 382.757050,373.630371 359.732025,368.501007
388
+ C353.731995,367.164368 348.081635,364.258209 341.582672,361.814178
389
+ C344.454193,356.572021 346.649719,352.563965 348.438507,349.298462
390
+ C355.267090,351.265533 361.436249,354.038086 367.818024,354.672791
391
+ C380.927887,355.976746 387.903778,348.130463 386.458282,333.975311
392
+ C379.770874,341.773560 371.506348,344.251312 362.072632,343.013092
393
+ C355.870270,342.199036 350.777100,339.121857 346.619110,334.575409
394
+ C335.799194,322.744751 335.457214,302.135162 345.787659,289.982758
395
+ C356.075592,277.880341 369.737030,277.152222 387.271820,287.919891
396
+ C387.469025,285.887756 387.655304,283.967926 387.890778,281.541260
397
+ C392.976196,281.541260 397.925385,281.433807 402.859192,281.660095
398
+ C403.577850,281.693054 404.223358,283.320251 404.906403,285.067383
399
+ C404.748322,304.896759 404.586517,323.868500 404.424744,342.840240
400
+ M368.104218,326.992218
401
+ C369.922089,327.098511 371.753021,327.399078 373.555542,327.277649
402
+ C381.635101,326.733612 387.118225,320.419434 387.153076,311.771027
403
+ C387.190704,302.440430 382.128204,296.420380 373.680542,295.750153
404
+ C365.559326,295.105835 359.386719,299.461426 357.378723,307.253326
405
+ C355.053345,316.276581 358.545227,323.181671 368.104218,326.992218
406
+ z"/>
407
+ <path fill="#FAFBFB" opacity="1.000000" stroke="none"
408
+ d="
409
+ M632.615906,341.703491
410
+ C609.758972,332.865356 608.614563,300.057953 623.939392,286.560150
411
+ C632.655090,278.883545 649.642334,275.716370 661.931213,288.033783
412
+ C662.217590,285.731293 662.463501,283.754150 662.737427,281.552063
413
+ C668.417053,281.552063 673.842834,281.552063 680.058350,281.552063
414
+ C680.058350,283.333893 680.061951,285.075562 680.057739,286.817230
415
+ C680.018738,302.967743 679.980347,319.118286 679.938049,335.268799
416
+ C679.882202,356.599365 669.740723,367.818420 648.565613,369.368134
417
+ C637.520325,370.176483 627.168640,367.540527 617.339905,361.180847
418
+ C619.603638,356.891083 621.734741,352.852753 624.063110,348.440552
419
+ C626.334656,349.583252 628.108826,350.897034 630.087646,351.390381
420
+ C635.513550,352.743256 641.042053,354.772278 646.500061,354.684021
421
+ C657.983887,354.498322 663.374878,346.860870 661.269592,334.640747
422
+ C653.271545,343.246796 643.727112,345.101807 632.615906,341.703491
423
+ M662.206299,313.302338
424
+ C662.186829,312.143524 662.234131,310.979095 662.137329,309.826782
425
+ C661.369385,300.685272 655.399414,295.362122 646.286682,295.661041
426
+ C638.113770,295.929199 632.135193,302.343872 631.923096,311.072357
427
+ C631.705017,320.048035 637.699890,326.854218 646.432495,327.545258
428
+ C654.186768,328.158905 660.953247,322.397614 662.206299,313.302338
429
+ z"/>
430
+ <path fill="#FAFBFB" opacity="1.000000" stroke="none"
431
+ d="
432
+ M592.741638,338.816376
433
+ C576.232910,349.727844 554.807068,347.188904 544.263733,333.324860
434
+ C535.555847,321.874329 535.053894,306.182892 543.007324,294.052185
435
+ C550.600037,282.471558 566.075684,277.226868 581.139404,281.285919
436
+ C593.461121,284.606079 601.462585,292.443176 604.193726,304.967743
437
+ C607.088440,318.242188 603.553955,329.646851 592.741638,338.816376
438
+ M563.675964,297.889099
439
+ C556.563782,302.255280 555.092529,309.052765 556.265442,316.535339
440
+ C557.195740,322.469818 560.607422,326.936981 566.583679,328.857086
441
+ C573.162354,330.970703 580.116638,328.627625 583.833191,323.222473
442
+ C588.067688,317.064026 587.779724,307.817780 583.162415,301.686279
443
+ C578.848511,295.957672 572.370911,294.514282 563.675964,297.889099
444
+ z"/>
445
+ <path fill="#F9FAFB" opacity="1.000000" stroke="none"
446
+ d="
447
+ M450.601868,284.004120
448
+ C451.809723,283.250885 452.942047,282.073395 454.242767,281.841827
449
+ C456.298309,281.475922 458.466766,281.744415 460.938721,281.744415
450
+ C460.938721,276.113312 460.938721,271.005341 460.938721,265.541290
451
+ C467.042633,265.541290 472.801727,265.541290 479.258362,265.541290
452
+ C479.258362,270.627289 479.258362,275.854126 479.258362,281.685364
453
+ C484.137268,281.685364 488.350433,281.685364 492.862122,281.685364
454
+ C492.862122,286.878754 492.862122,291.469330 492.862122,296.779236
455
+ C488.549286,296.779236 484.179657,296.779236 479.393616,296.779236
456
+ C479.393616,306.463104 479.225525,315.442047 479.465637,324.410095
457
+ C479.583008,328.793243 482.368347,330.523468 486.697662,329.512878
458
+ C488.134216,329.177551 489.517487,328.613983 491.526062,327.958679
459
+ C492.705414,332.009644 493.990234,335.892487 494.870544,339.864929
460
+ C495.061432,340.726379 494.059082,342.318054 493.168457,342.882385
461
+ C482.733673,349.494720 467.674316,345.379150 462.108704,333.860992
462
+ C461.482239,321.104156 461.055481,309.045807 460.616486,296.641418
463
+ C457.449951,296.641418 454.505280,296.641418 451.245575,296.641418
464
+ C451.019714,292.207001 450.810791,288.105560 450.601868,284.004120
465
+ z"/>
466
+ <path fill="#F6F7F9" opacity="1.000000" stroke="none"
467
+ d="
468
+ M524.856812,308.000000
469
+ C524.854309,320.303131 524.854309,332.106232 524.854309,344.315796
470
+ C518.626648,344.315796 512.733337,344.315796 506.479492,344.315796
471
+ C506.479492,315.544617 506.479492,286.829285 506.479492,257.733154
472
+ C512.377014,257.733154 518.270325,257.733154 524.859253,257.733154
473
+ C524.859253,274.350250 524.859253,290.925110 524.856812,308.000000
474
+ z"/>
475
+ <path fill="#275277" opacity="1.000000" stroke="none"
476
+ d="
477
+ M404.831055,342.880157
478
+ C404.586517,323.868500 404.748322,304.896759 404.997803,285.463562
479
+ C407.741486,283.481293 410.703400,282.315826 412.980713,280.355164
480
+ C416.272614,277.520874 419.068481,274.110443 422.482666,270.872375
481
+ C426.978058,275.839081 431.981567,273.759186 436.867462,272.594879
482
+ C438.887573,275.492126 440.907654,278.389404 442.599304,281.643341
483
+ C441.540619,282.000031 440.810394,282.000061 439.798401,281.822449
484
+ C437.646576,280.218292 436.255859,279.913300 433.535828,280.955719
485
+ C430.143158,282.255890 425.873566,281.267914 421.945831,281.267914
486
+ C421.945831,302.897430 421.945831,323.474182 421.945831,344.772400
487
+ C427.995850,344.772400 433.782227,344.772400 439.568604,344.772400
488
+ C440.381226,346.482422 441.193878,348.192474 442.087494,350.072937
489
+ C440.540710,351.127930 439.268616,352.738220 438.143097,352.641571
490
+ C431.348389,352.057953 424.403015,351.766479 417.878204,350.005615
491
+ C413.356537,348.785370 409.429901,345.360107 404.831055,342.880157
492
+ z"/>
493
+ <path fill="#FAFCFC" opacity="1.000000" stroke="none"
494
+ d="
495
+ M439.683197,344.474243
496
+ C433.782227,344.772400 427.995850,344.772400 421.945831,344.772400
497
+ C421.945831,323.474182 421.945831,302.897430 421.945831,281.267914
498
+ C425.873566,281.267914 430.143158,282.255890 433.535828,280.955719
499
+ C436.255859,279.913300 437.646576,280.218292 439.771667,282.290436
500
+ C440.112671,302.955811 440.198730,322.975555 440.284790,342.995300
501
+ C440.122437,343.388916 439.960114,343.782501 439.683197,344.474243
502
+ z"/>
503
+ <path fill="#285276" opacity="1.000000" stroke="none"
504
+ d="
505
+ M440.657715,342.993683
506
+ C440.198730,322.975555 440.112671,302.955811 440.053406,282.468079
507
+ C440.810394,282.000061 441.540619,282.000031 442.636047,282.000000
508
+ C445.287811,282.668976 447.574432,283.337982 450.231445,284.005554
509
+ C450.810791,288.105560 451.019714,292.207001 451.245575,296.641418
510
+ C454.505280,296.641418 457.449951,296.641418 460.616486,296.641418
511
+ C461.055481,309.045807 461.482239,321.104156 461.902954,333.579620
512
+ C456.815399,336.834808 449.888947,335.450226 445.963501,341.210846
513
+ C445.165802,342.381500 442.717834,342.427551 440.657715,342.993683
514
+ z"/>
515
+ <path fill="#F7F9FA" opacity="1.000000" stroke="none"
516
+ d="
517
+ M437.084717,272.347382
518
+ C431.981567,273.759186 426.978058,275.839081 422.633942,270.508362
519
+ C419.728180,265.966400 418.890381,261.640930 421.831024,257.153229
520
+ C424.069946,253.736374 427.322876,252.549683 431.262146,252.799042
521
+ C436.169800,253.109665 440.064484,255.164963 441.595306,259.982971
522
+ C443.153442,264.886841 441.873596,269.173950 437.084717,272.347382
523
+ z"/>
524
+ <path fill="#688CA7" opacity="1.000000" stroke="none"
525
+ d="
526
+ M353.992004,604.013489
527
+ C358.382660,603.995056 362.773346,603.976624 367.581116,603.975586
528
+ C368.015656,604.377869 368.033020,604.762695 368.081787,605.436768
529
+ C363.675568,605.771484 359.237976,605.816956 354.349304,605.474731
530
+ C353.929504,604.729248 353.960754,604.371338 353.992004,604.013489
531
+ z"/>
532
+ <path fill="#315C81" opacity="1.000000" stroke="none"
533
+ d="
534
+ M353.700562,603.835205
535
+ C353.960754,604.371338 353.929504,604.729248 353.889954,605.357178
536
+ C334.639648,605.627319 315.397614,605.627319 295.853088,605.627319
537
+ C295.853088,600.271118 295.853088,595.508118 295.853088,590.083008
538
+ C300.349274,590.083008 304.762970,590.088257 309.176666,590.081909
539
+ C318.985840,590.067749 328.798584,589.910278 338.600525,590.167847
540
+ C340.202332,590.210022 341.971741,591.851868 343.290527,593.137207
541
+ C346.772858,596.531494 350.050171,600.136108 353.700562,603.835205
542
+ z"/>
543
+ <path fill="#31597B" opacity="1.000000" stroke="none"
544
+ d="
545
+ M616.025635,690.363770
546
+ C609.605408,691.351379 605.724426,689.643677 603.501465,685.160889
547
+ C601.504028,681.132996 602.324768,676.250427 605.680786,673.299927
548
+ C608.750366,670.601318 612.334351,669.394653 616.295532,670.991028
549
+ C620.326477,672.615540 622.665649,675.747986 622.974854,680.127197
550
+ C623.324890,685.085022 620.749329,688.265503 616.025635,690.363770
551
+ z"/>
552
+ <path fill="#31597B" opacity="1.000000" stroke="none"
553
+ d="
554
+ M489.619629,550.312378
555
+ C494.830078,547.867554 499.158478,548.799133 502.530579,552.832703
556
+ C505.470520,556.349304 505.822601,560.392883 503.399780,564.432373
557
+ C500.843567,568.694092 496.865387,569.913574 492.228088,569.136292
558
+ C487.994690,568.426697 485.601990,565.594116 484.510406,561.577271
559
+ C483.167358,556.635010 485.534698,553.266235 489.619629,550.312378
560
+ z"/>
561
+ <path fill="#315B7E" opacity="1.000000" stroke="none"
562
+ d="
563
+ M416.809143,760.065186
564
+ C424.615845,762.085083 427.867828,767.270935 425.737915,773.693115
565
+ C423.828156,779.451477 417.566711,782.238403 411.966614,779.822693
566
+ C407.712738,777.987610 405.348907,773.646912 405.971283,768.813232
567
+ C406.633759,763.668152 410.106171,760.750122 416.809143,760.065186
568
+ z"/>
569
+ <path fill="#315B7E" opacity="1.000000" stroke="none"
570
+ d="
571
+ M709.501160,613.046997
572
+ C715.699463,615.549683 718.414612,619.313965 717.919067,624.228394
573
+ C717.475647,628.625366 714.048523,632.346252 709.765320,633.105774
574
+ C705.396362,633.880554 701.901733,632.328979 699.282104,628.909668
575
+ C696.837585,625.718811 696.601379,622.099915 698.455872,618.608459
576
+ C700.674805,614.430786 704.199158,612.293335 709.501160,613.046997
577
+ z"/>
578
+ <path fill="#31597B" opacity="1.000000" stroke="none"
579
+ d="
580
+ M351.383392,587.445862
581
+ C350.954773,582.040527 352.967285,578.205505 357.648285,576.367310
582
+ C361.608185,574.812317 365.520355,575.459045 368.667145,578.634888
583
+ C372.921844,582.928894 372.741364,589.329468 368.318390,593.200134
584
+ C363.695923,597.245300 357.013885,596.675659 353.408234,591.812439
585
+ C352.543243,590.645691 352.107056,589.161072 351.383392,587.445862
586
+ z"/>
587
+ <path fill="#31597B" opacity="1.000000" stroke="none"
588
+ d="
589
+ M426.269897,519.404541
590
+ C423.649933,512.374207 426.211578,506.533417 432.333435,504.791962
591
+ C438.252686,503.108154 444.158020,506.890106 445.291931,513.090881
592
+ C446.308075,518.647644 442.172211,523.974609 436.241730,524.518616
593
+ C432.092041,524.899231 428.861603,523.102051 426.269897,519.404541
594
+ z"/>
595
+ <path fill="#315B7E" opacity="1.000000" stroke="none"
596
+ d="
597
+ M760.494995,509.444916
598
+ C757.300232,505.153717 757.412415,501.135071 760.276672,497.174072
599
+ C762.912964,493.528381 766.684509,492.402435 770.868835,493.245575
600
+ C774.947388,494.067352 777.603577,496.817688 778.546936,500.901581
601
+ C779.614990,505.525635 777.665283,509.071960 773.924988,511.604980
602
+ C769.951294,514.296082 765.474304,513.557068 760.494995,509.444916
603
+ z"/>
604
+ <path fill="#31597B" opacity="1.000000" stroke="none"
605
+ d="
606
+ M593.424194,565.769531
607
+ C586.712280,568.348083 581.808655,567.111694 579.131348,562.447388
608
+ C576.690979,558.195801 577.470459,552.779114 580.965759,549.699951
609
+ C585.292908,545.888000 591.864563,546.359131 595.680725,550.754883
610
+ C599.526794,555.185059 598.774414,561.028809 593.424194,565.769531
611
+ z"/>
612
+ <path fill="#2A567B" opacity="1.000000" stroke="none"
613
+ d="
614
+ M367.689941,326.908264
615
+ C358.545227,323.181671 355.053345,316.276581 357.378723,307.253326
616
+ C359.386719,299.461426 365.559326,295.105835 373.680542,295.750153
617
+ C382.128204,296.420380 387.190704,302.440430 387.153076,311.771027
618
+ C387.118225,320.419434 381.635101,326.733612 373.555542,327.277649
619
+ C371.753021,327.399078 369.922089,327.098511 367.689941,326.908264
620
+ z"/>
621
+ <path fill="#2B577A" opacity="1.000000" stroke="none"
622
+ d="
623
+ M662.169312,313.739990
624
+ C660.953247,322.397614 654.186768,328.158905 646.432495,327.545258
625
+ C637.699890,326.854218 631.705017,320.048035 631.923096,311.072357
626
+ C632.135193,302.343872 638.113770,295.929199 646.286682,295.661041
627
+ C655.399414,295.362122 661.369385,300.685272 662.137329,309.826782
628
+ C662.234131,310.979095 662.186829,312.143524 662.169312,313.739990
629
+ z"/>
630
+ <path fill="#2B577A" opacity="1.000000" stroke="none"
631
+ d="
632
+ M564.007935,297.690552
633
+ C572.370911,294.514282 578.848511,295.957672 583.162415,301.686279
634
+ C587.779724,307.817780 588.067688,317.064026 583.833191,323.222473
635
+ C580.116638,328.627625 573.162354,330.970703 566.583679,328.857086
636
+ C560.607422,326.936981 557.195740,322.469818 556.265442,316.535339
637
+ C555.092529,309.052765 556.563782,302.255280 564.007935,297.690552
638
+ z"/>
639
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wukong-gitlog-cli",
3
- "version": "0.0.2",
3
+ "version": "0.0.5",
4
4
  "description": "Advanced Git commit log exporter with Excel/JSON/TXT output, grouping, stats and CLI.",
5
5
  "keywords": [
6
6
  "git",
package/src/cli.mjs CHANGED
@@ -22,6 +22,8 @@ program
22
22
  .option('--group-by <type>', '按日期分组: day | month')
23
23
  .option('--stats', '输出每日统计数据')
24
24
  .option('--gerrit <prefix>', '显示 Gerrit 地址,支持在 prefix 中使用 {{hash}} 占位符')
25
+ .option('--gerrit-api <url>', '可选:Gerrit REST API 基础地址,用于解析 changeNumber,例如 `https://gerrit.example.com`')
26
+ .option('--gerrit-auth <tokenOrUserPass>', '可选:Gerrit API 授权,格式为 `user:pass` 或 `TOKEN`(表示 Bearer token)')
25
27
  .option('--out <file>', '输出文件名(不含路径)')
26
28
  .option('--out-dir <dir>', '自定义输出目录,支持相对路径或绝对路径,例如 `--out-dir ../output`')
27
29
  .option('--out-parent', '将输出目录放到当前工程的父目录的 `output/`(等同于 `--out-dir ../output`)')
@@ -40,8 +42,78 @@ const opts = program.opts();
40
42
  // --- Gerrit 地址处理(若提供) ---
41
43
  if (opts.gerrit) {
42
44
  const prefix = opts.gerrit;
45
+ // support optional changeNumber resolution via Gerrit REST API
46
+ const { gerritApi, gerritAuth } = opts;
43
47
  // create new array to avoid mutating function parameters (eslint: no-param-reassign)
44
- records = records.map(r => {
48
+ if (prefix.includes('{{changeNumber}}') && gerritApi) {
49
+ // async mapping to resolve changeNumber using Gerrit API
50
+ const cache = new Map();
51
+ const headers = {};
52
+ if (gerritAuth) {
53
+ if (gerritAuth.includes(':')) {
54
+ headers.Authorization = `Basic ${Buffer.from(gerritAuth).toString('base64')}`;
55
+ } else {
56
+ headers.Authorization = `Bearer ${gerritAuth}`;
57
+ }
58
+ }
59
+
60
+ const fetchGerritJson = async (url) => {
61
+ try {
62
+ const res = await fetch(url, { headers });
63
+ const txt = await res.text();
64
+ // Gerrit prepends )]}' to JSON responses — strip it
65
+ const jsonText = txt.replace(/^\)\]\}'\n/, '');
66
+ return JSON.parse(jsonText);
67
+ } catch (err) {
68
+ return null;
69
+ }
70
+ };
71
+
72
+ const resolveChangeNumber = async (r) => {
73
+ // try changeId first
74
+ if (r.changeId) {
75
+ if (cache.has(r.changeId)) return cache.get(r.changeId);
76
+ // try `changes/{changeId}/detail`
77
+ const url = `${gerritApi.replace(/\/$/, '')}/changes/${encodeURIComponent(r.changeId)}/detail`;
78
+ let j = await fetchGerritJson(url);
79
+ if (j && j._number) {
80
+ cache.set(r.changeId, j._number);
81
+ return j._number;
82
+ }
83
+ // fallback: query search
84
+ const url2 = `${gerritApi.replace(/\/$/, '')}/changes/?q=change:${encodeURIComponent(r.changeId)}`;
85
+ j = await fetchGerritJson(url2);
86
+ if (Array.isArray(j) && j.length > 0 && j[0]._number) {
87
+ cache.set(r.changeId, j[0]._number);
88
+ return j[0]._number;
89
+ }
90
+ }
91
+ // try commit hash
92
+ if (r.hash) {
93
+ if (cache.has(r.hash)) return cache.get(r.hash);
94
+ const url3 = `${gerritApi.replace(/\/$/, '')}/changes/?q=commit:${encodeURIComponent(r.hash)}`;
95
+ const j = await fetchGerritJson(url3);
96
+ if (Array.isArray(j) && j.length > 0 && j[0]._number) {
97
+ cache.set(r.hash, j[0]._number);
98
+ return j[0]._number;
99
+ }
100
+ }
101
+ return null;
102
+ };
103
+
104
+ records = await Promise.all(
105
+ records.map(async (r) => {
106
+ const changeNumber = await resolveChangeNumber(r);
107
+ const changeNumberOrFallback = changeNumber || r.changeId || r.hash;
108
+ const gerritUrl = prefix.replace('{{changeNumber}}', changeNumberOrFallback);
109
+ return { ...r, gerrit: gerritUrl };
110
+ })
111
+ );
112
+ } else if (prefix.includes('{{changeNumber}}') && !gerritApi) {
113
+ console.warn('prefix contains {{changeNumber}} but no --gerrit-api provided — falling back to changeId/hash');
114
+ records = records.map((r) => ({ ...r, gerrit: prefix.replace('{{changeNumber}}', r.changeId || r.hash) }));
115
+ } else {
116
+ records = records.map((r) => {
45
117
  let gerritUrl;
46
118
  if (prefix.includes('{{changeId}}')) {
47
119
  const changeId = r.changeId || r.hash;
@@ -54,7 +126,8 @@ const opts = program.opts();
54
126
  }
55
127
 
56
128
  return { ...r, gerrit: gerritUrl };
57
- });
129
+ });
130
+ }
58
131
  }
59
132
 
60
133
  // --- 分组 ---