Compare commits
3560 Commits
1.0.1-a.10
...
window-syn
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f6922ef2ba | ||
![]() |
182c8a4ff7 | ||
![]() |
91f5d58fbc | ||
![]() |
2f6021b0aa | ||
![]() |
8c28dc9e89 | ||
![]() |
54abd673f1 | ||
![]() |
57635ff586 | ||
![]() |
458f502184 | ||
![]() |
3301ee5572 | ||
![]() |
236b5dc5c7 | ||
![]() |
7a4cdaa45c | ||
![]() |
4420d0df8c | ||
![]() |
432ae29bcd | ||
![]() |
3d472de5ac | ||
![]() |
5e942de8bc | ||
![]() |
41adb92790 | ||
![]() |
3e125fdb91 | ||
![]() |
8aaa7b7322 | ||
![]() |
0f4b48bd4a | ||
![]() |
52a399f0ed | ||
![]() |
ae66e66aa8 | ||
![]() |
ba48b736e0 | ||
![]() |
9baed1ab90 | ||
![]() |
b11f6b84d3 | ||
![]() |
6a05a79824 | ||
![]() |
6a68a28f76 | ||
![]() |
e972fefa8b | ||
![]() |
30639e67df | ||
![]() |
a4b8e2134f | ||
![]() |
7bd39acfdc | ||
![]() |
3a03984db1 | ||
![]() |
7886758127 | ||
![]() |
280500cdf6 | ||
![]() |
982ef2d355 | ||
![]() |
d2e8f00e3f | ||
![]() |
9e4cd6e68b | ||
![]() |
c9171b9972 | ||
![]() |
eedc5b7307 | ||
![]() |
f9452241a3 | ||
![]() |
6e9be15dac | ||
![]() |
07381c9a7a | ||
![]() |
bd4f5cee31 | ||
![]() |
0a8ebf9950 | ||
![]() |
73c5bc61fc | ||
![]() |
7253b8fa9d | ||
![]() |
42ebc081a8 | ||
![]() |
6e5502628e | ||
![]() |
b204671931 | ||
![]() |
d035348896 | ||
![]() |
72433745bc | ||
![]() |
2436ada221 | ||
![]() |
4a5141c15c | ||
![]() |
1015537a91 | ||
![]() |
89cafdaa0b | ||
![]() |
3723517d7d | ||
![]() |
c095bc7604 | ||
![]() |
e312e3fe8d | ||
![]() |
70aeebaf66 | ||
![]() |
f9ca9cc74c | ||
![]() |
d9646f939c | ||
![]() |
8f0292d836 | ||
![]() |
95b137ac13 | ||
![]() |
b1fcaeb97f | ||
![]() |
31def1147a | ||
![]() |
0a80765589 | ||
![]() |
e34a053dd0 | ||
![]() |
5e790efdce | ||
![]() |
005cdf53bd | ||
![]() |
429f74a7c7 | ||
![]() |
1f72765227 | ||
![]() |
91f5e104d2 | ||
![]() |
81e854a89f | ||
![]() |
994741f323 | ||
![]() |
a4ba3340e1 | ||
![]() |
5852b2aaa6 | ||
![]() |
257547acbd | ||
![]() |
a1bfcdb587 | ||
![]() |
ce24d867a2 | ||
![]() |
0979c5dbbc | ||
![]() |
7db203ca77 | ||
![]() |
0a205087a4 | ||
![]() |
ca6d34def5 | ||
![]() |
32485d6e5a | ||
![]() |
5fdeec7139 | ||
![]() |
c61891fe2b | ||
![]() |
fc28c2fb7d | ||
![]() |
c607e1a4b1 | ||
![]() |
a3adc1a33e | ||
![]() |
d2a6e18452 | ||
![]() |
59ad9b76df | ||
![]() |
55891213b4 | ||
![]() |
6e57e08280 | ||
![]() |
a6ea91af40 | ||
![]() |
c673db42aa | ||
![]() |
cc7deaa5a3 | ||
![]() |
5feef90401 | ||
![]() |
61aeceb467 | ||
![]() |
1e8fad2fda | ||
![]() |
067de29750 | ||
![]() |
61c4c601c0 | ||
![]() |
1ea533da24 | ||
![]() |
bfbf5cce61 | ||
![]() |
e8aa5c93ee | ||
![]() |
7cbfad9369 | ||
![]() |
d2510f49ca | ||
![]() |
4abac03238 | ||
![]() |
f2093e2153 | ||
![]() |
335ff49ef3 | ||
![]() |
06090d7236 | ||
![]() |
a65bac9b8a | ||
![]() |
7981b42c23 | ||
![]() |
5afc6cd7d0 | ||
![]() |
9dff069011 | ||
![]() |
b29a2bf7d8 | ||
![]() |
6b5131bbde | ||
![]() |
777bbfeef1 | ||
![]() |
af73ce2f9c | ||
![]() |
a4c47565be | ||
![]() |
c1e2c7ec36 | ||
![]() |
21e82c2379 | ||
![]() |
bb9be72863 | ||
![]() |
4a87be372d | ||
![]() |
d2e0a38bf3 | ||
![]() |
30a322f481 | ||
![]() |
6b2f1edf0d | ||
![]() |
850ea775de | ||
![]() |
e7a9aba3c0 | ||
![]() |
04105c3c5e | ||
![]() |
1e59e5d712 | ||
![]() |
eb163dee88 | ||
![]() |
d8196c58ab | ||
![]() |
d216114364 | ||
![]() |
f95f245644 | ||
![]() |
6e161ac83e | ||
![]() |
e06402f468 | ||
![]() |
25087e3cbf | ||
![]() |
b7b868e6ba | ||
![]() |
bc100ae8e2 | ||
![]() |
c779267486 | ||
![]() |
942606f82b | ||
![]() |
c020106535 | ||
![]() |
bf66df57b1 | ||
![]() |
129b8efb39 | ||
![]() |
ce2311c086 | ||
![]() |
fcaac2ee0c | ||
![]() |
f2fcee9605 | ||
![]() |
8d15c9ef49 | ||
![]() |
c8e58ad525 | ||
![]() |
5dcc6d5f44 | ||
![]() |
8c84901598 | ||
![]() |
aa23cd5c64 | ||
![]() |
4304e19cbb | ||
![]() |
4e2dfd8a13 | ||
![]() |
4a48d11b74 | ||
![]() |
eb94ea5817 | ||
![]() |
a49e918847 | ||
![]() |
4337e5a964 | ||
![]() |
187053c4e8 | ||
![]() |
199da1f824 | ||
![]() |
2d54e9f27f | ||
![]() |
84f962346c | ||
![]() |
bf69ac13b2 | ||
![]() |
3229126f14 | ||
![]() |
7f244453fc | ||
![]() |
489923413f | ||
![]() |
ddf5e8f5eb | ||
![]() |
3bb8686024 | ||
![]() |
e6b1cbd02a | ||
![]() |
f07c1a5f24 | ||
![]() |
2c5a7612f8 | ||
![]() |
daae9ac98e | ||
![]() |
9e6cafa9bd | ||
![]() |
91cedcfc1a | ||
![]() |
303af80dd7 | ||
![]() |
82e0f0609a | ||
![]() |
e1fcb6a985 | ||
![]() |
d439cb88d5 | ||
![]() |
1bf5a2dd9e | ||
![]() |
da252b3d7e | ||
![]() |
9dac7bc98d | ||
![]() |
cbe04c223b | ||
![]() |
2f6a8e8f72 | ||
![]() |
62fb85ded9 | ||
![]() |
d51d698036 | ||
![]() |
e7add92b7c | ||
![]() |
4c542e1867 | ||
![]() |
afe9e7a85c | ||
![]() |
82f30e1820 | ||
![]() |
5f2af48c4e | ||
![]() |
30aab09fe2 | ||
![]() |
4993c217bb | ||
![]() |
db8b994535 | ||
![]() |
7f92d0a75a | ||
![]() |
3fcde9994b | ||
![]() |
44d6eebecc | ||
![]() |
75227b7a42 | ||
![]() |
7afc934919 | ||
![]() |
0937be6d2e | ||
![]() |
81e69b9844 | ||
![]() |
4084ac4763 | ||
![]() |
8bee4eaa7c | ||
![]() |
e66bf0ef57 | ||
![]() |
591dce5921 | ||
![]() |
7cf96dde23 | ||
![]() |
8908d3aa50 | ||
![]() |
7ec4e86160 | ||
![]() |
203d1ba701 | ||
![]() |
96a307bafa | ||
![]() |
f4cec5f210 | ||
![]() |
a7874ca46e | ||
![]() |
1bca252979 | ||
![]() |
3ba805802a | ||
![]() |
75a04bb354 | ||
![]() |
883f406db6 | ||
![]() |
81ea7d06d4 | ||
![]() |
0edf37a239 | ||
![]() |
1dce853e2a | ||
![]() |
d6ca32fe3a | ||
![]() |
b02374bdc1 | ||
![]() |
c8d26461e6 | ||
![]() |
36fe38c145 | ||
![]() |
db0880ea8b | ||
![]() |
20392e8e24 | ||
![]() |
e6d6ca53df | ||
![]() |
2abd1cb321 | ||
![]() |
ff5c0543d5 | ||
![]() |
1e6067d100 | ||
![]() |
55100f7bc3 | ||
![]() |
d21e6c4274 | ||
![]() |
6641152100 | ||
![]() |
d9ccd5c6a2 | ||
![]() |
daf94bd66d | ||
![]() |
b8f73482da | ||
![]() |
fa36ab417b | ||
![]() |
bdab8a62a3 | ||
![]() |
dfd2830ceb | ||
![]() |
36a84261b3 | ||
![]() |
e5d4e91e61 | ||
![]() |
5787c7d664 | ||
![]() |
1518ea71f4 | ||
![]() |
e235ac6fd6 | ||
![]() |
69c8e6a0fd | ||
![]() |
e395e0fa1b | ||
![]() |
19fbad748c | ||
![]() |
c9023353f6 | ||
![]() |
921afb04a4 | ||
![]() |
578ca15268 | ||
![]() |
5f61efa26b | ||
![]() |
92607e2eee | ||
![]() |
78b1088b41 | ||
![]() |
51f22680f4 | ||
![]() |
5891063bff | ||
![]() |
2ad591f784 | ||
![]() |
6b12eed38b | ||
![]() |
d0df3d5a52 | ||
![]() |
ca289363c3 | ||
![]() |
999519f85c | ||
![]() |
21bc9da02e | ||
![]() |
e05cdddab0 | ||
![]() |
a07128fc2c | ||
![]() |
e69979f0d6 | ||
![]() |
ee1a5d0ac4 | ||
![]() |
8a60cbd61f | ||
![]() |
17f6291a1d | ||
![]() |
71598f7dcc | ||
![]() |
7e63561092 | ||
![]() |
54e1ffa91d | ||
![]() |
a82b05bc75 | ||
![]() |
f862e184a6 | ||
![]() |
5c19b0b58d | ||
![]() |
2fa2865f29 | ||
![]() |
9e04afc7a3 | ||
![]() |
5ad1c6c323 | ||
![]() |
3f4595f86e | ||
![]() |
66fcc9e1e2 | ||
![]() |
9e9d4f294a | ||
![]() |
d01d804e89 | ||
![]() |
eb843d94a5 | ||
![]() |
969bcd0a48 | ||
![]() |
982e194a98 | ||
![]() |
f8be01fe59 | ||
![]() |
c88bf27f3d | ||
![]() |
a283824122 | ||
![]() |
def1008e2d | ||
![]() |
ff0a25b704 | ||
![]() |
f456994b61 | ||
![]() |
9988994129 | ||
![]() |
98cf09f4e2 | ||
![]() |
6941ec099c | ||
![]() |
0c99d9b5ef | ||
![]() |
0fe812f218 | ||
![]() |
60acb71aa6 | ||
![]() |
b28bc42504 | ||
![]() |
bf859a826e | ||
![]() |
70cc16ea8e | ||
![]() |
9080fae09d | ||
![]() |
c4e7f4e442 | ||
![]() |
c5ce3af9fe | ||
![]() |
f7fe355369 | ||
![]() |
acde67213d | ||
![]() |
28a0f69a52 | ||
![]() |
9f9d2ee546 | ||
![]() |
aabde4fb05 | ||
![]() |
1f4f88ac13 | ||
![]() |
8694d6a67b | ||
![]() |
4dc0f5df8e | ||
![]() |
1c09d40851 | ||
![]() |
c9598e1612 | ||
![]() |
1c37c15fc2 | ||
![]() |
e068428601 | ||
![]() |
1a3a8a09e1 | ||
![]() |
f80fe998e8 | ||
![]() |
974680e1a4 | ||
![]() |
3b8202f207 | ||
![]() |
f6da5047c2 | ||
![]() |
27b03a7675 | ||
![]() |
edf7c36145 | ||
![]() |
4f049111b1 | ||
![]() |
0df0d16fa4 | ||
![]() |
0735388cb1 | ||
![]() |
87088d016c | ||
![]() |
a06b7b6b38 | ||
![]() |
c84d500bd5 | ||
![]() |
1ad8f0f5ff | ||
![]() |
4ea3532fe1 | ||
![]() |
a1e21546c8 | ||
![]() |
f680b4592b | ||
![]() |
b0ab43d19d | ||
![]() |
60820e413d | ||
![]() |
9e338aabbc | ||
![]() |
6a8afc4282 | ||
![]() |
54702d9092 | ||
![]() |
120f15d645 | ||
![]() |
6b306c98dc | ||
![]() |
3da5eda339 | ||
![]() |
2a701bd2b9 | ||
![]() |
ed5740c24d | ||
![]() |
d96d6831a2 | ||
![]() |
5930552cdc | ||
![]() |
84183910b7 | ||
![]() |
48df87da98 | ||
![]() |
51d4396088 | ||
![]() |
78cd4ed095 | ||
![]() |
69f60b7066 | ||
![]() |
f0169277a0 | ||
![]() |
ffdae9a05b | ||
![]() |
47c5cc7ccb | ||
![]() |
c664a65100 | ||
![]() |
65c72a7871 | ||
![]() |
76166c4aa3 | ||
![]() |
ee20de3c3d | ||
![]() |
3fca0657b5 | ||
![]() |
7d7e57d6ee | ||
![]() |
08947fd4a1 | ||
![]() |
12ae2daeba | ||
![]() |
fe77048619 | ||
![]() |
9971dbd0ad | ||
![]() |
b735567504 | ||
![]() |
ba7eff60ef | ||
![]() |
400598a0b1 | ||
![]() |
dc6f46695a | ||
![]() |
48f036d6a0 | ||
![]() |
3a317daa87 | ||
![]() |
8e67690f82 | ||
![]() |
1594c5c08f | ||
![]() |
fd4c96e4b3 | ||
![]() |
37bd317391 | ||
![]() |
2c53b4a8c5 | ||
![]() |
5040df2416 | ||
![]() |
8bc4c97215 | ||
![]() |
a435d4ec18 | ||
![]() |
bed6fa7eca | ||
![]() |
dcd032856b | ||
![]() |
bf95bc7078 | ||
![]() |
ab2a982bf0 | ||
![]() |
5cd1f77e2d | ||
![]() |
a17a1da3b8 | ||
![]() |
ecbce38f52 | ||
![]() |
0693bb7a61 | ||
![]() |
7f28047f82 | ||
![]() |
d1fffc59cf | ||
![]() |
8e799a678f | ||
![]() |
a3f1733fd4 | ||
![]() |
ea23c3f63d | ||
![]() |
7d51ae1f07 | ||
![]() |
469604dd28 | ||
![]() |
3f77bc972b | ||
![]() |
59263eae9e | ||
![]() |
251967435d | ||
![]() |
a93e50cc54 | ||
![]() |
54bdabbf25 | ||
![]() |
5b7445fe31 | ||
![]() |
09ee6f2097 | ||
![]() |
f240fabe77 | ||
![]() |
bf6e493f89 | ||
![]() |
75a3b82d2c | ||
![]() |
9c8b442a46 | ||
![]() |
1f3d8b492b | ||
![]() |
5013533ad8 | ||
![]() |
adc4b956dd | ||
![]() |
219d1989d9 | ||
![]() |
fa7f986319 | ||
![]() |
ce75bc152a | ||
![]() |
289e84b75d | ||
![]() |
4da5a40419 | ||
![]() |
7bf0b42afd | ||
![]() |
5488b1d62e | ||
![]() |
ef22f08115 | ||
![]() |
e8c43f5979 | ||
![]() |
e9bbbaf446 | ||
![]() |
b932558ad6 | ||
![]() |
376c64c892 | ||
![]() |
548ed6e0f5 | ||
![]() |
df916f1e4a | ||
![]() |
847aef5b02 | ||
![]() |
17654139ba | ||
![]() |
e1974d9f81 | ||
![]() |
fcff502d1a | ||
![]() |
0e030dcb08 | ||
![]() |
aa4e385b6b | ||
![]() |
c9488c0384 | ||
![]() |
bcf879b801 | ||
![]() |
84072192b9 | ||
![]() |
d786c6927f | ||
![]() |
2a0113408c | ||
![]() |
967d0dd730 | ||
![]() |
af36549c7e | ||
![]() |
6e2ce89d21 | ||
![]() |
2d5fed3cd9 | ||
![]() |
ba4eef0db9 | ||
![]() |
872f7bdcbe | ||
![]() |
8f6ca03240 | ||
![]() |
35245078c9 | ||
![]() |
fd8a55c57c | ||
![]() |
8fce658dc1 | ||
![]() |
df963fc035 | ||
![]() |
ffab4a8c02 | ||
![]() |
ebd1910bb8 | ||
![]() |
10592ed243 | ||
![]() |
3da1da968e | ||
![]() |
bb2196900b | ||
![]() |
8ef4460f00 | ||
![]() |
a1bd202b51 | ||
![]() |
3faf5cd404 | ||
![]() |
d35abc991e | ||
![]() |
7a29340efc | ||
![]() |
cf6a346749 | ||
![]() |
9f047b7dcf | ||
![]() |
7a50336908 | ||
![]() |
89efc6cb0a | ||
![]() |
5b3b72b9aa | ||
![]() |
a6d749a9c8 | ||
![]() |
a570a266e5 | ||
![]() |
0f5f14defe | ||
![]() |
ab9a752286 | ||
![]() |
8f06bf21b0 | ||
![]() |
eaa099f9cc | ||
![]() |
0642ceba40 | ||
![]() |
0869fa55bb | ||
![]() |
80b8f7b4d8 | ||
![]() |
7c18b1d921 | ||
![]() |
eec99dc76b | ||
![]() |
6663a47d4a | ||
![]() |
c654c3f5de | ||
![]() |
5e48064497 | ||
![]() |
9c8aba3dcd | ||
![]() |
c9fe95c00c | ||
![]() |
9bfa7b01b5 | ||
![]() |
bbf646439a | ||
![]() |
a710d5949e | ||
![]() |
4abb3d2249 | ||
![]() |
6cdc640977 | ||
![]() |
aa662910b2 | ||
![]() |
0e3faf45b1 | ||
![]() |
8b25b0bbf3 | ||
![]() |
dad9475005 | ||
![]() |
00d3ba11d2 | ||
![]() |
c7333caf7d | ||
![]() |
0630b65713 | ||
![]() |
69f9b05cbc | ||
![]() |
74f6d1a85e | ||
![]() |
e0bf7d011b | ||
![]() |
12011c7208 | ||
![]() |
280f0ca27f | ||
![]() |
6ec0af3182 | ||
![]() |
e99c40bc06 | ||
![]() |
e181381bd3 | ||
![]() |
6fa0e814de | ||
![]() |
68191d2b47 | ||
![]() |
81f7587958 | ||
![]() |
d5e2acfd5b | ||
![]() |
663243264b | ||
![]() |
03ca00748c | ||
![]() |
cbb1a4bc44 | ||
![]() |
21f3ab23d3 | ||
![]() |
18944d5ed8 | ||
![]() |
5c6e5f7361 | ||
![]() |
bd72aebd98 | ||
![]() |
0278aea4f7 | ||
![]() |
3c01004641 | ||
![]() |
b8213569e5 | ||
![]() |
4d27f9d741 | ||
![]() |
3b56abf090 | ||
![]() |
590ba6de1b | ||
![]() |
4aa215e091 | ||
![]() |
de175bff11 | ||
![]() |
a6bc8d7105 | ||
![]() |
e48e7caef1 | ||
![]() |
015cdad2df | ||
![]() |
ef6cf5fae1 | ||
![]() |
797152da89 | ||
![]() |
316ff45859 | ||
![]() |
e0ac9ba424 | ||
![]() |
09ca430b88 | ||
![]() |
dda1dab6f3 | ||
![]() |
fbf411c096 | ||
![]() |
a3de3e221c | ||
![]() |
4b0c6f2ca5 | ||
![]() |
c32dc7ecd2 | ||
![]() |
d6e14ca88c | ||
![]() |
ebfc885745 | ||
![]() |
89d7b29b12 | ||
![]() |
6f5d20fd49 | ||
![]() |
15bd0b2675 | ||
![]() |
9132019cb3 | ||
![]() |
a87cbfd7a3 | ||
![]() |
d2c6c8b734 | ||
![]() |
6c5be98173 | ||
![]() |
d51838caf9 | ||
![]() |
a61dd0ab87 | ||
![]() |
d15b1f3c1e | ||
![]() |
40d38b3961 | ||
![]() |
addc318f29 | ||
![]() |
ad124c9d95 | ||
![]() |
4d48395c19 | ||
![]() |
9eb0aa0de4 | ||
![]() |
452b7e0e54 | ||
![]() |
e10a16bc0d | ||
![]() |
b26da26192 | ||
![]() |
be55a26a94 | ||
![]() |
22d4b22c53 | ||
![]() |
00a86df321 | ||
![]() |
b03cdba607 | ||
![]() |
cce90e6ddc | ||
![]() |
b6fc0e4db7 | ||
![]() |
50ed1f0a64 | ||
![]() |
f40b780b95 | ||
![]() |
0f37364586 | ||
![]() |
8cfff0e0bd | ||
![]() |
e61963454c | ||
![]() |
eac698d846 | ||
![]() |
b536f98d94 | ||
![]() |
469f94bddf | ||
![]() |
7af0c64c30 | ||
![]() |
8e6808ea61 | ||
![]() |
153c0e2fc5 | ||
![]() |
b18e946869 | ||
![]() |
e3a341c88d | ||
![]() |
7671266633 | ||
![]() |
1e1f02c764 | ||
![]() |
d3ec41d73f | ||
![]() |
9982b1af34 | ||
![]() |
133cce8bf8 | ||
![]() |
bb78fc165b | ||
![]() |
adfc235865 | ||
![]() |
0392d60352 | ||
![]() |
53ea662ef7 | ||
![]() |
7a846fa458 | ||
![]() |
273d7ce5d5 | ||
![]() |
c378bf3842 | ||
![]() |
e4de07d773 | ||
![]() |
6dfb05e242 | ||
![]() |
3e9d98233c | ||
![]() |
8536634fa4 | ||
![]() |
23b17b2635 | ||
![]() |
afcf49b25d | ||
![]() |
c54ad93db6 | ||
![]() |
8d99a97a9e | ||
![]() |
66003832b2 | ||
![]() |
32b7af5834 | ||
![]() |
b4f61e48de | ||
![]() |
97e76a9cf2 | ||
![]() |
52bfac98be | ||
![]() |
0ebe4b4f0a | ||
![]() |
1561525d47 | ||
![]() |
d9c9e74cc8 | ||
![]() |
e3193c54f4 | ||
![]() |
90b0849308 | ||
![]() |
01e3cc1374 | ||
![]() |
e5294908ec | ||
![]() |
3ed15335fe | ||
![]() |
094fbb4ec8 | ||
![]() |
190f1f0cb5 | ||
![]() |
d908700a9c | ||
![]() |
b669f81926 | ||
![]() |
76c22cc896 | ||
![]() |
d0d78d2953 | ||
![]() |
8b5e26759f | ||
![]() |
e4eb6d6fdd | ||
![]() |
1a0ce0df7c | ||
![]() |
c95f0fce88 | ||
![]() |
2abd23b344 | ||
![]() |
ccb1bc521c | ||
![]() |
26163c62da | ||
![]() |
8818d45d05 | ||
![]() |
46941fe25a | ||
![]() |
44ffc842d3 | ||
![]() |
4641b8b590 | ||
![]() |
148a5eebc2 | ||
![]() |
523c1fadbc | ||
![]() |
820652bd5e | ||
![]() |
246e3b25a4 | ||
![]() |
fe0e5a9101 | ||
![]() |
d9a6bb5b2d | ||
![]() |
c9f632c1b8 | ||
![]() |
ab69ab8f80 | ||
![]() |
297a95986c | ||
![]() |
7c1bdbfa68 | ||
![]() |
e712e8204d | ||
![]() |
8e28e1a630 | ||
![]() |
6d1742761c | ||
![]() |
1c84a32a3c | ||
![]() |
b07824489b | ||
![]() |
619a8d39be | ||
![]() |
9b8195d666 | ||
![]() |
22d04ad729 | ||
![]() |
bac3e38318 | ||
![]() |
1d8e0fc3d7 | ||
![]() |
086d1633df | ||
![]() |
b260942e22 | ||
![]() |
d7bf8b24fd | ||
![]() |
0ded78eb06 | ||
![]() |
c2d484a725 | ||
![]() |
7ca3a9e377 | ||
![]() |
2bd548fe41 | ||
![]() |
d9d3076e2e | ||
![]() |
b8254fdd36 | ||
![]() |
562274a161 | ||
![]() |
19f96241e5 | ||
![]() |
d735a1fa91 | ||
![]() |
40baf2627c | ||
![]() |
5880636b3a | ||
![]() |
531f569f3a | ||
![]() |
00fcd74552 | ||
![]() |
f594a0b5c0 | ||
![]() |
94779133ec | ||
![]() |
a2b1b38e0c | ||
![]() |
cd3823f180 | ||
![]() |
8451a71af7 | ||
![]() |
455a2c005b | ||
![]() |
4ad29e0ca5 | ||
![]() |
52b19fc137 | ||
![]() |
7958417f96 | ||
![]() |
744618ac25 | ||
![]() |
07296f19a6 | ||
![]() |
db271db087 | ||
![]() |
d30a24e768 | ||
![]() |
2b359ea451 | ||
![]() |
8af3faea16 | ||
![]() |
0c5716fb81 | ||
![]() |
d19a484cb0 | ||
![]() |
38bf9bebc8 | ||
![]() |
d79b89f79b | ||
![]() |
7855d657fd | ||
![]() |
67a52ae02c | ||
![]() |
4b14c1e2f8 | ||
![]() |
fc908f9d4a | ||
![]() |
77bc3ced5d | ||
![]() |
34dc835631 | ||
![]() |
81b279be5f | ||
![]() |
828c7bea19 | ||
![]() |
b4a49636d7 | ||
![]() |
1caa6d9aa5 | ||
![]() |
ecc6df3301 | ||
![]() |
0310e89c39 | ||
![]() |
252af87d9b | ||
![]() |
6732a69c2b | ||
![]() |
3868f8e30f | ||
![]() |
937408f3f6 | ||
![]() |
e53a95e297 | ||
![]() |
b74153290b | ||
![]() |
0021c3522f | ||
![]() |
367ad74fba | ||
![]() |
0abf17cb6b | ||
![]() |
be76e751e7 | ||
![]() |
f8a893e6de | ||
![]() |
89dfc86bfb | ||
![]() |
bc894f8beb | ||
![]() |
20120ecf27 | ||
![]() |
a9c344d385 | ||
![]() |
3cbfae7a8f | ||
![]() |
90876532b9 | ||
![]() |
641d4d0f87 | ||
![]() |
7c12ad72b8 | ||
![]() |
66e0dde1ed | ||
![]() |
5a4877a141 | ||
![]() |
f9b0f8c436 | ||
![]() |
6552ec5f02 | ||
![]() |
337b1aec53 | ||
![]() |
33fff9e19b | ||
![]() |
2cdaf4850d | ||
![]() |
561da4b6ef | ||
![]() |
3a8767ea5f | ||
![]() |
4947b4c9a3 | ||
![]() |
0f140b706e | ||
![]() |
b4812e8182 | ||
![]() |
7d94cad876 | ||
![]() |
866e6987a2 | ||
![]() |
524f34a461 | ||
![]() |
949d93d546 | ||
![]() |
bd638022df | ||
![]() |
26e6d704f5 | ||
![]() |
1be8b20b64 | ||
![]() |
c8150ccdcc | ||
![]() |
77bac52b07 | ||
![]() |
3566289cb5 | ||
![]() |
0b34cc3033 | ||
![]() |
fdb71c6b0e | ||
![]() |
ffea12305d | ||
![]() |
e90f20e1d4 | ||
![]() |
f58dbd71b6 | ||
![]() |
b4c7a64631 | ||
![]() |
e496655953 | ||
![]() |
fea0e9b864 | ||
![]() |
7a7fb01928 | ||
![]() |
d4575841df | ||
![]() |
d7e634fcfd | ||
![]() |
b1e3df783d | ||
![]() |
80dfcf5eaa | ||
![]() |
c0d66ee649 | ||
![]() |
93e8f6bbd6 | ||
![]() |
cdbdaac913 | ||
![]() |
9bec7a88fe | ||
![]() |
50342e945d | ||
![]() |
c087493f38 | ||
![]() |
df3c554f27 | ||
![]() |
e81994a748 | ||
![]() |
0d1d75588d | ||
![]() |
5ddedbbd50 | ||
![]() |
fcc823c33a | ||
![]() |
1a7f9d9ee0 | ||
![]() |
1a2b527070 | ||
![]() |
39a357fa57 | ||
![]() |
d2c50df0ab | ||
![]() |
5dc30c44ff | ||
![]() |
01d705a3b5 | ||
![]() |
fff86fd068 | ||
![]() |
0fb9b51cc9 | ||
![]() |
bda91cd9d5 | ||
![]() |
0343430611 | ||
![]() |
1df7da7836 | ||
![]() |
dc018561a0 | ||
![]() |
520b41215c | ||
![]() |
3537680e45 | ||
![]() |
d236035b72 | ||
![]() |
e2e742aba2 | ||
![]() |
3d8fc203f9 | ||
![]() |
7b99f227cd | ||
![]() |
1f68a45417 | ||
![]() |
cc1619ab5d | ||
![]() |
5c30c83341 | ||
![]() |
d788ac4ad6 | ||
![]() |
826802df21 | ||
![]() |
3b4f96ab2f | ||
![]() |
5a59eb6902 | ||
![]() |
64293af6f7 | ||
![]() |
8afd08a3d9 | ||
![]() |
6a21a6fdb1 | ||
![]() |
3e53787a62 | ||
![]() |
9823353d8b | ||
![]() |
d189221f10 | ||
![]() |
271fa03cfc | ||
![]() |
1fc2299801 | ||
![]() |
7df278f7ed | ||
![]() |
2f68f77f87 | ||
![]() |
49a3974b34 | ||
![]() |
7a00f3c67c | ||
![]() |
e079732686 | ||
![]() |
71f2680eef | ||
![]() |
808a376c65 | ||
![]() |
eff7cfc5fe | ||
![]() |
bbb6ba4078 | ||
![]() |
c10131aca8 | ||
![]() |
49159a6d5c | ||
![]() |
d80ba6b058 | ||
![]() |
f2e188a86c | ||
![]() |
2f03446c37 | ||
![]() |
039b7ca85c | ||
![]() |
507b27dbda | ||
![]() |
78f54895e2 | ||
![]() |
4ca172d40f | ||
![]() |
81774ad352 | ||
![]() |
ad32b31904 | ||
![]() |
414bafde9c | ||
![]() |
be1d8ec408 | ||
![]() |
7f4effe4b6 | ||
![]() |
7ca3396c8b | ||
![]() |
853c204746 | ||
![]() |
a22c5085d9 | ||
![]() |
1021a78f46 | ||
![]() |
637747ab53 | ||
![]() |
15b8385e49 | ||
![]() |
27d3b903d3 | ||
![]() |
70b9f66f4c | ||
![]() |
019779e425 | ||
![]() |
951ff28688 | ||
![]() |
d394702606 | ||
![]() |
6f88c5d2d1 | ||
![]() |
53332937c2 | ||
![]() |
a79678a0cb | ||
![]() |
f16b0526af | ||
![]() |
808e186dae | ||
![]() |
0a39cdef7c | ||
![]() |
8a042cb110 | ||
![]() |
2942ab3c08 | ||
![]() |
1d269e9203 | ||
![]() |
def0ed7a52 | ||
![]() |
9d7c33228f | ||
![]() |
54d5a747ba | ||
![]() |
3b4c2f6d76 | ||
![]() |
7968b79039 | ||
![]() |
4c02f76187 | ||
![]() |
ec90027c5e | ||
![]() |
0588dbfd64 | ||
![]() |
293c6b1de2 | ||
![]() |
3f2dd0a60c | ||
![]() |
89404cc649 | ||
![]() |
2ade4030c8 | ||
![]() |
7c81063b90 | ||
![]() |
786903d57c | ||
![]() |
395cc0a19d | ||
![]() |
cc2c9044f3 | ||
![]() |
d816bca7e0 | ||
![]() |
87bcd7ccfb | ||
![]() |
a9f136ae8a | ||
![]() |
ef3b61ded7 | ||
![]() |
c9d8623e4a | ||
![]() |
13923b84f2 | ||
![]() |
05df28ae72 | ||
![]() |
f75e74b678 | ||
![]() |
123cbfa644 | ||
![]() |
5cc13cf77f | ||
![]() |
56275abbaf | ||
![]() |
6ccbdcbdfa | ||
![]() |
ebbec7f0b2 | ||
![]() |
a7d0719877 | ||
![]() |
1831e3e2fa | ||
![]() |
fc2c119b94 | ||
![]() |
163b276f7e | ||
![]() |
72ab38b9af | ||
![]() |
991437ab2f | ||
![]() |
57679238de | ||
![]() |
d800c20905 | ||
![]() |
2550b2fe41 | ||
![]() |
8a72d253aa | ||
![]() |
71558dca71 | ||
![]() |
6dbc5bf6db | ||
![]() |
98448b9572 | ||
![]() |
79bd7794a5 | ||
![]() |
3ab70ff9a8 | ||
![]() |
e1894d5fb4 | ||
![]() |
58646d1d08 | ||
![]() |
2132f44812 | ||
![]() |
62f56d7949 | ||
![]() |
33ac98c2b3 | ||
![]() |
8f962816ea | ||
![]() |
e95363adc8 | ||
![]() |
6250e9dfb2 | ||
![]() |
0f57148418 | ||
![]() |
9bd02871e2 | ||
![]() |
f1fbe78f93 | ||
![]() |
02c429993c | ||
![]() |
beab17074d | ||
![]() |
f608d6a8ce | ||
![]() |
16c2ff8449 | ||
![]() |
5c61ca688f | ||
![]() |
095a5f38f3 | ||
![]() |
696757003b | ||
![]() |
9300004cbd | ||
![]() |
9c13275aca | ||
![]() |
5c6b4736be | ||
![]() |
c566cc32fe | ||
![]() |
8dc0e6b4bf | ||
![]() |
f8f3f8abcb | ||
![]() |
22414da6a8 | ||
![]() |
150c94c0e9 | ||
![]() |
d845853643 | ||
![]() |
ffbf4a703b | ||
![]() |
649378b695 | ||
![]() |
8aa964bc78 | ||
![]() |
6c89cd4a26 | ||
![]() |
2ba4ffb4f8 | ||
![]() |
38753ab8b0 | ||
![]() |
9da8a28345 | ||
![]() |
a4e79d4738 | ||
![]() |
44cff2b498 | ||
![]() |
5fe326aad8 | ||
![]() |
b4a5c1504c | ||
![]() |
270254c760 | ||
![]() |
a71f24a1fa | ||
![]() |
90bce607b0 | ||
![]() |
1540d6b411 | ||
![]() |
b51af13bb0 | ||
![]() |
3eaeb4a0a1 | ||
![]() |
aa6a03b5f9 | ||
![]() |
3ca5b24e25 | ||
![]() |
b074bf0690 | ||
![]() |
3130c13c30 | ||
![]() |
f0b60391a8 | ||
![]() |
a4086122aa | ||
![]() |
fe9ee85688 | ||
![]() |
2cbe662019 | ||
![]() |
be54733b13 | ||
![]() |
053bc28e68 | ||
![]() |
f38bea67ab | ||
![]() |
8eec660d03 | ||
![]() |
79e731e89c | ||
![]() |
4f49ff3290 | ||
![]() |
0dac5522fe | ||
![]() |
a35ef0e735 | ||
![]() |
c5515fc3ae | ||
![]() |
2d40259c6e | ||
![]() |
388e69cc38 | ||
![]() |
d2df699ced | ||
![]() |
be244cfe5a | ||
![]() |
6ccf5053cd | ||
![]() |
0f71de410b | ||
![]() |
6b8f3b750e | ||
![]() |
eebee9fb97 | ||
![]() |
21e0496d6f | ||
![]() |
9abc7f1a82 | ||
![]() |
fa8354b133 | ||
![]() |
b51c205538 | ||
![]() |
73842430ea | ||
![]() |
2b6f2980ce | ||
![]() |
3d9a40beb9 | ||
![]() |
2365fa9fbc | ||
![]() |
0890180889 | ||
![]() |
6b6339867d | ||
![]() |
69405bda0f | ||
![]() |
0f76a4814d | ||
![]() |
81a02834de | ||
![]() |
fa4315808b | ||
![]() |
8acdb00570 | ||
![]() |
d4a45ca006 | ||
![]() |
d5225be720 | ||
![]() |
8f7302f0ee | ||
![]() |
446d198eca | ||
![]() |
38111960f8 | ||
![]() |
b83a9d94c6 | ||
![]() |
a536c708ca | ||
![]() |
53de112eb8 | ||
![]() |
6662e0fa09 | ||
![]() |
e90f188c63 | ||
![]() |
e039ee1692 | ||
![]() |
68fc9fb635 | ||
![]() |
940a2ebc3f | ||
![]() |
7f3d9fd9e7 | ||
![]() |
5f552bb749 | ||
![]() |
a233c6be8c | ||
![]() |
0f3120e831 | ||
![]() |
9c93a21421 | ||
![]() |
8201b175bb | ||
![]() |
78ee43347e | ||
![]() |
7b23e4de11 | ||
![]() |
7a7bd01717 | ||
![]() |
7bb113d1f0 | ||
![]() |
db5d318c74 | ||
![]() |
139e7a8b25 | ||
![]() |
390afc7e63 | ||
![]() |
8fcf251916 | ||
![]() |
cad9a299c3 | ||
![]() |
3e53c9e338 | ||
![]() |
8386b1b3e8 | ||
![]() |
6c44ccf319 | ||
![]() |
f0b96a1538 | ||
![]() |
b490d91572 | ||
![]() |
48bf0504e8 | ||
![]() |
d15ee91ea0 | ||
![]() |
af6fd8796d | ||
![]() |
b7a5a878d6 | ||
![]() |
68100bda86 | ||
![]() |
a7d652ddca | ||
![]() |
b8f54de530 | ||
![]() |
8f86e40b5d | ||
![]() |
aced6e170f | ||
![]() |
988b7caf3d | ||
![]() |
abb71a0feb | ||
![]() |
26e1a1c58d | ||
![]() |
4b1ff82756 | ||
![]() |
f668a5c8f9 | ||
![]() |
7f1a5eea20 | ||
![]() |
b24f8e27fa | ||
![]() |
aae3ed0872 | ||
![]() |
6de445eaa1 | ||
![]() |
18b4925dd4 | ||
![]() |
7dc4bb728b | ||
![]() |
61efc6b834 | ||
![]() |
4cc687e2cd | ||
![]() |
ff1795fe96 | ||
![]() |
92e49efdc6 | ||
![]() |
f7a19e8b14 | ||
![]() |
1fa8d217f9 | ||
![]() |
09ec1ad864 | ||
![]() |
0eb1c7d419 | ||
![]() |
9824e18dbf | ||
![]() |
b95306348d | ||
![]() |
de43cc6cd5 | ||
![]() |
de435f8e7b | ||
![]() |
f2e006fde9 | ||
![]() |
5f7c3a41f1 | ||
![]() |
3fbe8c0b6c | ||
![]() |
3933f77968 | ||
![]() |
68fc8cd6ed | ||
![]() |
47fbae7e0d | ||
![]() |
82a4ffdc12 | ||
![]() |
6386f178d4 | ||
![]() |
102d226269 | ||
![]() |
b399247652 | ||
![]() |
263db42602 | ||
![]() |
8136387a75 | ||
![]() |
e65991aa03 | ||
![]() |
a7846a64d0 | ||
![]() |
5dfc6a663f | ||
![]() |
0c45a24f48 | ||
![]() |
762d5de441 | ||
![]() |
5bfb55a27d | ||
![]() |
87bb2f38db | ||
![]() |
fb1575d875 | ||
![]() |
c153bef170 | ||
![]() |
2fcf6c80e9 | ||
![]() |
2e6e71e3b6 | ||
![]() |
004b946716 | ||
![]() |
6400722712 | ||
![]() |
d9ec28459e | ||
![]() |
407c1d24af | ||
![]() |
de6d8d1153 | ||
![]() |
3eb10fc05b | ||
![]() |
1ab6f77f95 | ||
![]() |
c1b15b59db | ||
![]() |
3dae5a6d47 | ||
![]() |
ec3e2ab870 | ||
![]() |
a2810d65de | ||
![]() |
1713c04834 | ||
![]() |
dab2646054 | ||
![]() |
03bc0d2f22 | ||
![]() |
ad0485d651 | ||
![]() |
7764c4bdd7 | ||
![]() |
46bbbccdc9 | ||
![]() |
ee28417a4c | ||
![]() |
5332ab9cac | ||
![]() |
746ac1eec7 | ||
![]() |
13c763b0e8 | ||
![]() |
8b67c4fdd1 | ||
![]() |
c3e658d46a | ||
![]() |
5d0419075b | ||
![]() |
ebded1a73b | ||
![]() |
cf879a5c23 | ||
![]() |
99ed27ca61 | ||
![]() |
4aa3e5b34d | ||
![]() |
303e6066e2 | ||
![]() |
861cd15240 | ||
![]() |
d695ddb91a | ||
![]() |
7abb2edb2f | ||
![]() |
dfe8abd496 | ||
![]() |
61b384ee56 | ||
![]() |
d71a890430 | ||
![]() |
2c85a85fff | ||
![]() |
ce6074530f | ||
![]() |
e20228153c | ||
![]() |
e431170435 | ||
![]() |
c671d1e389 | ||
![]() |
31a5e70b26 | ||
![]() |
0c68c72b29 | ||
![]() |
2b158fdf57 | ||
![]() |
dd005b31a4 | ||
![]() |
0b467cc149 | ||
![]() |
46e2fdca00 | ||
![]() |
983b06266b | ||
![]() |
cb8708d2d9 | ||
![]() |
adbec11c04 | ||
![]() |
404f00c02b | ||
![]() |
5d346205fc | ||
![]() |
db3f1a7c09 | ||
![]() |
d2599f1f9a | ||
![]() |
ed88aafdc1 | ||
![]() |
d94deed341 | ||
![]() |
4b49d87a81 | ||
![]() |
4a6281ebf6 | ||
![]() |
332443fe81 | ||
![]() |
96c784704a | ||
![]() |
b0d10919d7 | ||
![]() |
b0e4681b5f | ||
![]() |
2958f6ea7f | ||
![]() |
4d46f94975 | ||
![]() |
4cc7e9ca98 | ||
![]() |
7688a11ef9 | ||
![]() |
80b182cc54 | ||
![]() |
b6936e7ca4 | ||
![]() |
1590326fc1 | ||
![]() |
1a1eb3264f | ||
![]() |
3d80a8aa39 | ||
![]() |
6cca084e05 | ||
![]() |
1c2c496f7e | ||
![]() |
8ab60be68b | ||
![]() |
f1fe363083 | ||
![]() |
db619790be | ||
![]() |
608749ce1a | ||
![]() |
1135744520 | ||
![]() |
c8d616e657 | ||
![]() |
3f8a6e04c8 | ||
![]() |
851cd8e037 | ||
![]() |
7b3dae8bea | ||
![]() |
e04ec0a00b | ||
![]() |
0a61c26cc1 | ||
![]() |
ff35c58787 | ||
![]() |
0a464fa93a | ||
![]() |
a9958e88d0 | ||
![]() |
d3eb5907a4 | ||
![]() |
a2017cc4c7 | ||
![]() |
87124fdaf4 | ||
![]() |
394c2b54ce | ||
![]() |
7117f1ad62 | ||
![]() |
713e267c16 | ||
![]() |
3932ec21f5 | ||
![]() |
76dc50b052 | ||
![]() |
73749aa34c | ||
![]() |
897932f954 | ||
![]() |
5a2b469e8a | ||
![]() |
ad38e6c15e | ||
![]() |
f5c6fc13a8 | ||
![]() |
7c8625821a | ||
![]() |
8a696ad088 | ||
![]() |
3c1ca8b70f | ||
![]() |
87b0cee53a | ||
![]() |
a56aa7e308 | ||
![]() |
98220c5e74 | ||
![]() |
964c886fb6 | ||
![]() |
f6536aa1d2 | ||
![]() |
ec1c861b13 | ||
![]() |
ae07ed9445 | ||
![]() |
82b94db408 | ||
![]() |
54d716e4b6 | ||
![]() |
a0330465dd | ||
![]() |
af026cfe66 | ||
![]() |
b7d5f6655d | ||
![]() |
964dedba0f | ||
![]() |
f13537e812 | ||
![]() |
037f1bf09f | ||
![]() |
9ee4212060 | ||
![]() |
e3c60cb4d8 | ||
![]() |
6fa325065e | ||
![]() |
cc88c99c45 | ||
![]() |
9d36ed6b1b | ||
![]() |
a6b8843c5c | ||
![]() |
9cf4dbd710 | ||
![]() |
589335f665 | ||
![]() |
1a04cac47c | ||
![]() |
417c6d09bf | ||
![]() |
c36cb4a76a | ||
![]() |
e65b786b46 | ||
![]() |
713f1486c3 | ||
![]() |
a0d3447202 | ||
![]() |
286999599a | ||
![]() |
9b6fae2523 | ||
![]() |
c250279b46 | ||
![]() |
f687df335e | ||
![]() |
aeec7866b4 | ||
![]() |
b49c47516e | ||
![]() |
3bf854c6c3 | ||
![]() |
b55edb8ae9 | ||
![]() |
78bc66668c | ||
![]() |
f965abe7f1 | ||
![]() |
509cb2471d | ||
![]() |
3c273d817b | ||
![]() |
21817ca97a | ||
![]() |
b31e712d2c | ||
![]() |
8f1ee11ff2 | ||
![]() |
0cb80ace3f | ||
![]() |
295a2bb8b8 | ||
![]() |
dd6757be5b | ||
![]() |
e90e4b27a3 | ||
![]() |
2932ca6c2b | ||
![]() |
06a685fc31 | ||
![]() |
e06c20d2f6 | ||
![]() |
e5527cf825 | ||
![]() |
6864af1b2f | ||
![]() |
87ff59bfa7 | ||
![]() |
ecd407d924 | ||
![]() |
ce55e7eed5 | ||
![]() |
f9b3fed403 | ||
![]() |
484f77bffc | ||
![]() |
814e697675 | ||
![]() |
e469c04125 | ||
![]() |
a33e2cbd88 | ||
![]() |
4ecccd67bd | ||
![]() |
8af25b4c67 | ||
![]() |
d6c30caf1b | ||
![]() |
7025efa6f8 | ||
![]() |
d0877eb6bc | ||
![]() |
87c62b4319 | ||
![]() |
9d3382d773 | ||
![]() |
5333e92c42 | ||
![]() |
f2c6d0a6b9 | ||
![]() |
a7e217152b | ||
![]() |
91c993da13 | ||
![]() |
5e7423bdce | ||
![]() |
ba48e15f5f | ||
![]() |
4e407fb0b9 | ||
![]() |
5d1963e0ec | ||
![]() |
c9bb6b25e9 | ||
![]() |
3bf433992e | ||
![]() |
a3a82b9fe7 | ||
![]() |
513f04d41b | ||
![]() |
5b318a8aaf | ||
![]() |
c75de7a096 | ||
![]() |
2cd5140600 | ||
![]() |
eaca3d6cc8 | ||
![]() |
2ce89bf24b | ||
![]() |
97cbd76e8e | ||
![]() |
683bb7eb41 | ||
![]() |
8b0fd0af85 | ||
![]() |
80d177aa92 | ||
![]() |
dea4ccbe58 | ||
![]() |
d156d53307 | ||
![]() |
e1c6b720a4 | ||
![]() |
4033e5d966 | ||
![]() |
b677b9d46d | ||
![]() |
91494aaf1c | ||
![]() |
f1fd0521a3 | ||
![]() |
21e96c32ce | ||
![]() |
96db1ed6db | ||
![]() |
c996f4aab5 | ||
![]() |
eaf803fcc0 | ||
![]() |
b7e1e26c14 | ||
![]() |
f84e994b50 | ||
![]() |
5473afac23 | ||
![]() |
9762d74256 | ||
![]() |
abedfedac6 | ||
![]() |
cca5e22680 | ||
![]() |
69c406c3d6 | ||
![]() |
209428bdc7 | ||
![]() |
853811d387 | ||
![]() |
bb9711639c | ||
![]() |
8f571d5800 | ||
![]() |
f61bd68ad2 | ||
![]() |
a0f5101ac5 | ||
![]() |
6a14f85d22 | ||
![]() |
1e678008a2 | ||
![]() |
2bb183d675 | ||
![]() |
2a5c5e5d69 | ||
![]() |
0a51ad3725 | ||
![]() |
031926efb7 | ||
![]() |
ce8013124b | ||
![]() |
b40ab8a551 | ||
![]() |
b6d1ad3418 | ||
![]() |
3556c66435 | ||
![]() |
40813820da | ||
![]() |
aa673cc361 | ||
![]() |
b4269b9001 | ||
![]() |
dfc9119bbc | ||
![]() |
fea803d4ce | ||
![]() |
7507f72ac0 | ||
![]() |
2eb131fb0b | ||
![]() |
a9f9e0263e | ||
![]() |
200a721a61 | ||
![]() |
45284a3845 | ||
![]() |
32c56d718c | ||
![]() |
1f709f9350 | ||
![]() |
656f046efe | ||
![]() |
ddf4afdd78 | ||
![]() |
e699756093 | ||
![]() |
e180074022 | ||
![]() |
2010c3a5c7 | ||
![]() |
c10c8ac7a7 | ||
![]() |
40b80a21dd | ||
![]() |
5ef7690578 | ||
![]() |
7abae9d69e | ||
![]() |
16d125aa20 | ||
![]() |
006eb1b1e7 | ||
![]() |
12bdf7541f | ||
![]() |
b5abda5054 | ||
![]() |
baf2bc9527 | ||
![]() |
62db2aea7a | ||
![]() |
3e8402b686 | ||
![]() |
a3850551c5 | ||
![]() |
9147e46856 | ||
![]() |
e200b6080b | ||
![]() |
8391e6fc2f | ||
![]() |
fbaea7e419 | ||
![]() |
2d8687a853 | ||
![]() |
f8b6b05a25 | ||
![]() |
3f2334a3ad | ||
![]() |
d7cdfb2b5e | ||
![]() |
9bd7b5a900 | ||
![]() |
e6fad72a2a | ||
![]() |
eb8f8ee1da | ||
![]() |
7bec1c2025 | ||
![]() |
2408524660 | ||
![]() |
fd99c13ee7 | ||
![]() |
7dc45bb438 | ||
![]() |
a8ea2e6085 | ||
![]() |
7b18c40781 | ||
![]() |
923b049b85 | ||
![]() |
59b36847f6 | ||
![]() |
a78f8586f4 | ||
![]() |
14395263aa | ||
![]() |
60e96a73eb | ||
![]() |
35107c20cb | ||
![]() |
00d9b0ad55 | ||
![]() |
00d8f60a02 | ||
![]() |
0c6fe6f77c | ||
![]() |
2656f9e641 | ||
![]() |
da609c1747 | ||
![]() |
41752dcac5 | ||
![]() |
6a52500bd3 | ||
![]() |
ebd9419a94 | ||
![]() |
dac08aa448 | ||
![]() |
c60c9fbd30 | ||
![]() |
6f5671e41f | ||
![]() |
ad79b576a5 | ||
![]() |
e2b6884d46 | ||
![]() |
3e91ecb8d5 | ||
![]() |
f7678338bc | ||
![]() |
5462f035f8 | ||
![]() |
12edc9279c | ||
![]() |
b1ef2d237d | ||
![]() |
01b8628504 | ||
![]() |
3bb11e11c3 | ||
![]() |
bfae6d975c | ||
![]() |
aa4721428f | ||
![]() |
20cb086c76 | ||
![]() |
92de61442a | ||
![]() |
173242e2bb | ||
![]() |
1c1d4697e5 | ||
![]() |
d011bb9497 | ||
![]() |
e43f9729a7 | ||
![]() |
baafa12967 | ||
![]() |
c3e33fa7f3 | ||
![]() |
daf6d6aea8 | ||
![]() |
02c9ec67c0 | ||
![]() |
63d25a11ae | ||
![]() |
a4e703f2fd | ||
![]() |
360079d15e | ||
![]() |
1473675094 | ||
![]() |
a6e03680eb | ||
![]() |
c99d3d37db | ||
![]() |
b2fa05fa22 | ||
![]() |
77070be769 | ||
![]() |
3467e5070f | ||
![]() |
5fb8fe86de | ||
![]() |
afea93d327 | ||
![]() |
53ec2f15b6 | ||
![]() |
342186584e | ||
![]() |
bd5d3c00f1 | ||
![]() |
53eeb4e921 | ||
![]() |
f2909fb3bd | ||
![]() |
1039f1db38 | ||
![]() |
741ae9eb1e | ||
![]() |
76ff984b9c | ||
![]() |
f89478bf67 | ||
![]() |
f530c389a4 | ||
![]() |
a1ab0512b7 | ||
![]() |
3dad9896eb | ||
![]() |
ff9b0c79c0 | ||
![]() |
19ed3fb303 | ||
![]() |
09dd3c94c1 | ||
![]() |
e79afc87ca | ||
![]() |
f3ff74b0df | ||
![]() |
569ee488f5 | ||
![]() |
68ebe2d503 | ||
![]() |
8939e889f0 | ||
![]() |
796a52625e | ||
![]() |
0fbc5178f6 | ||
![]() |
d1505287b2 | ||
![]() |
8959adf9e0 | ||
![]() |
5961462cd7 | ||
![]() |
af0eeb710e | ||
![]() |
75a75d78ec | ||
![]() |
ddd8eb6da4 | ||
![]() |
d9d8437b6d | ||
![]() |
c2f2a589ed | ||
![]() |
c3d09c486c | ||
![]() |
897e817f3c | ||
![]() |
491234b310 | ||
![]() |
408206ace3 | ||
![]() |
4ec493950c | ||
![]() |
4f140893c9 | ||
![]() |
9c7c44cb49 | ||
![]() |
ba89f392d6 | ||
![]() |
04308fbaea | ||
![]() |
5d1021350d | ||
![]() |
800dae11e8 | ||
![]() |
ba5f816772 | ||
![]() |
1651956cbd | ||
![]() |
4a9967b8d0 | ||
![]() |
109eb96c08 | ||
![]() |
5d0807de4c | ||
![]() |
2d7832b132 | ||
![]() |
a7e2a05d80 | ||
![]() |
d36ce36235 | ||
![]() |
34c78dff52 | ||
![]() |
bd8a2fb287 | ||
![]() |
38770d9393 | ||
![]() |
c65e747dd2 | ||
![]() |
53f2baf52b | ||
![]() |
5b9be518b8 | ||
![]() |
e0de3b410b | ||
![]() |
2b1f2fe019 | ||
![]() |
37b5ab916c | ||
![]() |
af261e126a | ||
![]() |
2cbec90c96 | ||
![]() |
01c5bd61ef | ||
![]() |
e01291afd6 | ||
![]() |
a53b3130c8 | ||
![]() |
dea4818128 | ||
![]() |
2609248564 | ||
![]() |
5749879c1c | ||
![]() |
1f3b3f15ab | ||
![]() |
09c0f5143d | ||
![]() |
025f994c62 | ||
![]() |
ad04961d19 | ||
![]() |
b5c5bd5980 | ||
![]() |
bfe83dd653 | ||
![]() |
5e32c09d9f | ||
![]() |
b0f7a06749 | ||
![]() |
9533671285 | ||
![]() |
072bc0269c | ||
![]() |
dcb3e79f64 | ||
![]() |
d58101592b | ||
![]() |
630152b91e | ||
![]() |
b8ae7401a4 | ||
![]() |
0d96889018 | ||
![]() |
9cd2cf5cc3 | ||
![]() |
658e7eac1c | ||
![]() |
7c387db3e8 | ||
![]() |
401085f231 | ||
![]() |
fe9eb8884e | ||
![]() |
bab0df47f0 | ||
![]() |
b34fa5fb07 | ||
![]() |
d88e3ec982 | ||
![]() |
36cf513431 | ||
![]() |
2530740066 | ||
![]() |
0af85f8c03 | ||
![]() |
31e67a84ec | ||
![]() |
364ad230fd | ||
![]() |
a69876325a | ||
![]() |
ac85bdfd3e | ||
![]() |
b6477b17d8 | ||
![]() |
9406515f91 | ||
![]() |
ce2e68ee32 | ||
![]() |
8b04d2d202 | ||
![]() |
963fb3ca3c | ||
![]() |
f40f9c4803 | ||
![]() |
ee275bf950 | ||
![]() |
9e4f1f4c5b | ||
![]() |
d234e6a701 | ||
![]() |
48281e0158 | ||
![]() |
e8592a6690 | ||
![]() |
e780eee207 | ||
![]() |
de14e8e935 | ||
![]() |
8ea7b497ff | ||
![]() |
d1098af7f0 | ||
![]() |
daa34e5ed4 | ||
![]() |
89243d03cd | ||
![]() |
597dfb173d | ||
![]() |
e1228844c7 | ||
![]() |
481976a353 | ||
![]() |
b1ef5770d7 | ||
![]() |
f6f561841c | ||
![]() |
0da5653fef | ||
![]() |
8afb8ee204 | ||
![]() |
d808e72d2a | ||
![]() |
02a860ba19 | ||
![]() |
2e1354cdb9 | ||
![]() |
7640e05619 | ||
![]() |
cb42d46131 | ||
![]() |
f055b61e8e | ||
![]() |
23f99999de | ||
![]() |
39c956829a | ||
![]() |
e281a18ec7 | ||
![]() |
4476c802d5 | ||
![]() |
c728bae55a | ||
![]() |
20ff1dc446 | ||
![]() |
3c40758c6a | ||
![]() |
b0a432ce78 | ||
![]() |
1891d36677 | ||
![]() |
2bf5c98b5f | ||
![]() |
d7cf35126b | ||
![]() |
d765c7c655 | ||
![]() |
0dc05978ce | ||
![]() |
001427822c | ||
![]() |
4c74517e9e | ||
![]() |
e315ff24e1 | ||
![]() |
fff8b3f532 | ||
![]() |
8ee527a3d0 | ||
![]() |
f14f87b54e | ||
![]() |
505e192b66 | ||
![]() |
5ed1ca6aa1 | ||
![]() |
7b5a778bd8 | ||
![]() |
39d090297e | ||
![]() |
e36ed36a6e | ||
![]() |
b5f32f1001 | ||
![]() |
777b215c15 | ||
![]() |
7bd5c1b41c | ||
![]() |
fa70e8bd37 | ||
![]() |
ec2badc74b | ||
![]() |
500e62cbce | ||
![]() |
4fa3f6736b | ||
![]() |
1d03c01420 | ||
![]() |
759061ffdb | ||
![]() |
76180a43a8 | ||
![]() |
5867ae2f93 | ||
![]() |
e6552c8dda | ||
![]() |
110d4e10bb | ||
![]() |
6d458d3b16 | ||
![]() |
40ce0b714e | ||
![]() |
8a5b0928c5 | ||
![]() |
7e55497e20 | ||
![]() |
2d333a23a4 | ||
![]() |
0a32810f36 | ||
![]() |
c6cbf7941c | ||
![]() |
33d8103335 | ||
![]() |
3df1973ac9 | ||
![]() |
d51391bb9b | ||
![]() |
94714e4f39 | ||
![]() |
12266179d6 | ||
![]() |
a9f2bf2d54 | ||
![]() |
3972a181e6 | ||
![]() |
986661b6e8 | ||
![]() |
99faa45d94 | ||
![]() |
daad62d939 | ||
![]() |
f775a12de9 | ||
![]() |
ebc33723b0 | ||
![]() |
2c8d2babdc | ||
![]() |
7771b5af2d | ||
![]() |
1729b553a4 | ||
![]() |
4f10a12869 | ||
![]() |
a0b372e7d9 | ||
![]() |
daded49ce8 | ||
![]() |
d5d101d3f8 | ||
![]() |
e83b698df4 | ||
![]() |
712cba1398 | ||
![]() |
b954efe624 | ||
![]() |
163d2c8d8f | ||
![]() |
cf807ea93e | ||
![]() |
0a9942d01f | ||
![]() |
6d164511b4 | ||
![]() |
441ea2000b | ||
![]() |
64281776f4 | ||
![]() |
a93fdf5a17 | ||
![]() |
050ed71c00 | ||
![]() |
7b029cc7bc | ||
![]() |
07afc4810a | ||
![]() |
ff339c3fb0 | ||
![]() |
2e21bcc542 | ||
![]() |
9a27b66661 | ||
![]() |
ee91ea86ff | ||
![]() |
5484aea042 | ||
![]() |
4c7955b099 | ||
![]() |
00654c168f | ||
![]() |
8e789732f9 | ||
![]() |
b69e8aebab | ||
![]() |
d8265d4513 | ||
![]() |
1b0c3a5d9a | ||
![]() |
124d5e0cdb | ||
![]() |
3b86f317d1 | ||
![]() |
39fdda8958 | ||
![]() |
0575373167 | ||
![]() |
9466f6ee86 | ||
![]() |
ad491edee3 | ||
![]() |
4557d87ed9 | ||
![]() |
ea245cd213 | ||
![]() |
f9f126a842 | ||
![]() |
65433172f3 | ||
![]() |
3325dc0d9f | ||
![]() |
00533fb956 | ||
![]() |
0d499b3c25 | ||
![]() |
eda9b1f20b | ||
![]() |
b9eb13f033 | ||
![]() |
391cb84117 | ||
![]() |
8ed5b50c3d | ||
![]() |
b93faff771 | ||
![]() |
671a76bf86 | ||
![]() |
d698c51ce0 | ||
![]() |
ddb0a65957 | ||
![]() |
10b6551ea3 | ||
![]() |
713ceab89f | ||
![]() |
ba864200ee | ||
![]() |
98084457ff | ||
![]() |
ba1411b9cd | ||
![]() |
ff4fe92c9f | ||
![]() |
8d3b9098c0 | ||
![]() |
43da147d44 | ||
![]() |
148c9661c2 | ||
![]() |
f0e2a68abf | ||
![]() |
d16a263480 | ||
![]() |
d50f6001d8 | ||
![]() |
bb5b0895a8 | ||
![]() |
162e6abcc1 | ||
![]() |
ce2e492632 | ||
![]() |
03f6e61935 | ||
![]() |
996f042961 | ||
![]() |
55275b23aa | ||
![]() |
188a6ea801 | ||
![]() |
ab127daa35 | ||
![]() |
c61112bc6d | ||
![]() |
9b07fd528b | ||
![]() |
1ba809825d | ||
![]() |
09119f9d18 | ||
![]() |
c78cafe605 | ||
![]() |
1c49cffc66 | ||
![]() |
452c19a7ea | ||
![]() |
cc8a5cf367 | ||
![]() |
5bbd881f01 | ||
![]() |
1c2ddea3d4 | ||
![]() |
096a28002f | ||
![]() |
23a60e79c1 | ||
![]() |
473698c744 | ||
![]() |
b955be65f4 | ||
![]() |
98668d5380 | ||
![]() |
e057e952b6 | ||
![]() |
e04cb679f9 | ||
![]() |
fd1f2fa0c4 | ||
![]() |
f1f80f3d57 | ||
![]() |
7440f12117 | ||
![]() |
2f8847b8fe | ||
![]() |
8aaccf06b2 | ||
![]() |
b83ec80e7c | ||
![]() |
7ca57da6fe | ||
![]() |
0cb7b0af95 | ||
![]() |
7646c43f45 | ||
![]() |
7cb1ae6d3c | ||
![]() |
9454ab9d6c | ||
![]() |
780b514cc0 | ||
![]() |
7b124f1dc2 | ||
![]() |
a500407dc3 | ||
![]() |
d415bde66c | ||
![]() |
8902f3202e | ||
![]() |
314bdf61ef | ||
![]() |
43c98b7ddd | ||
![]() |
e065ccb7b7 | ||
![]() |
eea9e060c8 | ||
![]() |
3377885587 | ||
![]() |
39f4f4f0ea | ||
![]() |
85c54eda7d | ||
![]() |
fc6d9ba67a | ||
![]() |
ff25a5b432 | ||
![]() |
fd8a56762d | ||
![]() |
7e4c3c0df0 | ||
![]() |
fae2187394 | ||
![]() |
c17779b6d4 | ||
![]() |
7f6c5f7211 | ||
![]() |
45f49738f3 | ||
![]() |
86390bde02 | ||
![]() |
595aa9b062 | ||
![]() |
3eed6de797 | ||
![]() |
8655aa8c37 | ||
![]() |
47c64661ec | ||
![]() |
aa4646692e | ||
![]() |
67ee00c3f8 | ||
![]() |
52e18e5125 | ||
![]() |
30a7bd49a9 | ||
![]() |
654d35bc89 | ||
![]() |
1ae11fef58 | ||
![]() |
6023462bbd | ||
![]() |
163cc6b6bd | ||
![]() |
891e9bacaa | ||
![]() |
c8796d9a54 | ||
![]() |
0c918caed2 | ||
![]() |
46f6d28fca | ||
![]() |
7d4641c5ec | ||
![]() |
fc1ec9123d | ||
![]() |
220415f698 | ||
![]() |
82389925bc | ||
![]() |
7714ef83aa | ||
![]() |
09ce9f3107 | ||
![]() |
a409016f7a | ||
![]() |
7585514868 | ||
![]() |
99ab59f3a3 | ||
![]() |
cf0662d0a4 | ||
![]() |
7d20a9ed84 | ||
![]() |
3878dcd27f | ||
![]() |
9fb2e9d30d | ||
![]() |
d6a1889e9f | ||
![]() |
34b0c8e774 | ||
![]() |
f11ae35b07 | ||
![]() |
18d62429bf | ||
![]() |
65d56afc02 | ||
![]() |
71dde4d0dd | ||
![]() |
576632fbbf | ||
![]() |
f7995f6da7 | ||
![]() |
6115bbabc8 | ||
![]() |
dc1c166ac2 | ||
![]() |
279849debe | ||
![]() |
07c5474cf2 | ||
![]() |
bd5fc861df | ||
![]() |
6988060269 | ||
![]() |
cf6ed8c382 | ||
![]() |
d536f3e93c | ||
![]() |
cc2262dbaf | ||
![]() |
f3fa0eb849 | ||
![]() |
7c9bca1325 | ||
![]() |
493f299cce | ||
![]() |
5d7248d4c7 | ||
![]() |
d9e8fb3469 | ||
![]() |
a5051e116a | ||
![]() |
3358d0e3d7 | ||
![]() |
ca183c7de6 | ||
![]() |
b39961e43e | ||
![]() |
59e8c120e2 | ||
![]() |
382dcc8d0c | ||
![]() |
beab1632b3 | ||
![]() |
e84cb34b8d | ||
![]() |
457c2131e4 | ||
![]() |
35f38a116a | ||
![]() |
054f628192 | ||
![]() |
b844859799 | ||
![]() |
ddaeec85d4 | ||
![]() |
a84d62f307 | ||
![]() |
b4724cff18 | ||
![]() |
1e72461806 | ||
![]() |
41617183ab | ||
![]() |
9aa48b2645 | ||
![]() |
20ab35fbf9 | ||
![]() |
de0884d654 | ||
![]() |
c285427fe2 | ||
![]() |
61bbcbda37 | ||
![]() |
7468f6304c | ||
![]() |
ac915b0373 | ||
![]() |
60e2cab249 | ||
![]() |
12891ab238 | ||
![]() |
c4480f208f | ||
![]() |
4352051c6e | ||
![]() |
39325539a2 | ||
![]() |
1d909c661e | ||
![]() |
1a94159bc9 | ||
![]() |
951cdc2d51 | ||
![]() |
74728b4544 | ||
![]() |
7819b561ad | ||
![]() |
cc0e18012d | ||
![]() |
f7c0b04884 | ||
![]() |
3de1673929 | ||
![]() |
6bcaab91ef | ||
![]() |
e246a6cd67 | ||
![]() |
a16f311be7 | ||
![]() |
8e316068ba | ||
![]() |
87fc6c8a73 | ||
![]() |
faf136756c | ||
![]() |
8e64623592 | ||
![]() |
5e256b9beb | ||
![]() |
ec30e4c100 | ||
![]() |
32ab4a660f | ||
![]() |
079ec27a21 | ||
![]() |
7a4afd947d | ||
![]() |
bb7c400855 | ||
![]() |
81fed8a1d8 | ||
![]() |
023096477c | ||
![]() |
df597e6452 | ||
![]() |
68cf549df3 | ||
![]() |
22060f90bf | ||
![]() |
16f242da13 | ||
![]() |
12cc944728 | ||
![]() |
f9656c16bf | ||
![]() |
62ee67ce80 | ||
![]() |
1b97e5bc97 | ||
![]() |
a97ff24035 | ||
![]() |
dee0016836 | ||
![]() |
6b306daf21 | ||
![]() |
2593d2137b | ||
![]() |
679c764403 | ||
![]() |
6771b137ea | ||
![]() |
a7e51408c2 | ||
![]() |
eab83659ca | ||
![]() |
a90c6c445c | ||
![]() |
aae4f0520c | ||
![]() |
e74cdc6ca0 | ||
![]() |
df666813f3 | ||
![]() |
4a8790e07f | ||
![]() |
7bbe5a6f06 | ||
![]() |
9f8dfddfa8 | ||
![]() |
fbe81666bf | ||
![]() |
9712ced2bf | ||
![]() |
9dc0ce4b13 | ||
![]() |
b71903e04b | ||
![]() |
48ab77ef52 | ||
![]() |
35b3ea2047 | ||
![]() |
620f63e1f3 | ||
![]() |
35243167b3 | ||
![]() |
93d844b950 | ||
![]() |
bc863f3f2c | ||
![]() |
cc9b2cdaed | ||
![]() |
1b091bb07f | ||
![]() |
99b6ef9374 | ||
![]() |
c1870fee32 | ||
![]() |
61311bd3e6 | ||
![]() |
9238244ea2 | ||
![]() |
21cdc29f27 | ||
![]() |
e4a567c63a | ||
![]() |
adfa094153 | ||
![]() |
f94d35519e | ||
![]() |
69e12f40d7 | ||
![]() |
a17966b8d4 | ||
![]() |
053a8194a2 | ||
![]() |
bdf7c84a35 | ||
![]() |
b84f1e229b | ||
![]() |
41938191c7 | ||
![]() |
37a985c936 | ||
![]() |
ebdc9368da | ||
![]() |
e75e8d170d | ||
![]() |
ec7a30141b | ||
![]() |
5e3385e9f3 | ||
![]() |
76e47e5356 | ||
![]() |
8e9d885708 | ||
![]() |
d93a7c0e91 | ||
![]() |
93df13ff78 | ||
![]() |
58d83d8f92 | ||
![]() |
cc52ec2b71 | ||
![]() |
0f442ae743 | ||
![]() |
dcd6f0085b | ||
![]() |
fab823b957 | ||
![]() |
dccee58476 | ||
![]() |
a3af69c978 | ||
![]() |
b92c098ef1 | ||
![]() |
1cc5cd1b1d | ||
![]() |
2345e144cf | ||
![]() |
ceb0e97610 | ||
![]() |
c3585ed714 | ||
![]() |
bd5f52b4e2 | ||
![]() |
e6c7c30bdd | ||
![]() |
1026350cbd | ||
![]() |
7e897c2a72 | ||
![]() |
940500c992 | ||
![]() |
9ff353cbcf | ||
![]() |
1db5acdf7b | ||
![]() |
cb100e5bb6 | ||
![]() |
4d6893dc49 | ||
![]() |
40b5866806 | ||
![]() |
59e64499fb | ||
![]() |
a024c509c6 | ||
![]() |
1b72cc2114 | ||
![]() |
c0d732da7c | ||
![]() |
1b8891a59b | ||
![]() |
6f9e489ba5 | ||
![]() |
2c82d44b64 | ||
![]() |
7364062e8c | ||
![]() |
0044b0206a | ||
![]() |
82a98b8dd3 | ||
![]() |
435484482f | ||
![]() |
1ad71ab5ae | ||
![]() |
a4cdfc34ea | ||
![]() |
bf31cc24d6 | ||
![]() |
baa4402a62 | ||
![]() |
638c7c7420 | ||
![]() |
08bd479cf9 | ||
![]() |
18d0900b32 | ||
![]() |
e24fd97370 | ||
![]() |
a64adb6b16 | ||
![]() |
cf431e1e4b | ||
![]() |
57071d21a7 | ||
![]() |
13694d711d | ||
![]() |
973d6f64e2 | ||
![]() |
48a7e81906 | ||
![]() |
ba81ad5bce | ||
![]() |
bf34c9a9c3 | ||
![]() |
10ae6491c9 | ||
![]() |
1609569dc9 | ||
![]() |
63c52cc40a | ||
![]() |
ebaa39e17e | ||
![]() |
327c8f5a57 | ||
![]() |
492556a424 | ||
![]() |
8c0e4a09d1 | ||
![]() |
ee16ce65ec | ||
![]() |
2affdf680f | ||
![]() |
84bbb4ba63 | ||
![]() |
b8baca2100 | ||
![]() |
15a056b466 | ||
![]() |
205803c1be | ||
![]() |
a66afafe31 | ||
![]() |
657cb4c4cd | ||
![]() |
7df6378872 | ||
![]() |
c81cf324b8 | ||
![]() |
57a33beb81 | ||
![]() |
a6e446e5cf | ||
![]() |
19bb1a1ce1 | ||
![]() |
68a3096683 | ||
![]() |
c857541666 | ||
![]() |
4abca2f9b5 | ||
![]() |
cbbae1e26a | ||
![]() |
c855ea5838 | ||
![]() |
6df2c97cc5 | ||
![]() |
a6a7f1ab4c | ||
![]() |
690ae8641e | ||
![]() |
950df83558 | ||
![]() |
08baf5ae87 | ||
![]() |
2835104029 | ||
![]() |
cf3de23515 | ||
![]() |
664daf4f84 | ||
![]() |
baff7cb947 | ||
![]() |
e2775c17de | ||
![]() |
dba5771f3f | ||
![]() |
948abc60d4 | ||
![]() |
febeeb96f0 | ||
![]() |
e38edc1be0 | ||
![]() |
0f6bd9c806 | ||
![]() |
415031230c | ||
![]() |
dfac1c1b98 | ||
![]() |
0579c7affa | ||
![]() |
06e9a93d5e | ||
![]() |
c708d0ccf2 | ||
![]() |
76071aeda0 | ||
![]() |
bbe385dfa0 | ||
![]() |
5034dd3f02 | ||
![]() |
b31475c913 | ||
![]() |
d67b0d3f57 | ||
![]() |
9bf97e78e5 | ||
![]() |
fdc8fd1b01 | ||
![]() |
fdb26de664 | ||
![]() |
668e30aebe | ||
![]() |
a8c39f9db8 | ||
![]() |
eddc804a92 | ||
![]() |
4bc5e41c35 | ||
![]() |
9d9d2d7d50 | ||
![]() |
c322051ddd | ||
![]() |
7b6b69356c | ||
![]() |
2140029a4a | ||
![]() |
944e7cb60a | ||
![]() |
8783c469be | ||
![]() |
3c323519a8 | ||
![]() |
c71cea87cc | ||
![]() |
a0d2770d70 | ||
![]() |
ff14d2b32e | ||
![]() |
05a97971b1 | ||
![]() |
3986fa875d | ||
![]() |
06a29292cc | ||
![]() |
b068e9729a | ||
![]() |
e6166c7512 | ||
![]() |
ceefc07609 | ||
![]() |
fceb1e85a6 | ||
![]() |
cad5703185 | ||
![]() |
beb7873c5d | ||
![]() |
91e97143c9 | ||
![]() |
6ffe5fd249 | ||
![]() |
3da54549ea | ||
![]() |
a6ec05da49 | ||
![]() |
47cb4e488f | ||
![]() |
3649d7f111 | ||
![]() |
8372671b70 | ||
![]() |
945eec6931 | ||
![]() |
2c92c61015 | ||
![]() |
d56f4962bf | ||
![]() |
34355d8e00 | ||
![]() |
27dc41dd9e | ||
![]() |
8080e2fe47 | ||
![]() |
a716c99152 | ||
![]() |
df30fcf37b | ||
![]() |
71d2bfab38 | ||
![]() |
62a7e70ebe | ||
![]() |
c7bd7d0bf6 | ||
![]() |
6b3e0c4ac4 | ||
![]() |
8e6b4515ed | ||
![]() |
4d364acc1d | ||
![]() |
894d237841 | ||
![]() |
123128bfc7 | ||
![]() |
59c559de14 | ||
![]() |
852d928860 | ||
![]() |
6abd7ea690 | ||
![]() |
6bbf42c000 | ||
![]() |
73d1ccb257 | ||
![]() |
3c3efde2e6 | ||
![]() |
f6de1520e2 | ||
![]() |
a0da6da320 | ||
![]() |
d5516fae89 | ||
![]() |
0917cc82e0 | ||
![]() |
cabd426801 | ||
![]() |
534627fd11 | ||
![]() |
60be486095 | ||
![]() |
be6cd98cec | ||
![]() |
3b3d5292e5 | ||
![]() |
06ac821c52 | ||
![]() |
a5e34fc9a5 | ||
![]() |
af663d3656 | ||
![]() |
25b41f8bb6 | ||
![]() |
e1b57df990 | ||
![]() |
1eb04862fc | ||
![]() |
e3bcffdd6b | ||
![]() |
1aea93a57b | ||
![]() |
697db429f6 | ||
![]() |
ca11631531 | ||
![]() |
7a6398db45 | ||
![]() |
d9960e8a5e | ||
![]() |
93e267cb95 | ||
![]() |
206e395f13 | ||
![]() |
7537a13640 | ||
![]() |
6a92bbcb52 | ||
![]() |
5bfb7c63ac | ||
![]() |
e13b78833d | ||
![]() |
5884fee7ac | ||
![]() |
aec9c9d34b | ||
![]() |
89bb3a7f2c | ||
![]() |
8813c5174e | ||
![]() |
47824d8bca | ||
![]() |
bf91ffddf3 | ||
![]() |
1a293fc5ff | ||
![]() |
786a377ada | ||
![]() |
12e2781668 | ||
![]() |
5ace391a61 | ||
![]() |
03cd059a6f | ||
![]() |
1298c67d1b | ||
![]() |
31f5762efd | ||
![]() |
b393979d53 | ||
![]() |
fae7eaed93 | ||
![]() |
c27a26eee4 | ||
![]() |
46ff0020bb | ||
![]() |
869c2eb8b2 | ||
![]() |
422bc5baf3 | ||
![]() |
76d872cbe5 | ||
![]() |
d003a31353 | ||
![]() |
425d0ea951 | ||
![]() |
721e121ebe | ||
![]() |
07ede1b96b | ||
![]() |
48879fb6a0 | ||
![]() |
855c36280b | ||
![]() |
31ef8d2ec9 | ||
![]() |
a5ae4077cf | ||
![]() |
d6acd4deb8 | ||
![]() |
5f7283531f | ||
![]() |
ab836eb762 | ||
![]() |
22cc24e9f8 | ||
![]() |
4f41aab3fa | ||
![]() |
539535e66f | ||
![]() |
320fd57d8a | ||
![]() |
8b98469936 | ||
![]() |
d16992f5b2 | ||
![]() |
9f6fbc5e57 | ||
![]() |
aebc2c9660 | ||
![]() |
23d9487ca7 | ||
![]() |
bd4f9788cc | ||
![]() |
40a843200f | ||
![]() |
22cad83c8f | ||
![]() |
3319420c31 | ||
![]() |
580e3596b2 | ||
![]() |
42c93a7fc4 | ||
![]() |
c4b4aa6287 | ||
![]() |
2c9358ca07 | ||
![]() |
d35fcabf92 | ||
![]() |
e387652c8b | ||
![]() |
4ce9385fd5 | ||
![]() |
6f612d62cf | ||
![]() |
ee0bcfc413 | ||
![]() |
17b72bc8fd | ||
![]() |
908c8114bb | ||
![]() |
48badb83cf | ||
![]() |
6600e60498 | ||
![]() |
c058950119 | ||
![]() |
7cf0e05f70 | ||
![]() |
f2460549e0 | ||
![]() |
290aa09f89 | ||
![]() |
f37e80535a | ||
![]() |
be2a44dab9 | ||
![]() |
b5c889ab01 | ||
![]() |
84bf229944 | ||
![]() |
2dbd80f539 | ||
![]() |
7990bfefad | ||
![]() |
d457e6fc76 | ||
![]() |
871a16cb5b | ||
![]() |
d2ee1507d9 | ||
![]() |
c76066c99b | ||
![]() |
1961969a82 | ||
![]() |
0e8646d592 | ||
![]() |
3708b86e58 | ||
![]() |
1475d3daee | ||
![]() |
508812914f | ||
![]() |
988056e59c | ||
![]() |
b79d6a7347 | ||
![]() |
1c83609b8c | ||
![]() |
4605b4f3ca | ||
![]() |
dd9c57a1d2 | ||
![]() |
2898dc497a | ||
![]() |
06a03cd4ca | ||
![]() |
bf6f0b19fd | ||
![]() |
da04a7a629 | ||
![]() |
523066598e | ||
![]() |
d16ae38b28 | ||
![]() |
f0976bc582 | ||
![]() |
527b8a39f8 | ||
![]() |
64cadfe37a | ||
![]() |
5527aaebe9 | ||
![]() |
8dfffc6ac0 | ||
![]() |
302331bc7d | ||
![]() |
d2477b5f8a | ||
![]() |
8f1b7723c8 | ||
![]() |
e353d48af8 | ||
![]() |
3a5a0be013 | ||
![]() |
1f6233c1e1 | ||
![]() |
19b7eacfc4 | ||
![]() |
4824404636 | ||
![]() |
23697a8930 | ||
![]() |
1e624ae580 | ||
![]() |
8eaceb49cf | ||
![]() |
459a37fc59 | ||
![]() |
02342e2806 | ||
![]() |
48a5891c91 | ||
![]() |
5620e8d1ac | ||
![]() |
0545b4b24e | ||
![]() |
5937338348 | ||
![]() |
5e25b0ade9 | ||
![]() |
26a59ee1c1 | ||
![]() |
16e0b5f319 | ||
![]() |
6d63d56fdd | ||
![]() |
5e0b684b53 | ||
![]() |
7b67a08dd6 | ||
![]() |
23fb79c9a3 | ||
![]() |
071b7d2857 | ||
![]() |
0666d18f06 | ||
![]() |
b65fbb53c8 | ||
![]() |
c401dfabdc | ||
![]() |
25407369de | ||
![]() |
63109b4337 | ||
![]() |
365214d7f9 | ||
![]() |
d9fc1e81cd | ||
![]() |
f5a2206004 | ||
![]() |
ff0c707061 | ||
![]() |
ece702ec86 | ||
![]() |
5fba4cf081 | ||
![]() |
9d2192def1 | ||
![]() |
f0f58844b8 | ||
![]() |
feda757c81 | ||
![]() |
8ca765cce0 | ||
![]() |
7758b14f26 | ||
![]() |
846b24603e | ||
![]() |
42dbff273f | ||
![]() |
b1b83ae32a | ||
![]() |
24d8e7a5d7 | ||
![]() |
ff1c57c5a3 | ||
![]() |
01d9fc31c1 | ||
![]() |
88fbae4bec | ||
![]() |
ffbe58b808 | ||
![]() |
eea432418e | ||
![]() |
d9c8609d43 | ||
![]() |
aa70c1bd54 | ||
![]() |
20b04937c9 | ||
![]() |
5fa7d9cc6e | ||
![]() |
7b21cf5971 | ||
![]() |
5a367fdad0 | ||
![]() |
f0eeec83ee | ||
![]() |
9c47e2a35b | ||
![]() |
ba3eca5629 | ||
![]() |
792c562a35 | ||
![]() |
0cdc7351df | ||
![]() |
093074a9fc | ||
![]() |
61190233fc | ||
![]() |
b55e0eb1d3 | ||
![]() |
275f8d1531 | ||
![]() |
da1a032c96 | ||
![]() |
d5cea8bb0e | ||
![]() |
07b70efd19 | ||
![]() |
9bad51b94e | ||
![]() |
b8aa560d52 | ||
![]() |
e39419af25 | ||
![]() |
3e89b1dae6 | ||
![]() |
c47c140489 | ||
![]() |
2b17b5bd72 | ||
![]() |
faff428afb | ||
![]() |
031043f2f2 | ||
![]() |
e7175149d0 | ||
![]() |
4975ff6fdc | ||
![]() |
d81745eef2 | ||
![]() |
20ede93eb1 | ||
![]() |
7b41eb753d | ||
![]() |
00de303335 | ||
![]() |
7129e9d73b | ||
![]() |
384e268516 | ||
![]() |
1ad8a9b7f1 | ||
![]() |
4cbf5740e7 | ||
![]() |
ab33aae127 | ||
![]() |
307becf086 | ||
![]() |
9c11e19db8 | ||
![]() |
4bca6a8306 | ||
![]() |
d3a04d043b | ||
![]() |
89d1f7a731 | ||
![]() |
773a65a87e | ||
![]() |
3f22bd4e79 | ||
![]() |
5259fa7cbd | ||
![]() |
9dd58ce0a4 | ||
![]() |
877d2d1d16 | ||
![]() |
097b7fb262 | ||
![]() |
7975494bd6 | ||
![]() |
fd9a754209 | ||
![]() |
c2f4d7cd86 | ||
![]() |
5ff6d80dc8 | ||
![]() |
cd8a8b6a97 | ||
![]() |
3413399dfa | ||
![]() |
93ab8babbc | ||
![]() |
8d8c9e8a01 | ||
![]() |
aec9ef390c | ||
![]() |
6e5a56bed5 | ||
![]() |
175d12cf42 | ||
![]() |
6d9fd13fbe | ||
![]() |
9870047d05 | ||
![]() |
010f9acb54 | ||
![]() |
a1a9f645f5 | ||
![]() |
db5dd9ba7f | ||
![]() |
30f1def143 | ||
![]() |
b9dd0c6bf1 | ||
![]() |
d158472709 | ||
![]() |
cb9c7d5c48 | ||
![]() |
f580e53fc2 | ||
![]() |
c68456310c | ||
![]() |
8d156192d5 | ||
![]() |
0ab41a84bd | ||
![]() |
a3e1033c11 | ||
![]() |
ebcd656e70 | ||
![]() |
68ea69bad6 | ||
![]() |
4f9feeb953 | ||
![]() |
7f99691e92 | ||
![]() |
4f37352afe | ||
![]() |
32c001d06d | ||
![]() |
b81e1a3c70 | ||
![]() |
d32950a1b9 | ||
![]() |
da13e238ac | ||
![]() |
3c58f91d28 | ||
![]() |
c004cd47f0 | ||
![]() |
6db11763f6 | ||
![]() |
1e99b8cf36 | ||
![]() |
fea9987b02 | ||
![]() |
67a6d9c844 | ||
![]() |
b2d476659e | ||
![]() |
8381fba596 | ||
![]() |
5342837f0a | ||
![]() |
2787546f89 | ||
![]() |
34c9d808f8 | ||
![]() |
02f1f52c2f | ||
![]() |
8d2e0b0a89 | ||
![]() |
a408449e2c | ||
![]() |
c19748bbbe | ||
![]() |
b6063c0831 | ||
![]() |
00682ed150 | ||
![]() |
af24ff6049 | ||
![]() |
e0376b88f5 | ||
![]() |
188fea025d | ||
![]() |
d69cc7edf4 | ||
![]() |
f9ec71ba58 | ||
![]() |
1c59a6d461 | ||
![]() |
29a0707bcd | ||
![]() |
d4a9f9058d | ||
![]() |
5c2274f429 | ||
![]() |
ca57fa391d | ||
![]() |
9c7c8fc227 | ||
![]() |
d1471d197f | ||
![]() |
add4576f0a | ||
![]() |
acacf0885c | ||
![]() |
7deaecc123 | ||
![]() |
b82b0322a1 | ||
![]() |
c6a92c2670 | ||
![]() |
1d9c2f878e | ||
![]() |
dd7233c81e | ||
![]() |
d4dd298ef8 | ||
![]() |
53e015a7aa | ||
![]() |
9203918788 | ||
![]() |
b9ae18a0ca | ||
![]() |
d548b8cb6d | ||
![]() |
3931f8195b | ||
![]() |
7077a01dad | ||
![]() |
26b3195bdd | ||
![]() |
9b79e3c1ac | ||
![]() |
405b2180cf | ||
![]() |
462f354a9d | ||
![]() |
d3f14bd9c3 | ||
![]() |
d9939ea9be | ||
![]() |
9c5ae70562 | ||
![]() |
cfa03fe1f9 | ||
![]() |
d96655d6b7 | ||
![]() |
df745e1b43 | ||
![]() |
b863045a8f | ||
![]() |
ac53d731e9 | ||
![]() |
fa62827717 | ||
![]() |
5423aee3d5 | ||
![]() |
74a4d982a5 | ||
![]() |
a7184adc4d | ||
![]() |
3fba559323 | ||
![]() |
d41f0d7cf4 | ||
![]() |
9ebfc973f3 | ||
![]() |
9850c977be | ||
![]() |
7fc4c03659 | ||
![]() |
9c9627573b | ||
![]() |
abedcd8896 | ||
![]() |
63fcbc73a5 | ||
![]() |
a724f9c6f2 | ||
![]() |
c67440a940 | ||
![]() |
d996db31d6 | ||
![]() |
504faad077 | ||
![]() |
c0eeab939b | ||
![]() |
ca4952c02c | ||
![]() |
952385f362 | ||
![]() |
343bfe12fd | ||
![]() |
ac600ad91b | ||
![]() |
acfdb5b191 | ||
![]() |
ca1e0ffdea | ||
![]() |
a3bebadff8 | ||
![]() |
22a042d35d | ||
![]() |
0def2c24c8 | ||
![]() |
a09f3ab32c | ||
![]() |
5f7fcd57d2 | ||
![]() |
952c02d3d6 | ||
![]() |
355d98eb53 | ||
![]() |
3972f3e2a7 | ||
![]() |
c3f22ec7eb | ||
![]() |
8330b31a6d | ||
![]() |
c89e953b6e | ||
![]() |
1536f5805e | ||
![]() |
a640509e04 | ||
![]() |
ea0a808e15 | ||
![]() |
20f3a4128c | ||
![]() |
f6bad14087 | ||
![]() |
83f8975a50 | ||
![]() |
ce7c1f797f | ||
![]() |
bb9a97496d | ||
![]() |
b94b5b2d90 | ||
![]() |
b523f3d24e | ||
![]() |
79966cb5ed | ||
![]() |
c9f97665be | ||
![]() |
d618181dc7 | ||
![]() |
e2b6054b17 | ||
![]() |
0f6bdcd88d | ||
![]() |
74c9923f0b | ||
![]() |
a86bb5197d | ||
![]() |
6c7b15eeca | ||
![]() |
4c44f874b9 | ||
![]() |
4efc2cd05f | ||
![]() |
839d5ce1f9 | ||
![]() |
7c2d35d746 | ||
![]() |
eff0b040a2 | ||
![]() |
eede41fb18 | ||
![]() |
a66abd037e | ||
![]() |
7edce1967f | ||
![]() |
6c028d8511 | ||
![]() |
ef32e5f990 | ||
![]() |
ba435d9c14 | ||
![]() |
f6db693407 | ||
![]() |
0f446a5435 | ||
![]() |
0b17ceda90 | ||
![]() |
f000af56e7 | ||
![]() |
d06d684c96 | ||
![]() |
24063ad883 | ||
![]() |
3aa2109986 | ||
![]() |
5c3c9f3dfa | ||
![]() |
07a9aabe20 | ||
![]() |
4702b8ffed | ||
![]() |
b071c7ff11 | ||
![]() |
9d8b8458bf | ||
![]() |
73bc2382bb | ||
![]() |
4a4c8a7b2b | ||
![]() |
0a9f88a2fb | ||
![]() |
8bed8e2cf7 | ||
![]() |
c8b396b99d | ||
![]() |
afc636a20f | ||
![]() |
bd0b012bce | ||
![]() |
86b0a9dac2 | ||
![]() |
f344c0d41d | ||
![]() |
f70c599afd | ||
![]() |
08cf77eb23 | ||
![]() |
25910c5189 | ||
![]() |
09d17f2cfe | ||
![]() |
c9cf757964 | ||
![]() |
98b64e2fad | ||
![]() |
fbfab42e8b | ||
![]() |
c44c63d5ce | ||
![]() |
1e3b1a6605 | ||
![]() |
ef2a2a5efc | ||
![]() |
ccfe709789 | ||
![]() |
43563ccff7 | ||
![]() |
db2673cf27 | ||
![]() |
351cc884ec | ||
![]() |
d6823beb95 | ||
![]() |
dfede695a7 | ||
![]() |
b0354fa8b9 | ||
![]() |
41cecd4947 | ||
![]() |
dd5a59a1cb | ||
![]() |
ee86bff81c | ||
![]() |
9fb04e4f7c | ||
![]() |
74a4efddf1 | ||
![]() |
10906f91f5 | ||
![]() |
816d6887ad | ||
![]() |
e950e012ed | ||
![]() |
4fdd0993d7 | ||
![]() |
8e783f948f | ||
![]() |
e6313c4d5f | ||
![]() |
7de3843cd9 | ||
![]() |
425d334f8b | ||
![]() |
609854c28d | ||
![]() |
fd09bd2092 | ||
![]() |
1aa00bfa2a | ||
![]() |
d757c36569 | ||
![]() |
899567b305 | ||
![]() |
59bf54001e | ||
![]() |
c50b9cd555 | ||
![]() |
92fc0f4044 | ||
![]() |
7b90548f88 | ||
![]() |
c0d64f91c0 | ||
![]() |
cd86c556a9 | ||
![]() |
c909421090 | ||
![]() |
b66b46b8a0 | ||
![]() |
d94aff97ea | ||
![]() |
191597e333 | ||
![]() |
270af0ff00 | ||
![]() |
2f1e292e06 | ||
![]() |
dd5461273c | ||
![]() |
818100e3d8 | ||
![]() |
1dbc492aac | ||
![]() |
5c0e99008b | ||
![]() |
60553b996c | ||
![]() |
5886241e8d | ||
![]() |
bdcc36c321 | ||
![]() |
9fd989106d | ||
![]() |
f99f6f4ea7 | ||
![]() |
62df1fbc59 | ||
![]() |
a512948eb0 | ||
![]() |
2aaf3f82e6 | ||
![]() |
af79354d46 | ||
![]() |
f6d3b4d868 | ||
![]() |
20882f65cc | ||
![]() |
922e909a7f | ||
![]() |
98c5f0efb7 | ||
![]() |
509ede1f98 | ||
![]() |
e0ea3b5866 | ||
![]() |
aa67693b8d | ||
![]() |
f70f27fc94 | ||
![]() |
1b2eb4a92d | ||
![]() |
661916eac6 | ||
![]() |
e9c662cbf7 | ||
![]() |
f123e0534b | ||
![]() |
9160111e20 | ||
![]() |
1318341451 | ||
![]() |
e9456ac073 | ||
![]() |
5865b9fd2d | ||
![]() |
e1c3bac43a | ||
![]() |
7e5be9f0b8 | ||
![]() |
e3e7eec78a | ||
![]() |
f5bffa4b24 | ||
![]() |
0978259d2e | ||
![]() |
d6a140ea7d | ||
![]() |
33744a4a73 | ||
![]() |
3bb64df473 | ||
![]() |
9775e1c75d | ||
![]() |
225ab67a50 | ||
![]() |
838569e386 | ||
![]() |
040a8fad5b | ||
![]() |
143218913d | ||
![]() |
2b7580f186 | ||
![]() |
babdc9568f | ||
![]() |
e4103c9d4a | ||
![]() |
dff60ee6ef | ||
![]() |
14664bd38f | ||
![]() |
f61feb54d4 | ||
![]() |
bbeb8aa884 | ||
![]() |
864879eabe | ||
![]() |
d10ce64f2d | ||
![]() |
c93263ccea | ||
![]() |
37092f0359 | ||
![]() |
e26ff172c8 | ||
![]() |
619f979232 | ||
![]() |
1710ebae19 | ||
![]() |
50a48cdf24 | ||
![]() |
997384e832 | ||
![]() |
1f43997088 | ||
![]() |
097404b3d1 | ||
![]() |
8562cfb813 | ||
![]() |
70cd0f90c7 | ||
![]() |
8981160627 | ||
![]() |
e01af2fe97 | ||
![]() |
a5d1537b75 | ||
![]() |
a035b6f1c6 | ||
![]() |
18f84476ef | ||
![]() |
ed7735e3b8 | ||
![]() |
859ff6c088 | ||
![]() |
a3c78e2387 | ||
![]() |
87153390c8 | ||
![]() |
a679bcc669 | ||
![]() |
2d3727670c | ||
![]() |
be4e05f1e5 | ||
![]() |
81b1ee1bf6 | ||
![]() |
eb330dc484 | ||
![]() |
2b0c6c6f73 | ||
![]() |
88c0d896a5 | ||
![]() |
c41f4392ca | ||
![]() |
a40a91c0a7 | ||
![]() |
c613abc5fc | ||
![]() |
66c8d003d9 | ||
![]() |
d294ebb872 | ||
![]() |
6d6f3751e3 | ||
![]() |
62e165b9ac | ||
![]() |
ec5b4abab9 | ||
![]() |
2309e1085f | ||
![]() |
0e5107181c | ||
![]() |
62f4172258 | ||
![]() |
981ac1f23a | ||
![]() |
335fb757ab | ||
![]() |
5ea8fd169c | ||
![]() |
f55c534659 | ||
![]() |
6c9fb9b3bb | ||
![]() |
46c8d6d3e4 | ||
![]() |
301490a341 | ||
![]() |
e9936865d9 | ||
![]() |
c003a2594b | ||
![]() |
a14220c12d | ||
![]() |
b94e4dcff1 | ||
![]() |
604d0da2d5 | ||
![]() |
d7c8bc246b | ||
![]() |
e6b6f0fc7a | ||
![]() |
f7f87131cd | ||
![]() |
59f9b9967e | ||
![]() |
c7a80d5c6e | ||
![]() |
73f932fade | ||
![]() |
2d4f9d4d7b | ||
![]() |
203163de43 | ||
![]() |
98fa56eed5 | ||
![]() |
3ecd929125 | ||
![]() |
5c00c8f1ab | ||
![]() |
5fcb120811 | ||
![]() |
2fc67fae18 | ||
![]() |
591460d2d7 | ||
![]() |
697532d5b4 | ||
![]() |
dce081ce62 | ||
![]() |
6207d5ebf5 | ||
![]() |
dd33e152fc | ||
![]() |
18b64c3999 | ||
![]() |
fbd81f431e | ||
![]() |
a962533301 | ||
![]() |
379ccdf33d | ||
![]() |
70cbc6033b | ||
![]() |
4c5279e5eb | ||
![]() |
3d61e4ed68 | ||
![]() |
0191bf4279 | ||
![]() |
2473c38e57 | ||
![]() |
e868d8a67f | ||
![]() |
cfe3ea22dd | ||
![]() |
34e5e6c151 | ||
![]() |
3aaed105cc | ||
![]() |
d9813e2b03 | ||
![]() |
049a0f8729 | ||
![]() |
e84e774fcf | ||
![]() |
57b16da239 | ||
![]() |
795e71a27a | ||
![]() |
c915fe63b6 | ||
![]() |
a0481737aa | ||
![]() |
16c76723fe | ||
![]() |
d26e51c434 | ||
![]() |
8e953abe94 | ||
![]() |
3b3db4c1d2 | ||
![]() |
81de13e251 | ||
![]() |
8770178c9b | ||
![]() |
1152699be6 | ||
![]() |
3359d3969c | ||
![]() |
99f774a2f8 | ||
![]() |
8da63bc3c6 | ||
![]() |
c2b77d96fb | ||
![]() |
e27f558146 | ||
![]() |
dcfe4464b6 | ||
![]() |
9bfd96a9dd | ||
![]() |
c51b2f3267 | ||
![]() |
344cf8379c | ||
![]() |
cbc342ce1a | ||
![]() |
9b8b9f5e14 | ||
![]() |
cd34782bd5 | ||
![]() |
6c4af27ec6 | ||
![]() |
0333413505 | ||
![]() |
4124a3c8fe | ||
![]() |
6db088328b | ||
![]() |
57b2adb81f | ||
![]() |
f33df61860 | ||
![]() |
ee965e4b74 | ||
![]() |
d0911cd0c7 | ||
![]() |
0b91608bbe | ||
![]() |
e0a5070cdc | ||
![]() |
49ce111c33 | ||
![]() |
fa3d3420f6 | ||
![]() |
b0c2416efb | ||
![]() |
88548eda88 | ||
![]() |
0d3058783e | ||
![]() |
3e34d123c0 | ||
![]() |
c06e51641e | ||
![]() |
89a682fc14 | ||
![]() |
edb6dc9248 | ||
![]() |
501fd5943e | ||
![]() |
8a695bc1e2 | ||
![]() |
d840f0ed94 | ||
![]() |
859fe6cfe5 | ||
![]() |
b9f0d39d1c | ||
![]() |
bb96eb1a8d | ||
![]() |
4e720eb4d2 | ||
![]() |
136a0ecbf7 | ||
![]() |
f20b70c35d | ||
![]() |
75cbb0eeb2 | ||
![]() |
21dde671de | ||
![]() |
22a0884203 | ||
![]() |
76cc2fdb25 | ||
![]() |
b67ff738cb | ||
![]() |
6291e65165 | ||
![]() |
6b2239212c | ||
![]() |
9aa0ac9396 | ||
![]() |
a16040073f | ||
![]() |
f1a16f2eb2 | ||
![]() |
5a9f29bd9d | ||
![]() |
d9417a9aa9 | ||
![]() |
3a2d168c0c | ||
![]() |
4abe2cdb6d | ||
![]() |
83cb4553ad | ||
![]() |
aac415d1fa | ||
![]() |
1e51804b74 | ||
![]() |
d5573be1e9 | ||
![]() |
728cd96cfa | ||
![]() |
bc6c6ce66d | ||
![]() |
20b5ef02b9 | ||
![]() |
a37b6d46e8 | ||
![]() |
4c6b802cb9 | ||
![]() |
6ced8bd137 | ||
![]() |
374eb82d40 | ||
![]() |
9581020e33 | ||
![]() |
476b400315 | ||
![]() |
0e45e0a843 | ||
![]() |
f93f4985b3 | ||
![]() |
67f3da6be2 | ||
![]() |
9ff2cf35c6 | ||
![]() |
86a3a06bb1 | ||
![]() |
f81835cc60 | ||
![]() |
8ab4f8bd93 | ||
![]() |
ae5526c928 | ||
![]() |
335cd41eca | ||
![]() |
4c1fa34f2c | ||
![]() |
f94d3f91cf | ||
![]() |
2b1224b3df | ||
![]() |
5e77f44e05 | ||
![]() |
6e4bd83a69 | ||
![]() |
5de241c2c6 | ||
![]() |
729f61b84c | ||
![]() |
100f7f4147 | ||
![]() |
7dfa6d55ba | ||
![]() |
22515592f0 | ||
![]() |
0a5db20cb8 | ||
![]() |
d91c9dc41f | ||
![]() |
711f189e0e | ||
![]() |
1d579d12d2 | ||
![]() |
624fde5b46 | ||
![]() |
87a3c923a6 | ||
![]() |
c38c82bf6a | ||
![]() |
cd03077b77 | ||
![]() |
871f320de7 | ||
![]() |
3ab089c264 | ||
![]() |
d993ab7b48 | ||
![]() |
b1103ab227 | ||
![]() |
2217959242 | ||
![]() |
d38274acae | ||
![]() |
08e4b07364 | ||
![]() |
8c129ab512 | ||
![]() |
32e9d6fe72 | ||
![]() |
dd8ba803d4 | ||
![]() |
6f90cd5b04 | ||
![]() |
59e6d18c68 | ||
![]() |
81099e6141 | ||
![]() |
9bf6b6ec4a | ||
![]() |
abdbec2523 | ||
![]() |
be62ec31d8 | ||
![]() |
a62bbd1aed | ||
![]() |
d916d8f8df | ||
![]() |
4ce8ae67bc | ||
![]() |
225a18c2ab | ||
![]() |
b23ba4f66d | ||
![]() |
d30b713c74 | ||
![]() |
2dba594954 | ||
![]() |
c419189ffa | ||
![]() |
aa2a2bf9fe | ||
![]() |
1fd231b96c | ||
![]() |
21cd1c4e40 | ||
![]() |
bdf46c5d96 | ||
![]() |
13726e1e8a | ||
![]() |
766c16dc3c | ||
![]() |
cd2df06a10 | ||
![]() |
9a7f2fadf3 | ||
![]() |
2a68f479ed | ||
![]() |
a486bd262b | ||
![]() |
a7247f16f7 | ||
![]() |
39a5483c96 | ||
![]() |
fc12649028 | ||
![]() |
b4b26979de | ||
![]() |
73e9b64926 | ||
![]() |
2307c68ab2 | ||
![]() |
2ce0eae82e | ||
![]() |
45b0e0a7ab | ||
![]() |
317dd69db3 | ||
![]() |
3435f06696 | ||
![]() |
dcfebe6595 | ||
![]() |
b9a759de53 | ||
![]() |
5135d1167c | ||
![]() |
51e30c6a13 | ||
![]() |
b464c0abc5 | ||
![]() |
7469230d59 | ||
![]() |
7ba7e7a319 | ||
![]() |
0dc41eedb0 | ||
![]() |
72a7a6b3c8 | ||
![]() |
533533b639 | ||
![]() |
0cd26250b9 | ||
![]() |
1d545c10c4 | ||
![]() |
d352fab5cd | ||
![]() |
1bb95040ff | ||
![]() |
c0d83be019 | ||
![]() |
1c3f55568b | ||
![]() |
15850f4302 | ||
![]() |
c328eaed0e | ||
![]() |
d42e647d50 | ||
![]() |
0e8f7e6fe3 | ||
![]() |
380f322eda | ||
![]() |
017462c4c1 | ||
![]() |
3e83ebc680 | ||
![]() |
989eca40ec | ||
![]() |
51bd1445a5 | ||
![]() |
0c8378e22a | ||
![]() |
5b219deae2 | ||
![]() |
a311328b38 | ||
![]() |
03fbfc8f7a | ||
![]() |
4bb43cb9b5 | ||
![]() |
e7ee77ad62 | ||
![]() |
d2d8d3d8c2 | ||
![]() |
d3875f5e36 | ||
![]() |
24fec75821 | ||
![]() |
dc4d1c6497 | ||
![]() |
d0fed20d28 | ||
![]() |
1e26314776 | ||
![]() |
448a072e8e | ||
![]() |
0f89478df6 | ||
![]() |
0b96093ae5 | ||
![]() |
52f85f9452 | ||
![]() |
c88dbd3f02 | ||
![]() |
b6b45165ca | ||
![]() |
f53843f9b0 | ||
![]() |
41f94f2be5 | ||
![]() |
23a1bc2595 | ||
![]() |
2afb9b1456 | ||
![]() |
a389621cf1 | ||
![]() |
aa72ea805f | ||
![]() |
a943b4ef6d | ||
![]() |
3642893618 | ||
![]() |
9e5758c905 | ||
![]() |
4f13432df4 | ||
![]() |
8f5d9f2d18 | ||
![]() |
9b2d1f853d | ||
![]() |
f484cb393a | ||
![]() |
a2f29cc817 | ||
![]() |
87976fc845 | ||
![]() |
819c818976 | ||
![]() |
87d6b55022 | ||
![]() |
f086bf9284 | ||
![]() |
144d7276ef | ||
![]() |
c5abd39116 | ||
![]() |
b42adebc39 | ||
![]() |
35c1ee5a79 | ||
![]() |
89c9823b5d | ||
![]() |
da2f87660f | ||
![]() |
19be833058 | ||
![]() |
3c08e16ef2 | ||
![]() |
d2b17fbc6d | ||
![]() |
e526cb462f | ||
![]() |
1237bbebcd | ||
![]() |
65e7a71dff | ||
![]() |
ef28b60bfc | ||
![]() |
f6c9ca0202 | ||
![]() |
403ca48661 | ||
![]() |
3d96420db7 | ||
![]() |
afc011c5c8 | ||
![]() |
681c4a0a0a | ||
![]() |
faac26138a | ||
![]() |
8a799e0971 | ||
![]() |
ec14d1f0fe | ||
![]() |
a6e289c21f | ||
![]() |
7ea0630973 | ||
![]() |
e86a8cee10 | ||
![]() |
1fa90eb865 | ||
![]() |
2cb16a8ad8 | ||
![]() |
f241bfb7b8 | ||
![]() |
075482b417 | ||
![]() |
2a76a50400 | ||
![]() |
9c3c64eb1d | ||
![]() |
bd2c676c31 | ||
![]() |
f6ef53b565 | ||
![]() |
3c496b5694 | ||
![]() |
50320d9d9c | ||
![]() |
d9748cb69b | ||
![]() |
842451c747 | ||
![]() |
cbcb5cfdd6 | ||
![]() |
433df89238 | ||
![]() |
598ede6b37 | ||
![]() |
78b32002d7 | ||
![]() |
579ef3db36 | ||
![]() |
255f8f8fbd | ||
![]() |
e9f03a5455 | ||
![]() |
f2423edb66 | ||
![]() |
44824761f8 | ||
![]() |
93f38ced01 | ||
![]() |
b08c58e6d2 | ||
![]() |
3bd356019f | ||
![]() |
70c0fff557 | ||
![]() |
59a84c3b98 | ||
![]() |
48fdde5640 | ||
![]() |
42175496be | ||
![]() |
dabbd693b6 | ||
![]() |
67556eba74 | ||
![]() |
d6411dc480 | ||
![]() |
86840ee0f5 | ||
![]() |
182de8ef6d | ||
![]() |
c52bffc619 | ||
![]() |
50a432b176 | ||
![]() |
c5a0ec3919 | ||
![]() |
9f18e58c69 | ||
![]() |
20c16af6d3 | ||
![]() |
a1debe45cf | ||
![]() |
80b2079c19 | ||
![]() |
9dfe3dcf79 | ||
![]() |
ea05cf02b4 | ||
![]() |
1b25275333 | ||
![]() |
f90bc04b1a | ||
![]() |
2a06601e3a | ||
![]() |
bcb5e3950b | ||
![]() |
a2478e68c6 | ||
![]() |
dd88086cc7 | ||
![]() |
40af655c39 | ||
![]() |
055decf0cc | ||
![]() |
1f1630dc65 | ||
![]() |
e9cf610299 | ||
![]() |
0f1101bf06 | ||
![]() |
2df51f8b73 | ||
![]() |
e003fa2a66 | ||
![]() |
4470dc1fc9 | ||
![]() |
234346e1d4 | ||
![]() |
65e4586f33 | ||
![]() |
ae4f9a2eb7 | ||
![]() |
a8eff76dd0 | ||
![]() |
afddadbab3 | ||
![]() |
5eb2349a04 | ||
![]() |
e4b7133ec2 | ||
![]() |
a83bfa7a45 | ||
![]() |
5b1d59e38d | ||
![]() |
31ce093a4a | ||
![]() |
e1cc55ff79 | ||
![]() |
076586ded7 | ||
![]() |
c3e30d4d05 | ||
![]() |
dd87882e0f | ||
![]() |
fce8d134a3 | ||
![]() |
7f9fd7ef06 | ||
![]() |
e5c554f947 | ||
![]() |
47922537b7 | ||
![]() |
c5ff01d528 | ||
![]() |
a5830ca15b | ||
![]() |
6d8673724d | ||
![]() |
4e1737c2f5 | ||
![]() |
a7b486de56 | ||
![]() |
1e927834b3 | ||
![]() |
1f2b08f870 | ||
![]() |
067a9a2ade | ||
![]() |
07dbc45d3f | ||
![]() |
482279d7ec | ||
![]() |
7d2a0e6d4e | ||
![]() |
c338a96d8f | ||
![]() |
d2ead4ccbe | ||
![]() |
23c5a0d8eb | ||
![]() |
b555b60b75 | ||
![]() |
3a04b465b1 | ||
![]() |
4ce646facc | ||
![]() |
c33deb446e | ||
![]() |
3f5ee4c6fb | ||
![]() |
7a0fcc3f35 | ||
![]() |
ae5c164179 | ||
![]() |
8f2429e61c | ||
![]() |
c0515c961e | ||
![]() |
47f66049d7 | ||
![]() |
929e7cbaab | ||
![]() |
461043a985 | ||
![]() |
c489a0b7cc | ||
![]() |
e0b125d762 | ||
![]() |
36dad75750 | ||
![]() |
237acbd9c0 | ||
![]() |
a0c017a4dc | ||
![]() |
e18e0dccc6 | ||
![]() |
9bb1ef14be | ||
![]() |
4e9e2db90c | ||
![]() |
4fe98931af | ||
![]() |
431de0dc25 | ||
![]() |
16d32c073d | ||
![]() |
7446f0f809 | ||
![]() |
b8bacef844 | ||
![]() |
09dbc30ace | ||
![]() |
77f26aafda | ||
![]() |
1ab4af5e9d | ||
![]() |
29e7df3575 | ||
![]() |
78edbd3830 | ||
![]() |
9f963a2360 | ||
![]() |
7bb91088f1 | ||
![]() |
df727b774c | ||
![]() |
1f99e2547a | ||
![]() |
bb8bab1a3a | ||
![]() |
3d0a4c9137 | ||
![]() |
108e4a603e | ||
![]() |
a84ec393dd | ||
![]() |
c5adf540a6 | ||
![]() |
947251534f | ||
![]() |
05a2a5d8cc | ||
![]() |
9f2fb18473 | ||
![]() |
0bd34061b9 | ||
![]() |
e1b43e71bb | ||
![]() |
f06ae08a10 | ||
![]() |
dc2cb4d91c | ||
![]() |
848091097e | ||
![]() |
a1cef01c22 | ||
![]() |
d43bbbd5ba | ||
![]() |
6c67aee8a4 | ||
![]() |
653875c02e | ||
![]() |
58b2ac9987 | ||
![]() |
c111d32934 | ||
![]() |
c5ed682c70 | ||
![]() |
c5ed5baf97 | ||
![]() |
c683b60571 | ||
![]() |
6a20805772 | ||
![]() |
de24cbd70b | ||
![]() |
dbdf154e42 | ||
![]() |
a5b67a4207 | ||
![]() |
8c983e1849 | ||
![]() |
d83f41eaf2 | ||
![]() |
584cf7fa57 | ||
![]() |
c5cbfb1a3c | ||
![]() |
0e09b2b12a | ||
![]() |
d3421270b1 | ||
![]() |
6c330fe4d2 | ||
![]() |
e31e18b3f3 | ||
![]() |
2a41e8c8b0 | ||
![]() |
7428568279 | ||
![]() |
df4ea8794f | ||
![]() |
a84af82740 | ||
![]() |
82b1dbb01b | ||
![]() |
8f9d2df8db | ||
![]() |
73c7ecf716 | ||
![]() |
8842f099ed | ||
![]() |
6ea43b65d3 | ||
![]() |
c077834553 | ||
![]() |
a35c0fc1a7 | ||
![]() |
37f5756ddb | ||
![]() |
701094596f | ||
![]() |
aa8165d81a | ||
![]() |
a9fb598134 | ||
![]() |
c67fc71069 | ||
![]() |
85028b060c | ||
![]() |
b652840090 | ||
![]() |
52a607d0fb | ||
![]() |
e5904584e7 | ||
![]() |
c45d415579 | ||
![]() |
92790287e1 | ||
![]() |
28e8caea54 | ||
![]() |
735d6bf85c | ||
![]() |
3a9a8d4e5b | ||
![]() |
37ff909c37 | ||
![]() |
009528255e | ||
![]() |
474af8b29b | ||
![]() |
1ea268df71 | ||
![]() |
30183d11dc | ||
![]() |
be16260c3c | ||
![]() |
f44544be0e | ||
![]() |
13ccd086b4 | ||
![]() |
7371d42e97 | ||
![]() |
3ea13893dd | ||
![]() |
188bb85fe8 | ||
![]() |
e7aab960ff | ||
![]() |
466b130ca5 | ||
![]() |
df352ec926 | ||
![]() |
37b0a87aae | ||
![]() |
f13a9a260e | ||
![]() |
0fc4914500 | ||
![]() |
657cfb6512 | ||
![]() |
15ff4f12ac | ||
![]() |
702e8543b8 | ||
![]() |
58ec0d0cdd | ||
![]() |
b9f7e592ab | ||
![]() |
900313bbef | ||
![]() |
20fa1de3ef | ||
![]() |
ada3aa410a | ||
![]() |
416472e515 | ||
![]() |
cb88b3355b | ||
![]() |
4bbc20e24b | ||
![]() |
34d93ac968 | ||
![]() |
ba984572c8 | ||
![]() |
eb1e00ef7b | ||
![]() |
5aecff2f1a | ||
![]() |
35f9d6f72a | ||
![]() |
6bc6b3e772 | ||
![]() |
74532116ab | ||
![]() |
5b1521672f | ||
![]() |
c676ed980d | ||
![]() |
0168f549d4 | ||
![]() |
703903faf4 | ||
![]() |
220f96ecb4 | ||
![]() |
8ebe7e74e8 | ||
![]() |
7e9153171a | ||
![]() |
6e930aeaa9 | ||
![]() |
f91e12d593 | ||
![]() |
484b828f9d | ||
![]() |
2169a930d2 | ||
![]() |
45b3898683 | ||
![]() |
0a58aff795 | ||
![]() |
7f1a817749 | ||
![]() |
5f512db55f | ||
![]() |
acdca8320b | ||
![]() |
857db43428 | ||
![]() |
12aa51c551 | ||
![]() |
f755ed9710 | ||
![]() |
53a6b8178a | ||
![]() |
359474e1ca | ||
![]() |
e7ed402b64 | ||
![]() |
13e431a6ac | ||
![]() |
4266cfdad6 | ||
![]() |
8128565367 | ||
![]() |
14f5c79229 | ||
![]() |
1bc17b1cb1 | ||
![]() |
42f8744594 | ||
![]() |
8d3e33e343 | ||
![]() |
f5fd5a22e9 | ||
![]() |
f6cbe1c4bc | ||
![]() |
3811d7739d | ||
![]() |
6902d5fb02 | ||
![]() |
df801995ff | ||
![]() |
c1a9034f3f | ||
![]() |
1a95a6c028 | ||
![]() |
54cb67b316 | ||
![]() |
802a82f335 | ||
![]() |
7112f77b7c | ||
![]() |
fad68a1bf0 | ||
![]() |
3b3dc28d42 | ||
![]() |
f06317f3d0 | ||
![]() |
97c18ef67c | ||
![]() |
92e1e08e1c | ||
![]() |
139ab630e0 | ||
![]() |
1440534513 | ||
![]() |
c993563185 | ||
![]() |
f029d50029 | ||
![]() |
067afaceda | ||
![]() |
52b1176464 | ||
![]() |
4f8cd7fe88 | ||
![]() |
eb781c54f8 | ||
![]() |
b988241b8b | ||
![]() |
b4d69de796 | ||
![]() |
0fde081db5 | ||
![]() |
c8e44703d5 | ||
![]() |
4b6f5282b4 | ||
![]() |
c66899741a | ||
![]() |
8b6cdd8ab8 | ||
![]() |
2836484d12 | ||
![]() |
a869e7a3bd | ||
![]() |
90fe7d8e03 | ||
![]() |
0fbd579cbb | ||
![]() |
0b42ee83bb | ||
![]() |
be92638cf2 | ||
![]() |
3e560ce43d | ||
![]() |
273d477938 | ||
![]() |
12afbcd03d | ||
![]() |
6d41232a3e | ||
![]() |
4561112fe1 | ||
![]() |
cbcac452c0 | ||
![]() |
c0da03cfe8 | ||
![]() |
98456b8dca | ||
![]() |
a02ae261cf | ||
![]() |
6ee110b88d | ||
![]() |
0d2a95190c | ||
![]() |
ca9b14696c | ||
![]() |
2bf6ff5604 | ||
![]() |
f35cc90ea4 | ||
![]() |
63a2ccf3da | ||
![]() |
eb72f81bf7 | ||
![]() |
66254e79d3 | ||
![]() |
a8831bfa73 | ||
![]() |
ec4e44fcf2 | ||
![]() |
583d55298e | ||
![]() |
83859c1925 | ||
![]() |
5664b6a271 | ||
![]() |
53c3deda16 | ||
![]() |
d28fe8730d | ||
![]() |
92de4022cb | ||
![]() |
c3ae2467ae | ||
![]() |
94445283ac | ||
![]() |
5a5440813e | ||
![]() |
32d89fe611 | ||
![]() |
26ccdf21f9 | ||
![]() |
fb2241339d | ||
![]() |
99b2babad4 | ||
![]() |
735f392663 | ||
![]() |
4fddfe4f6b | ||
![]() |
16080cf46d | ||
![]() |
59aa071095 | ||
![]() |
5c7e23252b | ||
![]() |
240b70ad4b | ||
![]() |
1422b3393f | ||
![]() |
c0df38c23d | ||
![]() |
c146fea519 | ||
![]() |
6f8a6e33fc | ||
![]() |
7b976c39e6 | ||
![]() |
d9b28a79f1 | ||
![]() |
78d10b4c1b | ||
![]() |
5497016015 | ||
![]() |
302a580847 | ||
![]() |
62ca724415 | ||
![]() |
a70dfce490 | ||
![]() |
cb6f3f9195 | ||
![]() |
a666e6c39b | ||
![]() |
5606dc505e | ||
![]() |
3bf7a477a6 | ||
![]() |
2a45071501 | ||
![]() |
15617953ab | ||
![]() |
99cf659742 | ||
![]() |
ab17f50339 | ||
![]() |
d06b0c0b69 | ||
![]() |
351b942860 | ||
![]() |
272ac594a8 | ||
![]() |
365c3a27e8 | ||
![]() |
cc5f813f5e | ||
![]() |
87cf878860 | ||
![]() |
ba1ac3434e | ||
![]() |
f3a78ec059 | ||
![]() |
95884e1215 | ||
![]() |
d427d8df2d | ||
![]() |
a98565285b | ||
![]() |
01be9b0132 | ||
![]() |
49059236cd | ||
![]() |
529f6f94a3 | ||
![]() |
eacac9f071 | ||
![]() |
f13c15365f | ||
![]() |
ca035e419a | ||
![]() |
699641977e | ||
![]() |
aea3734ca8 | ||
![]() |
5ca286db5b | ||
![]() |
f4b9d16497 | ||
![]() |
0578196839 | ||
![]() |
f49fdbe886 | ||
![]() |
0d460e32de | ||
![]() |
2ee8b3c111 | ||
![]() |
e1379e5cf3 | ||
![]() |
b14b84f58b | ||
![]() |
444c9138e0 | ||
![]() |
83e40daec1 | ||
![]() |
dd612bbc91 | ||
![]() |
3f58521db2 | ||
![]() |
065834567a | ||
![]() |
f23b4fbf59 | ||
![]() |
426a8e5b61 | ||
![]() |
6fcb95b9e1 | ||
![]() |
50c95b4291 | ||
![]() |
f24adec51f | ||
![]() |
cfe354a35b | ||
![]() |
20743f2b51 | ||
![]() |
4c3d6a72a1 | ||
![]() |
1cd3f5c615 | ||
![]() |
9abae121fc | ||
![]() |
0d582fde46 | ||
![]() |
ecdd92f08e | ||
![]() |
e56cd8f3bd | ||
![]() |
14c8079353 | ||
![]() |
878df5afe4 | ||
![]() |
7e4b49634f | ||
![]() |
61cb8cb0b2 | ||
![]() |
04fbca7fe5 | ||
![]() |
54a2c660ae | ||
![]() |
113a349b56 | ||
![]() |
55d5859382 | ||
![]() |
791f74286d | ||
![]() |
aba6cf50e1 | ||
![]() |
02ba1f7230 | ||
![]() |
e04486564d | ||
![]() |
b140f6dc9a | ||
![]() |
ea66bc7f40 | ||
![]() |
0554dceed7 | ||
![]() |
86c4ce6d9f | ||
![]() |
0fba5dc75c | ||
![]() |
c39253454a | ||
![]() |
bc54087161 | ||
![]() |
2393ff7c4c | ||
![]() |
6582e9c718 | ||
![]() |
10b9f03410 | ||
![]() |
6987d75bb3 | ||
![]() |
4640525785 | ||
![]() |
7c7c6c349c | ||
![]() |
a2d013cd51 | ||
![]() |
6de89958ad | ||
![]() |
01c8032f20 | ||
![]() |
245f477760 | ||
![]() |
47a8e8e9fd | ||
![]() |
30b14a619d | ||
![]() |
f3cf51f7ac | ||
![]() |
2f79e110c4 | ||
![]() |
38e09d84fd | ||
![]() |
bc49f3813f | ||
![]() |
37848357b3 | ||
![]() |
de81eeb2b2 | ||
![]() |
9b15886310 | ||
![]() |
aac1b25a2e | ||
![]() |
abb338fea3 | ||
![]() |
b094d8322a | ||
![]() |
721a8cf6e3 | ||
![]() |
1049277e17 | ||
![]() |
44a4ce44d4 | ||
![]() |
7e9f900f35 | ||
![]() |
ec681b841e | ||
![]() |
a4002a49cc | ||
![]() |
032954be2b | ||
![]() |
2e7840bfcd | ||
![]() |
b0afe6c828 | ||
![]() |
bf281c2e36 | ||
![]() |
95ff7afa98 | ||
![]() |
da30d196da | ||
![]() |
dd10987e3b | ||
![]() |
1b9ada13a2 | ||
![]() |
66b215b44b | ||
![]() |
88b1ea9d3b | ||
![]() |
597f7dbeb8 | ||
![]() |
62d5684435 | ||
![]() |
499781baf1 | ||
![]() |
1da6210617 | ||
![]() |
057d258660 | ||
![]() |
ec433fa852 | ||
![]() |
6185f421b8 | ||
![]() |
ab7ae3f89a | ||
![]() |
7048b94cc2 | ||
![]() |
c8c11b31c8 | ||
![]() |
6dd732e1c2 | ||
![]() |
693963b072 | ||
![]() |
bc7d0c7d71 | ||
![]() |
07ee4d5915 | ||
![]() |
bc45092e03 | ||
![]() |
4b6068e13b | ||
![]() |
a7db756c76 | ||
![]() |
9d328b3aff | ||
![]() |
14211536d8 | ||
![]() |
9a7351b1f9 | ||
![]() |
b323333bd1 | ||
![]() |
8724d6f836 | ||
![]() |
18ddbf986c | ||
![]() |
dc55574100 | ||
![]() |
98cce77e1d | ||
![]() |
38898ab45e | ||
![]() |
40267f32e5 | ||
![]() |
3277e06740 | ||
![]() |
c557a2daf0 | ||
![]() |
2798076bb1 | ||
![]() |
0e02cb14ec | ||
![]() |
9443169283 | ||
![]() |
259b25ab68 | ||
![]() |
c8e363d4f3 | ||
![]() |
8ecc8b2e74 | ||
![]() |
62d763e65a | ||
![]() |
d54a56e11b | ||
![]() |
73b24aa5ae | ||
![]() |
110279cf4c | ||
![]() |
ddc4341707 | ||
![]() |
47fdeada01 | ||
![]() |
c3fc7d792e | ||
![]() |
33ac29f269 | ||
![]() |
1c7c6b2a0f | ||
![]() |
5ab9ee7c34 | ||
![]() |
056de6fc13 | ||
![]() |
ded9ee3251 | ||
![]() |
dc4f8c6c98 | ||
![]() |
282c3fab8c | ||
![]() |
63a808b306 | ||
![]() |
ca7622027d | ||
![]() |
f923078445 | ||
![]() |
f81150ea31 | ||
![]() |
0d057ab60b | ||
![]() |
c5a7879c55 | ||
![]() |
d24a9a2583 | ||
![]() |
6a7ce1639a | ||
![]() |
e75f6f85e7 | ||
![]() |
9d4a8702cb | ||
![]() |
7a91ea7107 | ||
![]() |
0e818dfdc8 | ||
![]() |
2228f00c0a | ||
![]() |
e2e46d675e | ||
![]() |
14b8a1d8a2 | ||
![]() |
7ab07c69aa | ||
![]() |
e9e2e9a711 | ||
![]() |
84de31e85b | ||
![]() |
31cc0ce7a8 | ||
![]() |
5c7dc3097a | ||
![]() |
3a09999cca | ||
![]() |
cf1e468395 | ||
![]() |
871e529bf2 | ||
![]() |
5e9ccd440e | ||
![]() |
657bc32e9b | ||
![]() |
d7a48bd855 | ||
![]() |
d2746689f9 | ||
![]() |
f093228f71 | ||
![]() |
f3e054d15e | ||
![]() |
86a3ad4b1f | ||
![]() |
aa5a768ef0 | ||
![]() |
b6cb37db43 | ||
![]() |
3ca25590c7 | ||
![]() |
c3b902ae65 | ||
![]() |
014602266b | ||
![]() |
696a2148f0 | ||
![]() |
e086cf56fc | ||
![]() |
6d5dcbe89f | ||
![]() |
54f5042c3c | ||
![]() |
927f38e999 | ||
![]() |
638ec9c2ea | ||
![]() |
27c5119664 | ||
![]() |
8542000540 | ||
![]() |
9c5c53f4ae | ||
![]() |
a2ca9361e1 | ||
![]() |
9042baf13d | ||
![]() |
957cff3447 | ||
![]() |
fbd6d11a5c | ||
![]() |
6ccb766b2e | ||
![]() |
df7be136f8 | ||
![]() |
3abbb08e31 | ||
![]() |
715b6df2fb | ||
![]() |
a64fe45175 | ||
![]() |
f0690d0ac5 | ||
![]() |
3049bc8215 | ||
![]() |
4f9b59ed6d | ||
![]() |
d05e849299 | ||
![]() |
76f06e120c | ||
![]() |
fdf83eaef8 | ||
![]() |
b214364ee9 | ||
![]() |
adfcaa2f09 | ||
![]() |
bd3c8d19fa | ||
![]() |
7ae2d6d5bb | ||
![]() |
44e5a98188 | ||
![]() |
093722c7d6 | ||
![]() |
ca2dd38f9b | ||
![]() |
bf0342eb06 | ||
![]() |
cf7af8e3aa | ||
![]() |
19f8f58618 | ||
![]() |
649d82425a | ||
![]() |
1f45db0fac | ||
![]() |
49ceb6f6e5 | ||
![]() |
9d0eb9fb08 | ||
![]() |
ec65a69496 | ||
![]() |
f498a64413 | ||
![]() |
4b993c932e | ||
![]() |
5aed1d0e97 | ||
![]() |
4f70e6b881 | ||
![]() |
e3751f5a57 | ||
![]() |
46d9280490 | ||
![]() |
40c0a9bf51 | ||
![]() |
0ca828325d | ||
![]() |
aa74a68ca8 | ||
![]() |
419922a2aa | ||
![]() |
e970e6cbc5 | ||
![]() |
90b04ddd9b | ||
![]() |
96ce701f64 | ||
![]() |
b506c94d9a | ||
![]() |
d4962685d6 | ||
![]() |
24a6013195 | ||
![]() |
de3962412f | ||
![]() |
0603c57a60 | ||
![]() |
71464e6914 | ||
![]() |
2a96fd466f | ||
![]() |
d6e27ee9b5 | ||
![]() |
a21511b683 | ||
![]() |
984fa08f14 | ||
![]() |
fbc2f999bf | ||
![]() |
86cb96cd21 | ||
![]() |
9bc955a5d4 | ||
![]() |
49dc6ac30b | ||
![]() |
5b93ce3481 | ||
![]() |
369adbdfe9 | ||
![]() |
c5b6376980 | ||
![]() |
64c7bc78af | ||
![]() |
3a4873aa1b | ||
![]() |
e0a3b2d8c3 | ||
![]() |
10f6e4e751 | ||
![]() |
3a374dcdba | ||
![]() |
b6f4611994 | ||
![]() |
b58f7a0c4d | ||
![]() |
3b482b265b | ||
![]() |
f94b51e410 | ||
![]() |
6185336c3a | ||
![]() |
bd8829a432 | ||
![]() |
89d8d11db3 | ||
![]() |
644baca439 | ||
![]() |
3cc111e5dd | ||
![]() |
baa614c094 | ||
![]() |
95cb9460d4 | ||
![]() |
e433c5160a | ||
![]() |
440b7171b0 | ||
![]() |
cfd2e57950 | ||
![]() |
a5d4855530 | ||
![]() |
448a034766 | ||
![]() |
d228a96944 | ||
![]() |
51a3fb98e1 | ||
![]() |
04dd345ef4 | ||
![]() |
3ba221831d | ||
![]() |
b30a65015d | ||
![]() |
0ea71db628 | ||
![]() |
b64d007315 | ||
![]() |
88f954fc28 | ||
![]() |
f6acb174a4 | ||
![]() |
b8a927b163 | ||
![]() |
4e93b06772 | ||
![]() |
65934f5e00 | ||
![]() |
fb89aab252 | ||
![]() |
db9a0edce5 | ||
![]() |
a85baa5cca | ||
![]() |
7d6125c367 | ||
![]() |
2caeea2a14 | ||
![]() |
c3e2447924 | ||
![]() |
f12d888e42 | ||
![]() |
f92966d57a | ||
![]() |
245c75ab2c | ||
![]() |
ef0b6d947e | ||
![]() |
bd511d17e9 | ||
![]() |
b0b73b5d97 | ||
![]() |
a8d2773f5d | ||
![]() |
9749a79f7f | ||
![]() |
6a7cbf1a47 | ||
![]() |
ff1d1474d4 | ||
![]() |
2b18df8398 | ||
![]() |
d978d35533 | ||
![]() |
10cd70e858 | ||
![]() |
0552c2f245 | ||
![]() |
a08df8f9ef | ||
![]() |
1a906b746e | ||
![]() |
c916732f4e | ||
![]() |
22df6d5638 | ||
![]() |
4783f264df | ||
![]() |
64c3ff4573 | ||
![]() |
9c105c988c | ||
![]() |
c7bf92f20b | ||
![]() |
15548d9bb2 | ||
![]() |
441379b6e8 | ||
![]() |
6e5d117720 | ||
![]() |
c1aea93389 | ||
![]() |
e28af61ac2 | ||
![]() |
315180816d | ||
![]() |
fc94c9602b | ||
![]() |
25c8796888 | ||
![]() |
ea871aaa7b | ||
![]() |
be376ef2ac | ||
![]() |
0b77b93801 | ||
![]() |
9d5ee6291d | ||
![]() |
0476f0d367 | ||
![]() |
4a98a0da86 | ||
![]() |
9cb5e7809a | ||
![]() |
3a22456032 | ||
![]() |
0d609d9e2c | ||
![]() |
555313fc4c | ||
![]() |
8a609505f1 | ||
![]() |
cc0f792e60 | ||
![]() |
9f3e69dbf1 | ||
![]() |
7d42a41df4 | ||
![]() |
f7593002d1 | ||
![]() |
262a7797e7 | ||
![]() |
6364767d5a | ||
![]() |
4d285fe4b6 | ||
![]() |
cde46b77de | ||
![]() |
722ddfb736 | ||
![]() |
155c026e99 | ||
![]() |
44cb7e148b | ||
![]() |
3a517317a3 | ||
![]() |
b32cbe1651 | ||
![]() |
18b0a44ae3 | ||
![]() |
dd68943ae8 | ||
![]() |
f019490989 | ||
![]() |
4ee7fa2af7 | ||
![]() |
032a3f562f | ||
![]() |
9d438035cb | ||
![]() |
7f5d792ff4 | ||
![]() |
5d0c22c374 | ||
![]() |
e7a52289c8 | ||
![]() |
4997786b9f | ||
![]() |
5b51aa2b78 | ||
![]() |
5c565def63 | ||
![]() |
c4502c2762 | ||
![]() |
2ea79db343 | ||
![]() |
c92924db15 | ||
![]() |
45ce804ee9 | ||
![]() |
2e9c147c44 | ||
![]() |
24d09cc134 | ||
![]() |
e7109a0855 | ||
![]() |
b7964f7f12 | ||
![]() |
31bb92c398 | ||
![]() |
d95731e87b | ||
![]() |
bff3c47dc2 | ||
![]() |
94b32c38e4 | ||
![]() |
2214ab3a17 | ||
![]() |
8631adaaec | ||
![]() |
2cfada1fc8 | ||
![]() |
065e82534e | ||
![]() |
a6cbda63b1 | ||
![]() |
15ddd0f680 | ||
![]() |
841261a36e | ||
![]() |
f30a2dc43c | ||
![]() |
37132e8d3e | ||
![]() |
b9dd88e30f | ||
![]() |
e3ec2c22a2 | ||
![]() |
e36dbdead3 | ||
![]() |
4358574889 | ||
![]() |
bbdd6684fe | ||
![]() |
07cd774619 | ||
![]() |
83b077d5f3 | ||
![]() |
36104652cd | ||
![]() |
d75c797553 | ||
![]() |
3fa9e6d5b2 | ||
![]() |
bbb532b5aa | ||
![]() |
15621d76b9 | ||
![]() |
73eb4e3389 | ||
![]() |
3be0eb2ac6 | ||
![]() |
c195b1ecb9 | ||
![]() |
4c265a674e | ||
![]() |
634b4f392a | ||
![]() |
2cca7a8308 | ||
![]() |
ffc584e5e6 | ||
![]() |
9a73aba7fc | ||
![]() |
22adb293f7 | ||
![]() |
e8534e61cd | ||
![]() |
6168e4668c | ||
![]() |
aa0d1c27c8 | ||
![]() |
35859f566b | ||
![]() |
1ad7055fbe | ||
![]() |
2287aa9a06 | ||
![]() |
28d358aa43 | ||
![]() |
8744d1a9ec | ||
![]() |
68f9a32629 | ||
![]() |
2f5062b33e | ||
![]() |
57b624d2da | ||
![]() |
69539728ec | ||
![]() |
92b014a706 | ||
![]() |
a5ace90bd6 | ||
![]() |
8212ca3aee | ||
![]() |
0b9b0a39d8 | ||
![]() |
bcf6dad5de | ||
![]() |
3f0347bc18 | ||
![]() |
b401c225dd | ||
![]() |
721e6ba935 | ||
![]() |
fa342c42fb | ||
![]() |
c31e0d72b3 | ||
![]() |
f672b1b810 | ||
![]() |
4f324c7fd7 | ||
![]() |
0137664296 | ||
![]() |
69313054a2 | ||
![]() |
d6c4c3c66a | ||
![]() |
6d0753c5e9 | ||
![]() |
019efd6db7 | ||
![]() |
4b3d739774 | ||
![]() |
c345b1aa19 | ||
![]() |
d6d4d4a8a3 | ||
![]() |
85017433db | ||
![]() |
d03248c10f | ||
![]() |
b86cf5ac80 | ||
![]() |
abc36b6f9b | ||
![]() |
88fcce18f9 | ||
![]() |
7137481251 | ||
![]() |
842b4929e4 | ||
![]() |
c9a923bb34 | ||
![]() |
d68429b49b | ||
![]() |
38abd9e756 | ||
![]() |
0e35750741 | ||
![]() |
e3ef019995 |
5
.dockerignore
Normal file
@@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
.git
|
||||
.DS_Store
|
||||
*.log
|
||||
engine
|
16
.editorconfig
Normal file
@@ -0,0 +1,16 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
21
.formal-git/components
Normal file
@@ -0,0 +1,21 @@
|
||||
split-view
|
||||
kbs
|
||||
folders
|
||||
workspaces
|
||||
mods
|
||||
tests
|
||||
glance
|
||||
media
|
||||
images
|
||||
vendor
|
||||
tabs
|
||||
compact-mode
|
||||
common
|
||||
fonts
|
||||
welcome
|
||||
scripts
|
||||
workflows
|
||||
winsign
|
||||
flatpak
|
||||
configs
|
||||
l10n
|
1
.formal-git/template
Normal file
@@ -0,0 +1 @@
|
||||
{type}: {message}, b={bugId}, c={components}
|
7
.gitattributes
vendored
@@ -1 +1,8 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
*.patch linguist-language=C++
|
||||
*.d.ts linguist-language=TypeScript
|
||||
|
||||
src/zen/tests/*.js linguist-language=Test
|
||||
|
2
.github/FUNDING.yml
vendored
@@ -1,2 +0,0 @@
|
||||
patreon: zen_browser
|
||||
ko_fi: zen_browser
|
113
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -4,42 +4,82 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for filing a bug report.
|
||||
<p align="center">
|
||||
<a href="https://zen-browser.app">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-light.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-dark.svg">
|
||||
<img src="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-light.svg" alt="Zen Logo" width="64" height="64">
|
||||
</picture>
|
||||
<img src="https://raw.githubusercontent.com/zen-browser/desktop/dev/docs/assets/zen-browser.svg" alt="Zen Browser Text" width="156" height="64">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
## Important
|
||||
- Please search existing issues to avoid creating duplicates.
|
||||
- For enhancement requests, please use GitHub Discussions.
|
||||
- Please fill out the template below to the best of your ability.
|
||||
<p align="center"><em>Thank you for filing a bug report!</em></p>
|
||||
|
||||
> [!IMPORTANT]
|
||||
> - Please provide descriptive titles. Bad titles do more harm than good.
|
||||
> - Please search existing issues to avoid creating duplicates.
|
||||
> - For enhancement requests, please use GitHub Discussions.
|
||||
> - Please fill out the template below to the best of your ability.
|
||||
> - Please describe the issue as much as possible and provide steps to reproduce it along with visual aids if possible.
|
||||
- type: checkboxes
|
||||
id: captchas
|
||||
attributes:
|
||||
label: Captchas
|
||||
description: Just making sure you did actually read the instructions.
|
||||
label: Preliminary Checks
|
||||
description: Please confirm the following before submitting a bug report. This helps us triage and resolve issues more efficiently.
|
||||
options:
|
||||
- label: I have read the instructions.
|
||||
- label: I have read and understood the important section above.
|
||||
required: true
|
||||
- label: I have searched existing issues and avoided creating duplicates.
|
||||
required: true
|
||||
- label: I am not filing an enhancement request.
|
||||
required: true
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
required: true
|
||||
- label: I have checked that this issue can be reproduced once I removed all my Mods and Custom CSS.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also tell us, what did you expect to happen?
|
||||
description: Describe the bug clearly and concisely.
|
||||
placeholder: Tell us what you see!
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: firefox
|
||||
- type: input
|
||||
id: expected-behavior
|
||||
attributes:
|
||||
label: Reproducible?
|
||||
description: Is this issue reproducible on Firefox?
|
||||
options:
|
||||
- label: I have checked that this issue cannot be reproduced on Mozilla Firefox.
|
||||
label: Expected behavior
|
||||
description: Please write a description of what was supposed to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: actual-behavior
|
||||
attributes:
|
||||
label: Actual behavior
|
||||
description: Please write a description of what actually happened.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: how-to-reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Please Provide numbered steps to reproduce this issue so developers can replicate them easily.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots and videos
|
||||
description: |
|
||||
If applicable, add screenshots or videos to help explain your problem.
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of our software are you running? Please DO NOT report Classic bugs.
|
||||
placeholder: 1.0.0
|
||||
description: What version of our software are you running? Please do not use "latest" or "newest" as version numbers. Go to `Help -> About Zen` to find the version number.
|
||||
placeholder: 1.0.0b
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
@@ -48,15 +88,48 @@ body:
|
||||
label: What platform are you seeing the problem on?
|
||||
multiple: true
|
||||
options:
|
||||
- Linux
|
||||
- Linux (AppImage)
|
||||
- Linux (Flatpak)
|
||||
- Linux (Tarball)
|
||||
- macOS - aarch64
|
||||
- macOS - Intel
|
||||
- Windows
|
||||
- Windows - aarch64
|
||||
- Windows - x64
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: component
|
||||
attributes:
|
||||
label: What component is this issue related to?
|
||||
options:
|
||||
- Other
|
||||
- Bookmarks
|
||||
- Compact Mode
|
||||
- Customizable UI / Toolbars
|
||||
- Extensions
|
||||
- Glance
|
||||
- Keyboard Shortcuts
|
||||
- Localization
|
||||
- Media Controler
|
||||
- Mods / Themes
|
||||
- Performance
|
||||
- Privacy
|
||||
- Security
|
||||
- Settings
|
||||
- Split View
|
||||
- Sync
|
||||
- Tab Folders
|
||||
- Tab unloading
|
||||
- Tabs
|
||||
- URL Bar
|
||||
- Workspaces
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
label: Relevant log output if applicable
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
|
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Feature Request
|
||||
url: https://github.com/zen-browser/desktop/discussions
|
||||
about: Please use GitHub discussions for feature requests.
|
||||
|
58
.github/advanced-issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
policy:
|
||||
- section:
|
||||
- id: [component]
|
||||
label:
|
||||
# Make sure it's in sync with the dropdown in the issue template
|
||||
- name: 'component: sync'
|
||||
keys: ['Sync']
|
||||
- name: 'component: compact-mode'
|
||||
keys: ['Compact Mode']
|
||||
- name: 'component: workspaces'
|
||||
keys: ['Workspaces']
|
||||
- name: 'component: mods-themes'
|
||||
keys: ['Mods / Themes']
|
||||
- name: 'component: bookmarks'
|
||||
keys: ['Bookmarks']
|
||||
- name: 'component: glance'
|
||||
keys: ['Glance']
|
||||
- name: 'component: url-bar'
|
||||
keys: ['URL Bar']
|
||||
- name: 'component: tabs'
|
||||
keys: ['Tabs']
|
||||
- name: 'component: settings'
|
||||
keys: ['Settings']
|
||||
- name: 'component: privacy'
|
||||
keys: ['Privacy']
|
||||
- name: 'component: split-view'
|
||||
keys: ['Split View']
|
||||
- name: 'component: performance'
|
||||
keys: ['Performance']
|
||||
- name: 'component: media-controller'
|
||||
keys: ['Media Controler']
|
||||
- name: 'component: tab-unloading'
|
||||
keys: ['Tab unloading']
|
||||
- name: 'component: tab-folders'
|
||||
keys: ['Tab Folders']
|
||||
- name: 'component: keyboard-shortcuts'
|
||||
keys: ['Keyboard Shortcuts']
|
||||
- name: 'component: security'
|
||||
keys: ['Security']
|
||||
- name: 'component: extensions'
|
||||
keys: ['Extensions']
|
||||
- name: 'component: customizable-ui-toolbars'
|
||||
keys: ['Customizable UI / Toolbars']
|
||||
- name: 'component: localization'
|
||||
keys: ['Localization']
|
||||
- name: 'component: other'
|
||||
keys: ['Other']
|
||||
|
||||
- id: [platform]
|
||||
block-list: ['Other']
|
||||
label:
|
||||
# Make sure it's in sync with the dropdown in the issue template
|
||||
- name: 'platform: linux'
|
||||
keys: ['Linux (AppImage)', 'Linux (Flatpak)', 'Linux (Tarball)']
|
||||
- name: 'platform: macOS'
|
||||
keys: ['macOS - aarch64', 'macOS - Intel']
|
||||
- name: 'platform: windows'
|
||||
keys: ['Windows - x64', 'Windows - aarch64']
|
599
.github/workflows/build.yml
vendored
@@ -16,11 +16,16 @@ on:
|
||||
update_branch:
|
||||
description: 'Update branch with new version'
|
||||
required: true
|
||||
default: 'alpha'
|
||||
default: 'release'
|
||||
type: 'choice'
|
||||
options:
|
||||
- 'alpha'
|
||||
- 'release'
|
||||
- 'twilight'
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: 'boolean'
|
||||
default: false
|
||||
workflow_call:
|
||||
inputs:
|
||||
create_release:
|
||||
@@ -36,100 +41,126 @@ on:
|
||||
update_branch:
|
||||
description: 'Update branch with new version'
|
||||
required: true
|
||||
default: 'alpha'
|
||||
default: 'release'
|
||||
type: 'string'
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: 'boolean'
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
debug-inputs:
|
||||
name: Debug inputs
|
||||
buildid:
|
||||
name: Generate build ID
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
buildids: ${{ steps.get.outputs.bid }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- id: get
|
||||
shell: bash -xe {0}
|
||||
run: |
|
||||
bdat=`date +"%Y%m%d%I%M%S"`
|
||||
echo "bid=${bdat}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Debug
|
||||
run: |
|
||||
echo "create_release: ${{ inputs.create_release }}"
|
||||
echo "update_version: ${{ inputs.update_version }}"
|
||||
echo "use sccache: ${{ inputs.use-sccache }}"
|
||||
echo "update_branch: ${{ inputs.update_branch }}"
|
||||
echo "GITHUB_REPOSITORY: ${{ github.repository }}"
|
||||
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||
echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}"
|
||||
echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
check-build-is-correct:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [debug-inputs]
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check if correct branch
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
echo "Checking if we are on the correct branch"
|
||||
git branch
|
||||
git status
|
||||
git branch --show-current
|
||||
branch="${{ inputs.update_branch }}"
|
||||
if [[ $branch == "alpha" ]]; then
|
||||
branch="stable"
|
||||
elif [[ $branch == "twilight" ]]; then
|
||||
if [[ $branch == "twilight" ]]; then
|
||||
branch="dev"
|
||||
elif [[ $branch == "release" ]]; then
|
||||
branch="stable"
|
||||
fi
|
||||
if [[ $(git branch --show-current) != $branch ]]; then
|
||||
echo ">>> Branch mismatch"
|
||||
exit 1
|
||||
# exit 1
|
||||
else
|
||||
echo ">>> Branch matches"
|
||||
fi
|
||||
|
||||
start-self-host:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Download aws-cli
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
sudo ./aws/install --update
|
||||
|
||||
- name: Start self-hosted runner
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
echo "Starting self-hosted runner"
|
||||
echo "${{ secrets.SELF_HOSTED_RUNNER_START_SCRIPT }}" | base64 -d > start.sh
|
||||
sudo chmod +x start.sh
|
||||
bash ./start.sh
|
||||
|
||||
- name: Remove self-hosted runner script
|
||||
if: always() && ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
echo "Removing self-hosted runner script"
|
||||
rm start.sh || true
|
||||
|
||||
build-data:
|
||||
permissions:
|
||||
contents: write
|
||||
name: Generate build data
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-build-is-correct
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: buildid
|
||||
outputs:
|
||||
build_date: ${{ steps.data.outputs.builddate }}
|
||||
version: ${{ steps.data.outputs.version }}
|
||||
build_time: ${{ steps.data.outputs.buildtime }}
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Setup Surfer
|
||||
run: |
|
||||
npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Bump version
|
||||
if: ${{ inputs.update_version && inputs.update_branch == 'alpha' }}
|
||||
if: ${{ inputs.update_version && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
pnpm surfer ci --brand ${{ inputs.update_branch }} --bump prerelease
|
||||
npm run surfer -- ci --brand ${{ inputs.update_branch }} --bump prerelease
|
||||
|
||||
- name: Bump version without new version
|
||||
if: ${{ !inputs.update_version || inputs.update_branch == 'twilight' }}
|
||||
run: |
|
||||
pnpm surfer ci --brand ${{ inputs.update_branch }}
|
||||
npm run surfer -- ci --brand ${{ inputs.update_branch }}
|
||||
|
||||
- name: Debug
|
||||
run: |
|
||||
@@ -145,54 +176,52 @@ jobs:
|
||||
echo "version=$(surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||
echo "buildtime=$(date +"%H:%M:%S")" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
if: ${{ inputs.update_version }}
|
||||
with:
|
||||
commit_message: 🔖 Update version to ${{ steps.data.outputs.version }}
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||
|
||||
lint:
|
||||
uses: ./.github/workflows/code-linter.yml
|
||||
needs: [build-data]
|
||||
name: Lint
|
||||
|
||||
check-release:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build-data]
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [build-data, lint]
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Setup surfer
|
||||
- name: Setup Surfer
|
||||
run: |
|
||||
npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Activate surfer CLI
|
||||
- name: Activate Surfer CLI
|
||||
run: |
|
||||
echo "There's a bug in the surfer CLI, we run this so that surfer sets everything up correctly"
|
||||
pnpm surfer ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||
npm run surfer -- ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Check version
|
||||
run: |
|
||||
echo "$(pwd)"
|
||||
ls .
|
||||
echo "version=$(pnpm surfer get version | xargs)" >> $GITHUB_OUTPUT
|
||||
if [[ $(pnpm surfer get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
||||
echo $(npm run --silent surfer -- get version | xargs)
|
||||
echo "version=$(npm run --silent surfer -- get version | xargs)" >> $GITHUB_OUTPUT
|
||||
if [[ $(npm run --silent surfer -- get version | xargs) == ${{ needs.build-data.outputs.version }} ]]; then
|
||||
echo ">>> Version matches"
|
||||
else
|
||||
echo ">>> Version mismatch"
|
||||
@@ -202,71 +231,66 @@ jobs:
|
||||
source:
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [build-data, check-release]
|
||||
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup git
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||
- name: Load Surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.update_branch }} --display-version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- name: Download firefox source and dependancies
|
||||
run: pnpm surfer download --verbose
|
||||
- name: Download Firefox source and dependencies
|
||||
run: npm run download --verbose
|
||||
|
||||
- name: Import
|
||||
run: pnpm surfer import --verbose
|
||||
run: npm run import -- --verbose
|
||||
|
||||
- name: Compress
|
||||
run: |
|
||||
cd engine
|
||||
# -h is used to dereference symlinks
|
||||
tar --use-compress-program=zstd -hcf ../zen.source.tar.gz *
|
||||
tar --use-compress-program=zstd -hcf ../zen.source.tar.zst *
|
||||
cd ..
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.source.tar.gz
|
||||
path: ./zen.source.tar.gz
|
||||
retention-days: 5
|
||||
name: zen.source.tar.zst
|
||||
path: ./zen.source.tar.zst
|
||||
|
||||
windows-step-1:
|
||||
name: Windows build step 1 (PGO build)
|
||||
uses: ./.github/workflows/windows-release-build.yml
|
||||
needs: [build-data]
|
||||
needs: [build-data, buildid]
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
with:
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
generate-gpo: true
|
||||
profile-data-path-archive: zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
profile-data-path-archive: zen-windows-profile-data-and-jarlog.zip
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
|
||||
windows-step-2:
|
||||
name: Windows build step 2 (Generate profile data)
|
||||
@@ -286,11 +310,13 @@ jobs:
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data, windows-step-2]
|
||||
needs: [build-data, windows-step-2, start-self-host, buildid]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
generate-gpo: false
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
linux:
|
||||
name: Linux build
|
||||
@@ -298,10 +324,12 @@ jobs:
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data]
|
||||
needs: [build-data, start-self-host, buildid]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
mac:
|
||||
name: macOS build
|
||||
@@ -309,210 +337,278 @@ jobs:
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data]
|
||||
needs: [build-data, buildid]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
MOZ_BUILD_DATE: ${{needs.buildid.outputs.buildids}}
|
||||
use-sccache: ${{ inputs.use-sccache }}
|
||||
|
||||
mac-uni:
|
||||
name: macOS build (Universal)
|
||||
uses: ./.github/workflows/macos-universal-release-build.yml
|
||||
permissions:
|
||||
contents: write
|
||||
secrets: inherit
|
||||
needs: [build-data, mac]
|
||||
with:
|
||||
build-version: ${{ needs.build-data.outputs.version }}
|
||||
release-branch: ${{ inputs.update_branch }}
|
||||
|
||||
appimage:
|
||||
name: AppImage build - Linux ${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
name: AppImage build - Linux ${{ matrix.arch }}
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
strategy:
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
arch: [x86_64, aarch64]
|
||||
needs: [linux]
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
npm install -g pnpm
|
||||
npm install
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install libfuse2 desktop-file-utils appstream
|
||||
sudo apt-get -y install libfuse2 desktop-file-utils appstream
|
||||
|
||||
- name: Download linux build
|
||||
- name: Download Linux build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
name: zen.linux-${{ matrix.arch }}.tar.xz
|
||||
|
||||
- name: Execute AppImage build
|
||||
run: |
|
||||
set -eux
|
||||
rm AppDir/.DirIcon || true
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon
|
||||
export ARCH=${{ matrix.arch }}
|
||||
UPINFO="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-$ARCH.AppImage.zsync"
|
||||
rm build/AppDir/.DirIcon || true
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/usr/share/icons/hicolor/128x128/apps/zen.png
|
||||
cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/zen.png && ln -s zen.png build/AppDir/.DirIcon
|
||||
|
||||
if [ "${{ inputs.update_branch }}" = "twilight" ]; then
|
||||
sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' AppDir/zen.desktop
|
||||
sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' build/AppDir/zen.desktop
|
||||
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
|
||||
fi
|
||||
|
||||
APPDIR=AppDir
|
||||
APPDIR=build/AppDir
|
||||
tar -xvf *.tar.* && rm -rf *.tar.*
|
||||
mv zen/* $APPDIR/
|
||||
wget https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
|
||||
wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||
wget "https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-squashfs-lite-$ARCH"
|
||||
chmod +x *.AppImage
|
||||
chmod +x ./AppDir/AppRun
|
||||
chmod +x ./uruntime-appimage-squashfs-lite-"$ARCH"
|
||||
chmod +x ./build/AppDir/AppRun
|
||||
|
||||
# keep the uruntime mountpoint (massively speeds up launch time)
|
||||
sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-appimage-squashfs-lite-"$ARCH"
|
||||
|
||||
echo "AppDir: $APPDIR"
|
||||
ls -al
|
||||
find .
|
||||
ls -al "$APPDIR"
|
||||
ARCH=x86_64 ./appimagetool-x86_64.AppImage --comp zstd --mksquashfs-opt -Xcompression-level --mksquashfs-opt 10 \
|
||||
-u "gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync" \
|
||||
"$APPDIR" zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
./appimagetool-x86_64.AppImage -u "$UPINFO" "$APPDIR" zen-"$ARCH".AppImage --runtime-file ./uruntime-appimage-squashfs-lite-"$ARCH"
|
||||
mkdir dist
|
||||
mv zen*AppImage* dist/.
|
||||
unset ARCH
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage
|
||||
retention-days: 5
|
||||
name: zen-${{ matrix.arch }}.AppImage
|
||||
path: ./dist/zen-${{ matrix.arch }}.AppImage
|
||||
|
||||
- name: Upload artifact (ZSync)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||
path: ./dist/zen-${{ matrix.generic == true && 'generic' || 'specific' }}.AppImage.zsync
|
||||
retention-days: 5
|
||||
name: zen-${{ matrix.arch }}.AppImage.zsync
|
||||
path: ./dist/zen-${{ matrix.arch }}.AppImage.zsync
|
||||
|
||||
stop-self-hosted:
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
needs: [windows-step-3, linux]
|
||||
if: always()
|
||||
steps:
|
||||
- name: Download aws-cli
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
unzip awscliv2.zip
|
||||
sudo ./aws/install --update
|
||||
|
||||
- name: Stop self-hosted runner
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
echo "Stopping self-hosted runner"
|
||||
echo "${{ secrets.SELF_HOSTED_RUNNER_STOP_SCRIPT }}" | base64 -d > stop.sh
|
||||
sudo chmod +x stop.sh
|
||||
bash ./stop.sh > /dev/null
|
||||
|
||||
- name: Remove self-hosted runner script
|
||||
if: always() && ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
echo "Removing self-hosted runner script"
|
||||
rm stop.sh || true
|
||||
|
||||
release:
|
||||
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
|
||||
permissions: write-all
|
||||
name: Release
|
||||
needs: [build-data, linux, windows-step-3, check-release, mac, appimage, source]
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
[
|
||||
build-data,
|
||||
linux,
|
||||
windows-step-3,
|
||||
check-release,
|
||||
mac-uni,
|
||||
appimage,
|
||||
source,
|
||||
lint,
|
||||
stop-self-hosted,
|
||||
]
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
environment:
|
||||
name: ${{ inputs.update_branch == 'alpha' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
||||
name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Git Pull
|
||||
run: |
|
||||
git pull
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v4
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
|
||||
- name: List
|
||||
run: find .
|
||||
|
||||
- name: Clone updates repo
|
||||
- name: Checkout updates repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/updates-server
|
||||
path: updates-server
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Download object files
|
||||
if: ${{ inputs.update_branch == 'release' }}
|
||||
run: |
|
||||
git clone https://github.com/zen-browser/windows-binaries.git .github/workflows/object --depth 1
|
||||
|
||||
- name: Copy update manifests
|
||||
env:
|
||||
RELEASE_BRANCH: ${{ inputs.update_branch }}
|
||||
run: |
|
||||
cd updates-server
|
||||
mkdir -p updates
|
||||
cp -a ../linux_update_manifest_generic/. updates/
|
||||
cp -a ../linux_update_manifest_specific/. updates/
|
||||
cp -a ../linux_update_manifest_x86_64/. updates/
|
||||
cp -a ../linux_update_manifest_aarch64/. updates/
|
||||
|
||||
if [[ $RELEASE_BRANCH == 'alpha' ]]; then
|
||||
cp -a ../.github/workflows/object/windows-x64-signed-generic/update_manifest/. updates/
|
||||
cp -a ../.github/workflows/object/windows-x64-signed-specific/update_manifest/. updates/
|
||||
if [[ $RELEASE_BRANCH == 'release' ]]; then
|
||||
cp -a ../.github/workflows/object/windows-x64-signed-x86_64/update_manifest/. updates/
|
||||
cp -a ../.github/workflows/object/windows-x64-signed-arm64/update_manifest/. updates/
|
||||
else
|
||||
cp -a ../windows_update_manifest_generic/. updates/
|
||||
cp -a ../windows_update_manifest_specific/. updates/
|
||||
cp -a ../windows_update_manifest_x86_64/. updates/
|
||||
cp -a ../windows_update_manifest_arm64/. updates/
|
||||
fi
|
||||
|
||||
cp -a ../macos_update_manifest_aarch64/. updates/
|
||||
cp -a ../macos_update_manifest_x64/. updates/
|
||||
cp -a ../macos_update_manifest/. updates/
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: 🚀 Update update manifests
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||
repository: ./updates-server
|
||||
|
||||
# If we are on twilight, we want to just update the twilight tag's release
|
||||
- name: Update twilight tag
|
||||
- name: Generate Release Notes
|
||||
env:
|
||||
RELEASE_BRANCH: ${{ inputs.update_branch }}
|
||||
run: bash .github/workflows/src/generate_release_notes.sh
|
||||
|
||||
# If we are on Twilight, we want to just update the Twilight tag's release
|
||||
- name: Update Twilight tag
|
||||
if: ${{ inputs.update_branch == 'twilight' }}
|
||||
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||
uses: softprops/action-gh-release@v2.2.2
|
||||
with:
|
||||
body_path: release_notes.md
|
||||
files: |
|
||||
zen.source.tar.gz
|
||||
zen.linux-generic.tar.bz2
|
||||
zen.linux-specific.tar.bz2
|
||||
zen-generic.AppImage
|
||||
zen-generic.AppImage.zsync
|
||||
zen-specific.AppImage
|
||||
zen-specific.AppImage.zsync
|
||||
zen.win-generic.zip
|
||||
zen.win-specific.zip
|
||||
linux.mar
|
||||
linux-generic.mar
|
||||
windows-generic.mar
|
||||
windows.mar
|
||||
macos-x64.mar
|
||||
macos-aarch64.mar
|
||||
zen.installer.exe
|
||||
zen.installer-generic.exe
|
||||
zen.macos-x64.dmg
|
||||
zen.macos-aarch64.dmg
|
||||
automatic_release_tag: 'twilight'
|
||||
title: 'Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})'
|
||||
./zen.source.tar.zst/*
|
||||
./zen.linux-x86_64.tar.xz/*
|
||||
./zen.linux-aarch64.tar.xz/*
|
||||
./zen-x86_64.AppImage/*
|
||||
./zen-x86_64.AppImage.zsync/*
|
||||
./zen-aarch64.AppImage/*
|
||||
./zen-aarch64.AppImage.zsync/*
|
||||
./zen.win-x86_64.zip/*
|
||||
./zen.win-arm64.zip/*
|
||||
./linux.mar/*
|
||||
./linux-aarch64.mar/*
|
||||
./windows.mar/*
|
||||
./windows-arm64.mar/*
|
||||
./macos.mar/*
|
||||
./zen.installer.exe/*
|
||||
./zen.installer-arm64.exe/*
|
||||
./zen.macos-universal.dmg/*
|
||||
tag_name: 'twilight'
|
||||
name: 'Twilight build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }} at ${{ needs.build-data.outputs.build_time }})'
|
||||
draft: false
|
||||
generate_release_notes: false
|
||||
prerelease: true
|
||||
repo_token: ${{ github.token }}
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
fail_on_unmatched_files: false
|
||||
env:
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
|
||||
- name: release-github
|
||||
uses: 'marvinpinto/action-automatic-releases@latest'
|
||||
if: ${{ inputs.update_branch == 'alpha' }}
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v2.2.2
|
||||
if: ${{ inputs.update_branch == 'release' }}
|
||||
with:
|
||||
repo_token: '${{ secrets.DEPLOY_KEY }}'
|
||||
automatic_release_tag: ${{ needs.build-data.outputs.version }}
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
tag_name: ${{ needs.build-data.outputs.version }}
|
||||
prerelease: false
|
||||
title: 'Alpha build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
|
||||
fail_on_unmatched_files: false
|
||||
generate_release_notes: false
|
||||
name: 'Release build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
|
||||
body_path: release_notes.md
|
||||
files: |
|
||||
zen.source.tar.gz
|
||||
zen.linux-generic.tar.bz2
|
||||
zen.linux-specific.tar.bz2
|
||||
zen-generic.AppImage
|
||||
zen-generic.AppImage.zsync
|
||||
zen-specific.AppImage
|
||||
zen-specific.AppImage.zsync
|
||||
.github/workflows/object/windows-x64-signed-generic/zen.win-generic.zip
|
||||
.github/workflows/object/windows-x64-signed-specific/zen.win-specific.zip
|
||||
linux.mar
|
||||
linux-generic.mar
|
||||
.github/workflows/object/windows-x64-signed-generic/windows-generic.mar
|
||||
.github/workflows/object/windows-x64-signed-specific/windows.mar
|
||||
macos-x64.mar
|
||||
macos-aarch64.mar
|
||||
.github/workflows/object/windows-x64-signed-specific/zen.installer.exe
|
||||
.github/workflows/object/windows-x64-signed-generic/zen.installer-generic.exe
|
||||
zen.macos-x64.dmg
|
||||
zen.macos-aarch64.dmg
|
||||
./zen.source.tar.zst/*
|
||||
./zen.linux-x86_64.tar.xz/*
|
||||
./zen.linux-aarch64.tar.xz/*
|
||||
./zen-x86_64.AppImage/*
|
||||
./zen-x86_64.AppImage.zsync/*
|
||||
./zen-aarch64.AppImage/*
|
||||
./zen-aarch64.AppImage.zsync/*
|
||||
./.github/workflows/object/windows-x64-signed-x86_64/zen.win-x86_64.zip
|
||||
./.github/workflows/object/windows-x64-signed-arm64/zen.win-arm64.zip
|
||||
./linux.mar/*
|
||||
./linux-aarch64.mar/*
|
||||
./.github/workflows/object/windows-x64-signed-x86_64/windows.mar
|
||||
./.github/workflows/object/windows-x64-signed-arm64/windows-arm64.mar
|
||||
./macos.mar/*
|
||||
./.github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe
|
||||
./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe
|
||||
./zen.macos-universal.dmg/*
|
||||
|
||||
prepare-flatpak:
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
permissions: write-all
|
||||
name: Prepare Flatpak
|
||||
needs: [release, linux, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
|
||||
steps:
|
||||
- name: Clone flatpak repo
|
||||
- name: Checkout Flatpak repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/release-utils
|
||||
@@ -524,18 +620,19 @@ jobs:
|
||||
sudo apt-get update
|
||||
npm install
|
||||
|
||||
- name: Generate new flatpak release
|
||||
- name: Generate new Flatpak release
|
||||
run: |
|
||||
npm run build-flatpak -- \
|
||||
--version ${{ needs.build-data.outputs.version }}
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: 🚀 Update releases for flatpak
|
||||
commit_message: 🚀 Update releases for Flatpak
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||
|
||||
- name: Clone flatpak repo
|
||||
- name: Checkout Flatpak repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zen-browser/flatpak
|
||||
@@ -547,82 +644,91 @@ jobs:
|
||||
pwd
|
||||
ls .
|
||||
ls ..
|
||||
mv releases.xml ./flatpak/io.github.zen_browser.zen.metainfo.xml
|
||||
mv releases.xml ./flatpak/app.zen_browser.zen.metainfo.xml
|
||||
# output the version to the file
|
||||
echo -n ${{ needs.build-data.outputs.version }} > ./flatpak/version
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
- name: Commit
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: '[release]: Update flatpak manifest'
|
||||
commit_message: '[release]: Update Flatpak manifest'
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||
repository: ./flatpak
|
||||
|
||||
- name: Wait 4 minutes for the flatpak repo to update
|
||||
run: sleep 240
|
||||
- name: Wait 2 minutes for the Flatpak repo to update
|
||||
run: sleep 120
|
||||
|
||||
release-flatpak:
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'release' }}
|
||||
permissions: write-all
|
||||
name: Release Flatpak
|
||||
needs: [prepare-flatpak, build-data]
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: blacksmith-2vcpu-ubuntu-2404
|
||||
|
||||
steps:
|
||||
- name: Clone flatpak repo
|
||||
- name: Checkout Flatpak repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: flathub/io.github.zen_browser.zen
|
||||
repository: flathub/app.zen_browser.zen
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Download linux generic build
|
||||
- name: Download Linux x86_64 build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.linux-generic.tar.bz2
|
||||
name: zen.linux-x86_64.tar.xz
|
||||
|
||||
- name: Update repo
|
||||
- name: Download Linux aarch64 build
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen.linux-aarch64.tar.xz
|
||||
|
||||
- name: Update repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: zen-browser
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Download flatpak archive
|
||||
- name: Download Flatpak archive
|
||||
run: |
|
||||
wget https://github.com/zen-browser/flatpak/releases/latest/download/archive.tar -O archive.tar
|
||||
|
||||
- name: Setup git
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Prepare flatpak manifest
|
||||
- name: Prepare Flatpak manifest
|
||||
run: |
|
||||
python3 ./zen-browser/scripts/prepare-flatpak-release.py \
|
||||
--flatpak-archive archive.tar \
|
||||
--version ${{ needs.build-data.outputs.version }} \
|
||||
--linux-archive zen.linux-generic.tar.bz2 \
|
||||
--output io.github.zen_browser.zen.yml \
|
||||
--template-root ./zen-browser/flatpak
|
||||
--linux-archive zen.linux-x86_64.tar.xz \
|
||||
--linux-aarch64-archive zen.linux-aarch64.tar.xz \
|
||||
--output app.zen_browser.zen.yml \
|
||||
--template-root ./zen-browser/build/flatpak
|
||||
|
||||
- name: Commit changes
|
||||
run: |
|
||||
git add io.github.zen_browser.zen.yml
|
||||
git add app.zen_browser.zen.yml
|
||||
git commit -m "Update to version ${{ needs.build-data.outputs.version }}"
|
||||
|
||||
- name: Clean up
|
||||
run: |
|
||||
rm -rf zen-browser
|
||||
rm -rf archive.tar
|
||||
rm -rf zen.linux-generic.tar.bz2
|
||||
rm -rf zen.linux-x86_64.tar.xz
|
||||
rm -rf zen.linux-aarch64.tar.xz
|
||||
|
||||
- name: Upload flatpak manifest
|
||||
- name: Upload Flatpak manifest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: io.github.zen_browser.zen.yml
|
||||
path: ./io.github.zen_browser.zen.yml
|
||||
retention-days: 5
|
||||
name: app.zen_browser.zen.yml
|
||||
path: ./app.zen_browser.zen.yml
|
||||
|
||||
- name: Create pull request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
env:
|
||||
GIT_TRACE: 1
|
||||
GIT_CURL_VERBOSE: 1
|
||||
@@ -638,28 +744,3 @@ jobs:
|
||||
base: master
|
||||
git-token: ${{ secrets.DEPLOY_KEY }}
|
||||
delete-branch: true
|
||||
|
||||
release-homebrew:
|
||||
if: ${{ inputs.create_release && inputs.update_branch == 'alpha' }}
|
||||
permissions: write-all
|
||||
name: Homebrew release
|
||||
needs: [release, mac, build-data]
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- name: Set up Homebrew
|
||||
uses: Homebrew/actions/setup-homebrew@master
|
||||
with:
|
||||
cask: true
|
||||
test-bot: false
|
||||
|
||||
- name: Setup git
|
||||
uses: Homebrew/actions/git-user-config@master
|
||||
with:
|
||||
username: zen-browser-bot
|
||||
|
||||
- name: Bump zen-browser
|
||||
uses: Homebrew/actions/bump-packages@master
|
||||
with:
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
casks: zen-browser
|
||||
|
24
.github/workflows/check-candidate-release.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Check Firefox Candidate Release
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '59 4 * * 2'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check_candidates:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Check for any updates
|
||||
env:
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
DISCORD_PING_IDS: ${{ secrets.DISCORD_PING_IDS }}
|
||||
run: |
|
||||
python3 scripts/check_rc_response.py
|
25
.github/workflows/clear-all-cache.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Cleanup cache
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
runs-on: ubuntu-latest
|
||||
permissions: write-all
|
||||
steps:
|
||||
- name: Cleanup
|
||||
run: |
|
||||
echo "Fetching list of cache key"
|
||||
cacheKeysForPR=$(gh cache list --limit 1000 --json id --jq '.[].id')
|
||||
|
||||
## Setting this to not fail the workflow while deleting cache keys.
|
||||
set +e
|
||||
echo "Deleting caches..."
|
||||
for cacheKey in $cacheKeysForPR
|
||||
do
|
||||
gh cache delete $cacheKey
|
||||
done
|
||||
echo "Done"
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
GH_REPO: ${{ github.repository }}
|
30
.github/workflows/clear-cache.yml
vendored
@@ -1,30 +0,0 @@
|
||||
name: Clear cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
jobs:
|
||||
clear-cache:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clear cache
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
console.log("About to clear")
|
||||
const caches = await github.rest.actions.getActionsCacheList({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
})
|
||||
for (const cache of caches.data.actions_caches) {
|
||||
console.log(cache)
|
||||
github.rest.actions.deleteActionsCacheById({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
cache_id: cache.id,
|
||||
})
|
||||
}
|
||||
console.log("Clear completed")
|
37
.github/workflows/code-linter.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Code Linter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
workflow_call:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !contains(github.event.head_commit.message, '[no-lint]') }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup autopep8
|
||||
run: sudo apt install python3-autopep8
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
|
||||
- name: Lint
|
||||
run: npm run lint
|
34
.github/workflows/issue-labeler.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Issue labeler
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
label-component:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
# required for all workflows
|
||||
issues: write
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Parse issue form
|
||||
uses: stefanbuck/github-issue-parser@v3
|
||||
id: issue-parser
|
||||
with:
|
||||
template-path: .github/ISSUE_TEMPLATE/bug_report.yml
|
||||
|
||||
- name: Set labels based on animals field
|
||||
uses: redhat-plumbers-in-action/advanced-issue-labeler@v2
|
||||
with:
|
||||
issue-form: ${{ steps.issue-parser.outputs.jsonString }}
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
67
.github/workflows/issue-metrics.yml
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
name: Monthly issue metrics
|
||||
permissions:
|
||||
contents: write
|
||||
issues: read
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '3 2 1 * *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: issue metrics
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Get dates for last month
|
||||
shell: bash
|
||||
run: |
|
||||
# Get the current date
|
||||
current_date=$(date +'%Y-%m-%d')
|
||||
|
||||
# Calculate the previous month
|
||||
previous_date=$(date -d "$current_date -1 month" +'%Y-%m-%d')
|
||||
|
||||
# Extract the year and month from the previous date
|
||||
previous_year=$(date -d "$previous_date" +'%Y')
|
||||
previous_month=$(date -d "$previous_date" +'%m')
|
||||
|
||||
# Calculate the first day of the previous month
|
||||
first_day=$(date -d "$previous_year-$previous_month-01" +'%Y-%m-%d')
|
||||
|
||||
# Calculate the last day of the previous month
|
||||
last_day=$(date -d "$first_day +1 month -1 day" +'%Y-%m-%d')
|
||||
|
||||
echo "$first_day..$last_day"
|
||||
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
|
||||
echo "last_month_year=$previous_year" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Run issue-metrics tool
|
||||
uses: github/issue-metrics@v2
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.DEPLOY_KEY }}
|
||||
HIDE_AUTHOR: true
|
||||
HIDE_TIME_TO_ANSWER: true
|
||||
SEARCH_QUERY: 'repo:zen-browser/desktop is:issue created:${{ env.last_month }}'
|
||||
|
||||
- name: Move metrics to docs folder
|
||||
run: |
|
||||
mkdir -p docs/issue-metrics
|
||||
rm -f docs/issue-metrics/${{ env.last_month_year }}_${{ env.last_month }}.md
|
||||
mv issue_metrics.md docs/issue-metrics/${{ env.last_month_year }}_${{ env.last_month }}.md
|
||||
|
||||
- name: Remove metrisc JSON
|
||||
run: |
|
||||
rm -f issue_metrics.json
|
||||
|
||||
- name: Commit changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v5
|
||||
with:
|
||||
commit_message: 'docs: Update monthly issue metrics, b=(no bug), c={docs}'
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
175
.github/workflows/linux-release-build.yml
vendored
@@ -1,4 +1,5 @@
|
||||
name: Linux Release Build
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
@@ -10,38 +11,64 @@ on:
|
||||
description: 'The branch to build'
|
||||
required: true
|
||||
type: string
|
||||
MOZ_BUILD_DATE:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
build-linux:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
runs-on: ubuntu-latest
|
||||
# aarch64 does not need full 16x
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && matrix.arch == 'x86_64') && 'self-hosted' || 'blacksmith-8vcpu-ubuntu-2404' }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
name: Build Linux - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
||||
arch: [x86_64, aarch64]
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
name: Build Linux - ${{ matrix.arch }}
|
||||
|
||||
steps:
|
||||
- name: Free Disk Space (Ubuntu)
|
||||
uses: jlumbroso/free-disk-space@main
|
||||
with:
|
||||
# this might remove tools that are actually needed,
|
||||
# if set to "true" but frees about 6 GB
|
||||
tool-cache: false
|
||||
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup git
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Expose actions cache variables
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env['ACTIONS_CACHE_URL'])
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env['ACTIONS_RUNTIME_TOKEN'])
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
@@ -51,55 +78,36 @@ jobs:
|
||||
set -x
|
||||
sudo apt-get update --fix-missing
|
||||
sudo apt-get update
|
||||
sudo apt-get install dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm
|
||||
|
||||
- name: Configure sccache
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
|
||||
- name: Install sccache
|
||||
env:
|
||||
LINK: https://github.com/mozilla/sccache/releases/download
|
||||
SCCACHE_VERSION: 0.2.13
|
||||
run: |
|
||||
SCCACHE_FILE=sccache-$SCCACHE_VERSION-x86_64-unknown-linux-musl
|
||||
mkdir -p $HOME/.local/bin
|
||||
curl -L "$LINK/$SCCACHE_VERSION/$SCCACHE_FILE.tar.gz" | tar xz
|
||||
mv -f $SCCACHE_FILE/sccache $HOME/.local/bin/sccache
|
||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Save sccache
|
||||
uses: actions/cache@v3
|
||||
continue-on-error: false
|
||||
with:
|
||||
path: /home/runner/.cache/sccache
|
||||
key: ${{ runner.os }}-sccache
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
sudo apt-get install -y python3 python3-pip dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
- name: Load Surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
|
||||
- name: Download firefox source and dependencies
|
||||
run: pnpm surfer download
|
||||
- name: Download Firefox source and dependencies
|
||||
run: npm run download
|
||||
|
||||
- name: Fix Rust version
|
||||
run: |
|
||||
# Install a rust version compatible with LLVM 18
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
rustup target add aarch64-unknown-linux-gnu
|
||||
else
|
||||
rustup target add x86_64-unknown-linux-gnu
|
||||
fi
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
run: |
|
||||
. "$HOME/.cargo/env"
|
||||
npm run import
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
@@ -107,45 +115,62 @@ jobs:
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
export SURFER_PLATFORM="linux"
|
||||
./mach --no-interactive bootstrap --application-choice browser
|
||||
cd ..
|
||||
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_RELEASE_BRANCH: ${{ inputs.release-branch }}
|
||||
continue-on-error: true
|
||||
run: sh .github/workflows/src/release-build.sh
|
||||
|
||||
- name: Build again if it failed
|
||||
if: failure()
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: sh .github/workflows/src/release-build.sh
|
||||
run: |
|
||||
export SURFER_PLATFORM="linux"
|
||||
if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then
|
||||
export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }}
|
||||
fi
|
||||
bash .github/workflows/src/release-build.sh
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm package
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_GA_DISABLE_PGO: true
|
||||
run: |
|
||||
export SURFER_PLATFORM="linux"
|
||||
export ZEN_RELEASE=1
|
||||
npm run package
|
||||
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv dist/zen-*.tar.bz2 "zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2"
|
||||
mv dist/output.mar linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
mv dist/zen-*.tar.xz "zen.linux-${{ matrix.arch }}.tar.xz"
|
||||
mv dist/output.mar linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
|
||||
|
||||
- name: Upload binary
|
||||
- name: Upload build artifact (binary)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
path: ./zen.linux-${{ matrix.generic == true && 'generic' || 'specific' }}.tar.bz2
|
||||
retention-days: 5
|
||||
name: zen.linux-${{ matrix.arch }}.tar.xz
|
||||
path: ./zen.linux-${{ matrix.arch }}.tar.xz
|
||||
|
||||
- name: Upload mar
|
||||
- name: Upload build artifact (.mar)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
path: ./linux${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
retention-days: 5
|
||||
name: linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
|
||||
path: ./linux${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.mar
|
||||
|
||||
- name: Upload update manifests
|
||||
- name: Upload build artifact (update manifests)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: linux_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
retention-days: 5
|
||||
name: linux_update_manifest_${{ matrix.arch }}
|
||||
path: ./dist/update
|
||||
|
216
.github/workflows/macos-release-build.yml
vendored
@@ -1,4 +1,7 @@
|
||||
name: macOS Release Build
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
@@ -10,166 +13,181 @@ on:
|
||||
description: 'The branch to build'
|
||||
required: true
|
||||
type: string
|
||||
MOZ_BUILD_DATE:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
mac-build:
|
||||
name: Build macOS - ${{ matrix.arch }}
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
runs-on: macos-15
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- arch: aarch64
|
||||
os: macos-14
|
||||
- arch: x64
|
||||
os: macos-13
|
||||
|
||||
arch: [x86_64, aarch64]
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
steps:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup git
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Expose actions cache variables
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env['ACTIONS_CACHE_URL'])
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env['ACTIONS_RUNTIME_TOKEN'])
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
# note: This will use the version defined in '.python-version' by default
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
brew install cairo sccache gnu-tar mercurial
|
||||
brew update
|
||||
brew install cairo gnu-tar mercurial
|
||||
sudo pip install setuptools
|
||||
|
||||
# completly uninstall python3 and python3.12
|
||||
brew uninstall --ignore-dependencies python3.12 -f
|
||||
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
python3 -m pip install --user mercurial
|
||||
|
||||
rm '/usr/local/bin/2to3-3.11' # fix Could not symlink bin/2to3-3.11
|
||||
rm '/usr/local/bin/2to3-3.12' # fix Could not symlink bin/2to3-3.12
|
||||
rm /usr/local/bin/2to3 # fix Could not symlink bin/2to3
|
||||
rm '/usr/local/bin/idle3.11' #fix Could not symlink bin/idle3.11
|
||||
rm '/usr/local/bin/idle3.12' # fix Could not symlink bin/idle3.12
|
||||
rm '/usr/local/bin/idle3' # fix Could not symlink bin/idle3
|
||||
rm '/usr/local/bin/pydoc3.11' # fix Could not symlink bin/pydoc3.11
|
||||
rm '/usr/local/bin/pydoc3.12' # fix Could not symlink bin/pydoc3.12
|
||||
rm '/usr/local/bin/pydoc3' # fix Could not symlink bin/pydoc3
|
||||
rm '/usr/local/bin/python3.11' # fix Could not symlink bin/python3.11
|
||||
rm '/usr/local/bin/python3.12' # fix Could not symlink bin/python3.12
|
||||
rm '/usr/local/bin/python3' # fix Could not symlink bin/python3
|
||||
rm '/usr/local/bin/python3.11-config' # fix Could not symlink bin/python3.11-config
|
||||
rm '/usr/local/bin/python3.12-config' # fix Could not symlink bin/python3.12-config
|
||||
rm '/usr/local/bin/python3-config' # fix Could not symlink bin/python3-config
|
||||
rm '/usr/local/bin/2to3-3.11' '/usr/local/bin/2to3-3.12' '/usr/local/bin/2to3'
|
||||
rm '/usr/local/bin/idle3.11' '/usr/local/bin/idle3.12' '/usr/local/bin/idle3'
|
||||
rm '/usr/local/bin/pydoc3.11' '/usr/local/bin/pydoc3.12' '/usr/local/bin/pydoc3'
|
||||
rm '/usr/local/bin/python3.11' '/usr/local/bin/python3.12' '/usr/local/bin/python3'
|
||||
rm '/usr/local/bin/python3.11-config' '/usr/local/bin/python3.12-config' '/usr/local/bin/python3-config'
|
||||
|
||||
brew install watchman
|
||||
|
||||
- name: Force usage fo gnu-tar
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
rustup target add aarch64-apple-darwin
|
||||
else
|
||||
rustup target add x86_64-apple-darwin
|
||||
fi
|
||||
|
||||
- name: Force usage of gnu-tar
|
||||
run: |
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
|
||||
source ~/.bash_profile
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Download firefox source and dependancies
|
||||
run: pnpm surfer download
|
||||
- name: Load surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
|
||||
- name: Download Firefox source and dependencies
|
||||
run: npm run download
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
run: npm run import -- --verbose
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
export SURFER_PLATFORM="darwin"
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
./mach --no-interactive bootstrap --application-choice browser --no-system-changes
|
||||
# Always exist with 0, even if bootstrap fails
|
||||
./mach --no-interactive bootstrap --application-choice browser --no-system-changes --exclude macos-sdk || true
|
||||
cd ..
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
run: |
|
||||
pnpm surfer import --verbose
|
||||
|
||||
- name: Build language packs
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- name: build Zen
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
if test "${{ matrix.arch }}" = "x64"; then
|
||||
export ZEN_DISABLE_LTO=1
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build Zen
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_RELEASE_BRANCH: ${{ inputs.release-branch }}
|
||||
run: |
|
||||
export SURFER_PLATFORM="darwin"
|
||||
if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then
|
||||
export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }}
|
||||
fi
|
||||
sh .github/workflows/src/release-build.sh
|
||||
|
||||
- name: Rebuild Zen if failed
|
||||
if: failure()
|
||||
run: sh .github/workflows/src/release-build.sh
|
||||
|
||||
- name: import APPLE DEVELOPER ID CERTIFICATE for .app
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}
|
||||
p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}
|
||||
bash .github/workflows/src/release-build.sh
|
||||
|
||||
- name: Package
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch == 'x64' }}
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_GA_DISABLE_PGO: true
|
||||
run: |
|
||||
export MACOS_APPLE_DEVELOPER_ID="${{ secrets.macOS_AppleDeveloperId }}"
|
||||
pnpm package
|
||||
export SURFER_PLATFORM="darwin"
|
||||
export ZEN_RELEASE=1
|
||||
npm run package
|
||||
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Rename artifacts
|
||||
run: |
|
||||
mv ./dist/output.mar macos-${{ matrix.arch }}.mar
|
||||
|
||||
- name: Sign to .dmg
|
||||
run: |
|
||||
echo "Tarballing DMG"
|
||||
set -ex
|
||||
hdiutil convert ./dist/*.dmg -format UDZO -imagekey zlib-level=9 -o zen.macos-${{ matrix.arch }}.dmg
|
||||
xattr -cr zen.macos-${{ matrix.arch }}.dmg
|
||||
codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-${{ matrix.arch }}.dmg
|
||||
xcrun notarytool submit "zen.macos-${{ matrix.arch }}.dmg" \
|
||||
--apple-id "${{ secrets.macOS_AppleAccountId }}" \
|
||||
--team-id "${{ secrets.macOS_AppleDeveloperIdTeamId }}" \
|
||||
--password "${{ secrets.macOS_AppleDeveloperIdPassword }}" \
|
||||
--wait
|
||||
xcrun stapler staple "zen.macos-${{ matrix.arch }}.dmg"
|
||||
mv ./dist/*.dmg ./zen-${{ matrix.arch }}-apple-darwin-dist.dmg
|
||||
mv ./engine/obj-${{ matrix.arch }}-apple-darwin/dist/host/bin/mar ./zen-macos-host-mar
|
||||
mv ./engine/obj-${{ matrix.arch }}-apple-darwin/dist/bin/platform.ini ./platform.ini
|
||||
|
||||
- name: Upload artifact
|
||||
- name: Upload dist dmg
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.macos-${{ matrix.arch }}.dmg
|
||||
path: ./zen.macos-${{ matrix.arch }}.dmg
|
||||
retention-days: 1
|
||||
name: zen-${{ matrix.arch }}-apple-darwin-dist.dmg
|
||||
path: ./zen-${{ matrix.arch }}-apple-darwin-dist.dmg
|
||||
|
||||
- name: Upload mar
|
||||
- name: Upload host mar
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.arch == 'aarch64'
|
||||
with:
|
||||
name: macos-${{ matrix.arch }}.mar
|
||||
path: ./macos-${{ matrix.arch }}.mar
|
||||
retention-days: 1
|
||||
name: zen-macos-host-mar
|
||||
path: ./zen-macos-host-mar
|
||||
|
||||
- name: Upload update manifests
|
||||
- name: Upload platform.ini
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.arch == 'x86_64'
|
||||
with:
|
||||
name: macos_update_manifest_${{ matrix.arch }}
|
||||
path: ./dist/update
|
||||
retention-days: 1
|
||||
name: platform.ini
|
||||
path: ./platform.ini
|
||||
|
261
.github/workflows/macos-universal-release-build.yml
vendored
Normal file
@@ -0,0 +1,261 @@
|
||||
name: macOS Release Build
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
build-version:
|
||||
description: 'The version to build'
|
||||
required: true
|
||||
type: string
|
||||
release-branch:
|
||||
description: 'The branch to build'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
jobs:
|
||||
mac-build:
|
||||
name: Unify macOS (Universal)
|
||||
runs-on: 'macos-15'
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
# note: This will use the version defined in '.python-version' by default
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
|
||||
- name: Install system dependencies
|
||||
run: |
|
||||
brew update
|
||||
brew install cairo gnu-tar mercurial
|
||||
sudo pip install setuptools
|
||||
|
||||
brew uninstall --ignore-dependencies python3.12 -f
|
||||
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
python3 -m pip install --user mercurial
|
||||
|
||||
rm '/usr/local/bin/2to3-3.11' '/usr/local/bin/2to3-3.12' '/usr/local/bin/2to3'
|
||||
rm '/usr/local/bin/idle3.11' '/usr/local/bin/idle3.12' '/usr/local/bin/idle3'
|
||||
rm '/usr/local/bin/pydoc3.11' '/usr/local/bin/pydoc3.12' '/usr/local/bin/pydoc3'
|
||||
rm '/usr/local/bin/python3.11' '/usr/local/bin/python3.12' '/usr/local/bin/python3'
|
||||
rm '/usr/local/bin/python3.11-config' '/usr/local/bin/python3.12-config' '/usr/local/bin/python3-config'
|
||||
|
||||
brew install watchman
|
||||
|
||||
cargo install apple-codesign
|
||||
|
||||
- name: Force usage of gnu-tar
|
||||
run: |
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.bash_profile
|
||||
echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zsh
|
||||
source ~/.bash_profile
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
npm install
|
||||
|
||||
- name: Load surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
|
||||
- name: Download Firefox source and dependencies
|
||||
run: npm run download
|
||||
|
||||
- name: Bootstrap
|
||||
run: |
|
||||
cd engine
|
||||
export SURFER_PLATFORM="darwin"
|
||||
export PATH="$(python3 -m site --user-base)/bin":$PATH
|
||||
./mach --no-interactive bootstrap --application-choice browser --no-system-changes || true
|
||||
cd ..
|
||||
|
||||
- name: Import
|
||||
run: npm run import
|
||||
|
||||
- name: Populate mozconfig
|
||||
env:
|
||||
SURFER_MOZCONFIG_ONLY: true
|
||||
run: |
|
||||
npm run build
|
||||
cd engine
|
||||
./mach configure
|
||||
|
||||
- name: Download x86_64 DMG from artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen-x86_64-apple-darwin-dist.dmg
|
||||
|
||||
- name: Download aarch64 DMG from artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen-aarch64-apple-darwin-dist.dmg
|
||||
|
||||
- name: Remove any existing .app folders
|
||||
run: |
|
||||
set -x
|
||||
cd engine
|
||||
rm -rf "./obj-x86_64-apple-darwin/" || true
|
||||
rm -rf "./obj-aarch64-apple-darwin/" || true
|
||||
|
||||
- name: Extract .app from dmg
|
||||
run: |
|
||||
set -ex
|
||||
cd engine
|
||||
echo "Extracting x86_64 .app from dmg"
|
||||
mkdir -p ./obj-x86_64-apple-darwin/dist
|
||||
mkdir -p ./obj-aarch64-apple-darwin/dist
|
||||
./mach python -m mozbuild.action.unpack_dmg \
|
||||
../zen-x86_64-apple-darwin-dist.dmg \
|
||||
./obj-x86_64-apple-darwin/dist
|
||||
echo "Extracting aarch64 .app from dmg"
|
||||
./mach python -m mozbuild.action.unpack_dmg \
|
||||
../zen-aarch64-apple-darwin-dist.dmg \
|
||||
./obj-aarch64-apple-darwin/dist
|
||||
|
||||
- name: Find first .app folder name
|
||||
run: |
|
||||
cd engine/obj-x86_64-apple-darwin/dist
|
||||
export APP_NAME=${{ inputs.release-branch == 'twilight' && 'Twilight' || 'Zen' }}
|
||||
echo "APP_NAME=$APP_NAME" >> $GITHUB_ENV
|
||||
echo "APP_NAME=$APP_NAME"
|
||||
|
||||
- name: List .app folders
|
||||
run: |
|
||||
ls engine/
|
||||
echo "--------------------"
|
||||
cd engine/obj-x86_64-apple-darwin/dist
|
||||
find . -maxdepth 1 -name "*.app" -type d
|
||||
cd ../..
|
||||
|
||||
- name: create .p12 for codesign 🖊️
|
||||
run: |
|
||||
cd engine
|
||||
echo "${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}" > cert.txt
|
||||
base64 --decode -i cert.txt -o zenCert.p12
|
||||
echo "${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}" > zenpCertPassword.passwd
|
||||
|
||||
- name: Remove certificate sensitive information
|
||||
run: |
|
||||
rm engine/cert.txt || true
|
||||
|
||||
- name: Import provisioning profile for .app
|
||||
run: |
|
||||
echo "${{ secrets.macOS_PROVISIONING_PROFILE }}" | base64 --decode > ./engine/Zen_Browser.provisionprofile
|
||||
ls -la
|
||||
|
||||
- name: Unify architectures
|
||||
run: |
|
||||
cd engine
|
||||
./mach python "./toolkit/mozapps/installer/unify.py" "./obj-x86_64-apple-darwin/dist/${{ env.APP_NAME }}.app" "./obj-aarch64-apple-darwin/dist/${{ env.APP_NAME }}.app"
|
||||
echo "Merged aaarch64 into x86_64!"
|
||||
|
||||
- name: Import APPLE DEVELOPER ID CERTIFICATE for .app
|
||||
uses: Apple-Actions/import-codesign-certs@v3
|
||||
with:
|
||||
p12-file-base64: ${{ secrets.macOS_CERTIFICATES_P12_For_App_BASE64 }}
|
||||
p12-password: ${{ secrets.macOS_CERTIFICATES_P12_PASSWORD }}
|
||||
|
||||
- name: Copy provisioning profile for .app (embedded in .app)
|
||||
run: |
|
||||
cd engine
|
||||
echo "Copying provisioning profile for .app on both architectures (${{ env.APP_NAME }})"
|
||||
cp ./Zen_Browser.provisionprofile "./embedded.provisionprofile"
|
||||
|
||||
- name: Sign .app
|
||||
run: |
|
||||
cd engine
|
||||
# TODO: Change it to "production" once we figure out the issue with the webauth
|
||||
./mach macos-sign -v -r -c "release" -e "production" -a "./obj-x86_64-apple-darwin/dist/${{ env.APP_NAME }}.app" --rcodesign-p12-file zenCert.p12 --rcodesign-p12-password-file zenpCertPassword.passwd
|
||||
|
||||
- name: Create DMG
|
||||
run: |
|
||||
cd engine
|
||||
./mach python -m mozbuild.action.make_dmg \
|
||||
--volume-name "${{ env.APP_NAME }}" \
|
||||
--background ./browser/branding/${{ inputs.release-branch }}/background.png \
|
||||
--icon ./browser/branding/${{ inputs.release-branch }}/firefox.icns \
|
||||
--dsstore ./browser/branding/${{ inputs.release-branch }}/dsstore \
|
||||
./obj-x86_64-apple-darwin/dist/ ../zen-macOS-universal-temp.dmg
|
||||
|
||||
- name: Remove sensitive information
|
||||
run: |
|
||||
rm -f ./engine/Zen_Browser.provisionprofile
|
||||
|
||||
- name: Sign .dmg
|
||||
run: |
|
||||
set -ex
|
||||
hdiutil convert zen-macOS-universal-temp.dmg -format UDZO -imagekey zlib-level=9 -o zen.macos-universal.dmg
|
||||
codesign -s "${{ secrets.macOS_AppleDeveloperId }}" zen.macos-universal.dmg
|
||||
xcrun notarytool submit "zen.macos-universal.dmg" \
|
||||
--apple-id "${{ secrets.macOS_AppleAccountId }}" \
|
||||
--team-id "${{ secrets.macOS_AppleDeveloperIdTeamId }}" \
|
||||
--password "${{ secrets.macOS_AppleDeveloperIdPassword }}" \
|
||||
--no-s3-acceleration \
|
||||
--wait
|
||||
xcrun stapler staple "zen.macos-universal.dmg"
|
||||
|
||||
- name: Download host mar
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: zen-macos-host-mar
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
retention-days: 5
|
||||
name: zen.macos-universal.dmg
|
||||
path: ./zen.macos-universal.dmg
|
||||
|
||||
- name: Download platform.ini
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: platform.ini
|
||||
|
||||
- name: Package for mar
|
||||
env:
|
||||
JUST_MAR: true
|
||||
run: |
|
||||
# we don't need it anymore
|
||||
set -ex
|
||||
rm -rf ./engine/obj-aarch64-apple-darwin
|
||||
mkdir -p ./engine/obj-x86_64-apple-darwin/dist/bin
|
||||
mv ./platform.ini ./engine/obj-x86_64-apple-darwin/dist/bin/platform.ini
|
||||
export SURFER_PLATFORM="darwin"
|
||||
export ZEN_RELEASE=1
|
||||
# full path to zen-macos-host-mar
|
||||
export MAR=$(pwd)/zen-macos-host-mar
|
||||
chmod +x $MAR
|
||||
echo "MAR=$MAR"
|
||||
npm run package -- --verbose
|
||||
mv ./dist/output.mar ./macos.mar
|
||||
|
||||
- name: Upload build artifact (.mar)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
retention-days: 5
|
||||
name: macos.mar
|
||||
path: ./macos.mar
|
||||
|
||||
- name: Upload build artifact (update manifests)
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
retention-days: 5
|
||||
name: macos_update_manifest
|
||||
path: ./dist/update
|
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<updates>
|
||||
<update type="minor" displayVersion="1.0.1-a.9" appVersion="1.0.1-a.9" platformVersion="131.0.3" buildID="20241014215847">
|
||||
<patch type="complete" URL="https://github.com/zen-browser/desktop/releases/download/1.0.1-a.9/windows-generic.mar" hashFunction="sha512" hashValue="84772b8f520691027f48ff63f12abe9305a15b447513f16a7cdebaf5e0a3bdf5541ebea012328abea065a1104e2f60176ca3da7d503f293ab784dd1cfd7e65ce" size="72552508"/>
|
||||
</update>
|
||||
</updates>
|
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<updates>
|
||||
<update type="minor" displayVersion="1.0.1-a.9" appVersion="1.0.1-a.9" platformVersion="131.0.3" buildID="20241014215847">
|
||||
<patch type="complete" URL="https://github.com/zen-browser/desktop/releases/download/1.0.1-a.9/windows-generic.mar" hashFunction="sha512" hashValue="84772b8f520691027f48ff63f12abe9305a15b447513f16a7cdebaf5e0a3bdf5541ebea012328abea065a1104e2f60176ca3da7d503f293ab784dd1cfd7e65ce" size="72552508"/>
|
||||
</update>
|
||||
</updates>
|
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<updates>
|
||||
<update type="minor" displayVersion="1.0.1-a.9" appVersion="1.0.1-a.9" platformVersion="131.0.3" buildID="20241014215847">
|
||||
<patch type="complete" URL="https://github.com/zen-browser/desktop/releases/download/1.0.1-a.9/windows.mar" hashFunction="sha512" hashValue="77d63286a10a28dd85db864d264ee30abb49cd9797252da4bfb7494165551ac8b0acff2b63af70b2c418f12613829eeca8175d5d2925d26e4e2ff6cc93d79f1e" size="72559552"/>
|
||||
</update>
|
||||
</updates>
|
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<updates>
|
||||
<update type="minor" displayVersion="1.0.1-a.9" appVersion="1.0.1-a.9" platformVersion="131.0.3" buildID="20241014215847">
|
||||
<patch type="complete" URL="https://github.com/zen-browser/desktop/releases/download/1.0.1-a.9/windows.mar" hashFunction="sha512" hashValue="77d63286a10a28dd85db864d264ee30abb49cd9797252da4bfb7494165551ac8b0acff2b63af70b2c418f12613829eeca8175d5d2925d26e4e2ff6cc93d79f1e" size="72559552"/>
|
||||
</update>
|
||||
</updates>
|
34
.github/workflows/pr-test.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Pull request test
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
pr-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install Surfer
|
||||
run: npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
|
||||
- name: Download Firefox and dependencies
|
||||
run: surfer download
|
||||
|
||||
- name: Import patches
|
||||
run: surfer i
|
79
.github/workflows/src/generate_release_notes.sh
vendored
Normal file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
RELEASE_NOTES_URL="https://raw.githubusercontent.com/zen-browser/www/refs/heads/main/src/release-notes/stable.json"
|
||||
|
||||
if [ "$RELEASE_BRANCH" = "release" ]; then
|
||||
RELEASE_TYPE="Stable"
|
||||
|
||||
echo "Fetching release notes from GitHub..."
|
||||
RELEASE_NOTES_JSON=$(curl -s --retry 5 --retry-delay 5 "$RELEASE_NOTES_URL")
|
||||
|
||||
if [ -z "$RELEASE_NOTES_JSON" ]; then
|
||||
echo "Error: Failed to fetch release notes from GitHub"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
LATEST_RELEASE=$(echo "$RELEASE_NOTES_JSON" | jq -r 'last')
|
||||
EXTRA_NOTES=$(echo "$LATEST_RELEASE" | jq -r '.extra // ""')
|
||||
else
|
||||
RELEASE_TYPE="Twilight"
|
||||
fi
|
||||
|
||||
{
|
||||
echo "# Zen ${RELEASE_TYPE} Release"
|
||||
|
||||
if [ "$RELEASE_TYPE" = "Twilight" ]; then
|
||||
echo
|
||||
echo "> [!NOTE]"
|
||||
echo "> You're currently in Twilight mode, this means you're downloading the latest experimental features and updates."
|
||||
echo ">"
|
||||
echo "> If you encounter any issues, please report them on the [issues page](https://github.com/zen-browser/desktop/issues)."
|
||||
fi
|
||||
|
||||
if [ "$RELEASE_TYPE" = "Stable" ]; then
|
||||
echo "${EXTRA_NOTES}"
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '.security != null and .security != ""' > /dev/null; then
|
||||
echo
|
||||
echo "## Security"
|
||||
echo "[Various security fixes]($(echo "$LATEST_RELEASE" | jq -r '.security'))"
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.features // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## New Features"
|
||||
echo "$LATEST_RELEASE" | jq -r '.features[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.fixes // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Fixes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.fixes[] | if type=="object" then "- " + .description + " ([#" + (.issue|tostring) + "](" + "https://github.com/zen-browser/desktop/issues/" + (.issue|tostring) + "))" else "- " + . end'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.breakingChanges // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Breaking Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.breakingChanges[] | if type=="string" then "- " + . else "- " + .description + " [Learn more](" + .link + ")" end'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.themeChanges // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Theme Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.themeChanges[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.changes // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Changes"
|
||||
echo "$LATEST_RELEASE" | jq -r '.changes[] | "- " + .'
|
||||
fi
|
||||
|
||||
if echo "$LATEST_RELEASE" | jq -e '(.knownIssues // []) | length > 0' > /dev/null; then
|
||||
echo
|
||||
echo "## Known Issues"
|
||||
echo "$LATEST_RELEASE" | jq -r '.knownIssues[] | "- " + .'
|
||||
fi
|
||||
fi
|
||||
} > "release_notes.md"
|
||||
|
||||
echo "Release notes generated: release_notes.md"
|
22
.github/workflows/src/release-build.sh
vendored
@@ -1,26 +1,30 @@
|
||||
set -ex
|
||||
#!/bin/bash
|
||||
|
||||
if command -v apt-get &> /dev/null
|
||||
then
|
||||
set -xe
|
||||
|
||||
if command -v apt-get &> /dev/null; then
|
||||
sudo apt-get install python3-launchpadlib
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y xvfb
|
||||
sudo apt-get install -y xvfb libnvidia-egl-wayland1 mesa-utils libgl1-mesa-dri
|
||||
fi
|
||||
|
||||
. $HOME/.cargo/env
|
||||
|
||||
ulimit -n 4096
|
||||
|
||||
# Check if xfvb is installed
|
||||
if ! command -v Xvfb &> /dev/null; then
|
||||
if command -v Xvfb &> /dev/null; then
|
||||
if ! test "$ZEN_CROSS_COMPILING"; then
|
||||
Xvfb :2 -screen 0 1024x768x24 &
|
||||
Xvfb :2 -nolisten tcp -noreset -screen 0 1024x768x24 &
|
||||
export LLVM_PROFDATA=$HOME/.mozbuild/clang/bin/llvm-profdata
|
||||
export DISPLAY=:2
|
||||
fi
|
||||
export ZEN_RELEASE=1
|
||||
pnpm build
|
||||
npm run build
|
||||
else
|
||||
echo "Xvfb could not be found, running without it"
|
||||
echo "ASSUMING YOU ARE RUNNING THIS ON MACOS"
|
||||
|
||||
set -v
|
||||
export ZEN_RELEASE=1
|
||||
pnpm build
|
||||
npm run build
|
||||
fi
|
||||
|
29
.github/workflows/stale.yml
vendored
@@ -1,29 +0,0 @@
|
||||
name: Close inactive issues
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
close-issues:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/stale@v5
|
||||
with:
|
||||
days-before-issue-stale: 30
|
||||
days-before-issue-close: 14
|
||||
stale-issue-label: 'stale'
|
||||
stale-issue-message: |
|
||||
This issue is stale because it has been open for 30 days with no activity.
|
||||
|
||||
Please close this issue if you feel it is no longer relevant, or comment if you have more information to share.
|
||||
close-issue-message: |
|
||||
This issue was closed because it has been inactive for 14 days since being marked as stale.
|
||||
|
||||
If you think this issue should remain open, please comment with a request for it to be re-opened or open a new issue.
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
22
.github/workflows/twilight-release-schedule.yml
vendored
@@ -1,8 +1,15 @@
|
||||
name: Zen Twilight Scheduled Releases
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
- cron: '0 23 * * *'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
create_release:
|
||||
description: 'Whether to do a release'
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
twilight-release-schedule:
|
||||
@@ -11,8 +18,9 @@ jobs:
|
||||
secrets: inherit
|
||||
uses: ./.github/workflows/build.yml
|
||||
with:
|
||||
create_release: true
|
||||
create_release: ${{ github.event_name != 'workflow_dispatch' && true || inputs.create_release }}
|
||||
update_branch: twilight
|
||||
use-sccache: false
|
||||
update_version: false
|
||||
|
||||
post-build:
|
||||
@@ -20,12 +28,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: twilight-release-schedule
|
||||
steps:
|
||||
- name: Checkout
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Node.js and pnpm
|
||||
uses: actions/setup-node@v3
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
# TODO:
|
||||
node-version-file: '.nvmrc'
|
||||
|
33
.github/workflows/update-submodules.yml
vendored
@@ -1,33 +0,0 @@
|
||||
|
||||
name: Update Components Submodules
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
pull_request:
|
||||
branches:
|
||||
- dev
|
||||
workflow_dispatch:
|
||||
workflow_call: # This is a custom event that we will trigger manually
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
runs-on: ubuntu-latest
|
||||
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
git submodule update --remote --merge
|
||||
|
||||
- uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "[skip ci] 📦 Update Submodules!"
|
||||
commit_user_name: Zen Browser Robot
|
||||
commit_user_email: zen-browser-bot@users.noreply.github.com
|
75
.github/workflows/windows-profile-build.yml
vendored
@@ -1,4 +1,8 @@
|
||||
name: Windows PGO Builds
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
@@ -17,82 +21,95 @@ on:
|
||||
|
||||
jobs:
|
||||
windows-profile-build:
|
||||
name: Windows Profile Build - ${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
name: |
|
||||
Windows Profile Build - ${{ matrix.arch }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
runs-on: windows-latest
|
||||
# Script edited from https://github.com/Floorp-Projects/Floorp/blob/ESR115/.github/workflows/window-generate-profile-data-and-jarlog.yml
|
||||
arch: [x86_64, aarch64]
|
||||
|
||||
runs-on: ${{ inputs.release-branch == 'release' && 'windows-latest' || 'windows-latest' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Node.js and pnpm
|
||||
uses: actions/setup-node@v3
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup git
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
|
||||
- name: Install Surfer
|
||||
run: |
|
||||
npm i -g @zen-browser/surfer
|
||||
- uses: actions/download-artifact@v4
|
||||
name: Download artifact
|
||||
run: npm i -g @zen-browser/surfer
|
||||
|
||||
- name: Load Surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
|
||||
- name: Download artifact
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: C:\artifact
|
||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-zen-windows-x86_64-profile-data-and-jarlog.zip
|
||||
name: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}-zen-windows-profile-data-and-jarlog.zip
|
||||
|
||||
- name: Unpack artifact
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
cd C:\artifact
|
||||
ls
|
||||
Expand-Archive -Path .\${{ inputs.profile-data-path-archive }} -DestinationPath C:\artifact
|
||||
ls
|
||||
|
||||
- name: Setup
|
||||
run: |
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe","C:\MozillaBuildSetup-Latest.exe")
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe", "C:\MozillaBuildSetup-Latest.exe")
|
||||
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||
- name: Download firefox
|
||||
|
||||
- name: Download Firefox and dependencies
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
git config --global core.safecrlf false
|
||||
pnpm surfer download
|
||||
git config --global core.safecrlf false
|
||||
npm run download
|
||||
|
||||
- name: Import patches
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
env:
|
||||
SURFER_NO_BRANDING_PATCH: true
|
||||
run: npm run import
|
||||
|
||||
- name: Generate
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
ls
|
||||
$Env:USE_MINTTY = "0"
|
||||
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\","/"
|
||||
$workspace_dir_current = [regex]::replace($env:GITHUB_WORKSPACE, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\", "/"
|
||||
$workspace_dir = $workspace_dir_current + "/engine"
|
||||
echo $workspace_dir
|
||||
echo "cd $workspace_dir" '' >> mozilla-build-run.sh
|
||||
echo 'export PATH=/c/mozilla-build/msys2/usr/bin:$PATH' '' >> mozilla-build-run.sh
|
||||
echo './mach --no-interactive bootstrap --application-choice browser' '' >> mozilla-build-run.sh
|
||||
echo 'ls /c/Users/runneradmin/.mozbuild/clang/bin' '' >> mozilla-build-run.sh
|
||||
echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh
|
||||
C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh
|
||||
|
||||
- name: 🐛 Debug Session
|
||||
if: ${{ failure() }}
|
||||
uses: Warpbuilds/gha-debug@v1.3
|
||||
timeout-minutes: 15
|
||||
|
||||
- name: Move profile data
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
dir
|
||||
dir engine
|
||||
mv engine/merged.profdata merged.profdata
|
||||
mv engine/en-US.log en-US.log
|
||||
|
||||
- name: Publish artifacts
|
||||
- name: Upload artifacts
|
||||
if: ${{ matrix.arch == 'x86_64' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
retention-days: 1
|
||||
path: |
|
||||
merged.profdata
|
||||
en-US.log
|
||||
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
name: windows-profdata-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
|
280
.github/workflows/windows-release-build.yml
vendored
@@ -1,4 +1,8 @@
|
||||
name: Windows Release Build
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
@@ -17,151 +21,219 @@ on:
|
||||
description: 'The branch to build'
|
||||
required: true
|
||||
type: string
|
||||
MOZ_BUILD_DATE:
|
||||
type: string
|
||||
required: true
|
||||
default: ''
|
||||
use-sccache:
|
||||
description: 'Use sccache'
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
jobs:
|
||||
windows-build:
|
||||
name: Build Windows - ${{ matrix.generic == true && 'Generic' || 'Specific' }}
|
||||
runs-on: ubuntu-latest
|
||||
name: Build Windows - ${{ matrix.arch }}
|
||||
# aarch64 does not need full 16x, and we also dont use full LTO when generating GPO
|
||||
runs-on: ${{ (inputs.release-branch == 'release' && !inputs.generate-gpo && matrix.arch == 'x86_64') && 'self-hosted' || 'blacksmith-8vcpu-ubuntu-2404' }}
|
||||
env:
|
||||
SCCACHE_GHA_ENABLED: ${{ inputs.use-sccache && 'true' || 'false' }}
|
||||
CARGO_TERM_COLOR: always
|
||||
RUSTC_WRAPPER: ${{ inputs.use-sccache && 'sccache' || '' }}
|
||||
CARGO_INCREMENTAL: 0
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
generic: [true, false]
|
||||
|
||||
arch: [x86_64, aarch64]
|
||||
|
||||
steps:
|
||||
- name: Free Disk Space (Ubuntu)
|
||||
uses: jlumbroso/free-disk-space@main
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
with:
|
||||
# this might remove tools that are actually needed,
|
||||
# if set to "true" but frees about 6 GB
|
||||
tool-cache: false
|
||||
|
||||
- name: Install Node.js and pnpm
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 20
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
token: ${{ secrets.DEPLOY_KEY }}
|
||||
|
||||
- name: Install pnpm
|
||||
run: npm install -g pnpm
|
||||
- name: Setup Node.js
|
||||
uses: useblacksmith/setup-node@v5
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Setup git
|
||||
- name: Run sccache-cache
|
||||
uses: mozilla-actions/sccache-action@main
|
||||
if: ${{ inputs.use-sccache }}
|
||||
with:
|
||||
disable_annotations: true
|
||||
|
||||
- name: Expose actions cache variables
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env['ACTIONS_CACHE_URL'])
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env['ACTIONS_RUNTIME_TOKEN'])
|
||||
|
||||
- name: Setup Git
|
||||
run: |
|
||||
git config --global user.email "mauro-balades@users.noreply.github.com"
|
||||
git config --global user.name "mauro-balades"
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pnpm i
|
||||
npm install
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3 python3-pip dos2unix yasm nasm build-essential libgtk2.0-dev libpython3-dev m4 uuid libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdrm-dev libdbus-glib-1-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb lld llvm --fix-missing
|
||||
|
||||
- name: Load surfer CI setup
|
||||
run: pnpm surfer ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
- name: Load Surfer CI setup
|
||||
run: npm run surfer -- ci --brand ${{ inputs.release-branch }} --display-version ${{ inputs.build-version }}
|
||||
|
||||
- name: Download
|
||||
run: pnpm surfer download
|
||||
- name: Download Firefox and dependencies
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
run: npm run download
|
||||
|
||||
- name: 'win-cross Cache'
|
||||
- name: win-cross Cache
|
||||
env:
|
||||
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
|
||||
id: cache-win-cross
|
||||
uses: actions/cache@v4
|
||||
uses: useblacksmith/cache@v5
|
||||
with:
|
||||
path: ${HOME}/win-cross
|
||||
key: win-cross
|
||||
|
||||
- name: Configure sccache
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
|
||||
- name: Setup For Windows
|
||||
if: steps.cache-win-cross.outputs.cache-hit != 'true'
|
||||
- name: Setup for Windows
|
||||
if: steps.cache-win-cross.outputs.cache-hit != 'true' && !(inputs.generate-gpo && matrix.arch == 'aarch64')
|
||||
run: |
|
||||
set -x
|
||||
mkdir -p ~/win-cross
|
||||
cd engine/
|
||||
|
||||
sudo apt-get install python3-launchpadlib
|
||||
sudo add-apt-repository ppa:savoury1/backports
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-pip autoconf \
|
||||
autoconf2.13 \
|
||||
automake \
|
||||
bison \
|
||||
build-essential \
|
||||
cabextract \
|
||||
curl \
|
||||
cmake \
|
||||
flex \
|
||||
gawk \
|
||||
gcc-multilib \
|
||||
git \
|
||||
gnupg \
|
||||
jq \
|
||||
libbz2-dev \
|
||||
libexpat1-dev \
|
||||
libffi-dev \
|
||||
libncursesw5-dev \
|
||||
libsqlite3-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libucl-dev \
|
||||
libxml2-dev \
|
||||
msitools \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
p7zip-full \
|
||||
pkg-config \
|
||||
procps \
|
||||
python3-requests \
|
||||
python3-toml \
|
||||
scons \
|
||||
subversion \
|
||||
tar \
|
||||
unzip \
|
||||
uuid \
|
||||
uuid-dev \
|
||||
wget \
|
||||
zip \
|
||||
zlib1g-dev \
|
||||
aria2
|
||||
echo Setup wine
|
||||
aria2c "https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/gecko.cache.level-1.toolchains.v3.linux64-wine.latest/artifacts/public%2Fbuild%2Fwine.tar.zst" -o wine.tar.zst
|
||||
tar --zstd -xvf wine.tar.zst -C ~/win-cross
|
||||
tar --zstd -xf wine.tar.zst -C ~/win-cross
|
||||
rm wine.tar.zst
|
||||
|
||||
echo Setup Visual Studio
|
||||
sudo apt install -y msitools python3-pip
|
||||
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ~/win-cross/vs2022
|
||||
|
||||
- name: Import
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
run: |
|
||||
. "$HOME/.cargo/env"
|
||||
npm run import -- --verbose
|
||||
|
||||
- name: Bootstrap
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
run: |
|
||||
set -x
|
||||
cd engine/
|
||||
|
||||
chmod -R +x "$(echo ~)/win-cross/vs2022" || true
|
||||
|
||||
cd ..
|
||||
npm install -g pnpm
|
||||
export SURFER_PLATFORM="win32"
|
||||
pnpm surfer bootstrap
|
||||
|
||||
npm run bootstrap
|
||||
cd engine/
|
||||
ls ~/.mozbuild/clang/lib/clang/
|
||||
echo "export LIB=\"$(cd ~/.mozbuild/clang/lib/clang/* && cd lib/windows && pwd)\"" >> ../configs/common/mozconfig
|
||||
cat ../configs/common/mozconfig
|
||||
|
||||
sudo apt-get update
|
||||
sudo apt-get install dos2unix
|
||||
|
||||
ls ~/win-cross/wine || true
|
||||
ls ~/win-cross/vs2022 || true
|
||||
|
||||
- name: setup Rust
|
||||
- name: Setup Rust
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
run: |
|
||||
cd engine/
|
||||
# Install a rust version compatible with 17
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79
|
||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
|
||||
source $HOME/.cargo/env
|
||||
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
cargo install cargo-download
|
||||
if test "${{ matrix.arch }}" = "aarch64"; then
|
||||
rustup target add aarch64-pc-windows-msvc
|
||||
else
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
fi
|
||||
cd engine/
|
||||
cargo install cargo-download --locked
|
||||
cargo download -x windows=0.58.0
|
||||
#? https://github.com/mozilla/sccache#known-caveats
|
||||
export CARGO_INCREMENTAL=0
|
||||
|
||||
echo "" >> ../configs/common/mozconfig
|
||||
echo "export MOZ_WINDOWS_RS_DIR=$(pwd)/windows-0.58.0" >> ../configs/common/mozconfig
|
||||
|
||||
- name: Import
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
run: pnpm surfer import --verbose
|
||||
|
||||
- name: Build language packs
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
run: sh scripts/download-language-packs.sh
|
||||
|
||||
- uses: actions/download-artifact@v4
|
||||
name: Download artifact if use profdata
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
- name: Download artifact (if use profdata)
|
||||
uses: actions/download-artifact@v4
|
||||
if: ${{ !inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
with:
|
||||
path: ~/artifact
|
||||
name: windows-profdata-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
name: windows-profdata-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
|
||||
- name: Show artifact info
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
if: ${{ !inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
ls ~/artifact
|
||||
ls ~/artifact/en-US.log
|
||||
ls ~/artifact/merged.profdata
|
||||
|
||||
chmod +x ~/artifact/en-US.log
|
||||
chmod +x ~/artifact/merged.profdata
|
||||
|
||||
- name: Insert API Keys
|
||||
run: |
|
||||
mkdir -p ~/.zen-keys
|
||||
echo "${{ secrets.ZEN_SAFEBROWSING_API_KEY }}" > ~/.zen-keys/safebrowsing.dat
|
||||
|
||||
- name: Build
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_RELEASE_BRANCH: ${{ inputs.release-branch }}
|
||||
run: |
|
||||
set -x
|
||||
dos2unix configs/windows/mozconfig
|
||||
@@ -170,26 +242,32 @@ jobs:
|
||||
if test ${{ inputs.generate-gpo }} = true; then
|
||||
export ZEN_GA_GENERATE_PROFILE=1
|
||||
fi
|
||||
sh .github/workflows/src/release-build.sh
|
||||
if [[ -n ${{ inputs.MOZ_BUILD_DATE }} ]];then
|
||||
export MOZ_BUILD_DATE=${{ inputs.MOZ_BUILD_DATE }}
|
||||
fi
|
||||
bash .github/workflows/src/release-build.sh
|
||||
|
||||
- name: Package
|
||||
if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }}
|
||||
env:
|
||||
SURFER_COMPAT: ${{ matrix.generic == true }}
|
||||
SURFER_COMPAT: ${{ matrix.arch }}
|
||||
ZEN_GA_DISABLE_PGO: true
|
||||
run: |
|
||||
set -x
|
||||
export SURFER_PLATFORM="win32"
|
||||
pnpm package
|
||||
mv ./dist/zen-$(pnpm surfer get version | xargs).en-US.win64.zip zen.win64.zip
|
||||
export ZEN_CROSS_COMPILING=1
|
||||
export ZEN_RELEASE=1
|
||||
npm run package
|
||||
mv ./dist/zen-$(npm run --silent surfer -- get version | xargs).en-US.win64${{ matrix.arch == 'aarch64' && '-aarch64' || '' }}.zip zen.win64.zip
|
||||
ls ./dist
|
||||
ls .
|
||||
|
||||
- name: 🐛 Debug Session
|
||||
if: ${{ failure() }}
|
||||
uses: Warpbuilds/gha-debug@v1.3
|
||||
timeout-minutes: 15
|
||||
- name: Remove API Keys
|
||||
run: |
|
||||
rm -rf ~/.zen-keys
|
||||
|
||||
- name: Move package for PGO upload
|
||||
if: ${{ inputs.generate-gpo }}
|
||||
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
run: |
|
||||
set -x
|
||||
mv ./zen.win64.zip ./zen.win64-pgo-stage-1.zip
|
||||
@@ -197,55 +275,69 @@ jobs:
|
||||
- name: Rename artifacts
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
run: |
|
||||
mv ./zen.win64.zip zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
mv ./dist/output.mar windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
mv ./zen.win64.zip zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
|
||||
mv ./dist/output.mar windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
|
||||
mv ./dist/zen.installer.exe ./zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
|
||||
|
||||
- name: Upload PGO build
|
||||
- name: Upload artifact (PGO)
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ inputs.generate-gpo }}
|
||||
if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }}
|
||||
with:
|
||||
name: ${{ matrix.generic == true && 'generic' || 'specific' }}-${{ inputs.profile-data-path-archive }}
|
||||
retention-days: 5
|
||||
name: ${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}-${{ inputs.profile-data-path-archive }}
|
||||
path: ./zen.win64-pgo-stage-1.zip
|
||||
|
||||
- name: Remove unnecessary files from obj
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
run: |
|
||||
set -x
|
||||
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type d -not -name 'dist' -exec rm -rf {} \;
|
||||
find engine/obj-x86_64-pc-windows-msvc/ -mindepth 1 -maxdepth 1 -type f -not -name 'dist' -exec rm -f {} \;
|
||||
|
||||
mkdir obj-${{ matrix.arch }}-pc-windows-msvc/
|
||||
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/_tests
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/config/autoconf.mk
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/config.statusd/substs/
|
||||
rm -rf engine/obj-${{ matrix.arch }}-pc-windows-msvc/dist/install
|
||||
|
||||
find engine/obj-${{ matrix.arch }}-pc-windows-msvc/dist -maxdepth 1 -type f -name "*.zip" -delete
|
||||
|
||||
cp -r --no-dereference engine/obj-${{ matrix.arch }}-pc-windows-msvc/* obj-${{ matrix.arch }}-pc-windows-msvc/ || true
|
||||
|
||||
- name: Upload dist object
|
||||
if: ${{ !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows-x64-obj-${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
path: engine/obj-x86_64-pc-windows-msvc/
|
||||
retention-days: 2
|
||||
name: windows-x64-obj-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
path: obj-${{ matrix.arch }}-pc-windows-msvc
|
||||
|
||||
- name: Upload zip file if twilight branch
|
||||
- name: Upload artifact (if Twilight branch, binary)
|
||||
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
path: ./zen.win-${{ matrix.generic == true && 'generic' || 'specific' }}.zip
|
||||
retention-days: 5
|
||||
name: zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
|
||||
path: ./zen.win-${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}.zip
|
||||
|
||||
- name: Upload installer if twilight branch
|
||||
- name: Upload artifact (if Twilight branch, installer)
|
||||
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
path: ./zen.installer${{ matrix.generic == true && '-generic' || '' }}.exe
|
||||
retention-days: 5
|
||||
name: zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
|
||||
path: ./zen.installer${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.exe
|
||||
|
||||
- name: Upload mar if twilight branch
|
||||
- name: Upload artifact (if Twilight branch, .mar)
|
||||
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
path: ./windows${{ matrix.generic == true && '-generic' || '' }}.mar
|
||||
retention-days: 5
|
||||
name: windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
|
||||
path: ./windows${{ matrix.arch == 'aarch64' && '-arm64' || '' }}.mar
|
||||
|
||||
- name: Upload update manifests if twilight branch
|
||||
- name: Upload artifact (if Twilight branch, update manifests)
|
||||
if: ${{ inputs.release-branch == 'twilight' && !inputs.generate-gpo }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: windows_update_manifest_${{ matrix.generic == true && 'generic' || 'specific' }}
|
||||
retention-days: 5
|
||||
name: windows_update_manifest_${{ matrix.arch == 'aarch64' && 'arm64' || matrix.arch }}
|
||||
path: ./dist/update
|
||||
|
15
.gitignore
vendored
@@ -1,3 +1,6 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
.dotbuild/
|
||||
engine/
|
||||
@@ -8,4 +11,14 @@ node_modules/
|
||||
__pycache__/
|
||||
dist/
|
||||
|
||||
windsign-temp/
|
||||
windsign-temp/
|
||||
venv/
|
||||
|
||||
!firefox-cache/
|
||||
win-cross/
|
||||
|
||||
!firefox-patches/
|
||||
target/
|
||||
.vscode/
|
||||
|
||||
locales/firefox-l10n/
|
||||
|
6
.gitmodules
vendored
@@ -1,6 +0,0 @@
|
||||
[submodule "src/browser/base/content/zen-components"]
|
||||
path = src/browser/base/content/zen-components
|
||||
url = https://github.com/zen-browser/components
|
||||
[submodule "l10n"]
|
||||
path = l10n
|
||||
url = https://github.com/zen-browser/l10n-packs
|
@@ -1 +1 @@
|
||||
# npx lint-staged
|
||||
npx lint-staged
|
||||
|
@@ -1,12 +1,37 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
engine/
|
||||
|
||||
**/*.html
|
||||
**/*.xhtml
|
||||
**/*.inc.xhtml
|
||||
**/*.bundle.min.js
|
||||
**/*.min.js
|
||||
**/*.min.mjs
|
||||
|
||||
**/*.svg
|
||||
|
||||
**/*.inc.css
|
||||
|
||||
surfer.json
|
||||
|
||||
src/browser/app/profile/*.js
|
||||
pnpm-lock.yaml
|
||||
|
||||
**/engine/
|
||||
**/engine/
|
||||
|
||||
docs/issue-metrics/*.md
|
||||
|
||||
.husky/
|
||||
|
||||
# Some CSS files are preprocessed and prettier doesn't handle them well
|
||||
# We also dont want to format the CSS files that are generated by the build
|
||||
src/zen/tabs/zen-tabs.css
|
||||
src/zen/compact-mode/zen-compact-mode.css
|
||||
src/zen/common/ZenEmojis.mjs
|
||||
|
||||
src/zen/workspaces/zen-workspaces.css
|
||||
|
||||
*.inc
|
||||
|
@@ -7,6 +7,6 @@
|
||||
"useTabs": false,
|
||||
"jsxSingleQuote": false,
|
||||
"semi": true,
|
||||
"printWidth": 128,
|
||||
"plugins": []
|
||||
"printWidth": 100,
|
||||
"plugins": ["prettier-plugin-sh"]
|
||||
}
|
||||
|
1
.python-version
Normal file
@@ -0,0 +1 @@
|
||||
3.11
|
1
.rust-toolchain
Normal file
@@ -0,0 +1 @@
|
||||
1.82
|
30
.vscode/settings.json
vendored
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"*.inc": "cpp",
|
||||
"typeindex": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"functional": "cpp",
|
||||
"array": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"memory": "cpp",
|
||||
"future": "cpp",
|
||||
"istream": "cpp",
|
||||
"tuple": "cpp",
|
||||
"utility": "cpp",
|
||||
"variant": "cpp",
|
||||
"compare": "cpp",
|
||||
"thread": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"span": "cpp",
|
||||
"vector": "cpp",
|
||||
"charconv": "cpp",
|
||||
"chrono": "cpp",
|
||||
"optional": "cpp",
|
||||
"format": "cpp",
|
||||
"ratio": "cpp",
|
||||
"system_error": "cpp",
|
||||
"regex": "cpp",
|
||||
"type_traits": "cpp"
|
||||
}
|
||||
}
|
1
.well-known/funding-manifest-urls
Normal file
@@ -0,0 +1 @@
|
||||
https://zen-browser.app/funding.json
|
@@ -1,14 +0,0 @@
|
||||
#!/bin/sh
|
||||
SELF=$(readlink -f "$0")
|
||||
HERE=${SELF%/*}
|
||||
export PATH="${HERE}:${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
|
||||
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
|
||||
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||
DEFAULT_XDG_DATA_DIRS='./share/:/usr/share/gnome:/usr/local/share/:/usr/share/'
|
||||
export XDG_DATA_DIRS="${HERE}/usr/share/:${XDG_DATA_DIRS:-$DEFAULT_XDG_DATA_DIRS}"
|
||||
export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
|
||||
export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
|
||||
export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
|
||||
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
|
||||
exec "${EXEC}" "$@"
|
@@ -1 +1 @@
|
||||
* @mauro-balades
|
||||
* @mr-cheffy
|
||||
|
@@ -1,3 +1,9 @@
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
@@ -17,23 +23,23 @@ diverse, inclusive, and healthy community.
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
@@ -106,7 +112,7 @@ Violating these terms may lead to a permanent ban.
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
|
162
README.md
@@ -1,140 +1,52 @@
|
||||
<div align="center">
|
||||
<picture>
|
||||
<img src="./docs/assets/zen-black.svg" width="128px">
|
||||
</picture>
|
||||
</div>
|
||||
<h1 align="center">
|
||||
Zen Browser
|
||||
</h1>
|
||||
<!--
|
||||
- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<!-- TODO: Get a job -->
|
||||
<img src="./docs/assets/zen-dark.svg" width="100px" align="left">
|
||||
|
||||
Experience tranquillity while browsing the web without people tracking you!
|
||||
|
||||
- [Website](https://zen-browser.app)
|
||||
- [Download](https://zen-browser.app/download)
|
||||
- [Release Notes](https://zen-browser.app/release-notes/latest)
|
||||
### `Zen Browser`
|
||||
|
||||
[](https://github.com/zen-browser/desktop/releases)
|
||||
[](https://crowdin.com/project/zen-browser)
|
||||
[](https://github.com/zen-browser/desktop/actions/workflows/build.yml)
|
||||
|
||||
[](https://flathub.org/apps/io.github.zen_browser.zen)
|
||||
Zen is a firefox-based browser with the aim of pushing your productivity to a new level!
|
||||
|
||||
[](https://www.patreon.com/zen_browser)
|
||||
<div flex="true">
|
||||
<a href="https://zen-browser.app/download">
|
||||
Download
|
||||
</a>
|
||||
•
|
||||
<a href="https://zen-browser.app">
|
||||
Website
|
||||
</a>
|
||||
•
|
||||
<a href="https://docs.zen-browser.app">
|
||||
Documentation
|
||||
</a>
|
||||
•
|
||||
<a href="https://zen-browser.app/release-notes/latest">
|
||||
Release Notes
|
||||
</a>
|
||||
</div>
|
||||
|
||||
[](https://ko-fi.com/zen_browser)
|
||||
### Firefox Versions
|
||||
|
||||
# Compatibility
|
||||
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `142.0.1`! 🚀
|
||||
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 142.0.1`!
|
||||
|
||||
Zen is currently built using firefox version `131.0.3`!
|
||||
### Contributing
|
||||
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
If you'd like to report a bug, please do so on our [GitHub Issues page](https://github.com/zen-browser/desktop/issues/) and for feature requests, you can use [Github Discussions](https://github.com/zen-browser/desktop/discussions).
|
||||
|
||||
# Contribution
|
||||
Zen is an open-source project, and we welcome contributions from the community! Please take a look at the [contribution guidelines](./docs/contribute.md) before getting started!
|
||||
|
||||
Zen is an open-source project, and we welcome contributions from the community!
|
||||
#### Partners
|
||||
|
||||
- Check out the [contribution guidelines](./docs/contribute.md)!
|
||||
Thanks to all the partners of Zen for their support and contributions:
|
||||
|
||||
# Performance
|
||||
|
||||
Zen is built with performance in mind, and we have optimized the browser to be as fast as possible!
|
||||
|
||||
- Checkout the latest [performance benchmarks](https://docs.zen-browser.app/benchmarks)!
|
||||
|
||||
# Installation
|
||||
|
||||
## Supported Operating Systems
|
||||
|
||||
Zen is available for Linux, macOS, and Windows. You can download the latest version from the official website at [zen-browser.app](https://zen-browser.app/download), or from the [GitHub Releases](https://github.com/zen-browser/desktop/releases) page.
|
||||
|
||||
### Windows
|
||||
|
||||
#### Winget
|
||||
|
||||
- Generic
|
||||
|
||||
```
|
||||
winget install --id Zen-Team.Zen-Browser
|
||||
```
|
||||
|
||||
- Optimized
|
||||
|
||||
```
|
||||
winget install --id Zen-Team.Zen-Browser.Optimized
|
||||
```
|
||||
|
||||
####
|
||||
|
||||
### macOS
|
||||
|
||||
- Requires macOS 10.15 or later
|
||||
- Available for ARM and Intel architectures
|
||||
|
||||
You can also install Zen using Homebrew:
|
||||
|
||||
```
|
||||
brew install --cask zen-browser
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
#### AppImage
|
||||
|
||||
- `zsync` is required for the Update feature of the script below
|
||||
|
||||
```
|
||||
bash <(curl https://updates.zen-browser.app/appimage.sh)
|
||||
```
|
||||
|
||||
#### Flatpak
|
||||
|
||||
```
|
||||
flatpak install flathub io.github.zen_browser.zen
|
||||
```
|
||||
|
||||
#### Arch-based distributions
|
||||
|
||||
##### Generic
|
||||
|
||||
```
|
||||
yay -S zen-browser-bin
|
||||
```
|
||||
|
||||
##### Optimized
|
||||
|
||||
```
|
||||
yay -S zen-browser-avx2-bin
|
||||
```
|
||||
|
||||
To upgrade the browser to a newer version, use the embedded update functionality in `About Zen`.
|
||||
|
||||
# Core Components
|
||||
|
||||
Some components used by @zen-browser as an attempt to make firefox forks a better place, and for other to enjoy the beauty of OSS. You can find them [here](https://github.com/zen-browser/components).
|
||||
|
||||
## 🚀 Run Locally
|
||||
|
||||
In order to download and run zen locally, please follow [these instructions](https://docs.zen-browser.app/contribute/desktop).
|
||||
|
||||
## Special Thanks
|
||||
|
||||
Special thanks to... EVERYONE 🎉! Checkout the team and contributors page [here](https://zen-browser.app/about)
|
||||
|
||||
## Third Party Code
|
||||
|
||||
Zen couldn't be in its current state without the help of these amazing projects!
|
||||
|
||||
- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
|
||||
|
||||
## License
|
||||
|
||||
[MPL LICENSE](./LICENSE)
|
||||
|
||||
## Star History
|
||||
|
||||
<a href="https://star-history.com/#zen-browser/desktop&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=zen-browser/desktop&type=Date" />
|
||||
</picture>
|
||||
<a href="https://blacksmith.sh">
|
||||
<img src="./docs/assets/blacksmith-yellow.png" width="350px"/>
|
||||
</a>
|
||||
|
@@ -3,4 +3,9 @@
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 -960 960 960"><path d="M200-446.667v-66.666h560v66.666H200Z"/></svg>
|
||||
|
||||
# Security Policy
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report security vulnerabilities [here](https://github.com/zen-browser/desktop/security/advisories/new)
|
Before Width: | Height: | Size: 395 B After Width: | Height: | Size: 380 B |
3
babel.config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"presets": ["@babel/preset-typescript"]
|
||||
}
|
10
build/AppDir/AppRun
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
CURRENTDIR="$(dirname "$(readlink -f "$0")")"
|
||||
export PATH="${CURRENTDIR}:${PATH}"
|
||||
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||
export MOZ_APP_LAUNCHER="${APPIMAGE}" # Allows setting as default browser
|
||||
exec "${CURRENTDIR}/zen" "$@"
|
@@ -5,7 +5,7 @@ Exec=zen %u
|
||||
Icon=zen
|
||||
Type=Application
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
|
||||
StartupWMClass=zen-alpha
|
||||
StartupWMClass=zen
|
||||
Categories=Network;WebBrowser;
|
||||
StartupNotify=true
|
||||
Terminal=false
|
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!--
|
||||
Entitlements to apply to the main browser process executable during
|
||||
codesigning of production channel builds.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||
|
||||
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||
|
||||
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||
<key>com.apple.security.device.audio-input</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||
<key>com.apple.security.device.camera</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the location on sites the user allows -->
|
||||
<key>com.apple.security.personal-information.location</key><true/>
|
||||
|
||||
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||
for native messaging webextension helper applications launched by
|
||||
Firefox which rely on Apple Events to signal other processes. -->
|
||||
<key>com.apple.security.automation.apple-events</key><true/>
|
||||
</dict>
|
||||
</plist>
|
@@ -1,169 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# Runs codesign commands to codesign a Firefox .app bundle and enable macOS
|
||||
# Hardened Runtime. Intended to be manually run by developers working on macOS
|
||||
# 10.14+ who want to enable Hardened Runtime for manual testing. This is
|
||||
# provided as a stop-gap until automated build tooling is available that signs
|
||||
# binaries with a certificate generated during builds (bug 1522409). This
|
||||
# script requires macOS 10.14 because Hardened Runtime is only available for
|
||||
# applications running on 10.14 despite support for the codesign "-o runtime"
|
||||
# option being available in 10.13.6 and newer.
|
||||
#
|
||||
# The script requires an identity string (-i option) from an Apple Developer
|
||||
# ID certificate. This can be found in the macOS KeyChain after configuring an
|
||||
# Apple Developer ID certificate.
|
||||
#
|
||||
# Example usage on macOS 10.14:
|
||||
#
|
||||
# $ ./mach build
|
||||
# $ ./mach build package
|
||||
# $ open </PATH/TO/DMG/FILE.dmg>
|
||||
# <Drag Nightly.app to ~>
|
||||
# $ ./security/mac/hardenedruntime/codesign.bash \
|
||||
# -a ~/Nightly.app \
|
||||
# -i <MY-IDENTITY-STRING> \
|
||||
# -b security/mac/hardenedruntime/browser.developer.entitlements.xml
|
||||
# -p security/mac/hardenedruntime/plugin-container.developer.entitlements.xml
|
||||
# $ open ~/Nightly.app
|
||||
#
|
||||
|
||||
usage ()
|
||||
{
|
||||
echo "Usage: $0 "
|
||||
echo " -a <PATH-TO-BROWSER.app>"
|
||||
echo " -i <IDENTITY>"
|
||||
echo " -b <ENTITLEMENTS-FILE>"
|
||||
echo " -p <CHILD-ENTITLEMENTS-FILE>"
|
||||
echo " [-o <OUTPUT-DMG-FILE>]"
|
||||
exit -1
|
||||
}
|
||||
|
||||
# Make sure we are running on macOS with the sw_vers command available.
|
||||
SWVERS=/usr/bin/sw_vers
|
||||
if [ ! -x ${SWVERS} ]; then
|
||||
echo "ERROR: macOS 10.14 or later is required"
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# Require macOS 10.14 or newer.
|
||||
#OSVERSION=`${SWVERS} -productVersion|sed -En 's/[0-9]+\.([0-9]+)\.[0-9]+/\1/p'`;
|
||||
#if [ ${OSVERSION} \< 14 ]; then
|
||||
# echo "ERROR: macOS 10.14 or later is required"
|
||||
# exit -1
|
||||
#fi
|
||||
|
||||
while getopts "a:i:b:o:p:" opt; do
|
||||
case ${opt} in
|
||||
a ) BUNDLE=$OPTARG ;;
|
||||
i ) IDENTITY=$OPTARG ;;
|
||||
b ) BROWSER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||
p ) PLUGINCONTAINER_ENTITLEMENTS_FILE=$OPTARG ;;
|
||||
o ) OUTPUT_DMG_FILE=$OPTARG ;;
|
||||
\? ) usage; exit -1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z "${BUNDLE}" ] ||
|
||||
[ -z "${IDENTITY}" ] ||
|
||||
[ -z "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ] ||
|
||||
[ -z "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -d "${BUNDLE}" ]; then
|
||||
echo "Invalid bundle. Bundle should be a .app directory"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -e "${PLUGINCONTAINER_ENTITLEMENTS_FILE}" ]; then
|
||||
echo "Invalid entitlements file"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ ! -e "${BROWSER_ENTITLEMENTS_FILE}" ]; then
|
||||
echo "Invalid entitlements file"
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
# DMG file output flag is optional
|
||||
if [ ! -z "${OUTPUT_DMG_FILE}" ] &&
|
||||
[ -e "${OUTPUT_DMG_FILE}" ]; then
|
||||
echo "Output dmg file ${OUTPUT_DMG_FILE} exists. Please delete it first."
|
||||
usage
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo "-------------------------------------------------------------------------"
|
||||
echo "bundle: $BUNDLE"
|
||||
echo "identity: $IDENTITY"
|
||||
echo "browser entitlements file: $BROWSER_ENTITLEMENTS_FILE"
|
||||
echo "plugin-container entitlements file: $PLUGINCONTAINER_ENTITLEMENTS_FILE"
|
||||
echo "output dmg file (optional): $OUTPUT_DMG_FILE"
|
||||
echo "-------------------------------------------------------------------------"
|
||||
|
||||
set -x
|
||||
|
||||
# Clear extended attributes which cause codesign to fail
|
||||
xattr -cr "${BUNDLE}"
|
||||
|
||||
# Sign these binaries first. Signing of some binaries has an ordering
|
||||
# requirement where other binaries must be signed first.
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||
"${BUNDLE}/Contents/Library/LaunchServices/org.mozilla.updater" \
|
||||
"${BUNDLE}/Contents/MacOS/XUL" \
|
||||
"${BUNDLE}/Contents/MacOS/pingsender" \
|
||||
"${BUNDLE}/Contents/MacOS/*.dylib" \
|
||||
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
"${BUNDLE}"/Contents/MacOS/updater.app
|
||||
|
||||
# Sign zen main executable
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
--entitlements ${BROWSER_ENTITLEMENTS_FILE} \
|
||||
"${BUNDLE}"/Contents/MacOS/zen
|
||||
|
||||
# Sign Library/LaunchServices
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
"${BUNDLE}"/Contents/Library/LaunchServices/org.mozilla.updater
|
||||
|
||||
# Sign gmp-clearkey files
|
||||
find "${BUNDLE}"/Contents/Resources/gmp-clearkey -type f -exec \
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" {} \;
|
||||
|
||||
# Sign the main bundle
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" \
|
||||
--entitlements ${BROWSER_ENTITLEMENTS_FILE} "${BUNDLE}"
|
||||
|
||||
# Sign the plugin-container bundle with deep
|
||||
codesign --force -o runtime --verbose --sign "$IDENTITY" --deep \
|
||||
--entitlements ${PLUGINCONTAINER_ENTITLEMENTS_FILE} \
|
||||
"${BUNDLE}"/Contents/MacOS/plugin-container.app
|
||||
|
||||
# Validate
|
||||
codesign -vvv --deep --strict "${BUNDLE}"
|
||||
|
||||
# Create a DMG
|
||||
if [ ! -z "${OUTPUT_DMG_FILE}" ]; then
|
||||
DISK_IMAGE_DIR=`mktemp -d`
|
||||
TEMP_FILE=`mktemp`
|
||||
TEMP_DMG=${TEMP_FILE}.dmg
|
||||
NAME=`basename "${BUNDLE}"`
|
||||
|
||||
ditto "${BUNDLE}" "${DISK_IMAGE_DIR}/${NAME}"
|
||||
hdiutil create -size 400m -fs HFS+ \
|
||||
-volname Firefox -srcfolder "${DISK_IMAGE_DIR}" "${TEMP_DMG}"
|
||||
hdiutil convert -format UDZO \
|
||||
-o "${OUTPUT_DMG_FILE}" "${TEMP_DMG}"
|
||||
|
||||
rm ${TEMP_FILE}
|
||||
rm ${TEMP_DMG}
|
||||
rm -rf "${DISK_IMAGE_DIR}"
|
||||
fi
|
@@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!--
|
||||
Entitlements to apply to the plugin-container.app bundle during
|
||||
codesigning of production channel builds.
|
||||
-->
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<!-- Firefox needs to create executable pages (without MAP_JIT) -->
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
|
||||
|
||||
<!-- Firefox needs to create executable pages with MAP_JIT on aarch64 -->
|
||||
<key>com.apple.security.cs.allow-jit</key><true/>
|
||||
|
||||
<!-- Allow loading third party libraries. Needed for Flash and CDMs -->
|
||||
<key>com.apple.security.cs.disable-library-validation</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the microphone on sites the user allows -->
|
||||
<key>com.apple.security.device.audio-input</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the camera on sites the user allows -->
|
||||
<key>com.apple.security.device.camera</key><true/>
|
||||
|
||||
<!-- Firefox needs to access the location on sites the user allows -->
|
||||
<key>com.apple.security.personal-information.location</key><true/>
|
||||
|
||||
<!-- Allow Firefox to send Apple events to other applications. Needed
|
||||
for native messaging webextension helper applications launched by
|
||||
Firefox which rely on Apple Events to signal other processes. -->
|
||||
<key>com.apple.security.automation.apple-events</key><true/>
|
||||
</dict>
|
||||
</plist>
|
1
build/firefox-cache/l10n-last-commit-hash
Normal file
@@ -0,0 +1 @@
|
||||
df0d5e625b9e55c502d3e9e81b29a0d52d0f8d20
|
76
build/flatpak/app.zen_browser.zen.yml.template
Normal file
@@ -0,0 +1,76 @@
|
||||
app-id: app.zen_browser.zen
|
||||
runtime: org.freedesktop.Platform
|
||||
runtime-version: '24.08'
|
||||
sdk: org.freedesktop.Sdk
|
||||
base: org.mozilla.firefox.BaseApp
|
||||
base-version: '24.08'
|
||||
add-extensions:
|
||||
org.freedesktop.Platform.ffmpeg-full:
|
||||
directory: lib/ffmpeg
|
||||
version: '24.08'
|
||||
add-ld-path: .
|
||||
command: launch-script.sh
|
||||
finish-args:
|
||||
- --share=ipc
|
||||
- --share=network
|
||||
- --socket=pulseaudio
|
||||
- --socket=wayland
|
||||
- --socket=fallback-x11
|
||||
- --socket=pcsc
|
||||
- --socket=cups
|
||||
- --persist=.zen
|
||||
- --filesystem=xdg-download:rw
|
||||
- --device=all
|
||||
- --talk-name=org.freedesktop.FileManager1
|
||||
- --talk-name=org.freedesktop.ScreenSaver
|
||||
- --own-name=org.mozilla.zen.*
|
||||
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
- --talk-name=org.a11y.Bus
|
||||
- --env=GTK_PATH=/app/lib/gtkmodules
|
||||
- --env=MESA_SHADER_CACHE_DIR=/var/cache/mesa_shader_cache_db
|
||||
modules:
|
||||
- name: zen_browser
|
||||
buildsystem: simple
|
||||
build-commands:
|
||||
- mv zen /app/
|
||||
- mkdir -p /app/lib/ffmpeg
|
||||
|
||||
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
||||
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
||||
- install -Dm0644 metadata/icons/${{FLATPAK_ID}}.svg ${{FLATPAK_DEST}}/share/icons/hicolor/scalable/apps/${{FLATPAK_ID}}.svg
|
||||
- install -Dm0644 metadata/${{FLATPAK_ID}}.metainfo.xml ${{FLATPAK_DEST}}/share/metainfo/${{FLATPAK_ID}}.metainfo.xml
|
||||
- install -Dm0644 metadata/${{FLATPAK_ID}}.desktop ${{FLATPAK_DEST}}/share/applications/${{FLATPAK_ID}}.desktop
|
||||
|
||||
sources:
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-x86_64.tar.xz
|
||||
sha256: {linux_sha256}
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- x86_64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
|
||||
sha256: {linux_aarch64_sha256}
|
||||
strip-components: 0
|
||||
only-arches:
|
||||
- aarch64
|
||||
x-checker-data:
|
||||
type: json
|
||||
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
|
||||
version-query: .tag_name
|
||||
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
|
||||
is-main-source: true
|
||||
|
||||
- type: archive
|
||||
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar
|
||||
sha256: {flatpak_sha256}
|
||||
strip-components: 0
|
||||
dest: metadata
|
14
build/ts/transform-ts.js
Normal file
@@ -0,0 +1,14 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
const fs = require('fs');
|
||||
const MJS_FILES = ['src/zen/split-view/ZenViewSplitter.ts'];
|
||||
|
||||
for (const file of MJS_FILES) {
|
||||
const code = fs.readFileSync(file, 'utf8');
|
||||
require('@babel/core').transformSync(code, {
|
||||
presets: ['@babel/preset-typescript'],
|
||||
filename: file,
|
||||
});
|
||||
}
|
13
build/winsign/bootstrap.ps1
Normal file
@@ -0,0 +1,13 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
(New-Object System.Net.WebClient).DownloadFile("https://ftp.mozilla.org/pub/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe", "C:\MozillaBuildSetup-Latest.exe")
|
||||
C:\MozillaBuildSetup-Latest.exe /S | out-null
|
||||
|
||||
rustup target add aarch64-pc-windows-msvc
|
||||
rustup target add x86_64-pc-windows-msvc
|
||||
|
||||
cd engine
|
||||
./mach python --virtualenv build taskcluster/scripts/misc/get_vs.py build/vs/vs2022.yaml ../win-cross/vs2022
|
||||
cd ..
|
15
build/winsign/firefox_update.ps1
Normal file
@@ -0,0 +1,15 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
Remove-Item -Recurse -Force engine
|
||||
Remove-Item -Recurse -Force .surfer
|
||||
|
||||
npm run init
|
||||
|
||||
$job = Start-Job -ScriptBlock {
|
||||
npm run build
|
||||
}
|
||||
|
||||
# Wait for job to complete with timeout (in seconds)
|
||||
$job | Wait-Job -Timeout 5
|
@@ -1,3 +1,7 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
param(
|
||||
[string][Parameter(Mandatory=$true)]$SignIdentity,
|
||||
[string][Parameter(Mandatory=$true)]$GithubRunId
|
||||
@@ -6,108 +10,222 @@ param(
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
echo "Preparing environment"
|
||||
git pull --recurse-submodules
|
||||
git pull origin dev --recurse
|
||||
mkdir windsign-temp -ErrorAction SilentlyContinue
|
||||
|
||||
# Download in parallel
|
||||
gh run download $GithubRunId --name windows-x64-obj-specific -p windsign-temp\windows-x64-obj-specific
|
||||
gh run download $GithubRunId --name windows-x64-obj-generic -p windsign-temp\windows-x64-obj-generic
|
||||
|
||||
#show output too
|
||||
#Start-Job -Name "DownloadGitObjectsRepo" -ScriptBlock {
|
||||
# param($PWD)
|
||||
# echo "Downloading git objects repo to $PWD\windsign-temp\windows-binaries"
|
||||
# git clone https://github.com/zen-browser/windows-binaries.git $PWD\windsign-temp\windows-binaries
|
||||
# echo "Downloaded git objects repo to"
|
||||
#} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
Start-Job -Name "DownloadGitl10n" -ScriptBlock {
|
||||
param($PWD)
|
||||
cd $PWD
|
||||
$env:ZEN_L10N_CURR_DIR=[regex]::replace($PWD, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\", "/"
|
||||
C:\mozilla-build\start-shell.bat $PWD\scripts\download-language-packs.sh
|
||||
echo "Fetched l10n and Firefox's one"
|
||||
} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
Start-Job -Name "SurferInit" -ScriptBlock {
|
||||
param($PWD)
|
||||
cd $PWD
|
||||
npm run import -- --verbose
|
||||
npm run surfer -- ci --brand release
|
||||
} -Verbose -ArgumentList $PWD -Debug
|
||||
|
||||
echo "Downloading artifacts info"
|
||||
$artifactsInfo=gh api repos/zen-browser/desktop/actions/runs/$GithubRunId/artifacts
|
||||
$token = gh auth token
|
||||
|
||||
function New-TemporaryDirectory {
|
||||
$tmp = [System.IO.Path]::GetTempPath() # Not $env:TEMP, see https://stackoverflow.com/a/946017
|
||||
$name = (New-Guid).ToString("N")
|
||||
New-Item -ItemType Directory -Path (Join-Path $tmp $name)
|
||||
}
|
||||
|
||||
function DownloadFile($url, $targetFile) {
|
||||
$uri = New-Object "System.Uri" "$url"
|
||||
$request = [System.Net.HttpWebRequest]::Create($uri)
|
||||
$request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
|
||||
$request.Headers.Add("Authorization", "Bearer $token")
|
||||
$response = $request.GetResponse()
|
||||
$totalLength = [System.Math]::Floor($response.get_ContentLength()/1024)
|
||||
$responseStream = $response.GetResponseStream()
|
||||
$targetStream = New-Object -TypeName System.IO.FileStream -ArgumentList $targetFile, Create
|
||||
$buffer = new-object byte[] 10KB
|
||||
$count = $responseStream.Read($buffer,0,$buffer.length)
|
||||
$downloadedBytes = $count
|
||||
|
||||
while ($count -gt 0) {
|
||||
$targetStream.Write($buffer, 0, $count)
|
||||
$count = $responseStream.Read($buffer,0,$buffer.length)
|
||||
$downloadedBytes = $downloadedBytes + $count
|
||||
Write-Progress -activity "Downloading file '$($url.split('/') | Select -Last 1)'" -status "Downloaded ($([System.Math]::Floor($downloadedBytes/1024))K of $($totalLength)K): " -PercentComplete ((([System.Math]::Floor($downloadedBytes/1024)) / $totalLength) * 100)
|
||||
}
|
||||
|
||||
Write-Progress -activity "Finished downloading file '$($url.split('/') | Select -Last 1)'"
|
||||
|
||||
$targetStream.Flush()
|
||||
$targetStream.Close()
|
||||
$targetStream.Dispose()
|
||||
$responseStream.Dispose()
|
||||
}
|
||||
|
||||
function DownloadArtifacts($name) {
|
||||
echo "Downloading artifacts for $name"
|
||||
$artifactUrl=$($artifactsInfo | jq -r --arg NAME "windows-x64-obj-$name" '.artifacts[] | select(.name == $NAME) | .archive_download_url')
|
||||
echo "Artifact URL: $artifactUrl"
|
||||
|
||||
# download the artifact
|
||||
$outputPath="$PWD\windsign-temp\windows-x64-obj-$name"
|
||||
$tempDir = New-TemporaryDirectory
|
||||
$tempFile = Join-Path $tempDir "artifact-$($name).zip"
|
||||
|
||||
echo "Downloading artifact to $tempFile"
|
||||
DownloadFile $artifactUrl $tempFile
|
||||
|
||||
Start-Job -Name "UnzipArtifact$name" -ScriptBlock {
|
||||
param($tempFile, $outputPath)
|
||||
echo "Unzipping artifact to $outputPath"
|
||||
Expand-Archive -Path $tempFile -DestinationPath $outputPath -Force
|
||||
echo "Unzipped artifact to $outputPath"
|
||||
} -ArgumentList $tempFile, $outputPath -Verbose -Debug
|
||||
}
|
||||
|
||||
DownloadArtifacts arm64
|
||||
DownloadArtifacts x86_64
|
||||
|
||||
# Wait for the jobs to finish
|
||||
Wait-Job -Name "UnzipArtifactarm64"
|
||||
Wait-Job -Name "UnzipArtifactx86_64"
|
||||
|
||||
mkdir engine\obj-x86_64-pc-windows-msvc\ -ErrorAction SilentlyContinue
|
||||
mkdir .\.github\workflows\object\ -ErrorAction SilentlyContinue
|
||||
|
||||
pnpm surfer ci --brand alpha
|
||||
# Collect all .exe and .dll files into a list
|
||||
$files = Get-ChildItem windsign-temp\windows-x64-obj-x86_64\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-x86_64\ -Recurse -Include *.dll
|
||||
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-arm64\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-obj-arm64\ -Recurse -Include *.dll
|
||||
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
|
||||
$env:ZEN_RELEASE="true"
|
||||
$env:SURFER_SIGNING_MODE="true"
|
||||
$env:SCCACHE_GHA_ENABLED="false"
|
||||
Wait-Job -Name "SurferInit"
|
||||
Wait-Job -Name "DownloadGitl10n"
|
||||
|
||||
function SignAndPackage($name) {
|
||||
echo "Executing on $name"
|
||||
rmdir .\dist -Recurse -ErrorAction SilentlyContinue
|
||||
rmdir engine\obj-x86_64-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
cp windsign-temp\windows-x64-obj-$name engine\obj-x86_64-pc-windows-msvc\ -Recurse
|
||||
echo "Signing $name"
|
||||
|
||||
# Collect all .exe and .dll files into a list
|
||||
$files = Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.exe
|
||||
$files += Get-ChildItem engine\obj-x86_64-pc-windows-msvc\ -Recurse -Include *.dll
|
||||
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files /ph
|
||||
echo "Packaging $name"
|
||||
$env:SURFER_SIGNING_MODE="sign"
|
||||
$env:MAR="$PWD\\build\\winsign\\mar.exe"
|
||||
if ($name -eq "generic") {
|
||||
$env:SURFER_COMPAT="true"
|
||||
} else {
|
||||
rm env:SURFER_COMPAT -ErrorAction SilentlyContinue
|
||||
rmdir engine\obj-$name-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
$objName=$name
|
||||
# instead of arm, use aarch64
|
||||
if ($name -eq "arm64") {
|
||||
$objName="aarch64"
|
||||
}
|
||||
|
||||
echo "Removing old obj dir"
|
||||
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
echo "Creating new obj dir"
|
||||
cp windsign-temp\windows-x64-obj-$name engine\obj-$objName-pc-windows-msvc\ -Recurse
|
||||
|
||||
echo "Copying setup.exe into obj dir"
|
||||
$env:ZEN_SETUP_EXE_PATH="$PWD\windsign-temp\windows-x64-obj-$name\browser\installer\windows\instgen\setup.exe"
|
||||
|
||||
if ($name -eq "arm64") {
|
||||
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2022\VC\Redist\MSVC\14.38.33135\arm64\Microsoft.VC143.CRT"
|
||||
} else {
|
||||
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2022\VC\Redist\MSVC\14.38.33135\x64\Microsoft.VC143.CRT"
|
||||
}
|
||||
|
||||
$env:MAR="..\\build\\winsign\\mar.exe"
|
||||
if ($name -eq "arm64") {
|
||||
$env:SURFER_COMPAT="aarch64"
|
||||
} else {
|
||||
$env:SURFER_COMPAT="x86_64"
|
||||
}
|
||||
echo "Compat Mode? $env:SURFER_COMPAT"
|
||||
pnpm surfer package --verbose
|
||||
|
||||
# Configure each time since we are cloning from a linux environment into
|
||||
# a windows environment, and the build system is not smart enough to detect that
|
||||
# we are on a different platform.
|
||||
cd .\engine
|
||||
echo "Configuring for $name"
|
||||
.\mach configure
|
||||
cd ..
|
||||
|
||||
echo "Packaging $name"
|
||||
npm run package -- --verbose
|
||||
|
||||
# In the release script, we do the following:
|
||||
# tar -xvf .github/workflows/object/windows-x64-signed-generic.tar.gz -C windows-x64-signed-generic
|
||||
# tar -xvf .github/workflows/object/windows-x64-signed-x86_64.tar.gz -C windows-x64-signed-x86_64
|
||||
# We need to create a tar with the same structure and no top-level directory
|
||||
# Inside, we need:
|
||||
# - update_manifest/*
|
||||
# - windows.mar or windows-generic.mar
|
||||
# - zen.installer.exe or zen.installer-generic.exe
|
||||
# - zen.win-generic.zip or zen.win-specific.zip
|
||||
# - windows.mar
|
||||
# - zen.installer.exe
|
||||
echo "Creating tar for $name"
|
||||
rm .\windsign-temp\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||
mkdir windsign-temp\windows-x64-signed-$name
|
||||
|
||||
# Move the MAR, add the `-generic` suffix if needed
|
||||
if ($name -eq "generic") {
|
||||
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows-generic.mar
|
||||
|
||||
# Move the MAR, add the `-arm64` suffix if needed
|
||||
echo "Moving MAR for $name"
|
||||
if ($name -eq "arm64") {
|
||||
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows-$name.mar
|
||||
} else {
|
||||
mv .\dist\output.mar windsign-temp\windows-x64-signed-$name\windows.mar
|
||||
}
|
||||
|
||||
# Move the installer
|
||||
if ($name -eq "generic") {
|
||||
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer-generic.exe
|
||||
echo "Moving installer for $name"
|
||||
if ($name -eq "arm64") {
|
||||
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer-$name.exe
|
||||
} else {
|
||||
mv .\dist\zen.installer.exe windsign-temp\windows-x64-signed-$name\zen.installer.exe
|
||||
}
|
||||
|
||||
# Move the zip
|
||||
mv (Get-Item .\dist\*.en-US.win64.zip) windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
|
||||
# Extract the zip, sign everything inside, and repackage it
|
||||
Expand-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name.zip -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name
|
||||
rm windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
$files = Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.exe
|
||||
$files += Get-ChildItem windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -Include *.dll
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files /ph
|
||||
Compress-Archive -Path windsign-temp\windows-x64-signed-$name\zen.win-$name -DestinationPath windsign-temp\windows-x64-signed-$name\zen.win-$name.zip
|
||||
rmdir windsign-temp\windows-x64-signed-$name\zen.win-$name -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
# Move the manifest
|
||||
mv .\dist\update\. windsign-temp\windows-x64-signed-$name\update_manifest
|
||||
|
||||
echo "Invoking tar for $name"
|
||||
# note: We need to sign it into a parent folder, called windows-x64-signed-$name
|
||||
rmdir .\.github\workflows\object\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||
mv .\windsign-temp\windows-x64-signed-$name .\.github\workflows\object\windows-x64-signed-$name -Force
|
||||
rmdir .\windsign-temp\windows-binaries\windows-x64-signed-$name -Recurse -ErrorAction SilentlyContinue
|
||||
mv windsign-temp\windows-x64-signed-$name .\windsign-temp\windows-binaries -Force
|
||||
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
echo "Finished $name"
|
||||
}
|
||||
|
||||
SignAndPackage specific
|
||||
SignAndPackage generic
|
||||
SignAndPackage arm64
|
||||
SignAndPackage x86_64
|
||||
|
||||
$files = Get-ChildItem .\windsign-temp\windows-binaries -Recurse -Include *.exe
|
||||
signtool.exe sign /n "$SignIdentity" /t http://time.certum.pl/ /fd sha256 /v $files
|
||||
|
||||
echo "All artifacts signed and packaged, ready for release!"
|
||||
echo "Commiting the changes to the repository"
|
||||
git add .\.github\workflows\object
|
||||
cd windsign-temp\windows-binaries
|
||||
git add .
|
||||
git commit -m "Sign and package windows artifacts"
|
||||
git push
|
||||
cd ..\..
|
||||
|
||||
# Cleaning up
|
||||
|
||||
echo "All done!"
|
||||
echo "All the artifacts (Generic and Specific) are signed and packaged, get a rest now!"
|
||||
echo "All the artifacts (x86_64 and arm46) are signed and packaged, get a rest now!"
|
||||
Read-Host "Press Enter to continue"
|
||||
|
||||
echo "Cleaning up"
|
||||
rmdir windsign-temp -Recurse -ErrorAction SilentlyContinue
|
||||
echo "Cleaning up"
|
||||
rmdir windsign-temp\windows-x64-obj-x86_64 -Recurse -ErrorAction SilentlyContinue
|
||||
rmdir windsign-temp\windows-x64-obj-arm64 -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
echo "Opening visual studio code"
|
||||
code .
|
||||
|
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.9 KiB |
@@ -1 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fff;}</style><linearGradient id="e" x1="128" y1="256" x2="128" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="d"><rect class="h" y="0" width="256" height="256" rx="58.4" ry="58.4"/></g><g id="f"><path class="i" d="M165.9156,146.3156c-15.6016,0-28.6656,11.0055-31.8813,25.6562h-12.0687c-3.2156-14.6508-16.2797-25.6562-31.8813-25.6562-18.0063,0-32.6562,14.65-32.6562,32.6562s14.65,32.6562,32.6562,32.6562c15.6016,0,28.6656-11.0055,31.8813-25.6562h12.0687c3.2156,14.6508,16.2797,25.6562,31.8813,25.6562,18.0063,0,32.6562-14.65,32.6562-32.6562s-14.65-32.6562-32.6562-32.6562ZM90.0844,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562ZM165.9156,197.6281c-10.2875,0-18.6562-8.3687-18.6562-18.6562s8.3687-18.6562,18.6562-18.6562,18.6562,8.3688,18.6562,18.6562-8.3687,18.6562-18.6562,18.6562Z"/><path class="i" d="M214.4,115.6812h-21.8391l-9.2422-65.2906c-.3031-2.1406-1.5813-4.0219-3.4594-5.0969-1.8781-1.0719-4.1469-1.2188-6.1469-.3906l-45.7125,18.8906-45.7125-18.8906c-2-.8281-4.2688-.6813-6.1469.3906-1.8781,1.075-3.1562,2.9562-3.4594,5.0969l-9.2422,65.2906h-21.8391c-3.8656,0-7,3.1344-7,7s3.1344,7,7,7h172.8c3.8656,0,7-3.1344,7-7s-3.1344-7-7-7ZM85.2781,61.2875l40.0469,16.55c1.7125.7063,3.6375.7063,5.35,0l40.0469-16.55,7.6984,54.3937h-100.8406l7.6984-54.3937Z"/></g></svg>
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 4.9 KiB |
@@ -1 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 80 80"><defs><style>.g{fill:#000;}.g,.h,.i{stroke-width:0px;}.h{fill:url(#e);}.i{fill:#fef9fe;}</style><linearGradient id="e" x1="40" y1="80" x2="40" y2="0" gradientUnits="userSpaceOnUse"><stop offset=".1" stop-color="#fff" stop-opacity=".02"/><stop offset=".9" stop-color="#fff" stop-opacity=".1"/></linearGradient></defs><g id="c"><rect class="g" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="d"><rect class="h" width="80" height="80" rx="18.25" ry="18.25"/></g><g id="f"><path class="i" d="M63.4352,57.677c-.0536,3.2125-2.7416,5.7589-5.9546,5.7589h-22.0762c-1.1221,0-1.8295-1.2103-1.2751-2.1859,1.4628-2.5738,4.3202-6.7829,8.5529-9.1539.4406-.2468.9366-.3783,1.4416-.3783h13.4532c3.2692,0,5.9129,2.6774,5.8582,5.9591Z"/><path class="i" d="M45.8707,18.7498c-1.4628,2.5738-4.3202,6.7829-8.5529,9.1539-.4406.2468-.9366.3783-1.4416.3783h-13.3567c-3.213,0-5.901-2.5464-5.9546-5.7589-.0547-3.2817,2.589-5.9591,5.8582-5.9591h22.1726c1.1221,0,1.8295,1.2103,1.2751,2.1859Z"/><path class="i" d="M22.4207,63.4375c-.7473,0-1.5065-.1438-2.2398-.4475-2.9896-1.2383-4.4093-4.6657-3.171-7.6551,1.9045-4.5977,4.6342-8.7196,8.1136-12.2511,3.6044-3.6585,7.8551-6.5172,12.6343-8.4968,6.5691-2.7211,11.6853-7.8373,14.4061-14.4061,1.2383-2.9896,4.6658-4.409,7.6551-3.171,2.9896,1.2383,4.4093,4.6657,3.171,7.6551-1.9045,4.5977-4.6342,8.7196-8.1136,12.2511-3.6044,3.6585-7.8551,6.5172-12.6343,8.4968-6.5691,2.7211-11.6853,7.8373-14.4061,14.4061-.9345,2.2562-3.1164,3.6185-5.4153,3.6185Z"/></g></svg>
|
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 682 B |
Before Width: | Height: | Size: 748 B |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 946 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 219 B |
BIN
configs/branding/release/PrivateBrowsing_150.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
configs/branding/release/PrivateBrowsing_70.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
configs/branding/release/VisualElements_150.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
configs/branding/release/VisualElements_70.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
configs/branding/release/content/about-logo-private.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
1
configs/branding/release/content/about-logo-private.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg id="e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 256 256"><defs><style>.h{filter:url(#f);}.i{fill:#202020;}.j{fill:#f2f0e3;}</style><filter id="f" x="-.4" y="1.68" width="256.8" height="256.8" filterUnits="userSpaceOnUse"><feOffset dx="0" dy="2"/><feGaussianBlur result="g" stdDeviation="2"/><feFlood flood-color="#000" flood-opacity=".5"/><feComposite in2="g" operator="in"/><feComposite in="SourceGraphic"/></filter></defs><g class="h"><rect class="i" x="5.75" y="5.7717" width="244.5" height="244.5" rx="46" ry="46"/></g><path class="j" d="M165.9933,146.3748c-15.6335,0-28.7244,11.028-31.9466,25.7088h-12.0935c-3.2222-14.6808-16.313-25.7088-31.9466-25.7088-18.0431,0-32.7232,14.68-32.7232,32.7232s14.68,32.7232,32.7232,32.7232c15.6335,0,28.7244-11.028,31.9466-25.7088h12.0935c3.2222,14.6808,16.313,25.7088,31.9466,25.7088,18.0431,0,32.7232-14.68,32.7232-32.7232s-14.68-32.7232-32.7232-32.7232ZM90.0067,197.7925c-10.3086,0-18.6945-8.3859-18.6945-18.6945s8.3859-18.6945,18.6945-18.6945,18.6945,8.3859,18.6945,18.6945-8.3859,18.6945-18.6945,18.6945ZM165.9933,197.7925c-10.3086,0-18.6945-8.3859-18.6945-18.6945s8.3859-18.6945,18.6945-18.6945,18.6945,8.3859,18.6945,18.6945-8.3859,18.6945-18.6945,18.6945Z"/><path class="j" d="M214.577,115.6777h-21.8838l-9.2611-65.4244c-.3037-2.145-1.5845-4.0301-3.4665-5.1073-1.882-1.0741-4.1554-1.2212-6.1595-.3914l-45.8062,18.9293-45.8062-18.9293c-2.0041-.8298-4.2775-.6826-6.1595.3914-1.882,1.0772-3.1627,2.9623-3.4665,5.1073l-9.2611,65.4244h-21.8838c-3.8735,0-7.0143,3.1408-7.0143,7.0143s3.1408,7.0143,7.0143,7.0143h173.1541c3.8735,0,7.0143-3.1408,7.0143-7.0143s-3.1408-7.0143-7.0143-7.0143ZM85.1906,61.1725l40.1289,16.5839c1.716.7077,3.645.7077,5.361,0l40.1289-16.5839,7.7142,54.5052h-101.0473l7.7142-54.5052Z"/></svg>
|
After Width: | Height: | Size: 1.8 KiB |
BIN
configs/branding/release/content/about-logo-private@2x.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
configs/branding/release/content/about-logo.png
Normal file
After Width: | Height: | Size: 16 KiB |