mirror of
https://github.com/langgenius/dify.git
synced 2026-02-10 23:50:13 -05:00
Compare commits
7663 Commits
0.3.0
...
feat/sqlal
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
225238b4b2 | ||
|
|
c4ea3e47fd | ||
|
|
e9738b891f | ||
|
|
829796514a | ||
|
|
ef1db35f80 | ||
|
|
f9c67621ca | ||
|
|
e29e8e3180 | ||
|
|
7a81e720d4 | ||
|
|
55600c0eb1 | ||
|
|
35e41d7d68 | ||
|
|
b610cf9a11 | ||
|
|
c8e9edc024 | ||
|
|
471cd760d7 | ||
|
|
7f48c57edf | ||
|
|
6569801162 | ||
|
|
9dd83f50a7 | ||
|
|
59c56b1b0d | ||
|
|
94cd2de940 | ||
|
|
3c23375607 | ||
|
|
56047f638f | ||
|
|
9c01d3e775 | ||
|
|
c85c87f3da | ||
|
|
eaa02e3d55 | ||
|
|
0219222a60 | ||
|
|
dba659b220 | ||
|
|
ee6458768e | ||
|
|
ed3d02dc6d | ||
|
|
95471b1188 | ||
|
|
6190cfbfd8 | ||
|
|
11f2f95103 | ||
|
|
2abbc14703 | ||
|
|
b2b2816ade | ||
|
|
4461df1bd9 | ||
|
|
f7f6b4a8b0 | ||
|
|
41be581594 | ||
|
|
20ad5b7ac2 | ||
|
|
a1c0bd7a1c | ||
|
|
fd7c4e8a6d | ||
|
|
41e549af14 | ||
|
|
b7360140ee | ||
|
|
c71f7c7613 | ||
|
|
c905c47775 | ||
|
|
4ca7ba000c | ||
|
|
f260627660 | ||
|
|
1e9142c213 | ||
|
|
82890fe38e | ||
|
|
7dc7c8af98 | ||
|
|
addebc465a | ||
|
|
5ab315aeaf | ||
|
|
f092bc1912 | ||
|
|
23b49b8304 | ||
|
|
9e97248ede | ||
|
|
d532b06310 | ||
|
|
07a2281730 | ||
|
|
42385f3ffa | ||
|
|
c597234374 | ||
|
|
3de73f07c6 | ||
|
|
0caeaf6e5c | ||
|
|
3395297c3e | ||
|
|
e60a7c7143 | ||
|
|
0e62a66cc2 | ||
|
|
ff32dff163 | ||
|
|
543c5236e7 | ||
|
|
341b3ae7c9 | ||
|
|
f01907aac2 | ||
|
|
a7c855cab8 | ||
|
|
29afc0657d | ||
|
|
d9860b8907 | ||
|
|
dc1ae57dc6 | ||
|
|
d6bd2a9bdb | ||
|
|
c9eed67cf6 | ||
|
|
0ded6303c1 | ||
|
|
b6e0abadab | ||
|
|
43bcf40f80 | ||
|
|
f06025a342 | ||
|
|
24fb95b050 | ||
|
|
49fca63927 | ||
|
|
ce5fe86430 | ||
|
|
666586b59c | ||
|
|
8a2851551a | ||
|
|
a2fe4a28c3 | ||
|
|
417ebd160b | ||
|
|
82be305680 | ||
|
|
03002f4971 | ||
|
|
1e7e8a8988 | ||
|
|
a715d5ac23 | ||
|
|
398c8117fe | ||
|
|
f45c18ee35 | ||
|
|
15c1db42dd | ||
|
|
a31c01f8d9 | ||
|
|
62753cdf13 | ||
|
|
dc7ce125ad | ||
|
|
eabdb09f8e | ||
|
|
fa6d03c979 | ||
|
|
634fb192ef | ||
|
|
a4b38e7521 | ||
|
|
8ff6de91b0 | ||
|
|
7fa0ad3161 | ||
|
|
53b21eea61 | ||
|
|
2f3a61b51b | ||
|
|
8bca7814f4 | ||
|
|
92c81b1833 | ||
|
|
44553d412c | ||
|
|
95ce224df0 | ||
|
|
8555635967 | ||
|
|
e843fe8aa6 | ||
|
|
b198c9474a | ||
|
|
4bb00b83d9 | ||
|
|
c91cbf6b97 | ||
|
|
f6ede6f1c1 | ||
|
|
65976b27fe | ||
|
|
2d73ee64a3 | ||
|
|
c61c2b0abd | ||
|
|
40d3332690 | ||
|
|
8e45753c68 | ||
|
|
73e217ab0d | ||
|
|
26ff59172e | ||
|
|
bebb4ffbaa | ||
|
|
523da66134 | ||
|
|
e1ca7a9bdb | ||
|
|
9a8cf709ba | ||
|
|
f909040567 | ||
|
|
845adb664a | ||
|
|
0c6cae2d59 | ||
|
|
a893ee0ffc | ||
|
|
82b63cc6e2 | ||
|
|
c327cfa86e | ||
|
|
82219c1162 | ||
|
|
cfc3f1527a | ||
|
|
caf1a5fbab | ||
|
|
4a6398fc1f | ||
|
|
2bcf96565a | ||
|
|
9a9d6a4a2b | ||
|
|
05f66fcf0d | ||
|
|
ea8245a91b | ||
|
|
759a932bb7 | ||
|
|
fb6f05c267 | ||
|
|
ff9b74efeb | ||
|
|
d6e7543ba6 | ||
|
|
e45d5700ec | ||
|
|
4e6682bd85 | ||
|
|
32c715c4d0 | ||
|
|
c11cdf7468 | ||
|
|
6217c96576 | ||
|
|
977690590e | ||
|
|
fd845c8b6c | ||
|
|
d7d9abb007 | ||
|
|
9f22b2726b | ||
|
|
f28b519556 | ||
|
|
762cf91133 | ||
|
|
9dd3dcff2b | ||
|
|
34fbcc9457 | ||
|
|
9cc8ac981b | ||
|
|
1153dcef69 | ||
|
|
f811471b18 | ||
|
|
2382229c7d | ||
|
|
f0e739be43 | ||
|
|
4dccdf9478 | ||
|
|
4c37d650d3 | ||
|
|
1b334e6966 | ||
|
|
d463bd6323 | ||
|
|
8c298b33cd | ||
|
|
dc1a380888 | ||
|
|
7e9be4d3d9 | ||
|
|
5579521ffc | ||
|
|
ab1059134d | ||
|
|
fe2ac66a52 | ||
|
|
f87db2652b | ||
|
|
3f9f02b9e7 | ||
|
|
578247ffbc | ||
|
|
9a5f214623 | ||
|
|
141ca8904a | ||
|
|
4488c090b2 | ||
|
|
59c1fde351 | ||
|
|
cf7ff76165 | ||
|
|
ac79691d69 | ||
|
|
1a37989769 | ||
|
|
830f891a74 | ||
|
|
5937a66e22 | ||
|
|
894e38f713 | ||
|
|
e4b5b0e5fd | ||
|
|
598dd1f816 | ||
|
|
35e24d4d14 | ||
|
|
fea2ffb3ba | ||
|
|
64f55d55a1 | ||
|
|
bfda4ce7e6 | ||
|
|
4f7cb7cd2a | ||
|
|
6517323add | ||
|
|
531a0b755a | ||
|
|
91bb8ae4d2 | ||
|
|
8cafc20098 | ||
|
|
9d5300440c | ||
|
|
58524d6d2b | ||
|
|
19cc6ea993 | ||
|
|
d7f0a31e24 | ||
|
|
312974aa20 | ||
|
|
d19c100166 | ||
|
|
a8ad80c405 | ||
|
|
650e38e17f | ||
|
|
24612adf2c | ||
|
|
06649f6c21 | ||
|
|
8b61f5e9c4 | ||
|
|
6432898e7a | ||
|
|
cced33d068 | ||
|
|
bd01af6415 | ||
|
|
35011b810d | ||
|
|
f295c7532c | ||
|
|
7065b67d07 | ||
|
|
c0b50ef61d | ||
|
|
1d8cca4fa2 | ||
|
|
3474c179e6 | ||
|
|
433dad7e1a | ||
|
|
be7ee380bc | ||
|
|
cff5de626b | ||
|
|
4d8b8f9210 | ||
|
|
a16ef7e73c | ||
|
|
c39dae06d4 | ||
|
|
f906e70f6b | ||
|
|
5139119307 | ||
|
|
1b537f904a | ||
|
|
556b631c54 | ||
|
|
49df9ceaf3 | ||
|
|
92ec1ac27a | ||
|
|
e74097afdf | ||
|
|
8ddc4f2292 | ||
|
|
7b51320346 | ||
|
|
9e39be0770 | ||
|
|
3e5e87930c | ||
|
|
15a5ba67f1 | ||
|
|
9e3b4dc90d | ||
|
|
48c42a9fba | ||
|
|
0b35bc1ede | ||
|
|
8e01bb40fe | ||
|
|
9d21772820 | ||
|
|
b745839bdb | ||
|
|
59ad6e02ce | ||
|
|
a3b33cbe28 | ||
|
|
7b8540281a | ||
|
|
0a6b78f883 | ||
|
|
56ee8f7d64 | ||
|
|
3cfcd32876 | ||
|
|
06dcb55a9d | ||
|
|
ec6cafd7aa | ||
|
|
6e9858960d | ||
|
|
150a8276b9 | ||
|
|
c6a90d4bb3 | ||
|
|
c71fd7113c | ||
|
|
5fc104a992 | ||
|
|
d1de3cfb94 | ||
|
|
44d36f2460 | ||
|
|
9088f151d9 | ||
|
|
c692962650 | ||
|
|
f0a60a9000 | ||
|
|
2f50f3fd4b | ||
|
|
24cd7bbc62 | ||
|
|
d299e75e1b | ||
|
|
f86b6658c9 | ||
|
|
0a56d65581 | ||
|
|
dfc03bac9f | ||
|
|
81e1376e08 | ||
|
|
f50c85d536 | ||
|
|
5830c69694 | ||
|
|
0173496a77 | ||
|
|
30c5b47699 | ||
|
|
e3191d4e91 | ||
|
|
a9b3539b90 | ||
|
|
5217017e69 | ||
|
|
bd5df5cf1c | ||
|
|
456dbfe7d7 | ||
|
|
586f210d6e | ||
|
|
275a0f9ddd | ||
|
|
cbf2ba6cec | ||
|
|
1bd621f819 | ||
|
|
bb6a331490 | ||
|
|
3922ad876f | ||
|
|
fdb53fdeb1 | ||
|
|
3fb5a7bff1 | ||
|
|
6157c67cfe | ||
|
|
fbc745764a | ||
|
|
78f09801b5 | ||
|
|
d0dd81cf84 | ||
|
|
65b832c46c | ||
|
|
a90b60c36f | ||
|
|
94a07706ec | ||
|
|
ab2eacb6c1 | ||
|
|
aead192743 | ||
|
|
c1e8584b97 | ||
|
|
8a2b208299 | ||
|
|
2b6882bd97 | ||
|
|
aa51662d98 | ||
|
|
3068526797 | ||
|
|
298d8c2d88 | ||
|
|
294e01a8c1 | ||
|
|
3a5aa4587c | ||
|
|
cf1778e696 | ||
|
|
54db4c176a | ||
|
|
5d3e8a31d0 | ||
|
|
885dff82e3 | ||
|
|
3c4aa24198 | ||
|
|
33b0814323 | ||
|
|
45ae511036 | ||
|
|
0fa063c640 | ||
|
|
40d35304ea | ||
|
|
89821d66bb | ||
|
|
09d84e900c | ||
|
|
a8746bff30 | ||
|
|
c4d8bf0ce9 | ||
|
|
9cca605bac | ||
|
|
dbd23f91e5 | ||
|
|
9387cc088c | ||
|
|
11f7a89e25 | ||
|
|
654d522b31 | ||
|
|
31e6ef77a6 | ||
|
|
e56c847210 | ||
|
|
e00172199a | ||
|
|
04f47836d8 | ||
|
|
faaca822e4 | ||
|
|
dc0f053925 | ||
|
|
517726da3a | ||
|
|
1d6c03eddf | ||
|
|
fdfccd1205 | ||
|
|
b30e7ced0a | ||
|
|
11770439be | ||
|
|
d89c5f7146 | ||
|
|
4a475bf1cd | ||
|
|
10be9cfbbf | ||
|
|
c20e0ad90d | ||
|
|
22f64d60bb | ||
|
|
7b7d332239 | ||
|
|
b1d189324a | ||
|
|
00fb468f2e | ||
|
|
bbbb6e04cb | ||
|
|
f5161d9add | ||
|
|
787251f00e | ||
|
|
cfe21f0826 | ||
|
|
196f691865 | ||
|
|
7a5bb1cfac | ||
|
|
b80d55b764 | ||
|
|
dd71625f52 | ||
|
|
19936d23d1 | ||
|
|
decf0f3da0 | ||
|
|
7242a67f84 | ||
|
|
c4884eb669 | ||
|
|
d49f3327e4 | ||
|
|
633e68a2f7 | ||
|
|
809f48f733 | ||
|
|
578b1b45ea | ||
|
|
86c3c58e64 | ||
|
|
8d803a26eb | ||
|
|
aa3129c2a9 | ||
|
|
97c924fe29 | ||
|
|
591c463e4b | ||
|
|
e1691fddaa | ||
|
|
b4d4351203 | ||
|
|
f7b1348623 | ||
|
|
2619c7553a | ||
|
|
f79d8baf63 | ||
|
|
bbdcbac544 | ||
|
|
d552680e72 | ||
|
|
df43c6ab8a | ||
|
|
cd47a47c3b | ||
|
|
e5d4235f1b | ||
|
|
f60aa36fa0 | ||
|
|
b2bcb6d21a | ||
|
|
b6cea71023 | ||
|
|
6462328620 | ||
|
|
fd86cadf67 | ||
|
|
c43c72c1a3 | ||
|
|
d77c2e4d17 | ||
|
|
1a7898dff1 | ||
|
|
af662b100b | ||
|
|
595df172a8 | ||
|
|
70bc5ca7f4 | ||
|
|
30617feff8 | ||
|
|
756864c85b | ||
|
|
c8c94ef870 | ||
|
|
10d51ada59 | ||
|
|
00f3a53f1c | ||
|
|
d2f0551170 | ||
|
|
cba2b9b2ad | ||
|
|
029d5d36ac | ||
|
|
8d897153a5 | ||
|
|
2e914808ea | ||
|
|
d00a72a435 | ||
|
|
36580221aa | ||
|
|
e686cc9eab | ||
|
|
66196459d5 | ||
|
|
a5387b304e | ||
|
|
beb1448441 | ||
|
|
272102c06d | ||
|
|
36406cd62f | ||
|
|
87c41c88a3 | ||
|
|
095c56a646 | ||
|
|
244c132656 | ||
|
|
043ec46c33 | ||
|
|
0e4f19eee0 | ||
|
|
ff34969f21 | ||
|
|
9a7245e1df | ||
|
|
4906eeac18 | ||
|
|
4da93ba579 | ||
|
|
319ecdd312 | ||
|
|
0c1ec35244 | ||
|
|
46375aacdb | ||
|
|
e6d4331994 | ||
|
|
2a0abc51b1 | ||
|
|
3bb67885ef | ||
|
|
e682749d03 | ||
|
|
9b83b0aadd | ||
|
|
0cac330bc2 | ||
|
|
fb8114792a | ||
|
|
eab6f65409 | ||
|
|
915023b809 | ||
|
|
f104839672 | ||
|
|
6841a09667 | ||
|
|
e937c8c72e | ||
|
|
960bb8a9b4 | ||
|
|
9b36059292 | ||
|
|
a4acc64afd | ||
|
|
25c69ac540 | ||
|
|
96a0b9991e | ||
|
|
2913d17fe2 | ||
|
|
d9e45a1abe | ||
|
|
24b4289d6c | ||
|
|
fb6ccccc3d | ||
|
|
8b74ae683a | ||
|
|
dd08957381 | ||
|
|
407323f817 | ||
|
|
2e2c87c5a1 | ||
|
|
f4522fd695 | ||
|
|
760a2c656c | ||
|
|
8940decd1b | ||
|
|
0c4193bd91 | ||
|
|
cd40cde790 | ||
|
|
c60c754ac9 | ||
|
|
ef80d3b707 | ||
|
|
24e8d21b3f | ||
|
|
d823da18db | ||
|
|
1e3df09fc6 | ||
|
|
75a10c276c | ||
|
|
50050527eb | ||
|
|
a39b185627 | ||
|
|
15270f09af | ||
|
|
f6a5ac0698 | ||
|
|
2b79da722b | ||
|
|
71d69e43cd | ||
|
|
5bc6e8a433 | ||
|
|
68076f2e22 | ||
|
|
8c38363038 | ||
|
|
345ac8333c | ||
|
|
2375047ef0 | ||
|
|
857a48012e | ||
|
|
208fe3d7de | ||
|
|
92cddbcc02 | ||
|
|
599b53c9cb | ||
|
|
062b173c66 | ||
|
|
db690013fd | ||
|
|
e93bfe3d41 | ||
|
|
ab910c736c | ||
|
|
4047a6bb12 | ||
|
|
df2478dc26 | ||
|
|
4cc3f6045b | ||
|
|
1550316b8d | ||
|
|
87394d2512 | ||
|
|
bad59c95bc | ||
|
|
9f138ef246 | ||
|
|
6453fc4973 | ||
|
|
f62f926537 | ||
|
|
b3dafd913b | ||
|
|
b2d8a7eaf1 | ||
|
|
3e54414191 | ||
|
|
a173546c8d | ||
|
|
aa69d90489 | ||
|
|
4ba1292455 | ||
|
|
bb01c31f30 | ||
|
|
cd90b2ca9e | ||
|
|
9a65350cf7 | ||
|
|
680eb7a9f6 | ||
|
|
878420463c | ||
|
|
4692e20daf | ||
|
|
13fe2ca8fe | ||
|
|
1264e7d4f6 | ||
|
|
4f45978cd9 | ||
|
|
5a0bf8e028 | ||
|
|
ffa163a8a8 | ||
|
|
8f86f5749d | ||
|
|
00d3bf15f3 | ||
|
|
7196c09e9d | ||
|
|
fadd9e0bf4 | ||
|
|
d8b4bbe067 | ||
|
|
24611e375a | ||
|
|
ccec582cea | ||
|
|
b2e4107c17 | ||
|
|
87aa070486 | ||
|
|
21230a8eb2 | ||
|
|
85cda47c70 | ||
|
|
7dadb33003 | ||
|
|
b5a7e64e19 | ||
|
|
b283b10d3e | ||
|
|
ecb22226d6 | ||
|
|
8635aacb46 | ||
|
|
bdd85b36a4 | ||
|
|
a0c7713494 | ||
|
|
abf4955c26 | ||
|
|
74340e3c04 | ||
|
|
b98b389baf | ||
|
|
877806c34d | ||
|
|
0bbf4fb66a | ||
|
|
169ce71e59 | ||
|
|
bdbe078630 | ||
|
|
88d5e27fe8 | ||
|
|
bb5b8d2902 | ||
|
|
bab4975809 | ||
|
|
2e44ebe98d | ||
|
|
a1961cc37a | ||
|
|
727e1d3743 | ||
|
|
4e3b16c5f4 | ||
|
|
6c36bf28d7 | ||
|
|
5548b22fe7 | ||
|
|
03664d6b51 | ||
|
|
07d383ffaa | ||
|
|
9bb7bcf52e | ||
|
|
67a686cf98 | ||
|
|
a3f2c05632 | ||
|
|
efcf052004 | ||
|
|
9234a2293d | ||
|
|
7a626747cf | ||
|
|
db01cbb63d | ||
|
|
4f868275a9 | ||
|
|
ed20d14d01 | ||
|
|
0add1af1c8 | ||
|
|
5c50c3aa70 | ||
|
|
9e7328abfb | ||
|
|
188eb838c5 | ||
|
|
36ab9974d2 | ||
|
|
a825f0f2b2 | ||
|
|
1b0f92a331 | ||
|
|
a13d7987e0 | ||
|
|
635e7d3e70 | ||
|
|
c78ef79995 | ||
|
|
c3f9a7ed9b | ||
|
|
c91253d05d | ||
|
|
285291f545 | ||
|
|
c0e1015c6e | ||
|
|
12d1bcc545 | ||
|
|
ec808f3fe8 | ||
|
|
394b0ac9c0 | ||
|
|
c2fcd2895b | ||
|
|
bb1514be2d | ||
|
|
8ffb9b6aed | ||
|
|
33afa7c84a | ||
|
|
69aad38d03 | ||
|
|
17b5309e47 | ||
|
|
05af23f88f | ||
|
|
4511f4f537 | ||
|
|
bdacc4da36 | ||
|
|
1a078657d8 | ||
|
|
77ba3e8f26 | ||
|
|
84e3571ec3 | ||
|
|
de18b14372 | ||
|
|
a1322ddb5d | ||
|
|
c7868fb176 | ||
|
|
4b6687db6b | ||
|
|
f1d5bc58b0 | ||
|
|
99f4cd1cfa | ||
|
|
874406d934 | ||
|
|
07d067d828 | ||
|
|
af7f67dc9c | ||
|
|
34e55028ae | ||
|
|
70e4d6be34 | ||
|
|
b690ac4e2a | ||
|
|
cbc0e639e4 | ||
|
|
b51c724a94 | ||
|
|
26a9abef64 | ||
|
|
fecdb9554d | ||
|
|
45ef177809 | ||
|
|
6574e9f0b2 | ||
|
|
cce13750ad | ||
|
|
928bef9d82 | ||
|
|
08dd3f7b50 | ||
|
|
2ac7a9c8fc | ||
|
|
240b65b980 | ||
|
|
7443c5a6fc | ||
|
|
a1cf48f84e | ||
|
|
e5122945fe | ||
|
|
22cd97e2e0 | ||
|
|
38057b1b0e | ||
|
|
eb52216a9c | ||
|
|
4c92e63b0b | ||
|
|
ac2aa967c4 | ||
|
|
d2e50a508c | ||
|
|
37975319f2 | ||
|
|
4aba570fa8 | ||
|
|
e180c19cca | ||
|
|
c595c03452 | ||
|
|
64c9a2f678 | ||
|
|
566e0fd3e5 | ||
|
|
7dfb72e381 | ||
|
|
649242f82b | ||
|
|
cf1ee3162f | ||
|
|
bf6485fab4 | ||
|
|
720ecea737 | ||
|
|
d5e86d9180 | ||
|
|
cab1272bb1 | ||
|
|
563a5af9e7 | ||
|
|
ec0800eb1a | ||
|
|
ea61420441 | ||
|
|
598ec07c91 | ||
|
|
a932413314 | ||
|
|
aff2482436 | ||
|
|
860ee20c71 | ||
|
|
74be2087b5 | ||
|
|
57f1822213 | ||
|
|
cdfdf324e8 | ||
|
|
f891c67eca | ||
|
|
5d0a50042f | ||
|
|
4ee49f3550 | ||
|
|
f6059ef389 | ||
|
|
ce2281d31b | ||
|
|
3d16767fb3 | ||
|
|
593f7989b8 | ||
|
|
16a3e21410 | ||
|
|
98204d78fb | ||
|
|
27bf244b3b | ||
|
|
9b8a03b53b | ||
|
|
e1f871fefe | ||
|
|
beaa8de648 | ||
|
|
7e629fd783 | ||
|
|
b623224d07 | ||
|
|
92a939c401 | ||
|
|
afa7228076 | ||
|
|
bbc43ca50d | ||
|
|
9964cc202d | ||
|
|
b05245eab0 | ||
|
|
e41e23481c | ||
|
|
30e5c197cb | ||
|
|
52b1ac5f54 | ||
|
|
a78339a040 | ||
|
|
2b0695bdde | ||
|
|
917d60a1cb | ||
|
|
edf4a1b652 | ||
|
|
05cd7e2d8a | ||
|
|
a9da8edbde | ||
|
|
d03d3518d7 | ||
|
|
cd95237ae4 | ||
|
|
1ba69b8abf | ||
|
|
95eac7f7f0 | ||
|
|
f84b9fd5ef | ||
|
|
e78f1cdc6a | ||
|
|
432f89cf33 | ||
|
|
f0561c0c3b | ||
|
|
64e338133c | ||
|
|
4966e4e1fb | ||
|
|
19e1cbd033 | ||
|
|
f721c778ad | ||
|
|
a2e0f80c01 | ||
|
|
334218a62c | ||
|
|
de768af099 | ||
|
|
d36ce782b7 | ||
|
|
fb307ae128 | ||
|
|
8d5f788f2b | ||
|
|
804e599598 | ||
|
|
cdf9b674dc | ||
|
|
d5aaee614f | ||
|
|
865ba8bb4f | ||
|
|
ebbb4a5d0b | ||
|
|
9040b534c8 | ||
|
|
0a0ae16bd6 | ||
|
|
c22b325c31 | ||
|
|
c0d82a412d | ||
|
|
ac057a2d40 | ||
|
|
3427f19a01 | ||
|
|
8effbaf101 | ||
|
|
53c4a8787f | ||
|
|
017a75aa44 | ||
|
|
56afb3fd64 | ||
|
|
a9c7669c16 | ||
|
|
aae792a9dd | ||
|
|
db53656a45 | ||
|
|
ff7a0e3170 | ||
|
|
c7700ac176 | ||
|
|
d011ddfc64 | ||
|
|
67cc70ad61 | ||
|
|
a384ae9140 | ||
|
|
a7627882a7 | ||
|
|
8eae7a95be | ||
|
|
dabf266048 | ||
|
|
462e764a3c | ||
|
|
0e8a37dca8 | ||
|
|
bffbe54120 | ||
|
|
b673560b92 | ||
|
|
9e125e2029 | ||
|
|
b88146c443 | ||
|
|
c40cb7fd59 | ||
|
|
9d5956cef8 | ||
|
|
1fff4620e6 | ||
|
|
c3820f55f4 | ||
|
|
60c5bdd62f | ||
|
|
5092e5f631 | ||
|
|
c0bd35594e | ||
|
|
bc9efa7ea8 | ||
|
|
f540d0b747 | ||
|
|
7bcaa513fa | ||
|
|
d33dfee8a3 | ||
|
|
b5216df4fe | ||
|
|
25a11bfafc | ||
|
|
8fcc864fb7 | ||
|
|
ed5ed0306e | ||
|
|
a418c43d32 | ||
|
|
5aa8c9c8df | ||
|
|
32972b45db | ||
|
|
af351b1723 | ||
|
|
af88266212 | ||
|
|
b14119b531 | ||
|
|
68c75f221b | ||
|
|
7b379e2a61 | ||
|
|
c373b734bc | ||
|
|
2ac8f8003f | ||
|
|
d6b3df8f6f | ||
|
|
deea07e905 | ||
|
|
0caa94bd1c | ||
|
|
a32dde5428 | ||
|
|
067b0d07c4 | ||
|
|
044f96bd93 | ||
|
|
ca96350707 | ||
|
|
be3af1e234 | ||
|
|
2e89d29c87 | ||
|
|
e4eb9f7c55 | ||
|
|
dd6547de06 | ||
|
|
84d09b8b8a | ||
|
|
2c462154f7 | ||
|
|
b810efdb3f | ||
|
|
ae04ccc445 | ||
|
|
f7ac1192ae | ||
|
|
e048588a88 | ||
|
|
2042353526 | ||
|
|
9486715929 | ||
|
|
64319c0d56 | ||
|
|
acd209a890 | ||
|
|
bd482eb8ef | ||
|
|
5b3cc560d5 | ||
|
|
d41d4deaac | ||
|
|
208ce4e774 | ||
|
|
414ee51975 | ||
|
|
d5a521eef2 | ||
|
|
1b401063e8 | ||
|
|
60d9d0584a | ||
|
|
ffba341258 | ||
|
|
f11131f8b5 | ||
|
|
2e6e414a9e | ||
|
|
c45d676477 | ||
|
|
b8d8dddd5a | ||
|
|
c45c22b1b2 | ||
|
|
3d57a9ccdc | ||
|
|
cb04c21141 | ||
|
|
f70272f638 | ||
|
|
b4b71ded47 | ||
|
|
24e2b72b71 | ||
|
|
529791ce62 | ||
|
|
b66945b9b8 | ||
|
|
f3c5d77ad5 | ||
|
|
e5e42bc483 | ||
|
|
bdfbfa391f | ||
|
|
72acd9b483 | ||
|
|
9f528d23d4 | ||
|
|
d937cc491d | ||
|
|
863f3aeb27 | ||
|
|
0fe078d25e | ||
|
|
d9420c7224 | ||
|
|
9ff6baaf52 | ||
|
|
574d00bb13 | ||
|
|
8d60e5c342 | ||
|
|
d9eb1a73af | ||
|
|
1a34ff8a67 | ||
|
|
14e7ba4818 | ||
|
|
52e9bcbfdb | ||
|
|
20ae3eae54 | ||
|
|
0fb145e667 | ||
|
|
bcac43c812 | ||
|
|
929d9e0b3f | ||
|
|
d5e560a987 | ||
|
|
e4383d6167 | ||
|
|
f32e176d6a | ||
|
|
3d5a4df9d0 | ||
|
|
e47bfd2ca3 | ||
|
|
f8f768873e | ||
|
|
d043e1a05a | ||
|
|
837c0ddacc | ||
|
|
7c340695d6 | ||
|
|
e87d4fbf69 | ||
|
|
39064197da | ||
|
|
c4496e6cf2 | ||
|
|
27d09d1783 | ||
|
|
a174ee419e | ||
|
|
79e6138ce2 | ||
|
|
5a64f69456 | ||
|
|
5c01dd97e8 | ||
|
|
ecf74d91e2 | ||
|
|
62892ed8d7 | ||
|
|
7b399cc5e5 | ||
|
|
fab5740778 | ||
|
|
30f2d756a7 | ||
|
|
0d745c64d8 | ||
|
|
56c51f0112 | ||
|
|
4adf85d7d4 | ||
|
|
7995ff1410 | ||
|
|
d2f234757b | ||
|
|
bf34437186 | ||
|
|
47f02eec96 | ||
|
|
06dd4d6e00 | ||
|
|
fbceda7b66 | ||
|
|
9d6ce3065d | ||
|
|
bb718acadf | ||
|
|
4cd00efe3b | ||
|
|
22b11e4b43 | ||
|
|
2a29c61041 | ||
|
|
34b041e9f0 | ||
|
|
917ed8cf84 | ||
|
|
85b0b8373b | ||
|
|
f04844435f | ||
|
|
421a3284bc | ||
|
|
d4883256f1 | ||
|
|
372074edba | ||
|
|
826f19e968 | ||
|
|
c06cfcbb5a | ||
|
|
ddf6192643 | ||
|
|
58189ed9a0 | ||
|
|
726c429772 | ||
|
|
a159c13333 | ||
|
|
5df3a4eb98 | ||
|
|
244ed5e5e3 | ||
|
|
249e9a10a1 | ||
|
|
d4dba373cb | ||
|
|
06f249a3b4 | ||
|
|
8809b3ba4d | ||
|
|
66e80f9dac | ||
|
|
b486d72b8e | ||
|
|
d9e26eba65 | ||
|
|
a7419d0aba | ||
|
|
d5e6e38c58 | ||
|
|
a2598fd134 | ||
|
|
58165c3951 | ||
|
|
dac72b078d | ||
|
|
b5c2756261 | ||
|
|
fa753239ad | ||
|
|
8af2ae973f | ||
|
|
23a8409e0c | ||
|
|
6e674b511a | ||
|
|
47f480c0dc | ||
|
|
bfc4fe1a9a | ||
|
|
98473e9d4f | ||
|
|
13d3271ec0 | ||
|
|
6727ff6dbe | ||
|
|
04954918a5 | ||
|
|
eb3a031964 | ||
|
|
243876e9b7 | ||
|
|
884fdc2fa8 | ||
|
|
410fe7293f | ||
|
|
d7869a4d1e | ||
|
|
aa71f88e1b | ||
|
|
cfb8d224da | ||
|
|
c14b498676 | ||
|
|
ac5aed7a45 | ||
|
|
abb86753c1 | ||
|
|
f6cfe80bf5 | ||
|
|
2b91ba2411 | ||
|
|
b4be132201 | ||
|
|
99fec40117 | ||
|
|
3df04c7e9a | ||
|
|
e7833b42cd | ||
|
|
c64b9c941a | ||
|
|
1d776c4cd0 | ||
|
|
d1ba5fec89 | ||
|
|
9260aa3445 | ||
|
|
6010d5f24c | ||
|
|
b08bfa203a | ||
|
|
a06681913d | ||
|
|
424fdf4b52 | ||
|
|
bcf42362e3 | ||
|
|
a4d17cb585 | ||
|
|
a9e106b17e | ||
|
|
044ad5100e | ||
|
|
3032e6fe59 | ||
|
|
4eba2ee92b | ||
|
|
b78ce1689a | ||
|
|
3aedc139ac | ||
|
|
f7416eb810 | ||
|
|
fe06d266e9 | ||
|
|
9a18911eba | ||
|
|
8c6e655380 | ||
|
|
3075d415e1 | ||
|
|
b7466f8b65 | ||
|
|
846b6bd14e | ||
|
|
d8000251ff | ||
|
|
b5159d8c8a | ||
|
|
23dcb2dc1b | ||
|
|
f31ddc4b1c | ||
|
|
5ff3947312 | ||
|
|
18dce66443 | ||
|
|
b84bb4164f | ||
|
|
1d09708eb7 | ||
|
|
8a348bea21 | ||
|
|
e64ff77852 | ||
|
|
68576a5d63 | ||
|
|
2e47558f4b | ||
|
|
0a2111f33d | ||
|
|
da9af7b547 | ||
|
|
295b47cbff | ||
|
|
ad2c541163 | ||
|
|
77223e4df4 | ||
|
|
ffe1685b54 | ||
|
|
51cc2bf429 | ||
|
|
2a43e634e8 | ||
|
|
805b698c2e | ||
|
|
cfcfc3c1fd | ||
|
|
09b0dd5583 | ||
|
|
455f842785 | ||
|
|
6b01b0b165 | ||
|
|
c5614d04d2 | ||
|
|
1459fded08 | ||
|
|
6b466a8469 | ||
|
|
21c56c3107 | ||
|
|
5ab6bc283c | ||
|
|
106ab7f2a8 | ||
|
|
0c595c4745 | ||
|
|
1abf1240b2 | ||
|
|
ad8e82ee1d | ||
|
|
0e1dfb4161 | ||
|
|
a183b2affb | ||
|
|
738aaee101 | ||
|
|
5867e6356d | ||
|
|
ea066f891f | ||
|
|
34b9fbab48 | ||
|
|
1d7a8d94e0 | ||
|
|
1caeac56f2 | ||
|
|
6b1606f4f4 | ||
|
|
f0684c1957 | ||
|
|
d12255025c | ||
|
|
864872d24e | ||
|
|
5be2666938 | ||
|
|
cfefe4f738 | ||
|
|
ddf05ca059 | ||
|
|
870e3daa95 | ||
|
|
4c1ad40f8e | ||
|
|
52857eb6b3 | ||
|
|
e6183074f3 | ||
|
|
6b5c2bea4d | ||
|
|
7c7618c083 | ||
|
|
5f0b52c017 | ||
|
|
c2606f9062 | ||
|
|
70da81d0e5 | ||
|
|
75199442c1 | ||
|
|
60cc82aff1 | ||
|
|
ebd2c8236d | ||
|
|
a2537ba4fd | ||
|
|
a3a041ef6f | ||
|
|
c0702aacac | ||
|
|
670d479e32 | ||
|
|
ae7de7d36b | ||
|
|
ef5decc98a | ||
|
|
4445460eca | ||
|
|
8288b1dcab | ||
|
|
16d1289a0a | ||
|
|
ba775a1c90 | ||
|
|
b0e58f9da7 | ||
|
|
531e784a92 | ||
|
|
5e8fe30035 | ||
|
|
f5033c5a0e | ||
|
|
26d7654851 | ||
|
|
790a6ec203 | ||
|
|
de9c5f10b3 | ||
|
|
a7fe0e3f87 | ||
|
|
218e247fd2 | ||
|
|
6b51530e21 | ||
|
|
9755564a05 | ||
|
|
052d0e059e | ||
|
|
fa4d3bba86 | ||
|
|
f8fc9f8c79 | ||
|
|
80f0594f4b | ||
|
|
97b24f48d5 | ||
|
|
b475a6b257 | ||
|
|
ff52a54fef | ||
|
|
c69634085d | ||
|
|
0a9af45194 | ||
|
|
d92ddc4dd4 | ||
|
|
32fa817eaa | ||
|
|
af10b3c5fa | ||
|
|
8b601a983c | ||
|
|
4b9812ce6a | ||
|
|
c9e18346ce | ||
|
|
462ba8f416 | ||
|
|
658157e9a1 | ||
|
|
4031a46572 | ||
|
|
821fe26b56 | ||
|
|
352776ba77 | ||
|
|
f560116fb2 | ||
|
|
e7a5268fdd | ||
|
|
aa71173dbb | ||
|
|
11fdcb18c6 | ||
|
|
62c34c4bc2 | ||
|
|
01f2333381 | ||
|
|
8d47213529 | ||
|
|
f40e2cf98a | ||
|
|
05e071bf2f | ||
|
|
e340fccafb | ||
|
|
4a2e6af9b5 | ||
|
|
acba135de1 | ||
|
|
2476511368 | ||
|
|
c39dfad7b6 | ||
|
|
9e29309ffd | ||
|
|
e0f0813b7c | ||
|
|
caf50ea01e | ||
|
|
d4756ba659 | ||
|
|
cc4d82f932 | ||
|
|
7286b4ad06 | ||
|
|
02194db0c6 | ||
|
|
b6bd145130 | ||
|
|
5dcbc9861b | ||
|
|
3ac4e122eb | ||
|
|
e336a8666a | ||
|
|
a36fdf6a7d | ||
|
|
bf2f03f911 | ||
|
|
5aaa47e25d | ||
|
|
f884886ef4 | ||
|
|
4da6ec787e | ||
|
|
2da00bb4ec | ||
|
|
e0fe0e1a3e | ||
|
|
e11a334c9b | ||
|
|
21e1b825fe | ||
|
|
1cf7c3430a | ||
|
|
ad2bc7f8ac | ||
|
|
e600070a61 | ||
|
|
854c1aa37d | ||
|
|
74ab057f56 | ||
|
|
ccc6d5975f | ||
|
|
b3399642c5 | ||
|
|
6e6389c930 | ||
|
|
973a390298 | ||
|
|
a77dfb69b0 | ||
|
|
9769318875 | ||
|
|
c7f36d1a5a | ||
|
|
cb46726fa4 | ||
|
|
7820e31a92 | ||
|
|
de0dae9d9b | ||
|
|
a09935d9b9 | ||
|
|
a62371940f | ||
|
|
02f7677d92 | ||
|
|
1ffe190557 | ||
|
|
d3eff9b1a3 | ||
|
|
66232792a2 | ||
|
|
dc2aaae414 | ||
|
|
c0bb2ec851 | ||
|
|
7566d90dfe | ||
|
|
b38f195a0d | ||
|
|
a6c5b7414d | ||
|
|
cdee5aab3a | ||
|
|
4240e2dd29 | ||
|
|
e298eee822 | ||
|
|
bc1cfd4373 | ||
|
|
2944a4fd43 | ||
|
|
a44ca29717 | ||
|
|
332e8e68ee | ||
|
|
577062b93a | ||
|
|
223c1a8089 | ||
|
|
0baccb9e82 | ||
|
|
2c81db5a1c | ||
|
|
43411d7a9e | ||
|
|
2dbf20a3e9 | ||
|
|
aaf9fc1562 | ||
|
|
d30f898274 | ||
|
|
4a72fa6268 | ||
|
|
0c5e66bccb | ||
|
|
ff791efe18 | ||
|
|
6083b1d618 | ||
|
|
69c3439c3a | ||
|
|
7ee170f0a7 | ||
|
|
36b221b170 | ||
|
|
d1fc98200c | ||
|
|
bb852ef6d2 | ||
|
|
a17b7b3d89 | ||
|
|
dc65a72d93 | ||
|
|
ea502d36a9 | ||
|
|
79a3c1618f | ||
|
|
0be3b4e7a6 | ||
|
|
5f8967918e | ||
|
|
6900b08134 | ||
|
|
dc641348f6 | ||
|
|
431e0105de | ||
|
|
cbe0d9d053 | ||
|
|
f9abcfd789 | ||
|
|
5a0a2b7e44 | ||
|
|
41345199d8 | ||
|
|
8362365eae | ||
|
|
14e1c16cf2 | ||
|
|
b32b7712e2 | ||
|
|
5cf55fcbab | ||
|
|
57c4fc6bf8 | ||
|
|
92fcf0854b | ||
|
|
f73ec60311 | ||
|
|
1c60b7f070 | ||
|
|
084dcd1a50 | ||
|
|
fd536a943a | ||
|
|
6f80fb72cb | ||
|
|
cb5e2ad9b2 | ||
|
|
62772e8871 | ||
|
|
4b0480c8b3 | ||
|
|
c8c591d73c | ||
|
|
2edd32fdea | ||
|
|
5889059ce4 | ||
|
|
7230497bf4 | ||
|
|
d98071a088 | ||
|
|
ac02c12e49 | ||
|
|
11d29e8d3e | ||
|
|
b44ecf9bf7 | ||
|
|
e60f148824 | ||
|
|
e9045a8838 | ||
|
|
55487ba0c6 | ||
|
|
305ea0a2d5 | ||
|
|
a5ca76befb | ||
|
|
e01510e2a6 | ||
|
|
2931c891a7 | ||
|
|
ad1b1193fa | ||
|
|
85f33fb73d | ||
|
|
f3c98a274b | ||
|
|
f6c7175828 | ||
|
|
d253ca192a | ||
|
|
e072b7dafa | ||
|
|
3ff52f1809 | ||
|
|
ad61b42494 | ||
|
|
c95761f4e6 | ||
|
|
1f15cba9a0 | ||
|
|
3344aaabb6 | ||
|
|
b8ef0c84e6 | ||
|
|
6b8b31ff64 | ||
|
|
823872d294 | ||
|
|
724ec12bf3 | ||
|
|
8aac402b24 | ||
|
|
eb12fd9461 | ||
|
|
ad622cea9e | ||
|
|
2575eaf1d6 | ||
|
|
fc5ed9f316 | ||
|
|
40a11b6942 | ||
|
|
84543a591a | ||
|
|
2cd3fe0dce | ||
|
|
5eb061466f | ||
|
|
52050d3dff | ||
|
|
904af20023 | ||
|
|
4934dbd0e6 | ||
|
|
d080bea20b | ||
|
|
607dfc8be7 | ||
|
|
3b5130b03d | ||
|
|
75f722a959 | ||
|
|
b946378b38 | ||
|
|
0cee57acca | ||
|
|
ab78e12089 | ||
|
|
7fe23a0ca6 | ||
|
|
d8584dc03a | ||
|
|
a724f35672 | ||
|
|
60c7663a80 | ||
|
|
8041808b53 | ||
|
|
146d870098 | ||
|
|
78d2f49e01 | ||
|
|
54c8bd29ee | ||
|
|
406c1952b8 | ||
|
|
0ebcee9a6b | ||
|
|
964fa132cb | ||
|
|
dedd5f571c | ||
|
|
90373c7165 | ||
|
|
d470120a60 | ||
|
|
0c925bd088 | ||
|
|
76d123fe19 | ||
|
|
20f0238aab | ||
|
|
6d5a7684b4 | ||
|
|
7831d44099 | ||
|
|
fbf844efd5 | ||
|
|
99a4bd82b5 | ||
|
|
58608f51da | ||
|
|
ff9fd0cdb2 | ||
|
|
aac849d4f4 | ||
|
|
688d07e9c3 | ||
|
|
f9b3cd1b68 | ||
|
|
b2c8718f35 | ||
|
|
46ba0a8781 | ||
|
|
bc18d4d1b9 | ||
|
|
a4b14fc992 | ||
|
|
be914438a5 | ||
|
|
ec488a4c43 | ||
|
|
f78b903a49 | ||
|
|
fd086b06a6 | ||
|
|
759ded3e3a | ||
|
|
05b002a8b7 | ||
|
|
f7016fd922 | ||
|
|
da5c003f97 | ||
|
|
c33741a5e9 | ||
|
|
872ff3f1d4 | ||
|
|
8ab3fda5a8 | ||
|
|
1821726d4f | ||
|
|
98aea05ad2 | ||
|
|
79ea94483e | ||
|
|
a0a30bfdcc | ||
|
|
caa5928ac4 | ||
|
|
9400832b2b | ||
|
|
a82b55005b | ||
|
|
a434f6240f | ||
|
|
f5e177db89 | ||
|
|
5febd66808 | ||
|
|
afac1fe590 | ||
|
|
4251515b4e | ||
|
|
1b2046da3f | ||
|
|
646900b00c | ||
|
|
142ab74784 | ||
|
|
ffddabde43 | ||
|
|
8c6d87f08a | ||
|
|
270dd955d0 | ||
|
|
4e2129d74f | ||
|
|
07cff1ed2c | ||
|
|
070379a900 | ||
|
|
bbdeb15501 | ||
|
|
28478cdc41 | ||
|
|
11ec62ca70 | ||
|
|
4499cda186 | ||
|
|
c05c5953a8 | ||
|
|
eee576355b | ||
|
|
a3ef869db6 | ||
|
|
a51998e4aa | ||
|
|
0b44edaca9 | ||
|
|
ab163a5f75 | ||
|
|
f17ca26b10 | ||
|
|
0ea010d7ee | ||
|
|
72a2c3decf | ||
|
|
ab7c2cf000 | ||
|
|
6914c1c85e | ||
|
|
ea542d42ca | ||
|
|
cba5bd588c | ||
|
|
00cb1c26a1 | ||
|
|
f4d4a32af2 | ||
|
|
1bf0df03b5 | ||
|
|
ae28ca0b8d | ||
|
|
51a6b9dc57 | ||
|
|
4c65a8091a | ||
|
|
27f400e13f | ||
|
|
7721648867 | ||
|
|
47cc951841 | ||
|
|
63b6026e6e | ||
|
|
84aa38586f | ||
|
|
a70d59d4a6 | ||
|
|
57e0a12ccd | ||
|
|
f5e1fa4bd2 | ||
|
|
a7ce1e5789 | ||
|
|
5f550126b3 | ||
|
|
572a2bbe53 | ||
|
|
537c04745d | ||
|
|
7f004e2f41 | ||
|
|
7c6415551d | ||
|
|
0d2d349ab3 | ||
|
|
de28bb1075 | ||
|
|
d409fb5f58 | ||
|
|
3248d728ac | ||
|
|
beebcae0a1 | ||
|
|
15757110cf | ||
|
|
fce126b206 | ||
|
|
5c5f61b2aa | ||
|
|
3f8fb18c89 | ||
|
|
f72c03a174 | ||
|
|
ee731c7810 | ||
|
|
bd5b938571 | ||
|
|
7eb707f811 | ||
|
|
0546351d3e | ||
|
|
1c05491f1c | ||
|
|
177b0fb5e8 | ||
|
|
67a0751cf3 | ||
|
|
665fcad655 | ||
|
|
d776a7cde7 | ||
|
|
e0fe158f0b | ||
|
|
5411fd3757 | ||
|
|
3328addb58 | ||
|
|
1446f19709 | ||
|
|
773932b1e7 | ||
|
|
faaf828dff | ||
|
|
ee50a2bcd5 | ||
|
|
31985d94fa | ||
|
|
9c5b1e7012 | ||
|
|
ad472d59e0 | ||
|
|
32df3b68c7 | ||
|
|
a189d293f8 | ||
|
|
570aee5fe6 | ||
|
|
88952cbb7a | ||
|
|
89415ac453 | ||
|
|
8bbed5aeea | ||
|
|
8340d775bd | ||
|
|
cff6a488f8 | ||
|
|
d6b980a2dd | ||
|
|
206bc4b36d | ||
|
|
45cebf09b0 | ||
|
|
bd43ca6275 | ||
|
|
9237976988 | ||
|
|
6ac06486e3 | ||
|
|
061d4c8ea0 | ||
|
|
aca8b83669 | ||
|
|
a8f09ad43f | ||
|
|
de611ab344 | ||
|
|
371fe7a700 | ||
|
|
c6d7328e15 | ||
|
|
a327d024e9 | ||
|
|
b8504ac7d0 | ||
|
|
bb33335dd4 | ||
|
|
5a02e599e1 | ||
|
|
d1572f47a0 | ||
|
|
ef51678c73 | ||
|
|
e64e7563f6 | ||
|
|
0731db8c22 | ||
|
|
8c3e390172 | ||
|
|
8278b39f85 | ||
|
|
1c3c40db69 | ||
|
|
7ec94eb83c | ||
|
|
79ab8b205f | ||
|
|
882f8bdd2c | ||
|
|
a366de26c4 | ||
|
|
cf07189bd2 | ||
|
|
b4e152f775 | ||
|
|
eaae79a581 | ||
|
|
e6913744ae | ||
|
|
6b544aa0b9 | ||
|
|
60c37fe492 | ||
|
|
82cc37bf51 | ||
|
|
ad67094e54 | ||
|
|
6d3e198c3c | ||
|
|
0f4809b9b8 | ||
|
|
5c7f0a533a | ||
|
|
095bae01b2 | ||
|
|
366d42d9c0 | ||
|
|
a2048fd0f4 | ||
|
|
ea069cc2d4 | ||
|
|
90c4df7919 | ||
|
|
ce15ca8929 | ||
|
|
841e53dbbe | ||
|
|
c987001a19 | ||
|
|
e9c9c5d8f1 | ||
|
|
c2c69ffb82 | ||
|
|
2d8eace34b | ||
|
|
eb06de0921 | ||
|
|
58d92970a9 | ||
|
|
db09e7386f | ||
|
|
b5599b2945 | ||
|
|
f70ff72a58 | ||
|
|
e9893f1518 | ||
|
|
29f0a9ab94 | ||
|
|
308f1340dd | ||
|
|
5d5fa88857 | ||
|
|
659d51a2da | ||
|
|
8246f946c2 | ||
|
|
62b29b3d76 | ||
|
|
8fa3b3f931 | ||
|
|
a83e4ed9a4 | ||
|
|
ab012fe1a2 | ||
|
|
c7382150b5 | ||
|
|
74981a65c6 | ||
|
|
9251a66a10 | ||
|
|
3b23fc5ad8 | ||
|
|
bddeebd4c9 | ||
|
|
d45e48eed7 | ||
|
|
cbc3474bbb | ||
|
|
383a79772c | ||
|
|
f8c7b28da7 | ||
|
|
74940ad3f2 | ||
|
|
17a8f1a0f1 | ||
|
|
f9f46bfcbe | ||
|
|
bd2014d13b | ||
|
|
cb660e8104 | ||
|
|
a4a67ef1ec | ||
|
|
09abc9951d | ||
|
|
19c09d6111 | ||
|
|
6248658c04 | ||
|
|
274142c4c2 | ||
|
|
ce794335e9 | ||
|
|
5985055aef | ||
|
|
ff8fc96ebb | ||
|
|
c70b0cb730 | ||
|
|
dba42567b1 | ||
|
|
71d96b671b | ||
|
|
a93db6d797 | ||
|
|
f2389771cf | ||
|
|
ed263aed9f | ||
|
|
d37b6716cd | ||
|
|
b035f3f884 | ||
|
|
1f9cd99bc2 | ||
|
|
ffee6f3288 | ||
|
|
460a825ef1 | ||
|
|
54c56f2d05 | ||
|
|
61a5741c05 | ||
|
|
0e235e5872 | ||
|
|
d0bece1679 | ||
|
|
1715dd4320 | ||
|
|
14513b7677 | ||
|
|
b88dd17fc1 | ||
|
|
3826b57424 | ||
|
|
62586719b3 | ||
|
|
e7d80bf7bf | ||
|
|
7a69b57823 | ||
|
|
2423f97c72 | ||
|
|
a4ef900916 | ||
|
|
965e952336 | ||
|
|
3cfba9e47b | ||
|
|
4b604bd79a | ||
|
|
74caebac32 | ||
|
|
fafb1d5fd7 | ||
|
|
4b2baeea65 | ||
|
|
93c27b134d | ||
|
|
853c97a910 | ||
|
|
97f080fa03 | ||
|
|
aeb68f99bd | ||
|
|
10e6b11ff6 | ||
|
|
c3037c5491 | ||
|
|
e4ae1e2b94 | ||
|
|
a4f421028c | ||
|
|
a324d3942e | ||
|
|
a3ced1b5a6 | ||
|
|
fb5c6dd644 | ||
|
|
d2933c2bfe | ||
|
|
3587bd4040 | ||
|
|
3aecceff27 | ||
|
|
f082452c9b | ||
|
|
30aa052a57 | ||
|
|
bdb9f29948 | ||
|
|
66cc1b4308 | ||
|
|
d52fb18457 | ||
|
|
4a2169bd5f | ||
|
|
2c9ee54a16 | ||
|
|
aef67ed7ec | ||
|
|
ddfd8c8525 | ||
|
|
2c1ab4879f | ||
|
|
229b4d621e | ||
|
|
0dee41c074 | ||
|
|
bf542233a9 | ||
|
|
38106074b4 | ||
|
|
1f4b3591ae | ||
|
|
7bf3d2c8bf | ||
|
|
da53bf511f | ||
|
|
7388fd1ec6 | ||
|
|
b803eeb528 | ||
|
|
14f79ee652 | ||
|
|
df89629e04 | ||
|
|
d427088ab5 | ||
|
|
32c541a9ed | ||
|
|
7e666dc3b1 | ||
|
|
5247c19498 | ||
|
|
9823edd3a2 | ||
|
|
88537991d6 | ||
|
|
8e910d8c59 | ||
|
|
a0b32b6027 | ||
|
|
bf7b2c339b | ||
|
|
a1dfe6d402 | ||
|
|
d2a3e8b9b1 | ||
|
|
ebb88bbe0b | ||
|
|
b690a9d839 | ||
|
|
9d9423808e | ||
|
|
3e96c0c468 | ||
|
|
6eb155ae69 | ||
|
|
b27c540379 | ||
|
|
8b1f428ead | ||
|
|
1d54ffcf89 | ||
|
|
d9eb5554b3 | ||
|
|
da94bdeb54 | ||
|
|
27e5e2745b | ||
|
|
1b26f9a4c6 | ||
|
|
df886259bd | ||
|
|
016ff0feae | ||
|
|
aa6cad5f1d | ||
|
|
e7388779a1 | ||
|
|
6c233e05a9 | ||
|
|
9f013f7644 | ||
|
|
253d8e5a5f | ||
|
|
7f5087c6db | ||
|
|
817071e448 | ||
|
|
f193e9764e | ||
|
|
5f9628e027 | ||
|
|
76d21743fd | ||
|
|
2d3c5b3b7c | ||
|
|
1d85979a74 | ||
|
|
2a85f28963 | ||
|
|
fe4e2f7921 | ||
|
|
9a9ec0c99b | ||
|
|
d5624ba671 | ||
|
|
c805238471 | ||
|
|
e576b989b8 | ||
|
|
f929bfb94c | ||
|
|
f4df80e093 | ||
|
|
390e4cc0bf | ||
|
|
11f9a897e8 | ||
|
|
0e793a660d | ||
|
|
7b2cab5767 | ||
|
|
c51b4290dc | ||
|
|
94a13d7d62 | ||
|
|
edf5fd28c9 | ||
|
|
b834131f50 | ||
|
|
5375d9bb27 | ||
|
|
535fff62f3 | ||
|
|
18b58424ec | ||
|
|
10858ea1dc | ||
|
|
6f8c7a66c8 | ||
|
|
a371390d6c | ||
|
|
a316766ad7 | ||
|
|
a9cc19f530 | ||
|
|
881a151d30 | ||
|
|
785c4caa67 | ||
|
|
4403bc67a1 | ||
|
|
b237113311 | ||
|
|
4cb50f1809 | ||
|
|
1885426421 | ||
|
|
89b52471fb | ||
|
|
3643ed1014 | ||
|
|
e39236186d | ||
|
|
521488f926 | ||
|
|
d61ea5a2de | ||
|
|
816210d744 | ||
|
|
f925869f61 | ||
|
|
f62b59a805 | ||
|
|
a4bdeba60d | ||
|
|
5c0cb7f912 | ||
|
|
2ffbf5435d | ||
|
|
71385d594d | ||
|
|
53c4912cbb | ||
|
|
1760179093 | ||
|
|
aded30b664 | ||
|
|
de54f8d0ef | ||
|
|
5b0b64c7e5 | ||
|
|
b654c852a5 | ||
|
|
c48b32c9e3 | ||
|
|
8f723697ef | ||
|
|
de22648b9f | ||
|
|
b9f56852dc | ||
|
|
108cc3486f | ||
|
|
ac69b8b191 | ||
|
|
8288145ee4 | ||
|
|
51f6095be7 | ||
|
|
a201e9faee | ||
|
|
fec6bafcda | ||
|
|
2639f950cc | ||
|
|
6663187eca | ||
|
|
13990f31a1 | ||
|
|
de39b737b6 | ||
|
|
a66ed7157e | ||
|
|
c9c49200e0 | ||
|
|
317d287458 | ||
|
|
a79f37b686 | ||
|
|
1c7404099d | ||
|
|
ed54bd5121 | ||
|
|
06c3deff11 | ||
|
|
47954aa284 | ||
|
|
f3c8625fe2 | ||
|
|
ebc4fdc4b2 | ||
|
|
1af3d40c1a | ||
|
|
31eb8548ef | ||
|
|
a45aa1e505 | ||
|
|
cb0d4a1e15 | ||
|
|
21e68b9cf1 | ||
|
|
a3654c8fe9 | ||
|
|
980b0188d2 | ||
|
|
daab648c78 | ||
|
|
e17b33e004 | ||
|
|
4e7c9dd2ae | ||
|
|
5487463385 | ||
|
|
68f41bbaa8 | ||
|
|
3bfa9767c0 | ||
|
|
8978b9d38b | ||
|
|
cc89d7b1a5 | ||
|
|
bb955806e0 | ||
|
|
0c39490bb1 | ||
|
|
826bf25abf | ||
|
|
89250a36b7 | ||
|
|
c2e599cd85 | ||
|
|
71d6cf1b1d | ||
|
|
86179beaa5 | ||
|
|
f53b177e1f | ||
|
|
58dfe2ca03 | ||
|
|
c4b960cc1a | ||
|
|
70035aa9a9 | ||
|
|
a82943a83d | ||
|
|
9a4c1fe834 | ||
|
|
b9ff716c18 | ||
|
|
8516d15a4e | ||
|
|
4198a533ad | ||
|
|
a67441689a | ||
|
|
5c11c22302 | ||
|
|
1a7ad195f0 | ||
|
|
cf2173644e | ||
|
|
1b99e44e99 | ||
|
|
b8b9c3a783 | ||
|
|
25de39d9c6 | ||
|
|
2455135eaa | ||
|
|
dffbdd140c | ||
|
|
69b6f6f5d2 | ||
|
|
6013d90426 | ||
|
|
9ded6f6a40 | ||
|
|
7c76458b18 | ||
|
|
eb9edf4908 | ||
|
|
55a6b330ec | ||
|
|
96d27d7087 | ||
|
|
9588a64487 | ||
|
|
18757d07c9 | ||
|
|
0f23e3d9ab | ||
|
|
765adabb32 | ||
|
|
37e19de7ab | ||
|
|
28f5c37211 | ||
|
|
38a704743c | ||
|
|
87efe45240 | ||
|
|
7236c4895b | ||
|
|
0cb00d5fd2 | ||
|
|
cdb9eecbaf | ||
|
|
ae8653beb0 | ||
|
|
787ad5ab38 | ||
|
|
81fc49d78c | ||
|
|
7d9d670f90 | ||
|
|
fd41645f95 | ||
|
|
a06af88b26 | ||
|
|
33f0457a23 | ||
|
|
cea6522122 | ||
|
|
ae00ba44db | ||
|
|
79fa3c7519 | ||
|
|
d2814650e6 | ||
|
|
17722f581b | ||
|
|
ad9eebd02d | ||
|
|
cefb8e4218 | ||
|
|
90aba77471 | ||
|
|
785d4b3de7 | ||
|
|
6bb82f8ee0 | ||
|
|
45dc0a43d3 | ||
|
|
1610f62a28 | ||
|
|
d454f09e13 | ||
|
|
00f0b569cc | ||
|
|
3acaa59885 | ||
|
|
2d5cdbe79c | ||
|
|
9ad3553d7f | ||
|
|
8f15341f1e | ||
|
|
31b0cff709 | ||
|
|
1dd2607dfd | ||
|
|
164e5481c5 | ||
|
|
a098825fcc | ||
|
|
0f5417ab84 | ||
|
|
268da31332 | ||
|
|
94f8e48647 | ||
|
|
819c02f1f5 | ||
|
|
449e16782e | ||
|
|
257809bb30 | ||
|
|
8a20134a5b | ||
|
|
27172b0898 | ||
|
|
5b33d086c6 | ||
|
|
c7ee0f2a93 | ||
|
|
8ea27bc341 | ||
|
|
c8ebad055c | ||
|
|
9de552cb42 | ||
|
|
501d3b6203 | ||
|
|
f668d89621 | ||
|
|
d60287621a | ||
|
|
197c018c1f | ||
|
|
45146edb31 | ||
|
|
973b3854b4 | ||
|
|
2467bd738a | ||
|
|
27baf383dd | ||
|
|
537b3b2b4a | ||
|
|
e0de3b97ab | ||
|
|
4a59360ad3 | ||
|
|
1a1bfd4048 | ||
|
|
10b738a296 | ||
|
|
3113350e51 | ||
|
|
3537088135 | ||
|
|
43f5b21852 | ||
|
|
e56d7547f7 | ||
|
|
ea68c92bbb | ||
|
|
b348455144 | ||
|
|
f2f6e95880 | ||
|
|
725a221315 | ||
|
|
a0a89b562c | ||
|
|
3e7f8bad56 | ||
|
|
d333aac84a | ||
|
|
3fefb34d44 | ||
|
|
870e73c03b | ||
|
|
ef20f694b2 | ||
|
|
57f7368a0e | ||
|
|
fa70033438 | ||
|
|
77be115f09 | ||
|
|
3f9ced5374 | ||
|
|
ba5eebf3a2 | ||
|
|
186ac74c1f | ||
|
|
223448af18 | ||
|
|
d34795fc08 | ||
|
|
40e8ad419b | ||
|
|
6b1ad634f1 | ||
|
|
8f64327d57 | ||
|
|
1d41b642ca | ||
|
|
cff039d123 | ||
|
|
0cfdb8c043 | ||
|
|
db20f9bb71 | ||
|
|
2020a31785 | ||
|
|
2c04a16eaa | ||
|
|
6325129761 | ||
|
|
9a18a98b58 | ||
|
|
7b9e01aa07 | ||
|
|
2bb19f85c6 | ||
|
|
17fe62cf91 | ||
|
|
e99861d4fe | ||
|
|
a205ee16b9 | ||
|
|
9835730278 | ||
|
|
8331b63baa | ||
|
|
2df4699312 | ||
|
|
2eae7503e1 | ||
|
|
dbae5b0564 | ||
|
|
30cfc9c172 | ||
|
|
420a34a546 | ||
|
|
918bb9a2f7 | ||
|
|
99acdcdef7 | ||
|
|
59fdfc3728 | ||
|
|
614c5e087e | ||
|
|
83719cab73 | ||
|
|
9e73e8b9e8 | ||
|
|
d4be356ffb | ||
|
|
47e0f92c0f | ||
|
|
6d033d4064 | ||
|
|
ab290ed968 | ||
|
|
879f839d75 | ||
|
|
15800c6108 | ||
|
|
787a556bd7 | ||
|
|
ea44b895e2 | ||
|
|
37f26c412f | ||
|
|
1da8027445 | ||
|
|
ce3e2e5eb8 | ||
|
|
b69f952e3e | ||
|
|
0784c6295d | ||
|
|
45c89bd6de | ||
|
|
8ac3bd1768 | ||
|
|
945d1569ee | ||
|
|
61526c027d | ||
|
|
4689e8953e | ||
|
|
4e701b1efd | ||
|
|
21c2de2d7e | ||
|
|
72a6cde828 | ||
|
|
0476937f55 | ||
|
|
fc187d6998 | ||
|
|
0dcacdf83d | ||
|
|
7a2a8a2ffd | ||
|
|
2ddc3658a0 | ||
|
|
6a5236b200 | ||
|
|
6c0a91a64f | ||
|
|
df6451076b | ||
|
|
19339c3de1 | ||
|
|
c5acffb034 | ||
|
|
110bb5e5a5 | ||
|
|
d7663159e9 | ||
|
|
2440ac43b1 | ||
|
|
41cb39eb5d | ||
|
|
809a0ab6bf | ||
|
|
51b63b2398 | ||
|
|
59b89b9971 | ||
|
|
ecd8f32cce | ||
|
|
909259da37 | ||
|
|
366ddb05ae | ||
|
|
d587480a3e | ||
|
|
765189d4f5 | ||
|
|
f6aa2498a3 | ||
|
|
f6641c0f41 | ||
|
|
f4df759ba6 | ||
|
|
3a628bc671 | ||
|
|
175571e740 | ||
|
|
8cb3ed5cc2 | ||
|
|
c05e47ebc0 | ||
|
|
b2ac11bc47 | ||
|
|
af83120832 | ||
|
|
1e03c97663 | ||
|
|
41e3ecc837 | ||
|
|
acb2488fc8 | ||
|
|
d6d8cca053 | ||
|
|
f601093ccc | ||
|
|
0f3d4d0b6e | ||
|
|
60777bc610 | ||
|
|
21a50e22d2 | ||
|
|
fc6e2d14a5 | ||
|
|
c439e82038 | ||
|
|
a97ff587d2 | ||
|
|
91144207e0 | ||
|
|
0720bc7408 | ||
|
|
ab62a9662c | ||
|
|
d6a8af03b4 | ||
|
|
65c7c01d90 | ||
|
|
e6e76852d5 | ||
|
|
930c4cb609 | ||
|
|
0c8447fd0e | ||
|
|
37c3283450 | ||
|
|
723b69cf8d | ||
|
|
85859b6723 | ||
|
|
c1a13fa553 | ||
|
|
4f0c9fdf2b | ||
|
|
4271602cfc | ||
|
|
4f14d7c0ca | ||
|
|
38554c5f3e | ||
|
|
138ad6e8b3 | ||
|
|
f76f70f0b6 | ||
|
|
7094680e23 | ||
|
|
59dc7c880e | ||
|
|
3fb9b41fe5 | ||
|
|
0ccf8cb23e | ||
|
|
837f769960 | ||
|
|
3367d4258d | ||
|
|
d608be6e7f | ||
|
|
de9c7f2ea4 | ||
|
|
1fbbbb735d | ||
|
|
9915a70d7f | ||
|
|
822298f69d | ||
|
|
ad2f25875e | ||
|
|
ad8e79c440 | ||
|
|
f2dcfc976d | ||
|
|
5ccfb1f4ba | ||
|
|
92614765ff | ||
|
|
4f066454d0 | ||
|
|
7ae5819c67 | ||
|
|
2b0f3edcef | ||
|
|
244687c9a7 | ||
|
|
d22c351221 | ||
|
|
006496f24e | ||
|
|
01d500db14 | ||
|
|
4ac3600f81 | ||
|
|
6aba223383 | ||
|
|
f1c19cda74 | ||
|
|
275e86a26c | ||
|
|
077d627953 | ||
|
|
ca0b268ae5 | ||
|
|
25be7c1ad5 | ||
|
|
888cd86afd | ||
|
|
157d916154 | ||
|
|
e40e9db39a | ||
|
|
36f1b4b222 | ||
|
|
257bf13fef | ||
|
|
957f5b212e | ||
|
|
72fdafc180 | ||
|
|
db83bfc53a | ||
|
|
744159a079 | ||
|
|
d6b30efe2c | ||
|
|
3f7aa38d77 | ||
|
|
a145c2a8fe | ||
|
|
c29cb503be | ||
|
|
8025ad0661 | ||
|
|
b4b59148dc | ||
|
|
23c9f1b444 | ||
|
|
b33f8b47ca | ||
|
|
c26e1929d6 | ||
|
|
e01d975b80 | ||
|
|
92528360f9 | ||
|
|
1d9c90089c | ||
|
|
e303417e04 | ||
|
|
c8d9f8e2e4 | ||
|
|
51f64797cd | ||
|
|
1ea4459d9f | ||
|
|
55371e5abf | ||
|
|
fb12a3033d | ||
|
|
a6ea15e63c | ||
|
|
5a991295e0 | ||
|
|
9b47f9f786 | ||
|
|
f65c2fcb1d | ||
|
|
156bb8238d | ||
|
|
db488bef51 | ||
|
|
d72d02b970 | ||
|
|
dd2725be68 | ||
|
|
8e2d342de6 | ||
|
|
91eeb2ab76 | ||
|
|
f2e0d161a1 | ||
|
|
2ebf4e767b | ||
|
|
f7fb10635f | ||
|
|
32e779eef3 | ||
|
|
482e50aae9 | ||
|
|
cd0a05f114 | ||
|
|
d4408e0f54 | ||
|
|
eee88a8012 | ||
|
|
0368e1769a | ||
|
|
2d4f8f1377 | ||
|
|
8ef91222ea | ||
|
|
808aa4467c | ||
|
|
b2ab401279 | ||
|
|
9bbd646f40 | ||
|
|
57ece83c30 | ||
|
|
c3c67d9608 | ||
|
|
f59fb94dae | ||
|
|
00199c41bb | ||
|
|
400ae664bb | ||
|
|
b39ca7ee31 | ||
|
|
4250501058 | ||
|
|
eaaf551497 | ||
|
|
f233a64eb5 | ||
|
|
2b81b6673f | ||
|
|
4c46f04d77 | ||
|
|
d467c8536b | ||
|
|
abc32edf28 | ||
|
|
047a1b5166 | ||
|
|
a06fa7374d | ||
|
|
fe01de5667 | ||
|
|
275b042998 | ||
|
|
4c4887c5fc | ||
|
|
0ebaba98f0 | ||
|
|
d3bfcd498b | ||
|
|
efad1e4790 | ||
|
|
9c9d3d7bd0 | ||
|
|
756f35f480 | ||
|
|
55503ce771 | ||
|
|
c57726a587 | ||
|
|
b12c28a984 | ||
|
|
b357eca307 | ||
|
|
acd4b9a8ac | ||
|
|
ded4b024f3 | ||
|
|
f21e6e03a3 | ||
|
|
6f982eb7e4 | ||
|
|
2cad98f01f | ||
|
|
eb26dc3213 | ||
|
|
405c4d51f0 | ||
|
|
3e30914e13 | ||
|
|
53aaf91ce4 | ||
|
|
b9b5d43dc6 | ||
|
|
38e48c0c40 | ||
|
|
84679f1a5b | ||
|
|
4c7351176c | ||
|
|
ba7a2fd135 | ||
|
|
3995f55cbc | ||
|
|
cbfc32b11f | ||
|
|
9b1dc1de7a | ||
|
|
db09d18e92 | ||
|
|
210b9ebf56 | ||
|
|
fa80ef90d2 | ||
|
|
6c492e51fa | ||
|
|
7bf00ef25c | ||
|
|
8fad3036bf | ||
|
|
c939f04b1a | ||
|
|
916c415b4b | ||
|
|
9afd7f6c87 | ||
|
|
648393cc7b | ||
|
|
6f48af2610 | ||
|
|
adca981eee | ||
|
|
38b1e46241 | ||
|
|
6b3666f826 | ||
|
|
02929b2cce | ||
|
|
d31235ca13 | ||
|
|
7d230acf40 | ||
|
|
13dc1c8795 | ||
|
|
997b46bfaa | ||
|
|
57bcb616bc | ||
|
|
3196dc2d61 | ||
|
|
ef3569e667 | ||
|
|
627911d4ff | ||
|
|
2266f7cb6a | ||
|
|
a0ebbaa840 | ||
|
|
36b321735e | ||
|
|
75cacc2855 | ||
|
|
83e71ab27c | ||
|
|
d35d854259 | ||
|
|
c58678d84d | ||
|
|
618981f1ae | ||
|
|
b2ae46b80f | ||
|
|
9ebc58b1a2 | ||
|
|
87f9d11d65 | ||
|
|
8cb3b4aef2 | ||
|
|
09547b4c8d | ||
|
|
d186daa131 | ||
|
|
6a8ca8296b | ||
|
|
7ae529c3b0 | ||
|
|
911f9eadd0 | ||
|
|
c9ee60e197 | ||
|
|
4e5789df89 | ||
|
|
a18a6f50ab | ||
|
|
276c02f341 | ||
|
|
6a9e0b1005 | ||
|
|
bbebf9ad3e | ||
|
|
11146b6bae | ||
|
|
499392c6f9 | ||
|
|
a287da9ccd | ||
|
|
c22e640df3 | ||
|
|
2862631f03 | ||
|
|
749bcc889b | ||
|
|
6a74c97a0a | ||
|
|
e0e8cd6ca3 | ||
|
|
e7659ecd9d | ||
|
|
7d0106b220 | ||
|
|
df631591f2 | ||
|
|
4977bb21ec | ||
|
|
aeceb200ec | ||
|
|
a15129a00c | ||
|
|
de2cfd2927 | ||
|
|
8bf9adbc08 | ||
|
|
582b721160 | ||
|
|
4dc06ee43f | ||
|
|
8081aec730 | ||
|
|
aae80681f2 | ||
|
|
b862a0cac6 | ||
|
|
7e618779bc | ||
|
|
71704a713b | ||
|
|
937d151187 | ||
|
|
4ac2f02775 | ||
|
|
f8a9c363ba | ||
|
|
6d7f43b901 | ||
|
|
95467a3f0b | ||
|
|
bd7094b9f5 | ||
|
|
ff0feaf34e | ||
|
|
dc75a10989 | ||
|
|
b292990075 | ||
|
|
486a66be54 | ||
|
|
dd4419fd5e | ||
|
|
303c6ecc1d | ||
|
|
85eb55de37 | ||
|
|
e040f8069b | ||
|
|
17b929124f | ||
|
|
79015bf8d9 | ||
|
|
1c91736a6d | ||
|
|
1b4fea1794 | ||
|
|
85a44b7349 | ||
|
|
5360180a2a | ||
|
|
2c5f5b0c67 | ||
|
|
9dce0e40b5 | ||
|
|
ff20b56074 | ||
|
|
3c953cb0ef | ||
|
|
9e795374bc | ||
|
|
3548c133e3 | ||
|
|
297d35364e | ||
|
|
b8e305f183 | ||
|
|
be51384549 | ||
|
|
f005434769 | ||
|
|
fabfc7d4d8 | ||
|
|
10a724cc62 | ||
|
|
ccc3eeab10 | ||
|
|
b0166dbe27 | ||
|
|
65e9f6651c | ||
|
|
934f724130 | ||
|
|
57b3912227 | ||
|
|
692f922fa4 | ||
|
|
33d3bc276e | ||
|
|
f0137be719 | ||
|
|
c76d763639 | ||
|
|
0fed5c1193 | ||
|
|
a8b82d2b67 | ||
|
|
0b22e8b544 | ||
|
|
085bd1aa93 | ||
|
|
f1e7099541 | ||
|
|
31d143de11 | ||
|
|
f3522a282c | ||
|
|
24f56df8c3 | ||
|
|
14cd71ed0a | ||
|
|
b00f94df64 | ||
|
|
49af07f444 | ||
|
|
d1c55cb901 | ||
|
|
855e850ef3 | ||
|
|
c720e0dd04 | ||
|
|
87da155477 | ||
|
|
505d4cce78 | ||
|
|
c431da9571 | ||
|
|
75259c1ea1 | ||
|
|
b29087b680 | ||
|
|
af12cf1bf6 | ||
|
|
abc61f680a | ||
|
|
1119790b02 | ||
|
|
56cff485d0 | ||
|
|
3a85f218ed | ||
|
|
c7a8885d9d | ||
|
|
220db55e71 | ||
|
|
792b321a81 | ||
|
|
2ad7305349 | ||
|
|
198fbb9b3d | ||
|
|
b4064fa092 | ||
|
|
ee3b66bdcd | ||
|
|
a24c20a731 | ||
|
|
135b8bd4f5 | ||
|
|
cbc8ebd8f5 | ||
|
|
58d9d35515 | ||
|
|
736a064bac | ||
|
|
163a76eb6e | ||
|
|
3258a91d5d | ||
|
|
623ac7ea6d | ||
|
|
0358859467 | ||
|
|
838812640e | ||
|
|
bfa652f2d0 | ||
|
|
d1c08a810b | ||
|
|
c457e2b67a | ||
|
|
c4c20f6ed5 | ||
|
|
f23cf98317 | ||
|
|
a6827493f0 | ||
|
|
9565fe9b1b | ||
|
|
8de24bc16e | ||
|
|
3ecc1e0228 | ||
|
|
1abf00e443 | ||
|
|
6c515ef47f | ||
|
|
0b44791eae | ||
|
|
0cfc82d731 | ||
|
|
b78846078c | ||
|
|
8537abfff8 | ||
|
|
4b77c9df9d | ||
|
|
b979a8a707 | ||
|
|
9231c197a5 | ||
|
|
8ac3a223a8 | ||
|
|
5a6f20d575 | ||
|
|
c5568f756f | ||
|
|
22f5af9987 | ||
|
|
e352ab2bdd | ||
|
|
bbf513a2cd | ||
|
|
9bcf837f17 | ||
|
|
a212a63e6a | ||
|
|
e2cae42115 | ||
|
|
50fa0d1512 | ||
|
|
bb1d1dc263 | ||
|
|
1ca6dbcdc8 | ||
|
|
349c3cf7b8 | ||
|
|
6c9a9d344a | ||
|
|
f8e5341ac0 | ||
|
|
12c96b93d9 | ||
|
|
bcc95e520b | ||
|
|
69b43a955f | ||
|
|
3dff21e0be | ||
|
|
d5ee465bf9 | ||
|
|
65b7a783fe | ||
|
|
1bc94b92ac | ||
|
|
5088ab5061 | ||
|
|
d70fa2847b | ||
|
|
8bf3f5ea78 | ||
|
|
a9f7bcb12f | ||
|
|
bd1bbfee4b | ||
|
|
226afd4550 | ||
|
|
ce9737c6a0 | ||
|
|
23f6914b9b | ||
|
|
2a3cc43b62 | ||
|
|
8266815cda | ||
|
|
8b4ea01810 | ||
|
|
83187b30c0 | ||
|
|
3c09b57059 | ||
|
|
a147d2a200 | ||
|
|
28a59ba344 | ||
|
|
94cc0b7a12 | ||
|
|
e36b1a7016 | ||
|
|
bf46b894e9 | ||
|
|
f0ca828544 | ||
|
|
36521e4275 | ||
|
|
a93a09e0f7 | ||
|
|
a54773fbff | ||
|
|
b8bb45b106 | ||
|
|
ecade13455 | ||
|
|
49678e4b48 | ||
|
|
ea150dc336 | ||
|
|
5de01c1444 | ||
|
|
f86e2edc54 | ||
|
|
bf01e41fd9 | ||
|
|
edcfd7761b | ||
|
|
b8daf944f1 | ||
|
|
315436e43b | ||
|
|
2c2af1d117 | ||
|
|
03ac2d0f17 | ||
|
|
8299614e60 | ||
|
|
7a62202392 | ||
|
|
eb92dd59f9 | ||
|
|
d9aa2b155a | ||
|
|
e5bdc1438a | ||
|
|
e3daef19e7 | ||
|
|
0e0ec4691a | ||
|
|
7ccec5cd95 | ||
|
|
7613d9dc33 | ||
|
|
77ad600a33 | ||
|
|
abafa68647 | ||
|
|
d91828dd90 | ||
|
|
19f2a74ba8 | ||
|
|
58a929edd5 | ||
|
|
bed47dffb9 | ||
|
|
136995d2a1 | ||
|
|
c1559a7c8e | ||
|
|
993ef87dca | ||
|
|
b62eb61400 | ||
|
|
0a20210a59 | ||
|
|
f6305858a5 | ||
|
|
db7af52fcc | ||
|
|
09a5f8da1d | ||
|
|
c104febf63 | ||
|
|
0e68e8b40a | ||
|
|
9a3ecc1ac8 | ||
|
|
ec82534a1e | ||
|
|
9bcc8041e9 | ||
|
|
a944542858 | ||
|
|
a5e6a0dc0c | ||
|
|
a575fbca94 | ||
|
|
fc4e11d127 | ||
|
|
9988a506cd | ||
|
|
12836f9db9 | ||
|
|
2627e221f2 | ||
|
|
5e2b3b34e5 | ||
|
|
37e2f73909 | ||
|
|
759584f8c5 | ||
|
|
0babdffe3e | ||
|
|
cd9e6609ad | ||
|
|
9982445dad | ||
|
|
13f647feaa | ||
|
|
7b00f35a0d | ||
|
|
f6b3724268 | ||
|
|
212521c92b | ||
|
|
69d3853111 | ||
|
|
d242e4b95b | ||
|
|
2266001d19 | ||
|
|
2f141aa483 | ||
|
|
dd02a9ac9d | ||
|
|
b203139356 | ||
|
|
c479fcf251 | ||
|
|
d7c3e54eaa | ||
|
|
d5fe50e471 | ||
|
|
205535c8e9 | ||
|
|
e9aedc701c | ||
|
|
cf464d252d | ||
|
|
5e09ac696c | ||
|
|
ba9357da96 | ||
|
|
c6fb879cea | ||
|
|
e2cb7006c4 | ||
|
|
3737e0b087 | ||
|
|
a1158cc946 | ||
|
|
404f8a790c | ||
|
|
35a008af18 | ||
|
|
79bf590576 | ||
|
|
61e39bccdf | ||
|
|
6b7dfee88b | ||
|
|
21412a8c55 | ||
|
|
239e40c8d5 | ||
|
|
1ce2c7f3e8 | ||
|
|
de750a67ec | ||
|
|
8e6ea4d117 | ||
|
|
ef188564f3 | ||
|
|
413271eaa6 | ||
|
|
eb1ce3dd6b | ||
|
|
18e4f42c3c | ||
|
|
e0e92921b5 | ||
|
|
94e22ba0fd | ||
|
|
67eefd0ba1 | ||
|
|
bf031af7b1 | ||
|
|
617611ee22 | ||
|
|
d43b884c2a | ||
|
|
80f5ee1eb2 | ||
|
|
ee30497237 | ||
|
|
be964c78ec | ||
|
|
2543162dec | ||
|
|
3136eb8e4b | ||
|
|
7b6523e54d | ||
|
|
30c051d485 | ||
|
|
f191d372f0 | ||
|
|
cb69cb2d64 | ||
|
|
5d9c67e97e | ||
|
|
0ba37592f7 | ||
|
|
e0e8667a0b | ||
|
|
2157d9e17e | ||
|
|
62e7fa1f63 | ||
|
|
0ac7366cdc | ||
|
|
c768d97637 | ||
|
|
9bd8e62702 | ||
|
|
9a3acdcff8 | ||
|
|
93c1ee225e | ||
|
|
1e32175cdc | ||
|
|
00d9f037b5 | ||
|
|
44a2eca449 | ||
|
|
20df6e9c00 | ||
|
|
7ba3e599d2 | ||
|
|
4247a6b807 | ||
|
|
775dc47abe | ||
|
|
da9269ca97 | ||
|
|
d2e3744ca3 | ||
|
|
3914cf07e7 | ||
|
|
1e7418095f | ||
|
|
efe5db38ee | ||
|
|
523efbfea5 | ||
|
|
b96ecd072a | ||
|
|
28ffe7e3db | ||
|
|
721294948c | ||
|
|
b287aaccec | ||
|
|
bbc6efd773 | ||
|
|
dc9c5a4bc7 | ||
|
|
e90c532c3a | ||
|
|
397e2a8522 | ||
|
|
8f547e6340 | ||
|
|
defd5520ea | ||
|
|
b6b608219a | ||
|
|
22a1bc337f | ||
|
|
caa179a1d3 | ||
|
|
e8e47aee21 | ||
|
|
83f1aeec1d | ||
|
|
6d9dd3109e | ||
|
|
77fde04ef7 | ||
|
|
9d139fa306 | ||
|
|
6d66e3f680 | ||
|
|
e8d98e3d89 | ||
|
|
a1d20085e6 | ||
|
|
6da7e6158f | ||
|
|
c91045a9d0 | ||
|
|
44cdb3dcea | ||
|
|
358fd28c28 | ||
|
|
e912928cce | ||
|
|
cac0d3c33e | ||
|
|
18f98f4fe1 | ||
|
|
4166f73d9d | ||
|
|
bbd9fe9777 | ||
|
|
b7e8517b31 | ||
|
|
da7c8621f7 | ||
|
|
8cc37f3115 | ||
|
|
c6e2970b65 | ||
|
|
b006b9ac0c | ||
|
|
e1455cecd8 | ||
|
|
b247ef85bf | ||
|
|
fcdf965037 | ||
|
|
640ee80010 | ||
|
|
95283b4dd3 | ||
|
|
2a0d7533d7 | ||
|
|
57b28576f0 | ||
|
|
aead48726e | ||
|
|
cd17ce9250 | ||
|
|
9d7357058a | ||
|
|
9889aa10bd | ||
|
|
d619fa1767 | ||
|
|
7161d7ad96 | ||
|
|
12de1d175c | ||
|
|
f27a956c71 | ||
|
|
d119c7d629 | ||
|
|
0a9031fd42 | ||
|
|
438463b1c4 | ||
|
|
5dd9acbe44 | ||
|
|
05b8b2a30c | ||
|
|
6c167038af | ||
|
|
dfc123819e | ||
|
|
be6a88cb77 | ||
|
|
2134a76517 | ||
|
|
9f8947f1dd | ||
|
|
85004f8510 | ||
|
|
f40e22dda6 | ||
|
|
4c99e9dc73 | ||
|
|
53efb2bad5 | ||
|
|
ed63fbaf9a | ||
|
|
cd7fd100a7 | ||
|
|
d80f4c7d3b | ||
|
|
8f9cbe1c49 | ||
|
|
f84832e0c2 | ||
|
|
0975c3c399 | ||
|
|
1f722cde22 | ||
|
|
4aecc9f090 | ||
|
|
c9a594100b | ||
|
|
7ca497f0d6 | ||
|
|
cf8d15e8d5 | ||
|
|
bc57fa0619 | ||
|
|
5d72003ebb | ||
|
|
08a693a0a0 | ||
|
|
59b2e1ab82 | ||
|
|
4ef297bf38 | ||
|
|
8e6f6d64a4 | ||
|
|
5f8d20b5b2 | ||
|
|
c285441233 | ||
|
|
316cb00ada | ||
|
|
0185f84cc8 | ||
|
|
4b0d3c3688 | ||
|
|
91cfa90503 | ||
|
|
cc08451eb8 | ||
|
|
f04d52c044 | ||
|
|
fe19cc7568 | ||
|
|
b2f5ca356a | ||
|
|
78da4ca024 | ||
|
|
3ece713a05 | ||
|
|
bf26f1129e | ||
|
|
7ee5cc80a2 | ||
|
|
0ccd8bdfa8 | ||
|
|
0a939feaa3 | ||
|
|
1e1d457548 | ||
|
|
5541a1f80e | ||
|
|
0e0220bdbf | ||
|
|
9d20561af4 | ||
|
|
f8145480fc | ||
|
|
605ab9e46c | ||
|
|
17a26da1e6 | ||
|
|
636a0ba37f | ||
|
|
29720b7360 | ||
|
|
d0d02be711 | ||
|
|
88cb81d3d6 | ||
|
|
ef27942b8a | ||
|
|
63aab5cdd6 | ||
|
|
0e136b42a2 | ||
|
|
6df0215246 | ||
|
|
63ba607738 | ||
|
|
30f7118c7a | ||
|
|
9d5a0fdd8a | ||
|
|
0b1f938389 | ||
|
|
d3157b46ee | ||
|
|
8b3be4224d | ||
|
|
1d5c07dedb | ||
|
|
f148f1efa2 | ||
|
|
abfcd9d3b6 | ||
|
|
6cf1ada36e | ||
|
|
33324ee23d | ||
|
|
2c2efe2e1e | ||
|
|
ec29bcf013 | ||
|
|
c9f18aae0f | ||
|
|
df03c89a48 | ||
|
|
eb8584613b | ||
|
|
9000f4ad05 | ||
|
|
0b1259fc4a | ||
|
|
eb0e51d44d | ||
|
|
f633d1ee92 | ||
|
|
f1e4d5ed6c | ||
|
|
b5498a373a | ||
|
|
b73607da80 | ||
|
|
106604682a | ||
|
|
cd7ac20d80 | ||
|
|
be3ebea45b | ||
|
|
5a6219c726 | ||
|
|
4124e804a0 | ||
|
|
8d1a34bbb9 | ||
|
|
abead647e2 | ||
|
|
07ed728605 | ||
|
|
d796fcc0e7 | ||
|
|
7b7ac7a495 | ||
|
|
c8145ce581 | ||
|
|
da7f8ad936 | ||
|
|
41df910771 | ||
|
|
01704a4c1b | ||
|
|
8ab9eb9857 | ||
|
|
e1439c4a5b | ||
|
|
e7f1d0deea | ||
|
|
0998b01321 | ||
|
|
743071d9bb | ||
|
|
f54905e685 | ||
|
|
0afad94378 | ||
|
|
e350511102 | ||
|
|
fd443941a2 | ||
|
|
b146aaaeb7 | ||
|
|
dd4b03e812 | ||
|
|
bf69b97639 | ||
|
|
6d59b8d85b | ||
|
|
e3dc9f3c31 | ||
|
|
42a42a7962 | ||
|
|
c05e03fc09 | ||
|
|
7016ccef10 | ||
|
|
6f636093b6 | ||
|
|
3e698074e7 | ||
|
|
dc9194ca00 | ||
|
|
6efa882ca3 | ||
|
|
fcd5fcca83 | ||
|
|
95212af935 | ||
|
|
da2113bde9 | ||
|
|
fc3f14c0ee | ||
|
|
296e2ef90f | ||
|
|
dcb8939c7f | ||
|
|
31a6aabfe5 | ||
|
|
2e9997110a | ||
|
|
e1304dc0c3 | ||
|
|
5aa82629dd | ||
|
|
dcdec98c8e | ||
|
|
3d76f09c3a | ||
|
|
b3f4e90862 | ||
|
|
4902ddaf87 | ||
|
|
a83318cf4b | ||
|
|
12faecdf89 | ||
|
|
c92bc84316 | ||
|
|
48c2168dff | ||
|
|
16c722d1d8 | ||
|
|
5cffcd6336 | ||
|
|
0bf816f2e8 | ||
|
|
6104b91d3f | ||
|
|
33c8cb7b3b | ||
|
|
4f286c9073 | ||
|
|
fd1e40d22e | ||
|
|
e2b8f40275 | ||
|
|
78409dfec1 | ||
|
|
98345c0f65 | ||
|
|
95c6bd1c8a | ||
|
|
8c77f2dc03 | ||
|
|
11e95d2a61 | ||
|
|
abaefe22bc | ||
|
|
bda06df668 | ||
|
|
4a505c19df | ||
|
|
d417ccaf49 | ||
|
|
b4aa1900e2 | ||
|
|
713902dc47 | ||
|
|
627a9e2ce1 | ||
|
|
2ae7a70be9 | ||
|
|
e58703877b | ||
|
|
9c4be5d098 | ||
|
|
d1801b1f2e | ||
|
|
4b5ec242e7 | ||
|
|
d5b48a0aa3 | ||
|
|
6372cb7b41 | ||
|
|
931d3390f0 | ||
|
|
ff388fe3e6 | ||
|
|
ef1c1a12d2 | ||
|
|
24b1a625b3 | ||
|
|
6cf258a809 | ||
|
|
c66fda7c71 | ||
|
|
ac850e559f | ||
|
|
7df36fe9f5 | ||
|
|
161724fb17 | ||
|
|
cf05e9cf78 | ||
|
|
44f911a0a8 | ||
|
|
32527b26d5 | ||
|
|
e008faf729 | ||
|
|
46d235bca0 | ||
|
|
a91b780936 | ||
|
|
aa4c6874f1 | ||
|
|
6d7a54915e | ||
|
|
f30b1c2358 | ||
|
|
42968cb945 | ||
|
|
87034e26ae | ||
|
|
becd03a4aa | ||
|
|
a1aa325ce3 | ||
|
|
34cba83ac4 | ||
|
|
fb11264f42 | ||
|
|
bad31dfff1 | ||
|
|
dd3844d1d3 | ||
|
|
bc22076ad8 | ||
|
|
754e646b0c | ||
|
|
9feafb6dbd | ||
|
|
c7fcfc863d | ||
|
|
d565802ea1 | ||
|
|
ea1d459423 | ||
|
|
377d11d13b | ||
|
|
d65da600e5 | ||
|
|
82189e1bc5 | ||
|
|
7f8bfb6e4a | ||
|
|
7f70cadacb | ||
|
|
98f2e2c729 | ||
|
|
395fdc4960 | ||
|
|
094b049c94 | ||
|
|
5d77730c78 | ||
|
|
a743d5dc71 | ||
|
|
c23135c9e8 | ||
|
|
0722beeb0b | ||
|
|
8b89447549 | ||
|
|
8047d08b3b | ||
|
|
30792a1e1a | ||
|
|
91db2207b3 | ||
|
|
59a86dabee | ||
|
|
d87d66ab88 | ||
|
|
032d849f17 | ||
|
|
c451f54925 | ||
|
|
6a857e01f6 | ||
|
|
2da780e4dc | ||
|
|
71edaba9df | ||
|
|
37134c5987 | ||
|
|
0c2a459c30 | ||
|
|
e0fc7f69dd | ||
|
|
bbf1639c63 | ||
|
|
cb12b4436f | ||
|
|
0277a37fca | ||
|
|
ac3577bc56 | ||
|
|
0811a23cd4 | ||
|
|
05c6d57f29 | ||
|
|
58c62f0a34 | ||
|
|
2174225259 | ||
|
|
6a0f1dad7f | ||
|
|
40cadab8a6 | ||
|
|
6157f57872 | ||
|
|
c4bb07184d | ||
|
|
af5d6ca27d | ||
|
|
78f2ec8f32 | ||
|
|
a113356695 | ||
|
|
43753c8e9a | ||
|
|
fc8c765215 | ||
|
|
86a1859d02 | ||
|
|
360986f38d | ||
|
|
1be0d26c1f | ||
|
|
c167a1f4f4 | ||
|
|
5eb0ca9b9d | ||
|
|
6e26ed2bb7 | ||
|
|
058d9c3525 | ||
|
|
b247fbb2ef | ||
|
|
bc6f122364 | ||
|
|
815d77856d | ||
|
|
05eaef84bb | ||
|
|
770c461a8f | ||
|
|
16b6ffd915 | ||
|
|
9701b573e0 | ||
|
|
83cd14104d | ||
|
|
e2988acc2f | ||
|
|
cea4669b76 | ||
|
|
17b4d4c7b2 | ||
|
|
e95f0fcceb | ||
|
|
6d5d6f0f24 | ||
|
|
7ce8faf176 | ||
|
|
f31e3313b0 | ||
|
|
f6ac98a37d | ||
|
|
f8e7e301cd | ||
|
|
35bafb3235 | ||
|
|
ae5d2ecf48 | ||
|
|
1907d2a90a | ||
|
|
4448a54cc1 | ||
|
|
bfc0d606dc | ||
|
|
3306228840 | ||
|
|
d7e00ae691 | ||
|
|
0e2e2db3fa | ||
|
|
bf90d34c2f | ||
|
|
383af7bf76 | ||
|
|
ac910ed200 | ||
|
|
7709d9df20 | ||
|
|
e61415223b | ||
|
|
a30945312a | ||
|
|
bf682302ee | ||
|
|
72191f5b13 | ||
|
|
e324e59930 | ||
|
|
727caccfc9 | ||
|
|
85160b0487 | ||
|
|
8996c1da29 | ||
|
|
437dcbdd68 | ||
|
|
3e84c77bbb | ||
|
|
2c9af712a2 | ||
|
|
c1f3d968bf | ||
|
|
79118f51c2 | ||
|
|
285314da1c | ||
|
|
daad5824bf | ||
|
|
d135677c25 | ||
|
|
cade0f65e2 | ||
|
|
106169ed7f | ||
|
|
a8879057c0 | ||
|
|
f6404f93ca | ||
|
|
81325df368 | ||
|
|
965bfc49dd | ||
|
|
425ea4e5b6 | ||
|
|
b8ef3149ef | ||
|
|
c07af5a1a3 | ||
|
|
c3c957bb80 | ||
|
|
732c506e27 | ||
|
|
0189a8b0f6 | ||
|
|
3f44b690c2 | ||
|
|
e7572066a4 | ||
|
|
41dff175b3 | ||
|
|
d339403e89 | ||
|
|
e0cf55f5e9 | ||
|
|
411e332f1b | ||
|
|
97eadb867c | ||
|
|
e428628fcc | ||
|
|
1789437cc5 | ||
|
|
ac80c04bd3 | ||
|
|
fa9b767bf2 | ||
|
|
abeaea4f79 | ||
|
|
b65f2eb55f | ||
|
|
7d620ffd5e | ||
|
|
6f6ba2f025 | ||
|
|
33ba7e659b | ||
|
|
750ec55646 | ||
|
|
86d3fff666 | ||
|
|
e91531fc23 | ||
|
|
2524f16525 | ||
|
|
cefec44070 | ||
|
|
20376ca951 | ||
|
|
475b8d731e | ||
|
|
963b6f628a | ||
|
|
63ea6f1ecf | ||
|
|
947c9f70fb | ||
|
|
5e52d4d6b3 | ||
|
|
939dcb4c0a | ||
|
|
223ab5a38f | ||
|
|
db7a37a111 | ||
|
|
fe0d932f50 | ||
|
|
69fb0a4a28 | ||
|
|
04a0ae3aa9 | ||
|
|
e5d6047fb4 | ||
|
|
9e782d4c1e | ||
|
|
98a4b3e78b | ||
|
|
2b4d1cf1db | ||
|
|
fe76dfe1f8 | ||
|
|
c3774bef7e | ||
|
|
695a7400a9 | ||
|
|
e6a8800f66 | ||
|
|
cee8731393 | ||
|
|
4ae94dc027 | ||
|
|
3a69a6a452 | ||
|
|
f8f21ef7c0 | ||
|
|
0587eb4956 | ||
|
|
433374abea | ||
|
|
23ed3a520b | ||
|
|
5646442931 | ||
|
|
1a6298b6ea | ||
|
|
bf9b572bc3 | ||
|
|
cf72e53a10 | ||
|
|
98bd79f548 | ||
|
|
84a866028a | ||
|
|
10bd03611c | ||
|
|
7c27d4b202 | ||
|
|
8165d0b469 | ||
|
|
e796937d02 | ||
|
|
49c952a631 | ||
|
|
5f9d236d22 | ||
|
|
59f5a82261 | ||
|
|
f22a1adb8b | ||
|
|
a8e8c37fdd | ||
|
|
37486a9cc6 | ||
|
|
efebbffe96 | ||
|
|
5e035a4209 | ||
|
|
12fa517297 | ||
|
|
36ae0e5476 | ||
|
|
74f66d3119 | ||
|
|
adfaee7ab5 | ||
|
|
d37490adc3 | ||
|
|
087bb60b31 | ||
|
|
5019547d33 | ||
|
|
58f012f3de | ||
|
|
b938c9b7f6 | ||
|
|
2b1facc7a6 | ||
|
|
1d5ea80a2b | ||
|
|
0415cc209d | ||
|
|
545e5cbcd6 | ||
|
|
1fab02c25a | ||
|
|
258736f505 | ||
|
|
0bc4da38fc | ||
|
|
037f200527 | ||
|
|
b541792465 | ||
|
|
eb9b256ee8 | ||
|
|
5d8b32a249 | ||
|
|
c960b364c9 | ||
|
|
b817036343 | ||
|
|
46036e6ce6 | ||
|
|
1ffda0dd34 | ||
|
|
da01b460fe | ||
|
|
90a1508b87 | ||
|
|
b07016113c | ||
|
|
d8317fcf81 | ||
|
|
a6bc642721 | ||
|
|
b730f243dc | ||
|
|
71a57275ab | ||
|
|
41bf8d925f | ||
|
|
6d172498d1 | ||
|
|
cad58658c2 | ||
|
|
a58b990855 | ||
|
|
b6b1903a37 | ||
|
|
ed5596a8f4 | ||
|
|
49d0acd188 | ||
|
|
58a74fe1fb | ||
|
|
a1ab4aec3d | ||
|
|
f77f7e1437 | ||
|
|
adda049265 | ||
|
|
9b2a9260ef | ||
|
|
c8cc31af88 | ||
|
|
d333de274f | ||
|
|
9e220d5d30 | ||
|
|
2cf0cb471f | ||
|
|
269ba6add9 | ||
|
|
78d460a6d1 | ||
|
|
3254018ddb | ||
|
|
f2b7df94d7 | ||
|
|
59fd3aad31 | ||
|
|
a3d18d43ed | ||
|
|
20cbebeef1 | ||
|
|
2968482199 | ||
|
|
f8ac382072 | ||
|
|
aef43910b1 | ||
|
|
87efd4ab84 | ||
|
|
a8b600845e | ||
|
|
fcd9fd8513 | ||
|
|
ffe73f0124 | ||
|
|
0c57250d87 | ||
|
|
f7e012d216 | ||
|
|
c9e3c8b38d | ||
|
|
908a7b6c3d | ||
|
|
cfd7e8a829 | ||
|
|
804b818c6b | ||
|
|
9b9d14c2c4 | ||
|
|
38fc8eeaba | ||
|
|
e70221a9f1 | ||
|
|
126202648f | ||
|
|
dc8475995f | ||
|
|
3ca1373274 | ||
|
|
4aaf07d62a | ||
|
|
ff10a4603f | ||
|
|
53eb56bb1e | ||
|
|
c6209d76eb | ||
|
|
99dc8c7871 | ||
|
|
f588ccff72 | ||
|
|
69746f2f0b | ||
|
|
65da9425df | ||
|
|
b7583e95a5 | ||
|
|
9437a1a844 | ||
|
|
435564f0f2 | ||
|
|
2a6e522a87 | ||
|
|
9c1db7dca7 | ||
|
|
cd7cb19aee | ||
|
|
d84fa4d154 | ||
|
|
d574706600 | ||
|
|
8369e59b4d | ||
|
|
5be8fbab56 | ||
|
|
6101733232 | ||
|
|
778861f461 | ||
|
|
6c9d6a4d57 | ||
|
|
9962118dbd | ||
|
|
a4b2c10fb8 | ||
|
|
2c17bb2c36 | ||
|
|
da91217bc9 | ||
|
|
2e467cbc74 | ||
|
|
561a3bf7a0 | ||
|
|
83cad07fb3 | ||
|
|
4f6a4f244c | ||
|
|
cef49da576 | ||
|
|
e16453591e | ||
|
|
450319790e | ||
|
|
4b783037d3 | ||
|
|
d04f40c274 | ||
|
|
9ab4f35b84 | ||
|
|
4668c4996a | ||
|
|
330dc2fd44 | ||
|
|
96eed571d9 | ||
|
|
24d80000ac | ||
|
|
7ff527293a | ||
|
|
d88b2dd198 | ||
|
|
66654faef3 | ||
|
|
c8de30f3d9 | ||
|
|
f0fb38fed4 | ||
|
|
43ab7c22a7 | ||
|
|
829cd70889 | ||
|
|
972421efe2 | ||
|
|
98ada40532 | ||
|
|
931d704612 | ||
|
|
bb4e7da720 | ||
|
|
64e122c5f6 | ||
|
|
d0d0bf570e | ||
|
|
e53052ab7a | ||
|
|
cd46ebbb34 | ||
|
|
8d4136d864 | ||
|
|
4125e575af | ||
|
|
7259c0d69f | ||
|
|
ce2dd22bd7 | ||
|
|
1eb072fd43 | ||
|
|
f49b0822aa | ||
|
|
de824d3713 | ||
|
|
c0358d8d0c | ||
|
|
a9e4f345e9 | ||
|
|
be18b103b7 | ||
|
|
55405c1a26 | ||
|
|
779770dae5 | ||
|
|
002b16e1c6 | ||
|
|
ddf9eb1f9a | ||
|
|
bb4fecf3d1 | ||
|
|
4fbe52da40 | ||
|
|
1e3197a1ea | ||
|
|
5f692dfce2 | ||
|
|
78a7d7fa21 | ||
|
|
a9dda1554e | ||
|
|
9a417bfc5e | ||
|
|
90bc51ed2e | ||
|
|
02dc835721 | ||
|
|
a05e8f0e37 | ||
|
|
b10cbb9b20 | ||
|
|
1aaab741a0 | ||
|
|
bafa46393c | ||
|
|
45d43c41bc | ||
|
|
e944646541 | ||
|
|
21e1443ed5 | ||
|
|
93a5ffb037 | ||
|
|
d5711589cd | ||
|
|
375a359c97 | ||
|
|
3228bac56d | ||
|
|
c66b4e32db | ||
|
|
57b60dd51f | ||
|
|
ff911d0dc5 | ||
|
|
7a71498a3e | ||
|
|
76bcdc2581 | ||
|
|
91a218b29d | ||
|
|
4a6cbda1b4 | ||
|
|
8c08153e33 | ||
|
|
b44b3866a1 | ||
|
|
c242bb372b | ||
|
|
8c9e34133c | ||
|
|
3403ac361a | ||
|
|
07d6cb3f4a | ||
|
|
545aa61cf4 | ||
|
|
9fb78ce827 | ||
|
|
490b6d092e | ||
|
|
42b13bd312 | ||
|
|
28add22f20 | ||
|
|
ce545274a6 | ||
|
|
aa6c951e8c | ||
|
|
c4f4dfc3fb | ||
|
|
548f6ef2b6 | ||
|
|
b15ff4eb8c | ||
|
|
7790214620 | ||
|
|
3942e45cab | ||
|
|
2ace9ae4e4 | ||
|
|
5ac0ef6253 | ||
|
|
f552667312 | ||
|
|
5669a18bd8 | ||
|
|
a97d73ab05 | ||
|
|
252d2c425b | ||
|
|
09fc4bba61 | ||
|
|
79d4db8541 | ||
|
|
9c42626772 | ||
|
|
bbfe83c86b | ||
|
|
55aa4e424a | ||
|
|
8015f5c0c5 | ||
|
|
f3fe14863d | ||
|
|
d96c368660 | ||
|
|
3f34b8b0d1 | ||
|
|
6a58ea9e56 | ||
|
|
23888398d1 | ||
|
|
bfbc5eb91e | ||
|
|
98b0d4169e | ||
|
|
356cd271b2 | ||
|
|
baf7561cf8 | ||
|
|
b09f22961c | ||
|
|
f3ad3a5dfd | ||
|
|
ee49d321c5 | ||
|
|
3467ad3d02 | ||
|
|
6741604027 | ||
|
|
35312cf96c | ||
|
|
15f028fe59 | ||
|
|
8a2301af56 | ||
|
|
66747a8eef | ||
|
|
19d413ac1e | ||
|
|
4a332ff1af | ||
|
|
dc942db52f | ||
|
|
f535a2aa71 | ||
|
|
dfdd6dfa20 | ||
|
|
2af81d1ee3 | ||
|
|
ece25bce1a | ||
|
|
6fc234183a | ||
|
|
15a56f705f | ||
|
|
899f7e125f | ||
|
|
aa19bb3f30 | ||
|
|
562852a0ae | ||
|
|
a4b992c1ab | ||
|
|
3460c1dfbd | ||
|
|
653f6c2d46 | ||
|
|
ed7851a4b3 | ||
|
|
cb841e5cde | ||
|
|
4dae0e514e | ||
|
|
363c46ace8 | ||
|
|
abe5aca3e2 | ||
|
|
bea10b4356 | ||
|
|
f5f83f1924 | ||
|
|
403e2d58b9 | ||
|
|
222df44d21 | ||
|
|
566e548713 | ||
|
|
1434d54e7a | ||
|
|
4229d0f9a7 | ||
|
|
7f9eb35e1f | ||
|
|
ed7d7a74ea | ||
|
|
035e54ba4d | ||
|
|
284707c3a8 | ||
|
|
1f63028a83 | ||
|
|
8a0aa91ed7 | ||
|
|
62079991b7 | ||
|
|
4e7e172ff3 | ||
|
|
33a565a719 | ||
|
|
f0b9257387 | ||
|
|
c398c9cb6a | ||
|
|
a3d3e30e3a | ||
|
|
2b86465d4c | ||
|
|
6529240da6 | ||
|
|
0751ad1eeb | ||
|
|
786550bdc9 | ||
|
|
bde756a1ab | ||
|
|
423fb2d7bc | ||
|
|
f96b4f287a | ||
|
|
c00e7d3f65 | ||
|
|
1f38d4846b | ||
|
|
47a64610ca | ||
|
|
f0a845f0f9 | ||
|
|
abec23118d | ||
|
|
0957119550 | ||
|
|
f48fa3e4e8 | ||
|
|
5ffc58d6ca | ||
|
|
7d958635f0 | ||
|
|
33990426c1 | ||
|
|
9f3fc7ebf8 | ||
|
|
c8357da13b | ||
|
|
2290f14fb1 | ||
|
|
7796984444 | ||
|
|
75113c26c6 | ||
|
|
939a9ecd21 | ||
|
|
f307c7cd88 | ||
|
|
33ecceb90c | ||
|
|
e0d1cab079 | ||
|
|
811d72a727 | ||
|
|
c3c575c2e1 | ||
|
|
c189629eca | ||
|
|
37117c22d4 | ||
|
|
b05e9d2ab4 | ||
|
|
0451333990 | ||
|
|
ab2e6c19a4 | ||
|
|
f7959bc887 | ||
|
|
45874c699d | ||
|
|
286cdc41ab | ||
|
|
78708eb5d5 | ||
|
|
cf36745770 | ||
|
|
6622c7f98d | ||
|
|
3112b74527 | ||
|
|
b3ae6b634f | ||
|
|
982bca5d40 | ||
|
|
c8dcde6cd0 | ||
|
|
8f9db61688 | ||
|
|
ebdbaf34e6 | ||
|
|
a081b1e79e | ||
|
|
38c31e64db | ||
|
|
ae6f67420c | ||
|
|
ca19bd31d4 | ||
|
|
413dfd5628 | ||
|
|
f9515901cc | ||
|
|
3f42fabff8 | ||
|
|
1caa578771 | ||
|
|
b7c11c1818 | ||
|
|
3eb3db0663 | ||
|
|
be46f32056 | ||
|
|
6e5c915f96 | ||
|
|
04d13a8116 | ||
|
|
e638ede3f2 | ||
|
|
2348abe4bf | ||
|
|
f7e7a399d9 | ||
|
|
ba91f34636 | ||
|
|
16865d43a8 | ||
|
|
0d13aee15c | ||
|
|
49b4144ffd | ||
|
|
186e2d972e | ||
|
|
40dd63ecef | ||
|
|
6d66d6da15 | ||
|
|
03ec3513f3 | ||
|
|
87763fc234 | ||
|
|
f6c44cae2e | ||
|
|
da2ee04fce | ||
|
|
7673c36af3 | ||
|
|
9457b2af2f | ||
|
|
7203991032 | ||
|
|
5a685f7156 | ||
|
|
a6a25030ad | ||
|
|
00458a31d5 | ||
|
|
c6ddf6d6cc | ||
|
|
34b21b3065 | ||
|
|
8fbb355cd2 | ||
|
|
e8b3b7e578 | ||
|
|
59ca44f493 | ||
|
|
9e1457c2c3 | ||
|
|
fac83e14bc | ||
|
|
a97cec57e4 | ||
|
|
38c10b47d3 | ||
|
|
1a2523fd15 | ||
|
|
03243cb422 | ||
|
|
2ad7ee0344 | ||
|
|
55ce3618ce | ||
|
|
e9e34c1ab2 | ||
|
|
d4c916b496 | ||
|
|
8fbc9c9342 | ||
|
|
1b6fd9dfe8 | ||
|
|
304467e3f5 | ||
|
|
7452032d81 | ||
|
|
87e2048f1b | ||
|
|
d876084392 | ||
|
|
840729afa5 | ||
|
|
941ad03f3c | ||
|
|
d73d191f99 | ||
|
|
c2664e0283 | ||
|
|
ee61cede4e | ||
|
|
b47669b80b | ||
|
|
c0d0c63592 | ||
|
|
b09c39c8dc | ||
|
|
b4b09ddc3c | ||
|
|
d0a21086bd | ||
|
|
d44882c1b5 | ||
|
|
23c68efa2d | ||
|
|
560c5de1b7 | ||
|
|
5d91dbd000 | ||
|
|
6c31ee36cd | ||
|
|
edc29780ed | ||
|
|
aad7e4dd1c | ||
|
|
a6a727e8a4 | ||
|
|
d1fc65fabc | ||
|
|
d4be5ef9de | ||
|
|
1374be5a31 | ||
|
|
b2bbc28580 | ||
|
|
59b3e672aa | ||
|
|
a2f8bce8f5 | ||
|
|
a2b9adb3a2 | ||
|
|
28067640b5 | ||
|
|
da67916843 | ||
|
|
e54ce479ad | ||
|
|
6024d8a42d | ||
|
|
f565f08aa0 | ||
|
|
fd4afe09f8 | ||
|
|
dd0904f95c | ||
|
|
4c3076f2a4 | ||
|
|
1e73f63ff8 | ||
|
|
d167d5b1be | ||
|
|
71fa14f791 | ||
|
|
8dd1873e76 | ||
|
|
f91f5c7401 | ||
|
|
c62b7cc679 | ||
|
|
3ee213ddca | ||
|
|
8429877b02 | ||
|
|
05a0faff6a | ||
|
|
e09f6e4987 | ||
|
|
e23f4b0265 | ||
|
|
f582d4a13e | ||
|
|
2f41bd495d | ||
|
|
162a8c4393 | ||
|
|
3d1ce4c53f | ||
|
|
6db3ae9b8e | ||
|
|
6d0cb9dc33 | ||
|
|
46e95e8309 | ||
|
|
a7b9375877 | ||
|
|
0c6a8a130e | ||
|
|
9903f1e703 | ||
|
|
6fad719e42 | ||
|
|
9aaee8ee47 | ||
|
|
166221d784 | ||
|
|
925d69a2ee | ||
|
|
5ff08e241a | ||
|
|
3defd24087 | ||
|
|
9d86147d20 | ||
|
|
80801ac4ab | ||
|
|
210926cd91 | ||
|
|
677a69deed | ||
|
|
8dfdee21ce | ||
|
|
6ea77ab4cd | ||
|
|
e3c996688d | ||
|
|
bc3a570dda | ||
|
|
0800021a2d | ||
|
|
435eddd867 | ||
|
|
6e0fb055d1 | ||
|
|
1e9ac7ffeb | ||
|
|
b4873ecb43 | ||
|
|
1859d57784 | ||
|
|
69d58fbb50 | ||
|
|
cb34991663 | ||
|
|
c700364e1c | ||
|
|
9a6b1dc3a1 | ||
|
|
54b5b80a07 | ||
|
|
831459b895 | ||
|
|
4e101604c3 | ||
|
|
a6455269f0 | ||
|
|
cd257b91c5 | ||
|
|
d8f57bf899 | ||
|
|
989fb11fd7 | ||
|
|
140965b738 | ||
|
|
14ee51aead | ||
|
|
2e97ba5700 | ||
|
|
f549d53b68 | ||
|
|
a085ad4719 | ||
|
|
f230a9232e | ||
|
|
e84bf35e2a | ||
|
|
20f090537f | ||
|
|
dbe7a7c4fd | ||
|
|
b7a4e3903e | ||
|
|
b4c1c2f731 | ||
|
|
1b940e7daa | ||
|
|
f4ee50a7ad | ||
|
|
bee32d960a | ||
|
|
040a3b782c | ||
|
|
d649037c3e | ||
|
|
0a49d3dd52 | ||
|
|
53bb37b749 | ||
|
|
d2586278d6 | ||
|
|
6635c393e9 | ||
|
|
6222179a57 | ||
|
|
05bda6f38d | ||
|
|
4295cefeb1 | ||
|
|
67228c9b26 | ||
|
|
fd2bfff023 | ||
|
|
4e6c86341d | ||
|
|
2a14c67edc | ||
|
|
c236f05f4b | ||
|
|
0eeacdc80c | ||
|
|
41f39bf3fc | ||
|
|
9677144015 | ||
|
|
15797c556f | ||
|
|
acacf35a2a | ||
|
|
d3f5b1cbb6 | ||
|
|
196ed8101b | ||
|
|
dc650c5368 | ||
|
|
2bb521b135 | ||
|
|
409cc7d9b0 | ||
|
|
fe26be2312 | ||
|
|
34519de3b7 | ||
|
|
147d578922 | ||
|
|
9c317b64c3 | ||
|
|
3b8f6233b0 | ||
|
|
455b0cd696 | ||
|
|
1fa66405c5 | ||
|
|
b680a85b57 | ||
|
|
682ebc5f64 | ||
|
|
b8ba39dfae | ||
|
|
6c9e6a3a5a | ||
|
|
70698024f5 | ||
|
|
6df17a334c | ||
|
|
a5fb59b17f | ||
|
|
7ed6485f86 | ||
|
|
478150e850 | ||
|
|
3c2e30f348 | ||
|
|
b873e6349c | ||
|
|
2b1a32fd9c | ||
|
|
a2105634a4 | ||
|
|
7c71bd7be7 | ||
|
|
7c1961e618 | ||
|
|
baeddd4d15 | ||
|
|
6f5a8a33d9 | ||
|
|
52b2559a14 | ||
|
|
3d150c30a7 | ||
|
|
e58e573f3e | ||
|
|
375aa38f5d | ||
|
|
0e6317678f | ||
|
|
e7dffcd0f6 | ||
|
|
065304d175 | ||
|
|
15f43dd326 | ||
|
|
09d759d196 | ||
|
|
68757950ce | ||
|
|
3c45bdf18a | ||
|
|
c135967e59 | ||
|
|
f71af7c2a8 | ||
|
|
5b01eb9437 | ||
|
|
2e716f80d2 | ||
|
|
d7c0bc8c23 | ||
|
|
f30bf08580 | ||
|
|
a640803fc9 | ||
|
|
9954ddb780 | ||
|
|
b218df6920 | ||
|
|
5b6950e545 | ||
|
|
c7911c7130 | ||
|
|
62f792ea14 | ||
|
|
6a85960605 | ||
|
|
63a0b8ba79 | ||
|
|
634b382a3d | ||
|
|
fbf5deda21 | ||
|
|
d4b848272e | ||
|
|
fc29f2003e | ||
|
|
ab469aa07d | ||
|
|
562450751f | ||
|
|
adacd01f82 | ||
|
|
74d3320519 | ||
|
|
309a15d1ba | ||
|
|
bcef11681d | ||
|
|
8d15c8cfbf | ||
|
|
716bb8574d | ||
|
|
bd2fec4813 | ||
|
|
ead4b34127 | ||
|
|
72ae414da4 | ||
|
|
4c9618be3f | ||
|
|
901028f1e8 | ||
|
|
adfbfc1255 | ||
|
|
b66c03dfe9 | ||
|
|
2a909e634b | ||
|
|
9d86056f1c | ||
|
|
309fd76ddf | ||
|
|
a3293b154e | ||
|
|
eb8963a673 | ||
|
|
89ce9a5db2 | ||
|
|
f4f2567105 | ||
|
|
5a3fe61f2a | ||
|
|
55c327ffcb | ||
|
|
0fdb39f1c3 | ||
|
|
dae1b5a619 | ||
|
|
26b5680913 | ||
|
|
a2855fa24a | ||
|
|
9c3cf7b69a | ||
|
|
be7877f526 | ||
|
|
e765d8e69e | ||
|
|
4bd8df1fd3 | ||
|
|
4e76f2fc44 | ||
|
|
cf00ee42f5 | ||
|
|
886758d2be | ||
|
|
8339d2c7c9 | ||
|
|
811e4bd0cf | ||
|
|
49feff082f | ||
|
|
efdd54a670 | ||
|
|
84ac004772 | ||
|
|
bb35818976 | ||
|
|
822af70dce | ||
|
|
d5f33212ac | ||
|
|
db2aa83a7c | ||
|
|
9231fdbf4c | ||
|
|
017d7538ae | ||
|
|
a1c78ad9d4 | ||
|
|
754791efd3 | ||
|
|
50b7ec3c73 | ||
|
|
7ae417b4b6 | ||
|
|
5d04638091 | ||
|
|
2b2263a349 | ||
|
|
39ace9bdee | ||
|
|
1885d3df99 | ||
|
|
83ea931e3c | ||
|
|
b281a80150 | ||
|
|
c98d91e44d | ||
|
|
3ea54e9d25 | ||
|
|
1d3f218662 | ||
|
|
7da4fb68da | ||
|
|
7a24c957bd | ||
|
|
0ea6a926c5 | ||
|
|
49bc602fb2 | ||
|
|
cdaef30cc9 | ||
|
|
56e15d09a9 | ||
|
|
c91e8b1737 | ||
|
|
094343739b | ||
|
|
82134a1d50 | ||
|
|
6a0ff3686c | ||
|
|
e0c24c0e99 | ||
|
|
1c80941c69 | ||
|
|
e88ea71aef | ||
|
|
e0f1410b48 | ||
|
|
c3c85276d1 | ||
|
|
af2888d394 | ||
|
|
d0dd8b7955 | ||
|
|
75bce2822e | ||
|
|
425cc1ea85 | ||
|
|
2bf33c4dd2 | ||
|
|
dc19cd5d9d | ||
|
|
dfc25dbdd0 | ||
|
|
c4091c4c66 | ||
|
|
ef95b1268e | ||
|
|
e068bbec73 | ||
|
|
9cfd1c67b6 | ||
|
|
8978a6a3ff | ||
|
|
4e3d732934 | ||
|
|
03548cdfbc | ||
|
|
70dd69d533 | ||
|
|
453f324f54 | ||
|
|
c1aa55f3ea | ||
|
|
4b1e13e982 | ||
|
|
4584eb3058 | ||
|
|
02a7ae15f9 | ||
|
|
74b1b60125 | ||
|
|
39df994ff9 | ||
|
|
d9875fe232 | ||
|
|
26c10b9931 | ||
|
|
750662eb08 | ||
|
|
6b49889041 | ||
|
|
03ddee3663 | ||
|
|
10caab1729 | ||
|
|
c6a72def88 | ||
|
|
21a31d7f8b | ||
|
|
2c4df108e5 | ||
|
|
5db8addcc6 | ||
|
|
dd0e81d094 | ||
|
|
90f093eb67 | ||
|
|
a056a9d601 | ||
|
|
2ad2a402fb | ||
|
|
3d07a94bd7 | ||
|
|
366857cd26 | ||
|
|
9578246bbb | ||
|
|
9ee9e9c6de | ||
|
|
e22cc28114 | ||
|
|
a227af3664 | ||
|
|
599d410d99 | ||
|
|
5e37ab60d8 | ||
|
|
0b06235527 | ||
|
|
b8d42cdea7 | ||
|
|
455791b710 | ||
|
|
90323cd355 | ||
|
|
c07d9e96ce | ||
|
|
810adb8a94 | ||
|
|
606aadb891 | ||
|
|
8f73670925 | ||
|
|
8c559d6231 | ||
|
|
786cb6859b | ||
|
|
de8800f41a | ||
|
|
7a00798027 | ||
|
|
6ded06c6d9 | ||
|
|
f53741c5b9 | ||
|
|
2681bafb76 | ||
|
|
ac635c70cd | ||
|
|
ef7e47d162 | ||
|
|
4211b9abbd | ||
|
|
0c0120ef27 | ||
|
|
dacd457478 | ||
|
|
7b03a0316d | ||
|
|
52201d95b1 | ||
|
|
e2cde628bb | ||
|
|
3335fa78fc | ||
|
|
7abc7fa573 | ||
|
|
f6247fe67c | ||
|
|
996a9135f6 | ||
|
|
3599751f93 | ||
|
|
2d186e1e76 | ||
|
|
bb2f46d7cc | ||
|
|
463fbe2680 | ||
|
|
95a7e50137 | ||
|
|
9d93ad1f16 | ||
|
|
44104797d6 | ||
|
|
1548501050 | ||
|
|
de3911e930 | ||
|
|
5a8a901560 | ||
|
|
12d45e9114 | ||
|
|
d057067543 | ||
|
|
560d375e0f | ||
|
|
3388d6636c | ||
|
|
2624a6dcd0 | ||
|
|
b5c2785e10 | ||
|
|
493834d45d | ||
|
|
926546b153 | ||
|
|
56434db4f5 | ||
|
|
688292e6ff | ||
|
|
f7415e1ca4 | ||
|
|
2961fa0e08 | ||
|
|
ad17ff9a92 | ||
|
|
558ab25f51 | ||
|
|
a5db7c9acb | ||
|
|
580297e290 | ||
|
|
79d11ea709 | ||
|
|
99f40a9682 | ||
|
|
e86756cb39 | ||
|
|
1325246da8 | ||
|
|
dfa9a91906 | ||
|
|
5e2926a207 | ||
|
|
9048832a9a | ||
|
|
7d5a385811 | ||
|
|
900e93f758 | ||
|
|
99430a5931 | ||
|
|
c9b4029ce7 | ||
|
|
78c3051585 | ||
|
|
cd4310df25 | ||
|
|
259cff9f22 | ||
|
|
7b7eb00385 | ||
|
|
62b9e5a6f9 | ||
|
|
a399502ecd | ||
|
|
92a840f1b2 | ||
|
|
74fdc16bd1 | ||
|
|
56cfdce453 | ||
|
|
efa8eb379f | ||
|
|
7f095bdc42 | ||
|
|
e20161b3de | ||
|
|
fc8fdbacb4 | ||
|
|
7fde638556 | ||
|
|
be93c19b7e | ||
|
|
967eb81112 | ||
|
|
9f602f73eb | ||
|
|
41de7e76ec | ||
|
|
607a22ad12 | ||
|
|
4b402c4041 | ||
|
|
daccb10d8c | ||
|
|
63f1dd7877 | ||
|
|
79801f5c30 | ||
|
|
9c7a1bc067 | ||
|
|
cf0ff88120 | ||
|
|
e0b67536e0 | ||
|
|
94c7dcc7f1 | ||
|
|
38e155d819 | ||
|
|
efd5575683 | ||
|
|
1a7c213405 | ||
|
|
8e3d60c359 | ||
|
|
924b4fe742 | ||
|
|
7e154a467b | ||
|
|
b90f1581be | ||
|
|
821992e21f | ||
|
|
f0c0ce9db1 | ||
|
|
8ecb9aaa91 | ||
|
|
22258fb0bf | ||
|
|
a725b8bb6e | ||
|
|
bdfdccd511 | ||
|
|
194bc60429 | ||
|
|
430ca3322b | ||
|
|
3d803c2e80 | ||
|
|
fa3dcbb3bc | ||
|
|
ee342063d8 | ||
|
|
bb3bc60f83 | ||
|
|
e7a4cfac4d | ||
|
|
6478aa1c9d | ||
|
|
7b5839335a | ||
|
|
a360af8687 | ||
|
|
36cb25b341 | ||
|
|
e565ecdaef | ||
|
|
f96fdc2970 | ||
|
|
0d04cdc323 | ||
|
|
926f604f09 | ||
|
|
180743612c | ||
|
|
d05f189049 | ||
|
|
ceaa9f1101 | ||
|
|
6f4cbe0bde | ||
|
|
8d4bb9b40d | ||
|
|
1765fe2a29 | ||
|
|
79a710ce98 | ||
|
|
bec5451f12 | ||
|
|
86dfdcb8ec | ||
|
|
42d986b96d | ||
|
|
fbc4ca980c | ||
|
|
80c52e0ea4 | ||
|
|
50b76dd5a2 | ||
|
|
225fcd5e41 | ||
|
|
afffd345bc | ||
|
|
716576043d | ||
|
|
28231d39a4 | ||
|
|
9e23c3d625 | ||
|
|
bdd5869244 | ||
|
|
fc1415d705 | ||
|
|
8218f62478 | ||
|
|
fd354d999d | ||
|
|
ec00b25793 | ||
|
|
967b7d89e3 | ||
|
|
32f8439143 | ||
|
|
0ff8bd2aa9 | ||
|
|
2866383228 | ||
|
|
00ac7edeb3 | ||
|
|
537068cfde | ||
|
|
c3c6a48059 | ||
|
|
5c166b3f40 | ||
|
|
230fa3286b | ||
|
|
061c0b10fd | ||
|
|
32f8a98cf8 | ||
|
|
6c60ecb237 | ||
|
|
c3fae5e801 | ||
|
|
a594e256ae | ||
|
|
41d90c2408 | ||
|
|
7ff42b1b7a | ||
|
|
4d7cfd0de5 | ||
|
|
266d32bd77 | ||
|
|
7e1184c071 | ||
|
|
1ce51e57ab | ||
|
|
142b4fd699 | ||
|
|
cc8feaa483 | ||
|
|
d9d5d35a77 | ||
|
|
9277156b6c | ||
|
|
1490a19fa1 | ||
|
|
9b7adcd4d9 | ||
|
|
a8d32f9964 | ||
|
|
5093337de1 | ||
|
|
f54225568c | ||
|
|
255ff446ba | ||
|
|
9a0dc4bfdc | ||
|
|
9d975750bc | ||
|
|
7c979e6490 | ||
|
|
d60ca1661c | ||
|
|
bb62391a4c | ||
|
|
0b25c0b677 | ||
|
|
a5d6082418 | ||
|
|
631cbcd781 | ||
|
|
20c4633d2a | ||
|
|
5669cac16d | ||
|
|
6180762160 | ||
|
|
376726cf90 | ||
|
|
284bb7ac71 | ||
|
|
eca466bdaa | ||
|
|
d56abec195 | ||
|
|
961e25f608 | ||
|
|
138bf698b0 | ||
|
|
e5bb4cca12 | ||
|
|
5e2cb0e3a8 | ||
|
|
16a65cb367 | ||
|
|
1bae9b8ff7 | ||
|
|
d7c1f43b49 | ||
|
|
f933af9f57 | ||
|
|
91e1ff5e30 | ||
|
|
5908e10549 | ||
|
|
464e6354c5 | ||
|
|
d470e55f8c | ||
|
|
98a1b01b0c | ||
|
|
e240424be5 | ||
|
|
1cb5a12abb | ||
|
|
ff2a4a6fcd | ||
|
|
c58d2fce89 | ||
|
|
7a962b9f03 | ||
|
|
a679079a1d | ||
|
|
e39e776d03 | ||
|
|
e135ffc2c1 | ||
|
|
e79eac688a | ||
|
|
643a90c48d | ||
|
|
2a448a899d | ||
|
|
7b86f8f024 | ||
|
|
e686f12317 | ||
|
|
a86f1eca79 | ||
|
|
668c1c0792 | ||
|
|
c4fad66f2a | ||
|
|
02572e8cca | ||
|
|
1d8385f7ac | ||
|
|
f8c966c39c | ||
|
|
3c8efe7c0a | ||
|
|
dbc10e0feb | ||
|
|
239bf97b47 | ||
|
|
858db2f239 | ||
|
|
c34bdb74e6 | ||
|
|
9601102885 | ||
|
|
56c2d1cc55 | ||
|
|
a67b0d4771 | ||
|
|
ef204817ae | ||
|
|
9bc5bc2548 | ||
|
|
fd4be36991 | ||
|
|
9b46b02717 | ||
|
|
3bc4dc58d7 | ||
|
|
594666eb61 | ||
|
|
e80f41a701 | ||
|
|
f9c2aa7689 | ||
|
|
9dd4bf5574 | ||
|
|
5a9b785773 | ||
|
|
d96a28487a | ||
|
|
0554898b5d | ||
|
|
6f9ce6a199 | ||
|
|
e3119112a6 | ||
|
|
d3af0e9090 | ||
|
|
2feb44e2c5 | ||
|
|
cc0b92bc75 | ||
|
|
e576d32fb6 | ||
|
|
2d6865d421 | ||
|
|
0f1133729f | ||
|
|
d7160ee563 | ||
|
|
18add94a31 | ||
|
|
18d3ffc194 | ||
|
|
0a30a5b077 | ||
|
|
9049dd7725 | ||
|
|
6f418da388 | ||
|
|
41c6bf5fe4 | ||
|
|
33d6d26bbf | ||
|
|
787285d58f | ||
|
|
40fc6f529e | ||
|
|
baef18cedd | ||
|
|
a918cea2fe | ||
|
|
9789905a1f | ||
|
|
f458580dee | ||
|
|
223a30401c | ||
|
|
2927493cf3 | ||
|
|
79db920fa7 | ||
|
|
b3d65cc7df | ||
|
|
208d6d6d94 | ||
|
|
aa135a3780 | ||
|
|
044e7b63c2 | ||
|
|
5b7b328193 | ||
|
|
8d5a1be227 | ||
|
|
90d5765fb6 | ||
|
|
1db14793fa | ||
|
|
cbb4e95928 | ||
|
|
20c091a5e7 | ||
|
|
e9c098d024 | ||
|
|
9f75970347 | ||
|
|
f1366e8e19 | ||
|
|
0f85e3557b | ||
|
|
17ee731546 | ||
|
|
af2461cccc | ||
|
|
60c1549771 | ||
|
|
ab6dcf7032 | ||
|
|
8aae235a71 | ||
|
|
c032574491 | ||
|
|
1065917872 | ||
|
|
56e361ac44 | ||
|
|
2e00829b1e | ||
|
|
625aaceb00 | ||
|
|
98d85e6b74 | ||
|
|
319d49084b | ||
|
|
eb542067af | ||
|
|
04b9a2c605 | ||
|
|
8028e75fbb | ||
|
|
3eb51d85da | ||
|
|
79a35c2fe6 | ||
|
|
2dd4c34423 | ||
|
|
684f6b2299 | ||
|
|
b791a80b75 | ||
|
|
13006f94e2 | ||
|
|
41772c325f | ||
|
|
a4fc057a1c | ||
|
|
aae29e72ae | ||
|
|
87c831e5dd | ||
|
|
40a5f1c80a | ||
|
|
04f1e18342 | ||
|
|
365a40d11f | ||
|
|
60b5dac3ab | ||
|
|
8565c18e84 | ||
|
|
03ba4bc760 | ||
|
|
ae3a2cb272 | ||
|
|
6c8e208ef3 | ||
|
|
0181f1c08c | ||
|
|
7f00c5a02e | ||
|
|
d0648e27e2 | ||
|
|
31348af2e3 | ||
|
|
096c0ad564 | ||
|
|
16c41585e1 | ||
|
|
566ab9261d | ||
|
|
1cdadfdece | ||
|
|
448a19bf54 | ||
|
|
d3051eed48 | ||
|
|
ed55de888a | ||
|
|
da601f0bef | ||
|
|
08ac36812b | ||
|
|
556de444e8 | ||
|
|
3750200c5e | ||
|
|
c5f7d650b5 | ||
|
|
535c72cad7 | ||
|
|
8a83edc1b5 | ||
|
|
5b415a6227 | ||
|
|
5172f0bf39 | ||
|
|
d9579f418d | ||
|
|
3579bbd1c4 | ||
|
|
817b85001f | ||
|
|
e8868a7fb9 | ||
|
|
2cd9ac60f1 | ||
|
|
464f384cea | ||
|
|
8b16f07eb0 | ||
|
|
fefda40acf | ||
|
|
8c2f62fb92 | ||
|
|
1a6b961b5f | ||
|
|
01014a6a84 | ||
|
|
cb0c55daa7 | ||
|
|
82575a7aea | ||
|
|
80da0c5830 | ||
|
|
83b6abf4ad | ||
|
|
ea0ebc020c | ||
|
|
f358db9f02 | ||
|
|
94c9cadbd8 | ||
|
|
2ae6460f46 | ||
|
|
0067b16d1e | ||
|
|
ec9f6220c9 | ||
|
|
af53e2b6b0 | ||
|
|
b42b333a72 | ||
|
|
99b0369f1b | ||
|
|
d6ea1e2f12 | ||
|
|
4d6b45427c | ||
|
|
1be8365684 | ||
|
|
c3d11c8ff6 | ||
|
|
8ff65abbc6 | ||
|
|
bf4b6e5f80 | ||
|
|
25fda7adc5 | ||
|
|
f3af7b5f35 | ||
|
|
33cfc56ad0 | ||
|
|
464cc26ccf | ||
|
|
d18754afdd | ||
|
|
beb7953d38 | ||
|
|
fbfc811a44 | ||
|
|
7e66e5a713 | ||
|
|
07b5bbae06 | ||
|
|
3087913b74 | ||
|
|
904ea05bf6 | ||
|
|
6f4885d86d | ||
|
|
2dc29cfee3 | ||
|
|
bd05df5cc5 | ||
|
|
ee1f14621a | ||
|
|
58a9d9eb9a | ||
|
|
bc1013dacf | ||
|
|
9f195df103 | ||
|
|
1cc7dc6360 | ||
|
|
328965ed7c | ||
|
|
133de9a087 | ||
|
|
7261384655 | ||
|
|
4718071cbb | ||
|
|
22be0816aa | ||
|
|
49e88322de | ||
|
|
14f3d44c37 | ||
|
|
0ba17ec116 | ||
|
|
79d59c004b | ||
|
|
873e9720e9 | ||
|
|
de6d3e493c | ||
|
|
7f1fdb774c | ||
|
|
128efc3193 | ||
|
|
c49efc0c22 | ||
|
|
3e2b8a8d02 | ||
|
|
9861279395 | ||
|
|
538a5df9d5 | ||
|
|
90d6ebc879 | ||
|
|
6de1f8c770 | ||
|
|
6d532bfc02 | ||
|
|
ba537d657f | ||
|
|
305fbc7c92 | ||
|
|
29341d60aa | ||
|
|
c170862de7 | ||
|
|
ca6efd73f3 | ||
|
|
d05fee1182 | ||
|
|
1f87676d52 | ||
|
|
c2ce2f88c7 | ||
|
|
2fed55ae6b | ||
|
|
51db59622c | ||
|
|
db1d2aaff5 | ||
|
|
4322fdc910 | ||
|
|
2a5c5a4e15 | ||
|
|
4b2abf8ac2 | ||
|
|
365cb4b368 | ||
|
|
c85bff235d | ||
|
|
ad16180b1a | ||
|
|
5ff02b469f | ||
|
|
44f57ad9a8 | ||
|
|
94fd6f6901 | ||
|
|
e61242a337 | ||
|
|
722964667f | ||
|
|
fbb9c1c249 | ||
|
|
15f341b655 | ||
|
|
b358490607 | ||
|
|
f9e4196fd5 | ||
|
|
751525802d | ||
|
|
2abacd2a2d | ||
|
|
a3155e0613 | ||
|
|
70b9e4caf5 | ||
|
|
317ae9233e | ||
|
|
5b8f03cd9d | ||
|
|
2a4783307a | ||
|
|
bddecba9ed | ||
|
|
931e76e3d1 | ||
|
|
70c2ec8ed5 | ||
|
|
9c7edb9242 | ||
|
|
0867821ae7 | ||
|
|
0b2d51d859 | ||
|
|
ef8022f715 | ||
|
|
e03ec0032b | ||
|
|
62642443ef | ||
|
|
3e04c92ff9 | ||
|
|
b77628c458 | ||
|
|
40c5e6d67a | ||
|
|
e4d175780e | ||
|
|
16b9665033 | ||
|
|
b7238caea5 | ||
|
|
e63c0e3cbb | ||
|
|
16db2c4e57 | ||
|
|
bd4a61addd | ||
|
|
f19c18dc14 | ||
|
|
570f10d91c | ||
|
|
9550b884f7 | ||
|
|
4b45ef62ed | ||
|
|
a1543b7da0 | ||
|
|
90087160c6 | ||
|
|
be33875199 | ||
|
|
867bf70f1a | ||
|
|
9018ef30fe | ||
|
|
508f84893f | ||
|
|
f414d241c1 | ||
|
|
0c1307b083 | ||
|
|
b8b6cd409a | ||
|
|
fbee41f8c7 | ||
|
|
55edd5047e | ||
|
|
0587e24fdb | ||
|
|
451ccb778d | ||
|
|
5656f81bde | ||
|
|
b07ea5055b | ||
|
|
5eb27afd63 | ||
|
|
05d43a4074 | ||
|
|
aa895cfa9b | ||
|
|
172c7eb270 | ||
|
|
eb6c0b8027 | ||
|
|
06d2520db2 | ||
|
|
bf31a3efbc | ||
|
|
445dcfe4d0 | ||
|
|
25ca0278dd | ||
|
|
78a380bcc4 | ||
|
|
4f1a56f0f0 | ||
|
|
754bfb181c | ||
|
|
7903ba0297 | ||
|
|
c1b2243adb | ||
|
|
d52c750942 | ||
|
|
7c2a9b0744 | ||
|
|
888d7e6422 | ||
|
|
919275cc58 | ||
|
|
4fe5297e35 | ||
|
|
22dee4f6f3 | ||
|
|
a7dbe58c85 | ||
|
|
aa3da0e24c | ||
|
|
033ab5490b | ||
|
|
c9f785e00f | ||
|
|
0e8ab0588f | ||
|
|
0ebe198ff1 | ||
|
|
438ad8148b | ||
|
|
a60133bfb3 | ||
|
|
98b3e37144 | ||
|
|
6e23903c63 | ||
|
|
574c4a264f | ||
|
|
dd5ffaf058 | ||
|
|
0b16270b88 | ||
|
|
f562a88249 | ||
|
|
59f8d116af | ||
|
|
a5558f8fcc | ||
|
|
823ae03a08 | ||
|
|
f8c958a409 | ||
|
|
25785d8c3f | ||
|
|
35d3da9697 | ||
|
|
d3e9930235 | ||
|
|
1ccca7cc68 | ||
|
|
12a9e2972a | ||
|
|
444c1f170a | ||
|
|
3cb2fb8250 | ||
|
|
1e8457441d | ||
|
|
5a9448245b | ||
|
|
eafe5a9d8f | ||
|
|
d45d90e8ae | ||
|
|
42a9374e71 | ||
|
|
82a775eca3 | ||
|
|
1dae1a71fc | ||
|
|
ac0fed6402 | ||
|
|
fb656d480e | ||
|
|
2b7341af57 | ||
|
|
ce1f9d935d | ||
|
|
bdadca1a65 | ||
|
|
d7b4d0756e | ||
|
|
1279e27825 | ||
|
|
d92e3bd620 | ||
|
|
7f583ec1ac | ||
|
|
7962101e5e | ||
|
|
ae254f0a10 | ||
|
|
68e0b0ac84 | ||
|
|
5f21d13572 | ||
|
|
233bffdb7d | ||
|
|
bf9349c4dc | ||
|
|
4847548779 | ||
|
|
cb245b5435 | ||
|
|
249b897872 | ||
|
|
08c731fd84 | ||
|
|
302f4407f6 | ||
|
|
de5dfd99f6 | ||
|
|
acb22f0fde | ||
|
|
d1505b15c4 | ||
|
|
cca2e7876d | ||
|
|
2c4d8dbe9b | ||
|
|
9305ad2102 | ||
|
|
7a98dab6a4 | ||
|
|
971defbbbd | ||
|
|
6b0de08157 | ||
|
|
87c1de66f2 | ||
|
|
2aa171c348 | ||
|
|
6452342222 | ||
|
|
da204c131d | ||
|
|
9369cc44e6 | ||
|
|
38bca6731c | ||
|
|
2adab7f71a | ||
|
|
be96f6e62d | ||
|
|
8b5ea39916 | ||
|
|
1024fc623e | ||
|
|
8ab05d4c36 | ||
|
|
0c9e79cd67 | ||
|
|
2ed6bb86c1 | ||
|
|
61da0f08dd | ||
|
|
1432c268a8 | ||
|
|
ec6a03afdd | ||
|
|
bf371a6e5d | ||
|
|
b28cf68097 | ||
|
|
a0af7a51ed | ||
|
|
dfa3ef0564 | ||
|
|
0066531266 | ||
|
|
53a7cb0e9d | ||
|
|
86739bea8b | ||
|
|
ab127ba92e | ||
|
|
6a2a9460e9 | ||
|
|
07ad362854 | ||
|
|
76b0328eb1 | ||
|
|
3c85136279 | ||
|
|
bf048b8d7c | ||
|
|
9ac2bb30f4 | ||
|
|
78b74cce8e | ||
|
|
82033af097 | ||
|
|
951308b5f3 | ||
|
|
8d5456b6d0 | ||
|
|
f674de4f5d | ||
|
|
fafa5938da | ||
|
|
4d5546953a | ||
|
|
b61baa87ec | ||
|
|
805c701767 | ||
|
|
dad041c49f | ||
|
|
2ecdc54b0b | ||
|
|
ce260f79d2 | ||
|
|
11ca1bec0b | ||
|
|
05d9adeb99 | ||
|
|
73f29484e7 | ||
|
|
0154a26e0b | ||
|
|
cee1c4f63d | ||
|
|
e5397c5ec2 | ||
|
|
e36f5cb366 | ||
|
|
8b9fed75f3 | ||
|
|
66e9bd90eb | ||
|
|
b29c1224c1 | ||
|
|
bd6175157c | ||
|
|
6692e8c508 | ||
|
|
6c25131964 | ||
|
|
0bdae34b5e | ||
|
|
f6fecb957e | ||
|
|
0a3d51e9cf | ||
|
|
a69513c044 | ||
|
|
219f5d9845 | ||
|
|
ba60e0f692 | ||
|
|
18424dd82f | ||
|
|
32ebea91ff | ||
|
|
3b53e06e0d | ||
|
|
4d38798dd5 | ||
|
|
92a3898540 | ||
|
|
7433095240 | ||
|
|
190b6a2aa6 | ||
|
|
0095896051 | ||
|
|
c647e4307a | ||
|
|
bab5c54219 | ||
|
|
e74479717a | ||
|
|
9ebd453b87 | ||
|
|
5ad5d0cff4 | ||
|
|
68cb382242 | ||
|
|
f5d1c7cc0a | ||
|
|
c7fb8a4f20 | ||
|
|
eb87e690ed | ||
|
|
539fc8b760 | ||
|
|
c6e54c83c8 | ||
|
|
878d13ef42 | ||
|
|
5580bcf870 | ||
|
|
12adcf8925 | ||
|
|
c8ef9223e5 | ||
|
|
fc37e654fc | ||
|
|
eb69896355 | ||
|
|
61ff2fd0f3 | ||
|
|
b6d045cebf | ||
|
|
f47177ecb4 | ||
|
|
de850262b8 | ||
|
|
de57af46c0 | ||
|
|
badf9baf9b | ||
|
|
adcd83f6a8 | ||
|
|
81d4d8cea1 | ||
|
|
4da0b70694 | ||
|
|
7056009b6a | ||
|
|
ddb960ddfb | ||
|
|
0ebd985672 | ||
|
|
c13dc62065 | ||
|
|
705946cc40 | ||
|
|
aafa4a3c8b | ||
|
|
af68084895 | ||
|
|
9633c5dab6 | ||
|
|
aa11141660 | ||
|
|
8bb5b943d7 | ||
|
|
22776f24ab | ||
|
|
216442ddc1 | ||
|
|
dd3ac7a2c9 | ||
|
|
11447324ff | ||
|
|
f8210b353e | ||
|
|
2b66c1358b | ||
|
|
102d86d4b6 | ||
|
|
227f49a0cc | ||
|
|
a17f169e01 | ||
|
|
72ea3d6b98 | ||
|
|
17cacf258e | ||
|
|
f7aacefcd6 | ||
|
|
ace7ffab5f | ||
|
|
eec63b112f | ||
|
|
caf7bc8569 | ||
|
|
fd437ff4c5 | ||
|
|
fb218f8b10 | ||
|
|
4693080ce0 | ||
|
|
60ddcdf960 | ||
|
|
303bafb3ac | ||
|
|
7a0d0d9b96 | ||
|
|
84a9d2d072 | ||
|
|
1b5adf40da | ||
|
|
59a32aaae6 | ||
|
|
18106a4fc6 | ||
|
|
fc2297a2ca | ||
|
|
5b7b765090 | ||
|
|
90769ac709 | ||
|
|
ac9f1e9de5 | ||
|
|
5bf31e7a86 | ||
|
|
dd17506078 | ||
|
|
5d1424f67c | ||
|
|
2346b0ab99 | ||
|
|
88dec6ef2b | ||
|
|
e71f494839 | ||
|
|
22bb0414a1 | ||
|
|
6477bb8d77 | ||
|
|
70ddc0ce43 | ||
|
|
9986e4c6d0 | ||
|
|
e2710161f6 | ||
|
|
5f11fe521d | ||
|
|
d018b32d0b | ||
|
|
e54b7cda3d | ||
|
|
fc63841169 | ||
|
|
b674c598f9 | ||
|
|
710230a294 | ||
|
|
169f7440ac | ||
|
|
57ec12eb6b | ||
|
|
2c26f77a25 | ||
|
|
95dc90e6b2 | ||
|
|
400392230b | ||
|
|
eca66f9577 | ||
|
|
121bb99cc2 | ||
|
|
cac1ef7ade | ||
|
|
d74d79b3d8 | ||
|
|
c6b28bc193 | ||
|
|
5d05574518 | ||
|
|
bf478aeba2 | ||
|
|
c9dfe1ad92 | ||
|
|
926609eb59 | ||
|
|
e32116b9a3 | ||
|
|
e11d5ac708 | ||
|
|
f6c3d4cadc | ||
|
|
3e9d271b52 | ||
|
|
ecc8beef3f | ||
|
|
b9afb7bcec | ||
|
|
b4041759f7 | ||
|
|
c3473b5b4f | ||
|
|
1b9bf9c62d | ||
|
|
ed96a6b6c0 | ||
|
|
4989d0c904 | ||
|
|
9a5bdae07f | ||
|
|
67016feb96 | ||
|
|
22bdfb7e56 | ||
|
|
ceb2c4f3ef | ||
|
|
d5a93a6400 | ||
|
|
01a2513812 | ||
|
|
8e7a752b2a | ||
|
|
999d3f1539 | ||
|
|
a7ee51e5d8 | ||
|
|
0e965b6529 | ||
|
|
a9db06f5e7 | ||
|
|
6827c4038b | ||
|
|
e8a6e90a61 | ||
|
|
ff956cb546 | ||
|
|
7d7e0f9800 | ||
|
|
3ae05a672d | ||
|
|
d700abff0a | ||
|
|
5267f34e76 | ||
|
|
d6e8290a1c | ||
|
|
36f66d40e5 | ||
|
|
5f12616cb9 | ||
|
|
bc43efba75 | ||
|
|
ef5f476cd6 | ||
|
|
98bf7710e4 | ||
|
|
7263af13ed | ||
|
|
d992a809f5 | ||
|
|
04f8d39860 | ||
|
|
b7bf14ab72 | ||
|
|
e8abbe0623 | ||
|
|
b14d59e977 | ||
|
|
5f12c17355 | ||
|
|
d170d78530 | ||
|
|
4d9160ca9f | ||
|
|
8f670f31b8 | ||
|
|
5838345f48 | ||
|
|
3f1c84f65a | ||
|
|
83b2b8fe60 | ||
|
|
ac24300274 | ||
|
|
2e657b7b12 | ||
|
|
c063617553 | ||
|
|
38a4f0234d | ||
|
|
740a723072 | ||
|
|
495cf58014 | ||
|
|
8e98759359 | ||
|
|
4ae0bb83f1 | ||
|
|
5459d812e7 | ||
|
|
831c222541 | ||
|
|
faad247d85 | ||
|
|
1e829ceaf3 | ||
|
|
79fe175440 | ||
|
|
9b32bfb3db | ||
|
|
37fea072bc | ||
|
|
31a603e905 | ||
|
|
ca21c285b0 | ||
|
|
5a3eaa85bf | ||
|
|
a5777683f3 | ||
|
|
90dd91c6cd | ||
|
|
8d8a8fe295 | ||
|
|
65e22bb76a | ||
|
|
f83ed19dfe | ||
|
|
53b14bde4d | ||
|
|
7742a5dac2 | ||
|
|
bddcb31fe2 | ||
|
|
b411a89703 | ||
|
|
e61752bd3a | ||
|
|
7a1d6fe509 | ||
|
|
4fd2743efa | ||
|
|
2c0eaaec3d | ||
|
|
3898fe3311 | ||
|
|
853b0e84cc | ||
|
|
42fe208eda | ||
|
|
444dc01931 | ||
|
|
95ce10f23b | ||
|
|
660fc3bb34 | ||
|
|
c71af7f610 | ||
|
|
ce476f2e5c | ||
|
|
a9fc85027d | ||
|
|
b2aa385942 | ||
|
|
424a7da470 | ||
|
|
b92504bebc | ||
|
|
e0846792d2 | ||
|
|
b9bf60ea23 | ||
|
|
bd27b4c162 | ||
|
|
28de676956 | ||
|
|
b3cde9900c | ||
|
|
2155bba5b0 | ||
|
|
a53fdc7126 | ||
|
|
3fc0ebdd51 | ||
|
|
211f416806 | ||
|
|
b90ad587c2 | ||
|
|
e7aecb89dd | ||
|
|
a45f8969a0 | ||
|
|
d3c06a3f76 | ||
|
|
f447ee7b9d | ||
|
|
3e168ce2ca | ||
|
|
c64edd2706 | ||
|
|
8a1f106c72 | ||
|
|
4ac99ffe0e | ||
|
|
fdcf87c70c | ||
|
|
5aabb83f5a | ||
|
|
bd678f9ca1 | ||
|
|
a87890b3cc | ||
|
|
86594851cb | ||
|
|
a83ccccffc | ||
|
|
50635e9c15 | ||
|
|
7d3dad3d1d | ||
|
|
dd22e78515 | ||
|
|
5df1cb0566 | ||
|
|
423df67042 | ||
|
|
568d5c46ed | ||
|
|
da25b91980 | ||
|
|
bc0dad6c1c | ||
|
|
9b8aa9b75d | ||
|
|
d5bc125617 | ||
|
|
4ffaabcc04 | ||
|
|
b597a0d31c | ||
|
|
fb32e5ca9a | ||
|
|
cd7ab6231f | ||
|
|
5908fd6552 | ||
|
|
6d2c6caa23 | ||
|
|
5eb00502ec | ||
|
|
3f9d6759d4 | ||
|
|
aba70207ab | ||
|
|
a8134a49c4 | ||
|
|
fa47f0c707 | ||
|
|
8501af298f | ||
|
|
5c7b1358d4 | ||
|
|
3938d8863e | ||
|
|
7838f9f3a3 | ||
|
|
de3c5751db | ||
|
|
5ee7e03c1b | ||
|
|
7a405b86c9 | ||
|
|
ffc3f33670 | ||
|
|
857055b797 | ||
|
|
d15ba3939d | ||
|
|
1ec83e4969 | ||
|
|
9275760599 | ||
|
|
d97d3ff5fc | ||
|
|
ea6734f550 | ||
|
|
f73751843f | ||
|
|
dbfbc56de7 | ||
|
|
70c5b23089 | ||
|
|
2ec6ffe478 | ||
|
|
793205afc5 | ||
|
|
c6b74daa0a | ||
|
|
23ce1fb1ba | ||
|
|
29188e0562 | ||
|
|
d9773c963f | ||
|
|
1206b1eb96 | ||
|
|
93af87a9e0 | ||
|
|
7a6970e570 | ||
|
|
ea584e94bd | ||
|
|
42b02b3a5f | ||
|
|
44f6a536d2 | ||
|
|
d7b8e071dd | ||
|
|
3f1aa1f9e2 | ||
|
|
82024a65cd | ||
|
|
f4ce08211d | ||
|
|
7c6ae96a09 | ||
|
|
80b62d50f5 | ||
|
|
d498f4e55e | ||
|
|
1c1e008dcf | ||
|
|
fe41e8bc18 | ||
|
|
ccc6723a8e | ||
|
|
1e7ef46e9c | ||
|
|
e0c8189f1a | ||
|
|
8bcad002df | ||
|
|
5c76131d3d | ||
|
|
cabdb4ef17 | ||
|
|
a34891851b | ||
|
|
05c1ef75c4 | ||
|
|
be2f1e59f2 | ||
|
|
75f0a5e36a | ||
|
|
68107fe355 | ||
|
|
477beae3bb | ||
|
|
6689b592ff | ||
|
|
6b6e94da08 | ||
|
|
fc60b554a1 | ||
|
|
bffb0919cc | ||
|
|
e947103b6d | ||
|
|
62051d5171 | ||
|
|
783a6b866b | ||
|
|
2024a6c941 | ||
|
|
37d5c166ca | ||
|
|
060897b25b | ||
|
|
499cc57082 | ||
|
|
b279d19040 | ||
|
|
cb35e84f51 | ||
|
|
511ffa4698 | ||
|
|
7a1da2409d | ||
|
|
cbd3ffe056 | ||
|
|
ec0aa32cd4 | ||
|
|
55679b4389 | ||
|
|
c0b71f8286 | ||
|
|
240b66d737 | ||
|
|
b360feb4c1 | ||
|
|
5fcd614186 | ||
|
|
4be1aa516c | ||
|
|
5e250403d3 | ||
|
|
f8af9c6ad0 | ||
|
|
57994e4a24 | ||
|
|
0540995e5c | ||
|
|
3a0734d94c | ||
|
|
5b7de7705e | ||
|
|
7121afdd44 | ||
|
|
5213650fed | ||
|
|
8204e0e14a | ||
|
|
e741ee2f45 | ||
|
|
0564e8a284 | ||
|
|
966e65bb66 | ||
|
|
896998ef3f | ||
|
|
4abca8614f | ||
|
|
7c0b159a81 | ||
|
|
a8b4d1ac2a | ||
|
|
b933c9d206 | ||
|
|
f45042aa8e | ||
|
|
2ab8bc679f | ||
|
|
2571b0c4e3 | ||
|
|
959a81a41b | ||
|
|
4480b469a6 | ||
|
|
fcfa1252a0 | ||
|
|
e1e2d0b364 | ||
|
|
9815a0911b | ||
|
|
dc5839b6bb | ||
|
|
4373777871 | ||
|
|
415d27c8bf | ||
|
|
5366820a2f | ||
|
|
5f8a27074e | ||
|
|
24ba9fdf6c | ||
|
|
824a0dd63e | ||
|
|
c2d606d587 | ||
|
|
2deaece7e2 | ||
|
|
0d84221b2c | ||
|
|
cdd7e55a88 | ||
|
|
1f5cc071f8 | ||
|
|
625e4c4c72 | ||
|
|
7850a28ec8 | ||
|
|
730d3a6d7c | ||
|
|
d6a44e9990 | ||
|
|
3069b5cf57 | ||
|
|
7873e455bb | ||
|
|
a651b73db0 | ||
|
|
d2ce4960f1 | ||
|
|
1af4ca344e | ||
|
|
fa837b2dfd | ||
|
|
824a71388a | ||
|
|
4585cffce1 | ||
|
|
13046709a9 | ||
|
|
9d221a5e19 | ||
|
|
77aef9ff1d | ||
|
|
503561f464 | ||
|
|
ada9d408ac | ||
|
|
3af65b2f45 | ||
|
|
369e1e6f58 | ||
|
|
fb49413a41 | ||
|
|
42dfde6546 | ||
|
|
c531b4a911 | ||
|
|
e4ed916baa | ||
|
|
4ec977eaba | ||
|
|
74f58f29f9 | ||
|
|
f97607370a | ||
|
|
850492dafa | ||
|
|
61c89a9168 | ||
|
|
49af18fbd6 | ||
|
|
6cd22f3bca | ||
|
|
a2e2f8a8c9 | ||
|
|
27e33fb15c | ||
|
|
55e6123db9 | ||
|
|
c828a5dfdf | ||
|
|
0603359e2d | ||
|
|
bb781764b8 | ||
|
|
29275c7447 | ||
|
|
4c1063e1c5 | ||
|
|
d6b9587a97 | ||
|
|
6fbaabc1bc | ||
|
|
a36117e12d | ||
|
|
e5efd09ebb | ||
|
|
ecc951609d | ||
|
|
063474f408 | ||
|
|
3dfbc348e3 | ||
|
|
9a4b53a212 | ||
|
|
03edfbe6f5 | ||
|
|
3d2cb25a67 | ||
|
|
6df14e50b2 | ||
|
|
008e0efeb0 | ||
|
|
128a66f7fe | ||
|
|
62406991df | ||
|
|
d1173a69f8 | ||
|
|
a0b0809b1c | ||
|
|
4c9ef6e830 | ||
|
|
0c96f0aa51 | ||
|
|
ac73763726 | ||
|
|
5ba19d64e9 | ||
|
|
fefbc43fb0 | ||
|
|
a8b837c4a9 | ||
|
|
02ff6cca70 | ||
|
|
ef47f68e4a | ||
|
|
2ef8b187fa | ||
|
|
b0927c39fb | ||
|
|
d0e0111f88 | ||
|
|
2328944987 | ||
|
|
cb1942c242 | ||
|
|
bf64ff215b | ||
|
|
68c7e68a8a | ||
|
|
91f70d0bd9 | ||
|
|
4669eb24be | ||
|
|
debe5953a8 | ||
|
|
1c7877b048 | ||
|
|
9ca2e2c968 | ||
|
|
f42ef0624d | ||
|
|
64baedb484 | ||
|
|
4638f99aaa | ||
|
|
aebe5fc68c | ||
|
|
1ecf70dca0 | ||
|
|
7c485f8bb8 | ||
|
|
21e9608b23 | ||
|
|
7f1b028840 | ||
|
|
bef83a4d2e | ||
|
|
8cc9e68363 | ||
|
|
d7aada38a1 | ||
|
|
4f69adc8ab | ||
|
|
52da5b16e7 | ||
|
|
11d09a92d0 | ||
|
|
c7eacd1aac | ||
|
|
a126d535cf | ||
|
|
3554a803e7 | ||
|
|
c66cecaa55 | ||
|
|
b37954b966 | ||
|
|
86f90fd9ff | ||
|
|
4c7beb9d7b | ||
|
|
3618a97c20 | ||
|
|
03fdf5e7f8 | ||
|
|
cae73b9a32 | ||
|
|
e34f04380d | ||
|
|
6df77038a2 | ||
|
|
45c0a44411 | ||
|
|
2d869d6831 | ||
|
|
eaa7e9b1f0 | ||
|
|
6e37750fbd | ||
|
|
8fd297f8b4 | ||
|
|
ddf6569dc5 | ||
|
|
97895ec41a | ||
|
|
6d56d5c1f6 | ||
|
|
6c2fa8defc | ||
|
|
c9f1e18df1 | ||
|
|
740fad06c1 | ||
|
|
0665268578 | ||
|
|
c8b9bdebfe | ||
|
|
a587f0d3f1 | ||
|
|
8c51d06222 | ||
|
|
b32a7713e0 | ||
|
|
831c5a93af | ||
|
|
1a8dcae10e | ||
|
|
8219f9e090 | ||
|
|
5ddb601e43 | ||
|
|
5541248264 | ||
|
|
b3cb97f0ad | ||
|
|
e75c33a561 | ||
|
|
483ead55d5 | ||
|
|
d63a5a1c3c | ||
|
|
e0a3307563 | ||
|
|
7f3282ec04 | ||
|
|
b773ebdab1 | ||
|
|
1583283635 | ||
|
|
c87f710d58 | ||
|
|
1568c5cae9 | ||
|
|
a03919c3b3 | ||
|
|
7411bcf167 | ||
|
|
d96f5ba1ca | ||
|
|
d6de96c4b4 | ||
|
|
ffd2f61dd9 | ||
|
|
54b9e1f6d1 | ||
|
|
2721cb8dee | ||
|
|
41bea4cafa | ||
|
|
6f222b49f2 | ||
|
|
8dfe8c773a | ||
|
|
cf645c3ba1 | ||
|
|
e896d1e9d7 | ||
|
|
6dba68f62d | ||
|
|
3d083b758f | ||
|
|
aa5b2db10a | ||
|
|
b73faae0d0 | ||
|
|
4788e1c8c8 | ||
|
|
bf16de50fe | ||
|
|
7e611ffbf3 | ||
|
|
65162a87b6 | ||
|
|
445497cf89 | ||
|
|
fa1af8e47b | ||
|
|
624331472a | ||
|
|
72b7f8a949 | ||
|
|
88c9834ef2 | ||
|
|
d882348f39 | ||
|
|
b6ad7a1e06 | ||
|
|
6f7625fa47 | ||
|
|
de7bc22649 | ||
|
|
52857dc0a6 | ||
|
|
032dd93b2f | ||
|
|
5b18e851d2 | ||
|
|
f01602b570 | ||
|
|
0123498452 | ||
|
|
f55e06d8bf | ||
|
|
b613b11422 | ||
|
|
8efae1cba2 | ||
|
|
bf55b1910f | ||
|
|
71b4480c4a | ||
|
|
b6b1057a18 | ||
|
|
5b98acde2f | ||
|
|
aad6f340b3 | ||
|
|
a1104ab97e | ||
|
|
1ab81b4972 | ||
|
|
06b66216d7 | ||
|
|
cd3eaed335 | ||
|
|
9d80d7def7 | ||
|
|
84ac5ccc8f | ||
|
|
5dfd7abb2b | ||
|
|
24af4b9313 | ||
|
|
6613b8f2e0 | ||
|
|
08c486452f | ||
|
|
a45ac6ab98 | ||
|
|
80a322aaa2 | ||
|
|
82f7875a52 | ||
|
|
4637ddaa7f | ||
|
|
8d2269f762 | ||
|
|
5f03e66489 | ||
|
|
a9c1f1a041 | ||
|
|
49cee773c5 | ||
|
|
c78828ab7c | ||
|
|
e90d3c29ab | ||
|
|
153807f243 | ||
|
|
5db0b56c5b | ||
|
|
404db1ae5b | ||
|
|
02c4b1af71 | ||
|
|
aa11659062 | ||
|
|
d4985fb3aa | ||
|
|
8815511ccb | ||
|
|
40fb4d16ef | ||
|
|
c69f5b07ba | ||
|
|
56c90e212a | ||
|
|
0f14873255 | ||
|
|
0bb7569d46 | ||
|
|
ec57922bb6 | ||
|
|
781d294f49 | ||
|
|
f515af2232 | ||
|
|
fe8191b899 | ||
|
|
4d2cd6703b | ||
|
|
292220c596 | ||
|
|
53f37a6704 | ||
|
|
75c1a82556 | ||
|
|
c5b3777d93 | ||
|
|
678bbf8fe8 | ||
|
|
342607f4a4 | ||
|
|
5f4cdd66fa | ||
|
|
91942e37ff | ||
|
|
60913970dc | ||
|
|
82c42b9ec5 | ||
|
|
2a3d8c25bc | ||
|
|
cee0c51dbb | ||
|
|
fdbbdb706f | ||
|
|
f6dfe23cf8 | ||
|
|
ffd4bf8bf0 | ||
|
|
bb3002b173 | ||
|
|
d4dc54447a | ||
|
|
d109881410 | ||
|
|
d1605952b0 | ||
|
|
2cf1187b32 | ||
|
|
178730266d | ||
|
|
dabfd74622 | ||
|
|
5da0182800 | ||
|
|
ed37439ef7 | ||
|
|
af92f19291 | ||
|
|
86f7f245e4 | ||
|
|
2d690801d1 | ||
|
|
fede54be77 | ||
|
|
85ff82a694 | ||
|
|
c8df92d0eb | ||
|
|
144d30d7ef | ||
|
|
4313d92e6b | ||
|
|
0695543f63 | ||
|
|
0bec6a037c | ||
|
|
3ff9a1f24a | ||
|
|
a771eea4f6 | ||
|
|
61a0ca9e0d | ||
|
|
551b33c8e5 | ||
|
|
fa34b9aed6 | ||
|
|
bbb609179f | ||
|
|
a27d4d58ec | ||
|
|
50d92f0fd4 | ||
|
|
a15791e788 | ||
|
|
954580a4af | ||
|
|
ab7d79275e | ||
|
|
d3658166fb | ||
|
|
54b72bdd0a | ||
|
|
d28446301f | ||
|
|
9050f92e5b | ||
|
|
feefeb44d7 | ||
|
|
d542b15cc0 | ||
|
|
2d7954c7da | ||
|
|
b1918dae5e | ||
|
|
031a0b576d | ||
|
|
0cef25ef8c | ||
|
|
cdb08be951 | ||
|
|
900fd82a92 | ||
|
|
44f963f281 | ||
|
|
01858e1caf | ||
|
|
2060db8e11 | ||
|
|
9ded063417 | ||
|
|
d72da2777c | ||
|
|
89aede80cc | ||
|
|
e0d3cd91c6 | ||
|
|
1a054ac1f4 | ||
|
|
3230f4a0ec | ||
|
|
dadca0f91a | ||
|
|
d489b8b3e0 | ||
|
|
bd0992275c | ||
|
|
3e7597f2bd | ||
|
|
0e71f6db84 | ||
|
|
f6b9982c23 | ||
|
|
fb113a9479 | ||
|
|
15791510c8 | ||
|
|
0f72a8e89d | ||
|
|
14af87527f | ||
|
|
83e84865be | ||
|
|
c2a3c5a748 | ||
|
|
83494cb4f5 | ||
|
|
0bc19c3fbf | ||
|
|
571415d1a4 | ||
|
|
7b2cf8215f | ||
|
|
fee4d3f6ca | ||
|
|
161cc0cda9 | ||
|
|
71bff9fcf3 | ||
|
|
80d14c9b22 | ||
|
|
c5bdf08558 | ||
|
|
596f160a1e | ||
|
|
d8b6c053a2 | ||
|
|
4b262cae58 | ||
|
|
1a5116cba0 | ||
|
|
01581dd35f | ||
|
|
7fdd964379 | ||
|
|
0cfcc97e9d | ||
|
|
8986be0aab | ||
|
|
f76bbbf5e6 | ||
|
|
fe217da05c | ||
|
|
80aa7c4019 | ||
|
|
6f33351eb3 | ||
|
|
35f13c7327 | ||
|
|
a8b9e01b3e | ||
|
|
7193e189f3 | ||
|
|
3f2a806abe | ||
|
|
5e4907e940 | ||
|
|
bf63c5d1e3 | ||
|
|
78989e9049 | ||
|
|
1510bdbcf6 | ||
|
|
024d688b77 | ||
|
|
ef82a29e23 | ||
|
|
1f56a20b62 | ||
|
|
0c2a62f847 | ||
|
|
ea748b50f2 | ||
|
|
62bfc4dba6 | ||
|
|
ceb2b150ff | ||
|
|
dc015c380a | ||
|
|
c9e0f0bf20 | ||
|
|
bd6d4d0553 | ||
|
|
f0273f00e1 | ||
|
|
962cdbbebd | ||
|
|
2c51e3a327 | ||
|
|
8e311cc45c | ||
|
|
c441bea4d1 | ||
|
|
ad30668eb6 | ||
|
|
62f4801523 | ||
|
|
ec1408346e | ||
|
|
0e0a703496 | ||
|
|
54b693d5b1 | ||
|
|
1262277714 | ||
|
|
3a67fc6c5a | ||
|
|
26abbe8e5b | ||
|
|
5d0914daea | ||
|
|
7541a492b7 | ||
|
|
3a071b8db9 | ||
|
|
9342b4b951 | ||
|
|
4682e0ac7c | ||
|
|
7cfebffbb8 | ||
|
|
693fe912f2 | ||
|
|
bc3a8e0ca2 | ||
|
|
e38334cfd2 | ||
|
|
92cab33b73 | ||
|
|
3f467613fc | ||
|
|
205d33a813 | ||
|
|
da326baa5e | ||
|
|
d9198b5646 | ||
|
|
60001a62c4 | ||
|
|
ee7d5e7206 | ||
|
|
2726fb3d5d | ||
|
|
d7aa4076c9 | ||
|
|
122ce41020 | ||
|
|
e7afee1176 | ||
|
|
88730906ec | ||
|
|
a15080a1d7 | ||
|
|
35431bce0d | ||
|
|
7b7576ad55 | ||
|
|
162faee4f2 | ||
|
|
b7ff98d7ff | ||
|
|
0474f0c906 | ||
|
|
430e100142 | ||
|
|
1473083a41 | ||
|
|
7cda73f192 | ||
|
|
7c2bb31a55 | ||
|
|
ba82023445 | ||
|
|
13be84e4d4 | ||
|
|
7ae728a9a3 | ||
|
|
a7743a4f47 | ||
|
|
103ff28530 | ||
|
|
8dfdb37de3 | ||
|
|
17fd773a30 | ||
|
|
979422cdc6 | ||
|
|
3be756eaed | ||
|
|
1ba3d3acd6 | ||
|
|
23cedc3f1c | ||
|
|
741c548f3c | ||
|
|
556f4ad5df | ||
|
|
561a61e7fe | ||
|
|
47919983bf | ||
|
|
efc136cce5 | ||
|
|
b035c02f78 | ||
|
|
2da63654e5 | ||
|
|
3ace01cfb3 | ||
|
|
e3d7c7c6f9 | ||
|
|
8807d880dc | ||
|
|
70d6ab0bf5 | ||
|
|
e42848f4b7 | ||
|
|
25386af41a | ||
|
|
f29685f8a1 | ||
|
|
ad13011043 | ||
|
|
df69ad9f0e | ||
|
|
9864b35465 | ||
|
|
6025002971 | ||
|
|
0c38a8fdd4 | ||
|
|
fb75bd9790 | ||
|
|
399d7cd596 | ||
|
|
0a7ab9a47d | ||
|
|
9618f86980 | ||
|
|
a71fc18530 | ||
|
|
3ac8a2871e | ||
|
|
a24717765e | ||
|
|
a40073afa4 | ||
|
|
e6b117e33f | ||
|
|
3e6a6bf396 | ||
|
|
931e6f1625 | ||
|
|
4ce47284dc | ||
|
|
f5dcc6092b | ||
|
|
fef4e09dfc | ||
|
|
60ef7ba855 | ||
|
|
6f968bafb2 | ||
|
|
9f6aab11d4 | ||
|
|
0006c6f0fd | ||
|
|
2c427e04be | ||
|
|
f53454f81d | ||
|
|
784b11ce19 | ||
|
|
715eb8fa32 | ||
|
|
a02118d5bc | ||
|
|
85fc0fdb51 | ||
|
|
f7af8c7cc7 | ||
|
|
0c99a3d0c5 | ||
|
|
66dfb5c89a | ||
|
|
6435b4eb44 | ||
|
|
4e7b6aec3a | ||
|
|
6c25d7bed3 | ||
|
|
028fd52c9b | ||
|
|
9a715f6b68 | ||
|
|
8c32f8c77d | ||
|
|
b7778de224 | ||
|
|
c70d69322b | ||
|
|
e35e251863 | ||
|
|
eae53e11e6 | ||
|
|
4f5f27cf2b | ||
|
|
5e42e90abc | ||
|
|
a10b207de2 | ||
|
|
e2d214e030 | ||
|
|
4f64a5d36d | ||
|
|
0d4753785f | ||
|
|
2e9084f369 | ||
|
|
0f90e6df75 | ||
|
|
53146ad685 | ||
|
|
0223fc6fd5 | ||
|
|
218380ba43 | ||
|
|
afd23f7ad8 | ||
|
|
6991a243aa | ||
|
|
1f944c6eeb | ||
|
|
31f9977411 | ||
|
|
3d27d15f00 | ||
|
|
ab6499e5b7 | ||
|
|
4ff4859036 | ||
|
|
53cf756207 | ||
|
|
0087afc2e3 | ||
|
|
bd07e1d2fd | ||
|
|
8b06105fa1 | ||
|
|
68dc6d5bc3 | ||
|
|
acd72e3ab2 | ||
|
|
bbb6fcc4f0 | ||
|
|
fbf31b5d52 | ||
|
|
a0c689c273 | ||
|
|
bfd905602f | ||
|
|
a0a67873aa | ||
|
|
6cd8ab0cbc | ||
|
|
5350b1d938 | ||
|
|
baaa3f7f42 | ||
|
|
4d4af00399 | ||
|
|
3a33062405 | ||
|
|
7d4a0a417a | ||
|
|
5a729a69cd | ||
|
|
dbc1ae45de | ||
|
|
9e6b755f62 | ||
|
|
a2fafee53a | ||
|
|
c7df6783df | ||
|
|
fcb6921b57 | ||
|
|
135dcfa3e5 | ||
|
|
acfab01dcf | ||
|
|
6fdbc7dbf3 | ||
|
|
d1a6702aa4 | ||
|
|
28944ef6c1 | ||
|
|
6e7f5fae09 | ||
|
|
ed85d8281a | ||
|
|
f3d3a3a5db | ||
|
|
c89697c49c | ||
|
|
9414143b5f | ||
|
|
d07b2b9915 | ||
|
|
04131f86df | ||
|
|
2d89b7d0a9 | ||
|
|
603a89055c | ||
|
|
3f9720bca0 | ||
|
|
7619850855 | ||
|
|
3571292fbf | ||
|
|
8f16165f92 | ||
|
|
6ff7fd80a1 | ||
|
|
5aa373dc04 | ||
|
|
32dc963556 | ||
|
|
8f5d8397f9 | ||
|
|
681ec6f845 | ||
|
|
d2ccd8ba53 | ||
|
|
7f67cb93ec | ||
|
|
d29b32fce2 | ||
|
|
101db126c8 | ||
|
|
ba79088ffc | ||
|
|
3a27166c2e | ||
|
|
429e85f5d6 | ||
|
|
b5d472fad7 | ||
|
|
52383d0161 | ||
|
|
48d2febebf | ||
|
|
ca085034de | ||
|
|
f6c12b10ac | ||
|
|
5b77ef01d4 | ||
|
|
5d85fad522 | ||
|
|
2fe2e350ce | ||
|
|
986fd5bfc6 | ||
|
|
f104b930cf | ||
|
|
4423710a13 | ||
|
|
9381c08c43 | ||
|
|
0f59d76997 | ||
|
|
b3743a9ae5 | ||
|
|
13d061911b | ||
|
|
935e72d449 | ||
|
|
8b55bd5828 | ||
|
|
a12ddc47e7 | ||
|
|
57ce8449b0 | ||
|
|
67b9fdaad7 | ||
|
|
f9cf418f0f | ||
|
|
dfa7fe1289 | ||
|
|
d2471cf6f9 | ||
|
|
a68df696ec | ||
|
|
4b93df5a30 | ||
|
|
12dd3c0277 | ||
|
|
ccb6ddd840 | ||
|
|
c48584fbb1 | ||
|
|
f2cb1fb09f | ||
|
|
ac60182c91 | ||
|
|
700d37be8d | ||
|
|
8b5761efb2 | ||
|
|
ef4d85f5c0 | ||
|
|
5b32f2e0dd | ||
|
|
4cbeb6815b | ||
|
|
2c188a45c8 | ||
|
|
d338f69837 | ||
|
|
7ebad74372 | ||
|
|
e2a13a9945 | ||
|
|
c6b0dc6a29 | ||
|
|
f667ef98cb | ||
|
|
425174e82f | ||
|
|
7201b56a6d | ||
|
|
34cab0e0b7 | ||
|
|
4dfa8eedb8 | ||
|
|
633808de06 | ||
|
|
f4591f97aa | ||
|
|
07511dfaf4 | ||
|
|
7944ce0594 | ||
|
|
ad682c394d | ||
|
|
7210613551 | ||
|
|
83acb53c08 | ||
|
|
a7162240e6 | ||
|
|
12095f8cd6 | ||
|
|
925f0d2e09 | ||
|
|
b6d206e095 | ||
|
|
5542ee4d0d | ||
|
|
4ffa706e4f | ||
|
|
169cde6c3c | ||
|
|
34a9dbe826 | ||
|
|
8e23e24bd5 | ||
|
|
f288d367ac | ||
|
|
5e2fa13126 | ||
|
|
1571a8afd4 | ||
|
|
67a2f14cef | ||
|
|
a0d5b61c2a | ||
|
|
d7bb422a5c | ||
|
|
40c6f3c724 | ||
|
|
df8f8c9a2c | ||
|
|
536c43257b | ||
|
|
4e8f6b3603 | ||
|
|
80c94f02e9 | ||
|
|
aad02113c6 | ||
|
|
72c75b75cf | ||
|
|
ffa992acf7 | ||
|
|
99b78dd198 | ||
|
|
7f81a86e9e | ||
|
|
4c4f6e362f | ||
|
|
1a302ca957 | ||
|
|
11f9d2f124 | ||
|
|
a93bc83c8d | ||
|
|
3516989738 | ||
|
|
26991443ed | ||
|
|
eece50acec | ||
|
|
28d4e5b045 | ||
|
|
c110888aee | ||
|
|
c53875ce8c | ||
|
|
7f18c06b0a | ||
|
|
96dcf0fe8a | ||
|
|
0c22e4e3d1 | ||
|
|
bd3ed89516 | ||
|
|
1c043b8426 | ||
|
|
23ed15d19f | ||
|
|
312d905c9b | ||
|
|
cba9319cc7 | ||
|
|
d839f1ada7 | ||
|
|
6da14c2d48 | ||
|
|
a34285196b | ||
|
|
e4587b2151 | ||
|
|
ea30174057 | ||
|
|
dd676866aa | ||
|
|
f0d10553b4 | ||
|
|
ef616c604a | ||
|
|
2288efbf48 | ||
|
|
f656e1bae2 | ||
|
|
5a7fc8cd8c | ||
|
|
141e4e0276 | ||
|
|
20d3e1d297 | ||
|
|
79715345ef | ||
|
|
dff3f41ef6 | ||
|
|
5e634a59a2 | ||
|
|
26e46d365c | ||
|
|
bcd7c8e921 | ||
|
|
70283f5b9f | ||
|
|
2e941bb91c | ||
|
|
541bf1db5a | ||
|
|
048bc4c06e | ||
|
|
4d0a6cc382 | ||
|
|
6feea0d75b | ||
|
|
f97a51ce24 | ||
|
|
df530b53e5 | ||
|
|
6aa02f8c63 | ||
|
|
7ab04e17e7 | ||
|
|
bf3f1027c8 | ||
|
|
62cc4077bb | ||
|
|
e683461416 | ||
|
|
33dab4fe54 | ||
|
|
8166a8caf5 | ||
|
|
44801df8f8 | ||
|
|
56af1a0adf | ||
|
|
f8617db012 | ||
|
|
2ab9af3b38 | ||
|
|
24a89f7753 | ||
|
|
cc4785f094 | ||
|
|
093f902335 | ||
|
|
104c797dd0 | ||
|
|
a9cd6df97e | ||
|
|
f31142e758 | ||
|
|
9ae88ede12 | ||
|
|
792f908afb | ||
|
|
29e3c3061c | ||
|
|
14367ddc09 | ||
|
|
8157fccf6d | ||
|
|
cbf7f21ade | ||
|
|
9c4f3be0f3 | ||
|
|
f6e8e120a1 | ||
|
|
08f922d8c9 | ||
|
|
e9d6a43907 | ||
|
|
feb4576ee7 | ||
|
|
56b43f62d1 | ||
|
|
4b410494b3 | ||
|
|
13f5867a16 | ||
|
|
df9bd36cab | ||
|
|
77c071e26f | ||
|
|
af76381b98 | ||
|
|
35d0534eb9 | ||
|
|
4be12b29b9 | ||
|
|
dd64e65ea0 | ||
|
|
c23aa50bea | ||
|
|
8eb0d0fddd | ||
|
|
8904745129 | ||
|
|
936ac8826d | ||
|
|
545d3c5a93 | ||
|
|
3c371a6cb0 | ||
|
|
9ce5cea911 | ||
|
|
98d9837fbc | ||
|
|
53a89bbbc7 | ||
|
|
0a744a73b3 | ||
|
|
0675c5f716 | ||
|
|
72963d1f13 | ||
|
|
028261f760 | ||
|
|
a98284b1ef | ||
|
|
daa31b2cb3 | ||
|
|
b414ea41d6 | ||
|
|
f78d0082ae | ||
|
|
3e18d32ce5 | ||
|
|
94d68b6a08 | ||
|
|
c9ff0e3961 | ||
|
|
8dd68e2034 | ||
|
|
2cd662c43b | ||
|
|
4945184f8c | ||
|
|
cb01bf2986 | ||
|
|
f43e27814c | ||
|
|
20268708cc | ||
|
|
c8da4a1b7e | ||
|
|
829472a1d7 | ||
|
|
e23461c837 | ||
|
|
21f6caacd4 | ||
|
|
082c46a903 | ||
|
|
6a3bef8378 | ||
|
|
b6c3010f02 | ||
|
|
90d2c01218 | ||
|
|
83af50368f | ||
|
|
cf258b7a67 | ||
|
|
5d77dc4f58 | ||
|
|
e4542215cc | ||
|
|
3d3677e912 | ||
|
|
427f48be6b | ||
|
|
c6996a48a4 | ||
|
|
6b50bb0fe6 | ||
|
|
80b3871c55 | ||
|
|
4839523e53 | ||
|
|
ecb9c311b5 | ||
|
|
bd97ce9489 | ||
|
|
79cb23e8ac | ||
|
|
c5ac004f15 | ||
|
|
5fbfa0f2c8 | ||
|
|
78a339a794 | ||
|
|
f904df4b63 | ||
|
|
5e4ac11df3 | ||
|
|
16b4f560cd | ||
|
|
75e6576c67 | ||
|
|
0b4c26578e | ||
|
|
ebcc07e3e9 | ||
|
|
55c2b61921 | ||
|
|
ca696fe94c | ||
|
|
585444c50c | ||
|
|
9815aab7a3 | ||
|
|
349ec0db77 | ||
|
|
a876baf0a9 | ||
|
|
91fd8521c3 | ||
|
|
4ec9a87e46 | ||
|
|
fb5e3662d5 | ||
|
|
31efe10c75 | ||
|
|
72bc9d5f2b | ||
|
|
600f13436d | ||
|
|
b347a2f839 | ||
|
|
47b5bd7243 | ||
|
|
d4c55748f1 | ||
|
|
0625db0bf5 | ||
|
|
05141ede16 | ||
|
|
c112188207 | ||
|
|
5af2df0cd5 | ||
|
|
f324374b95 | ||
|
|
2aad128883 | ||
|
|
3c78fdec1c | ||
|
|
6fe9aa69cc | ||
|
|
e4bb943fe5 | ||
|
|
0fb741f269 | ||
|
|
4c85393a1d | ||
|
|
d5c2680fde | ||
|
|
49729647ea | ||
|
|
85a883e281 | ||
|
|
8123a00e97 | ||
|
|
0f6a064c08 | ||
|
|
2bc0632d0d | ||
|
|
75445a0c66 | ||
|
|
6a9d202414 | ||
|
|
ad7552ea8d | ||
|
|
c0ada940bd | ||
|
|
1690788827 | ||
|
|
7c55c39085 | ||
|
|
f17d4fe412 | ||
|
|
f019bc4bd7 | ||
|
|
cfc408095c | ||
|
|
6b5fac3004 | ||
|
|
0569c547ee | ||
|
|
06fc1bce9e | ||
|
|
093b8ca475 | ||
|
|
5fcc2caeed | ||
|
|
f30a51e673 | ||
|
|
642723d09e | ||
|
|
155e708540 | ||
|
|
d726473c6d | ||
|
|
e80412df23 | ||
|
|
66765acf00 | ||
|
|
7208ea1da9 | ||
|
|
5e2f3ec6f0 | ||
|
|
cd7fa8027a | ||
|
|
617847e3c0 | ||
|
|
71a7211411 | ||
|
|
dc7335cdf8 | ||
|
|
a7c1e4c7ae | ||
|
|
87594008f8 | ||
|
|
5e6fc58db3 | ||
|
|
87d583f454 | ||
|
|
a67831773f | ||
|
|
5b89b6fe2d | ||
|
|
a6350daa02 | ||
|
|
dfb6f4fec6 | ||
|
|
f38034e455 | ||
|
|
c57b3931d5 | ||
|
|
f73a3a58ae | ||
|
|
1e0e573165 | ||
|
|
27e08a8e2e | ||
|
|
49ef9ef225 | ||
|
|
c013086e64 | ||
|
|
48f872a68c | ||
|
|
4f9f175f25 | ||
|
|
47e5dc218a | ||
|
|
90372932fe | ||
|
|
0bb2b285da | ||
|
|
3da854fe40 | ||
|
|
57729823a0 | ||
|
|
9e168f9d1c | ||
|
|
ea45496a74 | ||
|
|
a5fcd91ba5 | ||
|
|
2ba05b041f | ||
|
|
8e49146a35 | ||
|
|
dad3fd2dc1 | ||
|
|
284ef52bba | ||
|
|
e493ce9981 | ||
|
|
7b45a5d452 | ||
|
|
4a026fa352 | ||
|
|
dc847ba145 | ||
|
|
c0ec40e483 | ||
|
|
929c22a4e8 | ||
|
|
ba181197c2 | ||
|
|
218930c897 | ||
|
|
c8f5dfcf17 | ||
|
|
27c8deb4ec | ||
|
|
4ae4895ebe | ||
|
|
afe95fa780 | ||
|
|
166a40c66e | ||
|
|
588615b20e | ||
|
|
d5dca46854 | ||
|
|
23e5eeec00 | ||
|
|
287b42997d | ||
|
|
5236cb1888 | ||
|
|
3b5b548af3 | ||
|
|
4782fb50c4 | ||
|
|
f55876bcc5 | ||
|
|
8a80af39c9 | ||
|
|
35f4a264d6 | ||
|
|
6c798cbdaf | ||
|
|
279f1c986f | ||
|
|
443e96777b | ||
|
|
65bc4e0fc0 | ||
|
|
a6dbd26f75 | ||
|
|
f3f052ba36 | ||
|
|
1bc90b992b | ||
|
|
fc37887a21 | ||
|
|
984658f5e9 | ||
|
|
4ed1476531 | ||
|
|
ca69e1a2f5 | ||
|
|
20f73cb756 | ||
|
|
4e2fba404d | ||
|
|
7943f7f697 | ||
|
|
7c397f5722 | ||
|
|
06fcc0c650 | ||
|
|
0de224b153 | ||
|
|
ed9e692263 | ||
|
|
cc0c826f36 | ||
|
|
0099ef6896 | ||
|
|
55d7374ab7 | ||
|
|
988aa4b5da | ||
|
|
c5d06e7943 | ||
|
|
23e8043160 | ||
|
|
d66d7146a3 | ||
|
|
eabfd84ceb | ||
|
|
d320d1468d | ||
|
|
b47fa27a35 | ||
|
|
68ad9a91b2 | ||
|
|
c17a4165c1 | ||
|
|
96c171805a | ||
|
|
9a536979ab | ||
|
|
46a5294d94 | ||
|
|
ec181649ae | ||
|
|
4fdcb30ff8 | ||
|
|
07add06c59 | ||
|
|
a7b33b55e8 | ||
|
|
0cbbaf3f68 | ||
|
|
c564f32ab6 | ||
|
|
7c2c949f01 | ||
|
|
066168da52 | ||
|
|
1df71ec64d | ||
|
|
a9ee52f2d7 | ||
|
|
7b225a5ab0 | ||
|
|
d7a6f25c63 | ||
|
|
f46792334c | ||
|
|
ee3936916f | ||
|
|
109de52fe2 | ||
|
|
10dd0f3fa0 | ||
|
|
2f064c68bc | ||
|
|
079583eaa4 | ||
|
|
0e82072323 | ||
|
|
678ad6b7eb | ||
|
|
63e34e5227 | ||
|
|
c606295ea6 | ||
|
|
27d72e30ad | ||
|
|
5660878f7b | ||
|
|
12e55b2cac | ||
|
|
97e094dfd8 | ||
|
|
9622fbb62f | ||
|
|
cc8dc6d35e | ||
|
|
215661ef91 | ||
|
|
5a3e09518c | ||
|
|
ebba124c5c | ||
|
|
a62325ac87 | ||
|
|
1d2ab2126c | ||
|
|
b07dea836c | ||
|
|
f9d00e0498 | ||
|
|
757ceda063 | ||
|
|
d27e3ab99d | ||
|
|
ce930f19b9 | ||
|
|
3b14939d66 | ||
|
|
279caf033c | ||
|
|
eff280f3e7 | ||
|
|
7c70eb87bc | ||
|
|
6ef401a9f0 | ||
|
|
b29a36f461 | ||
|
|
17f22347ae | ||
|
|
22aaf8960b | ||
|
|
0046ef7707 | ||
|
|
68b1d063f7 | ||
|
|
5e6c3001bd | ||
|
|
7ed4e963aa | ||
|
|
001d868cbd | ||
|
|
6610b4cee5 | ||
|
|
cbbe28f40d | ||
|
|
603187393a | ||
|
|
411e938e3b | ||
|
|
610da4f662 | ||
|
|
3ec80f9dda | ||
|
|
91c5818236 | ||
|
|
c436454cd4 | ||
|
|
a877d4831d | ||
|
|
d522308a29 | ||
|
|
85744b72e5 | ||
|
|
f0b7051e1a | ||
|
|
3b23d6764f | ||
|
|
9b7c74a5d9 | ||
|
|
4d105d7bd7 | ||
|
|
eee779a923 | ||
|
|
ab847c81fa | ||
|
|
b217ee414f | ||
|
|
23dc6edb99 | ||
|
|
79df8825c8 | ||
|
|
71c50b7e20 | ||
|
|
af98fd29bf | ||
|
|
cddea83e65 | ||
|
|
9f16739518 | ||
|
|
3f0da88ff7 | ||
|
|
cc63af8e72 | ||
|
|
bf2268b0af | ||
|
|
00b4cc3cd4 | ||
|
|
f546db5437 | ||
|
|
f8aaa57f31 | ||
|
|
cabcf94be3 | ||
|
|
2d6624cf9e | ||
|
|
02982df0d4 | ||
|
|
421a24c38d | ||
|
|
d7f75d17cc | ||
|
|
5d9ad430af | ||
|
|
46eca01fa3 | ||
|
|
4d9c22bfc6 | ||
|
|
52e59cf4df | ||
|
|
688b8fe114 | ||
|
|
aecdfa2d5c | ||
|
|
cb8feb732f | ||
|
|
c490bdfbf9 | ||
|
|
e7494d632c | ||
|
|
e3006f98c9 | ||
|
|
b34baf1e3a | ||
|
|
372dc7ac1a | ||
|
|
66a62e6c13 | ||
|
|
04c0a9ad45 | ||
|
|
0944ca9d91 | ||
|
|
d468f8b75c | ||
|
|
6e256507d3 | ||
|
|
a33ce09e6e | ||
|
|
9f973bb703 | ||
|
|
6d0a605c5f | ||
|
|
a948bf6ee8 | ||
|
|
b8999e367a | ||
|
|
59ad091e69 | ||
|
|
598e030a7e | ||
|
|
774a17cedf | ||
|
|
d889e1b233 | ||
|
|
32d85fb896 | ||
|
|
af308b99a3 | ||
|
|
49d9c60a53 | ||
|
|
ed83df972f | ||
|
|
3124728e03 | ||
|
|
af469ea5bd | ||
|
|
2a27568537 | ||
|
|
1d3e96ffa6 | ||
|
|
b7b1396c51 | ||
|
|
71bcf75d9a | ||
|
|
850c2273ee | ||
|
|
78d41a27cc | ||
|
|
0f8625cac2 | ||
|
|
cb09dbef66 | ||
|
|
5692f9b33b | ||
|
|
fdfbbde10d | ||
|
|
a27462d58b | ||
|
|
91da622df5 | ||
|
|
373b5047fd | ||
|
|
36610b6acf | ||
|
|
eab0ac3a13 | ||
|
|
f637ae4794 | ||
|
|
ffb07eb24b | ||
|
|
f101fcd0e7 | ||
|
|
fc0f75d13b | ||
|
|
1e045a0187 | ||
|
|
cdf64d4ee2 | ||
|
|
8fd75e6965 | ||
|
|
0b8faade6f | ||
|
|
d56cedfc67 | ||
|
|
906857b28a | ||
|
|
9513155fa4 | ||
|
|
a6356be348 | ||
|
|
f33ef92f0c | ||
|
|
d435230059 | ||
|
|
6d0cea5fe6 | ||
|
|
2996358cf2 | ||
|
|
0bf4817474 | ||
|
|
8e5569f773 | ||
|
|
d30c13891b | ||
|
|
a2c260fba0 | ||
|
|
017d2c804b | ||
|
|
b5efc79bc5 | ||
|
|
e2037cf22b | ||
|
|
68ac433218 | ||
|
|
b7d23408ad | ||
|
|
488e3c3d56 | ||
|
|
dd5f3873da | ||
|
|
73ce945d40 | ||
|
|
d37ee498cd | ||
|
|
b3d6726f65 | ||
|
|
f9e4b4e74c | ||
|
|
2b080b5cfc | ||
|
|
e8b8f6c6dd | ||
|
|
f0ea540b34 | ||
|
|
2a13ef9ae0 | ||
|
|
91e6ef8655 | ||
|
|
2119d59da8 | ||
|
|
3ccad33194 | ||
|
|
bafc8a0bde | ||
|
|
92c56fdf2b | ||
|
|
dcb72e0067 | ||
|
|
2e718b85e9 | ||
|
|
17d2f0bb0d | ||
|
|
0dfdb61ee9 | ||
|
|
8d9a459083 | ||
|
|
89a7c70730 | ||
|
|
e1a72e0e2b | ||
|
|
4c0a31d38b | ||
|
|
8fa6cb5e03 | ||
|
|
4e2de638af | ||
|
|
31a061ebaa | ||
|
|
f7234c93af | ||
|
|
b7d5849191 | ||
|
|
af9448e6f2 | ||
|
|
d0fe56a98e | ||
|
|
b8926ea267 | ||
|
|
43335b5c87 | ||
|
|
af6e3869ff | ||
|
|
964f0e1400 | ||
|
|
b2e2298822 | ||
|
|
87ee3e627f | ||
|
|
45a3ea6fed | ||
|
|
7c9e88dfb3 | ||
|
|
2a0f03a511 | ||
|
|
ec1d3ddee2 | ||
|
|
cdc2a6f637 | ||
|
|
023dba9475 | ||
|
|
f8d97be932 | ||
|
|
0c352eef2d | ||
|
|
877a2c144b | ||
|
|
f7900f298f | ||
|
|
1e28a8c033 | ||
|
|
ba67206bb9 | ||
|
|
41ceb6a4eb | ||
|
|
13fcd7a901 | ||
|
|
756d9a4bc2 | ||
|
|
4a031de0d9 | ||
|
|
54b8d98cde | ||
|
|
f220d294e0 | ||
|
|
8294e97113 | ||
|
|
47a5d4527b | ||
|
|
dcec9d7bb7 | ||
|
|
ea29007bc0 | ||
|
|
3a626cd251 | ||
|
|
e9ce0b10de | ||
|
|
c5d64baba4 | ||
|
|
29ca6815ae | ||
|
|
5217f7cf69 | ||
|
|
57063095c1 | ||
|
|
48757e581e | ||
|
|
e8ad0339a3 | ||
|
|
3bbd75f1f2 | ||
|
|
f67b164b0d | ||
|
|
b05cc3a1e4 | ||
|
|
8890978ad3 | ||
|
|
9a5c423d59 | ||
|
|
6a09409ec9 | ||
|
|
27f0ae8416 | ||
|
|
91d38a535f | ||
|
|
95c882934e | ||
|
|
e88f5607ac | ||
|
|
5d4d65a85b | ||
|
|
92ddb410cd | ||
|
|
1336b844fd | ||
|
|
26b6fd2236 | ||
|
|
ff0f02d809 | ||
|
|
b04715d48c | ||
|
|
da68ea6812 | ||
|
|
7e3f194031 | ||
|
|
65d34ebb96 | ||
|
|
142dc0afd7 | ||
|
|
39c14ec7c1 | ||
|
|
0d20df9a51 | ||
|
|
3db110c0b9 | ||
|
|
23fa3dedc4 | ||
|
|
e4259a8f13 | ||
|
|
51d34f5936 | ||
|
|
a51ec2094f | ||
|
|
940c2faea1 | ||
|
|
aed56b1a8f | ||
|
|
a88aa20824 | ||
|
|
2328ed8ffa | ||
|
|
0105129fa8 | ||
|
|
b78faa461f | ||
|
|
b1db581ebe | ||
|
|
e05183c7d2 | ||
|
|
c923684edd | ||
|
|
9d5a89eab6 | ||
|
|
bdf3ea4369 | ||
|
|
4c37847ea4 | ||
|
|
a3bd5eba02 | ||
|
|
bb33ffc332 | ||
|
|
3cc6093e4b | ||
|
|
d160d1ed02 | ||
|
|
a651e7e2da | ||
|
|
e785cbb81d | ||
|
|
2b0c779173 | ||
|
|
a965d1ac98 | ||
|
|
0e3113b7ce | ||
|
|
fad36d0cfd | ||
|
|
7d5ebbb611 | ||
|
|
85eee0dfbb | ||
|
|
369a395ee9 | ||
|
|
4e3d76a1d1 | ||
|
|
7450b9acf3 | ||
|
|
c7d378555a | ||
|
|
5f0ce5811a | ||
|
|
9b7fdadce4 | ||
|
|
132f5fb3de | ||
|
|
3828d4cd22 | ||
|
|
c7641be093 | ||
|
|
8266842809 | ||
|
|
d7213b12cc | ||
|
|
c163521b9e | ||
|
|
7305713b97 | ||
|
|
edffa5666d | ||
|
|
54756cd3b2 | ||
|
|
b73ec87afc | ||
|
|
61f4f08744 | ||
|
|
07387e9586 | ||
|
|
147a39b984 | ||
|
|
7a758a35fe | ||
|
|
f146bebe5a | ||
|
|
be3512aa57 | ||
|
|
cc4a4ec796 | ||
|
|
a1d8c86ee3 | ||
|
|
61ebcd8adb | ||
|
|
24282236f0 | ||
|
|
5a99aeb864 | ||
|
|
e95f8fa3dc | ||
|
|
9a64aa76c1 | ||
|
|
42029791e4 | ||
|
|
4f60fe7bc6 | ||
|
|
baf5490504 | ||
|
|
013bffc161 | ||
|
|
c03e6ee41b | ||
|
|
d94279ae75 | ||
|
|
3a423e8ce7 | ||
|
|
37c87164dc | ||
|
|
4b54843ed7 | ||
|
|
ef55d0da78 | ||
|
|
9961cdd7c8 | ||
|
|
2e842333b1 | ||
|
|
6ccde0452a | ||
|
|
795714bc2f | ||
|
|
d9bee03ff6 | ||
|
|
4f0488abb5 | ||
|
|
12c815c597 | ||
|
|
d098bdc59b | ||
|
|
ba5f8afaa8 | ||
|
|
918ebe1620 | ||
|
|
6be0027853 | ||
|
|
bc757f1ddc | ||
|
|
8da035aac6 | ||
|
|
ef6034abfd | ||
|
|
0391282b5e | ||
|
|
28554350de | ||
|
|
8d1386df0f | ||
|
|
e7752e8135 | ||
|
|
43c19007e0 | ||
|
|
c6b791d070 | ||
|
|
8bcc5a36bb | ||
|
|
cdb6c801c1 | ||
|
|
511ead4b8d | ||
|
|
4080f7b8ad | ||
|
|
9ed21737d5 | ||
|
|
337bad8525 | ||
|
|
0f35d07052 | ||
|
|
7f44e88eda | ||
|
|
b7ff765d8d | ||
|
|
c28d709d7f | ||
|
|
d7fbae286a | ||
|
|
0633aae7dc | ||
|
|
f87f11e92c | ||
|
|
2b04388361 | ||
|
|
3c0f21d174 | ||
|
|
8e2f8ffb9e | ||
|
|
e68d1b88de | ||
|
|
ed53ef29f4 | ||
|
|
4289f17be2 | ||
|
|
54e02b8147 | ||
|
|
7f98c2ea3f | ||
|
|
7189a4c379 | ||
|
|
415022aa14 | ||
|
|
edf2047f04 | ||
|
|
b85ae146a7 | ||
|
|
5ec7d85629 | ||
|
|
f13af5a811 | ||
|
|
f976740b57 | ||
|
|
e8afc416dd | ||
|
|
0cccf9c67d | ||
|
|
cdc08a434f | ||
|
|
3f18369ad2 | ||
|
|
db976a1f74 | ||
|
|
e61f5d029a | ||
|
|
eaca892c4e | ||
|
|
015c26d303 | ||
|
|
8210637bc5 | ||
|
|
790543131a | ||
|
|
a40f68cf94 | ||
|
|
adc948e87c | ||
|
|
742b08e1d5 | ||
|
|
79e8489942 | ||
|
|
d6fa130cb5 | ||
|
|
0c92f81efc | ||
|
|
11fd4a5dcc | ||
|
|
b399e8a359 | ||
|
|
e04fc9b304 | ||
|
|
ea69dc2a7e | ||
|
|
ecc7f130b4 | ||
|
|
95443bd551 | ||
|
|
0ce97e6315 | ||
|
|
25b0a97851 | ||
|
|
28997772a5 | ||
|
|
b7c72f7a97 | ||
|
|
9f7b38c068 | ||
|
|
3b36ba797f | ||
|
|
4d2e6c3391 | ||
|
|
3520d35f38 | ||
|
|
5f104bab57 | ||
|
|
2050a8b8f0 | ||
|
|
e3544c6ef7 | ||
|
|
472b976946 | ||
|
|
f62f71a81a | ||
|
|
f426e1b3bd | ||
|
|
5f870ac950 | ||
|
|
415816cf35 | ||
|
|
9103112555 | ||
|
|
5986841e27 | ||
|
|
2573b138bf | ||
|
|
308ce66af5 | ||
|
|
bdad993901 | ||
|
|
3b62ab564a | ||
|
|
d319d9fc5e | ||
|
|
ea5c8a72e2 | ||
|
|
3b60c28b3a | ||
|
|
ea0219a5d5 | ||
|
|
481e7bc6b9 | ||
|
|
1ccba85c91 | ||
|
|
2539e56514 | ||
|
|
3929d289e0 | ||
|
|
52585aea74 | ||
|
|
73dee84cab | ||
|
|
efecdccf35 | ||
|
|
da5f2e168a | ||
|
|
5cdb95be1f | ||
|
|
7fa735a43b | ||
|
|
3579fd1b09 | ||
|
|
237b8fe3d9 | ||
|
|
02e4de5166 | ||
|
|
64c8093c1e | ||
|
|
0797f9bc05 | ||
|
|
602c4e51ec | ||
|
|
9f8ca75a81 | ||
|
|
80a87f36ea | ||
|
|
63addc9258 | ||
|
|
f32b440c4a | ||
|
|
6b6afb7708 | ||
|
|
a4041cb40b | ||
|
|
7749b71fff | ||
|
|
3006124e6d | ||
|
|
3d276f4a7f | ||
|
|
b20d173324 | ||
|
|
f44d1e62d2 | ||
|
|
21ac2afb3a | ||
|
|
f7dd327bc2 | ||
|
|
09298a32e7 | ||
|
|
37f292ea91 | ||
|
|
d1dbbc1e33 | ||
|
|
52ec152dd3 | ||
|
|
c7bddb637b | ||
|
|
4e3b0c5aea | ||
|
|
b6631cd878 | ||
|
|
c212700341 | ||
|
|
e121788ff5 | ||
|
|
96460d5ea3 | ||
|
|
9cf9720efa | ||
|
|
2d9f55b632 | ||
|
|
7133a16511 | ||
|
|
a38dfc006e | ||
|
|
86e7c7321f | ||
|
|
58db719a2c | ||
|
|
9abeb99b32 | ||
|
|
d828a7fc35 | ||
|
|
c6f9ea4434 | ||
|
|
fb6843815c | ||
|
|
b97181a793 | ||
|
|
5d15aca85f | ||
|
|
b98a1a3303 | ||
|
|
696c5308a9 | ||
|
|
3542d55e67 | ||
|
|
3c8a120e51 | ||
|
|
cd24308f20 | ||
|
|
69190e088e | ||
|
|
d058a234ba | ||
|
|
41e536109b | ||
|
|
f916aa0f92 | ||
|
|
cdbc260571 | ||
|
|
b234710af9 | ||
|
|
23498883d4 | ||
|
|
a47e8d0da2 | ||
|
|
6dd0e07af8 | ||
|
|
b1c9671a60 | ||
|
|
7aaa1ff270 | ||
|
|
85698ca4f7 | ||
|
|
176d91937d | ||
|
|
e0da0744b5 | ||
|
|
0b4902bdc2 | ||
|
|
e9904e66e6 | ||
|
|
3de8e8fd6a | ||
|
|
38a470a873 | ||
|
|
4308a79e89 | ||
|
|
93d3350c8c | ||
|
|
615c009c42 | ||
|
|
a325a294bd | ||
|
|
4b91383efc | ||
|
|
18ab63bd37 | ||
|
|
a7fb1ffcd8 | ||
|
|
11f173693b | ||
|
|
5b2cd8d03a | ||
|
|
b10e67be3b | ||
|
|
d41c077fac | ||
|
|
3175a2c76a | ||
|
|
3b60b712ec | ||
|
|
afed3610fc | ||
|
|
74f38eacda | ||
|
|
b189faca52 | ||
|
|
d4cd6149ac | ||
|
|
e1cd9aef8f | ||
|
|
ba37275503 | ||
|
|
e01b44af61 | ||
|
|
72a90074bc | ||
|
|
705a6e3a8e | ||
|
|
f4a240d225 | ||
|
|
793f0c1dd6 | ||
|
|
008edd0eeb | ||
|
|
9e6b6e7b82 | ||
|
|
164d6e47b9 | ||
|
|
88b4d69278 | ||
|
|
5bcbcd3c57 | ||
|
|
1b2d862973 | ||
|
|
e6f6a59f3b | ||
|
|
e198bc9b9a | ||
|
|
b7f81f0999 | ||
|
|
eb8dc15ad6 | ||
|
|
2ee3a1b6f3 | ||
|
|
0960b17fbc | ||
|
|
6534566b7e | ||
|
|
e60350d95d | ||
|
|
f40743183e | ||
|
|
e852a21634 | ||
|
|
45deaee762 | ||
|
|
444fdb79dc | ||
|
|
140dd873f1 | ||
|
|
27dae156db | ||
|
|
2deb23e00e | ||
|
|
8152bc6fbf | ||
|
|
af026c5953 | ||
|
|
11275cbaaf | ||
|
|
fe9bf5fc4a | ||
|
|
cd4924d472 | ||
|
|
f56b984d97 | ||
|
|
f804adbff3 | ||
|
|
109aabc6f2 | ||
|
|
ad620f02c7 | ||
|
|
5bd432a85f | ||
|
|
026175c8f7 | ||
|
|
f156014daa | ||
|
|
2cd55e456a | ||
|
|
8c2ca60c8b | ||
|
|
3fda2245a4 | ||
|
|
296887754f | ||
|
|
9ae72cdcf4 | ||
|
|
16fec084f5 | ||
|
|
10c61da686 | ||
|
|
24624491cd | ||
|
|
233c4150d1 | ||
|
|
5893ebec55 | ||
|
|
11642192d1 | ||
|
|
e57bdd4e58 | ||
|
|
461488e9bf | ||
|
|
2988b67c24 | ||
|
|
4f62541bfb | ||
|
|
24576a39e5 | ||
|
|
3ab19be9ea | ||
|
|
5b009a5afb | ||
|
|
3efb5fe7e2 | ||
|
|
ee53f98d8c | ||
|
|
d5a33a0323 | ||
|
|
f25927855e | ||
|
|
c873035084 | ||
|
|
f32bba6531 | ||
|
|
40bc936739 | ||
|
|
6b5685ef0c | ||
|
|
e8e213ad1e | ||
|
|
5f4df34829 | ||
|
|
c255a20d7c | ||
|
|
b5204111da | ||
|
|
3a51f2a778 | ||
|
|
4086f5051c | ||
|
|
5440108431 | ||
|
|
46bd53a929 | ||
|
|
a10c2ccd41 | ||
|
|
1cca100a48 | ||
|
|
04ad46dd31 | ||
|
|
aa13d14019 | ||
|
|
b1f003646b | ||
|
|
e90eccdf92 | ||
|
|
ba06447cd5 | ||
|
|
9808520992 | ||
|
|
8b931b085c | ||
|
|
528faceb35 | ||
|
|
c2a8fa91b1 | ||
|
|
091fba74cb | ||
|
|
083ef2e6fc | ||
|
|
de3a7603ac | ||
|
|
0ac5d621b6 | ||
|
|
bdd409970f | ||
|
|
d8f38f79f2 | ||
|
|
0f1172f55b | ||
|
|
3df47b7b59 | ||
|
|
6e9066ebf4 | ||
|
|
dd94931116 | ||
|
|
da81233d61 | ||
|
|
a76ae2d756 | ||
|
|
97b65f9b4b | ||
|
|
c0fe414e0a | ||
|
|
182dadd433 | ||
|
|
1d0f88264f | ||
|
|
332baca538 | ||
|
|
e2a78888b9 | ||
|
|
5d6d0e63c5 | ||
|
|
2eb468f885 | ||
|
|
98140ae5d9 | ||
|
|
d1ccb22d8a | ||
|
|
66c8070da8 | ||
|
|
3271e3e803 | ||
|
|
16d47923c3 | ||
|
|
6f1633fa75 | ||
|
|
08e4103fa1 | ||
|
|
eee95190cc | ||
|
|
e8311357ff | ||
|
|
0f14fdd4c9 | ||
|
|
ece0f08a2b | ||
|
|
5edb3d55e5 | ||
|
|
63382f758e | ||
|
|
bbef964eb5 | ||
|
|
e6db7ad1d5 | ||
|
|
8cc492721b | ||
|
|
a80fe20456 | ||
|
|
f7986805c6 | ||
|
|
aa5ca90f00 | ||
|
|
4af00e4a45 | ||
|
|
c01c95d77f | ||
|
|
20a9037d5b | ||
|
|
34d3998566 | ||
|
|
198d6c00d6 | ||
|
|
1663df8a05 | ||
|
|
d8926a2571 | ||
|
|
4796f9d914 | ||
|
|
a588df4371 | ||
|
|
2c1c660c6e | ||
|
|
13f4ed6e0e | ||
|
|
1e451991db | ||
|
|
749b236d3d | ||
|
|
00ce372b71 | ||
|
|
370e1c1a17 | ||
|
|
28495273b4 | ||
|
|
36a9c5cc6b | ||
|
|
228de1f12a | ||
|
|
01555463d2 | ||
|
|
6b99075dc8 | ||
|
|
8578ee0864 | ||
|
|
897e07f639 | ||
|
|
875249eb00 | ||
|
|
4d5a4e4cef | ||
|
|
86a6e6bd04 | ||
|
|
8f3042e5b3 | ||
|
|
a1ab87107b | ||
|
|
f49c99937c | ||
|
|
9b24f12bf5 | ||
|
|
487ce7c82a | ||
|
|
cc835d523c | ||
|
|
64c3bc070a | ||
|
|
7405b2e819 | ||
|
|
ca5081e327 | ||
|
|
a79941df22 | ||
|
|
8137d63000 | ||
|
|
4aa21242b6 | ||
|
|
8ce93faf08 | ||
|
|
903ece6160 | ||
|
|
9f440c11e0 | ||
|
|
58bd5627bf | ||
|
|
97dcb8977a | ||
|
|
2fdd64c1b5 | ||
|
|
591b993685 | ||
|
|
543a00e597 | ||
|
|
f361c7004d | ||
|
|
bb7c62777d | ||
|
|
d51f52a649 | ||
|
|
e353809680 | ||
|
|
c2f0f958ef | ||
|
|
087b7a6607 | ||
|
|
6271463240 | ||
|
|
6f1911533c | ||
|
|
d5d8b98d82 | ||
|
|
e7fe7ec0f6 | ||
|
|
049abd698f | ||
|
|
45d21677a0 | ||
|
|
76bec6ce7f | ||
|
|
6563cb6ec6 | ||
|
|
13cd409575 | ||
|
|
13292ff73e | ||
|
|
3f8e2456f7 | ||
|
|
822ee7db88 | ||
|
|
94a650475d | ||
|
|
03cf00422a | ||
|
|
51a9e678f0 | ||
|
|
ad76ee76a8 | ||
|
|
630136b5b7 | ||
|
|
b5f101bdac | ||
|
|
5940564d84 | ||
|
|
67902b5da7 | ||
|
|
c0476c7881 | ||
|
|
f68b6b0e5e | ||
|
|
44857702ae | ||
|
|
b1399cd5f9 | ||
|
|
6f1e4a19a2 | ||
|
|
93393e005e | ||
|
|
4ea2755fce | ||
|
|
ecb51a83d4 | ||
|
|
093b5c0e63 | ||
|
|
bf42b0ae44 | ||
|
|
342b4fd19d | ||
|
|
cbdb861ee4 | ||
|
|
da5a8b9a59 | ||
|
|
1e6e8b446d | ||
|
|
c1fdaa6ae0 | ||
|
|
142814d451 | ||
|
|
704755d005 | ||
|
|
d1263700c0 | ||
|
|
0704fe9695 | ||
|
|
1d3f1d88ef | ||
|
|
8b3edac091 | ||
|
|
05cab85579 | ||
|
|
b72fbe200d | ||
|
|
b1194da6a5 | ||
|
|
338e4669e5 | ||
|
|
c5e2659771 | ||
|
|
1d432728ac | ||
|
|
2fd702a319 | ||
|
|
f26ad16af7 | ||
|
|
8f2ae51fe5 | ||
|
|
2f84d00300 | ||
|
|
b82a2d97ef | ||
|
|
3e9dbe3e0a | ||
|
|
975b2fb79e | ||
|
|
fa509ce64e | ||
|
|
99292edd46 | ||
|
|
3e992cb23c | ||
|
|
e7b4d024ee | ||
|
|
ff67a6d338 | ||
|
|
8e4989ed03 | ||
|
|
0940f01634 | ||
|
|
9d1cb1bc92 | ||
|
|
0ca4e30b19 | ||
|
|
ba88f8a6f0 | ||
|
|
aefe0cbf51 | ||
|
|
9ad489d133 | ||
|
|
661b30784e | ||
|
|
43a5ba9415 | ||
|
|
08a65d74d5 | ||
|
|
cefe156811 | ||
|
|
3b5b4d628b | ||
|
|
8746e48df0 | ||
|
|
0ec8b57825 | ||
|
|
045827043d | ||
|
|
4d66a86579 | ||
|
|
2a8881d0e8 | ||
|
|
ffc60bb917 | ||
|
|
2e454c770b | ||
|
|
7d711135bc | ||
|
|
f62b2b5b45 | ||
|
|
7919596a21 | ||
|
|
9b4898efeb | ||
|
|
45dd1683fd | ||
|
|
8bca908f15 | ||
|
|
9cbb8ddd7f | ||
|
|
1be222af2e | ||
|
|
bf9fc8fef4 | ||
|
|
86e7330fa2 | ||
|
|
34bfb715e1 | ||
|
|
019d7069f8 | ||
|
|
c54fcfb45d | ||
|
|
cde87cb225 | ||
|
|
12435774ca | ||
|
|
80b9507e7a | ||
|
|
0ac0f0ffd0 | ||
|
|
3d14aba4b4 | ||
|
|
64f694865c | ||
|
|
d36b728088 | ||
|
|
1a7b4c42ab | ||
|
|
2a64ce740e | ||
|
|
78988ed60e | ||
|
|
2832adda88 | ||
|
|
a4e4fb4094 | ||
|
|
777ec64635 | ||
|
|
9cec8c1750 | ||
|
|
8ca5aa1190 | ||
|
|
4d8f1b9ca4 | ||
|
|
3da179f77b | ||
|
|
a34e8cb0bd | ||
|
|
b249767c5c | ||
|
|
89a7434565 | ||
|
|
3b537cbdeb | ||
|
|
731464f5b8 | ||
|
|
1ad70f8721 | ||
|
|
2ea8c73cd8 | ||
|
|
f257f2c396 | ||
|
|
3cd8e6f5c6 | ||
|
|
0715db7681 | ||
|
|
a39de8a686 | ||
|
|
ccaf335466 | ||
|
|
40e36e9b52 | ||
|
|
9eebe9d54e | ||
|
|
a23a191615 | ||
|
|
7d9c5586f9 | ||
|
|
f07c89bba4 | ||
|
|
59cba930e5 | ||
|
|
39ae56e136 | ||
|
|
f92130338b | ||
|
|
2867d29021 | ||
|
|
f76ac8bdee | ||
|
|
83caffe000 | ||
|
|
96160837d2 | ||
|
|
3480f1c59e | ||
|
|
65ac4f69af | ||
|
|
2c50fab3dd | ||
|
|
9525ccac4f | ||
|
|
ff76c4bd5d | ||
|
|
5dacf77627 | ||
|
|
2a213c6af7 | ||
|
|
b2535e7db6 | ||
|
|
28236147ee | ||
|
|
4969783383 | ||
|
|
b64080be1b | ||
|
|
aadebd6d23 | ||
|
|
71cc0074ef | ||
|
|
d77f52bf85 | ||
|
|
b71163706b | ||
|
|
1fb7df12d7 | ||
|
|
b3996b3221 | ||
|
|
7251748d59 | ||
|
|
73e9f35ab1 | ||
|
|
d7f0056e2d | ||
|
|
9b7b133cbc | ||
|
|
7545e5de6c | ||
|
|
a0c30702c1 | ||
|
|
03c988388e | ||
|
|
0a56c522eb | ||
|
|
646858ea08 | ||
|
|
d9b821cecc | ||
|
|
d5448e07ab | ||
|
|
3aa182e26a | ||
|
|
de3b490f8e | ||
|
|
4481906be2 | ||
|
|
d9f1a8ce9f | ||
|
|
aa6d2e3035 | ||
|
|
4365843c20 | ||
|
|
b4d2d635f7 | ||
|
|
b9b28900b1 | ||
|
|
d463b82aba | ||
|
|
ed861ff782 | ||
|
|
8cc1944160 | ||
|
|
80e390b906 | ||
|
|
c2acb2be60 | ||
|
|
8ba95c08a1 | ||
|
|
c7de51ca9a | ||
|
|
e02ee3bb2e | ||
|
|
394ceee141 | ||
|
|
40b48510f4 | ||
|
|
be3b37114c | ||
|
|
e212a87b86 | ||
|
|
b890c11c14 | ||
|
|
2e27425e93 | ||
|
|
6269e011db | ||
|
|
e70482dfc0 | ||
|
|
9b8861e3e1 | ||
|
|
38ca3b29b5 | ||
|
|
066076b157 | ||
|
|
be27ac0e69 | ||
|
|
9e6d4eeb92 | ||
|
|
38dd58e796 | ||
|
|
1219e41d29 | ||
|
|
f89c4203a0 | ||
|
|
b9fbc39754 | ||
|
|
fbd3ef8752 | ||
|
|
200010be19 | ||
|
|
5e02a83b53 | ||
|
|
443fee8537 | ||
|
|
570a5c72a9 | ||
|
|
c52b59dcea | ||
|
|
81cdb0fe78 | ||
|
|
5b447d61a6 | ||
|
|
fd90d99cd0 | ||
|
|
22994a6d14 | ||
|
|
58cbda2950 | ||
|
|
d965b91b08 | ||
|
|
459bed9243 | ||
|
|
fd38e1cf15 | ||
|
|
7345034e66 | ||
|
|
33397836a5 | ||
|
|
92f8c40e4c | ||
|
|
5e16e7bf53 | ||
|
|
168bf61b23 | ||
|
|
8811677154 | ||
|
|
12f1ce4794 | ||
|
|
8f8e9de601 | ||
|
|
5b3133f9fc | ||
|
|
782ecfa5c3 | ||
|
|
5f7321ea28 | ||
|
|
2d69afb34d | ||
|
|
3e6631312d | ||
|
|
a355225a83 | ||
|
|
6021ca5c31 | ||
|
|
aace34c8a3 | ||
|
|
dd354bd396 | ||
|
|
17efc3ab79 | ||
|
|
d7fd56051a | ||
|
|
e7274a9873 | ||
|
|
b3573efddb | ||
|
|
259aa97d8b | ||
|
|
ae1f3780f8 | ||
|
|
25dea232d6 | ||
|
|
1c56b48238 | ||
|
|
a258a90291 | ||
|
|
0737e930cb | ||
|
|
c227f3d985 | ||
|
|
4d54637921 | ||
|
|
64e395d6cf | ||
|
|
f7f8ef257c | ||
|
|
ad65c891e7 | ||
|
|
42936fc917 | ||
|
|
b699945b47 | ||
|
|
e76693cad9 | ||
|
|
b90bc6c348 | ||
|
|
c9abb75fce | ||
|
|
b00466f025 | ||
|
|
44448ba68d | ||
|
|
f7a417fdb4 | ||
|
|
6fa0e4072d | ||
|
|
e15d18aa1c | ||
|
|
164ef26a60 | ||
|
|
0dada847ef | ||
|
|
36b7dbb8d0 | ||
|
|
02e483c99b | ||
|
|
afe30e15a0 | ||
|
|
9a1ea9ac03 | ||
|
|
693647a141 | ||
|
|
cea107b165 | ||
|
|
509c640a80 | ||
|
|
617e7cee81 | ||
|
|
d87d4b9b56 | ||
|
|
c889717d24 | ||
|
|
1f302990c6 | ||
|
|
37024afe9c | ||
|
|
18b855140d | ||
|
|
7c520b52c1 | ||
|
|
b98e363a5c | ||
|
|
0a7ea9d206 | ||
|
|
3d473b9763 | ||
|
|
e0df7505f6 | ||
|
|
43bb0b0b93 | ||
|
|
6164604462 | ||
|
|
826c422ac4 | ||
|
|
bf63a43bda | ||
|
|
55fc46c707 | ||
|
|
5102430a68 | ||
|
|
0f897bc1f9 | ||
|
|
d948b0b49b | ||
|
|
b6de97ad53 | ||
|
|
8cefa6b82e | ||
|
|
81e1b3fc61 | ||
|
|
4c1cfd9278 | ||
|
|
14bb0b02ac | ||
|
|
240c793e7a | ||
|
|
89a853212b | ||
|
|
97d1e0bbbb | ||
|
|
cfb5ccc7d3 | ||
|
|
835e547195 | ||
|
|
af9ccb7072 | ||
|
|
74de7cf33c | ||
|
|
f5e65b98a9 | ||
|
|
eb76d7a226 | ||
|
|
e635f3dc1d | ||
|
|
2a6b7d57cb | ||
|
|
8bb225bec6 | ||
|
|
39d3fc4742 | ||
|
|
5c98260cec | ||
|
|
f599f41336 | ||
|
|
1384a6d0fd | ||
|
|
28089c98c1 | ||
|
|
10d6d50b6c | ||
|
|
752f6fb15a | ||
|
|
8fcf459285 | ||
|
|
9c01bcb3e5 | ||
|
|
a2c068d949 | ||
|
|
4ad3f2cdc2 | ||
|
|
29918c498c | ||
|
|
269432a5e6 | ||
|
|
a33b774314 | ||
|
|
cc5ccaaca1 | ||
|
|
33ea689861 | ||
|
|
581836b716 | ||
|
|
0516b78d6f | ||
|
|
84d7cbf916 | ||
|
|
f514fd2182 | ||
|
|
86707928d4 | ||
|
|
3c3fb3cd3f | ||
|
|
337899a03d | ||
|
|
bae0c071cd | ||
|
|
19cb3c7871 | ||
|
|
2e4dec365d | ||
|
|
ca3e2e6cc0 | ||
|
|
283979fc46 | ||
|
|
a81c1ab6ae | ||
|
|
48d4d55ecc | ||
|
|
b7691f5658 | ||
|
|
1382f10433 | ||
|
|
d8db728c33 | ||
|
|
d2259f20cb | ||
|
|
9720d6b7a5 | ||
|
|
7753ba2d37 | ||
|
|
2fb9850af5 | ||
|
|
9eba6ffdd4 | ||
|
|
762657eeef | ||
|
|
16e3b0484d | ||
|
|
974828222e | ||
|
|
a9700e61db | ||
|
|
5a23d570b5 | ||
|
|
28b1c48235 | ||
|
|
ab9fcbdfb9 | ||
|
|
ef80b3711e | ||
|
|
6672a03e7f | ||
|
|
e7833a070e | ||
|
|
25b9ac3df4 | ||
|
|
718ac3f83b | ||
|
|
e4f686deb7 | ||
|
|
d241d66a69 | ||
|
|
f92a1be0b6 | ||
|
|
7cc0d47322 | ||
|
|
da998d09d7 | ||
|
|
5e66a60f1c | ||
|
|
7f55ea0c53 | ||
|
|
f7d1d9b8b1 | ||
|
|
6b4c8e76e6 | ||
|
|
e12a0c154c | ||
|
|
9c7e99e829 | ||
|
|
d14ea2ecaa | ||
|
|
a94d86da6d | ||
|
|
5e591fc1b7 | ||
|
|
32e83e00e4 | ||
|
|
132269618d | ||
|
|
84d118de07 | ||
|
|
1716ac562c | ||
|
|
e215aae39a | ||
|
|
12782cad4d | ||
|
|
fc5ed17fe9 | ||
|
|
94d04934b3 | ||
|
|
1387f9b23e | ||
|
|
6817eab5f1 | ||
|
|
218f591a5d | ||
|
|
17af0de7b6 | ||
|
|
9d962053a2 | ||
|
|
59909b5ca7 | ||
|
|
a6cd0f0e73 | ||
|
|
2c43393bf1 | ||
|
|
669c8c3cca | ||
|
|
b0b0cc045f | ||
|
|
20d16d7b31 | ||
|
|
714722bb2d | ||
|
|
830495a607 | ||
|
|
41a4593b6d | ||
|
|
08b727833e | ||
|
|
c8b82b9d08 | ||
|
|
5becb4c43a | ||
|
|
13694293e3 | ||
|
|
815beac356 | ||
|
|
5e60204832 | ||
|
|
d2624b13a0 | ||
|
|
61f5de9662 | ||
|
|
40dbf30784 | ||
|
|
afd77c4745 | ||
|
|
d70bd4aaa4 | ||
|
|
8e05261588 | ||
|
|
a676d4387c | ||
|
|
08a5afcf9f | ||
|
|
eeaa3c1643 | ||
|
|
7c8c233cf4 | ||
|
|
129a9850eb | ||
|
|
1f98a4fff3 | ||
|
|
58e4702b14 | ||
|
|
c60749678b | ||
|
|
d5214e4644 | ||
|
|
52804ca6d1 | ||
|
|
4fb9606361 | ||
|
|
c534d95972 | ||
|
|
46ccfda493 | ||
|
|
6dc62334d6 | ||
|
|
c7d003d551 | ||
|
|
cc754122fc | ||
|
|
240a94182e | ||
|
|
16af509c46 | ||
|
|
86e474fff1 | ||
|
|
9a3d5729bb | ||
|
|
5a1c29fd8c | ||
|
|
180775a0ec | ||
|
|
d018e279f8 | ||
|
|
11636bc7c7 | ||
|
|
518c1ceb94 | ||
|
|
696efe494e | ||
|
|
4419d357c4 | ||
|
|
fbbba6db92 | ||
|
|
53d428907b | ||
|
|
8133ba16b1 | ||
|
|
e9aa0e89d3 | ||
|
|
7e3c59e53e | ||
|
|
f6314f8e73 | ||
|
|
3bcfd84fba | ||
|
|
7c0ae76cd0 | ||
|
|
2dee8a25d5 | ||
|
|
507aa6d949 | ||
|
|
59f173f2e6 | ||
|
|
c3790c239c | ||
|
|
45e51e7730 | ||
|
|
4834eae887 | ||
|
|
01108e6172 | ||
|
|
95b74c211d | ||
|
|
cb79a90031 | ||
|
|
4502436c47 | ||
|
|
c3d0cf940c | ||
|
|
e7343cc67c | ||
|
|
83145486b0 | ||
|
|
6fd1795d25 | ||
|
|
f770232b63 | ||
|
|
a8e694c235 | ||
|
|
15a6d94953 | ||
|
|
056331981e | ||
|
|
cef16862da | ||
|
|
8a4015722d | ||
|
|
156345cb4b | ||
|
|
f29280ba5c | ||
|
|
742be06ea9 | ||
|
|
af98954fc1 | ||
|
|
4d63770189 | ||
|
|
bbea3a6b84 | ||
|
|
19d3a56194 | ||
|
|
5cab2b711f | ||
|
|
1e5455e266 | ||
|
|
4fe585acc2 | ||
|
|
e52448b84b | ||
|
|
1f92b55f58 | ||
|
|
8b15b742ad | ||
|
|
849dc0560b | ||
|
|
a026c5fd08 | ||
|
|
fd7aade26b | ||
|
|
510f8ede10 | ||
|
|
8f9125b08a | ||
|
|
e5e97c0a0a | ||
|
|
870ca713df | ||
|
|
6854a3fd26 | ||
|
|
620360d41a | ||
|
|
20bd49285b | ||
|
|
6bd2730317 | ||
|
|
f734cca337 | ||
|
|
ce5b19d011 | ||
|
|
f82a64d149 | ||
|
|
f49b1afd6c | ||
|
|
796c5626a7 | ||
|
|
e54c9cd401 | ||
|
|
f8951d7f57 | ||
|
|
6454e1d644 | ||
|
|
e184c8cb42 | ||
|
|
fdd211e399 | ||
|
|
7001e21e7d | ||
|
|
82d0732c12 | ||
|
|
53cd125780 | ||
|
|
3c91f9b5ab | ||
|
|
f073dca22a | ||
|
|
8b1e35d7dc | ||
|
|
b75d8ca621 | ||
|
|
9beefd7d5a | ||
|
|
88145efa97 | ||
|
|
bdc13f9238 | ||
|
|
ce58f0607b | ||
|
|
bbc0d330a9 | ||
|
|
60e7e17c86 | ||
|
|
237bb8514e | ||
|
|
bd26c933d2 | ||
|
|
b6b58da2d2 | ||
|
|
40c646cf7a | ||
|
|
3231a8c51c | ||
|
|
4170d6a491 | ||
|
|
0b50c525cf | ||
|
|
8ba38e8e74 | ||
|
|
b163545771 | ||
|
|
c0b82f8e58 | ||
|
|
b75ff5fa03 | ||
|
|
9440d7fe88 | ||
|
|
24809fce07 | ||
|
|
9819ad347f | ||
|
|
8fe83750b7 | ||
|
|
1809f05904 | ||
|
|
0ac250a035 | ||
|
|
405a00bb2c | ||
|
|
3a3ca8e6a9 | ||
|
|
27e678480e | ||
|
|
7052565380 | ||
|
|
31070ffbca | ||
|
|
7f3dec7bee | ||
|
|
b1e0db4944 | ||
|
|
c439952a41 | ||
|
|
2f28afebb6 | ||
|
|
fa7ba30ba3 | ||
|
|
1cf5f510ed | ||
|
|
526c874caa | ||
|
|
f88f744097 | ||
|
|
95733796f0 | ||
|
|
552f319b9d | ||
|
|
38e5952417 | ||
|
|
7f891939f1 | ||
|
|
69a5ce1e31 | ||
|
|
534802b761 | ||
|
|
5c258e212c | ||
|
|
6a6133c102 | ||
|
|
3c1825187a | ||
|
|
8523b34be7 | ||
|
|
65cfd4360a | ||
|
|
bbf5f42c87 | ||
|
|
3631e53ff0 | ||
|
|
f322d9bddb | ||
|
|
05ce7b9d5e | ||
|
|
72ddedfc5c | ||
|
|
36686d7425 | ||
|
|
34387ec0f1 | ||
|
|
83a6b0c626 | ||
|
|
76da66fb7e | ||
|
|
607f9eda35 | ||
|
|
f25cec265d | ||
|
|
8e66b96221 | ||
|
|
b5c1bb346c | ||
|
|
e94b323e6c | ||
|
|
bc65ee10c0 | ||
|
|
2001483659 | ||
|
|
444aba55dd | ||
|
|
3f640b1037 | ||
|
|
b07084711c | ||
|
|
fa8ab2134f | ||
|
|
1a677da792 | ||
|
|
b6d61a818e | ||
|
|
8495ffaa45 | ||
|
|
dbd1d79770 | ||
|
|
1910178199 | ||
|
|
839a6a2c8a | ||
|
|
a769edbc89 | ||
|
|
57ffecd0e5 | ||
|
|
801d135390 | ||
|
|
0428f44113 | ||
|
|
7beff3fd5a | ||
|
|
88a095e40e | ||
|
|
dd961985f0 | ||
|
|
d44b05a9e5 | ||
|
|
5bd3b02be6 | ||
|
|
3cf5c1853d | ||
|
|
a4d86496e1 | ||
|
|
90bdc85f8c | ||
|
|
0828873b52 | ||
|
|
816b707a16 | ||
|
|
c9257ab4bf | ||
|
|
69ce3b3d33 | ||
|
|
c4caa7c401 | ||
|
|
dc93a292c3 | ||
|
|
174ee1b646 | ||
|
|
9b1c4f47fb | ||
|
|
582ba45c00 | ||
|
|
f1cbd55007 | ||
|
|
3a34370422 | ||
|
|
29ab244de6 | ||
|
|
920b2c2b40 | ||
|
|
ac96d192a6 | ||
|
|
07fbeb6cf0 | ||
|
|
fc64cdee64 | ||
|
|
0c0e96c55f | ||
|
|
5b953c1ef2 | ||
|
|
562ca45e07 | ||
|
|
6bbd53512e | ||
|
|
e352a8ed1b | ||
|
|
e55225e2bc | ||
|
|
3e63abd335 | ||
|
|
0620fa3094 | ||
|
|
d93288f711 | ||
|
|
ca69af7b97 | ||
|
|
952e13fef8 | ||
|
|
4be3087642 | ||
|
|
49da8a23a8 | ||
|
|
3ad943a9eb | ||
|
|
3082093293 | ||
|
|
b03bbab5ad | ||
|
|
9574730050 | ||
|
|
91ea6fe4ee | ||
|
|
769be13189 | ||
|
|
e42175241e | ||
|
|
12257b438b | ||
|
|
9ecc736c30 | ||
|
|
6c4e6bf1d6 | ||
|
|
97fe817186 | ||
|
|
52b12ed7eb | ||
|
|
d8ab4474b4 | ||
|
|
1ecbd95adf | ||
|
|
cad6e6624f | ||
|
|
3505cbe05c | ||
|
|
e15359e589 | ||
|
|
edb86f5f5a | ||
|
|
adf2651d1f | ||
|
|
5031d64e28 | ||
|
|
ae3ad59b16 | ||
|
|
e6cd7b0467 | ||
|
|
97e9f52331 | ||
|
|
25957d917a | ||
|
|
20b932da97 | ||
|
|
207080babc | ||
|
|
48bacd01cc | ||
|
|
297d0f1f30 | ||
|
|
eedbe1b770 | ||
|
|
5ff6b1da07 | ||
|
|
8b49e0ee2a | ||
|
|
e031ec9359 | ||
|
|
1bd1cd6938 | ||
|
|
81c5a21b8d | ||
|
|
61e4bbabaf | ||
|
|
4cf475680d | ||
|
|
ca4aa340f6 | ||
|
|
767d8a4b05 | ||
|
|
0b8dcaba8f | ||
|
|
af6a318aae | ||
|
|
c6e2900be7 | ||
|
|
963d9b6032 | ||
|
|
b2ee738bb1 | ||
|
|
c8ca3ff404 | ||
|
|
5d8fa2c7af | ||
|
|
58df5e5376 | ||
|
|
348ad1a624 | ||
|
|
73e17d5aa8 | ||
|
|
300d9892a5 | ||
|
|
e47b5b43b8 | ||
|
|
21c9d9e200 | ||
|
|
4f6916c4d8 | ||
|
|
8633957726 | ||
|
|
0850c953b3 | ||
|
|
23e95fd7ab | ||
|
|
e1045f01c6 | ||
|
|
e6d22fc3a0 | ||
|
|
9232244920 | ||
|
|
476eb90a90 | ||
|
|
063191889d | ||
|
|
589099a005 | ||
|
|
a0ec7de058 | ||
|
|
14a19a3da9 | ||
|
|
1b04382a9b | ||
|
|
71e5828d41 | ||
|
|
65a02f7d32 | ||
|
|
acf9174bef | ||
|
|
243ca5b1e2 | ||
|
|
f6059c377c | ||
|
|
41328bde97 | ||
|
|
3242cf5384 | ||
|
|
d8de2017b5 | ||
|
|
843280f82b | ||
|
|
42344795cd | ||
|
|
517f6d1a26 | ||
|
|
70992609d4 | ||
|
|
bf736bc55d | ||
|
|
d4cfd3e7ac | ||
|
|
c2d47cd2e1 | ||
|
|
e1a9e0ac29 | ||
|
|
5e145c1c22 | ||
|
|
714ff3c663 | ||
|
|
f5c08070d9 | ||
|
|
392995ca46 | ||
|
|
805ed84f61 | ||
|
|
5010706d8b | ||
|
|
6278ff0f30 | ||
|
|
56c25bfb78 | ||
|
|
b814f0b7e3 | ||
|
|
65bec16fb3 | ||
|
|
556d1d0390 | ||
|
|
1ebf740908 | ||
|
|
51d359268e | ||
|
|
3f0c515355 | ||
|
|
f95839c785 | ||
|
|
5a004ae429 | ||
|
|
04fb610fe7 | ||
|
|
a667d04e53 | ||
|
|
a8f23ed712 | ||
|
|
ecf947258a | ||
|
|
a58612718e | ||
|
|
cd078a6264 | ||
|
|
9f637ead38 | ||
|
|
b521aafd26 | ||
|
|
a84e15b8cc | ||
|
|
0c330fc020 | ||
|
|
cfbb7bec58 | ||
|
|
3b357f51a6 | ||
|
|
09acf215f0 | ||
|
|
07dd8b94ed | ||
|
|
ef308fd121 | ||
|
|
fce64d760b | ||
|
|
f0c9bb7c91 | ||
|
|
d8672796b0 | ||
|
|
5929e84036 | ||
|
|
83063532a0 | ||
|
|
07279558a5 | ||
|
|
2166473852 | ||
|
|
44397e3062 | ||
|
|
883a0a0e6a | ||
|
|
b5ed81b349 | ||
|
|
625b0afa52 | ||
|
|
2660fbaa20 | ||
|
|
9e37702d24 | ||
|
|
bc11c6a7f2 | ||
|
|
10e9766fd3 | ||
|
|
6d24a2cb87 | ||
|
|
0a4dfaeaf9 | ||
|
|
c0a4fd145c | ||
|
|
70f16e1a0b | ||
|
|
cb27571e9f | ||
|
|
0518da5819 | ||
|
|
d2797abdb4 | ||
|
|
bf3ee660e0 | ||
|
|
68406b9906 | ||
|
|
6f7fd6613a | ||
|
|
6d5b386394 | ||
|
|
1ea18a2922 | ||
|
|
f8f4b961a1 | ||
|
|
57565db531 | ||
|
|
d844420c07 | ||
|
|
34634bddf1 | ||
|
|
c97b7f6748 | ||
|
|
76cc19f525 | ||
|
|
5baaebb3fd | ||
|
|
9d072920da | ||
|
|
965ca36525 | ||
|
|
b4988ce20c | ||
|
|
d3d617239f | ||
|
|
6c3b34a61d | ||
|
|
d76d1adb59 | ||
|
|
cadc6b171e | ||
|
|
fdae2a20ae | ||
|
|
45701a81e9 | ||
|
|
409e0c8e1c | ||
|
|
7076d41b29 | ||
|
|
5a6cb69951 | ||
|
|
11a75ee78a | ||
|
|
b9b692d71d | ||
|
|
d8f8afcbd0 | ||
|
|
8cb62ef31a | ||
|
|
bb5d5fc683 | ||
|
|
2fc0dcc10a | ||
|
|
9fd55157d6 | ||
|
|
6c384dba71 | ||
|
|
9730297381 | ||
|
|
99e80a8ed0 | ||
|
|
26fef2d481 | ||
|
|
c9e65f4221 | ||
|
|
20bd33fada | ||
|
|
bd0af2e921 | ||
|
|
4ab66299d4 | ||
|
|
42227f93c0 | ||
|
|
89fcf4ea7c | ||
|
|
3322710dac | ||
|
|
404bf11d8c | ||
|
|
60a2ecbd17 | ||
|
|
828822243a | ||
|
|
2068ae215e | ||
|
|
d4262ecceb | ||
|
|
8be7d8a635 | ||
|
|
c038040e1b | ||
|
|
21450b8a51 | ||
|
|
5fc1bd026a | ||
|
|
d60f1a5601 | ||
|
|
da83f8403e | ||
|
|
4ff17af5de | ||
|
|
a9d1b4e6d7 | ||
|
|
66612075d2 | ||
|
|
b921c55677 | ||
|
|
bdc5e9ceb0 | ||
|
|
f2b2effc4b | ||
|
|
301e0496ff | ||
|
|
98660e1f97 | ||
|
|
6cf93379b3 | ||
|
|
8639abec97 | ||
|
|
d5361b8d09 | ||
|
|
6bfdfab6f3 | ||
|
|
bec998ab94 | ||
|
|
77636945fb | ||
|
|
fd5c45ae10 | ||
|
|
ad71386adf | ||
|
|
043517717e | ||
|
|
76c52300a2 | ||
|
|
dda32c6880 | ||
|
|
ac4bb5c35f | ||
|
|
a96cae4f44 | ||
|
|
7cb75cb2e7 | ||
|
|
0940084fd2 | ||
|
|
95ad06c8c3 | ||
|
|
3c13c4f3ee | ||
|
|
2fe938b7da | ||
|
|
784da52ea6 | ||
|
|
78524a56ed | ||
|
|
6c614f0c1f | ||
|
|
d42df4ed04 | ||
|
|
6d94126368 | ||
|
|
e0f72d2791 | ||
|
|
3e51710fe6 | ||
|
|
7bfdca7a53 | ||
|
|
48d5628fd4 | ||
|
|
c8fb619d37 | ||
|
|
57024614bd | ||
|
|
a31b502668 | ||
|
|
e58c3ac374 | ||
|
|
00f4e6ec44 | ||
|
|
6355e61eb8 | ||
|
|
27828f44b9 | ||
|
|
9525ca08b9 | ||
|
|
501caf0a69 | ||
|
|
c17baef172 | ||
|
|
21ade71bad | ||
|
|
23e02d8eb0 | ||
|
|
86286e1ac8 | ||
|
|
7bbe12b2bd | ||
|
|
e65a2a400d | ||
|
|
741079f317 | ||
|
|
0f5d4fd11b | ||
|
|
8eae206715 | ||
|
|
7434d44412 | ||
|
|
8394bbd47f | ||
|
|
14a2eeba0c | ||
|
|
a18dde9b0d | ||
|
|
8438d820ad | ||
|
|
e19ad023d2 | ||
|
|
0695f08f05 | ||
|
|
22ab4721e2 | ||
|
|
51f23c5dc2 | ||
|
|
1f48e3d44a | ||
|
|
0113627d7b | ||
|
|
0a5de0ff0b | ||
|
|
9c4bad8f1e | ||
|
|
c7783dbd6c | ||
|
|
ee9c7e204f | ||
|
|
483dcb6340 | ||
|
|
9ad7b65996 | ||
|
|
ec1659cba0 | ||
|
|
09a8db10d4 | ||
|
|
f3323beaca | ||
|
|
275973da8c | ||
|
|
e2c89a9487 | ||
|
|
869690c485 | ||
|
|
a3c7c07ecc | ||
|
|
dc8a8af117 | ||
|
|
6c28e1e69a | ||
|
|
0e1163f698 | ||
|
|
8654415f33 | ||
|
|
1a6ad05a23 | ||
|
|
1d91535ba6 | ||
|
|
8799c888e3 | ||
|
|
d7209d9057 | ||
|
|
5960103cb8 | ||
|
|
2ffea39a5c | ||
|
|
1e76b1bf2d | ||
|
|
2022ca1d52 | ||
|
|
e1319d1a2d | ||
|
|
a61df6cb03 | ||
|
|
790b885d0a | ||
|
|
1a2eacc5a6 | ||
|
|
f7a2f7a727 | ||
|
|
a4adca595a | ||
|
|
c51e179db8 | ||
|
|
b582fc13c3 | ||
|
|
add33cb5e6 | ||
|
|
83105d0d8f | ||
|
|
7b0818b8e5 | ||
|
|
28cd3a8c9f | ||
|
|
0355645a0e | ||
|
|
cb7a608d75 | ||
|
|
bdb0d77227 | ||
|
|
149102927b | ||
|
|
d8c0d722d2 | ||
|
|
cb7be3767c | ||
|
|
34bf2877c8 | ||
|
|
3ebec8fa41 | ||
|
|
f877d19c6a | ||
|
|
a63a9c7d45 | ||
|
|
1779cea6e3 | ||
|
|
26eff330f9 | ||
|
|
9245f0adac | ||
|
|
8964ceba08 | ||
|
|
cc9e74123c | ||
|
|
cca9edc97a | ||
|
|
5e75f7022f | ||
|
|
5e97eb1840 | ||
|
|
c9e4147b11 | ||
|
|
3f25e7ec79 | ||
|
|
1372bf784f | ||
|
|
eed5fdd768 | ||
|
|
f7939c758f | ||
|
|
bf7045566d | ||
|
|
ebd11e7482 | ||
|
|
94626487db | ||
|
|
24bdedf802 | ||
|
|
0025ba4921 | ||
|
|
7c0676343f | ||
|
|
1fe4e3afde | ||
|
|
9dee9e7ade | ||
|
|
33901384c6 | ||
|
|
7a221d0858 | ||
|
|
60ee98f578 | ||
|
|
5b24d7129e | ||
|
|
b8592ad412 | ||
|
|
e696b72f08 | ||
|
|
344821ed35 | ||
|
|
126b4c332f | ||
|
|
c32c177e15 | ||
|
|
853cdd741f | ||
|
|
69d42ae95b | ||
|
|
5ff701ca3f | ||
|
|
9f58912fd7 | ||
|
|
0c746f5c5a | ||
|
|
a8cedea15a | ||
|
|
87832ede17 | ||
|
|
4d99c689f0 | ||
|
|
28b26f67e2 | ||
|
|
b934232411 | ||
|
|
2f120786fd | ||
|
|
6075fee556 | ||
|
|
de584807e1 | ||
|
|
a1285cbf15 | ||
|
|
cf1f6f3961 | ||
|
|
f4d97ef9fa | ||
|
|
28883e80d4 | ||
|
|
a0f74cdd9d | ||
|
|
296bf443a8 | ||
|
|
af7be9bdd7 | ||
|
|
2cfd5568e1 | ||
|
|
faf40a42bc | ||
|
|
97c972f14d | ||
|
|
3fa5204b0c | ||
|
|
5a756ca981 | ||
|
|
01f9feff9f | ||
|
|
2757494265 | ||
|
|
b88a8f7bb1 | ||
|
|
b4225bedb5 | ||
|
|
a82b4d315a | ||
|
|
3d92784bd4 | ||
|
|
c06e766d7e | ||
|
|
4a3d15b6de | ||
|
|
a798dcfae9 | ||
|
|
b4a170cb8a | ||
|
|
665318da3d | ||
|
|
66cdf577f5 | ||
|
|
891218615e | ||
|
|
a938e1f184 | ||
|
|
7c7ee633c1 | ||
|
|
18af84e193 | ||
|
|
025b859c7e | ||
|
|
0e239a4f71 | ||
|
|
ca85b0afbe | ||
|
|
a0a9461f79 | ||
|
|
6a2eb5f442 | ||
|
|
0c5892bcb6 | ||
|
|
91ff07fcf7 | ||
|
|
bb7af56e69 | ||
|
|
77f9e8ce0f | ||
|
|
5ca4c4a44d | ||
|
|
a44022c388 | ||
|
|
6333cf43a8 | ||
|
|
91ee62d1ab | ||
|
|
ede69b4659 | ||
|
|
61aaeff413 | ||
|
|
4e1cd75f6f | ||
|
|
a8ff2e95da | ||
|
|
4d502ea44d | ||
|
|
66b3588897 | ||
|
|
9134849744 | ||
|
|
fcf8512956 | ||
|
|
ae975b10e9 | ||
|
|
b43f1441a9 | ||
|
|
5a2aa83030 | ||
|
|
4de27d0404 | ||
|
|
c6d59681ff | ||
|
|
3b668c0bb1 | ||
|
|
4aed1fe8a8 | ||
|
|
2381264a3f | ||
|
|
4562e83b24 | ||
|
|
7be77c19f5 | ||
|
|
82247c0f14 | ||
|
|
d70d61b1cb | ||
|
|
d069c668f8 | ||
|
|
e91dd28a76 | ||
|
|
595e9b25ba | ||
|
|
06d2d8cea3 | ||
|
|
936c3cc4d7 | ||
|
|
08abbb8dba | ||
|
|
972cf3cd01 | ||
|
|
da4847c5a8 | ||
|
|
08494058e9 | ||
|
|
9080ece3fb | ||
|
|
438912700c | ||
|
|
6b57e4e0ff | ||
|
|
6da3a33e6c | ||
|
|
2c8badfea9 | ||
|
|
91182a86bf | ||
|
|
0b7e0cadc0 | ||
|
|
163515c6e9 | ||
|
|
40d612ffc7 | ||
|
|
88a73ecdea | ||
|
|
64642fabc4 | ||
|
|
7083a05a25 | ||
|
|
9f3ed32d0f | ||
|
|
1521ac5563 | ||
|
|
695246d80a | ||
|
|
908164f6d5 | ||
|
|
96206b6108 | ||
|
|
e2fff7fd87 | ||
|
|
53690bfad2 | ||
|
|
ae37a7d998 | ||
|
|
7b37e05dec | ||
|
|
022450768f | ||
|
|
7c5661152e | ||
|
|
fb55b3a89a | ||
|
|
df1509983c | ||
|
|
185c2f86cd | ||
|
|
10fc44e2af | ||
|
|
c3275dfd36 | ||
|
|
43741ad5d1 | ||
|
|
8dec406161 | ||
|
|
58f8d74591 | ||
|
|
867fc61b12 | ||
|
|
8e2e477a7f | ||
|
|
9b34f5a9ff | ||
|
|
5e34f938c1 | ||
|
|
2fd56cb01c | ||
|
|
4f0e272549 | ||
|
|
1a5279a3ef | ||
|
|
7775f5785f | ||
|
|
2de73991ff | ||
|
|
354d033e60 | ||
|
|
ebc2cdad2e | ||
|
|
5bb841935e | ||
|
|
65fd4b39ce | ||
|
|
96d2de2258 | ||
|
|
a71f2863ac | ||
|
|
a9b942981d | ||
|
|
4b1ba2ec21 | ||
|
|
c09184fd94 | ||
|
|
b0d8d196e1 | ||
|
|
7c43123956 | ||
|
|
eede84eb9e | ||
|
|
b5b20234e9 | ||
|
|
5beb298e47 | ||
|
|
6b499b9a16 | ||
|
|
4c639961f5 | ||
|
|
dfd3f507fb | ||
|
|
d5695b3170 | ||
|
|
994fceece3 | ||
|
|
8c451eb0e6 | ||
|
|
79b4366203 | ||
|
|
3675d2eae8 | ||
|
|
38b55d2186 | ||
|
|
bee0d12455 | ||
|
|
13f2c90a7b | ||
|
|
a3dca3dabc | ||
|
|
e5c7a81ce3 | ||
|
|
8b0100523b | ||
|
|
1350599c0b | ||
|
|
bc54cdc537 | ||
|
|
5d10cf0fe6 | ||
|
|
7b8a10f3ea | ||
|
|
cb3a55dae6 | ||
|
|
5789d76582 | ||
|
|
2e588ae221 | ||
|
|
b5dd948e56 | ||
|
|
1263b7de75 | ||
|
|
75a6122173 | ||
|
|
053102f433 | ||
|
|
d3a2c0ed34 | ||
|
|
8fbc374f31 | ||
|
|
08b7ebba91 | ||
|
|
a1cd043fdc | ||
|
|
671a8e7972 | ||
|
|
efa16dbb44 | ||
|
|
a6241be42a | ||
|
|
faa88aafe8 | ||
|
|
1b3a98425f | ||
|
|
22bc9ddc73 | ||
|
|
0423775687 | ||
|
|
307c170fb6 | ||
|
|
0e04fcc071 | ||
|
|
4322b17a81 | ||
|
|
451af66be0 | ||
|
|
454577c6b1 | ||
|
|
53be4d2712 | ||
|
|
3c37fd37fa | ||
|
|
cf0ba794d7 | ||
|
|
c21e2063fe | ||
|
|
ad037c6615 | ||
|
|
7bbfac5dba | ||
|
|
80ddb00f10 | ||
|
|
74b2260ba6 | ||
|
|
603e55f252 | ||
|
|
a9c1c7d239 | ||
|
|
3cc697832a | ||
|
|
bb98f5756a | ||
|
|
e1d2203371 | ||
|
|
93467cb363 | ||
|
|
ea526d0822 | ||
|
|
0e627c920f | ||
|
|
ea35f1dce1 | ||
|
|
a5b80c9d1f | ||
|
|
f704094a5f | ||
|
|
1f58f15bff | ||
|
|
b930716745 | ||
|
|
9587479b76 | ||
|
|
3c0fbf3a6a | ||
|
|
caa330c91f | ||
|
|
4a55d5729d | ||
|
|
d6a6697891 | ||
|
|
778cfb37a2 | ||
|
|
ce85ee3aa6 | ||
|
|
b23de4affc | ||
|
|
d8a7e894aa | ||
|
|
d5acfaa14e | ||
|
|
cc35d0645a | ||
|
|
c9368925a3 | ||
|
|
0d9ce1bab0 | ||
|
|
519fb90d5a | ||
|
|
6768fd4d87 | ||
|
|
d0456d0f42 | ||
|
|
7cda3fe85b | ||
|
|
5b7071e4b0 | ||
|
|
ac3496e681 | ||
|
|
657334a5fd | ||
|
|
31195975f5 | ||
|
|
6717bb2b72 | ||
|
|
0e08526428 | ||
|
|
888e8c6dac | ||
|
|
e017eff5e4 | ||
|
|
e4dd79bbb1 | ||
|
|
4588831bff | ||
|
|
a4f37220a0 | ||
|
|
d654770732 | ||
|
|
19fc9e3466 | ||
|
|
d048557bfe | ||
|
|
5feea0382e | ||
|
|
18cf7f7ed0 | ||
|
|
cfbfd59b8f | ||
|
|
d9336d9ae4 | ||
|
|
3365c4da9e | ||
|
|
8f2bd7663d | ||
|
|
8306b4373b | ||
|
|
149e959d09 | ||
|
|
54a42d08d7 | ||
|
|
481b083506 | ||
|
|
8835435558 | ||
|
|
a80d8286c2 | ||
|
|
6b15827246 | ||
|
|
41d0a8b295 | ||
|
|
d0e1ea8f06 | ||
|
|
f3b9647bb4 | ||
|
|
9de67c586f | ||
|
|
92f594f5e7 | ||
|
|
06d5273217 | ||
|
|
94d7babbf1 | ||
|
|
306216dbe5 | ||
|
|
ab2e20ee0a | ||
|
|
146e95d88f | ||
|
|
d7ae86799c | ||
|
|
7b26c9e2ef | ||
|
|
6bcafdbc87 | ||
|
|
059c089f93 | ||
|
|
c1e7193c4b | ||
|
|
2423563d45 | ||
|
|
260672986e | ||
|
|
5d48406d64 | ||
|
|
2b2dbabc11 | ||
|
|
13b64bc55a | ||
|
|
279f099ba0 | ||
|
|
32747641e4 | ||
|
|
db43ed6f41 | ||
|
|
7699621983 | ||
|
|
4dfbcd0b4e | ||
|
|
a9ee18300e | ||
|
|
b4861d2b5c | ||
|
|
913f2b84a6 | ||
|
|
cc89933d8f | ||
|
|
a14ea6582d | ||
|
|
076f3289d2 | ||
|
|
518083dfe0 | ||
|
|
2b366bb321 | ||
|
|
292d4c077a | ||
|
|
fc4c03640d | ||
|
|
985253197f | ||
|
|
48b4249790 | ||
|
|
fb64fcb271 | ||
|
|
41e452dcc5 | ||
|
|
d218c66e25 | ||
|
|
e173b1cb2a | ||
|
|
9b598db559 | ||
|
|
e122d677ad | ||
|
|
4c63cbf5b1 | ||
|
|
288705fefd | ||
|
|
8c4ae98f3d | ||
|
|
08aa367892 | ||
|
|
ff527a0190 | ||
|
|
6e05f8ca93 | ||
|
|
6309d070d1 | ||
|
|
fe14130b3c | ||
|
|
52ebffa857 | ||
|
|
d14f15863d | ||
|
|
7c9b585a47 | ||
|
|
c039f4af83 | ||
|
|
07285e5f8b | ||
|
|
16d80ebab3 | ||
|
|
61e816f24c | ||
|
|
2feb16d957 | ||
|
|
3043fbe73b | ||
|
|
9f99c3f55b | ||
|
|
a07a6d8c26 | ||
|
|
695841a3cf | ||
|
|
3efaa713da | ||
|
|
9822f687f7 | ||
|
|
b9d83c04bc | ||
|
|
298ad6782d | ||
|
|
f4be2b8bcd | ||
|
|
e83e239faf | ||
|
|
62bf7f0fc2 | ||
|
|
7dea485d57 | ||
|
|
5b9858a8a3 | ||
|
|
42a5b3ec17 | ||
|
|
2d1cb076c6 | ||
|
|
289c93d081 | ||
|
|
c0fe706597 | ||
|
|
9cba1c8bf4 | ||
|
|
cbf095465c | ||
|
|
c007dbdc13 | ||
|
|
ff493d017b | ||
|
|
7f6ad9653e | ||
|
|
2851a9f04e | ||
|
|
c536f85b2e | ||
|
|
b1352ff8b7 | ||
|
|
cc63c8499f | ||
|
|
f191b8b8d1 | ||
|
|
5003db987d | ||
|
|
07aab5e868 | ||
|
|
875dfbbf0e | ||
|
|
9e7efa45d4 | ||
|
|
8bf892b306 | ||
|
|
8480b0197b | ||
|
|
df07fb5951 | ||
|
|
4ab4bcc074 | ||
|
|
1d4f019de4 | ||
|
|
677aacc8e3 | ||
|
|
fda937175d | ||
|
|
024250803a | ||
|
|
b711ce33b7 | ||
|
|
52bec63275 | ||
|
|
657fa80f4d | ||
|
|
373e90ee6d | ||
|
|
41d4c5b424 | ||
|
|
86a9dea428 | ||
|
|
8606d80c66 | ||
|
|
5bffa1d918 | ||
|
|
c9b0fe47bf | ||
|
|
bcd744b6b7 | ||
|
|
5e511e01bf | ||
|
|
52291c645e | ||
|
|
a31466d34e | ||
|
|
d38eac959b | ||
|
|
9dbb8acd4b | ||
|
|
46154c6705 | ||
|
|
54ff03c35d | ||
|
|
18c710c906 | ||
|
|
59236b789f | ||
|
|
fd3d43cae1 | ||
|
|
8eae643911 | ||
|
|
fd9413874a | ||
|
|
227f9fb77d | ||
|
|
c40ee7e629 | ||
|
|
841e967d48 | ||
|
|
9df0dcedae | ||
|
|
724e053732 | ||
|
|
e409895c02 | ||
|
|
32d9b6181c | ||
|
|
2b018fade2 | ||
|
|
e65f9cb17a | ||
|
|
1367f34398 | ||
|
|
e47f6b879a | ||
|
|
5809edd74b | ||
|
|
05bfa11915 | ||
|
|
435f804c6f | ||
|
|
ae3f1ac0a9 | ||
|
|
269a465fc4 | ||
|
|
60e0bbd713 | ||
|
|
827c97f0d3 | ||
|
|
c8bd76cd66 | ||
|
|
ec5f585df4 | ||
|
|
1de48f33ca | ||
|
|
6b41a9593e | ||
|
|
82267083e8 | ||
|
|
c385961d33 | ||
|
|
20bab6edec | ||
|
|
67bed54f32 | ||
|
|
562a571281 | ||
|
|
fc68c81791 | ||
|
|
5d9070bc60 | ||
|
|
b11fb0dfd1 | ||
|
|
d1c5c5f160 | ||
|
|
0b1d1440aa | ||
|
|
0c420d64b3 | ||
|
|
f9082104ed | ||
|
|
983834cd52 | ||
|
|
96d10c8b39 | ||
|
|
24cb992843 | ||
|
|
7907c0bf58 | ||
|
|
ebf4fd9a09 | ||
|
|
38b9901274 | ||
|
|
642842d61b | ||
|
|
e161c511af | ||
|
|
f29e82685e | ||
|
|
3a5ae96e7b | ||
|
|
b63a685386 | ||
|
|
877da82b06 | ||
|
|
6637629045 | ||
|
|
e925b6c572 | ||
|
|
5412f4aba5 | ||
|
|
2d5ad0d208 | ||
|
|
1ade70aa1e | ||
|
|
2658c4d57b | ||
|
|
84c76bc04a | ||
|
|
6effcd3755 | ||
|
|
d9866489f0 | ||
|
|
c4d8bdc3db | ||
|
|
681eb1cfcc | ||
|
|
a5d21f3b09 | ||
|
|
7ba068c3e4 | ||
|
|
b201eeedbd | ||
|
|
f28cb84977 | ||
|
|
714872cd58 | ||
|
|
0708bd60ee | ||
|
|
23a6c85b80 | ||
|
|
4a28599fbd | ||
|
|
7c66d3c793 | ||
|
|
cc9edfffd8 | ||
|
|
6fa2454c9a | ||
|
|
487e699021 | ||
|
|
a7cdb745c1 | ||
|
|
73c86ee6a0 | ||
|
|
48eb590065 | ||
|
|
33562a9d8d | ||
|
|
c9194ba382 | ||
|
|
a199fa6388 | ||
|
|
4c8608dc61 | ||
|
|
a6b0f788e7 | ||
|
|
df6604a734 | ||
|
|
1ca86cf9ce | ||
|
|
78e26f8b75 | ||
|
|
2191312bb9 | ||
|
|
fcc6b41ab7 | ||
|
|
9458b8978f | ||
|
|
d75e8aeafa | ||
|
|
2eba98a465 | ||
|
|
a7a7aab7a0 | ||
|
|
86bfbb47d5 | ||
|
|
d33a269548 | ||
|
|
d3f8ea2df0 | ||
|
|
7df56ed617 | ||
|
|
e34dcc0406 | ||
|
|
a834ba8759 | ||
|
|
c67f345d0e | ||
|
|
8b8e510bfe | ||
|
|
3db839a5cb | ||
|
|
417c19577a | ||
|
|
b5953039de | ||
|
|
a43e80dd9c | ||
|
|
ad5f27bc5f | ||
|
|
05e0985f29 | ||
|
|
7b3314c5db | ||
|
|
a55ba6e614 | ||
|
|
f9bec1edf8 | ||
|
|
16199e968e | ||
|
|
02452421d5 | ||
|
|
3a5c7c75ad | ||
|
|
a7415ecfd8 | ||
|
|
934def5fcc | ||
|
|
0796791de5 | ||
|
|
6c148b223d | ||
|
|
4b168f4838 | ||
|
|
1c114eaef3 | ||
|
|
e053215155 | ||
|
|
13482b0fc1 | ||
|
|
38fa152cc4 | ||
|
|
2d9616c29c | ||
|
|
915e26527b | ||
|
|
2d604d9330 | ||
|
|
e7199826cc | ||
|
|
70e24b7594 | ||
|
|
c1602aafc7 | ||
|
|
a3fec11438 | ||
|
|
b1fd1b3ab3 | ||
|
|
5397799aac | ||
|
|
8e837dde1a | ||
|
|
9ae91a2ec3 | ||
|
|
276d3d10a0 | ||
|
|
f13623184a | ||
|
|
ef61e1487f | ||
|
|
701e2b334f | ||
|
|
6ebd6e7890 | ||
|
|
bd3a9b2f8d | ||
|
|
18d3877151 | ||
|
|
53e83d8697 | ||
|
|
6377fc75c6 | ||
|
|
2c30d19cbe | ||
|
|
9b247fccd4 | ||
|
|
3d38aa7138 | ||
|
|
7d2552b3f2 | ||
|
|
117a209ad4 | ||
|
|
071e7800a0 | ||
|
|
a76fde3d23 | ||
|
|
1fc57d7358 | ||
|
|
916d8be0ae | ||
|
|
a38412de7b | ||
|
|
9c9f0ddb93 | ||
|
|
f8fbe96da4 | ||
|
|
215a27fd95 | ||
|
|
5cba2e7087 | ||
|
|
5623839c71 | ||
|
|
78d3aa5fcd | ||
|
|
a7c78d2cd2 | ||
|
|
4db35fa375 | ||
|
|
e67a1413b6 | ||
|
|
4f3053a8cc | ||
|
|
b3c2bf125f | ||
|
|
9d5299e9ec | ||
|
|
aee15adf1b | ||
|
|
b185a70c21 | ||
|
|
a3aba7a9aa | ||
|
|
866ee5da91 | ||
|
|
e8039a7da8 | ||
|
|
5e0540077a | ||
|
|
b346bd9b83 | ||
|
|
062e2e915b | ||
|
|
e0a48c4972 | ||
|
|
f53242c081 | ||
|
|
4b53bb1a32 | ||
|
|
4c49ecedb5 | ||
|
|
4ff1870a4b | ||
|
|
6c832ee328 | ||
|
|
25264e7852 | ||
|
|
18dd0d569d | ||
|
|
3ea8d7a019 | ||
|
|
da3f10a55e | ||
|
|
8c991b5b26 | ||
|
|
22c1aafb9b | ||
|
|
8d6d1c442b | ||
|
|
95b179fb39 | ||
|
|
3a0a9e2d8f | ||
|
|
0a0d63457d | ||
|
|
920fb6d0e1 | ||
|
|
fd0fc8f4fe | ||
|
|
1c552ff23a | ||
|
|
5163dd38e5 | ||
|
|
2a27dad2fb | ||
|
|
930f74c610 | ||
|
|
3f250c9e12 | ||
|
|
fa408d264c | ||
|
|
09ea27f1ee | ||
|
|
db7156dafd | ||
|
|
4420281d96 | ||
|
|
d9afebe216 | ||
|
|
1d9cc5ca05 | ||
|
|
edb06f6aed | ||
|
|
6ca3bcbcfd | ||
|
|
71a9d63232 | ||
|
|
fb62017e50 | ||
|
|
9adbeadeec | ||
|
|
2f7b234cc5 | ||
|
|
4f5f9506ab | ||
|
|
0cc0b6e052 | ||
|
|
cd78adb0ab | ||
|
|
f42e7d1a61 | ||
|
|
c4d759dfba | ||
|
|
a58f95fa91 | ||
|
|
39574dcf6b | ||
|
|
5b06ded0b1 | ||
|
|
155a4733f6 | ||
|
|
b7c29ea1b6 | ||
|
|
cc2d71c253 | ||
|
|
cd11613952 | ||
|
|
e0d6d00a87 | ||
|
|
2dfb3e95f6 | ||
|
|
f207e180df | ||
|
|
948d64bbef | ||
|
|
01e912e543 | ||
|
|
f95f6db0e3 | ||
|
|
216fc5d312 | ||
|
|
7a8590980e | ||
|
|
e8c14bb732 | ||
|
|
bf45f08e78 | ||
|
|
2c77a74c40 | ||
|
|
440cf63317 | ||
|
|
50b11e925b | ||
|
|
7cc81b4269 | ||
|
|
93b0813b73 | ||
|
|
649b44aefa | ||
|
|
1e95d74ae2 | ||
|
|
700d5f2673 | ||
|
|
3b8234e486 | ||
|
|
0feb0bf7c0 | ||
|
|
c5d148bf94 | ||
|
|
e5e86fc033 | ||
|
|
cc52cdc2a9 | ||
|
|
42a417167f | ||
|
|
4b0d9272ef | ||
|
|
48a303b8e9 | ||
|
|
8e15ba6cd6 | ||
|
|
7898937eae | ||
|
|
1bd0a76a20 | ||
|
|
2f179d61dc | ||
|
|
7457550673 | ||
|
|
c13a90ee69 | ||
|
|
5a7b51f809 | ||
|
|
f18ce203b5 | ||
|
|
b81b8637ec | ||
|
|
0c6f92d9be | ||
|
|
55b24c373f | ||
|
|
d10ef17f17 | ||
|
|
5fa2161b05 | ||
|
|
d8b712b325 | ||
|
|
220f7c81e9 | ||
|
|
fc7e4ac75b | ||
|
|
39933aeb62 | ||
|
|
beb8065660 | ||
|
|
36080fe352 | ||
|
|
a510f32124 | ||
|
|
cc277227ad | ||
|
|
3d194787b4 | ||
|
|
a8d5ef9894 | ||
|
|
6242e91a6b | ||
|
|
cc7b5d128b | ||
|
|
f914eb95eb | ||
|
|
8ae1eb0ebb | ||
|
|
2ba89d0deb | ||
|
|
3b08bf1c6c | ||
|
|
95689ec451 | ||
|
|
51554361fc | ||
|
|
491d29cc87 | ||
|
|
6a7a71af1f | ||
|
|
a25e038a8b | ||
|
|
5d783a4922 | ||
|
|
f0eab73f3d | ||
|
|
a693569621 | ||
|
|
30c67dcd8c | ||
|
|
2295cce489 | ||
|
|
bfbaf2daa5 | ||
|
|
dfe10e9dfe | ||
|
|
60ac915c9c | ||
|
|
b1b9e3ff53 | ||
|
|
c4c47ae8c6 | ||
|
|
17c3a63e50 | ||
|
|
654985177f | ||
|
|
0d791839e6 | ||
|
|
0fc76f7e17 | ||
|
|
41d33ee837 | ||
|
|
9485cc9308 | ||
|
|
e18211ffea | ||
|
|
a856ef387b | ||
|
|
fa73aa8dbf | ||
|
|
c48ec1334e | ||
|
|
1647970fb6 | ||
|
|
12ecf89a87 | ||
|
|
a0bd15245a | ||
|
|
0c18cab111 | ||
|
|
396197e881 | ||
|
|
6a564e2d5c | ||
|
|
f369202c12 | ||
|
|
a4678845dd | ||
|
|
174ebb51db | ||
|
|
626c78a690 | ||
|
|
9eaae770a6 | ||
|
|
ca60610306 | ||
|
|
082f8b17ab | ||
|
|
cf93d8d6e2 | ||
|
|
aae2fb8a30 | ||
|
|
23e52f14e3 | ||
|
|
c5b68fb273 | ||
|
|
6f17c9b2fe | ||
|
|
c98311b325 | ||
|
|
d44d4bd6fd | ||
|
|
2adaceab82 | ||
|
|
d979955c8a | ||
|
|
eae670ea4a | ||
|
|
b5825142d1 | ||
|
|
741e9303d4 | ||
|
|
538e3fc256 | ||
|
|
ba3dc8cae0 | ||
|
|
ae7c0380dc | ||
|
|
23e3413655 | ||
|
|
4fdb37771a | ||
|
|
94b54b7ca9 | ||
|
|
f9412f5fdb | ||
|
|
1d6829f400 | ||
|
|
f8bae897e5 | ||
|
|
dd1172b57e | ||
|
|
67d326a558 | ||
|
|
fe747040bc | ||
|
|
7d6c925cbc | ||
|
|
f488d06b20 | ||
|
|
c00a19ced3 | ||
|
|
e9810a6df2 | ||
|
|
cae15013e0 | ||
|
|
52c84da051 | ||
|
|
026f0bfce9 | ||
|
|
d19181fb29 | ||
|
|
2f9de2229f | ||
|
|
34f55739e0 | ||
|
|
668b059c07 | ||
|
|
753e5f1500 | ||
|
|
a6af8e5d8f | ||
|
|
3e1d5ac51b | ||
|
|
b0091452ca | ||
|
|
eff115267f | ||
|
|
07cde4f8fe | ||
|
|
9f28a48a92 | ||
|
|
0d3cd3b16a | ||
|
|
3dc82fb044 | ||
|
|
cb6e73347e | ||
|
|
ecd6cbaee6 | ||
|
|
d54e942264 | ||
|
|
28ba721455 | ||
|
|
784dd7848e | ||
|
|
e2a5f8ba1a | ||
|
|
8e11200306 | ||
|
|
7599f79a17 | ||
|
|
510389909c | ||
|
|
2c6e00174b | ||
|
|
24f3456990 | ||
|
|
20514ff288 | ||
|
|
381d255290 | ||
|
|
7f320f9146 | ||
|
|
cd51d3323b | ||
|
|
004b3caa43 | ||
|
|
dbe10799e3 | ||
|
|
054ba88434 | ||
|
|
da82a11b26 | ||
|
|
fec607db81 | ||
|
|
397a92f2ee | ||
|
|
b91e226063 | ||
|
|
da5782df92 | ||
|
|
9af0da4450 | ||
|
|
d49ac1e4ac | ||
|
|
57de19a5ca | ||
|
|
7c00a0b6a3 | ||
|
|
a93506df18 | ||
|
|
a03a92e9db | ||
|
|
feebb5dd1f | ||
|
|
6eee7cb42c | ||
|
|
11baff6740 | ||
|
|
cde1797cc0 | ||
|
|
d143284d99 | ||
|
|
2b94545190 | ||
|
|
ed6648a41e | ||
|
|
5e2c3eeac3 | ||
|
|
b23d8a912b | ||
|
|
4f13f8fd0a | ||
|
|
561c9cabd5 | ||
|
|
39ea967b30 | ||
|
|
da04ff040b | ||
|
|
b9b0866a46 | ||
|
|
c6ab7eebd9 | ||
|
|
db4e6d81c5 | ||
|
|
df68a7c82b | ||
|
|
838825d747 | ||
|
|
a87f6f2837 | ||
|
|
9d98669e7d | ||
|
|
408fbb0c70 | ||
|
|
998f819b04 | ||
|
|
6194b82752 | ||
|
|
334f46d0b6 | ||
|
|
2eea114ac0 | ||
|
|
97e9ebd29a | ||
|
|
ec261aea54 | ||
|
|
accc5faae3 | ||
|
|
0462f09ecc | ||
|
|
1226d73159 | ||
|
|
c67ecff3fe | ||
|
|
d5b42c09ee | ||
|
|
835bf9fd8d | ||
|
|
c720f831af | ||
|
|
df5763be37 | ||
|
|
80eebc2414 | ||
|
|
17d196126c | ||
|
|
addf150a9e | ||
|
|
cad1532f7c | ||
|
|
951afcaaed | ||
|
|
3241e4015b | ||
|
|
1dee5de9b4 | ||
|
|
742bad93b5 | ||
|
|
bb3cc6bba6 | ||
|
|
23ef2262bd | ||
|
|
d637a147ee | ||
|
|
8a4d19d9ba | ||
|
|
bea382f0dc | ||
|
|
8b39e48957 | ||
|
|
5b4538f021 | ||
|
|
36dc05c4da | ||
|
|
54f3bbbf47 | ||
|
|
f797fab206 | ||
|
|
ce2996e7d4 | ||
|
|
82d07ed2a8 | ||
|
|
c39d8f954e | ||
|
|
226f28edcb | ||
|
|
402b0b81d2 | ||
|
|
b08c19d926 | ||
|
|
9253f72dea | ||
|
|
f350948bde | ||
|
|
eeb2c28526 | ||
|
|
673288d58e | ||
|
|
772d67fd65 | ||
|
|
7552a6be36 | ||
|
|
33200090e8 | ||
|
|
01a6c725fa | ||
|
|
f6e04389e4 | ||
|
|
e22814b291 | ||
|
|
a66ef7210b | ||
|
|
184afa69ff | ||
|
|
ab115b5f87 | ||
|
|
3bbc4ad3db | ||
|
|
87af414a52 | ||
|
|
72555d5df8 | ||
|
|
fff39a307a | ||
|
|
a11f36ca60 | ||
|
|
433f8cb57e | ||
|
|
cd136fb293 | ||
|
|
6a3ab36101 | ||
|
|
1af968e73a | ||
|
|
94646f29c3 | ||
|
|
e028a0595c | ||
|
|
b16a7b0b3b | ||
|
|
e083a7067b | ||
|
|
205459d54d | ||
|
|
3d14431b96 | ||
|
|
2ba0ee989a | ||
|
|
b055470147 | ||
|
|
5943385d42 | ||
|
|
0abd67288b | ||
|
|
bbe58327c8 | ||
|
|
299c51ebc4 | ||
|
|
3a7f58d2a6 | ||
|
|
6123bba96d | ||
|
|
d5ab3b5072 | ||
|
|
df26f82536 | ||
|
|
dbe0c43515 | ||
|
|
f4052fdbc7 | ||
|
|
b5ade19c75 | ||
|
|
040eacb8bd | ||
|
|
20899c44ff | ||
|
|
35a2beb195 | ||
|
|
2056093855 | ||
|
|
2bf48514bc | ||
|
|
c109b1a920 | ||
|
|
45499328b8 | ||
|
|
4c61aa399d | ||
|
|
3e380c082a | ||
|
|
53db5bab36 | ||
|
|
6483beb096 | ||
|
|
e61c84ca72 | ||
|
|
d70086b841 | ||
|
|
a3ee037d6d | ||
|
|
2de18a6490 | ||
|
|
4134e915ce | ||
|
|
a838ba7b46 | ||
|
|
5f38214a41 | ||
|
|
19b5cb1e10 | ||
|
|
2478c88e07 | ||
|
|
59e59c19b2 | ||
|
|
c67f626b66 | ||
|
|
f65a3ad1cc | ||
|
|
490858a4d5 | ||
|
|
44a1aa5e44 | ||
|
|
a616bf3129 | ||
|
|
f2f19484b8 | ||
|
|
f572b55237 | ||
|
|
554570dc22 | ||
|
|
5239b2c7ab | ||
|
|
ae94b067b3 | ||
|
|
5e772bd10b | ||
|
|
91bcbd0b26 | ||
|
|
54bb309d87 | ||
|
|
75f7a96025 | ||
|
|
ccd80653ff | ||
|
|
5ca88a4fd9 | ||
|
|
a1c6cecf10 | ||
|
|
c5ccf382df | ||
|
|
8358d0abfa | ||
|
|
bad3b14438 | ||
|
|
f42ef494f8 | ||
|
|
bb7f454ecd | ||
|
|
7f48fadd41 | ||
|
|
af2138e8b8 | ||
|
|
091beffae7 | ||
|
|
408fb502a1 | ||
|
|
7660539689 | ||
|
|
5a6061ff61 | ||
|
|
970950e3a8 | ||
|
|
431b2fd4a8 | ||
|
|
88545184be | ||
|
|
2c23caacd4 | ||
|
|
9edea9bc49 | ||
|
|
d43279a1cc | ||
|
|
10848d74a0 | ||
|
|
f9df23a091 | ||
|
|
17a1c05728 | ||
|
|
66782ef19c | ||
|
|
fb7f509e5c | ||
|
|
1a5acf43aa |
19
.claude/settings.json.example
Normal file
19
.claude/settings.json.example
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [],
|
||||
"deny": []
|
||||
},
|
||||
"env": {
|
||||
"__comment": "Environment variables for MCP servers. Override in .claude/settings.local.json with actual values.",
|
||||
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
||||
},
|
||||
"enabledMcpjsonServers": [
|
||||
"context7",
|
||||
"sequential-thinking",
|
||||
"github",
|
||||
"fetch",
|
||||
"playwright",
|
||||
"ide"
|
||||
],
|
||||
"enableAllProjectMcpServers": true
|
||||
}
|
||||
4
.devcontainer/Dockerfile
Normal file
4
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,4 @@
|
||||
FROM mcr.microsoft.com/devcontainers/python:3.12-bookworm
|
||||
|
||||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get -y install libgmp-dev libmpfr-dev libmpc-dev
|
||||
42
.devcontainer/README.md
Normal file
42
.devcontainer/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Development with devcontainer
|
||||
|
||||
This project includes a devcontainer configuration that allows you to open the project in a container with a fully configured development environment.
|
||||
Both frontend and backend environments are initialized when the container is started.
|
||||
|
||||
## GitHub Codespaces
|
||||
|
||||
[](https://codespaces.new/langgenius/dify)
|
||||
|
||||
you can simply click the button above to open this project in GitHub Codespaces.
|
||||
|
||||
For more info, check out the [GitHub documentation](https://docs.github.com/en/free-pro-team@latest/github/developing-online-with-codespaces/creating-a-codespace#creating-a-codespace).
|
||||
|
||||
## VS Code Dev Containers
|
||||
|
||||
[](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/langgenius/dify)
|
||||
|
||||
if you have VS Code installed, you can click the button above to open this project in VS Code Dev Containers.
|
||||
|
||||
You can learn more in the [Dev Containers documentation](https://code.visualstudio.com/docs/devcontainers/containers).
|
||||
|
||||
## Pros of Devcontainer
|
||||
|
||||
Unified Development Environment: By using devcontainers, you can ensure that all developers are developing in the same environment, reducing the occurrence of "it works on my machine" type of issues.
|
||||
|
||||
Quick Start: New developers can set up their development environment in a few simple steps, without spending a lot of time on environment configuration.
|
||||
|
||||
Isolation: Devcontainers isolate your project from your host operating system, reducing the chance of OS updates or other application installations impacting the development environment.
|
||||
|
||||
## Cons of Devcontainer
|
||||
|
||||
Learning Curve: For developers unfamiliar with Docker and VS Code, using devcontainers may be somewhat complex.
|
||||
|
||||
Performance Impact: While usually minimal, programs running inside a devcontainer may be slightly slower than those running directly on the host.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
if you see such error message when you open this project in codespaces:
|
||||

|
||||
|
||||
a simple workaround is change `/signin` endpoint into another one, then login with GitHub account and close the tab, then change it back to `/signin` endpoint. Then all things will be fine.
|
||||
The reason is `signin` endpoint is not allowed in codespaces, details can be found [here](https://github.com/orgs/community/discussions/5204)
|
||||
52
.devcontainer/devcontainer.json
Normal file
52
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,52 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/anaconda
|
||||
{
|
||||
"name": "Python 3.12",
|
||||
"build": {
|
||||
"context": "..",
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/node:1": {
|
||||
"nodeGypDependencies": true,
|
||||
"version": "lts"
|
||||
},
|
||||
"ghcr.io/devcontainers-extra/features/npm-package:1": {
|
||||
"package": "typescript",
|
||||
"version": "latest"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/docker-in-docker:2": {
|
||||
"moby": true,
|
||||
"azureDnsAutoDetection": true,
|
||||
"installDockerBuildx": true,
|
||||
"version": "latest",
|
||||
"dockerDashComposeVersion": "v2"
|
||||
}
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"ms-python.pylint",
|
||||
"GitHub.copilot",
|
||||
"ms-python.python"
|
||||
]
|
||||
}
|
||||
},
|
||||
"postStartCommand": "./.devcontainer/post_start_command.sh",
|
||||
"postCreateCommand": "./.devcontainer/post_create_command.sh"
|
||||
|
||||
// Features to add to the dev container. More info: https://containers.dev/features.
|
||||
// "features": {},
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "python --version",
|
||||
|
||||
// Configure tool-specific properties.
|
||||
// "customizations": {},
|
||||
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
// "remoteUser": "root"
|
||||
}
|
||||
3
.devcontainer/noop.txt
Normal file
3
.devcontainer/noop.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
This file copied into the container along with environment.yml* from the parent
|
||||
folder. This file is included to prevents the Dockerfile COPY instruction from
|
||||
failing if no environment.yml is found.
|
||||
16
.devcontainer/post_create_command.sh
Executable file
16
.devcontainer/post_create_command.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
WORKSPACE_ROOT=$(pwd)
|
||||
|
||||
corepack enable
|
||||
cd web && pnpm install
|
||||
pipx install uv
|
||||
|
||||
echo "alias start-api=\"cd $WORKSPACE_ROOT/api && uv run python -m flask run --host 0.0.0.0 --port=5001 --debug\"" >> ~/.bashrc
|
||||
echo "alias start-worker=\"cd $WORKSPACE_ROOT/api && uv run python -m celery -A app.celery worker -P threads -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion,plugin,workflow_storage\"" >> ~/.bashrc
|
||||
echo "alias start-web=\"cd $WORKSPACE_ROOT/web && pnpm dev\"" >> ~/.bashrc
|
||||
echo "alias start-web-prod=\"cd $WORKSPACE_ROOT/web && pnpm build && pnpm start\"" >> ~/.bashrc
|
||||
echo "alias start-containers=\"cd $WORKSPACE_ROOT/docker && docker-compose -f docker-compose.middleware.yaml -p dify --env-file middleware.env up -d\"" >> ~/.bashrc
|
||||
echo "alias stop-containers=\"cd $WORKSPACE_ROOT/docker && docker-compose -f docker-compose.middleware.yaml -p dify --env-file middleware.env down\"" >> ~/.bashrc
|
||||
|
||||
source /home/vscode/.bashrc
|
||||
|
||||
3
.devcontainer/post_start_command.sh
Executable file
3
.devcontainer/post_start_command.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
cd api && uv sync
|
||||
BIN
.devcontainer/troubleshooting.png
Normal file
BIN
.devcontainer/troubleshooting.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
39
.editorconfig
Normal file
39
.editorconfig
Normal file
@@ -0,0 +1,39 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.toml]
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
|
||||
# Markdown and MDX are whitespace sensitive languages.
|
||||
# Do not remove trailing spaces.
|
||||
[*.{md,mdx}]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# Matches multiple files with brace expansion notation
|
||||
# Set default charset
|
||||
[*.{js,tsx}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Matches the exact files package.json
|
||||
[package.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
7
.gitattributes
vendored
Normal file
7
.gitattributes
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# Ensure that .sh scripts use LF as line separator, even if they are checked out
|
||||
# to Windows(NTFS) file-system, by a user of Docker for Windows.
|
||||
# These .sh scripts will be run from the Container after `docker compose up -d`.
|
||||
# If they appear to be CRLF style, Dash from the Container will fail to execute
|
||||
# them.
|
||||
|
||||
*.sh text eol=lf
|
||||
41
.github/CODE_OF_CONDUCT.md
vendored
Normal file
41
.github/CODE_OF_CONDUCT.md
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
# Dify Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
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,
|
||||
and learning from the experience
|
||||
- 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
|
||||
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
|
||||
address, without their explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Language Policy
|
||||
|
||||
To facilitate clear and effective communication, all discussions, comments, documentation, and pull requests in this project should be conducted in English. This ensures that all contributors can participate and collaborate effectively.
|
||||
24
.github/DISCUSSION_TEMPLATE/general.yml
vendored
Normal file
24
.github/DISCUSSION_TEMPLATE/general.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
title: "General Discussion"
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)).
|
||||
required: true
|
||||
- label: "[FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)"
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Content
|
||||
placeholder: Please describe the content you would like to discuss.
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please limit one request per issue.
|
||||
30
.github/DISCUSSION_TEMPLATE/help.yml
vendored
Normal file
30
.github/DISCUSSION_TEMPLATE/help.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
title: "Help"
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)).
|
||||
required: true
|
||||
- label: "[FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)"
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 1. Is this request related to a challenge you're experiencing? Tell me about your story.
|
||||
placeholder: Please describe the specific scenario or problem you're facing as clearly as possible. For instance "I was trying to use [feature] for [specific task], and [what happened]... It was frustrating because...."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 2. Additional context or comments
|
||||
placeholder: (Any other information, comments, documentations, links, or screenshots that would provide more clarity. This is the place to add anything else not covered above.)
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please limit one request per issue.
|
||||
37
.github/DISCUSSION_TEMPLATE/suggestion.yml
vendored
Normal file
37
.github/DISCUSSION_TEMPLATE/suggestion.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
title: Suggestions for New Features
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)).
|
||||
required: true
|
||||
- label: "[FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)"
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 1. Is this request related to a challenge you're experiencing? Tell me about your story.
|
||||
placeholder: Please describe the specific scenario or problem you're facing as clearly as possible. For instance "I was trying to use [feature] for [specific task], and [what happened]... It was frustrating because...."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 2. Additional context or comments
|
||||
placeholder: (Any other information, comments, documentations, links, or screenshots that would provide more clarity. This is the place to add anything else not covered above.)
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 3. Can you help us with this feature?
|
||||
description: Let us know! This is not a commitment, but a starting point for collaboration.
|
||||
options:
|
||||
- label: I am interested in contributing to this feature.
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please limit one request per issue.
|
||||
65
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
65
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
name: "🕷️ Bug report"
|
||||
description: Report errors or unexpected behavior
|
||||
labels:
|
||||
- bug
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
|
||||
required: true
|
||||
- label: This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general).
|
||||
required: true
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report, otherwise it will be closed.
|
||||
required: true
|
||||
- label: 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Dify version
|
||||
description: See about section in Dify console
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Cloud or Self Hosted
|
||||
description: How / Where was Dify installed from?
|
||||
multiple: true
|
||||
options:
|
||||
- Cloud
|
||||
- Self Hosted (Docker)
|
||||
- Self Hosted (Source)
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: We highly suggest including screenshots and a bug report log. Please use the right markdown syntax for code blocks.
|
||||
placeholder: Having detailed steps helps us reproduce the bug. If you have logs, please use fenced code blocks (triple backticks ```) to format them.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ✔️ Expected Behavior
|
||||
description: Describe what you expected to happen.
|
||||
placeholder: What were you expecting? Please do not copy and paste the steps to reproduce here.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ❌ Actual Behavior
|
||||
description: Describe what actually happened.
|
||||
placeholder: What happened instead? Please do not copy and paste the steps to reproduce here.
|
||||
validations:
|
||||
required: false
|
||||
14
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
14
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: "\U0001F510 Security Vulnerabilities"
|
||||
url: "https://github.com/langgenius/dify/security/advisories/new"
|
||||
about: Report security vulnerabilities through GitHub Security Advisories to ensure responsible disclosure. 💡 Please do not report security vulnerabilities in public issues.
|
||||
- name: "\U0001F4A1 Model Providers & Plugins"
|
||||
url: "https://github.com/langgenius/dify-official-plugins/issues/new/choose"
|
||||
about: Report issues with official plugins or model providers, you will need to provide the plugin version and other relevant details.
|
||||
- name: "\U0001F4AC Documentation Issues"
|
||||
url: "https://github.com/langgenius/dify-docs/issues/new"
|
||||
about: Report issues with the documentation, such as typos, outdated information, or missing content. Please provide the specific section and details of the issue.
|
||||
- name: "\U0001F4E7 Discussions"
|
||||
url: https://github.com/langgenius/dify/discussions/categories/general
|
||||
about: General discussions and seek help from the community
|
||||
40
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
40
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
name: "⭐ Feature or enhancement request"
|
||||
description: Propose something new.
|
||||
labels:
|
||||
- enhancement
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
|
||||
required: true
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report, otherwise it will be closed.
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 1. Is this request related to a challenge you're experiencing? Tell me about your story.
|
||||
placeholder: Please describe the specific scenario or problem you're facing as clearly as possible. For instance "I was trying to use [feature] for [specific task], and [what happened]... It was frustrating because...."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: 2. Additional context or comments
|
||||
placeholder: (Any other information, comments, documentations, links, or screenshots that would provide more clarity. This is the place to add anything else not covered above.)
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: 3. Can you help us with this feature?
|
||||
description: Let us know! This is not a commitment, but a starting point for collaboration.
|
||||
options:
|
||||
- label: I am interested in contributing to this feature.
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please limit one request per issue.
|
||||
44
.github/ISSUE_TEMPLATE/refactor.yml
vendored
Normal file
44
.github/ISSUE_TEMPLATE/refactor.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: "✨ Refactor"
|
||||
description: Refactor existing code for improved readability and maintainability.
|
||||
title: "[Chore/Refactor] "
|
||||
labels:
|
||||
- refactor
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Self Checks
|
||||
description: "To make sure we get to you in time, please check the following :)"
|
||||
options:
|
||||
- label: I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
|
||||
required: true
|
||||
- label: This is only for refactoring, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general).
|
||||
required: true
|
||||
- label: I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
|
||||
required: true
|
||||
- label: I confirm that I am using English to submit this report, otherwise it will be closed.
|
||||
required: true
|
||||
- label: 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
|
||||
required: true
|
||||
- label: "Please do not modify this template :) and fill in all the required fields."
|
||||
required: true
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
placeholder: "Describe the refactor you are proposing."
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: motivation
|
||||
attributes:
|
||||
label: Motivation
|
||||
placeholder: "Explain why this refactor is necessary."
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional Context
|
||||
placeholder: "Add any other context or screenshots about the request here."
|
||||
validations:
|
||||
required: false
|
||||
13
.github/ISSUE_TEMPLATE/tracker.yml
vendored
Normal file
13
.github/ISSUE_TEMPLATE/tracker.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: "👾 Tracker"
|
||||
description: For inner usages, please do not use this template.
|
||||
title: "[Tracker] "
|
||||
labels:
|
||||
- tracker
|
||||
body:
|
||||
- type: textarea
|
||||
id: content
|
||||
attributes:
|
||||
label: Blockers
|
||||
placeholder: "- [ ] ..."
|
||||
validations:
|
||||
required: true
|
||||
32
.github/ISSUE_TEMPLATE/🐛-bug-report.md
vendored
32
.github/ISSUE_TEMPLATE/🐛-bug-report.md
vendored
@@ -1,32 +0,0 @@
|
||||
---
|
||||
name: "\U0001F41B Bug report"
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Please provide a clear and concise description of what the bug is. Include
|
||||
screenshots if needed. Please test using the latest version of the relevant
|
||||
Dify packages to make sure your issue has not already been fixed.
|
||||
-->
|
||||
|
||||
Dify version: Cloud | Self Host
|
||||
|
||||
## Steps To Reproduce
|
||||
<!--
|
||||
Your bug will get fixed much faster if we can run your code and it doesn't
|
||||
have dependencies other than Dify. Issues without reproduction steps or
|
||||
code examples may be immediately closed as not actionable.
|
||||
-->
|
||||
|
||||
1.
|
||||
2.
|
||||
|
||||
|
||||
## The current behavior
|
||||
|
||||
|
||||
## The expected behavior
|
||||
20
.github/ISSUE_TEMPLATE/🚀-feature-request.md
vendored
20
.github/ISSUE_TEMPLATE/🚀-feature-request.md
vendored
@@ -1,20 +0,0 @@
|
||||
---
|
||||
name: "\U0001F680 Feature request"
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
10
.github/ISSUE_TEMPLATE/🤔-questions-and-help.md
vendored
10
.github/ISSUE_TEMPLATE/🤔-questions-and-help.md
vendored
@@ -1,10 +0,0 @@
|
||||
---
|
||||
name: "\U0001F914 Questions and Help"
|
||||
about: Ask a usage or consultation question
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
12
.github/dependabot.yml
vendored
Normal file
12
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/web"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 2
|
||||
- package-ecosystem: "uv"
|
||||
directory: "/api"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
open-pull-requests-limit: 2
|
||||
1
.github/linters/.hadolint.yaml
vendored
Normal file
1
.github/linters/.hadolint.yaml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
failure-threshold: "error"
|
||||
2
.github/linters/.isort.cfg
vendored
Normal file
2
.github/linters/.isort.cfg
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
[settings]
|
||||
line_length=120
|
||||
11
.github/linters/.yaml-lint.yml
vendored
Normal file
11
.github/linters/.yaml-lint.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
brackets:
|
||||
max-spaces-inside: 1
|
||||
comments-indentation: disable
|
||||
document-start: disable
|
||||
line-length: disable
|
||||
truthy: disable
|
||||
22
.github/linters/editorconfig-checker.json
vendored
Normal file
22
.github/linters/editorconfig-checker.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"Verbose": false,
|
||||
"Debug": false,
|
||||
"IgnoreDefaults": false,
|
||||
"SpacesAfterTabs": false,
|
||||
"NoColor": false,
|
||||
"Exclude": [
|
||||
"^web/public/vs/",
|
||||
"^web/public/pdf.worker.min.mjs$",
|
||||
"web/app/components/base/icons/src/vender/"
|
||||
],
|
||||
"AllowedContentTypes": [],
|
||||
"PassedFiles": [],
|
||||
"Disable": {
|
||||
"EndOfLine": false,
|
||||
"Indentation": false,
|
||||
"IndentSize": true,
|
||||
"InsertFinalNewline": false,
|
||||
"TrimTrailingWhitespace": false,
|
||||
"MaxLineLength": false
|
||||
}
|
||||
}
|
||||
23
.github/pull_request_template.md
vendored
Normal file
23
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
> [!IMPORTANT]
|
||||
>
|
||||
> 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md)
|
||||
> 1. Ensure there is an associated issue and you have been assigned to it
|
||||
> 1. Use the correct syntax to link this PR: `Fixes #<issue number>`.
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. -->
|
||||
|
||||
## Screenshots
|
||||
|
||||
| Before | After |
|
||||
|--------|-------|
|
||||
| ... | ... |
|
||||
|
||||
## Checklist
|
||||
|
||||
- [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs)
|
||||
- [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
|
||||
- [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
|
||||
- [x] I've updated the documentation accordingly.
|
||||
- [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
|
||||
97
.github/workflows/api-tests.yml
vendored
Normal file
97
.github/workflows/api-tests.yml
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
name: Run Pytest
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: api-tests-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: API Tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
strategy:
|
||||
matrix:
|
||||
python-version:
|
||||
- "3.11"
|
||||
- "3.12"
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup UV and Python
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
enable-cache: true
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache-dependency-glob: api/uv.lock
|
||||
|
||||
- name: Check UV lockfile
|
||||
run: uv lock --project api --check
|
||||
|
||||
- name: Install dependencies
|
||||
run: uv sync --project api --dev
|
||||
|
||||
- name: Run pyrefly check
|
||||
run: |
|
||||
cd api
|
||||
uv add --dev pyrefly
|
||||
uv run pyrefly check || true
|
||||
|
||||
- name: Run dify config tests
|
||||
run: uv run --project api dev/pytest/pytest_config_tests.py
|
||||
|
||||
- name: Set up dotenvs
|
||||
run: |
|
||||
cp docker/.env.example docker/.env
|
||||
cp docker/middleware.env.example docker/middleware.env
|
||||
|
||||
- name: Expose Service Ports
|
||||
run: sh .github/workflows/expose_service_ports.sh
|
||||
|
||||
- name: Set up Sandbox
|
||||
uses: hoverkraft-tech/compose-action@v2.0.2
|
||||
with:
|
||||
compose-file: |
|
||||
docker/docker-compose.middleware.yaml
|
||||
services: |
|
||||
db
|
||||
redis
|
||||
sandbox
|
||||
ssrf_proxy
|
||||
|
||||
- name: setup test config
|
||||
run: |
|
||||
cp api/tests/integration_tests/.env.example api/tests/integration_tests/.env
|
||||
|
||||
- name: Run Workflow
|
||||
run: uv run --project api bash dev/pytest/pytest_workflow.sh
|
||||
|
||||
- name: Run Tool
|
||||
run: uv run --project api bash dev/pytest/pytest_tools.sh
|
||||
|
||||
- name: Run TestContainers
|
||||
run: uv run --project api bash dev/pytest/pytest_testcontainers.sh
|
||||
|
||||
- name: Run Unit tests
|
||||
run: |
|
||||
uv run --project api bash dev/pytest/pytest_unit_tests.sh
|
||||
|
||||
- name: Coverage Summary
|
||||
run: |
|
||||
set -x
|
||||
# Extract coverage percentage and create a summary
|
||||
TOTAL_COVERAGE=$(python -c 'import json; print(json.load(open("coverage.json"))["totals"]["percent_covered_display"])')
|
||||
|
||||
# Create a detailed coverage summary
|
||||
echo "### Test Coverage Summary :test_tube:" >> $GITHUB_STEP_SUMMARY
|
||||
echo "Total Coverage: ${TOTAL_COVERAGE}%" >> $GITHUB_STEP_SUMMARY
|
||||
uv run --project api coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
85
.github/workflows/autofix.yml
vendored
Normal file
85
.github/workflows/autofix.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
name: autofix.ci
|
||||
on:
|
||||
pull_request:
|
||||
branches: ["main"]
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
autofix:
|
||||
if: github.repository == 'langgenius/dify'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
# Use uv to ensure we have the same ruff version in CI and locally.
|
||||
- uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
python-version: "3.11"
|
||||
- run: |
|
||||
cd api
|
||||
uv sync --dev
|
||||
# fmt first to avoid line too long
|
||||
uv run ruff format ..
|
||||
# Fix lint errors
|
||||
uv run ruff check --fix .
|
||||
# Format code
|
||||
uv run ruff format ..
|
||||
|
||||
- name: ast-grep
|
||||
run: |
|
||||
uvx --from ast-grep-cli sg --pattern 'db.session.query($WHATEVER).filter($HERE)' --rewrite 'db.session.query($WHATEVER).where($HERE)' -l py --update-all
|
||||
uvx --from ast-grep-cli sg --pattern 'session.query($WHATEVER).filter($HERE)' --rewrite 'session.query($WHATEVER).where($HERE)' -l py --update-all
|
||||
uvx --from ast-grep-cli sg -p '$A = db.Column($$$B)' -r '$A = mapped_column($$$B)' -l py --update-all
|
||||
uvx --from ast-grep-cli sg -p '$A : $T = db.Column($$$B)' -r '$A : $T = mapped_column($$$B)' -l py --update-all
|
||||
# Convert Optional[T] to T | None (ignoring quoted types)
|
||||
cat > /tmp/optional-rule.yml << 'EOF'
|
||||
id: convert-optional-to-union
|
||||
language: python
|
||||
rule:
|
||||
kind: generic_type
|
||||
all:
|
||||
- has:
|
||||
kind: identifier
|
||||
pattern: Optional
|
||||
- has:
|
||||
kind: type_parameter
|
||||
has:
|
||||
kind: type
|
||||
pattern: $T
|
||||
fix: $T | None
|
||||
EOF
|
||||
uvx --from ast-grep-cli sg scan --inline-rules "$(cat /tmp/optional-rule.yml)" --update-all
|
||||
# Fix forward references that were incorrectly converted (Python doesn't support "Type" | None syntax)
|
||||
find . -name "*.py" -type f -exec sed -i.bak -E 's/"([^"]+)" \| None/Optional["\1"]/g; s/'"'"'([^'"'"']+)'"'"' \| None/Optional['"'"'\1'"'"']/g' {} \;
|
||||
find . -name "*.py.bak" -type f -delete
|
||||
# Rewrite SQLAlchemy with Type Annotations
|
||||
uvx --from ast-grep-cli sg scan -r dev/ast-grep/rules/remove-nullable-arg.yaml api/models -U
|
||||
|
||||
- name: mdformat
|
||||
run: |
|
||||
uvx mdformat .
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
package_json_file: web/package.json
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
cache-dependency-path: ./web/package.json
|
||||
|
||||
- name: Web dependencies
|
||||
working-directory: ./web
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: oxlint
|
||||
working-directory: ./web
|
||||
run: |
|
||||
pnpx oxlint --fix
|
||||
|
||||
- uses: autofix-ci/action@635ffb0c9798bd160680f18fd73371e355b85f27
|
||||
60
.github/workflows/build-api-image.yml
vendored
60
.github/workflows/build-api-image.yml
vendored
@@ -1,60 +0,0 @@
|
||||
name: Build and Push API Image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
- 'deploy/dev'
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false
|
||||
steps:
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: langgenius/dify-api
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=ref,event=branch
|
||||
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
|
||||
type=semver,pattern={{major}}.{{minor}}.{{patch}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: "{{defaultContext}}:api"
|
||||
platforms: linux/amd64,linux/arm64
|
||||
build-args: |
|
||||
COMMIT_SHA=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
- name: Deploy to server
|
||||
if: github.ref == 'refs/heads/deploy/dev'
|
||||
uses: appleboy/ssh-action@v0.1.8
|
||||
with:
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
username: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
script: |
|
||||
${{ secrets.SSH_SCRIPT }}
|
||||
151
.github/workflows/build-push.yml
vendored
Normal file
151
.github/workflows/build-push.yml
vendored
Normal file
@@ -0,0 +1,151 @@
|
||||
name: Build and Push API & Web
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
- "deploy/**"
|
||||
- "build/**"
|
||||
- "release/e-*"
|
||||
- "hotfix/**"
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
concurrency:
|
||||
group: build-push-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
||||
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
DIFY_WEB_IMAGE_NAME: ${{ vars.DIFY_WEB_IMAGE_NAME || 'langgenius/dify-web' }}
|
||||
DIFY_API_IMAGE_NAME: ${{ vars.DIFY_API_IMAGE_NAME || 'langgenius/dify-api' }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ${{ matrix.platform == 'linux/arm64' && 'arm64_runner' || 'ubuntu-latest' }}
|
||||
if: github.repository == 'langgenius/dify'
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- service_name: "build-api-amd64"
|
||||
image_name_env: "DIFY_API_IMAGE_NAME"
|
||||
context: "api"
|
||||
platform: linux/amd64
|
||||
- service_name: "build-api-arm64"
|
||||
image_name_env: "DIFY_API_IMAGE_NAME"
|
||||
context: "api"
|
||||
platform: linux/arm64
|
||||
- service_name: "build-web-amd64"
|
||||
image_name_env: "DIFY_WEB_IMAGE_NAME"
|
||||
context: "web"
|
||||
platform: linux/amd64
|
||||
- service_name: "build-web-arm64"
|
||||
image_name_env: "DIFY_WEB_IMAGE_NAME"
|
||||
context: "web"
|
||||
platform: linux/arm64
|
||||
|
||||
steps:
|
||||
- name: Prepare
|
||||
run: |
|
||||
platform=${{ matrix.platform }}
|
||||
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ env.DOCKERHUB_USER }}
|
||||
password: ${{ env.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Extract metadata for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env[matrix.image_name_env] }}
|
||||
|
||||
- name: Build Docker image
|
||||
id: build
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: "{{defaultContext}}:${{ matrix.context }}"
|
||||
platforms: ${{ matrix.platform }}
|
||||
build-args: COMMIT_SHA=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
outputs: type=image,name=${{ env[matrix.image_name_env] }},push-by-digest=true,name-canonical=true,push=true
|
||||
cache-from: type=gha,scope=${{ matrix.service_name }}
|
||||
cache-to: type=gha,mode=max,scope=${{ matrix.service_name }}
|
||||
|
||||
- name: Export digest
|
||||
env:
|
||||
DIGEST: ${{ steps.build.outputs.digest }}
|
||||
run: |
|
||||
mkdir -p /tmp/digests
|
||||
sanitized_digest=${DIGEST#sha256:}
|
||||
touch "/tmp/digests/${sanitized_digest}"
|
||||
|
||||
- name: Upload digest
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: digests-${{ matrix.context }}-${{ env.PLATFORM_PAIR }}
|
||||
path: /tmp/digests/*
|
||||
if-no-files-found: error
|
||||
retention-days: 1
|
||||
|
||||
create-manifest:
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'langgenius/dify'
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- service_name: "merge-api-images"
|
||||
image_name_env: "DIFY_API_IMAGE_NAME"
|
||||
context: "api"
|
||||
- service_name: "merge-web-images"
|
||||
image_name_env: "DIFY_WEB_IMAGE_NAME"
|
||||
context: "web"
|
||||
steps:
|
||||
- name: Download digests
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: /tmp/digests
|
||||
pattern: digests-${{ matrix.context }}-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ env.DOCKERHUB_USER }}
|
||||
password: ${{ env.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
images: ${{ env[matrix.image_name_env] }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-') }}
|
||||
type=ref,event=branch
|
||||
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
|
||||
type=raw,value=${{ github.ref_name }},enable=${{ startsWith(github.ref, 'refs/tags/') }}
|
||||
|
||||
- name: Create manifest list and push
|
||||
working-directory: /tmp/digests
|
||||
env:
|
||||
IMAGE_NAME: ${{ env[matrix.image_name_env] }}
|
||||
run: |
|
||||
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
|
||||
$(printf "$IMAGE_NAME@sha256:%s " *)
|
||||
|
||||
- name: Inspect image
|
||||
env:
|
||||
IMAGE_NAME: ${{ env[matrix.image_name_env] }}
|
||||
IMAGE_VERSION: ${{ steps.meta.outputs.version }}
|
||||
run: |
|
||||
docker buildx imagetools inspect "$IMAGE_NAME:$IMAGE_VERSION"
|
||||
60
.github/workflows/build-web-image.yml
vendored
60
.github/workflows/build-web-image.yml
vendored
@@ -1,60 +0,0 @@
|
||||
name: Build and Push WEB Image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
- 'deploy/dev'
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.event.pull_request.draft == false
|
||||
steps:
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USER }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: langgenius/dify-web
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=ref,event=branch
|
||||
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
|
||||
type=semver,pattern={{major}}.{{minor}}.{{patch}}
|
||||
type=semver,pattern={{major}}.{{minor}}
|
||||
type=semver,pattern={{major}}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: "{{defaultContext}}:web"
|
||||
platforms: linux/amd64,linux/arm64
|
||||
build-args: |
|
||||
COMMIT_SHA=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
|
||||
- name: Deploy to server
|
||||
if: github.ref == 'refs/heads/deploy/dev'
|
||||
uses: appleboy/ssh-action@v0.1.8
|
||||
with:
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
username: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
script: |
|
||||
${{ secrets.SSH_SCRIPT }}
|
||||
35
.github/workflows/check_no_chinese_comments.py
vendored
35
.github/workflows/check_no_chinese_comments.py
vendored
@@ -1,35 +0,0 @@
|
||||
import os
|
||||
import re
|
||||
from zhon.hanzi import punctuation
|
||||
|
||||
def has_chinese_characters(text):
|
||||
for char in text:
|
||||
if '\u4e00' <= char <= '\u9fff' or char in punctuation:
|
||||
return True
|
||||
return False
|
||||
|
||||
def check_file_for_chinese_comments(file_path):
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
for line_number, line in enumerate(file, start=1):
|
||||
if has_chinese_characters(line):
|
||||
print(f"Found Chinese characters in {file_path} on line {line_number}:")
|
||||
print(line.strip())
|
||||
return True
|
||||
return False
|
||||
|
||||
def main():
|
||||
has_chinese = False
|
||||
excluded_files = ["model_template.py", 'stopwords.py', 'commands.py', 'indexing_runner.py']
|
||||
|
||||
for root, _, files in os.walk("."):
|
||||
for file in files:
|
||||
if file.endswith(".py") and file not in excluded_files:
|
||||
file_path = os.path.join(root, file)
|
||||
if check_file_for_chinese_comments(file_path):
|
||||
has_chinese = True
|
||||
|
||||
if has_chinese:
|
||||
raise Exception("Found Chinese characters in Python files. Please remove them.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
31
.github/workflows/check_no_chinese_comments.yml
vendored
31
.github/workflows/check_no_chinese_comments.yml
vendored
@@ -1,31 +0,0 @@
|
||||
name: Check for Chinese comments
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'main'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
check-chinese-comments:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.9
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install zhon
|
||||
|
||||
- name: Run script to check for Chinese comments
|
||||
run: |
|
||||
python .github/workflows/check_no_chinese_comments.py
|
||||
59
.github/workflows/db-migration-test.yml
vendored
Normal file
59
.github/workflows/db-migration-test.yml
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
name: DB Migration Test
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: db-migration-test-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
db-migration-test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup UV and Python
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
enable-cache: true
|
||||
python-version: "3.12"
|
||||
cache-dependency-glob: api/uv.lock
|
||||
|
||||
- name: Install dependencies
|
||||
run: uv sync --project api
|
||||
- name: Ensure Offline migration are supported
|
||||
run: |
|
||||
# upgrade
|
||||
uv run --directory api flask db upgrade 'base:head' --sql
|
||||
# downgrade
|
||||
uv run --directory api flask db downgrade 'head:base' --sql
|
||||
|
||||
- name: Prepare middleware env
|
||||
run: |
|
||||
cd docker
|
||||
cp middleware.env.example middleware.env
|
||||
|
||||
- name: Set up Middlewares
|
||||
uses: hoverkraft-tech/compose-action@v2.0.2
|
||||
with:
|
||||
compose-file: |
|
||||
docker/docker-compose.middleware.yaml
|
||||
services: |
|
||||
db
|
||||
redis
|
||||
|
||||
- name: Prepare configs
|
||||
run: |
|
||||
cd api
|
||||
cp .env.example .env
|
||||
|
||||
- name: Run DB Migration
|
||||
env:
|
||||
DEBUG: true
|
||||
run: uv run --directory api flask upgrade-db
|
||||
25
.github/workflows/deploy-dev.yml
vendored
Normal file
25
.github/workflows/deploy-dev.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Deploy Dev
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Build and Push API & Web"]
|
||||
branches:
|
||||
- "deploy/dev"
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
if: |
|
||||
github.event.workflow_run.conclusion == 'success' &&
|
||||
github.event.workflow_run.head_branch == 'deploy/dev'
|
||||
steps:
|
||||
- name: Deploy to server
|
||||
uses: appleboy/ssh-action@v0.1.8
|
||||
with:
|
||||
host: ${{ secrets.SSH_HOST }}
|
||||
username: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
script: |
|
||||
${{ vars.SSH_SCRIPT || secrets.SSH_SCRIPT }}
|
||||
41
.github/workflows/deploy-enterprise.yml
vendored
Normal file
41
.github/workflows/deploy-enterprise.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: Deploy Enterprise
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Build and Push API & Web"]
|
||||
branches:
|
||||
- "deploy/enterprise"
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
if: |
|
||||
github.event.workflow_run.conclusion == 'success' &&
|
||||
github.event.workflow_run.head_branch == 'deploy/enterprise'
|
||||
|
||||
steps:
|
||||
- name: trigger deployments
|
||||
env:
|
||||
DEV_ENV_ADDRS: ${{ vars.DEV_ENV_ADDRS }}
|
||||
DEPLOY_SECRET: ${{ secrets.DEPLOY_SECRET }}
|
||||
run: |
|
||||
IFS=',' read -ra ENDPOINTS <<< "${DEV_ENV_ADDRS:-}"
|
||||
BODY='{"project":"dify-api","tag":"deploy-enterprise"}'
|
||||
|
||||
for ENDPOINT in "${ENDPOINTS[@]}"; do
|
||||
ENDPOINT="$(echo "$ENDPOINT" | xargs)"
|
||||
[ -z "$ENDPOINT" ] && continue
|
||||
|
||||
API_SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$DEPLOY_SECRET" | awk '{print "sha256="$2}')
|
||||
|
||||
curl -sSf -X POST \
|
||||
-H "Content-Type: application/json" \
|
||||
-H "X-Hub-Signature-256: $API_SIGNATURE" \
|
||||
-d "$BODY" \
|
||||
"$ENDPOINT"
|
||||
done
|
||||
28
.github/workflows/deploy-trigger-dev.yml
vendored
Normal file
28
.github/workflows/deploy-trigger-dev.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
name: Deploy Trigger Dev
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Build and Push API & Web"]
|
||||
branches:
|
||||
- "deploy/trigger-dev"
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
if: |
|
||||
github.event.workflow_run.conclusion == 'success' &&
|
||||
github.event.workflow_run.head_branch == 'deploy/trigger-dev'
|
||||
steps:
|
||||
- name: Deploy to server
|
||||
uses: appleboy/ssh-action@v0.1.8
|
||||
with:
|
||||
host: ${{ secrets.TRIGGER_SSH_HOST }}
|
||||
username: ${{ secrets.SSH_USER }}
|
||||
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
script: |
|
||||
${{ vars.SSH_SCRIPT || secrets.SSH_SCRIPT }}
|
||||
48
.github/workflows/docker-build.yml
vendored
Normal file
48
.github/workflows/docker-build.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Build docker image
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- "main"
|
||||
paths:
|
||||
- api/Dockerfile
|
||||
- web/Dockerfile
|
||||
|
||||
concurrency:
|
||||
group: docker-build-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build-docker:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- service_name: "api-amd64"
|
||||
platform: linux/amd64
|
||||
context: "api"
|
||||
- service_name: "api-arm64"
|
||||
platform: linux/arm64
|
||||
context: "api"
|
||||
- service_name: "web-amd64"
|
||||
platform: linux/amd64
|
||||
context: "web"
|
||||
- service_name: "web-arm64"
|
||||
platform: linux/arm64
|
||||
context: "web"
|
||||
steps:
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build Docker Image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
push: false
|
||||
context: "{{defaultContext}}:${{ matrix.context }}"
|
||||
file: "${{ matrix.file }}"
|
||||
platforms: ${{ matrix.platform }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
17
.github/workflows/expose_service_ports.sh
vendored
Executable file
17
.github/workflows/expose_service_ports.sh
vendored
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
yq eval '.services.weaviate.ports += ["8080:8080"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.weaviate.ports += ["50051:50051"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.qdrant.ports += ["6333:6333"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.chroma.ports += ["8000:8000"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services["milvus-standalone"].ports += ["19530:19530"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.pgvector.ports += ["5433:5432"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services["pgvecto-rs"].ports += ["5431:5432"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services["elasticsearch"].ports += ["9200:9200"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.couchbase-server.ports += ["8091-8096:8091-8096"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.couchbase-server.ports += ["11210:11210"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.tidb.ports += ["4000:4000"]' -i docker/tidb/docker-compose.yaml
|
||||
yq eval '.services.oceanbase.ports += ["2881:2881"]' -i docker/docker-compose.yaml
|
||||
yq eval '.services.opengauss.ports += ["6600:6600"]' -i docker/docker-compose.yaml
|
||||
|
||||
echo "Ports exposed for sandbox, weaviate (HTTP 8080, gRPC 50051), tidb, qdrant, chroma, milvus, pgvector, pgvecto-rs, elasticsearch, couchbase, opengauss"
|
||||
78
.github/workflows/main-ci.yml
vendored
Normal file
78
.github/workflows/main-ci.yml
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
name: Main CI Pipeline
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: ["main"]
|
||||
push:
|
||||
branches: ["main"]
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
checks: write
|
||||
statuses: write
|
||||
|
||||
concurrency:
|
||||
group: main-ci-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
# Check which paths were changed to determine which tests to run
|
||||
check-changes:
|
||||
name: Check Changed Files
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
api-changed: ${{ steps.changes.outputs.api }}
|
||||
web-changed: ${{ steps.changes.outputs.web }}
|
||||
vdb-changed: ${{ steps.changes.outputs.vdb }}
|
||||
migration-changed: ${{ steps.changes.outputs.migration }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: dorny/paths-filter@v3
|
||||
id: changes
|
||||
with:
|
||||
filters: |
|
||||
api:
|
||||
- 'api/**'
|
||||
- 'docker/**'
|
||||
- '.github/workflows/api-tests.yml'
|
||||
web:
|
||||
- 'web/**'
|
||||
vdb:
|
||||
- 'api/core/rag/datasource/**'
|
||||
- 'docker/**'
|
||||
- '.github/workflows/vdb-tests.yml'
|
||||
- 'api/uv.lock'
|
||||
- 'api/pyproject.toml'
|
||||
migration:
|
||||
- 'api/migrations/**'
|
||||
- '.github/workflows/db-migration-test.yml'
|
||||
|
||||
# Run tests in parallel
|
||||
api-tests:
|
||||
name: API Tests
|
||||
needs: check-changes
|
||||
if: needs.check-changes.outputs.api-changed == 'true'
|
||||
uses: ./.github/workflows/api-tests.yml
|
||||
|
||||
web-tests:
|
||||
name: Web Tests
|
||||
needs: check-changes
|
||||
if: needs.check-changes.outputs.web-changed == 'true'
|
||||
uses: ./.github/workflows/web-tests.yml
|
||||
|
||||
style-check:
|
||||
name: Style Check
|
||||
uses: ./.github/workflows/style.yml
|
||||
|
||||
vdb-tests:
|
||||
name: VDB Tests
|
||||
needs: check-changes
|
||||
if: needs.check-changes.outputs.vdb-changed == 'true'
|
||||
uses: ./.github/workflows/vdb-tests.yml
|
||||
|
||||
db-migration-test:
|
||||
name: DB Migration Test
|
||||
needs: check-changes
|
||||
if: needs.check-changes.outputs.migration-changed == 'true'
|
||||
uses: ./.github/workflows/db-migration-test.yml
|
||||
30
.github/workflows/stale.yml
vendored
Normal file
30
.github/workflows/stale.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
|
||||
#
|
||||
# You can adjust the behavior by modifying this file.
|
||||
# For more information, see:
|
||||
# https://github.com/actions/stale
|
||||
name: Mark stale issues and pull requests
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 3 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/stale@v5
|
||||
with:
|
||||
days-before-issue-stale: 15
|
||||
days-before-issue-close: 3
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-issue-message: "Close due to it's no longer active, if you have any questions, you can reopen it."
|
||||
stale-pr-message: "Close due to it's no longer active, if you have any questions, you can reopen it."
|
||||
stale-issue-label: 'no-issue-activity'
|
||||
stale-pr-label: 'no-pr-activity'
|
||||
any-of-labels: 'duplicate,question,invalid,wontfix,no-issue-activity,no-pr-activity,enhancement,cant-reproduce,help-wanted'
|
||||
182
.github/workflows/style.yml
vendored
Normal file
182
.github/workflows/style.yml
vendored
Normal file
@@ -0,0 +1,182 @@
|
||||
name: Style check
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: style-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
checks: write
|
||||
statuses: write
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
python-style:
|
||||
name: Python Style
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
files: |
|
||||
api/**
|
||||
.github/workflows/style.yml
|
||||
|
||||
- name: Setup UV and Python
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
enable-cache: false
|
||||
python-version: "3.12"
|
||||
cache-dependency-glob: api/uv.lock
|
||||
|
||||
- name: Install dependencies
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: uv sync --project api --dev
|
||||
|
||||
- name: Run Import Linter
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: uv run --directory api --dev lint-imports
|
||||
|
||||
- name: Run Basedpyright Checks
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: dev/basedpyright-check
|
||||
|
||||
- name: Run Mypy Type Checks
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: uv --directory api run mypy --exclude-gitignore --exclude 'tests/' --exclude 'migrations/' --check-untyped-defs --disable-error-code=import-untyped .
|
||||
|
||||
- name: Dotenv check
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: uv run --project api dotenv-linter ./api/.env.example ./web/.env.example
|
||||
|
||||
web-style:
|
||||
name: Web Style
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./web
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
files: web/**
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
package_json_file: web/package.json
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
uses: actions/setup-node@v4
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
cache-dependency-path: ./web/package.json
|
||||
|
||||
- name: Web dependencies
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Web style check
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: |
|
||||
pnpm run lint
|
||||
|
||||
- name: Web type check
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm run type-check
|
||||
|
||||
docker-compose-template:
|
||||
name: Docker Compose Template
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
files: |
|
||||
docker/generate_docker_compose
|
||||
docker/.env.example
|
||||
docker/docker-compose-template.yaml
|
||||
docker/docker-compose.yaml
|
||||
|
||||
- name: Generate Docker Compose
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: |
|
||||
cd docker
|
||||
./generate_docker_compose
|
||||
|
||||
- name: Check for changes
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
run: git diff --exit-code
|
||||
|
||||
superlinter:
|
||||
name: SuperLinter
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
files: |
|
||||
**.sh
|
||||
**.yaml
|
||||
**.yml
|
||||
**Dockerfile
|
||||
dev/**
|
||||
.editorconfig
|
||||
|
||||
- name: Super-linter
|
||||
uses: super-linter/super-linter/slim@v8
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
env:
|
||||
BASH_SEVERITY: warning
|
||||
DEFAULT_BRANCH: origin/main
|
||||
EDITORCONFIG_FILE_NAME: editorconfig-checker.json
|
||||
FILTER_REGEX_INCLUDE: pnpm-lock.yaml
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
IGNORE_GENERATED_FILES: true
|
||||
IGNORE_GITIGNORED_FILES: true
|
||||
VALIDATE_BASH: true
|
||||
VALIDATE_BASH_EXEC: true
|
||||
# FIXME: temporarily disabled until api-docker.yaml's run script is fixed for shellcheck
|
||||
# VALIDATE_GITHUB_ACTIONS: true
|
||||
VALIDATE_DOCKERFILE_HADOLINT: true
|
||||
VALIDATE_EDITORCONFIG: true
|
||||
VALIDATE_XML: true
|
||||
VALIDATE_YAML: true
|
||||
43
.github/workflows/tool-test-sdks.yaml
vendored
Normal file
43
.github/workflows/tool-test-sdks.yaml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Run Unit Test For SDKs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- sdks/**
|
||||
|
||||
concurrency:
|
||||
group: sdk-tests-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: unit test for Node.js SDK
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16, 18, 20, 22]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: sdks/nodejs-client
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: ''
|
||||
cache-dependency-path: 'pnpm-lock.yaml'
|
||||
|
||||
- name: Install Dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Test
|
||||
run: pnpm test
|
||||
88
.github/workflows/translate-i18n-base-on-english.yml
vendored
Normal file
88
.github/workflows/translate-i18n-base-on-english.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
name: Check i18n Files and Create PR
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'web/i18n/en-US/*.ts'
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
check-and-update:
|
||||
if: github.repository == 'langgenius/dify'
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: web
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 2
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Check for file changes in i18n/en-US
|
||||
id: check_files
|
||||
run: |
|
||||
recent_commit_sha=$(git rev-parse HEAD)
|
||||
second_recent_commit_sha=$(git rev-parse HEAD~1)
|
||||
changed_files=$(git diff --name-only $recent_commit_sha $second_recent_commit_sha -- 'i18n/en-US/*.ts')
|
||||
echo "Changed files: $changed_files"
|
||||
if [ -n "$changed_files" ]; then
|
||||
echo "FILES_CHANGED=true" >> $GITHUB_ENV
|
||||
file_args=""
|
||||
for file in $changed_files; do
|
||||
filename=$(basename "$file" .ts)
|
||||
file_args="$file_args --file=$filename"
|
||||
done
|
||||
echo "FILE_ARGS=$file_args" >> $GITHUB_ENV
|
||||
echo "File arguments: $file_args"
|
||||
else
|
||||
echo "FILES_CHANGED=false" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
package_json_file: web/package.json
|
||||
run_install: false
|
||||
|
||||
- name: Set up Node.js
|
||||
if: env.FILES_CHANGED == 'true'
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 'lts/*'
|
||||
cache: pnpm
|
||||
cache-dependency-path: ./web/package.json
|
||||
|
||||
- name: Install dependencies
|
||||
if: env.FILES_CHANGED == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Generate i18n translations
|
||||
if: env.FILES_CHANGED == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm run auto-gen-i18n ${{ env.FILE_ARGS }}
|
||||
|
||||
- name: Generate i18n type definitions
|
||||
if: env.FILES_CHANGED == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm run gen:i18n-types
|
||||
|
||||
- name: Create Pull Request
|
||||
if: env.FILES_CHANGED == 'true'
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: Update i18n files and type definitions based on en-US changes
|
||||
title: 'chore: translate i18n files and update type definitions'
|
||||
body: |
|
||||
This PR was automatically created to update i18n files and TypeScript type definitions based on changes in en-US locale.
|
||||
|
||||
**Changes included:**
|
||||
- Updated translation files for all locales
|
||||
- Regenerated TypeScript type definitions for type safety
|
||||
branch: chore/automated-i18n-updates
|
||||
90
.github/workflows/vdb-tests.yml
vendored
Normal file
90
.github/workflows/vdb-tests.yml
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
name: Run VDB Tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: vdb-tests-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: VDB Tests
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version:
|
||||
- "3.11"
|
||||
- "3.12"
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Free Disk Space
|
||||
uses: endersonmenezes/free-disk-space@v2
|
||||
with:
|
||||
remove_dotnet: true
|
||||
remove_haskell: true
|
||||
remove_tool_cache: true
|
||||
|
||||
- name: Setup UV and Python
|
||||
uses: astral-sh/setup-uv@v6
|
||||
with:
|
||||
enable-cache: true
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache-dependency-glob: api/uv.lock
|
||||
|
||||
- name: Check UV lockfile
|
||||
run: uv lock --project api --check
|
||||
|
||||
- name: Install dependencies
|
||||
run: uv sync --project api --dev
|
||||
|
||||
- name: Set up dotenvs
|
||||
run: |
|
||||
cp docker/.env.example docker/.env
|
||||
cp docker/middleware.env.example docker/middleware.env
|
||||
|
||||
- name: Expose Service Ports
|
||||
run: sh .github/workflows/expose_service_ports.sh
|
||||
|
||||
- name: Set up Vector Store (TiDB)
|
||||
uses: hoverkraft-tech/compose-action@v2.0.2
|
||||
with:
|
||||
compose-file: docker/tidb/docker-compose.yaml
|
||||
services: |
|
||||
tidb
|
||||
tiflash
|
||||
|
||||
- name: Set up Vector Stores (Weaviate, Qdrant, PGVector, Milvus, PgVecto-RS, Chroma, MyScale, ElasticSearch, Couchbase, OceanBase)
|
||||
uses: hoverkraft-tech/compose-action@v2.0.2
|
||||
with:
|
||||
compose-file: |
|
||||
docker/docker-compose.yaml
|
||||
services: |
|
||||
weaviate
|
||||
qdrant
|
||||
couchbase-server
|
||||
etcd
|
||||
minio
|
||||
milvus-standalone
|
||||
pgvecto-rs
|
||||
pgvector
|
||||
chroma
|
||||
elasticsearch
|
||||
oceanbase
|
||||
|
||||
- name: setup test config
|
||||
run: |
|
||||
echo $(pwd)
|
||||
ls -lah .
|
||||
cp api/tests/integration_tests/.env.example api/tests/integration_tests/.env
|
||||
|
||||
- name: Check VDB Ready (TiDB)
|
||||
run: uv run --project api python api/tests/integration_tests/vdb/tidb_vector/check_tiflash_ready.py
|
||||
|
||||
- name: Test Vector Stores
|
||||
run: uv run --project api bash dev/pytest/pytest_vdb.sh
|
||||
58
.github/workflows/web-tests.yml
vendored
Normal file
58
.github/workflows/web-tests.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
name: Web Tests
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: web-tests-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Web Tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./web
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Check changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v46
|
||||
with:
|
||||
files: web/**
|
||||
|
||||
- name: Install pnpm
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
package_json_file: web/package.json
|
||||
run_install: false
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
cache-dependency-path: ./web/package.json
|
||||
|
||||
- name: Install dependencies
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Check i18n types synchronization
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm run check:i18n-types
|
||||
|
||||
- name: Run tests
|
||||
if: steps.changed-files.outputs.any_changed == 'true'
|
||||
working-directory: ./web
|
||||
run: pnpm test
|
||||
95
.gitignore
vendored
95
.gitignore
vendored
@@ -46,6 +46,7 @@ htmlcov/
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
coverage.json
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
@@ -96,6 +97,7 @@ __pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat-schedule.db
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
@@ -103,12 +105,14 @@ celerybeat.pid
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.env-local
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
.conda/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
@@ -120,30 +124,115 @@ venv.bak/
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
# type checking
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
pyrightconfig.json
|
||||
!api/pyrightconfig.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
.idea/'
|
||||
|
||||
.DS_Store
|
||||
.vscode
|
||||
web/.vscode/settings.json
|
||||
|
||||
# Intellij IDEA Files
|
||||
.idea/
|
||||
.idea/*
|
||||
!.idea/vcs.xml
|
||||
!.idea/icon.png
|
||||
.ideaDataSources/
|
||||
*.iml
|
||||
api/.idea
|
||||
|
||||
api/.env
|
||||
api/storage/*
|
||||
|
||||
docker-legacy/volumes/app/storage/*
|
||||
docker-legacy/volumes/db/data/*
|
||||
docker-legacy/volumes/redis/data/*
|
||||
docker-legacy/volumes/weaviate/*
|
||||
docker-legacy/volumes/qdrant/*
|
||||
docker-legacy/volumes/etcd/*
|
||||
docker-legacy/volumes/minio/*
|
||||
docker-legacy/volumes/milvus/*
|
||||
docker-legacy/volumes/chroma/*
|
||||
docker-legacy/volumes/opensearch/data/*
|
||||
docker-legacy/volumes/pgvectors/data/*
|
||||
docker-legacy/volumes/pgvector/data/*
|
||||
|
||||
docker/volumes/app/storage/*
|
||||
docker/volumes/certbot/*
|
||||
docker/volumes/db/data/*
|
||||
docker/volumes/redis/data/*
|
||||
docker/volumes/weaviate/*
|
||||
docker/volumes/qdrant/*
|
||||
docker/tidb/volumes/*
|
||||
docker/volumes/etcd/*
|
||||
docker/volumes/minio/*
|
||||
docker/volumes/milvus/*
|
||||
docker/volumes/chroma/*
|
||||
docker/volumes/opensearch/data/*
|
||||
docker/volumes/myscale/data/*
|
||||
docker/volumes/myscale/log/*
|
||||
docker/volumes/unstructured/*
|
||||
docker/volumes/pgvector/data/*
|
||||
docker/volumes/pgvecto_rs/data/*
|
||||
docker/volumes/couchbase/*
|
||||
docker/volumes/oceanbase/*
|
||||
docker/volumes/plugin_daemon/*
|
||||
docker/volumes/matrixone/*
|
||||
!docker/volumes/oceanbase/init.d
|
||||
|
||||
docker/nginx/conf.d/default.conf
|
||||
docker/nginx/ssl/*
|
||||
!docker/nginx/ssl/.gitkeep
|
||||
docker/middleware.env
|
||||
docker/docker-compose.override.yaml
|
||||
|
||||
sdks/python-client/build
|
||||
sdks/python-client/dist
|
||||
sdks/python-client/dify_client.egg-info
|
||||
|
||||
.vscode/*
|
||||
!.vscode/launch.json.template
|
||||
!.vscode/README.md
|
||||
api/.vscode
|
||||
web/.vscode
|
||||
# vscode Code History Extension
|
||||
.history
|
||||
|
||||
.idea/
|
||||
|
||||
# pnpm
|
||||
/.pnpm-store
|
||||
|
||||
# plugin migrate
|
||||
plugins.jsonl
|
||||
|
||||
# mise
|
||||
mise.toml
|
||||
|
||||
# Next.js build output
|
||||
.next/
|
||||
|
||||
# PWA generated files
|
||||
web/public/sw.js
|
||||
web/public/sw.js.map
|
||||
web/public/workbox-*.js
|
||||
web/public/workbox-*.js.map
|
||||
web/public/fallback-*.js
|
||||
|
||||
# AI Assistant
|
||||
.roo/
|
||||
api/.env.backup
|
||||
/clickzetta
|
||||
|
||||
# Benchmark
|
||||
scripts/stress-test/setup/config/
|
||||
scripts/stress-test/reports/
|
||||
|
||||
# mcp
|
||||
.playwright-mcp/
|
||||
.serena/
|
||||
34
.mcp.json
Normal file
34
.mcp.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"context7": {
|
||||
"type": "http",
|
||||
"url": "https://mcp.context7.com/mcp"
|
||||
},
|
||||
"sequential-thinking": {
|
||||
"type": "stdio",
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"],
|
||||
"env": {}
|
||||
},
|
||||
"github": {
|
||||
"type": "stdio",
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
|
||||
}
|
||||
},
|
||||
"fetch": {
|
||||
"type": "stdio",
|
||||
"command": "uvx",
|
||||
"args": ["mcp-server-fetch"],
|
||||
"env": {}
|
||||
},
|
||||
"playwright": {
|
||||
"type": "stdio",
|
||||
"command": "npx",
|
||||
"args": ["-y", "@playwright/mcp@latest"],
|
||||
"env": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
14
.vscode/README.md
vendored
Normal file
14
.vscode/README.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# Debugging with VS Code
|
||||
|
||||
This `launch.json.template` file provides various debug configurations for the Dify project within VS Code / Cursor. To use these configurations, you should copy the contents of this file into a new file named `launch.json` in the same `.vscode` directory.
|
||||
|
||||
## How to Use
|
||||
|
||||
1. **Create `launch.json`**: If you don't have one, create a file named `launch.json` inside the `.vscode` directory.
|
||||
1. **Copy Content**: Copy the entire content from `launch.json.template` into your newly created `launch.json` file.
|
||||
1. **Select Debug Configuration**: Go to the Run and Debug view in VS Code / Cursor (Ctrl+Shift+D or Cmd+Shift+D).
|
||||
1. **Start Debugging**: Select the desired configuration from the dropdown menu and click the green play button.
|
||||
|
||||
## Tips
|
||||
|
||||
- If you need to debug with Edge browser instead of Chrome, modify the `serverReadyAction` configuration in the "Next.js: debug full stack" section, change `"debugWithChrome"` to `"debugWithEdge"` to use Microsoft Edge for debugging.
|
||||
65
.vscode/launch.json.template
vendored
Normal file
65
.vscode/launch.json.template
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python: Flask API",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"module": "flask",
|
||||
"env": {
|
||||
"FLASK_APP": "app.py",
|
||||
"FLASK_ENV": "development"
|
||||
},
|
||||
"args": [
|
||||
"run",
|
||||
"--host=0.0.0.0",
|
||||
"--port=5001",
|
||||
"--no-debugger",
|
||||
"--no-reload"
|
||||
],
|
||||
"jinja": true,
|
||||
"justMyCode": true,
|
||||
"cwd": "${workspaceFolder}/api",
|
||||
"python": "${workspaceFolder}/api/.venv/bin/python"
|
||||
},
|
||||
{
|
||||
"name": "Python: Celery Worker (Solo)",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"module": "celery",
|
||||
"env": {},
|
||||
"args": [
|
||||
"-A",
|
||||
"app.celery",
|
||||
"worker",
|
||||
"-P",
|
||||
"solo",
|
||||
"-c",
|
||||
"1",
|
||||
"-Q",
|
||||
"dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline",
|
||||
"--loglevel",
|
||||
"INFO"
|
||||
],
|
||||
"justMyCode": false,
|
||||
"cwd": "${workspaceFolder}/api",
|
||||
"python": "${workspaceFolder}/api/.venv/bin/python"
|
||||
},
|
||||
{
|
||||
"name": "Next.js: debug full stack",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/web/node_modules/next/dist/bin/next",
|
||||
"runtimeArgs": ["--inspect"],
|
||||
"skipFiles": ["<node_internals>/**"],
|
||||
"serverReadyAction": {
|
||||
"action": "debugWithChrome",
|
||||
"killOnServerStop": true,
|
||||
"pattern": "- Local:.+(https?://.+)",
|
||||
"uriFormat": "%s",
|
||||
"webRoot": "${workspaceFolder}/web"
|
||||
},
|
||||
"cwd": "${workspaceFolder}/web"
|
||||
}
|
||||
]
|
||||
}
|
||||
54
AGENTS.md
Normal file
54
AGENTS.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# AGENTS.md
|
||||
|
||||
## Project Overview
|
||||
|
||||
Dify is an open-source platform for developing LLM applications with an intuitive interface combining agentic AI workflows, RAG pipelines, agent capabilities, and model management.
|
||||
|
||||
The codebase is split into:
|
||||
|
||||
- **Backend API** (`/api`): Python Flask application organized with Domain-Driven Design
|
||||
- **Frontend Web** (`/web`): Next.js 15 application using TypeScript and React 19
|
||||
- **Docker deployment** (`/docker`): Containerized deployment configurations
|
||||
|
||||
## Backend Workflow
|
||||
|
||||
- Run backend CLI commands through `uv run --project api <command>`.
|
||||
|
||||
- Before submission, all backend modifications must pass local checks: `make lint`, `make type-check`, and `uv run --project api --dev dev/pytest/pytest_unit_tests.sh`.
|
||||
|
||||
- Use Makefile targets for linting and formatting; `make lint` and `make type-check` cover the required checks.
|
||||
|
||||
- Integration tests are CI-only and are not expected to run in the local environment.
|
||||
|
||||
## Frontend Workflow
|
||||
|
||||
```bash
|
||||
cd web
|
||||
pnpm lint
|
||||
pnpm lint:fix
|
||||
pnpm test
|
||||
```
|
||||
|
||||
## Testing & Quality Practices
|
||||
|
||||
- Follow TDD: red → green → refactor.
|
||||
- Use `pytest` for backend tests with Arrange-Act-Assert structure.
|
||||
- Enforce strong typing; avoid `Any` and prefer explicit type annotations.
|
||||
- Write self-documenting code; only add comments that explain intent.
|
||||
|
||||
## Language Style
|
||||
|
||||
- **Python**: Keep type hints on functions and attributes, and implement relevant special methods (e.g., `__repr__`, `__str__`).
|
||||
- **TypeScript**: Use the strict config, lean on ESLint + Prettier workflows, and avoid `any` types.
|
||||
|
||||
## General Practices
|
||||
|
||||
- Prefer editing existing files; add new documentation only when requested.
|
||||
- Inject dependencies through constructors and preserve clean architecture boundaries.
|
||||
- Handle errors with domain-specific exceptions at the correct layer.
|
||||
|
||||
## Project Conventions
|
||||
|
||||
- Backend architecture adheres to DDD and Clean Architecture principles.
|
||||
- Async work runs through Celery with Redis as the broker.
|
||||
- Frontend user-facing strings must use `web/i18n/en-US/`; avoid hardcoded text.
|
||||
107
CONTRIBUTING.md
107
CONTRIBUTING.md
@@ -1,56 +1,97 @@
|
||||
# Contributing
|
||||
# CONTRIBUTING
|
||||
|
||||
Thanks for your interest in [Dify](https://dify.ai) and for wanting to contribute! Before you begin, read the
|
||||
[code of conduct](https://github.com/langgenius/.github/blob/main/CODE_OF_CONDUCT.md) and check out the
|
||||
[existing issues](https://github.com/langgenius/langgenius-gateway/issues).
|
||||
This document describes how to set up your development environment to build and test [Dify](https://dify.ai).
|
||||
So you're looking to contribute to Dify - that's awesome, we can't wait to see what you do. As a startup with limited headcount and funding, we have grand ambitions to design the most intuitive workflow for building and managing LLM applications. Any help from the community counts, truly.
|
||||
|
||||
### Install dependencies
|
||||
We need to be nimble and ship fast given where we are, but we also want to make sure that contributors like you get as smooth an experience at contributing as possible. We've assembled this contribution guide for that purpose, aiming at getting you familiarized with the codebase & how we work with contributors, so you could quickly jump to the fun part.
|
||||
|
||||
You need to install and configure the following dependencies on your machine to build [Dify](https://dify.ai):
|
||||
This guide, like Dify itself, is a constant work in progress. We highly appreciate your understanding if at times it lags behind the actual project, and welcome any feedback for us to improve.
|
||||
|
||||
- [Git](http://git-scm.com/)
|
||||
- [Docker](https://www.docker.com/)
|
||||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
- [Node.js v18.x (LTS)](http://nodejs.org)
|
||||
- [npm](https://www.npmjs.com/) version 8.x.x or [Yarn](https://yarnpkg.com/)
|
||||
- [Python](https://www.python.org/) version 3.10.x
|
||||
In terms of licensing, please take a minute to read our short [License and Contributor Agreement](./LICENSE). The community also adheres to the [code of conduct](https://github.com/langgenius/.github/blob/main/CODE_OF_CONDUCT.md).
|
||||
|
||||
## Local development
|
||||
## Before you jump in
|
||||
|
||||
To set up a working development environment, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack.
|
||||
Looking for something to tackle? Browse our [good first issues](https://github.com/langgenius/dify/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22) and pick one to get started!
|
||||
|
||||
### Fork the repository
|
||||
Got a cool new model runtime or tool to add? Open a PR in our [plugin repo](https://github.com/langgenius/dify-plugins) and show us what you've built.
|
||||
|
||||
you need to fork the [repository](https://github.com/langgenius/dify).
|
||||
Need to update an existing model runtime, tool, or squash some bugs? Head over to our [official plugin repo](https://github.com/langgenius/dify-official-plugins) and make your magic happen!
|
||||
|
||||
### Clone the repo
|
||||
Join the fun, contribute, and let's build something awesome together! 💡✨
|
||||
|
||||
Clone your GitHub forked repository:
|
||||
Don't forget to link an existing issue or open a new issue in the PR's description.
|
||||
|
||||
```
|
||||
git clone git@github.com:<github_username>/dify.git
|
||||
```
|
||||
### Bug reports
|
||||
|
||||
### Install backend
|
||||
> [!IMPORTANT]
|
||||
> Please make sure to include the following information when submitting a bug report:
|
||||
|
||||
To learn how to install the backend application, please refer to the [Backend README](api/README.md).
|
||||
- A clear and descriptive title
|
||||
- A detailed description of the bug, including any error messages
|
||||
- Steps to reproduce the bug
|
||||
- Expected behavior
|
||||
- **Logs**, if available, for backend issues, this is really important, you can find them in docker-compose logs
|
||||
- Screenshots or videos, if applicable
|
||||
|
||||
### Install frontend
|
||||
How we prioritize:
|
||||
|
||||
To learn how to install the frontend application, please refer to the [Frontend README](web/README.md).
|
||||
| Issue Type | Priority |
|
||||
| ------------------------------------------------------------ | --------------- |
|
||||
| Bugs in core functions (cloud service, cannot login, applications not working, security loopholes) | Critical |
|
||||
| Non-critical bugs, performance boosts | Medium Priority |
|
||||
| Minor fixes (typos, confusing but working UI) | Low Priority |
|
||||
|
||||
### Visit dify in your browser
|
||||
### Feature requests
|
||||
|
||||
Finally, you can now visit [http://localhost:3000](http://localhost:3000) to view the [Dify](https://dify.ai) in local environment.
|
||||
> [!NOTE]
|
||||
> Please make sure to include the following information when submitting a feature request:
|
||||
|
||||
- A clear and descriptive title
|
||||
- A detailed description of the feature
|
||||
- A use case for the feature
|
||||
- Any other context or screenshots about the feature request
|
||||
|
||||
## Create a pull request
|
||||
How we prioritize:
|
||||
|
||||
After making your changes, open a pull request (PR). Once you submit your pull request, others from the Dify team/community will review it with you.
|
||||
| Feature Type | Priority |
|
||||
| ------------------------------------------------------------ | --------------- |
|
||||
| High-Priority Features as being labeled by a team member | High Priority |
|
||||
| Popular feature requests from our [community feedback board](https://github.com/langgenius/dify/discussions/categories/feedbacks) | Medium Priority |
|
||||
| Non-core features and minor enhancements | Low Priority |
|
||||
| Valuable but not immediate | Future-Feature |
|
||||
|
||||
Did you have an issue, like a merge conflict, or don't know how to open a pull request? Check out [GitHub's pull request tutorial](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests) on how to resolve merge conflicts and other issues. Once your PR has been merged, you will be proudly listed as a contributor in the [contributor chart](https://github.com/langgenius/langgenius-gateway/graphs/contributors).
|
||||
## Submitting your PR
|
||||
|
||||
## Community channels
|
||||
### Pull Request Process
|
||||
|
||||
Stuck somewhere? Have any questions? Join the [Discord Community Server](https://discord.gg/AhzKf7dNgk). We are here to help!
|
||||
1. Fork the repository
|
||||
1. Before you draft a PR, please create an issue to discuss the changes you want to make
|
||||
1. Create a new branch for your changes
|
||||
1. Please add tests for your changes accordingly
|
||||
1. Ensure your code passes the existing tests
|
||||
1. Please link the issue in the PR description, `fixes #<issue_number>`
|
||||
1. Get merged!
|
||||
|
||||
### Setup the project
|
||||
|
||||
#### Frontend
|
||||
|
||||
For setting up the frontend service, please refer to our comprehensive [guide](https://github.com/langgenius/dify/blob/main/web/README.md) in the `web/README.md` file. This document provides detailed instructions to help you set up the frontend environment properly.
|
||||
|
||||
#### Backend
|
||||
|
||||
For setting up the backend service, kindly refer to our detailed [instructions](https://github.com/langgenius/dify/blob/main/api/README.md) in the `api/README.md` file. This document contains step-by-step guidance to help you get the backend up and running smoothly.
|
||||
|
||||
#### Other things to note
|
||||
|
||||
We recommend reviewing this document carefully before proceeding with the setup, as it contains essential information about:
|
||||
|
||||
- Prerequisites and dependencies
|
||||
- Installation steps
|
||||
- Configuration details
|
||||
- Common troubleshooting tips
|
||||
|
||||
Feel free to reach out if you encounter any issues during the setup process.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you ever get stuck or get a burning question while contributing, simply shoot your queries our way via the related GitHub issue, or hop onto our [Discord](https://discord.gg/8Tpq4AcN9c) for a quick chat.
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
# 贡献
|
||||
|
||||
感谢您对 [Dify](https://dify.ai) 的兴趣,并希望您能够做出贡献!在开始之前,请先阅读[行为准则](https://github.com/langgenius/.github/blob/main/CODE_OF_CONDUCT.md)并查看[现有问题](https://github.com/langgenius/dify/issues)。
|
||||
本文档介绍了如何设置开发环境以构建和测试 [Dify](https://dify.ai)。
|
||||
|
||||
### 安装依赖项
|
||||
|
||||
您需要在计算机上安装和配置以下依赖项才能构建 [Dify](https://dify.ai):
|
||||
|
||||
- [Git](http://git-scm.com/)
|
||||
- [Docker](https://www.docker.com/)
|
||||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
- [Node.js v18.x (LTS)](http://nodejs.org)
|
||||
- [npm](https://www.npmjs.com/) 版本 8.x.x 或 [Yarn](https://yarnpkg.com/)
|
||||
- [Python](https://www.python.org/) 版本 3.10.x
|
||||
|
||||
## 本地开发
|
||||
|
||||
要设置一个可工作的开发环境,只需 fork 项目的 git 存储库,并使用适当的软件包管理器安装后端和前端依赖项,然后创建并运行 docker-compose 堆栈。
|
||||
|
||||
### Fork存储库
|
||||
|
||||
您需要 fork [存储库](https://github.com/langgenius/dify)。
|
||||
|
||||
### 克隆存储库
|
||||
|
||||
克隆您在 GitHub 上 fork 的存储库:
|
||||
|
||||
```
|
||||
git clone git@github.com:<github_username>/dify.git
|
||||
```
|
||||
|
||||
### 安装后端
|
||||
|
||||
要了解如何安装后端应用程序,请参阅[后端 README](api/README.md)。
|
||||
|
||||
### 安装前端
|
||||
|
||||
要了解如何安装前端应用程序,请参阅[前端 README](web/README.md)。
|
||||
|
||||
### 在浏览器中访问 Dify
|
||||
|
||||
最后,您现在可以访问 [http://localhost:3000](http://localhost:3000) 在本地环境中查看 [Dify](https://dify.ai)。
|
||||
|
||||
## 创建拉取请求
|
||||
|
||||
在进行更改后,打开一个拉取请求(PR)。提交拉取请求后,Dify 团队/社区的其他人将与您一起审查它。
|
||||
|
||||
如果遇到问题,比如合并冲突或不知道如何打开拉取请求,请查看 GitHub 的[拉取请求教程](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests),了解如何解决合并冲突和其他问题。一旦您的 PR 被合并,您将自豪地被列为[贡献者表](https://github.com/langgenius/dify/graphs/contributors)中的一员。
|
||||
|
||||
## 社区渠道
|
||||
|
||||
遇到困难了吗?有任何问题吗? 加入 [Discord Community Server](https://discord.gg/AhzKf7dNgk),我们将为您提供帮助。
|
||||
@@ -1,55 +0,0 @@
|
||||
# コントリビュート
|
||||
|
||||
[Dify](https://dify.ai) に興味を持ち、貢献したいと思うようになったことに感謝します!始める前に、
|
||||
[行動規範](https://github.com/langgenius/.github/blob/main/CODE_OF_CONDUCT.md)を読み、
|
||||
[既存の問題](https://github.com/langgenius/langgenius-gateway/issues)をチェックしてください。
|
||||
本ドキュメントは、[Dify](https://dify.ai) をビルドしてテストするための開発環境の構築方法を説明するものです。
|
||||
|
||||
### 依存関係のインストール
|
||||
|
||||
[Dify](https://dify.ai)をビルドするには、お使いのマシンに以下の依存関係をインストールし、設定する必要があります:
|
||||
|
||||
- [Git](http://git-scm.com/)
|
||||
- [Docker](https://www.docker.com/)
|
||||
- [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
- [Node.js v18.x (LTS)](http://nodejs.org)
|
||||
- [npm](https://www.npmjs.com/) バージョン 8.x.x もしくは [Yarn](https://yarnpkg.com/)
|
||||
- [Python](https://www.python.org/) バージョン 3.10.x
|
||||
|
||||
## ローカル開発
|
||||
|
||||
開発環境を構築するには、プロジェクトの git リポジトリをフォークし、適切なパッケージマネージャを使用してバックエンドとフロントエンドの依存関係をインストールし、docker-compose スタックを実行するように作成します。
|
||||
|
||||
### リポジトリのフォーク
|
||||
|
||||
[リポジトリ](https://github.com/langgenius/dify) をフォークする必要があります。
|
||||
|
||||
### リポジトリのクローン
|
||||
|
||||
GitHub でフォークしたリポジトリのクローンを作成する:
|
||||
|
||||
```
|
||||
git clone git@github.com:<github_username>/dify.git
|
||||
```
|
||||
|
||||
### バックエンドのインストール
|
||||
|
||||
バックエンドアプリケーションのインストール方法については、[Backend README](api/README.md) を参照してください。
|
||||
|
||||
### フロントエンドのインストール
|
||||
|
||||
フロントエンドアプリケーションのインストール方法については、[Frontend README](web/README.md) を参照してください。
|
||||
|
||||
### ブラウザで dify にアクセス
|
||||
|
||||
[Dify](https://dify.ai) をローカル環境で見ることができるようになりました [http://localhost:3000](http://localhost:3000)。
|
||||
|
||||
## プルリクエストの作成
|
||||
|
||||
変更後、プルリクエスト (PR) をオープンしてください。プルリクエストを提出すると、Dify チーム/コミュニティの他の人があなたと一緒にそれをレビューします。
|
||||
|
||||
マージコンフリクトなどの問題が発生したり、プルリクエストの開き方がわからなくなったりしませんでしたか? [GitHub's pull request tutorial](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests) で、マージコンフリクトやその他の問題を解決する方法をチェックしてみてください。あなたの PR がマージされると、[コントリビュータチャート](https://github.com/langgenius/langgenius-gateway/graphs/contributors)にコントリビュータとして誇らしげに掲載されます。
|
||||
|
||||
## コミュニティチャンネル
|
||||
|
||||
お困りですか?何か質問がありますか? [Discord Community サーバ](https://discord.gg/AhzKf7dNgk)に参加してください。私たちがお手伝いします!
|
||||
50
LICENSE
50
LICENSE
@@ -1,46 +1,22 @@
|
||||
# Dify Open Source License
|
||||
# Open Source License
|
||||
|
||||
The Dify project uses a combination of the Apache License 2.0, MIT License, and an additional agreement to protect against direct competition with Dify Cloud services.
|
||||
Dify is licensed under a modified version of the Apache License 2.0, with the following additional conditions:
|
||||
|
||||
As a contributor, you should agree that your contributed code:
|
||||
a. Might be subject to a more permissive open source license in the future.
|
||||
b. Can be used for commercial purposes, such as Dify's cloud business.
|
||||
1. Dify may be utilized commercially, including as a backend service for other applications or as an application development platform for enterprises. Should the conditions below be met, a commercial license must be obtained from the producer:
|
||||
|
||||
The following components are open source under the MIT license, allowing you to build and develop applications based on them:
|
||||
- WebApp elements, e.g., web/app/components/share
|
||||
- Derived WebApp Template projects
|
||||
a. Multi-tenant service: Unless explicitly authorized by Dify in writing, you may not use the Dify source code to operate a multi-tenant environment.
|
||||
- Tenant Definition: Within the context of Dify, one tenant corresponds to one workspace. The workspace provides a separated area for each tenant's data and configurations.
|
||||
|
||||
The remaining parts of the project are open source under the Apache License 2.0.
|
||||
b. LOGO and copyright information: In the process of using Dify's frontend, you may not remove or modify the LOGO or copyright information in the Dify console or applications. This restriction is inapplicable to uses of Dify that do not involve its frontend.
|
||||
- Frontend Definition: For the purposes of this license, the "frontend" of Dify includes all components located in the `web/` directory when running Dify from the raw source code, or the "web" image when running Dify with Docker.
|
||||
|
||||
With the Apache License 2.0, MIT License, and this supplementary agreement, anyone can freely use, modify, and distribute Dify, provided that:
|
||||
2. As a contributor, you should agree that:
|
||||
|
||||
- If you use Dify solely as a backend service for other applications, no authorization is needed for commercial or closed source purposes.
|
||||
- If you wish to use Dify for commercial and closed source SaaS services similar to Dify Cloud, please contact us for authorization.
|
||||
a. The producer can adjust the open-source agreement to be more strict or relaxed as deemed necessary.
|
||||
b. Your contributed code may be used for commercial purposes, including but not limited to its cloud business operations.
|
||||
|
||||
Apart from the specific conditions mentioned above, all other rights and restrictions follow the Apache License 2.0. Detailed information about the Apache License 2.0 can be found at http://www.apache.org/licenses/LICENSE-2.0.
|
||||
|
||||
The interactive design of this product is protected by appearance patent.
|
||||
|
||||
© 2023 LangGenius, Inc.
|
||||
|
||||
----------
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
----------
|
||||
The MIT License
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
© 2025 LangGenius, Inc.
|
||||
|
||||
131
Makefile
Normal file
131
Makefile
Normal file
@@ -0,0 +1,131 @@
|
||||
# Variables
|
||||
DOCKER_REGISTRY=langgenius
|
||||
WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
|
||||
API_IMAGE=$(DOCKER_REGISTRY)/dify-api
|
||||
VERSION=latest
|
||||
|
||||
# Default target - show help
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# Backend Development Environment Setup
|
||||
.PHONY: dev-setup prepare-docker prepare-web prepare-api
|
||||
|
||||
# Dev setup target
|
||||
dev-setup: prepare-docker prepare-web prepare-api
|
||||
@echo "✅ Backend development environment setup complete!"
|
||||
|
||||
# Step 1: Prepare Docker middleware
|
||||
prepare-docker:
|
||||
@echo "🐳 Setting up Docker middleware..."
|
||||
@cp -n docker/middleware.env.example docker/middleware.env 2>/dev/null || echo "Docker middleware.env already exists"
|
||||
@cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev up -d
|
||||
@echo "✅ Docker middleware started"
|
||||
|
||||
# Step 2: Prepare web environment
|
||||
prepare-web:
|
||||
@echo "🌐 Setting up web environment..."
|
||||
@cp -n web/.env.example web/.env 2>/dev/null || echo "Web .env already exists"
|
||||
@cd web && pnpm install
|
||||
@echo "✅ Web environment prepared (not started)"
|
||||
|
||||
# Step 3: Prepare API environment
|
||||
prepare-api:
|
||||
@echo "🔧 Setting up API environment..."
|
||||
@cp -n api/.env.example api/.env 2>/dev/null || echo "API .env already exists"
|
||||
@cd api && uv sync --dev
|
||||
@cd api && uv run flask db upgrade
|
||||
@echo "✅ API environment prepared (not started)"
|
||||
|
||||
# Clean dev environment
|
||||
dev-clean:
|
||||
@echo "⚠️ Stopping Docker containers..."
|
||||
@cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev down
|
||||
@echo "🗑️ Removing volumes..."
|
||||
@rm -rf docker/volumes/db
|
||||
@rm -rf docker/volumes/redis
|
||||
@rm -rf docker/volumes/plugin_daemon
|
||||
@rm -rf docker/volumes/weaviate
|
||||
@rm -rf api/storage
|
||||
@echo "✅ Cleanup complete"
|
||||
|
||||
# Backend Code Quality Commands
|
||||
format:
|
||||
@echo "🎨 Running ruff format..."
|
||||
@uv run --project api --dev ruff format ./api
|
||||
@echo "✅ Code formatting complete"
|
||||
|
||||
check:
|
||||
@echo "🔍 Running ruff check..."
|
||||
@uv run --project api --dev ruff check ./api
|
||||
@echo "✅ Code check complete"
|
||||
|
||||
lint:
|
||||
@echo "🔧 Running ruff format, check with fixes, and import linter..."
|
||||
@uv run --project api --dev sh -c 'ruff format ./api && ruff check --fix ./api'
|
||||
@uv run --directory api --dev lint-imports
|
||||
@echo "✅ Linting complete"
|
||||
|
||||
type-check:
|
||||
@echo "📝 Running type check with basedpyright..."
|
||||
@uv run --directory api --dev basedpyright
|
||||
@echo "✅ Type check complete"
|
||||
|
||||
# Build Docker images
|
||||
build-web:
|
||||
@echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
||||
docker build -t $(WEB_IMAGE):$(VERSION) ./web
|
||||
@echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
|
||||
|
||||
build-api:
|
||||
@echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
|
||||
docker build -t $(API_IMAGE):$(VERSION) ./api
|
||||
@echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
|
||||
|
||||
# Push Docker images
|
||||
push-web:
|
||||
@echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
||||
docker push $(WEB_IMAGE):$(VERSION)
|
||||
@echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
|
||||
|
||||
push-api:
|
||||
@echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
|
||||
docker push $(API_IMAGE):$(VERSION)
|
||||
@echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
|
||||
|
||||
# Build all images
|
||||
build-all: build-web build-api
|
||||
|
||||
# Push all images
|
||||
push-all: push-web push-api
|
||||
|
||||
build-push-api: build-api push-api
|
||||
build-push-web: build-web push-web
|
||||
|
||||
# Build and push all images
|
||||
build-push-all: build-all push-all
|
||||
@echo "All Docker images have been built and pushed."
|
||||
|
||||
# Help target
|
||||
help:
|
||||
@echo "Development Setup Targets:"
|
||||
@echo " make dev-setup - Run all setup steps for backend dev environment"
|
||||
@echo " make prepare-docker - Set up Docker middleware"
|
||||
@echo " make prepare-web - Set up web environment"
|
||||
@echo " make prepare-api - Set up API environment"
|
||||
@echo " make dev-clean - Stop Docker middleware containers"
|
||||
@echo ""
|
||||
@echo "Backend Code Quality:"
|
||||
@echo " make format - Format code with ruff"
|
||||
@echo " make check - Check code with ruff"
|
||||
@echo " make lint - Format and fix code with ruff"
|
||||
@echo " make type-check - Run type checking with basedpyright"
|
||||
@echo ""
|
||||
@echo "Docker Build Targets:"
|
||||
@echo " make build-web - Build web Docker image"
|
||||
@echo " make build-api - Build API Docker image"
|
||||
@echo " make build-all - Build all Docker images"
|
||||
@echo " make push-all - Push all Docker images"
|
||||
@echo " make build-push-all - Build and push all Docker images"
|
||||
|
||||
# Phony targets
|
||||
.PHONY: build-web build-api push-web push-api build-all push-all build-push-all dev-setup prepare-docker prepare-web prepare-api dev-clean help format check lint type-check
|
||||
237
README.md
237
README.md
@@ -1,119 +1,216 @@
|
||||

|
||||

|
||||
|
||||
<p align="center">
|
||||
<a href="./README.md">English</a> |
|
||||
<a href="./README_CN.md">简体中文</a> |
|
||||
<a href="./README_JA.md">日本語</a>
|
||||
📌 <a href="https://dify.ai/blog/introducing-dify-workflow-file-upload-a-demo-on-ai-podcast">Introducing Dify Workflow File Upload: Recreate Google NotebookLM Podcast</a>
|
||||
</p>
|
||||
|
||||
[Website](https://dify.ai) • [Docs](https://docs.dify.ai) • [Twitter](https://twitter.com/dify_ai) • [Discord](https://discord.gg/FngNHpbcY7)
|
||||
<p align="center">
|
||||
<a href="https://cloud.dify.ai">Dify Cloud</a> ·
|
||||
<a href="https://docs.dify.ai/getting-started/install-self-hosted">Self-hosting</a> ·
|
||||
<a href="https://docs.dify.ai">Documentation</a> ·
|
||||
<a href="https://dify.ai/pricing">Dify edition overview</a>
|
||||
</p>
|
||||
|
||||
Vote for us on Product Hunt ↓
|
||||
<a href="https://www.producthunt.com/posts/dify-ai"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?sanitize=true&post_id=dify-ai&theme=light" alt="Product Hunt Badge" width="250" height="54"></a>
|
||||
<p align="center">
|
||||
<a href="https://dify.ai" target="_blank">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/Product-F04438"></a>
|
||||
<a href="https://dify.ai/pricing" target="_blank">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/free-pricing?logo=free&color=%20%23155EEF&label=pricing&labelColor=%20%23528bff"></a>
|
||||
<a href="https://discord.gg/FngNHpbcY7" target="_blank">
|
||||
<img src="https://img.shields.io/discord/1082486657678311454?logo=discord&labelColor=%20%235462eb&logoColor=%20%23f5f5f5&color=%20%235462eb"
|
||||
alt="chat on Discord"></a>
|
||||
<a href="https://reddit.com/r/difyai" target="_blank">
|
||||
<img src="https://img.shields.io/reddit/subreddit-subscribers/difyai?style=plastic&logo=reddit&label=r%2Fdifyai&labelColor=white"
|
||||
alt="join Reddit"></a>
|
||||
<a href="https://twitter.com/intent/follow?screen_name=dify_ai" target="_blank">
|
||||
<img src="https://img.shields.io/twitter/follow/dify_ai?logo=X&color=%20%23f5f5f5"
|
||||
alt="follow on X(Twitter)"></a>
|
||||
<a href="https://www.linkedin.com/company/langgenius/" target="_blank">
|
||||
<img src="https://custom-icon-badges.demolab.com/badge/LinkedIn-0A66C2?logo=linkedin-white&logoColor=fff"
|
||||
alt="follow on LinkedIn"></a>
|
||||
<a href="https://hub.docker.com/u/langgenius" target="_blank">
|
||||
<img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/langgenius/dify-web?labelColor=%20%23FDB062&color=%20%23f79009"></a>
|
||||
<a href="https://github.com/langgenius/dify/graphs/commit-activity" target="_blank">
|
||||
<img alt="Commits last month" src="https://img.shields.io/github/commit-activity/m/langgenius/dify?labelColor=%20%2332b583&color=%20%2312b76a"></a>
|
||||
<a href="https://github.com/langgenius/dify/" target="_blank">
|
||||
<img alt="Issues closed" src="https://img.shields.io/github/issues-search?query=repo%3Alanggenius%2Fdify%20is%3Aclosed&label=issues%20closed&labelColor=%20%237d89b0&color=%20%235d6b98"></a>
|
||||
<a href="https://github.com/langgenius/dify/discussions/" target="_blank">
|
||||
<img alt="Discussion posts" src="https://img.shields.io/github/discussions/langgenius/dify?labelColor=%20%239b8afb&color=%20%237a5af8"></a>
|
||||
</p>
|
||||
|
||||
**Dify** is an easy-to-use LLMOps platform designed to empower more people to create sustainable, AI-native applications. With visual orchestration for various application types, Dify offers out-of-the-box, ready-to-use applications that can also serve as Backend-as-a-Service APIs. Unify your development process with one API for plugins and datasets integration, and streamline your operations using a single interface for prompt engineering, visual analytics, and continuous improvement.
|
||||
<p align="center">
|
||||
<a href="./README.md"><img alt="README in English" src="https://img.shields.io/badge/English-d9d9d9"></a>
|
||||
<a href="./docs/zh-TW/README.md"><img alt="繁體中文文件" src="https://img.shields.io/badge/繁體中文-d9d9d9"></a>
|
||||
<a href="./docs/zh-CN/README.md"><img alt="简体中文文件" src="https://img.shields.io/badge/简体中文-d9d9d9"></a>
|
||||
<a href="./docs/ja-JP/README.md"><img alt="日本語のREADME" src="https://img.shields.io/badge/日本語-d9d9d9"></a>
|
||||
<a href="./docs/es-ES/README.md"><img alt="README en Español" src="https://img.shields.io/badge/Español-d9d9d9"></a>
|
||||
<a href="./docs/fr-FR/README.md"><img alt="README en Français" src="https://img.shields.io/badge/Français-d9d9d9"></a>
|
||||
<a href="./docs/tlh/README.md"><img alt="README tlhIngan Hol" src="https://img.shields.io/badge/Klingon-d9d9d9"></a>
|
||||
<a href="./docs/ko-KR/README.md"><img alt="README in Korean" src="https://img.shields.io/badge/한국어-d9d9d9"></a>
|
||||
<a href="./docs/ar-SA/README.md"><img alt="README بالعربية" src="https://img.shields.io/badge/العربية-d9d9d9"></a>
|
||||
<a href="./docs/tr-TR/README.md"><img alt="Türkçe README" src="https://img.shields.io/badge/Türkçe-d9d9d9"></a>
|
||||
<a href="./docs/vi-VN/README.md"><img alt="README Tiếng Việt" src="https://img.shields.io/badge/Ti%E1%BA%BFng%20Vi%E1%BB%87t-d9d9d9"></a>
|
||||
<a href="./docs/de-DE/README.md"><img alt="README in Deutsch" src="https://img.shields.io/badge/German-d9d9d9"></a>
|
||||
<a href="./docs/bn-BD/README.md"><img alt="README in বাংলা" src="https://img.shields.io/badge/বাংলা-d9d9d9"></a>
|
||||
</p>
|
||||
|
||||
Applications created with Dify include:
|
||||
Dify is an open-source platform for developing LLM applications. Its intuitive interface combines agentic AI workflows, RAG pipelines, agent capabilities, model management, observability features, and more—allowing you to quickly move from prototype to production.
|
||||
|
||||
Out-of-the-box web sites supporting form mode and chat conversation mode
|
||||
A single API encompassing plugin capabilities, context enhancement, and more, saving you backend coding effort
|
||||
Visual data analysis, log review, and annotation for applications
|
||||
Dify is compatible with Langchain, meaning we'll gradually support multiple LLMs, currently supported:
|
||||
## Quick start
|
||||
|
||||
- GPT 3 (text-davinci-003)
|
||||
- GPT 3.5 Turbo(ChatGPT)
|
||||
- GPT-4
|
||||
> Before installing Dify, make sure your machine meets the following minimum system requirements:
|
||||
>
|
||||
> - CPU >= 2 Core
|
||||
> - RAM >= 4 GiB
|
||||
|
||||
## Use Cloud Services
|
||||
<br/>
|
||||
|
||||
Visit [Dify.ai](https://dify.ai)
|
||||
|
||||
## Install the Community Edition
|
||||
|
||||
### System Requirements
|
||||
|
||||
Before installing Dify, make sure your machine meets the following minimum system requirements:
|
||||
|
||||
- CPU >= 1 Core
|
||||
- RAM >= 4GB
|
||||
|
||||
### Quick Start
|
||||
|
||||
The easiest way to start the Dify server is to run our [docker-compose.yml](docker/docker-compose.yaml) file. Before running the installation command, make sure that [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) are installed on your machine:
|
||||
The easiest way to start the Dify server is through [Docker Compose](docker/docker-compose.yaml). Before running Dify with the following commands, make sure that [Docker](https://docs.docker.com/get-docker/) and [Docker Compose](https://docs.docker.com/compose/install/) are installed on your machine:
|
||||
|
||||
```bash
|
||||
cd dify
|
||||
cd docker
|
||||
docker-compose up -d
|
||||
cp .env.example .env
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
After running, you can access the Dify dashboard in your browser at [http://localhost/install](http://localhost/install) and start the initialization installation process.
|
||||
After running, you can access the Dify dashboard in your browser at [http://localhost/install](http://localhost/install) and start the initialization process.
|
||||
|
||||
### Configuration
|
||||
#### Seeking help
|
||||
|
||||
If you need to customize the configuration, please refer to the comments in our [docker-compose.yml](docker/docker-compose.yaml) file and manually set the environment configuration. After making the changes, please run 'docker-compose up -d' again.
|
||||
Please refer to our [FAQ](https://docs.dify.ai/getting-started/install-self-hosted/faqs) if you encounter problems setting up Dify. Reach out to [the community and us](#community--contact) if you are still having issues.
|
||||
|
||||
## Roadmap
|
||||
> If you'd like to contribute to Dify or do additional development, refer to our [guide to deploying from source code](https://docs.dify.ai/getting-started/install-self-hosted/local-source-code)
|
||||
|
||||
Features under development:
|
||||
## Key features
|
||||
|
||||
- **Datasets**, supporting more datasets, e.g. syncing content from Notion or webpages
|
||||
We will support more datasets, including text, webpages, and even Notion content. Users can build AI applications based on their own data sources.
|
||||
- **Plugins**, introducing ChatGPT Plugin-standard plugins for applications, or using Dify-produced plugins
|
||||
We will release plugins complying with ChatGPT standard, or Dify's own plugins to enable more capabilities in applications.
|
||||
- **Open-source models**, e.g. adopting Llama as a model provider or for further fine-tuning
|
||||
We will work with excellent open-source models like Llama, by providing them as model options in our platform, or using them for further fine-tuning.
|
||||
**1. Workflow**:
|
||||
Build and test powerful AI workflows on a visual canvas, leveraging all the following features and beyond.
|
||||
|
||||
**2. Comprehensive model support**:
|
||||
Seamless integration with hundreds of proprietary / open-source LLMs from dozens of inference providers and self-hosted solutions, covering GPT, Mistral, Llama3, and any OpenAI API-compatible models. A full list of supported model providers can be found [here](https://docs.dify.ai/getting-started/readme/model-providers).
|
||||
|
||||
## Q&A
|
||||

|
||||
|
||||
**Q: What can I do with Dify?**
|
||||
**3. Prompt IDE**:
|
||||
Intuitive interface for crafting prompts, comparing model performance, and adding additional features such as text-to-speech to a chat-based app.
|
||||
|
||||
A: Dify is a simple yet powerful LLM development and operations tool. You can use it to build commercial-grade applications, personal assistants. If you want to develop your own applications, LangDifyGenius can save you backend work in integrating with OpenAI and offer visual operations capabilities, allowing you to continuously improve and train your GPT model.
|
||||
**4. RAG Pipeline**:
|
||||
Extensive RAG capabilities that cover everything from document ingestion to retrieval, with out-of-box support for text extraction from PDFs, PPTs, and other common document formats.
|
||||
|
||||
**Q: How do I use Dify to "train" my own model?**
|
||||
**5. Agent capabilities**:
|
||||
You can define agents based on LLM Function Calling or ReAct, and add pre-built or custom tools for the agent. Dify provides 50+ built-in tools for AI agents, such as Google Search, DALL·E, Stable Diffusion and WolframAlpha.
|
||||
|
||||
A: A valuable application consists of Prompt Engineering, context enhancement, and Fine-tuning. We've created a hybrid programming approach combining Prompts with programming languages (similar to a template engine), making it easy to accomplish long-text embedding or capturing subtitles from a user-input Youtube video - all of which will be submitted as context for LLMs to process. We place great emphasis on application operability, with data generated by users during App usage available for analysis, annotation, and continuous training. Without the right tools, these steps can be time-consuming.
|
||||
**6. LLMOps**:
|
||||
Monitor and analyze application logs and performance over time. You could continuously improve prompts, datasets, and models based on production data and annotations.
|
||||
|
||||
**Q: What do I need to prepare if I want to create my own application?**
|
||||
**7. Backend-as-a-Service**:
|
||||
All of Dify's offerings come with corresponding APIs, so you could effortlessly integrate Dify into your own business logic.
|
||||
|
||||
A: We assume you already have an OpenAI API Key; if not, please register for one. If you already have some content that can serve as training context, that's great!
|
||||
## Using Dify
|
||||
|
||||
**Q: What interface languages are available?**
|
||||
- **Cloud <br/>**
|
||||
We host a [Dify Cloud](https://dify.ai) service for anyone to try with zero setup. It provides all the capabilities of the self-deployed version, and includes 200 free GPT-4 calls in the sandbox plan.
|
||||
|
||||
A: English and Chinese are currently supported, and you can contribute language packs to us.
|
||||
- **Self-hosting Dify Community Edition<br/>**
|
||||
Quickly get Dify running in your environment with this [starter guide](#quick-start).
|
||||
Use our [documentation](https://docs.dify.ai) for further references and more in-depth instructions.
|
||||
|
||||
## Star History
|
||||
- **Dify for enterprise / organizations<br/>**
|
||||
We provide additional enterprise-centric features. [Log your questions for us through this chatbot](https://udify.app/chat/22L1zSxg6yW1cWQg) or [send us an email](mailto:business@dify.ai?subject=%5BGitHub%5DBusiness%20License%20Inquiry) to discuss enterprise needs. <br/>
|
||||
|
||||
[](https://star-history.com/#langgenius/dify&Date)
|
||||
> For startups and small businesses using AWS, check out [Dify Premium on AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-t22mebxzwjhu6) and deploy it to your own AWS VPC with one click. It's an affordable AMI offering with the option to create apps with custom logo and branding.
|
||||
|
||||
## Contact Us
|
||||
## Staying ahead
|
||||
|
||||
If you have any questions, suggestions, or partnership inquiries, feel free to contact us through the following channels:
|
||||
Star Dify on GitHub and be instantly notified of new releases.
|
||||
|
||||
- Submit an Issue or PR on our GitHub Repo
|
||||
- Join the discussion in our [Discord](https://discord.gg/FngNHpbcY7) Community
|
||||
- Send an email to hello@dify.ai
|
||||

|
||||
|
||||
We're eager to assist you and together create more fun and useful AI applications!
|
||||
## Advanced Setup
|
||||
|
||||
### Custom configurations
|
||||
|
||||
If you need to customize the configuration, please refer to the comments in our [.env.example](docker/.env.example) file and update the corresponding values in your `.env` file. Additionally, you might need to make adjustments to the `docker-compose.yaml` file itself, such as changing image versions, port mappings, or volume mounts, based on your specific deployment environment and requirements. After making any changes, please re-run `docker-compose up -d`. You can find the full list of available environment variables [here](https://docs.dify.ai/getting-started/install-self-hosted/environments).
|
||||
|
||||
### Metrics Monitoring with Grafana
|
||||
|
||||
Import the dashboard to Grafana, using Dify's PostgreSQL database as data source, to monitor metrics in granularity of apps, tenants, messages, and more.
|
||||
|
||||
- [Grafana Dashboard by @bowenliang123](https://github.com/bowenliang123/dify-grafana-dashboard)
|
||||
|
||||
### Deployment with Kubernetes
|
||||
|
||||
If you'd like to configure a highly-available setup, there are community-contributed [Helm Charts](https://helm.sh/) and YAML files which allow Dify to be deployed on Kubernetes.
|
||||
|
||||
- [Helm Chart by @LeoQuote](https://github.com/douban/charts/tree/master/charts/dify)
|
||||
- [Helm Chart by @BorisPolonsky](https://github.com/BorisPolonsky/dify-helm)
|
||||
- [Helm Chart by @magicsong](https://github.com/magicsong/ai-charts)
|
||||
- [YAML file by @Winson-030](https://github.com/Winson-030/dify-kubernetes)
|
||||
- [YAML file by @wyy-holding](https://github.com/wyy-holding/dify-k8s)
|
||||
- [🚀 NEW! YAML files (Supports Dify v1.6.0) by @Zhoneym](https://github.com/Zhoneym/DifyAI-Kubernetes)
|
||||
|
||||
#### Using Terraform for Deployment
|
||||
|
||||
Deploy Dify to Cloud Platform with a single click using [terraform](https://www.terraform.io/)
|
||||
|
||||
##### Azure Global
|
||||
|
||||
- [Azure Terraform by @nikawang](https://github.com/nikawang/dify-azure-terraform)
|
||||
|
||||
##### Google Cloud
|
||||
|
||||
- [Google Cloud Terraform by @sotazum](https://github.com/DeNA/dify-google-cloud-terraform)
|
||||
|
||||
#### Using AWS CDK for Deployment
|
||||
|
||||
Deploy Dify to AWS with [CDK](https://aws.amazon.com/cdk/)
|
||||
|
||||
##### AWS
|
||||
|
||||
- [AWS CDK by @KevinZhao (EKS based)](https://github.com/aws-samples/solution-for-deploying-dify-on-aws)
|
||||
- [AWS CDK by @tmokmss (ECS based)](https://github.com/aws-samples/dify-self-hosted-on-aws)
|
||||
|
||||
#### Using Alibaba Cloud Computing Nest
|
||||
|
||||
Quickly deploy Dify to Alibaba cloud with [Alibaba Cloud Computing Nest](https://computenest.console.aliyun.com/service/instance/create/default?type=user&ServiceName=Dify%E7%A4%BE%E5%8C%BA%E7%89%88)
|
||||
|
||||
#### Using Alibaba Cloud Data Management
|
||||
|
||||
One-Click deploy Dify to Alibaba Cloud with [Alibaba Cloud Data Management](https://www.alibabacloud.com/help/en/dms/dify-in-invitational-preview/)
|
||||
|
||||
#### Deploy to AKS with Azure Devops Pipeline
|
||||
|
||||
One-Click deploy Dify to AKS with [Azure Devops Pipeline Helm Chart by @LeoZhang](https://github.com/Ruiruiz30/Dify-helm-chart-AKS)
|
||||
|
||||
## Contributing
|
||||
|
||||
To ensure proper review, all code contributions - including those from contributors with direct commit access - must be submitted via pull requests and approved by the core development team prior to being merged.
|
||||
For those who'd like to contribute code, see our [Contribution Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md).
|
||||
At the same time, please consider supporting Dify by sharing it on social media and at events and conferences.
|
||||
|
||||
We welcome all pull requests! If you'd like to help, check out the [Contribution Guide](CONTRIBUTING.md) for more information on how to get started.
|
||||
> We are looking for contributors to help translate Dify into languages other than Mandarin or English. If you are interested in helping, please see the [i18n README](https://github.com/langgenius/dify/blob/main/web/i18n-config/README.md) for more information, and leave us a comment in the `global-users` channel of our [Discord Community Server](https://discord.gg/8Tpq4AcN9c).
|
||||
|
||||
## Security
|
||||
## Community & contact
|
||||
|
||||
To protect your privacy, please avoid posting security issues on GitHub. Instead, send your questions to security@dify.ai and we will provide you with a more detailed answer.
|
||||
- [GitHub Discussion](https://github.com/langgenius/dify/discussions). Best for: sharing feedback and asking questions.
|
||||
- [GitHub Issues](https://github.com/langgenius/dify/issues). Best for: bugs you encounter using Dify.AI, and feature proposals. See our [Contribution Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md).
|
||||
- [Discord](https://discord.gg/FngNHpbcY7). Best for: sharing your applications and hanging out with the community.
|
||||
- [X(Twitter)](https://twitter.com/dify_ai). Best for: sharing your applications and hanging out with the community.
|
||||
|
||||
## Citation
|
||||
**Contributors**
|
||||
|
||||
This software uses the following open-source software:
|
||||
<a href="https://github.com/langgenius/dify/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=langgenius/dify" />
|
||||
</a>
|
||||
|
||||
- Chase, H. (2022). LangChain [Computer software]. https://github.com/hwchase17/langchain
|
||||
- Liu, J. (2022). LlamaIndex [Computer software]. doi: 10.5281/zenodo.1234.
|
||||
## Star history
|
||||
|
||||
For more information, please refer to the official website or license text of the respective software.
|
||||
[](https://star-history.com/#langgenius/dify&Date)
|
||||
|
||||
## Security disclosure
|
||||
|
||||
To protect your privacy, please avoid posting security issues on GitHub. Instead, report issues to security@dify.ai, and our team will respond with detailed answer.
|
||||
|
||||
## License
|
||||
|
||||
This repository is available under the [Dify Open Source License](LICENSE).
|
||||
This repository is licensed under the [Dify Open Source License](LICENSE), based on Apache 2.0 with additional conditions.
|
||||
|
||||
118
README_CN.md
118
README_CN.md
@@ -1,118 +0,0 @@
|
||||

|
||||
<p align="center">
|
||||
<a href="./README.md">English</a> |
|
||||
<a href="./README_CN.md">简体中文</a> |
|
||||
<a href="./README_JA.md">日本語</a>
|
||||
</p>
|
||||
|
||||
|
||||
[官方网站](https://dify.ai) • [文档](https://docs.dify.ai/v/zh-hans) • [Twitter](https://twitter.com/dify_ai) • [Discord](https://discord.gg/FngNHpbcY7)
|
||||
|
||||
在 Product Hunt 上投我们一票吧 ↓
|
||||
<a href="https://www.producthunt.com/posts/dify-ai"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?sanitize=true&post_id=dify-ai&theme=light" alt="Product Hunt Badge" width="250" height="54"></a>
|
||||
|
||||
**Dify** 是一个易用的 LLMOps 平台,旨在让更多人可以创建可持续运营的原生 AI 应用。Dify 提供多种类型应用的可视化编排,应用可开箱即用,也能以“后端即服务”的 API 提供服务。
|
||||
|
||||
通过 Dify 创建的应用包含了:
|
||||
|
||||
- 开箱即用的的 Web 站点,支持表单模式和聊天对话模式
|
||||
- 一套 API 即可包含插件、上下文增强等能力,替你省下了后端代码的编写工作
|
||||
- 可视化的对应用进行数据分析,查阅日志或进行标注
|
||||
|
||||
Dify 兼容 Langchain,这意味着我们将逐步支持多种 LLMs ,目前已支持:
|
||||
|
||||
- GPT 3 (text-davinci-003)
|
||||
- GPT 3.5 Turbo(ChatGPT)
|
||||
- GPT-4
|
||||
|
||||
## 使用云服务
|
||||
|
||||
访问 [Dify.ai](https://cloud.dify.ai)
|
||||
|
||||
## 安装社区版
|
||||
|
||||
### 系统要求
|
||||
|
||||
在安装 Dify 之前,请确保您的机器满足以下最低系统要求:
|
||||
|
||||
- CPU >= 1 Core
|
||||
- RAM >= 4GB
|
||||
|
||||
### 快速启动
|
||||
|
||||
启动 Dify 服务器的最简单方法是运行我们的 [docker-compose.yml](docker/docker-compose.yaml) 文件。在运行安装命令之前,请确保您的机器上安装了 [Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/):
|
||||
|
||||
```bash
|
||||
cd docker
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
运行后,可以在浏览器上访问 [http://localhost/install](http://localhost/install) 进入 Dify 控制台并开始初始化安装操作。
|
||||
|
||||
### 配置
|
||||
|
||||
需要自定义配置,请参考我们的 [docker-compose.yml](docker/docker-compose.yaml) 文件中的注释,并手动设置环境配置,修改完毕后,请再次执行 `docker-compose up -d`。
|
||||
|
||||
## Roadmap
|
||||
|
||||
我们正在开发中的功能:
|
||||
|
||||
- **数据集**,支持更多的数据集,例如同步 Notion 或网页的内容
|
||||
我们将支持更多的数据集,包括文本、网页,甚至 Notion 内容。用户可以根据自己的数据源构建 AI 应用程序。
|
||||
- **插件**,推出符合 ChatGPT 标准的插件,或使用 Dify 产生的插件
|
||||
我们将发布符合 ChatGPT 标准的插件,或者 Dify 自己的插件,以在应用程序中启用更多功能。
|
||||
- **开源模型**,例如采用 Llama 作为模型提供者,或进行进一步的微调
|
||||
我们将与优秀的开源模型如 Llama 合作,通过在我们的平台中提供它们作为模型选项,或使用它们进行进一步的微调。
|
||||
|
||||
## Q&A
|
||||
|
||||
**Q: 我能用 Dify 做什么?**
|
||||
|
||||
A: Dify 是一个简单且能力丰富的 LLM 开发和运营工具。你可以用它搭建商用级应用,个人助理。如果你想自己开发应用,Dify 也能为你省下接入 OpenAI 的后端工作,使用我们逐步提供的可视化运营能力,你可以持续的改进和训练你的 GPT 模型。
|
||||
|
||||
**Q: 如何使用 Dify “训练”自己的模型?**
|
||||
|
||||
A: 一个有价值的应用由 Prompt Engineering、上下文增强和 Fine-tune 三个环节组成。我们创造了一种 Prompt 结合编程语言的 Hybrid 编程方式(类似一个模版引擎),你可以轻松的完成长文本嵌入,或抓取用户输入的一个 Youtube 视频的字幕——这些都将作为上下文提交给 LLMs 进行计算。我们十分注重应用的可运营性,你的用户在使用 App 期间产生的数据,可进行分析、标记和持续训练。以上环节如果没有好的工具支持,可能会消耗你大量的时间。
|
||||
|
||||
**Q: 如果要创建一个自己的应用,我需要准备什么?**
|
||||
|
||||
A: 我们假定你已经有了 OpenAI API Key,如果没有请去注册一个。如果你已经有了一些内容可以作为训练上下文,就太好了。
|
||||
|
||||
**Q: 提供哪些界面语言?**
|
||||
|
||||
A: 现已支持英文与中文,你可以为我们贡献语言包。
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://star-history.com/#langgenius/dify&Date)
|
||||
|
||||
## 联系我们
|
||||
|
||||
如果您有任何问题、建议或合作意向,欢迎通过以下方式联系我们:
|
||||
|
||||
- 在我们的 [GitHub Repo](https://github.com/langgenius/dify) 上提交 Issue 或 PR
|
||||
- 在我们的 [Discord 社区](https://discord.gg/FngNHpbcY7) 上加入讨论
|
||||
- 发送邮件至 hello@dify.ai
|
||||
|
||||
## 贡献代码
|
||||
|
||||
为了确保正确审查,所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交 PR 请求并在合并分支之前得到核心开发人员的批准。
|
||||
|
||||
我们欢迎所有人提交 PR!如果您愿意提供帮助,可以在 [贡献指南](CONTRIBUTING_CN.md) 中了解有关如何为项目做出贡献的更多信息。
|
||||
|
||||
## 安全
|
||||
|
||||
为了保护您的隐私,请避免在 GitHub 上发布安全问题。发送问题至 security@dify.ai,我们将为您做更细致的解答。
|
||||
|
||||
## Citation
|
||||
|
||||
本软件使用了以下开源软件:
|
||||
|
||||
- Chase, H. (2022). LangChain [Computer software]. https://github.com/hwchase17/langchain
|
||||
- Liu, J. (2022). LlamaIndex [Computer software]. doi: 10.5281/zenodo.1234.
|
||||
|
||||
更多信息,请参考相应软件的官方网站或许可证文本。
|
||||
|
||||
## License
|
||||
|
||||
本仓库遵循 [Dify Open Source License](LICENSE) 开源协议。
|
||||
120
README_JA.md
120
README_JA.md
@@ -1,120 +0,0 @@
|
||||

|
||||
<p align="center">
|
||||
<a href="./README.md">English</a> |
|
||||
<a href="./README_CN.md">简体中文</a> |
|
||||
<a href="./README_JA.md">日本語</a>
|
||||
</p>
|
||||
|
||||
[Web サイト](https://dify.ai) • [ドキュメント](https://docs.dify.ai) • [Twitter](https://twitter.com/dify_ai) • [Discord](https://discord.gg/FngNHpbcY7)
|
||||
|
||||
Product Huntで私たちに投票してください ↓
|
||||
<a href="https://www.producthunt.com/posts/dify-ai"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?sanitize=true&post_id=dify-ai&theme=light" alt="Product Hunt Badge" width="250" height="54"></a>
|
||||
|
||||
|
||||
**Dify** は、より多くの人々が持続可能な AI ネイティブアプリケーションを作成できるように設計された、使いやすい LLMOps プラットフォームです。様々なアプリケーションタイプに対応したビジュアルオーケストレーションにより Dify は Backend-as-a-Service API としても機能する、すぐに使えるアプリケーションを提供します。プラグインやデータセットを統合するための1つの API で開発プロセスを統一し、プロンプトエンジニアリング、ビジュアル分析、継続的な改善のための1つのインターフェイスを使って業務を合理化します。
|
||||
|
||||
Difyで作成したアプリケーションは以下の通りです:
|
||||
|
||||
フォームモードとチャット会話モードをサポートする、すぐに使える Web サイト
|
||||
プラグイン機能、コンテキストの強化などを網羅する単一の API により、バックエンドのコーディングの手間を省きます。
|
||||
アプリケーションの視覚的なデータ分析、ログレビュー、アノテーションが可能です。
|
||||
Dify は LangChain と互換性があり、複数の LLM を徐々にサポートします:
|
||||
|
||||
- GPT 3 (text-davinci-003)
|
||||
- GPT 3.5 Turbo(ChatGPT)
|
||||
- GPT-4
|
||||
|
||||
## クラウドサービスの利用
|
||||
|
||||
[Dify.ai](https://dify.ai) をご覧ください
|
||||
|
||||
## Community Edition のインストール
|
||||
|
||||
### システム要件
|
||||
|
||||
Dify をインストールする前に、お使いのマシンが以下の最低システム要件を満たしていることを確認してください:
|
||||
|
||||
- CPU >= 1 Core
|
||||
- RAM >= 4GB
|
||||
|
||||
### クイックスタート
|
||||
|
||||
Dify サーバーを起動する最も簡単な方法は、[docker-compose.yml](docker/docker-compose.yaml) ファイルを実行することです。インストールコマンドを実行する前に、[Docker](https://docs.docker.com/get-docker/) と [Docker Compose](https://docs.docker.com/compose/install/) がお使いのマシンにインストールされていることを確認してください:
|
||||
|
||||
```bash
|
||||
cd docker
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
実行後、ブラウザで [http://localhost/install](http://localhost/install) にアクセスし、初期化インストール作業を開始することができます。
|
||||
|
||||
### 構成
|
||||
|
||||
カスタマイズが必要な場合は、[docker-compose.yml](docker/docker-compose.yaml) ファイルのコメントを参照し、手動で環境設定をお願いします。変更後、再度 'docker-compose up -d' を実行してください。
|
||||
|
||||
## ロードマップ
|
||||
|
||||
開発中の機能:
|
||||
|
||||
- **データセット**, Notionやウェブページからのコンテンツ同期など、より多くのデータセットをサポートします
|
||||
テキスト、ウェブページ、さらには Notion コンテンツなど、より多くのデータセットをサポートする予定です。ユーザーは、自分のデータソースをもとに AI アプリケーションを構築することができます。
|
||||
- **プラグイン**, アプリケーションに ChatGPT プラグイン標準のプラグインを導入する、または Dify 制作のプラグインを利用する
|
||||
今後、ChatGPT 規格に準拠したプラグインや、ディファイ独自のプラグインを公開し、より多くの機能をアプリケーションで実現できるようにします。
|
||||
- **オープンソースモデル**, 例えばモデルプロバイダーとして Llama を採用したり、さらにファインチューニングを行う
|
||||
Llama のような優れたオープンソースモデルを、私たちのプラットフォームのモデルオプションとして提供したり、さらなる微調整のために使用したりすることで、協力していきます。
|
||||
|
||||
|
||||
## Q&A
|
||||
|
||||
**Q: Dify で何ができるのか?**
|
||||
|
||||
A: Dify はシンプルでパワフルな LLM 開発・運用ツールです。商用グレードのアプリケーション、パーソナルアシスタントを構築するために使用することができます。独自のアプリケーションを開発したい場合、LangDifyGenius は OpenAI と統合する際のバックエンド作業を省き、視覚的な操作機能を提供し、GPT モデルを継続的に改善・訓練することが可能です。
|
||||
|
||||
**Q: Dify を使って、自分のモデルを「トレーニング」するにはどうすればいいのでしょうか?**
|
||||
|
||||
A: プロンプトエンジニアリング、コンテキスト拡張、ファインチューニングからなる価値あるアプリケーションです。プロンプトとプログラミング言語を組み合わせたハイブリッドプログラミングアプローチ(テンプレートエンジンのようなもの)で、長文の埋め込みやユーザー入力の YouTube 動画からの字幕取り込みなどを簡単に実現し、これらはすべて LLM が処理するコンテキストとして提出される予定です。また、アプリケーションの操作性を重視し、ユーザーがアプリケーションを使用する際に生成したデータを分析、アノテーション、継続的なトレーニングに利用できるようにしました。適切なツールがなければ、これらのステップに時間がかかることがあります。
|
||||
|
||||
**Q: 自分でアプリケーションを作りたい場合、何を準備すればよいですか?**
|
||||
|
||||
A: すでに OpenAI API Key をお持ちだと思いますが、お持ちでない場合はご登録ください。もし、すでにトレーニングのコンテキストとなるコンテンツをお持ちでしたら、それは素晴らしいことです!
|
||||
|
||||
**Q: インターフェイスにどの言語が使えますか?**
|
||||
|
||||
A: 現在、英語と中国語に対応しており、言語パックを寄贈することも可能です。
|
||||
|
||||
## Star ヒストリー
|
||||
|
||||
[](https://star-history.com/#langgenius/dify&Date)
|
||||
|
||||
## お問合せ
|
||||
|
||||
ご質問、ご提案、パートナーシップに関するお問い合わせは、以下のチャンネルからお気軽にご連絡ください:
|
||||
|
||||
- GitHub Repo で Issue や PR を提出する
|
||||
- [Discord](https://discord.gg/FngNHpbcY7) コミュニティで議論に参加する。
|
||||
- hello@dify.ai にメールを送信します
|
||||
|
||||
私たちは、皆様のお手伝いをさせていただき、より楽しく、より便利な AI アプリケーションを一緒に作っていきたいと思っています!
|
||||
|
||||
## コントリビュート
|
||||
|
||||
適切なレビューを行うため、コミットへの直接アクセスが可能なコントリビュータを含むすべてのコードコントリビュータは、プルリクエストで提出し、マージされる前にコア開発チームによって承認される必要があります。
|
||||
|
||||
私たちはすべてのプルリクエストを歓迎します!協力したい方は、[コントリビューションガイド](CONTRIBUTING.md) をチェックしてみてください。
|
||||
|
||||
## セキュリティ
|
||||
|
||||
プライバシー保護のため、GitHub へのセキュリティ問題の投稿は避けてください。代わりに、あなたの質問を security@dify.ai に送ってください。より詳細な回答を提供します。
|
||||
|
||||
## 引用
|
||||
|
||||
本ソフトウェアは、以下のオープンソースソフトウェアを使用しています:
|
||||
|
||||
- Chase, H. (2022). LangChain [Computer software]. https://github.com/hwchase17/langchain
|
||||
- Liu, J. (2022). LlamaIndex [Computer software]. doi: 10.5281/zenodo.1234.
|
||||
|
||||
詳しくは、各ソフトウェアの公式サイトまたはライセンス文をご参照ください。
|
||||
|
||||
## ライセンス
|
||||
|
||||
このリポジトリは、[Dify Open Source License](LICENSE) のもとで利用できます。
|
||||
@@ -1,2 +1,19 @@
|
||||
.env
|
||||
storage/privkeys/*
|
||||
*.env.*
|
||||
|
||||
storage/generate_files/*
|
||||
storage/privkeys/*
|
||||
storage/tools/*
|
||||
storage/upload_files/*
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log*
|
||||
|
||||
# jetbrains
|
||||
.idea
|
||||
.mypy_cache
|
||||
.ruff_cache
|
||||
|
||||
# venv
|
||||
.venv
|
||||
|
||||
606
api/.env.example
606
api/.env.example
@@ -1,85 +1,619 @@
|
||||
# Server Edition
|
||||
EDITION=SELF_HOSTED
|
||||
|
||||
# Your App secret key will be used for securely signing the session cookie
|
||||
# Make sure you are changing this key for your deployment with a strong key.
|
||||
# You can generate a strong key using `openssl rand -base64 42`.
|
||||
# Alternatively you can set it with `SECRET_KEY` environment variable.
|
||||
SECRET_KEY=
|
||||
|
||||
# Ensure UTF-8 encoding
|
||||
LANG=en_US.UTF-8
|
||||
LC_ALL=en_US.UTF-8
|
||||
PYTHONIOENCODING=utf-8
|
||||
|
||||
# Console API base URL
|
||||
CONSOLE_URL=http://127.0.0.1:5001
|
||||
CONSOLE_API_URL=http://localhost:5001
|
||||
CONSOLE_WEB_URL=http://localhost:3000
|
||||
|
||||
# Service API base URL
|
||||
API_URL=http://127.0.0.1:5001
|
||||
SERVICE_API_URL=http://localhost:5001
|
||||
|
||||
# Web APP base URL
|
||||
APP_URL=http://127.0.0.1:3000
|
||||
APP_WEB_URL=http://localhost:3000
|
||||
|
||||
# celery configuration
|
||||
CELERY_BROKER_URL=redis://:difyai123456@localhost:6379/1
|
||||
# Files URL
|
||||
FILES_URL=http://localhost:5001
|
||||
|
||||
# INTERNAL_FILES_URL is used for plugin daemon communication within Docker network.
|
||||
# Set this to the internal Docker service URL for proper plugin file access.
|
||||
# Example: INTERNAL_FILES_URL=http://api:5001
|
||||
INTERNAL_FILES_URL=http://127.0.0.1:5001
|
||||
|
||||
# The time in seconds after the signature is rejected
|
||||
FILES_ACCESS_TIMEOUT=300
|
||||
|
||||
# Access token expiration time in minutes
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES=60
|
||||
|
||||
# Refresh token expiration time in days
|
||||
REFRESH_TOKEN_EXPIRE_DAYS=30
|
||||
|
||||
# redis configuration
|
||||
REDIS_HOST=localhost
|
||||
REDIS_PORT=6379
|
||||
REDIS_USERNAME=
|
||||
REDIS_PASSWORD=difyai123456
|
||||
REDIS_USE_SSL=false
|
||||
# SSL configuration for Redis (when REDIS_USE_SSL=true)
|
||||
REDIS_SSL_CERT_REQS=CERT_NONE
|
||||
# Options: CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
|
||||
REDIS_SSL_CA_CERTS=
|
||||
# Path to CA certificate file for SSL verification
|
||||
REDIS_SSL_CERTFILE=
|
||||
# Path to client certificate file for SSL authentication
|
||||
REDIS_SSL_KEYFILE=
|
||||
# Path to client private key file for SSL authentication
|
||||
REDIS_DB=0
|
||||
|
||||
# redis Sentinel configuration.
|
||||
REDIS_USE_SENTINEL=false
|
||||
REDIS_SENTINELS=
|
||||
REDIS_SENTINEL_SERVICE_NAME=
|
||||
REDIS_SENTINEL_USERNAME=
|
||||
REDIS_SENTINEL_PASSWORD=
|
||||
REDIS_SENTINEL_SOCKET_TIMEOUT=0.1
|
||||
|
||||
# redis Cluster configuration.
|
||||
REDIS_USE_CLUSTERS=false
|
||||
REDIS_CLUSTERS=
|
||||
REDIS_CLUSTERS_PASSWORD=
|
||||
|
||||
# celery configuration
|
||||
CELERY_BROKER_URL=redis://:difyai123456@localhost:${REDIS_PORT}/1
|
||||
CELERY_BACKEND=redis
|
||||
# PostgreSQL database configuration
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=difyai123456
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=dify
|
||||
SQLALCHEMY_POOL_PRE_PING=true
|
||||
SQLALCHEMY_POOL_TIMEOUT=30
|
||||
|
||||
# Storage configuration
|
||||
# use for store upload files, private keys...
|
||||
# storage type: local, s3
|
||||
STORAGE_TYPE=local
|
||||
STORAGE_LOCAL_PATH=storage
|
||||
S3_ENDPOINT=https://your-bucket-name.storage.s3.clooudflare.com
|
||||
# storage type: opendal, s3, aliyun-oss, azure-blob, baidu-obs, google-storage, huawei-obs, oci-storage, tencent-cos, volcengine-tos, supabase
|
||||
STORAGE_TYPE=opendal
|
||||
|
||||
# Apache OpenDAL storage configuration, refer to https://github.com/apache/opendal
|
||||
OPENDAL_SCHEME=fs
|
||||
OPENDAL_FS_ROOT=storage
|
||||
|
||||
# S3 Storage configuration
|
||||
S3_USE_AWS_MANAGED_IAM=false
|
||||
S3_ENDPOINT=https://your-bucket-name.storage.s3.cloudflare.com
|
||||
S3_BUCKET_NAME=your-bucket-name
|
||||
S3_ACCESS_KEY=your-access-key
|
||||
S3_SECRET_KEY=your-secret-key
|
||||
S3_REGION=your-region
|
||||
|
||||
# Azure Blob Storage configuration
|
||||
AZURE_BLOB_ACCOUNT_NAME=your-account-name
|
||||
AZURE_BLOB_ACCOUNT_KEY=your-account-key
|
||||
AZURE_BLOB_CONTAINER_NAME=your-container-name
|
||||
AZURE_BLOB_ACCOUNT_URL=https://<your_account_name>.blob.core.windows.net
|
||||
|
||||
# Aliyun oss Storage configuration
|
||||
ALIYUN_OSS_BUCKET_NAME=your-bucket-name
|
||||
ALIYUN_OSS_ACCESS_KEY=your-access-key
|
||||
ALIYUN_OSS_SECRET_KEY=your-secret-key
|
||||
ALIYUN_OSS_ENDPOINT=your-endpoint
|
||||
ALIYUN_OSS_AUTH_VERSION=v1
|
||||
ALIYUN_OSS_REGION=your-region
|
||||
# Don't start with '/'. OSS doesn't support leading slash in object names.
|
||||
ALIYUN_OSS_PATH=your-path
|
||||
|
||||
# Google Storage configuration
|
||||
GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name
|
||||
GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string
|
||||
|
||||
# Tencent COS Storage configuration
|
||||
TENCENT_COS_BUCKET_NAME=your-bucket-name
|
||||
TENCENT_COS_SECRET_KEY=your-secret-key
|
||||
TENCENT_COS_SECRET_ID=your-secret-id
|
||||
TENCENT_COS_REGION=your-region
|
||||
TENCENT_COS_SCHEME=your-scheme
|
||||
|
||||
# Huawei OBS Storage Configuration
|
||||
HUAWEI_OBS_BUCKET_NAME=your-bucket-name
|
||||
HUAWEI_OBS_SECRET_KEY=your-secret-key
|
||||
HUAWEI_OBS_ACCESS_KEY=your-access-key
|
||||
HUAWEI_OBS_SERVER=your-server-url
|
||||
|
||||
# Baidu OBS Storage Configuration
|
||||
BAIDU_OBS_BUCKET_NAME=your-bucket-name
|
||||
BAIDU_OBS_SECRET_KEY=your-secret-key
|
||||
BAIDU_OBS_ACCESS_KEY=your-access-key
|
||||
BAIDU_OBS_ENDPOINT=your-server-url
|
||||
|
||||
# OCI Storage configuration
|
||||
OCI_ENDPOINT=your-endpoint
|
||||
OCI_BUCKET_NAME=your-bucket-name
|
||||
OCI_ACCESS_KEY=your-access-key
|
||||
OCI_SECRET_KEY=your-secret-key
|
||||
OCI_REGION=your-region
|
||||
|
||||
# Volcengine tos Storage configuration
|
||||
VOLCENGINE_TOS_ENDPOINT=your-endpoint
|
||||
VOLCENGINE_TOS_BUCKET_NAME=your-bucket-name
|
||||
VOLCENGINE_TOS_ACCESS_KEY=your-access-key
|
||||
VOLCENGINE_TOS_SECRET_KEY=your-secret-key
|
||||
VOLCENGINE_TOS_REGION=your-region
|
||||
|
||||
# Supabase Storage Configuration
|
||||
SUPABASE_BUCKET_NAME=your-bucket-name
|
||||
SUPABASE_API_KEY=your-access-key
|
||||
SUPABASE_URL=your-server-url
|
||||
|
||||
# CORS configuration
|
||||
WEB_API_CORS_ALLOW_ORIGINS=http://127.0.0.1:3000,*
|
||||
CONSOLE_CORS_ALLOW_ORIGINS=http://127.0.0.1:3000,*
|
||||
WEB_API_CORS_ALLOW_ORIGINS=http://localhost:3000,*
|
||||
CONSOLE_CORS_ALLOW_ORIGINS=http://localhost:3000,*
|
||||
# Set COOKIE_DOMAIN when the console frontend and API are on different subdomains.
|
||||
# Provide the registrable domain (e.g. example.com); leading dots are optional.
|
||||
COOKIE_DOMAIN=
|
||||
|
||||
# Cookie configuration
|
||||
COOKIE_HTTPONLY=true
|
||||
COOKIE_SAMESITE=None
|
||||
COOKIE_SECURE=true
|
||||
|
||||
# Session configuration
|
||||
SESSION_PERMANENT=true
|
||||
SESSION_USE_SIGNER=true
|
||||
|
||||
## support redis, sqlalchemy
|
||||
SESSION_TYPE=redis
|
||||
|
||||
# session redis configuration
|
||||
SESSION_REDIS_HOST=localhost
|
||||
SESSION_REDIS_PORT=6379
|
||||
SESSION_REDIS_PASSWORD=difyai123456
|
||||
SESSION_REDIS_DB=2
|
||||
|
||||
# Vector database configuration, support: weaviate, qdrant
|
||||
# Vector database configuration
|
||||
# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`, `opengauss`, `tablestore`,`vastbase`,`tidb`,`tidb_on_qdrant`,`baidu`,`lindorm`,`huawei_cloud`,`upstash`, `matrixone`.
|
||||
VECTOR_STORE=weaviate
|
||||
# Prefix used to create collection name in vector database
|
||||
VECTOR_INDEX_NAME_PREFIX=Vector_index
|
||||
|
||||
# Weaviate configuration
|
||||
WEAVIATE_ENDPOINT=http://localhost:8080
|
||||
WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
|
||||
WEAVIATE_GRPC_ENABLED=false
|
||||
WEAVIATE_BATCH_SIZE=100
|
||||
|
||||
# Qdrant configuration, use `path:` prefix for local mode or `https://your-qdrant-cluster-url.qdrant.io` for remote mode
|
||||
QDRANT_URL=path:storage/qdrant
|
||||
QDRANT_API_KEY=your-qdrant-api-key
|
||||
# Qdrant configuration, use `http://localhost:6333` for local mode or `https://your-qdrant-cluster-url.qdrant.io` for remote mode
|
||||
QDRANT_URL=http://localhost:6333
|
||||
QDRANT_API_KEY=difyai123456
|
||||
QDRANT_CLIENT_TIMEOUT=20
|
||||
QDRANT_GRPC_ENABLED=false
|
||||
QDRANT_GRPC_PORT=6334
|
||||
QDRANT_REPLICATION_FACTOR=1
|
||||
|
||||
#Couchbase configuration
|
||||
COUCHBASE_CONNECTION_STRING=127.0.0.1
|
||||
COUCHBASE_USER=Administrator
|
||||
COUCHBASE_PASSWORD=password
|
||||
COUCHBASE_BUCKET_NAME=Embeddings
|
||||
COUCHBASE_SCOPE_NAME=_default
|
||||
|
||||
# Milvus configuration
|
||||
MILVUS_URI=http://127.0.0.1:19530
|
||||
MILVUS_TOKEN=
|
||||
MILVUS_USER=root
|
||||
MILVUS_PASSWORD=Milvus
|
||||
MILVUS_ANALYZER_PARAMS=
|
||||
|
||||
# MyScale configuration
|
||||
MYSCALE_HOST=127.0.0.1
|
||||
MYSCALE_PORT=8123
|
||||
MYSCALE_USER=default
|
||||
MYSCALE_PASSWORD=
|
||||
MYSCALE_DATABASE=default
|
||||
MYSCALE_FTS_PARAMS=
|
||||
|
||||
# Relyt configuration
|
||||
RELYT_HOST=127.0.0.1
|
||||
RELYT_PORT=5432
|
||||
RELYT_USER=postgres
|
||||
RELYT_PASSWORD=postgres
|
||||
RELYT_DATABASE=postgres
|
||||
|
||||
# Tencent configuration
|
||||
TENCENT_VECTOR_DB_URL=http://127.0.0.1
|
||||
TENCENT_VECTOR_DB_API_KEY=dify
|
||||
TENCENT_VECTOR_DB_TIMEOUT=30
|
||||
TENCENT_VECTOR_DB_USERNAME=dify
|
||||
TENCENT_VECTOR_DB_DATABASE=dify
|
||||
TENCENT_VECTOR_DB_SHARD=1
|
||||
TENCENT_VECTOR_DB_REPLICAS=2
|
||||
TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH=false
|
||||
|
||||
# ElasticSearch configuration
|
||||
ELASTICSEARCH_HOST=127.0.0.1
|
||||
ELASTICSEARCH_PORT=9200
|
||||
ELASTICSEARCH_USERNAME=elastic
|
||||
ELASTICSEARCH_PASSWORD=elastic
|
||||
|
||||
# PGVECTO_RS configuration
|
||||
PGVECTO_RS_HOST=localhost
|
||||
PGVECTO_RS_PORT=5431
|
||||
PGVECTO_RS_USER=postgres
|
||||
PGVECTO_RS_PASSWORD=difyai123456
|
||||
PGVECTO_RS_DATABASE=postgres
|
||||
|
||||
# PGVector configuration
|
||||
PGVECTOR_HOST=127.0.0.1
|
||||
PGVECTOR_PORT=5433
|
||||
PGVECTOR_USER=postgres
|
||||
PGVECTOR_PASSWORD=postgres
|
||||
PGVECTOR_DATABASE=postgres
|
||||
PGVECTOR_MIN_CONNECTION=1
|
||||
PGVECTOR_MAX_CONNECTION=5
|
||||
|
||||
# TableStore Vector configuration
|
||||
TABLESTORE_ENDPOINT=https://instance-name.cn-hangzhou.ots.aliyuncs.com
|
||||
TABLESTORE_INSTANCE_NAME=instance-name
|
||||
TABLESTORE_ACCESS_KEY_ID=xxx
|
||||
TABLESTORE_ACCESS_KEY_SECRET=xxx
|
||||
TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE=false
|
||||
|
||||
# Tidb Vector configuration
|
||||
TIDB_VECTOR_HOST=xxx.eu-central-1.xxx.aws.tidbcloud.com
|
||||
TIDB_VECTOR_PORT=4000
|
||||
TIDB_VECTOR_USER=xxx.root
|
||||
TIDB_VECTOR_PASSWORD=xxxxxx
|
||||
TIDB_VECTOR_DATABASE=dify
|
||||
|
||||
# Tidb on qdrant configuration
|
||||
TIDB_ON_QDRANT_URL=http://127.0.0.1
|
||||
TIDB_ON_QDRANT_API_KEY=dify
|
||||
TIDB_ON_QDRANT_CLIENT_TIMEOUT=20
|
||||
TIDB_ON_QDRANT_GRPC_ENABLED=false
|
||||
TIDB_ON_QDRANT_GRPC_PORT=6334
|
||||
TIDB_PUBLIC_KEY=dify
|
||||
TIDB_PRIVATE_KEY=dify
|
||||
TIDB_API_URL=http://127.0.0.1
|
||||
TIDB_IAM_API_URL=http://127.0.0.1
|
||||
TIDB_REGION=regions/aws-us-east-1
|
||||
TIDB_PROJECT_ID=dify
|
||||
TIDB_SPEND_LIMIT=100
|
||||
|
||||
# Chroma configuration
|
||||
CHROMA_HOST=127.0.0.1
|
||||
CHROMA_PORT=8000
|
||||
CHROMA_TENANT=default_tenant
|
||||
CHROMA_DATABASE=default_database
|
||||
CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider
|
||||
CHROMA_AUTH_CREDENTIALS=difyai123456
|
||||
|
||||
# AnalyticDB configuration
|
||||
ANALYTICDB_KEY_ID=your-ak
|
||||
ANALYTICDB_KEY_SECRET=your-sk
|
||||
ANALYTICDB_REGION_ID=cn-hangzhou
|
||||
ANALYTICDB_INSTANCE_ID=gp-ab123456
|
||||
ANALYTICDB_ACCOUNT=testaccount
|
||||
ANALYTICDB_PASSWORD=testpassword
|
||||
ANALYTICDB_NAMESPACE=dify
|
||||
ANALYTICDB_NAMESPACE_PASSWORD=difypassword
|
||||
ANALYTICDB_HOST=gp-test.aliyuncs.com
|
||||
ANALYTICDB_PORT=5432
|
||||
ANALYTICDB_MIN_CONNECTION=1
|
||||
ANALYTICDB_MAX_CONNECTION=5
|
||||
|
||||
# OpenSearch configuration
|
||||
OPENSEARCH_HOST=127.0.0.1
|
||||
OPENSEARCH_PORT=9200
|
||||
OPENSEARCH_USER=admin
|
||||
OPENSEARCH_PASSWORD=admin
|
||||
OPENSEARCH_SECURE=true
|
||||
OPENSEARCH_VERIFY_CERTS=true
|
||||
|
||||
# Baidu configuration
|
||||
BAIDU_VECTOR_DB_ENDPOINT=http://127.0.0.1:5287
|
||||
BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS=30000
|
||||
BAIDU_VECTOR_DB_ACCOUNT=root
|
||||
BAIDU_VECTOR_DB_API_KEY=dify
|
||||
BAIDU_VECTOR_DB_DATABASE=dify
|
||||
BAIDU_VECTOR_DB_SHARD=1
|
||||
BAIDU_VECTOR_DB_REPLICAS=3
|
||||
BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER=DEFAULT_ANALYZER
|
||||
BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE=COARSE_MODE
|
||||
|
||||
# Upstash configuration
|
||||
UPSTASH_VECTOR_URL=your-server-url
|
||||
UPSTASH_VECTOR_TOKEN=your-access-token
|
||||
|
||||
# ViKingDB configuration
|
||||
VIKINGDB_ACCESS_KEY=your-ak
|
||||
VIKINGDB_SECRET_KEY=your-sk
|
||||
VIKINGDB_REGION=cn-shanghai
|
||||
VIKINGDB_HOST=api-vikingdb.xxx.volces.com
|
||||
VIKINGDB_SCHEMA=http
|
||||
VIKINGDB_CONNECTION_TIMEOUT=30
|
||||
VIKINGDB_SOCKET_TIMEOUT=30
|
||||
|
||||
# Matrixone configration
|
||||
MATRIXONE_HOST=127.0.0.1
|
||||
MATRIXONE_PORT=6001
|
||||
MATRIXONE_USER=dump
|
||||
MATRIXONE_PASSWORD=111
|
||||
MATRIXONE_DATABASE=dify
|
||||
|
||||
# Lindorm configuration
|
||||
LINDORM_URL=http://ld-*******************-proxy-search-pub.lindorm.aliyuncs.com:30070
|
||||
LINDORM_USERNAME=admin
|
||||
LINDORM_PASSWORD=admin
|
||||
LINDORM_USING_UGC=True
|
||||
LINDORM_QUERY_TIMEOUT=1
|
||||
|
||||
# OceanBase Vector configuration
|
||||
OCEANBASE_VECTOR_HOST=127.0.0.1
|
||||
OCEANBASE_VECTOR_PORT=2881
|
||||
OCEANBASE_VECTOR_USER=root@test
|
||||
OCEANBASE_VECTOR_PASSWORD=difyai123456
|
||||
OCEANBASE_VECTOR_DATABASE=test
|
||||
OCEANBASE_MEMORY_LIMIT=6G
|
||||
OCEANBASE_ENABLE_HYBRID_SEARCH=false
|
||||
|
||||
# AlibabaCloud MySQL Vector configuration
|
||||
ALIBABACLOUD_MYSQL_HOST=127.0.0.1
|
||||
ALIBABACLOUD_MYSQL_PORT=3306
|
||||
ALIBABACLOUD_MYSQL_USER=root
|
||||
ALIBABACLOUD_MYSQL_PASSWORD=root
|
||||
ALIBABACLOUD_MYSQL_DATABASE=dify
|
||||
ALIBABACLOUD_MYSQL_MAX_CONNECTION=5
|
||||
ALIBABACLOUD_MYSQL_HNSW_M=6
|
||||
|
||||
# openGauss configuration
|
||||
OPENGAUSS_HOST=127.0.0.1
|
||||
OPENGAUSS_PORT=6600
|
||||
OPENGAUSS_USER=postgres
|
||||
OPENGAUSS_PASSWORD=Dify@123
|
||||
OPENGAUSS_DATABASE=dify
|
||||
OPENGAUSS_MIN_CONNECTION=1
|
||||
OPENGAUSS_MAX_CONNECTION=5
|
||||
|
||||
# Upload configuration
|
||||
UPLOAD_FILE_SIZE_LIMIT=15
|
||||
UPLOAD_FILE_BATCH_LIMIT=5
|
||||
UPLOAD_IMAGE_FILE_SIZE_LIMIT=10
|
||||
UPLOAD_VIDEO_FILE_SIZE_LIMIT=100
|
||||
UPLOAD_AUDIO_FILE_SIZE_LIMIT=50
|
||||
|
||||
# Comma-separated list of file extensions blocked from upload for security reasons.
|
||||
# Extensions should be lowercase without dots (e.g., exe,bat,sh,dll).
|
||||
# Empty by default to allow all file types.
|
||||
# Recommended: exe,bat,cmd,com,scr,vbs,ps1,msi,dll
|
||||
UPLOAD_FILE_EXTENSION_BLACKLIST=
|
||||
|
||||
# Model configuration
|
||||
MULTIMODAL_SEND_FORMAT=base64
|
||||
PROMPT_GENERATION_MAX_TOKENS=512
|
||||
CODE_GENERATION_MAX_TOKENS=1024
|
||||
PLUGIN_BASED_TOKEN_COUNTING_ENABLED=false
|
||||
|
||||
# Mail configuration, support: resend, smtp, sendgrid
|
||||
MAIL_TYPE=
|
||||
# If using SendGrid, use the 'from' field for authentication if necessary.
|
||||
MAIL_DEFAULT_SEND_FROM=no-reply <no-reply@dify.ai>
|
||||
# resend configuration
|
||||
RESEND_API_KEY=
|
||||
RESEND_API_URL=https://api.resend.com
|
||||
# smtp configuration
|
||||
SMTP_SERVER=smtp.gmail.com
|
||||
SMTP_PORT=465
|
||||
SMTP_USERNAME=123
|
||||
SMTP_PASSWORD=abc
|
||||
SMTP_USE_TLS=true
|
||||
SMTP_OPPORTUNISTIC_TLS=false
|
||||
# Sendgid configuration
|
||||
SENDGRID_API_KEY=
|
||||
# Sentry configuration
|
||||
SENTRY_DSN=
|
||||
|
||||
# DEBUG
|
||||
DEBUG=false
|
||||
ENABLE_REQUEST_LOGGING=False
|
||||
SQLALCHEMY_ECHO=false
|
||||
|
||||
# Notion import configuration, support public and internal
|
||||
NOTION_INTEGRATION_TYPE=public
|
||||
NOTION_CLIENT_SECRET=you-client-secret
|
||||
NOTION_CLIENT_ID=you-client-id
|
||||
NOTION_INTERNAL_SECRET=you-internal-secret
|
||||
|
||||
ETL_TYPE=dify
|
||||
UNSTRUCTURED_API_URL=
|
||||
UNSTRUCTURED_API_KEY=
|
||||
SCARF_NO_ANALYTICS=true
|
||||
|
||||
#ssrf
|
||||
SSRF_PROXY_HTTP_URL=
|
||||
SSRF_PROXY_HTTPS_URL=
|
||||
SSRF_DEFAULT_MAX_RETRIES=3
|
||||
SSRF_DEFAULT_TIME_OUT=5
|
||||
SSRF_DEFAULT_CONNECT_TIME_OUT=5
|
||||
SSRF_DEFAULT_READ_TIME_OUT=5
|
||||
SSRF_DEFAULT_WRITE_TIME_OUT=5
|
||||
SSRF_POOL_MAX_CONNECTIONS=100
|
||||
SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS=20
|
||||
SSRF_POOL_KEEPALIVE_EXPIRY=5.0
|
||||
|
||||
BATCH_UPLOAD_LIMIT=10
|
||||
KEYWORD_DATA_SOURCE_TYPE=database
|
||||
|
||||
# Workflow file upload limit
|
||||
WORKFLOW_FILE_UPLOAD_LIMIT=10
|
||||
|
||||
# CODE EXECUTION CONFIGURATION
|
||||
CODE_EXECUTION_ENDPOINT=http://127.0.0.1:8194
|
||||
CODE_EXECUTION_API_KEY=dify-sandbox
|
||||
CODE_EXECUTION_SSL_VERIFY=True
|
||||
CODE_EXECUTION_POOL_MAX_CONNECTIONS=100
|
||||
CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS=20
|
||||
CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY=5.0
|
||||
CODE_EXECUTION_CONNECT_TIMEOUT=10
|
||||
CODE_EXECUTION_READ_TIMEOUT=60
|
||||
CODE_EXECUTION_WRITE_TIMEOUT=10
|
||||
CODE_MAX_NUMBER=9223372036854775807
|
||||
CODE_MIN_NUMBER=-9223372036854775808
|
||||
CODE_MAX_STRING_LENGTH=400000
|
||||
TEMPLATE_TRANSFORM_MAX_LENGTH=400000
|
||||
CODE_MAX_STRING_ARRAY_LENGTH=30
|
||||
CODE_MAX_OBJECT_ARRAY_LENGTH=30
|
||||
CODE_MAX_NUMBER_ARRAY_LENGTH=1000
|
||||
|
||||
# API Tool configuration
|
||||
API_TOOL_DEFAULT_CONNECT_TIMEOUT=10
|
||||
API_TOOL_DEFAULT_READ_TIMEOUT=60
|
||||
|
||||
# HTTP Node configuration
|
||||
HTTP_REQUEST_MAX_CONNECT_TIMEOUT=300
|
||||
HTTP_REQUEST_MAX_READ_TIMEOUT=600
|
||||
HTTP_REQUEST_MAX_WRITE_TIMEOUT=600
|
||||
HTTP_REQUEST_NODE_MAX_BINARY_SIZE=10485760
|
||||
HTTP_REQUEST_NODE_MAX_TEXT_SIZE=1048576
|
||||
HTTP_REQUEST_NODE_SSL_VERIFY=True
|
||||
|
||||
# Respect X-* headers to redirect clients
|
||||
RESPECT_XFORWARD_HEADERS_ENABLED=false
|
||||
|
||||
# Log file path
|
||||
LOG_FILE=
|
||||
# Log file max size, the unit is MB
|
||||
LOG_FILE_MAX_SIZE=20
|
||||
# Log file max backup count
|
||||
LOG_FILE_BACKUP_COUNT=5
|
||||
# Log dateformat
|
||||
LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S
|
||||
# Log Timezone
|
||||
LOG_TZ=UTC
|
||||
# Log format
|
||||
LOG_FORMAT=%(asctime)s,%(msecs)d %(levelname)-2s [%(filename)s:%(lineno)d] %(req_id)s %(message)s
|
||||
|
||||
# Indexing configuration
|
||||
INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
|
||||
|
||||
# Workflow runtime configuration
|
||||
WORKFLOW_MAX_EXECUTION_STEPS=500
|
||||
WORKFLOW_MAX_EXECUTION_TIME=1200
|
||||
WORKFLOW_CALL_MAX_DEPTH=5
|
||||
MAX_VARIABLE_SIZE=204800
|
||||
|
||||
# GraphEngine Worker Pool Configuration
|
||||
# Minimum number of workers per GraphEngine instance (default: 1)
|
||||
GRAPH_ENGINE_MIN_WORKERS=1
|
||||
# Maximum number of workers per GraphEngine instance (default: 10)
|
||||
GRAPH_ENGINE_MAX_WORKERS=10
|
||||
# Queue depth threshold that triggers worker scale up (default: 3)
|
||||
GRAPH_ENGINE_SCALE_UP_THRESHOLD=3
|
||||
# Seconds of idle time before scaling down workers (default: 5.0)
|
||||
GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME=5.0
|
||||
|
||||
# Workflow storage configuration
|
||||
# Options: rdbms, hybrid
|
||||
# rdbms: Use only the relational database (default)
|
||||
# hybrid: Save new data to object storage, read from both object storage and RDBMS
|
||||
WORKFLOW_NODE_EXECUTION_STORAGE=rdbms
|
||||
|
||||
# Repository configuration
|
||||
# Core workflow execution repository implementation
|
||||
CORE_WORKFLOW_EXECUTION_REPOSITORY=core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository
|
||||
|
||||
# Core workflow node execution repository implementation
|
||||
CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY=core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository
|
||||
|
||||
# API workflow node execution repository implementation
|
||||
API_WORKFLOW_NODE_EXECUTION_REPOSITORY=repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository
|
||||
|
||||
# API workflow run repository implementation
|
||||
API_WORKFLOW_RUN_REPOSITORY=repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository
|
||||
# Workflow log cleanup configuration
|
||||
# Enable automatic cleanup of workflow run logs to manage database size
|
||||
WORKFLOW_LOG_CLEANUP_ENABLED=true
|
||||
# Number of days to retain workflow run logs (default: 30 days)
|
||||
WORKFLOW_LOG_RETENTION_DAYS=30
|
||||
# Batch size for workflow log cleanup operations (default: 100)
|
||||
WORKFLOW_LOG_CLEANUP_BATCH_SIZE=100
|
||||
|
||||
# App configuration
|
||||
APP_MAX_EXECUTION_TIME=1200
|
||||
APP_MAX_ACTIVE_REQUESTS=0
|
||||
|
||||
# Celery beat configuration
|
||||
CELERY_BEAT_SCHEDULER_TIME=1
|
||||
|
||||
# Celery schedule tasks configuration
|
||||
ENABLE_CLEAN_EMBEDDING_CACHE_TASK=false
|
||||
ENABLE_CLEAN_UNUSED_DATASETS_TASK=false
|
||||
ENABLE_CREATE_TIDB_SERVERLESS_TASK=false
|
||||
ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK=false
|
||||
ENABLE_CLEAN_MESSAGES=false
|
||||
ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK=false
|
||||
ENABLE_DATASETS_QUEUE_MONITOR=false
|
||||
ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK=true
|
||||
|
||||
# Position configuration
|
||||
POSITION_TOOL_PINS=
|
||||
POSITION_TOOL_INCLUDES=
|
||||
POSITION_TOOL_EXCLUDES=
|
||||
|
||||
POSITION_PROVIDER_PINS=
|
||||
POSITION_PROVIDER_INCLUDES=
|
||||
POSITION_PROVIDER_EXCLUDES=
|
||||
|
||||
# Plugin configuration
|
||||
PLUGIN_DAEMON_KEY=lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi
|
||||
PLUGIN_DAEMON_URL=http://127.0.0.1:5002
|
||||
PLUGIN_REMOTE_INSTALL_PORT=5003
|
||||
PLUGIN_REMOTE_INSTALL_HOST=localhost
|
||||
PLUGIN_MAX_PACKAGE_SIZE=15728640
|
||||
INNER_API_KEY_FOR_PLUGIN=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1
|
||||
|
||||
# Marketplace configuration
|
||||
MARKETPLACE_ENABLED=true
|
||||
MARKETPLACE_API_URL=https://marketplace.dify.ai
|
||||
|
||||
# Endpoint configuration
|
||||
ENDPOINT_URL_TEMPLATE=http://localhost:5002/e/{hook_id}
|
||||
|
||||
# Reset password token expiry minutes
|
||||
RESET_PASSWORD_TOKEN_EXPIRY_MINUTES=5
|
||||
EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES=5
|
||||
CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES=5
|
||||
OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES=5
|
||||
|
||||
CREATE_TIDB_SERVICE_JOB_ENABLED=false
|
||||
|
||||
# Maximum number of submitted thread count in a ThreadPool for parallel node execution
|
||||
MAX_SUBMIT_COUNT=100
|
||||
# Lockout duration in seconds
|
||||
LOGIN_LOCKOUT_DURATION=86400
|
||||
|
||||
# Enable OpenTelemetry
|
||||
ENABLE_OTEL=false
|
||||
OTLP_TRACE_ENDPOINT=
|
||||
OTLP_METRIC_ENDPOINT=
|
||||
OTLP_BASE_ENDPOINT=http://localhost:4318
|
||||
OTLP_API_KEY=
|
||||
OTEL_EXPORTER_OTLP_PROTOCOL=
|
||||
OTEL_EXPORTER_TYPE=otlp
|
||||
OTEL_SAMPLING_RATE=0.1
|
||||
OTEL_BATCH_EXPORT_SCHEDULE_DELAY=5000
|
||||
OTEL_MAX_QUEUE_SIZE=2048
|
||||
OTEL_MAX_EXPORT_BATCH_SIZE=512
|
||||
OTEL_METRIC_EXPORT_INTERVAL=60000
|
||||
OTEL_BATCH_EXPORT_TIMEOUT=10000
|
||||
OTEL_METRIC_EXPORT_TIMEOUT=30000
|
||||
|
||||
# Prevent Clickjacking
|
||||
ALLOW_EMBED=false
|
||||
|
||||
# Dataset queue monitor configuration
|
||||
QUEUE_MONITOR_THRESHOLD=200
|
||||
# You can configure multiple ones, separated by commas. eg: test1@dify.ai,test2@dify.ai
|
||||
QUEUE_MONITOR_ALERT_EMAILS=
|
||||
# Monitor interval in minutes, default is 30 minutes
|
||||
QUEUE_MONITOR_INTERVAL=30
|
||||
|
||||
# Swagger UI configuration
|
||||
SWAGGER_UI_ENABLED=true
|
||||
SWAGGER_UI_PATH=/swagger-ui.html
|
||||
|
||||
# Whether to encrypt dataset IDs when exporting DSL files (default: true)
|
||||
# Set to false to export dataset IDs as plain text for easier cross-environment import
|
||||
DSL_EXPORT_ENCRYPT_DATASET_ID=true
|
||||
|
||||
# Maximum number of segments for dataset segments API (0 for unlimited)
|
||||
DATASET_MAX_SEGMENTS_PER_REQUEST=0
|
||||
|
||||
BIN
api/.idea/icon.png
generated
Normal file
BIN
api/.idea/icon.png
generated
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
17
api/.idea/vcs.xml
generated
Normal file
17
api/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="IssueNavigationConfiguration">
|
||||
<option name="links">
|
||||
<list>
|
||||
<IssueNavigationLink>
|
||||
<option name="issueRegexp" value="#(\d+)" />
|
||||
<option name="linkRegexp" value="https://github.com/langgenius/dify/issues/$1" />
|
||||
</IssueNavigationLink>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
105
api/.importlinter
Normal file
105
api/.importlinter
Normal file
@@ -0,0 +1,105 @@
|
||||
[importlinter]
|
||||
root_packages =
|
||||
core
|
||||
configs
|
||||
controllers
|
||||
models
|
||||
tasks
|
||||
services
|
||||
|
||||
[importlinter:contract:workflow]
|
||||
name = Workflow
|
||||
type=layers
|
||||
layers =
|
||||
graph_engine
|
||||
graph_events
|
||||
graph
|
||||
nodes
|
||||
node_events
|
||||
entities
|
||||
containers =
|
||||
core.workflow
|
||||
ignore_imports =
|
||||
core.workflow.nodes.base.node -> core.workflow.graph_events
|
||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_events
|
||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_events
|
||||
|
||||
core.workflow.nodes.node_factory -> core.workflow.graph
|
||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_engine
|
||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph
|
||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_engine.command_channels
|
||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_engine
|
||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph
|
||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_engine.command_channels
|
||||
|
||||
[importlinter:contract:rsc]
|
||||
name = RSC
|
||||
type = layers
|
||||
layers =
|
||||
graph_engine
|
||||
response_coordinator
|
||||
containers =
|
||||
core.workflow.graph_engine
|
||||
|
||||
[importlinter:contract:worker]
|
||||
name = Worker
|
||||
type = layers
|
||||
layers =
|
||||
graph_engine
|
||||
worker
|
||||
containers =
|
||||
core.workflow.graph_engine
|
||||
|
||||
[importlinter:contract:graph-engine-architecture]
|
||||
name = Graph Engine Architecture
|
||||
type = layers
|
||||
layers =
|
||||
graph_engine
|
||||
orchestration
|
||||
command_processing
|
||||
event_management
|
||||
error_handler
|
||||
graph_traversal
|
||||
graph_state_manager
|
||||
worker_management
|
||||
domain
|
||||
containers =
|
||||
core.workflow.graph_engine
|
||||
|
||||
[importlinter:contract:domain-isolation]
|
||||
name = Domain Model Isolation
|
||||
type = forbidden
|
||||
source_modules =
|
||||
core.workflow.graph_engine.domain
|
||||
forbidden_modules =
|
||||
core.workflow.graph_engine.worker_management
|
||||
core.workflow.graph_engine.command_channels
|
||||
core.workflow.graph_engine.layers
|
||||
core.workflow.graph_engine.protocols
|
||||
|
||||
[importlinter:contract:worker-management]
|
||||
name = Worker Management
|
||||
type = forbidden
|
||||
source_modules =
|
||||
core.workflow.graph_engine.worker_management
|
||||
forbidden_modules =
|
||||
core.workflow.graph_engine.orchestration
|
||||
core.workflow.graph_engine.command_processing
|
||||
core.workflow.graph_engine.event_management
|
||||
|
||||
|
||||
[importlinter:contract:graph-traversal-components]
|
||||
name = Graph Traversal Components
|
||||
type = layers
|
||||
layers =
|
||||
edge_processor
|
||||
skip_propagator
|
||||
containers =
|
||||
core.workflow.graph_engine.graph_traversal
|
||||
|
||||
[importlinter:contract:command-channels]
|
||||
name = Command Channels Independence
|
||||
type = independence
|
||||
modules =
|
||||
core.workflow.graph_engine.command_channels.in_memory_channel
|
||||
core.workflow.graph_engine.command_channels.redis_channel
|
||||
113
api/.ruff.toml
Normal file
113
api/.ruff.toml
Normal file
@@ -0,0 +1,113 @@
|
||||
exclude = ["migrations/*"]
|
||||
line-length = 120
|
||||
|
||||
[format]
|
||||
quote-style = "double"
|
||||
|
||||
[lint]
|
||||
preview = true
|
||||
select = [
|
||||
"B", # flake8-bugbear rules
|
||||
"C4", # flake8-comprehensions
|
||||
"E", # pycodestyle E rules
|
||||
"F", # pyflakes rules
|
||||
"FURB", # refurb rules
|
||||
"I", # isort rules
|
||||
"N", # pep8-naming
|
||||
"PT", # flake8-pytest-style rules
|
||||
"PLC0208", # iteration-over-set
|
||||
"PLC0414", # useless-import-alias
|
||||
"PLE0604", # invalid-all-object
|
||||
"PLE0605", # invalid-all-format
|
||||
"PLR0402", # manual-from-import
|
||||
"PLR1711", # useless-return
|
||||
"PLR1714", # repeated-equality-comparison
|
||||
"RUF013", # implicit-optional
|
||||
"RUF019", # unnecessary-key-check
|
||||
"RUF100", # unused-noqa
|
||||
"RUF101", # redirected-noqa
|
||||
"RUF200", # invalid-pyproject-toml
|
||||
"RUF022", # unsorted-dunder-all
|
||||
"S506", # unsafe-yaml-load
|
||||
"SIM", # flake8-simplify rules
|
||||
"T201", # print-found
|
||||
"TRY400", # error-instead-of-exception
|
||||
"TRY401", # verbose-log-message
|
||||
"UP", # pyupgrade rules
|
||||
"W191", # tab-indentation
|
||||
"W605", # invalid-escape-sequence
|
||||
# security related linting rules
|
||||
# RCE proctection (sort of)
|
||||
"S102", # exec-builtin, disallow use of `exec`
|
||||
"S307", # suspicious-eval-usage, disallow use of `eval` and `ast.literal_eval`
|
||||
"S301", # suspicious-pickle-usage, disallow use of `pickle` and its wrappers.
|
||||
"S302", # suspicious-marshal-usage, disallow use of `marshal` module
|
||||
"S311", # suspicious-non-cryptographic-random-usage
|
||||
"G001", # don't use str format to logging messages
|
||||
"G003", # don't use + in logging messages
|
||||
"G004", # don't use f-strings to format logging messages
|
||||
"UP042", # use StrEnum
|
||||
]
|
||||
|
||||
ignore = [
|
||||
"E402", # module-import-not-at-top-of-file
|
||||
"E711", # none-comparison
|
||||
"E712", # true-false-comparison
|
||||
"E721", # type-comparison
|
||||
"E722", # bare-except
|
||||
"F821", # undefined-name
|
||||
"F841", # unused-variable
|
||||
"FURB113", # repeated-append
|
||||
"FURB152", # math-constant
|
||||
"UP007", # non-pep604-annotation
|
||||
"UP032", # f-string
|
||||
"UP045", # non-pep604-annotation-optional
|
||||
"B005", # strip-with-multi-characters
|
||||
"B006", # mutable-argument-default
|
||||
"B007", # unused-loop-control-variable
|
||||
"B026", # star-arg-unpacking-after-keyword-arg
|
||||
"B901", # allow return in yield
|
||||
"B903", # class-as-data-structure
|
||||
"B904", # raise-without-from-inside-except
|
||||
"B905", # zip-without-explicit-strict
|
||||
"N806", # non-lowercase-variable-in-function
|
||||
"N815", # mixed-case-variable-in-class-scope
|
||||
"PT011", # pytest-raises-too-broad
|
||||
"SIM102", # collapsible-if
|
||||
"SIM103", # needless-bool
|
||||
"SIM105", # suppressible-exception
|
||||
"SIM107", # return-in-try-except-finally
|
||||
"SIM108", # if-else-block-instead-of-if-exp
|
||||
"SIM113", # enumerate-for-loop
|
||||
"SIM117", # multiple-with-statements
|
||||
"SIM210", # if-expr-with-true-false
|
||||
]
|
||||
|
||||
[lint.per-file-ignores]
|
||||
"__init__.py" = [
|
||||
"F401", # unused-import
|
||||
"F811", # redefined-while-unused
|
||||
]
|
||||
"configs/*" = [
|
||||
"N802", # invalid-function-name
|
||||
]
|
||||
"core/model_runtime/callbacks/base_callback.py" = [
|
||||
"T201",
|
||||
]
|
||||
"core/workflow/callbacks/workflow_logging_callback.py" = [
|
||||
"T201",
|
||||
]
|
||||
"libs/gmpy2_pkcs10aep_cipher.py" = [
|
||||
"N803", # invalid-argument-name
|
||||
]
|
||||
"tests/*" = [
|
||||
"F811", # redefined-while-unused
|
||||
"T201", # allow print in tests
|
||||
]
|
||||
|
||||
[lint.pyflakes]
|
||||
allowed-unused-imports = [
|
||||
"_pytest.monkeypatch",
|
||||
"tests.integration_tests",
|
||||
"tests.unit_tests",
|
||||
]
|
||||
61
api/.vscode/launch.json.example
vendored
Normal file
61
api/.vscode/launch.json.example
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"compounds": [
|
||||
{
|
||||
"name": "Launch Flask and Celery",
|
||||
"configurations": ["Python: Flask", "Python: Celery"]
|
||||
}
|
||||
],
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Python: Flask",
|
||||
"consoleName": "Flask",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"python": "${workspaceFolder}/.venv/bin/python",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"envFile": ".env",
|
||||
"module": "flask",
|
||||
"justMyCode": true,
|
||||
"jinja": true,
|
||||
"env": {
|
||||
"FLASK_APP": "app.py",
|
||||
"GEVENT_SUPPORT": "True"
|
||||
},
|
||||
"args": [
|
||||
"run",
|
||||
"--port=5001"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Python: Celery",
|
||||
"consoleName": "Celery",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"python": "${workspaceFolder}/.venv/bin/python",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"module": "celery",
|
||||
"justMyCode": true,
|
||||
"envFile": ".env",
|
||||
"console": "integratedTerminal",
|
||||
"env": {
|
||||
"FLASK_APP": "app.py",
|
||||
"FLASK_DEBUG": "1",
|
||||
"GEVENT_SUPPORT": "True"
|
||||
},
|
||||
"args": [
|
||||
"-A",
|
||||
"app.celery",
|
||||
"worker",
|
||||
"-P",
|
||||
"gevent",
|
||||
"-c",
|
||||
"1",
|
||||
"--loglevel",
|
||||
"DEBUG",
|
||||
"-Q",
|
||||
"dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,28 +1,92 @@
|
||||
FROM langgenius/base:1.0.0-bullseye-slim as langgenius-api
|
||||
|
||||
LABEL maintainer="takatost@gmail.com"
|
||||
|
||||
ENV FLASK_APP app.py
|
||||
ENV EDITION SELF_HOSTED
|
||||
ENV DEPLOY_ENV PRODUCTION
|
||||
ENV CONSOLE_URL http://127.0.0.1:5001
|
||||
ENV API_URL http://127.0.0.1:5001
|
||||
ENV APP_URL http://127.0.0.1:5001
|
||||
|
||||
EXPOSE 5001
|
||||
# base image
|
||||
FROM python:3.12-slim-bookworm AS base
|
||||
|
||||
WORKDIR /app/api
|
||||
|
||||
COPY requirements.txt /app/api/requirements.txt
|
||||
# Install uv
|
||||
ENV UV_VERSION=0.8.9
|
||||
|
||||
RUN pip install -r requirements.txt
|
||||
RUN pip install --no-cache-dir uv==${UV_VERSION}
|
||||
|
||||
|
||||
FROM base AS packages
|
||||
|
||||
# if you located in China, you can use aliyun mirror to speed up
|
||||
# RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list.d/debian.sources
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
# basic environment
|
||||
g++ \
|
||||
# for building gmpy2
|
||||
libmpfr-dev libmpc-dev
|
||||
|
||||
# Install Python dependencies
|
||||
COPY pyproject.toml uv.lock ./
|
||||
RUN uv sync --locked --no-dev
|
||||
|
||||
# production stage
|
||||
FROM base AS production
|
||||
|
||||
ENV FLASK_APP=app.py
|
||||
ENV EDITION=SELF_HOSTED
|
||||
ENV DEPLOY_ENV=PRODUCTION
|
||||
ENV CONSOLE_API_URL=http://127.0.0.1:5001
|
||||
ENV CONSOLE_WEB_URL=http://127.0.0.1:3000
|
||||
ENV SERVICE_API_URL=http://127.0.0.1:5001
|
||||
ENV APP_WEB_URL=http://127.0.0.1:3000
|
||||
|
||||
EXPOSE 5001
|
||||
|
||||
# set timezone
|
||||
ENV TZ=UTC
|
||||
|
||||
# Set UTF-8 locale
|
||||
ENV LANG=en_US.UTF-8
|
||||
ENV LC_ALL=en_US.UTF-8
|
||||
ENV PYTHONIOENCODING=utf-8
|
||||
|
||||
WORKDIR /app/api
|
||||
|
||||
RUN \
|
||||
apt-get update \
|
||||
# Install dependencies
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
# basic environment
|
||||
curl nodejs \
|
||||
# for gmpy2 \
|
||||
libgmp-dev libmpfr-dev libmpc-dev \
|
||||
# For Security
|
||||
expat libldap-2.5-0 perl libsqlite3-0 zlib1g \
|
||||
# install fonts to support the use of tools like pypdfium2
|
||||
fonts-noto-cjk \
|
||||
# install a package to improve the accuracy of guessing mime type and file extension
|
||||
media-types \
|
||||
# install libmagic to support the use of python-magic guess MIMETYPE
|
||||
libmagic1 \
|
||||
&& apt-get autoremove -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy Python environment and packages
|
||||
ENV VIRTUAL_ENV=/app/api/.venv
|
||||
COPY --from=packages ${VIRTUAL_ENV} ${VIRTUAL_ENV}
|
||||
ENV PATH="${VIRTUAL_ENV}/bin:${PATH}"
|
||||
|
||||
# Download nltk data
|
||||
RUN python -c "import nltk; nltk.download('punkt'); nltk.download('averaged_perceptron_tagger')"
|
||||
|
||||
ENV TIKTOKEN_CACHE_DIR=/app/api/.tiktoken_cache
|
||||
|
||||
RUN python -c "import tiktoken; tiktoken.encoding_for_model('gpt2')"
|
||||
|
||||
# Copy source code
|
||||
COPY . /app/api/
|
||||
|
||||
# Copy entrypoint
|
||||
COPY docker/entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ARG COMMIT_SHA
|
||||
ENV COMMIT_SHA ${COMMIT_SHA}
|
||||
ENV COMMIT_SHA=${COMMIT_SHA}
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
||||
|
||||
110
api/README.md
110
api/README.md
@@ -2,35 +2,111 @@
|
||||
|
||||
## Usage
|
||||
|
||||
> [!IMPORTANT]
|
||||
>
|
||||
> In the v1.3.0 release, `poetry` has been replaced with
|
||||
> [`uv`](https://docs.astral.sh/uv/) as the package manager
|
||||
> for Dify API backend service.
|
||||
|
||||
1. Start the docker-compose stack
|
||||
|
||||
The backend require some middleware, including PostgreSQL, Redis, and Weaviate, which can be started together using `docker-compose`.
|
||||
|
||||
```bash
|
||||
cd ../docker
|
||||
docker-compose -f docker-compose.middleware.yaml up -d
|
||||
cd ../api
|
||||
```
|
||||
2. Copy `.env.example` to `.env`
|
||||
3. Generate a `SECRET_KEY` in the `.env` file.
|
||||
|
||||
```bash
|
||||
openssl rand -base64 42
|
||||
cd ../docker
|
||||
cp middleware.env.example middleware.env
|
||||
# change the profile to other vector database if you are not using weaviate
|
||||
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d
|
||||
cd ../api
|
||||
```
|
||||
4. Install dependencies
|
||||
|
||||
1. Copy `.env.example` to `.env`
|
||||
|
||||
```cli
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
1. Generate a `SECRET_KEY` in the `.env` file.
|
||||
|
||||
bash for Linux
|
||||
|
||||
```bash for Linux
|
||||
sed -i "/^SECRET_KEY=/c\SECRET_KEY=$(openssl rand -base64 42)" .env
|
||||
```
|
||||
|
||||
bash for Mac
|
||||
|
||||
```bash for Mac
|
||||
secret_key=$(openssl rand -base64 42)
|
||||
sed -i '' "/^SECRET_KEY=/c\\
|
||||
SECRET_KEY=${secret_key}" .env
|
||||
```
|
||||
|
||||
1. Create environment.
|
||||
|
||||
Dify API service uses [UV](https://docs.astral.sh/uv/) to manage dependencies.
|
||||
First, you need to add the uv package manager, if you don't have it already.
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
pip install uv
|
||||
# Or on macOS
|
||||
brew install uv
|
||||
```
|
||||
5. Run migrate
|
||||
|
||||
1. Install dependencies
|
||||
|
||||
```bash
|
||||
uv sync --dev
|
||||
```
|
||||
|
||||
1. Run migrate
|
||||
|
||||
Before the first launch, migrate the database to the latest version.
|
||||
|
||||
```bash
|
||||
flask db upgrade
|
||||
uv run flask db upgrade
|
||||
```
|
||||
6. Start backend:
|
||||
|
||||
1. Start backend
|
||||
|
||||
```bash
|
||||
flask run --host 0.0.0.0 --port=5001 --debug
|
||||
uv run flask run --host 0.0.0.0 --port=5001 --debug
|
||||
```
|
||||
|
||||
1. Start Dify [web](../web) service.
|
||||
|
||||
1. Setup your application by visiting `http://localhost:3000`.
|
||||
|
||||
1. If you need to handle and debug the async tasks (e.g. dataset importing and documents indexing), please start the worker service.
|
||||
|
||||
```bash
|
||||
uv run celery -A app.celery worker -P threads -c 2 --loglevel INFO -Q dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline
|
||||
```
|
||||
|
||||
Additionally, if you want to debug the celery scheduled tasks, you can run the following command in another terminal to start the beat service:
|
||||
|
||||
```bash
|
||||
uv run celery -A app.celery beat
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
1. Install dependencies for both the backend and the test environment
|
||||
|
||||
```bash
|
||||
uv sync --dev
|
||||
```
|
||||
|
||||
1. Run the tests locally with mocked system environment variables in `tool.pytest_env` section in `pyproject.toml`, more can check [Claude.md](../CLAUDE.md)
|
||||
|
||||
```bash
|
||||
uv run pytest # Run all tests
|
||||
uv run pytest tests/unit_tests/ # Unit tests only
|
||||
uv run pytest tests/integration_tests/ # Integration tests
|
||||
|
||||
# Code quality
|
||||
../dev/reformat # Run all formatters and linters
|
||||
uv run ruff check --fix ./ # Fix linting issues
|
||||
uv run ruff format ./ # Format code
|
||||
uv run basedpyright . # Type checking
|
||||
```
|
||||
7. Setup your application by visiting http://localhost:5001/console/api/setup or other apis...
|
||||
8. If you need to debug local async processing, you can run `celery -A app.celery worker`, celery can do dataset importing and other async tasks.
|
||||
233
api/app.py
233
api/app.py
@@ -1,222 +1,29 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
import os
|
||||
if not os.environ.get("DEBUG") or os.environ.get("DEBUG").lower() != 'true':
|
||||
from gevent import monkey
|
||||
monkey.patch_all()
|
||||
|
||||
import logging
|
||||
import json
|
||||
import threading
|
||||
|
||||
from flask import Flask, request, Response, session
|
||||
import flask_login
|
||||
from flask_cors import CORS
|
||||
|
||||
from extensions import ext_session, ext_celery, ext_sentry, ext_redis, ext_login, ext_vector_store, ext_migrate, \
|
||||
ext_database, ext_storage
|
||||
from extensions.ext_database import db
|
||||
from extensions.ext_login import login_manager
|
||||
|
||||
# DO NOT REMOVE BELOW
|
||||
from models import model, account, dataset, web, task
|
||||
from events import event_handlers
|
||||
# DO NOT REMOVE ABOVE
|
||||
|
||||
import core
|
||||
from config import Config, CloudEditionConfig
|
||||
from commands import register_commands
|
||||
from models.account import TenantAccountJoin
|
||||
from models.model import Account, EndUser, App
|
||||
|
||||
import warnings
|
||||
warnings.simplefilter("ignore", ResourceWarning)
|
||||
import sys
|
||||
|
||||
|
||||
class DifyApp(Flask):
|
||||
pass
|
||||
|
||||
# -------------
|
||||
# Configuration
|
||||
# -------------
|
||||
|
||||
|
||||
config_type = os.getenv('EDITION', default='SELF_HOSTED') # ce edition first
|
||||
|
||||
# ----------------------------
|
||||
# Application Factory Function
|
||||
# ----------------------------
|
||||
|
||||
|
||||
def create_app(test_config=None) -> Flask:
|
||||
app = DifyApp(__name__)
|
||||
|
||||
if test_config:
|
||||
app.config.from_object(test_config)
|
||||
else:
|
||||
if config_type == "CLOUD":
|
||||
app.config.from_object(CloudEditionConfig())
|
||||
else:
|
||||
app.config.from_object(Config())
|
||||
|
||||
app.secret_key = app.config['SECRET_KEY']
|
||||
|
||||
logging.basicConfig(level=app.config.get('LOG_LEVEL', 'INFO'))
|
||||
|
||||
initialize_extensions(app)
|
||||
register_blueprints(app)
|
||||
register_commands(app)
|
||||
|
||||
core.init_app(app)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
def initialize_extensions(app):
|
||||
# Since the application instance is now created, pass it to each Flask
|
||||
# extension instance to bind it to the Flask application instance (app)
|
||||
ext_database.init_app(app)
|
||||
ext_migrate.init(app, db)
|
||||
ext_redis.init_app(app)
|
||||
ext_vector_store.init_app(app)
|
||||
ext_storage.init_app(app)
|
||||
ext_celery.init_app(app)
|
||||
ext_session.init_app(app)
|
||||
ext_login.init_app(app)
|
||||
ext_sentry.init_app(app)
|
||||
|
||||
|
||||
# Flask-Login configuration
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
"""Load user based on the user_id."""
|
||||
if request.blueprint == 'console':
|
||||
# Check if the user_id contains a dot, indicating the old format
|
||||
if '.' in user_id:
|
||||
tenant_id, account_id = user_id.split('.')
|
||||
else:
|
||||
account_id = user_id
|
||||
|
||||
account = db.session.query(Account).filter(Account.id == account_id).first()
|
||||
|
||||
if account:
|
||||
workspace_id = session.get('workspace_id')
|
||||
if workspace_id:
|
||||
tenant_account_join = db.session.query(TenantAccountJoin).filter(
|
||||
TenantAccountJoin.account_id == account.id,
|
||||
TenantAccountJoin.tenant_id == workspace_id
|
||||
).first()
|
||||
|
||||
if not tenant_account_join:
|
||||
tenant_account_join = db.session.query(TenantAccountJoin).filter(
|
||||
TenantAccountJoin.account_id == account.id).first()
|
||||
|
||||
if tenant_account_join:
|
||||
account.current_tenant_id = tenant_account_join.tenant_id
|
||||
session['workspace_id'] = account.current_tenant_id
|
||||
else:
|
||||
account.current_tenant_id = workspace_id
|
||||
else:
|
||||
tenant_account_join = db.session.query(TenantAccountJoin).filter(
|
||||
TenantAccountJoin.account_id == account.id).first()
|
||||
if tenant_account_join:
|
||||
account.current_tenant_id = tenant_account_join.tenant_id
|
||||
session['workspace_id'] = account.current_tenant_id
|
||||
|
||||
# Log in the user with the updated user_id
|
||||
flask_login.login_user(account, remember=True)
|
||||
|
||||
return account
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
@login_manager.unauthorized_handler
|
||||
def unauthorized_handler():
|
||||
"""Handle unauthorized requests."""
|
||||
return Response(json.dumps({
|
||||
'code': 'unauthorized',
|
||||
'message': "Unauthorized."
|
||||
}), status=401, content_type="application/json")
|
||||
|
||||
|
||||
# register blueprint routers
|
||||
def register_blueprints(app):
|
||||
from controllers.service_api import bp as service_api_bp
|
||||
from controllers.web import bp as web_bp
|
||||
from controllers.console import bp as console_app_bp
|
||||
|
||||
app.register_blueprint(service_api_bp)
|
||||
|
||||
CORS(web_bp,
|
||||
resources={
|
||||
r"/*": {"origins": app.config['WEB_API_CORS_ALLOW_ORIGINS']}},
|
||||
supports_credentials=True,
|
||||
allow_headers=['Content-Type', 'Authorization'],
|
||||
methods=['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS', 'PATCH'],
|
||||
expose_headers=['X-Version', 'X-Env']
|
||||
)
|
||||
|
||||
app.register_blueprint(web_bp)
|
||||
|
||||
CORS(console_app_bp,
|
||||
resources={
|
||||
r"/*": {"origins": app.config['CONSOLE_CORS_ALLOW_ORIGINS']}},
|
||||
supports_credentials=True,
|
||||
allow_headers=['Content-Type', 'Authorization'],
|
||||
methods=['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS', 'PATCH'],
|
||||
expose_headers=['X-Version', 'X-Env']
|
||||
)
|
||||
|
||||
app.register_blueprint(console_app_bp)
|
||||
def is_db_command():
|
||||
if len(sys.argv) > 1 and sys.argv[0].endswith("flask") and sys.argv[1] == "db":
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
# create app
|
||||
app = create_app()
|
||||
celery = app.extensions["celery"]
|
||||
if is_db_command():
|
||||
from app_factory import create_migrations_app
|
||||
|
||||
app = create_migrations_app()
|
||||
else:
|
||||
# Gunicorn and Celery handle monkey patching automatically in production by
|
||||
# specifying the `gevent` worker class. Manual monkey patching is not required here.
|
||||
#
|
||||
# See `api/docker/entrypoint.sh` (lines 33 and 47) for details.
|
||||
#
|
||||
# For third-party library patching, refer to `gunicorn.conf.py` and `celery_entrypoint.py`.
|
||||
|
||||
if app.config['TESTING']:
|
||||
print("App is running in TESTING mode")
|
||||
from app_factory import create_app
|
||||
|
||||
app = create_app()
|
||||
celery = app.extensions["celery"]
|
||||
|
||||
@app.after_request
|
||||
def after_request(response):
|
||||
"""Add Version headers to the response."""
|
||||
response.headers.add('X-Version', app.config['CURRENT_VERSION'])
|
||||
response.headers.add('X-Env', app.config['DEPLOY_ENV'])
|
||||
return response
|
||||
|
||||
|
||||
@app.route('/health')
|
||||
def health():
|
||||
return Response(json.dumps({
|
||||
'status': 'ok',
|
||||
'version': app.config['CURRENT_VERSION']
|
||||
}), status=200, content_type="application/json")
|
||||
|
||||
|
||||
@app.route('/threads')
|
||||
def threads():
|
||||
num_threads = threading.active_count()
|
||||
threads = threading.enumerate()
|
||||
|
||||
thread_list = []
|
||||
for thread in threads:
|
||||
thread_name = thread.name
|
||||
thread_id = thread.ident
|
||||
is_alive = thread.is_alive()
|
||||
|
||||
thread_list.append({
|
||||
'name': thread_name,
|
||||
'id': thread_id,
|
||||
'is_alive': is_alive
|
||||
})
|
||||
|
||||
return {
|
||||
'thread_num': num_threads,
|
||||
'threads': thread_list
|
||||
}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5001)
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5001)
|
||||
|
||||
119
api/app_factory.py
Normal file
119
api/app_factory.py
Normal file
@@ -0,0 +1,119 @@
|
||||
import logging
|
||||
import time
|
||||
|
||||
from configs import dify_config
|
||||
from contexts.wrapper import RecyclableContextVar
|
||||
from dify_app import DifyApp
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# ----------------------------
|
||||
# Application Factory Function
|
||||
# ----------------------------
|
||||
def create_flask_app_with_configs() -> DifyApp:
|
||||
"""
|
||||
create a raw flask app
|
||||
with configs loaded from .env file
|
||||
"""
|
||||
dify_app = DifyApp(__name__)
|
||||
dify_app.config.from_mapping(dify_config.model_dump())
|
||||
|
||||
# add before request hook
|
||||
@dify_app.before_request
|
||||
def before_request():
|
||||
# add an unique identifier to each request
|
||||
RecyclableContextVar.increment_thread_recycles()
|
||||
|
||||
# Capture the decorator's return value to avoid pyright reportUnusedFunction
|
||||
_ = before_request
|
||||
|
||||
return dify_app
|
||||
|
||||
|
||||
def create_app() -> DifyApp:
|
||||
start_time = time.perf_counter()
|
||||
app = create_flask_app_with_configs()
|
||||
initialize_extensions(app)
|
||||
end_time = time.perf_counter()
|
||||
if dify_config.DEBUG:
|
||||
logger.info("Finished create_app (%s ms)", round((end_time - start_time) * 1000, 2))
|
||||
return app
|
||||
|
||||
|
||||
def initialize_extensions(app: DifyApp):
|
||||
from extensions import (
|
||||
ext_app_metrics,
|
||||
ext_blueprints,
|
||||
ext_celery,
|
||||
ext_code_based_extension,
|
||||
ext_commands,
|
||||
ext_compress,
|
||||
ext_database,
|
||||
ext_hosting_provider,
|
||||
ext_import_modules,
|
||||
ext_logging,
|
||||
ext_login,
|
||||
ext_mail,
|
||||
ext_migrate,
|
||||
ext_orjson,
|
||||
ext_otel,
|
||||
ext_proxy_fix,
|
||||
ext_redis,
|
||||
ext_request_logging,
|
||||
ext_sentry,
|
||||
ext_set_secretkey,
|
||||
ext_storage,
|
||||
ext_timezone,
|
||||
ext_warnings,
|
||||
)
|
||||
|
||||
extensions = [
|
||||
ext_timezone,
|
||||
ext_logging,
|
||||
ext_warnings,
|
||||
ext_import_modules,
|
||||
ext_orjson,
|
||||
ext_set_secretkey,
|
||||
ext_compress,
|
||||
ext_code_based_extension,
|
||||
ext_database,
|
||||
ext_app_metrics,
|
||||
ext_migrate,
|
||||
ext_redis,
|
||||
ext_storage,
|
||||
ext_celery,
|
||||
ext_login,
|
||||
ext_mail,
|
||||
ext_hosting_provider,
|
||||
ext_sentry,
|
||||
ext_proxy_fix,
|
||||
ext_blueprints,
|
||||
ext_commands,
|
||||
ext_otel,
|
||||
ext_request_logging,
|
||||
]
|
||||
for ext in extensions:
|
||||
short_name = ext.__name__.split(".")[-1]
|
||||
is_enabled = ext.is_enabled() if hasattr(ext, "is_enabled") else True
|
||||
if not is_enabled:
|
||||
if dify_config.DEBUG:
|
||||
logger.info("Skipped %s", short_name)
|
||||
continue
|
||||
|
||||
start_time = time.perf_counter()
|
||||
ext.init_app(app)
|
||||
end_time = time.perf_counter()
|
||||
if dify_config.DEBUG:
|
||||
logger.info("Loaded %s (%s ms)", short_name, round((end_time - start_time) * 1000, 2))
|
||||
|
||||
|
||||
def create_migrations_app():
|
||||
app = create_flask_app_with_configs()
|
||||
from extensions import ext_database, ext_migrate
|
||||
|
||||
# Initialize only required extensions
|
||||
ext_database.init_app(app)
|
||||
ext_migrate.init_app(app)
|
||||
|
||||
return app
|
||||
13
api/celery_entrypoint.py
Normal file
13
api/celery_entrypoint.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import psycogreen.gevent as pscycogreen_gevent # type: ignore
|
||||
from grpc.experimental import gevent as grpc_gevent # type: ignore
|
||||
|
||||
# grpc gevent
|
||||
grpc_gevent.init_gevent()
|
||||
print("gRPC patched with gevent.", flush=True) # noqa: T201
|
||||
pscycogreen_gevent.patch_psycopg()
|
||||
print("psycopg2 patched with gevent.", flush=True) # noqa: T201
|
||||
|
||||
|
||||
from app import app, celery
|
||||
|
||||
__all__ = ["app", "celery"]
|
||||
1910
api/commands.py
1910
api/commands.py
File diff suppressed because it is too large
Load Diff
216
api/config.py
216
api/config.py
@@ -1,216 +0,0 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
import os
|
||||
from datetime import timedelta
|
||||
|
||||
import dotenv
|
||||
|
||||
from extensions.ext_database import db
|
||||
from extensions.ext_redis import redis_client
|
||||
|
||||
dotenv.load_dotenv()
|
||||
|
||||
DEFAULTS = {
|
||||
'COOKIE_HTTPONLY': 'True',
|
||||
'COOKIE_SECURE': 'True',
|
||||
'COOKIE_SAMESITE': 'None',
|
||||
'DB_USERNAME': 'postgres',
|
||||
'DB_PASSWORD': '',
|
||||
'DB_HOST': 'localhost',
|
||||
'DB_PORT': '5432',
|
||||
'DB_DATABASE': 'dify',
|
||||
'REDIS_HOST': 'localhost',
|
||||
'REDIS_PORT': '6379',
|
||||
'REDIS_DB': '0',
|
||||
'REDIS_USE_SSL': 'False',
|
||||
'SESSION_REDIS_HOST': 'localhost',
|
||||
'SESSION_REDIS_PORT': '6379',
|
||||
'SESSION_REDIS_DB': '2',
|
||||
'SESSION_REDIS_USE_SSL': 'False',
|
||||
'OAUTH_REDIRECT_PATH': '/console/api/oauth/authorize',
|
||||
'OAUTH_REDIRECT_INDEX_PATH': '/',
|
||||
'CONSOLE_URL': 'https://cloud.dify.ai',
|
||||
'API_URL': 'https://api.dify.ai',
|
||||
'APP_URL': 'https://udify.app',
|
||||
'STORAGE_TYPE': 'local',
|
||||
'STORAGE_LOCAL_PATH': 'storage',
|
||||
'CHECK_UPDATE_URL': 'https://updates.dify.ai',
|
||||
'SESSION_TYPE': 'sqlalchemy',
|
||||
'SESSION_PERMANENT': 'True',
|
||||
'SESSION_USE_SIGNER': 'True',
|
||||
'DEPLOY_ENV': 'PRODUCTION',
|
||||
'SQLALCHEMY_POOL_SIZE': 30,
|
||||
'SQLALCHEMY_ECHO': 'False',
|
||||
'SENTRY_TRACES_SAMPLE_RATE': 1.0,
|
||||
'SENTRY_PROFILES_SAMPLE_RATE': 1.0,
|
||||
'WEAVIATE_GRPC_ENABLED': 'True',
|
||||
'CELERY_BACKEND': 'database',
|
||||
'PDF_PREVIEW': 'True',
|
||||
'LOG_LEVEL': 'INFO',
|
||||
'DISABLE_PROVIDER_CONFIG_VALIDATION': 'False',
|
||||
'DEFAULT_LLM_PROVIDER': 'openai'
|
||||
}
|
||||
|
||||
|
||||
def get_env(key):
|
||||
return os.environ.get(key, DEFAULTS.get(key))
|
||||
|
||||
|
||||
def get_bool_env(key):
|
||||
return get_env(key).lower() == 'true'
|
||||
|
||||
|
||||
def get_cors_allow_origins(env, default):
|
||||
cors_allow_origins = []
|
||||
if get_env(env):
|
||||
for origin in get_env(env).split(','):
|
||||
cors_allow_origins.append(origin)
|
||||
else:
|
||||
cors_allow_origins = [default]
|
||||
|
||||
return cors_allow_origins
|
||||
|
||||
|
||||
class Config:
|
||||
"""Application configuration class."""
|
||||
|
||||
def __init__(self):
|
||||
# app settings
|
||||
self.CONSOLE_URL = get_env('CONSOLE_URL')
|
||||
self.API_URL = get_env('API_URL')
|
||||
self.APP_URL = get_env('APP_URL')
|
||||
self.CURRENT_VERSION = "0.3.0"
|
||||
self.COMMIT_SHA = get_env('COMMIT_SHA')
|
||||
self.EDITION = "SELF_HOSTED"
|
||||
self.DEPLOY_ENV = get_env('DEPLOY_ENV')
|
||||
self.TESTING = False
|
||||
self.LOG_LEVEL = get_env('LOG_LEVEL')
|
||||
self.PDF_PREVIEW = get_bool_env('PDF_PREVIEW')
|
||||
|
||||
# Your App secret key will be used for securely signing the session cookie
|
||||
# Make sure you are changing this key for your deployment with a strong key.
|
||||
# You can generate a strong key using `openssl rand -base64 42`.
|
||||
# Alternatively you can set it with `SECRET_KEY` environment variable.
|
||||
self.SECRET_KEY = get_env('SECRET_KEY')
|
||||
|
||||
# cookie settings
|
||||
self.REMEMBER_COOKIE_HTTPONLY = get_bool_env('COOKIE_HTTPONLY')
|
||||
self.SESSION_COOKIE_HTTPONLY = get_bool_env('COOKIE_HTTPONLY')
|
||||
self.REMEMBER_COOKIE_SAMESITE = get_env('COOKIE_SAMESITE')
|
||||
self.SESSION_COOKIE_SAMESITE = get_env('COOKIE_SAMESITE')
|
||||
self.REMEMBER_COOKIE_SECURE = get_bool_env('COOKIE_SECURE')
|
||||
self.SESSION_COOKIE_SECURE = get_bool_env('COOKIE_SECURE')
|
||||
self.PERMANENT_SESSION_LIFETIME = timedelta(days=7)
|
||||
|
||||
# session settings, only support sqlalchemy, redis
|
||||
self.SESSION_TYPE = get_env('SESSION_TYPE')
|
||||
self.SESSION_PERMANENT = get_bool_env('SESSION_PERMANENT')
|
||||
self.SESSION_USE_SIGNER = get_bool_env('SESSION_USE_SIGNER')
|
||||
|
||||
# redis settings
|
||||
self.REDIS_HOST = get_env('REDIS_HOST')
|
||||
self.REDIS_PORT = get_env('REDIS_PORT')
|
||||
self.REDIS_USERNAME = get_env('REDIS_USERNAME')
|
||||
self.REDIS_PASSWORD = get_env('REDIS_PASSWORD')
|
||||
self.REDIS_DB = get_env('REDIS_DB')
|
||||
self.REDIS_USE_SSL = get_bool_env('REDIS_USE_SSL')
|
||||
|
||||
# session redis settings
|
||||
self.SESSION_REDIS_HOST = get_env('SESSION_REDIS_HOST')
|
||||
self.SESSION_REDIS_PORT = get_env('SESSION_REDIS_PORT')
|
||||
self.SESSION_REDIS_USERNAME = get_env('SESSION_REDIS_USERNAME')
|
||||
self.SESSION_REDIS_PASSWORD = get_env('SESSION_REDIS_PASSWORD')
|
||||
self.SESSION_REDIS_DB = get_env('SESSION_REDIS_DB')
|
||||
self.SESSION_REDIS_USE_SSL = get_bool_env('SESSION_REDIS_USE_SSL')
|
||||
|
||||
# storage settings
|
||||
self.STORAGE_TYPE = get_env('STORAGE_TYPE')
|
||||
self.STORAGE_LOCAL_PATH = get_env('STORAGE_LOCAL_PATH')
|
||||
self.S3_ENDPOINT = get_env('S3_ENDPOINT')
|
||||
self.S3_BUCKET_NAME = get_env('S3_BUCKET_NAME')
|
||||
self.S3_ACCESS_KEY = get_env('S3_ACCESS_KEY')
|
||||
self.S3_SECRET_KEY = get_env('S3_SECRET_KEY')
|
||||
self.S3_REGION = get_env('S3_REGION')
|
||||
|
||||
# vector store settings, only support weaviate, qdrant
|
||||
self.VECTOR_STORE = get_env('VECTOR_STORE')
|
||||
|
||||
# weaviate settings
|
||||
self.WEAVIATE_ENDPOINT = get_env('WEAVIATE_ENDPOINT')
|
||||
self.WEAVIATE_API_KEY = get_env('WEAVIATE_API_KEY')
|
||||
self.WEAVIATE_GRPC_ENABLED = get_bool_env('WEAVIATE_GRPC_ENABLED')
|
||||
|
||||
# qdrant settings
|
||||
self.QDRANT_URL = get_env('QDRANT_URL')
|
||||
self.QDRANT_API_KEY = get_env('QDRANT_API_KEY')
|
||||
|
||||
# cors settings
|
||||
self.CONSOLE_CORS_ALLOW_ORIGINS = get_cors_allow_origins(
|
||||
'CONSOLE_CORS_ALLOW_ORIGINS', self.CONSOLE_URL)
|
||||
self.WEB_API_CORS_ALLOW_ORIGINS = get_cors_allow_origins(
|
||||
'WEB_API_CORS_ALLOW_ORIGINS', '*')
|
||||
|
||||
# sentry settings
|
||||
self.SENTRY_DSN = get_env('SENTRY_DSN')
|
||||
self.SENTRY_TRACES_SAMPLE_RATE = float(get_env('SENTRY_TRACES_SAMPLE_RATE'))
|
||||
self.SENTRY_PROFILES_SAMPLE_RATE = float(get_env('SENTRY_PROFILES_SAMPLE_RATE'))
|
||||
|
||||
# check update url
|
||||
self.CHECK_UPDATE_URL = get_env('CHECK_UPDATE_URL')
|
||||
|
||||
# database settings
|
||||
db_credentials = {
|
||||
key: get_env(key) for key in
|
||||
['DB_USERNAME', 'DB_PASSWORD', 'DB_HOST', 'DB_PORT', 'DB_DATABASE']
|
||||
}
|
||||
|
||||
self.SQLALCHEMY_DATABASE_URI = f"postgresql://{db_credentials['DB_USERNAME']}:{db_credentials['DB_PASSWORD']}@{db_credentials['DB_HOST']}:{db_credentials['DB_PORT']}/{db_credentials['DB_DATABASE']}"
|
||||
self.SQLALCHEMY_ENGINE_OPTIONS = {'pool_size': int(get_env('SQLALCHEMY_POOL_SIZE'))}
|
||||
|
||||
self.SQLALCHEMY_ECHO = get_bool_env('SQLALCHEMY_ECHO')
|
||||
|
||||
# celery settings
|
||||
self.CELERY_BROKER_URL = get_env('CELERY_BROKER_URL')
|
||||
self.CELERY_BACKEND = get_env('CELERY_BACKEND')
|
||||
self.CELERY_RESULT_BACKEND = 'db+{}'.format(self.SQLALCHEMY_DATABASE_URI) \
|
||||
if self.CELERY_BACKEND == 'database' else self.CELERY_BROKER_URL
|
||||
self.BROKER_USE_SSL = self.CELERY_BROKER_URL.startswith('rediss://')
|
||||
|
||||
# hosted provider credentials
|
||||
self.OPENAI_API_KEY = get_env('OPENAI_API_KEY')
|
||||
|
||||
# By default it is False
|
||||
# You could disable it for compatibility with certain OpenAPI providers
|
||||
self.DISABLE_PROVIDER_CONFIG_VALIDATION = get_bool_env('DISABLE_PROVIDER_CONFIG_VALIDATION')
|
||||
|
||||
# For temp use only
|
||||
# set default LLM provider, default is 'openai', support `azure_openai`
|
||||
self.DEFAULT_LLM_PROVIDER = get_env('DEFAULT_LLM_PROVIDER')
|
||||
|
||||
class CloudEditionConfig(Config):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.EDITION = "CLOUD"
|
||||
|
||||
self.GITHUB_CLIENT_ID = get_env('GITHUB_CLIENT_ID')
|
||||
self.GITHUB_CLIENT_SECRET = get_env('GITHUB_CLIENT_SECRET')
|
||||
self.GOOGLE_CLIENT_ID = get_env('GOOGLE_CLIENT_ID')
|
||||
self.GOOGLE_CLIENT_SECRET = get_env('GOOGLE_CLIENT_SECRET')
|
||||
self.OAUTH_REDIRECT_PATH = get_env('OAUTH_REDIRECT_PATH')
|
||||
|
||||
|
||||
class TestConfig(Config):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
self.EDITION = "SELF_HOSTED"
|
||||
self.TESTING = True
|
||||
|
||||
db_credentials = {
|
||||
key: get_env(key) for key in ['DB_USERNAME', 'DB_PASSWORD', 'DB_HOST', 'DB_PORT']
|
||||
}
|
||||
|
||||
# use a different database for testing: dify_test
|
||||
self.SQLALCHEMY_DATABASE_URI = f"postgresql://{db_credentials['DB_USERNAME']}:{db_credentials['DB_PASSWORD']}@{db_credentials['DB_HOST']}:{db_credentials['DB_PORT']}/dify_test"
|
||||
3
api/configs/__init__.py
Normal file
3
api/configs/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .app_config import DifyConfig
|
||||
|
||||
dify_config = DifyConfig() # type: ignore
|
||||
113
api/configs/app_config.py
Normal file
113
api/configs/app_config.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import logging
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from pydantic.fields import FieldInfo
|
||||
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, TomlConfigSettingsSource
|
||||
|
||||
from libs.file_utils import search_file_upwards
|
||||
|
||||
from .deploy import DeploymentConfig
|
||||
from .enterprise import EnterpriseFeatureConfig
|
||||
from .extra import ExtraServiceConfig
|
||||
from .feature import FeatureConfig
|
||||
from .middleware import MiddlewareConfig
|
||||
from .observability import ObservabilityConfig
|
||||
from .packaging import PackagingInfo
|
||||
from .remote_settings_sources import RemoteSettingsSource, RemoteSettingsSourceConfig, RemoteSettingsSourceName
|
||||
from .remote_settings_sources.apollo import ApolloSettingsSource
|
||||
from .remote_settings_sources.nacos import NacosSettingsSource
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class RemoteSettingsSourceFactory(PydanticBaseSettingsSource):
|
||||
def __init__(self, settings_cls: type[BaseSettings]):
|
||||
super().__init__(settings_cls)
|
||||
|
||||
def get_field_value(self, field: FieldInfo, field_name: str) -> tuple[Any, str, bool]:
|
||||
raise NotImplementedError
|
||||
|
||||
def __call__(self) -> dict[str, Any]:
|
||||
current_state = self.current_state
|
||||
remote_source_name = current_state.get("REMOTE_SETTINGS_SOURCE_NAME")
|
||||
if not remote_source_name:
|
||||
return {}
|
||||
|
||||
remote_source: RemoteSettingsSource | None = None
|
||||
match remote_source_name:
|
||||
case RemoteSettingsSourceName.APOLLO:
|
||||
remote_source = ApolloSettingsSource(current_state)
|
||||
case RemoteSettingsSourceName.NACOS:
|
||||
remote_source = NacosSettingsSource(current_state)
|
||||
case _:
|
||||
logger.warning("Unsupported remote source: %s", remote_source_name)
|
||||
return {}
|
||||
|
||||
d: dict[str, Any] = {}
|
||||
|
||||
for field_name, field in self.settings_cls.model_fields.items():
|
||||
field_value, field_key, value_is_complex = remote_source.get_field_value(field, field_name)
|
||||
field_value = remote_source.prepare_field_value(field_name, field, field_value, value_is_complex)
|
||||
if field_value is not None:
|
||||
d[field_key] = field_value
|
||||
|
||||
return d
|
||||
|
||||
|
||||
class DifyConfig(
|
||||
# Packaging info
|
||||
PackagingInfo,
|
||||
# Deployment configs
|
||||
DeploymentConfig,
|
||||
# Feature configs
|
||||
FeatureConfig,
|
||||
# Middleware configs
|
||||
MiddlewareConfig,
|
||||
# Extra service configs
|
||||
ExtraServiceConfig,
|
||||
# Observability configs
|
||||
ObservabilityConfig,
|
||||
# Remote source configs
|
||||
RemoteSettingsSourceConfig,
|
||||
# Enterprise feature configs
|
||||
# **Before using, please contact business@dify.ai by email to inquire about licensing matters.**
|
||||
EnterpriseFeatureConfig,
|
||||
):
|
||||
model_config = SettingsConfigDict(
|
||||
# read from dotenv format config file
|
||||
env_file=".env",
|
||||
env_file_encoding="utf-8",
|
||||
# ignore extra attributes
|
||||
extra="ignore",
|
||||
)
|
||||
|
||||
# Before adding any config,
|
||||
# please consider to arrange it in the proper config group of existed or added
|
||||
# for better readability and maintainability.
|
||||
# Thanks for your concentration and consideration.
|
||||
|
||||
@classmethod
|
||||
def settings_customise_sources(
|
||||
cls,
|
||||
settings_cls: type[BaseSettings],
|
||||
init_settings: PydanticBaseSettingsSource,
|
||||
env_settings: PydanticBaseSettingsSource,
|
||||
dotenv_settings: PydanticBaseSettingsSource,
|
||||
file_secret_settings: PydanticBaseSettingsSource,
|
||||
) -> tuple[PydanticBaseSettingsSource, ...]:
|
||||
return (
|
||||
init_settings,
|
||||
env_settings,
|
||||
RemoteSettingsSourceFactory(settings_cls),
|
||||
dotenv_settings,
|
||||
file_secret_settings,
|
||||
TomlConfigSettingsSource(
|
||||
settings_cls=settings_cls,
|
||||
toml_file=search_file_upwards(
|
||||
base_dir_path=Path(__file__).parent,
|
||||
target_file_name="pyproject.toml",
|
||||
max_search_parent_depth=2,
|
||||
),
|
||||
),
|
||||
)
|
||||
34
api/configs/deploy/__init__.py
Normal file
34
api/configs/deploy/__init__.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class DeploymentConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for application deployment
|
||||
"""
|
||||
|
||||
APPLICATION_NAME: str = Field(
|
||||
description="Name of the application, used for identification and logging purposes",
|
||||
default="langgenius/dify",
|
||||
)
|
||||
|
||||
DEBUG: bool = Field(
|
||||
description="Enable debug mode for additional logging and development features",
|
||||
default=False,
|
||||
)
|
||||
|
||||
# Request logging configuration
|
||||
ENABLE_REQUEST_LOGGING: bool = Field(
|
||||
description="Enable request and response body logging",
|
||||
default=False,
|
||||
)
|
||||
|
||||
EDITION: str = Field(
|
||||
description="Deployment edition of the application (e.g., 'SELF_HOSTED', 'CLOUD')",
|
||||
default="SELF_HOSTED",
|
||||
)
|
||||
|
||||
DEPLOY_ENV: str = Field(
|
||||
description="Deployment environment (e.g., 'PRODUCTION', 'DEVELOPMENT'), default to PRODUCTION",
|
||||
default="PRODUCTION",
|
||||
)
|
||||
20
api/configs/enterprise/__init__.py
Normal file
20
api/configs/enterprise/__init__.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class EnterpriseFeatureConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for enterprise-level features.
|
||||
**Before using, please contact business@dify.ai by email to inquire about licensing matters.**
|
||||
"""
|
||||
|
||||
ENTERPRISE_ENABLED: bool = Field(
|
||||
description="Enable or disable enterprise-level features."
|
||||
"Before using, please contact business@dify.ai by email to inquire about licensing matters.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
CAN_REPLACE_LOGO: bool = Field(
|
||||
description="Allow customization of the enterprise logo.",
|
||||
default=False,
|
||||
)
|
||||
10
api/configs/extra/__init__.py
Normal file
10
api/configs/extra/__init__.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from configs.extra.notion_config import NotionConfig
|
||||
from configs.extra.sentry_config import SentryConfig
|
||||
|
||||
|
||||
class ExtraServiceConfig(
|
||||
# place the configs in alphabet order
|
||||
NotionConfig,
|
||||
SentryConfig,
|
||||
):
|
||||
pass
|
||||
34
api/configs/extra/notion_config.py
Normal file
34
api/configs/extra/notion_config.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class NotionConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Notion integration
|
||||
"""
|
||||
|
||||
NOTION_CLIENT_ID: str | None = Field(
|
||||
description="Client ID for Notion API authentication. Required for OAuth 2.0 flow.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
NOTION_CLIENT_SECRET: str | None = Field(
|
||||
description="Client secret for Notion API authentication. Required for OAuth 2.0 flow.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
NOTION_INTEGRATION_TYPE: str | None = Field(
|
||||
description="Type of Notion integration."
|
||||
" Set to 'internal' for internal integrations, or None for public integrations.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
NOTION_INTERNAL_SECRET: str | None = Field(
|
||||
description="Secret key for internal Notion integrations. Required when NOTION_INTEGRATION_TYPE is 'internal'.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
NOTION_INTEGRATION_TOKEN: str | None = Field(
|
||||
description="Integration token for Notion API access. Used for direct API calls without OAuth flow.",
|
||||
default=None,
|
||||
)
|
||||
26
api/configs/extra/sentry_config.py
Normal file
26
api/configs/extra/sentry_config.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from pydantic import Field, NonNegativeFloat
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class SentryConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Sentry error tracking and performance monitoring
|
||||
"""
|
||||
|
||||
SENTRY_DSN: str | None = Field(
|
||||
description="Sentry Data Source Name (DSN)."
|
||||
" This is the unique identifier of your Sentry project, used to send events to the correct project.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
SENTRY_TRACES_SAMPLE_RATE: NonNegativeFloat = Field(
|
||||
description="Sample rate for Sentry performance monitoring traces."
|
||||
" Value between 0.0 and 1.0, where 1.0 means 100% of traces are sent to Sentry.",
|
||||
default=1.0,
|
||||
)
|
||||
|
||||
SENTRY_PROFILES_SAMPLE_RATE: NonNegativeFloat = Field(
|
||||
description="Sample rate for Sentry profiling."
|
||||
" Value between 0.0 and 1.0, where 1.0 means 100% of profiles are sent to Sentry.",
|
||||
default=1.0,
|
||||
)
|
||||
1184
api/configs/feature/__init__.py
Normal file
1184
api/configs/feature/__init__.py
Normal file
File diff suppressed because it is too large
Load Diff
254
api/configs/feature/hosted_service/__init__.py
Normal file
254
api/configs/feature/hosted_service/__init__.py
Normal file
@@ -0,0 +1,254 @@
|
||||
from pydantic import Field, NonNegativeInt
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class HostedCreditConfig(BaseSettings):
|
||||
HOSTED_MODEL_CREDIT_CONFIG: str = Field(
|
||||
description="Model credit configuration in format 'model:credits,model:credits', e.g., 'gpt-4:20,gpt-4o:10'",
|
||||
default="",
|
||||
)
|
||||
|
||||
def get_model_credits(self, model_name: str) -> int:
|
||||
"""
|
||||
Get credit value for a specific model name.
|
||||
Returns 1 if model is not found in configuration (default credit).
|
||||
|
||||
:param model_name: The name of the model to search for
|
||||
:return: The credit value for the model
|
||||
"""
|
||||
if not self.HOSTED_MODEL_CREDIT_CONFIG:
|
||||
return 1
|
||||
|
||||
try:
|
||||
credit_map = dict(
|
||||
item.strip().split(":", 1) for item in self.HOSTED_MODEL_CREDIT_CONFIG.split(",") if ":" in item
|
||||
)
|
||||
|
||||
# Search for matching model pattern
|
||||
for pattern, credit in credit_map.items():
|
||||
if pattern.strip() == model_name:
|
||||
return int(credit)
|
||||
return 1 # Default quota if no match found
|
||||
except (ValueError, AttributeError):
|
||||
return 1 # Return default quota if parsing fails
|
||||
|
||||
|
||||
class HostedOpenAiConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted OpenAI service
|
||||
"""
|
||||
|
||||
HOSTED_OPENAI_API_KEY: str | None = Field(
|
||||
description="API key for hosted OpenAI service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_API_BASE: str | None = Field(
|
||||
description="Base URL for hosted OpenAI API",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_API_ORGANIZATION: str | None = Field(
|
||||
description="Organization ID for hosted OpenAI service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_TRIAL_ENABLED: bool = Field(
|
||||
description="Enable trial access to hosted OpenAI service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_TRIAL_MODELS: str = Field(
|
||||
description="Comma-separated list of available models for trial access",
|
||||
default="gpt-3.5-turbo,"
|
||||
"gpt-3.5-turbo-1106,"
|
||||
"gpt-3.5-turbo-instruct,"
|
||||
"gpt-3.5-turbo-16k,"
|
||||
"gpt-3.5-turbo-16k-0613,"
|
||||
"gpt-3.5-turbo-0613,"
|
||||
"gpt-3.5-turbo-0125,"
|
||||
"text-davinci-003",
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_QUOTA_LIMIT: NonNegativeInt = Field(
|
||||
description="Quota limit for hosted OpenAI service usage",
|
||||
default=200,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_PAID_ENABLED: bool = Field(
|
||||
description="Enable paid access to hosted OpenAI service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
HOSTED_OPENAI_PAID_MODELS: str = Field(
|
||||
description="Comma-separated list of available models for paid access",
|
||||
default="gpt-4,"
|
||||
"gpt-4-turbo-preview,"
|
||||
"gpt-4-turbo-2024-04-09,"
|
||||
"gpt-4-1106-preview,"
|
||||
"gpt-4-0125-preview,"
|
||||
"gpt-3.5-turbo,"
|
||||
"gpt-3.5-turbo-16k,"
|
||||
"gpt-3.5-turbo-16k-0613,"
|
||||
"gpt-3.5-turbo-1106,"
|
||||
"gpt-3.5-turbo-0613,"
|
||||
"gpt-3.5-turbo-0125,"
|
||||
"gpt-3.5-turbo-instruct,"
|
||||
"text-davinci-003",
|
||||
)
|
||||
|
||||
|
||||
class HostedAzureOpenAiConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted Azure OpenAI service
|
||||
"""
|
||||
|
||||
HOSTED_AZURE_OPENAI_ENABLED: bool = Field(
|
||||
description="Enable hosted Azure OpenAI service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
HOSTED_AZURE_OPENAI_API_KEY: str | None = Field(
|
||||
description="API key for hosted Azure OpenAI service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_AZURE_OPENAI_API_BASE: str | None = Field(
|
||||
description="Base URL for hosted Azure OpenAI API",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_AZURE_OPENAI_QUOTA_LIMIT: NonNegativeInt = Field(
|
||||
description="Quota limit for hosted Azure OpenAI service usage",
|
||||
default=200,
|
||||
)
|
||||
|
||||
|
||||
class HostedAnthropicConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted Anthropic service
|
||||
"""
|
||||
|
||||
HOSTED_ANTHROPIC_API_BASE: str | None = Field(
|
||||
description="Base URL for hosted Anthropic API",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_ANTHROPIC_API_KEY: str | None = Field(
|
||||
description="API key for hosted Anthropic service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HOSTED_ANTHROPIC_TRIAL_ENABLED: bool = Field(
|
||||
description="Enable trial access to hosted Anthropic service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
HOSTED_ANTHROPIC_QUOTA_LIMIT: NonNegativeInt = Field(
|
||||
description="Quota limit for hosted Anthropic service usage",
|
||||
default=600000,
|
||||
)
|
||||
|
||||
HOSTED_ANTHROPIC_PAID_ENABLED: bool = Field(
|
||||
description="Enable paid access to hosted Anthropic service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
|
||||
class HostedMinmaxConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted Minmax service
|
||||
"""
|
||||
|
||||
HOSTED_MINIMAX_ENABLED: bool = Field(
|
||||
description="Enable hosted Minmax service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
|
||||
class HostedSparkConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted Spark service
|
||||
"""
|
||||
|
||||
HOSTED_SPARK_ENABLED: bool = Field(
|
||||
description="Enable hosted Spark service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
|
||||
class HostedZhipuAIConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted ZhipuAI service
|
||||
"""
|
||||
|
||||
HOSTED_ZHIPUAI_ENABLED: bool = Field(
|
||||
description="Enable hosted ZhipuAI service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
|
||||
class HostedModerationConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for hosted Moderation service
|
||||
"""
|
||||
|
||||
HOSTED_MODERATION_ENABLED: bool = Field(
|
||||
description="Enable hosted Moderation service",
|
||||
default=False,
|
||||
)
|
||||
|
||||
HOSTED_MODERATION_PROVIDERS: str = Field(
|
||||
description="Comma-separated list of moderation providers",
|
||||
default="",
|
||||
)
|
||||
|
||||
|
||||
class HostedFetchAppTemplateConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for fetching app templates
|
||||
"""
|
||||
|
||||
HOSTED_FETCH_APP_TEMPLATES_MODE: str = Field(
|
||||
description="Mode for fetching app templates: remote, db, or builtin default to remote,",
|
||||
default="remote",
|
||||
)
|
||||
|
||||
HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN: str = Field(
|
||||
description="Domain for fetching remote app templates",
|
||||
default="https://tmpl.dify.ai",
|
||||
)
|
||||
|
||||
|
||||
class HostedFetchPipelineTemplateConfig(BaseSettings):
|
||||
"""
|
||||
Configuration for fetching pipeline templates
|
||||
"""
|
||||
|
||||
HOSTED_FETCH_PIPELINE_TEMPLATES_MODE: str = Field(
|
||||
description="Mode for fetching pipeline templates: remote, db, or builtin default to remote,",
|
||||
default="remote",
|
||||
)
|
||||
|
||||
HOSTED_FETCH_PIPELINE_TEMPLATES_REMOTE_DOMAIN: str = Field(
|
||||
description="Domain for fetching remote pipeline templates",
|
||||
default="https://tmpl.dify.ai",
|
||||
)
|
||||
|
||||
|
||||
class HostedServiceConfig(
|
||||
# place the configs in alphabet order
|
||||
HostedAnthropicConfig,
|
||||
HostedAzureOpenAiConfig,
|
||||
HostedFetchAppTemplateConfig,
|
||||
HostedFetchPipelineTemplateConfig,
|
||||
HostedMinmaxConfig,
|
||||
HostedOpenAiConfig,
|
||||
HostedSparkConfig,
|
||||
HostedZhipuAIConfig,
|
||||
# moderation
|
||||
HostedModerationConfig,
|
||||
# credit config
|
||||
HostedCreditConfig,
|
||||
):
|
||||
pass
|
||||
360
api/configs/middleware/__init__.py
Normal file
360
api/configs/middleware/__init__.py
Normal file
@@ -0,0 +1,360 @@
|
||||
import os
|
||||
from typing import Any, Literal
|
||||
from urllib.parse import parse_qsl, quote_plus
|
||||
|
||||
from pydantic import Field, NonNegativeFloat, NonNegativeInt, PositiveFloat, PositiveInt, computed_field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
from .cache.redis_config import RedisConfig
|
||||
from .storage.aliyun_oss_storage_config import AliyunOSSStorageConfig
|
||||
from .storage.amazon_s3_storage_config import S3StorageConfig
|
||||
from .storage.azure_blob_storage_config import AzureBlobStorageConfig
|
||||
from .storage.baidu_obs_storage_config import BaiduOBSStorageConfig
|
||||
from .storage.clickzetta_volume_storage_config import ClickZettaVolumeStorageConfig
|
||||
from .storage.google_cloud_storage_config import GoogleCloudStorageConfig
|
||||
from .storage.huawei_obs_storage_config import HuaweiCloudOBSStorageConfig
|
||||
from .storage.oci_storage_config import OCIStorageConfig
|
||||
from .storage.opendal_storage_config import OpenDALStorageConfig
|
||||
from .storage.supabase_storage_config import SupabaseStorageConfig
|
||||
from .storage.tencent_cos_storage_config import TencentCloudCOSStorageConfig
|
||||
from .storage.volcengine_tos_storage_config import VolcengineTOSStorageConfig
|
||||
from .vdb.alibabacloud_mysql_config import AlibabaCloudMySQLConfig
|
||||
from .vdb.analyticdb_config import AnalyticdbConfig
|
||||
from .vdb.baidu_vector_config import BaiduVectorDBConfig
|
||||
from .vdb.chroma_config import ChromaConfig
|
||||
from .vdb.clickzetta_config import ClickzettaConfig
|
||||
from .vdb.couchbase_config import CouchbaseConfig
|
||||
from .vdb.elasticsearch_config import ElasticsearchConfig
|
||||
from .vdb.huawei_cloud_config import HuaweiCloudConfig
|
||||
from .vdb.lindorm_config import LindormConfig
|
||||
from .vdb.matrixone_config import MatrixoneConfig
|
||||
from .vdb.milvus_config import MilvusConfig
|
||||
from .vdb.myscale_config import MyScaleConfig
|
||||
from .vdb.oceanbase_config import OceanBaseVectorConfig
|
||||
from .vdb.opengauss_config import OpenGaussConfig
|
||||
from .vdb.opensearch_config import OpenSearchConfig
|
||||
from .vdb.oracle_config import OracleConfig
|
||||
from .vdb.pgvector_config import PGVectorConfig
|
||||
from .vdb.pgvectors_config import PGVectoRSConfig
|
||||
from .vdb.qdrant_config import QdrantConfig
|
||||
from .vdb.relyt_config import RelytConfig
|
||||
from .vdb.tablestore_config import TableStoreConfig
|
||||
from .vdb.tencent_vector_config import TencentVectorDBConfig
|
||||
from .vdb.tidb_on_qdrant_config import TidbOnQdrantConfig
|
||||
from .vdb.tidb_vector_config import TiDBVectorConfig
|
||||
from .vdb.upstash_config import UpstashConfig
|
||||
from .vdb.vastbase_vector_config import VastbaseVectorConfig
|
||||
from .vdb.vikingdb_config import VikingDBConfig
|
||||
from .vdb.weaviate_config import WeaviateConfig
|
||||
|
||||
|
||||
class StorageConfig(BaseSettings):
|
||||
STORAGE_TYPE: Literal[
|
||||
"opendal",
|
||||
"s3",
|
||||
"aliyun-oss",
|
||||
"azure-blob",
|
||||
"baidu-obs",
|
||||
"clickzetta-volume",
|
||||
"google-storage",
|
||||
"huawei-obs",
|
||||
"oci-storage",
|
||||
"tencent-cos",
|
||||
"volcengine-tos",
|
||||
"supabase",
|
||||
"local",
|
||||
] = Field(
|
||||
description="Type of storage to use."
|
||||
" Options: 'opendal', '(deprecated) local', 's3', 'aliyun-oss', 'azure-blob', 'baidu-obs', "
|
||||
"'clickzetta-volume', 'google-storage', 'huawei-obs', 'oci-storage', 'tencent-cos', "
|
||||
"'volcengine-tos', 'supabase'. Default is 'opendal'.",
|
||||
default="opendal",
|
||||
)
|
||||
|
||||
STORAGE_LOCAL_PATH: str = Field(
|
||||
description="Path for local storage when STORAGE_TYPE is set to 'local'.",
|
||||
default="storage",
|
||||
deprecated=True,
|
||||
)
|
||||
|
||||
|
||||
class VectorStoreConfig(BaseSettings):
|
||||
VECTOR_STORE: str | None = Field(
|
||||
description="Type of vector store to use for efficient similarity search."
|
||||
" Set to None if not using a vector store.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
VECTOR_STORE_WHITELIST_ENABLE: bool | None = Field(
|
||||
description="Enable whitelist for vector store.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
VECTOR_INDEX_NAME_PREFIX: str | None = Field(
|
||||
description="Prefix used to create collection name in vector database",
|
||||
default="Vector_index",
|
||||
)
|
||||
|
||||
|
||||
class KeywordStoreConfig(BaseSettings):
|
||||
KEYWORD_STORE: str = Field(
|
||||
description="Method for keyword extraction and storage."
|
||||
" Default is 'jieba', a Chinese text segmentation library.",
|
||||
default="jieba",
|
||||
)
|
||||
|
||||
|
||||
class DatabaseConfig(BaseSettings):
|
||||
DB_HOST: str = Field(
|
||||
description="Hostname or IP address of the database server.",
|
||||
default="localhost",
|
||||
)
|
||||
|
||||
DB_PORT: PositiveInt = Field(
|
||||
description="Port number for database connection.",
|
||||
default=5432,
|
||||
)
|
||||
|
||||
DB_USERNAME: str = Field(
|
||||
description="Username for database authentication.",
|
||||
default="postgres",
|
||||
)
|
||||
|
||||
DB_PASSWORD: str = Field(
|
||||
description="Password for database authentication.",
|
||||
default="",
|
||||
)
|
||||
|
||||
DB_DATABASE: str = Field(
|
||||
description="Name of the database to connect to.",
|
||||
default="dify",
|
||||
)
|
||||
|
||||
DB_CHARSET: str = Field(
|
||||
description="Character set for database connection.",
|
||||
default="",
|
||||
)
|
||||
|
||||
DB_EXTRAS: str = Field(
|
||||
description="Additional database connection parameters. Example: 'keepalives_idle=60&keepalives=1'",
|
||||
default="",
|
||||
)
|
||||
|
||||
SQLALCHEMY_DATABASE_URI_SCHEME: str = Field(
|
||||
description="Database URI scheme for SQLAlchemy connection.",
|
||||
default="postgresql",
|
||||
)
|
||||
|
||||
@computed_field # type: ignore[prop-decorator]
|
||||
@property
|
||||
def SQLALCHEMY_DATABASE_URI(self) -> str:
|
||||
db_extras = (
|
||||
f"{self.DB_EXTRAS}&client_encoding={self.DB_CHARSET}" if self.DB_CHARSET else self.DB_EXTRAS
|
||||
).strip("&")
|
||||
db_extras = f"?{db_extras}" if db_extras else ""
|
||||
return (
|
||||
f"{self.SQLALCHEMY_DATABASE_URI_SCHEME}://"
|
||||
f"{quote_plus(self.DB_USERNAME)}:{quote_plus(self.DB_PASSWORD)}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_DATABASE}"
|
||||
f"{db_extras}"
|
||||
)
|
||||
|
||||
SQLALCHEMY_POOL_SIZE: NonNegativeInt = Field(
|
||||
description="Maximum number of database connections in the pool.",
|
||||
default=30,
|
||||
)
|
||||
|
||||
SQLALCHEMY_MAX_OVERFLOW: NonNegativeInt = Field(
|
||||
description="Maximum number of connections that can be created beyond the pool_size.",
|
||||
default=10,
|
||||
)
|
||||
|
||||
SQLALCHEMY_POOL_RECYCLE: NonNegativeInt = Field(
|
||||
description="Number of seconds after which a connection is automatically recycled.",
|
||||
default=3600,
|
||||
)
|
||||
|
||||
SQLALCHEMY_POOL_USE_LIFO: bool = Field(
|
||||
description="If True, SQLAlchemy will use last-in-first-out way to retrieve connections from pool.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
SQLALCHEMY_POOL_PRE_PING: bool = Field(
|
||||
description="If True, enables connection pool pre-ping feature to check connections.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
SQLALCHEMY_ECHO: bool | str = Field(
|
||||
description="If True, SQLAlchemy will log all SQL statements.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
SQLALCHEMY_POOL_TIMEOUT: NonNegativeInt = Field(
|
||||
description="Number of seconds to wait for a connection from the pool before raising a timeout error.",
|
||||
default=30,
|
||||
)
|
||||
|
||||
RETRIEVAL_SERVICE_EXECUTORS: NonNegativeInt = Field(
|
||||
description="Number of processes for the retrieval service, default to CPU cores.",
|
||||
default=os.cpu_count() or 1,
|
||||
)
|
||||
|
||||
@computed_field # type: ignore[prop-decorator]
|
||||
@property
|
||||
def SQLALCHEMY_ENGINE_OPTIONS(self) -> dict[str, Any]:
|
||||
# Parse DB_EXTRAS for 'options'
|
||||
db_extras_dict = dict(parse_qsl(self.DB_EXTRAS))
|
||||
options = db_extras_dict.get("options", "")
|
||||
# Always include timezone
|
||||
timezone_opt = "-c timezone=UTC"
|
||||
if options:
|
||||
# Merge user options and timezone
|
||||
merged_options = f"{options} {timezone_opt}"
|
||||
else:
|
||||
merged_options = timezone_opt
|
||||
|
||||
connect_args = {"options": merged_options}
|
||||
|
||||
return {
|
||||
"pool_size": self.SQLALCHEMY_POOL_SIZE,
|
||||
"max_overflow": self.SQLALCHEMY_MAX_OVERFLOW,
|
||||
"pool_recycle": self.SQLALCHEMY_POOL_RECYCLE,
|
||||
"pool_pre_ping": self.SQLALCHEMY_POOL_PRE_PING,
|
||||
"connect_args": connect_args,
|
||||
"pool_use_lifo": self.SQLALCHEMY_POOL_USE_LIFO,
|
||||
"pool_reset_on_return": None,
|
||||
"pool_timeout": self.SQLALCHEMY_POOL_TIMEOUT,
|
||||
}
|
||||
|
||||
|
||||
class CeleryConfig(DatabaseConfig):
|
||||
CELERY_BACKEND: str = Field(
|
||||
description="Backend for Celery task results. Options: 'database', 'redis', 'rabbitmq'.",
|
||||
default="redis",
|
||||
)
|
||||
|
||||
CELERY_BROKER_URL: str | None = Field(
|
||||
description="URL of the message broker for Celery tasks.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CELERY_USE_SENTINEL: bool | None = Field(
|
||||
description="Whether to use Redis Sentinel for high availability.",
|
||||
default=False,
|
||||
)
|
||||
|
||||
CELERY_SENTINEL_MASTER_NAME: str | None = Field(
|
||||
description="Name of the Redis Sentinel master.",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CELERY_SENTINEL_PASSWORD: str | None = Field(
|
||||
description="Password of the Redis Sentinel master.",
|
||||
default=None,
|
||||
)
|
||||
CELERY_SENTINEL_SOCKET_TIMEOUT: PositiveFloat | None = Field(
|
||||
description="Timeout for Redis Sentinel socket operations in seconds.",
|
||||
default=0.1,
|
||||
)
|
||||
|
||||
@computed_field
|
||||
def CELERY_RESULT_BACKEND(self) -> str | None:
|
||||
if self.CELERY_BACKEND in ("database", "rabbitmq"):
|
||||
return f"db+{self.SQLALCHEMY_DATABASE_URI}"
|
||||
elif self.CELERY_BACKEND == "redis":
|
||||
return self.CELERY_BROKER_URL
|
||||
else:
|
||||
return None
|
||||
|
||||
@property
|
||||
def BROKER_USE_SSL(self) -> bool:
|
||||
return self.CELERY_BROKER_URL.startswith("rediss://") if self.CELERY_BROKER_URL else False
|
||||
|
||||
|
||||
class InternalTestConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Internal Test
|
||||
"""
|
||||
|
||||
AWS_SECRET_ACCESS_KEY: str | None = Field(
|
||||
description="Internal test AWS secret access key",
|
||||
default=None,
|
||||
)
|
||||
|
||||
AWS_ACCESS_KEY_ID: str | None = Field(
|
||||
description="Internal test AWS access key ID",
|
||||
default=None,
|
||||
)
|
||||
|
||||
|
||||
class DatasetQueueMonitorConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Dataset Queue Monitor
|
||||
"""
|
||||
|
||||
QUEUE_MONITOR_THRESHOLD: NonNegativeInt | None = Field(
|
||||
description="Threshold for dataset queue monitor",
|
||||
default=200,
|
||||
)
|
||||
QUEUE_MONITOR_ALERT_EMAILS: str | None = Field(
|
||||
description="Emails for dataset queue monitor alert, separated by commas",
|
||||
default=None,
|
||||
)
|
||||
QUEUE_MONITOR_INTERVAL: NonNegativeFloat | None = Field(
|
||||
description="Interval for dataset queue monitor in minutes",
|
||||
default=30,
|
||||
)
|
||||
|
||||
|
||||
class MiddlewareConfig(
|
||||
# place the configs in alphabet order
|
||||
CeleryConfig, # Note: CeleryConfig already inherits from DatabaseConfig
|
||||
KeywordStoreConfig,
|
||||
RedisConfig,
|
||||
# configs of storage and storage providers
|
||||
StorageConfig,
|
||||
AliyunOSSStorageConfig,
|
||||
AzureBlobStorageConfig,
|
||||
BaiduOBSStorageConfig,
|
||||
ClickZettaVolumeStorageConfig,
|
||||
GoogleCloudStorageConfig,
|
||||
HuaweiCloudOBSStorageConfig,
|
||||
OCIStorageConfig,
|
||||
OpenDALStorageConfig,
|
||||
S3StorageConfig,
|
||||
SupabaseStorageConfig,
|
||||
TencentCloudCOSStorageConfig,
|
||||
VolcengineTOSStorageConfig,
|
||||
# configs of vdb and vdb providers
|
||||
VectorStoreConfig,
|
||||
AnalyticdbConfig,
|
||||
ChromaConfig,
|
||||
ClickzettaConfig,
|
||||
HuaweiCloudConfig,
|
||||
MilvusConfig,
|
||||
AlibabaCloudMySQLConfig,
|
||||
MyScaleConfig,
|
||||
OpenSearchConfig,
|
||||
OracleConfig,
|
||||
PGVectorConfig,
|
||||
VastbaseVectorConfig,
|
||||
PGVectoRSConfig,
|
||||
QdrantConfig,
|
||||
RelytConfig,
|
||||
TencentVectorDBConfig,
|
||||
TiDBVectorConfig,
|
||||
WeaviateConfig,
|
||||
ElasticsearchConfig,
|
||||
CouchbaseConfig,
|
||||
InternalTestConfig,
|
||||
VikingDBConfig,
|
||||
UpstashConfig,
|
||||
TidbOnQdrantConfig,
|
||||
LindormConfig,
|
||||
OceanBaseVectorConfig,
|
||||
BaiduVectorDBConfig,
|
||||
OpenGaussConfig,
|
||||
TableStoreConfig,
|
||||
DatasetQueueMonitorConfig,
|
||||
MatrixoneConfig,
|
||||
):
|
||||
pass
|
||||
113
api/configs/middleware/cache/redis_config.py
vendored
Normal file
113
api/configs/middleware/cache/redis_config.py
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
from pydantic import Field, NonNegativeInt, PositiveFloat, PositiveInt
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class RedisConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Redis connection
|
||||
"""
|
||||
|
||||
REDIS_HOST: str = Field(
|
||||
description="Hostname or IP address of the Redis server",
|
||||
default="localhost",
|
||||
)
|
||||
|
||||
REDIS_PORT: PositiveInt = Field(
|
||||
description="Port number on which the Redis server is listening",
|
||||
default=6379,
|
||||
)
|
||||
|
||||
REDIS_USERNAME: str | None = Field(
|
||||
description="Username for Redis authentication (if required)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_PASSWORD: str | None = Field(
|
||||
description="Password for Redis authentication (if required)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_DB: NonNegativeInt = Field(
|
||||
description="Redis database number to use (0-15)",
|
||||
default=0,
|
||||
)
|
||||
|
||||
REDIS_USE_SSL: bool = Field(
|
||||
description="Enable SSL/TLS for the Redis connection",
|
||||
default=False,
|
||||
)
|
||||
|
||||
REDIS_SSL_CERT_REQS: str = Field(
|
||||
description="SSL certificate requirements (CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED)",
|
||||
default="CERT_NONE",
|
||||
)
|
||||
|
||||
REDIS_SSL_CA_CERTS: str | None = Field(
|
||||
description="Path to the CA certificate file for SSL verification",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SSL_CERTFILE: str | None = Field(
|
||||
description="Path to the client certificate file for SSL authentication",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SSL_KEYFILE: str | None = Field(
|
||||
description="Path to the client private key file for SSL authentication",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_USE_SENTINEL: bool | None = Field(
|
||||
description="Enable Redis Sentinel mode for high availability",
|
||||
default=False,
|
||||
)
|
||||
|
||||
REDIS_SENTINELS: str | None = Field(
|
||||
description="Comma-separated list of Redis Sentinel nodes (host:port)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SENTINEL_SERVICE_NAME: str | None = Field(
|
||||
description="Name of the Redis Sentinel service to monitor",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SENTINEL_USERNAME: str | None = Field(
|
||||
description="Username for Redis Sentinel authentication (if required)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SENTINEL_PASSWORD: str | None = Field(
|
||||
description="Password for Redis Sentinel authentication (if required)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SENTINEL_SOCKET_TIMEOUT: PositiveFloat | None = Field(
|
||||
description="Socket timeout in seconds for Redis Sentinel connections",
|
||||
default=0.1,
|
||||
)
|
||||
|
||||
REDIS_USE_CLUSTERS: bool = Field(
|
||||
description="Enable Redis Clusters mode for high availability",
|
||||
default=False,
|
||||
)
|
||||
|
||||
REDIS_CLUSTERS: str | None = Field(
|
||||
description="Comma-separated list of Redis Clusters nodes (host:port)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_CLUSTERS_PASSWORD: str | None = Field(
|
||||
description="Password for Redis Clusters authentication (if required)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
REDIS_SERIALIZATION_PROTOCOL: int = Field(
|
||||
description="Redis serialization protocol (RESP) version",
|
||||
default=3,
|
||||
)
|
||||
|
||||
REDIS_ENABLE_CLIENT_SIDE_CACHE: bool = Field(
|
||||
description="Enable client side cache in redis",
|
||||
default=False,
|
||||
)
|
||||
43
api/configs/middleware/storage/aliyun_oss_storage_config.py
Normal file
43
api/configs/middleware/storage/aliyun_oss_storage_config.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class AliyunOSSStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Aliyun Object Storage Service (OSS)
|
||||
"""
|
||||
|
||||
ALIYUN_OSS_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Aliyun OSS bucket to store and retrieve objects",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_ACCESS_KEY: str | None = Field(
|
||||
description="Access key ID for authenticating with Aliyun OSS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_SECRET_KEY: str | None = Field(
|
||||
description="Secret access key for authenticating with Aliyun OSS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_ENDPOINT: str | None = Field(
|
||||
description="URL of the Aliyun OSS endpoint for your chosen region",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_REGION: str | None = Field(
|
||||
description="Aliyun OSS region where your bucket is located (e.g., 'oss-cn-hangzhou')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_AUTH_VERSION: str | None = Field(
|
||||
description="Version of the authentication protocol to use with Aliyun OSS (e.g., 'v4')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
ALIYUN_OSS_PATH: str | None = Field(
|
||||
description="Base path within the bucket to store objects (e.g., 'my-app-data/')",
|
||||
default=None,
|
||||
)
|
||||
45
api/configs/middleware/storage/amazon_s3_storage_config.py
Normal file
45
api/configs/middleware/storage/amazon_s3_storage_config.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from typing import Literal
|
||||
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class S3StorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for S3-compatible object storage
|
||||
"""
|
||||
|
||||
S3_ENDPOINT: str | None = Field(
|
||||
description="URL of the S3-compatible storage endpoint (e.g., 'https://s3.amazonaws.com')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
S3_REGION: str | None = Field(
|
||||
description="Region where the S3 bucket is located (e.g., 'us-east-1')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
S3_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the S3 bucket to store and retrieve objects",
|
||||
default=None,
|
||||
)
|
||||
|
||||
S3_ACCESS_KEY: str | None = Field(
|
||||
description="Access key ID for authenticating with the S3 service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
S3_SECRET_KEY: str | None = Field(
|
||||
description="Secret access key for authenticating with the S3 service",
|
||||
default=None,
|
||||
)
|
||||
|
||||
S3_ADDRESS_STYLE: Literal["auto", "virtual", "path"] = Field(
|
||||
description="S3 addressing style: 'auto', 'path', or 'virtual'",
|
||||
default="auto",
|
||||
)
|
||||
|
||||
S3_USE_AWS_MANAGED_IAM: bool = Field(
|
||||
description="Use AWS managed IAM roles for authentication instead of access/secret keys",
|
||||
default=False,
|
||||
)
|
||||
28
api/configs/middleware/storage/azure_blob_storage_config.py
Normal file
28
api/configs/middleware/storage/azure_blob_storage_config.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class AzureBlobStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Azure Blob Storage
|
||||
"""
|
||||
|
||||
AZURE_BLOB_ACCOUNT_NAME: str | None = Field(
|
||||
description="Name of the Azure Storage account (e.g., 'mystorageaccount')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
AZURE_BLOB_ACCOUNT_KEY: str | None = Field(
|
||||
description="Access key for authenticating with the Azure Storage account",
|
||||
default=None,
|
||||
)
|
||||
|
||||
AZURE_BLOB_CONTAINER_NAME: str | None = Field(
|
||||
description="Name of the Azure Blob container to store and retrieve objects",
|
||||
default=None,
|
||||
)
|
||||
|
||||
AZURE_BLOB_ACCOUNT_URL: str | None = Field(
|
||||
description="URL of the Azure Blob storage endpoint (e.g., 'https://mystorageaccount.blob.core.windows.net')",
|
||||
default=None,
|
||||
)
|
||||
28
api/configs/middleware/storage/baidu_obs_storage_config.py
Normal file
28
api/configs/middleware/storage/baidu_obs_storage_config.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class BaiduOBSStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Baidu Object Storage Service (OBS)
|
||||
"""
|
||||
|
||||
BAIDU_OBS_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Baidu OBS bucket to store and retrieve objects (e.g., 'my-obs-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
BAIDU_OBS_ACCESS_KEY: str | None = Field(
|
||||
description="Access Key ID for authenticating with Baidu OBS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
BAIDU_OBS_SECRET_KEY: str | None = Field(
|
||||
description="Secret Access Key for authenticating with Baidu OBS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
BAIDU_OBS_ENDPOINT: str | None = Field(
|
||||
description="URL of the Baidu OSS endpoint for your chosen region (e.g., 'https://.bj.bcebos.com')",
|
||||
default=None,
|
||||
)
|
||||
@@ -0,0 +1,63 @@
|
||||
"""ClickZetta Volume Storage Configuration"""
|
||||
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class ClickZettaVolumeStorageConfig(BaseSettings):
|
||||
"""Configuration for ClickZetta Volume storage."""
|
||||
|
||||
CLICKZETTA_VOLUME_USERNAME: str | None = Field(
|
||||
description="Username for ClickZetta Volume authentication",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_PASSWORD: str | None = Field(
|
||||
description="Password for ClickZetta Volume authentication",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_INSTANCE: str | None = Field(
|
||||
description="ClickZetta instance identifier",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_SERVICE: str = Field(
|
||||
description="ClickZetta service endpoint",
|
||||
default="api.clickzetta.com",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_WORKSPACE: str = Field(
|
||||
description="ClickZetta workspace name",
|
||||
default="quick_start",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_VCLUSTER: str = Field(
|
||||
description="ClickZetta virtual cluster name",
|
||||
default="default_ap",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_SCHEMA: str = Field(
|
||||
description="ClickZetta schema name",
|
||||
default="dify",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_TYPE: str = Field(
|
||||
description="ClickZetta volume type (table|user|external)",
|
||||
default="user",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_NAME: str | None = Field(
|
||||
description="ClickZetta volume name for external volumes",
|
||||
default=None,
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_TABLE_PREFIX: str = Field(
|
||||
description="Prefix for ClickZetta volume table names",
|
||||
default="dataset_",
|
||||
)
|
||||
|
||||
CLICKZETTA_VOLUME_DIFY_PREFIX: str = Field(
|
||||
description="Directory prefix for User Volume to organize Dify files",
|
||||
default="dify_km",
|
||||
)
|
||||
@@ -0,0 +1,18 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class GoogleCloudStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Google Cloud Storage
|
||||
"""
|
||||
|
||||
GOOGLE_STORAGE_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Google Cloud Storage bucket to store and retrieve objects (e.g., 'my-gcs-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: str | None = Field(
|
||||
description="Base64-encoded JSON key file for Google Cloud service account authentication",
|
||||
default=None,
|
||||
)
|
||||
28
api/configs/middleware/storage/huawei_obs_storage_config.py
Normal file
28
api/configs/middleware/storage/huawei_obs_storage_config.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class HuaweiCloudOBSStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Huawei Cloud Object Storage Service (OBS)
|
||||
"""
|
||||
|
||||
HUAWEI_OBS_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Huawei Cloud OBS bucket to store and retrieve objects (e.g., 'my-obs-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HUAWEI_OBS_ACCESS_KEY: str | None = Field(
|
||||
description="Access Key ID for authenticating with Huawei Cloud OBS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HUAWEI_OBS_SECRET_KEY: str | None = Field(
|
||||
description="Secret Access Key for authenticating with Huawei Cloud OBS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
HUAWEI_OBS_SERVER: str | None = Field(
|
||||
description="Endpoint URL for Huawei Cloud OBS (e.g., 'https://obs.cn-north-4.myhuaweicloud.com')",
|
||||
default=None,
|
||||
)
|
||||
33
api/configs/middleware/storage/oci_storage_config.py
Normal file
33
api/configs/middleware/storage/oci_storage_config.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class OCIStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Oracle Cloud Infrastructure (OCI) Object Storage
|
||||
"""
|
||||
|
||||
OCI_ENDPOINT: str | None = Field(
|
||||
description="URL of the OCI Object Storage endpoint (e.g., 'https://objectstorage.us-phoenix-1.oraclecloud.com')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
OCI_REGION: str | None = Field(
|
||||
description="OCI region where the bucket is located (e.g., 'us-phoenix-1')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
OCI_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the OCI Object Storage bucket to store and retrieve objects (e.g., 'my-oci-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
OCI_ACCESS_KEY: str | None = Field(
|
||||
description="Access key (also known as API key) for authenticating with OCI Object Storage",
|
||||
default=None,
|
||||
)
|
||||
|
||||
OCI_SECRET_KEY: str | None = Field(
|
||||
description="Secret key associated with the access key for authenticating with OCI Object Storage",
|
||||
default=None,
|
||||
)
|
||||
9
api/configs/middleware/storage/opendal_storage_config.py
Normal file
9
api/configs/middleware/storage/opendal_storage_config.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class OpenDALStorageConfig(BaseSettings):
|
||||
OPENDAL_SCHEME: str = Field(
|
||||
default="fs",
|
||||
description="OpenDAL scheme.",
|
||||
)
|
||||
23
api/configs/middleware/storage/supabase_storage_config.py
Normal file
23
api/configs/middleware/storage/supabase_storage_config.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class SupabaseStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Supabase Object Storage Service
|
||||
"""
|
||||
|
||||
SUPABASE_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Supabase bucket to store and retrieve objects (e.g., 'dify-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
SUPABASE_API_KEY: str | None = Field(
|
||||
description="API KEY for authenticating with Supabase",
|
||||
default=None,
|
||||
)
|
||||
|
||||
SUPABASE_URL: str | None = Field(
|
||||
description="URL of the Supabase",
|
||||
default=None,
|
||||
)
|
||||
33
api/configs/middleware/storage/tencent_cos_storage_config.py
Normal file
33
api/configs/middleware/storage/tencent_cos_storage_config.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class TencentCloudCOSStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Tencent Cloud Object Storage (COS)
|
||||
"""
|
||||
|
||||
TENCENT_COS_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Tencent Cloud COS bucket to store and retrieve objects",
|
||||
default=None,
|
||||
)
|
||||
|
||||
TENCENT_COS_REGION: str | None = Field(
|
||||
description="Tencent Cloud region where the COS bucket is located (e.g., 'ap-guangzhou')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
TENCENT_COS_SECRET_ID: str | None = Field(
|
||||
description="SecretId for authenticating with Tencent Cloud COS (part of API credentials)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
TENCENT_COS_SECRET_KEY: str | None = Field(
|
||||
description="SecretKey for authenticating with Tencent Cloud COS (part of API credentials)",
|
||||
default=None,
|
||||
)
|
||||
|
||||
TENCENT_COS_SCHEME: str | None = Field(
|
||||
description="Protocol scheme for COS requests: 'https' (recommended) or 'http'",
|
||||
default=None,
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
from pydantic import Field
|
||||
from pydantic_settings import BaseSettings
|
||||
|
||||
|
||||
class VolcengineTOSStorageConfig(BaseSettings):
|
||||
"""
|
||||
Configuration settings for Volcengine Tinder Object Storage (TOS)
|
||||
"""
|
||||
|
||||
VOLCENGINE_TOS_BUCKET_NAME: str | None = Field(
|
||||
description="Name of the Volcengine TOS bucket to store and retrieve objects (e.g., 'my-tos-bucket')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
VOLCENGINE_TOS_ACCESS_KEY: str | None = Field(
|
||||
description="Access Key ID for authenticating with Volcengine TOS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
VOLCENGINE_TOS_SECRET_KEY: str | None = Field(
|
||||
description="Secret Access Key for authenticating with Volcengine TOS",
|
||||
default=None,
|
||||
)
|
||||
|
||||
VOLCENGINE_TOS_ENDPOINT: str | None = Field(
|
||||
description="URL of the Volcengine TOS endpoint (e.g., 'https://tos-cn-beijing.volces.com')",
|
||||
default=None,
|
||||
)
|
||||
|
||||
VOLCENGINE_TOS_REGION: str | None = Field(
|
||||
description="Volcengine region where the TOS bucket is located (e.g., 'cn-beijing')",
|
||||
default=None,
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user