Compare commits

..

375 Commits

Author SHA1 Message Date
Archi
7181359eca Archi pls 2023-08-07 17:23:25 +02:00
Archi
386dd64cbb Bump 2023-08-07 16:42:45 +02:00
Archi
44cbafa25b Misc 2023-08-07 16:39:44 +02:00
Archi
864617801f Add GetConfirmations() to ASF API 2023-08-07 16:34:32 +02:00
ArchiBot
cbc5b57c11 Automatic translations update 2023-08-07 02:11:15 +00:00
renovate[bot]
7d70c0fe25 Update dependency NLog.Web.AspNetCore to v5.3.3 2023-08-06 18:27:19 +00:00
ArchiBot
b72ff50979 Automatic translations update 2023-08-06 02:06:21 +00:00
ArchiBot
5440fdd78f Automatic translations update 2023-08-05 02:08:15 +00:00
renovate[bot]
df60c6d4d2 Update dependency Microsoft.NET.Test.Sdk to v17.7.0 2023-08-04 16:41:12 +00:00
renovate[bot]
927a55fe2c Update dependency Markdig.Signed to v0.32.0 2023-08-04 07:59:50 +00:00
ArchiBot
00c7bfef25 Automatic translations update 2023-08-04 02:10:03 +00:00
Archi
036a754d12 Correct balance output
Balance delayed is actually additional to current, not current + pending.
2023-08-03 16:16:58 +02:00
Archi
b863d58ff7 Bump 2023-08-03 15:19:09 +02:00
renovate[bot]
03dd28b82f Update ASF-ui digest to e01b29e 2023-08-03 03:40:11 +00:00
ArchiBot
c3bc080777 Automatic translations update 2023-08-03 02:09:24 +00:00
Archi
c7610a918d Use ProcSubset=pid in systemd 2023-08-02 11:59:48 +02:00
ArchiBot
abae12b1e1 Automatic translations update 2023-08-02 02:08:30 +00:00
renovate[bot]
98349dbad2 Update ASF-ui digest to a774592 2023-08-01 16:43:07 +00:00
renovate[bot]
8ba22e5bc6 Update wiki digest to b71437c 2023-08-01 10:06:21 +00:00
ArchiBot
ab42de57fc Automatic translations update 2023-08-01 02:17:16 +00:00
renovate[bot]
790a8e8a7e Update ASF-ui digest to bc56ab4 2023-07-31 10:15:35 +00:00
Archi
be9144c7f1 Bump 2023-07-31 12:15:17 +02:00
Archi
cc4532af83 Add support for WalletBalanceDelayed, refactor SharedLibraryLockStatusCallback 2023-07-31 12:00:41 +02:00
ArchiBot
b2d836ecc0 Automatic translations update 2023-07-30 02:09:55 +00:00
renovate[bot]
28cac01019 Update ASF-ui digest to 79948b8 2023-07-29 15:49:17 +00:00
ArchiBot
10bf1d7311 Automatic translations update 2023-07-29 02:08:09 +00:00
renovate[bot]
3e26b6e7a2 Update ASF-ui digest to 5186a55 2023-07-28 21:24:08 +00:00
renovate[bot]
ce904603e4 Update github/codeql-action action to v2.21.2 2023-07-28 16:37:23 +00:00
renovate[bot]
81614e7a70 Update ASF-ui digest to c2d2bbf 2023-07-28 13:49:35 +00:00
Archi
0b48518e2a Bump 2023-07-28 11:47:44 +02:00
Archi
35364e46ca Closes #2972 2023-07-28 11:46:23 +02:00
ArchiBot
f2dae15562 Automatic translations update 2023-07-28 02:11:06 +00:00
ArchiBot
e71552645e Automatic translations update 2023-07-27 02:07:57 +00:00
renovate[bot]
acce99bf2e Update github/codeql-action action to v2.21.1 2023-07-26 19:23:14 +00:00
ArchiBot
dd14257116 Automatic translations update 2023-07-26 02:17:10 +00:00
Archi
68c17b0af9 Bump 2023-07-25 11:27:50 +02:00
Archi
556e1282a3 Misc fix 2023-07-25 11:26:22 +02:00
renovate[bot]
fd1b44cadc Update ASF-ui digest to 578e8ea 2023-07-25 04:00:12 +00:00
ArchiBot
9c18564830 Automatic translations update 2023-07-25 02:20:37 +00:00
Łukasz Domeradzki
97e8aece92 Update CONTRIBUTING.md 2023-07-25 00:17:47 +02:00
renovate[bot]
030ab53062 Update crowdin/github-action action to v1.12.0 2023-07-24 10:32:40 +00:00
renovate[bot]
2c0aa2a36c Update ASF-ui digest to b89ca92 2023-07-24 04:13:45 +00:00
ArchiBot
7a91e82a57 Automatic translations update 2023-07-24 02:15:15 +00:00
Łukasz Domeradzki
88d2924bc2 Update cc.sh 2023-07-23 12:25:14 +02:00
renovate[bot]
bae91cda04 Update ASF-ui digest to a00a24a 2023-07-23 03:35:12 +00:00
ArchiBot
173a0f18b9 Automatic translations update 2023-07-23 02:17:32 +00:00
Łukasz Domeradzki
0e8e360c7e Update cc.sh 2023-07-22 21:25:23 +02:00
renovate[bot]
afce39ca9c Update ASF-ui digest to d61d8aa 2023-07-22 09:15:32 +00:00
renovate[bot]
605897b7c5 Update ASF-ui digest to b04b006 2023-07-20 04:52:31 +00:00
ArchiBot
fc31027f9c Automatic translations update 2023-07-20 02:13:50 +00:00
renovate[bot]
48f1492aed Update github/codeql-action action to v2.21.0 2023-07-19 13:59:28 +00:00
renovate[bot]
7c9c92cced Update JetBrains/qodana-action action to v2023.2.1 2023-07-19 02:16:07 +00:00
renovate[bot]
abd9256026 Update ASF-ui digest to f02bd30 2023-07-18 07:11:00 +00:00
renovate[bot]
2a439e186a Update ASF-ui digest to 8ec6253 2023-07-17 04:18:33 +00:00
ArchiBot
60fd7d79d8 Automatic translations update 2023-07-16 02:31:22 +00:00
renovate[bot]
e1595719d8 Update ASF-ui digest to 3973226 2023-07-14 21:40:19 +00:00
renovate[bot]
5549481746 Update github/codeql-action action to v2.20.4 2023-07-14 17:41:07 +00:00
renovate[bot]
2a89cd781d Update mstest monorepo to v3.1.1 2023-07-14 10:55:29 +00:00
Archi
52ae995296 Bump 2023-07-13 22:59:45 +02:00
Archi
bceef4f74e Fix Abry potato server 2023-07-13 22:47:42 +02:00
Archi
49a64b75cf Closes #2952 2023-07-13 22:33:52 +02:00
renovate[bot]
0130fa9ee6 Update ASF-ui digest to fa3d8fc 2023-07-12 23:02:31 +00:00
renovate[bot]
29145d823b Update docker/setup-buildx-action action to v2.9.1 2023-07-12 14:24:14 +00:00
renovate[bot]
a4f16a0aa3 Update ASF-ui digest to f93d011 2023-07-10 07:55:13 +00:00
ArchiBot
7c4c82e980 Automatic translations update 2023-07-10 02:24:34 +00:00
ArchiBot
4f87744fd5 Automatic translations update 2023-07-09 02:29:01 +00:00
ArchiBot
a13f6cd23d Automatic translations update 2023-07-08 02:23:19 +00:00
renovate[bot]
a4f70c8ff4 Update ASF-ui digest to 369c14f 2023-07-07 18:18:34 +00:00
renovate[bot]
e72e894863 Update docker/setup-buildx-action action to v2.9.0 2023-07-07 11:47:37 +00:00
renovate[bot]
b4f747f990 Update ASF-ui digest to 81a232b 2023-07-07 07:14:54 +00:00
ArchiBot
a3122b9bd9 Automatic translations update 2023-07-07 02:23:44 +00:00
renovate[bot]
e935ec8bc4 Update ASF-ui digest to 9000bc1 2023-07-06 20:06:43 +00:00
renovate[bot]
421005c341 Update github/codeql-action action to v2.20.3 2023-07-06 14:08:41 +00:00
renovate[bot]
38c19510b5 Update actions/setup-node action to v3.7.0 2023-07-05 15:38:34 +00:00
renovate[bot]
88eaa3a745 Update dependency JetBrains.Annotations to v2023 (#2944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-05 09:26:55 +02:00
ArchiBot
8d71433059 Automatic translations update 2023-07-05 02:23:34 +00:00
renovate[bot]
8cce153f0b Update dependency NLog.Web.AspNetCore to v5.3.2 2023-07-04 22:08:01 +00:00
renovate[bot]
9e32d4a00c Update ASF-ui digest to 1ff5f2a 2023-07-04 13:47:33 +00:00
ArchiBot
29fea78ee9 Automatic translations update 2023-07-04 02:23:50 +00:00
renovate[bot]
4a8260beef Update github/codeql-action action to v2.20.2 2023-07-03 12:31:21 +00:00
ArchiBot
4c73a6bc8b Automatic translations update 2023-07-03 02:23:45 +00:00
renovate[bot]
4361be279f Update ASF-ui digest to 9dd90cf 2023-07-02 04:16:48 +00:00
ArchiBot
970307b0e6 Automatic translations update 2023-07-02 02:27:22 +00:00
renovate[bot]
c908ebe192 Update dependency NLog.Web.AspNetCore to v5.3.1 2023-07-01 21:52:05 +00:00
renovate[bot]
b95c5cc584 Update ASF-ui digest to f0d7c48 2023-07-01 07:18:15 +00:00
ArchiBot
1034e7e625 Automatic translations update 2023-07-01 02:26:28 +00:00
Archi
3144bf2a98 Closes #2938 2023-06-30 10:44:29 +02:00
Archi
2ef341fc73 Misc 2023-06-30 10:30:01 +02:00
ArchiBot
b7b8c4bc1c Automatic translations update 2023-06-30 02:22:17 +00:00
renovate[bot]
7dd7e06e38 Update wiki digest to a1000c7 2023-06-29 22:36:03 +00:00
Archi
088fa2e9f9 Bump 2023-06-29 22:41:06 +02:00
Archi
3f91b18a4d Refactor confirmations
Make it so the design actually follows what Steam gives us now. There is no need for standalone Confirmation object anymore, rather re-use what Steam gives us. Optimize parsing type, expose it as public API. Small breaking change in HandleConfirmations() action.
2023-06-29 22:34:26 +02:00
Archi
d7722fae84 Misc code cleanup 2023-06-29 21:56:05 +02:00
ArchiBot
267f44ded0 Automatic translations update 2023-06-29 02:23:10 +00:00
renovate[bot]
cbb0ac7f4f Update ASF-ui digest to 94befd8 2023-06-28 21:25:44 +00:00
renovate[bot]
f8abcf9726 Update docker/setup-buildx-action action to v2.8.0 2023-06-28 16:34:53 +00:00
Chr_
7882f709d9 add checkout.steampowered.com to known service (#2934) 2023-06-28 13:22:35 +02:00
Ryzhehvost
003bf0e2b3 Allow plugins to override blacklisted trades (#2933) 2023-06-28 11:29:40 +02:00
renovate[bot]
1fbf8b7daf Update ASF-ui digest to 38cf6f6 2023-06-28 03:45:40 +00:00
ArchiBot
c30f7f9f0c Automatic translations update 2023-06-28 02:23:42 +00:00
renovate[bot]
4af9364109 Update dependency Microsoft.NET.Test.Sdk to v17.6.3 2023-06-27 13:46:08 +00:00
ArchiBot
7d0d8b5b43 Automatic translations update 2023-06-26 02:26:13 +00:00
Archi
5abe69162d Revert "Revert "Remove obsolete ICustomMachineInfoProvider interface""
This reverts commit 19ffe6e761.
2023-06-25 12:54:40 +02:00
Archi
549bd2f0be Revert "Back to 5.4.7.3 for a second"
This reverts commit 40a23e3c99.
2023-06-25 12:54:36 +02:00
Archi
40a23e3c99 Back to 5.4.7.3 for a second 2023-06-25 12:54:17 +02:00
Archi
19ffe6e761 Revert "Remove obsolete ICustomMachineInfoProvider interface"
This reverts commit 9d837c15b3.
2023-06-25 12:53:42 +02:00
Vincent Jansen
9e1ba20783 Fix for addlicense (#2927)
Fixing #2925 based on suggestions on that issue
2023-06-25 12:52:33 +02:00
renovate[bot]
cf70b5ff6c Update ASF-ui digest to 34e52e3 2023-06-25 04:19:47 +00:00
ArchiBot
9bbe4e73c6 Automatic translations update 2023-06-25 02:31:26 +00:00
renovate[bot]
1001d3ce49 Update ASF-ui digest to f86fb28 2023-06-24 22:38:32 +00:00
ArchiBot
aeffa85b87 Automatic translations update 2023-06-24 02:23:20 +00:00
Archi
9d837c15b3 Remove obsolete ICustomMachineInfoProvider interface 2023-06-23 12:22:57 +02:00
Archi
ae7793193d Bump 2023-06-23 12:20:57 +02:00
ArchiBot
5c8976313f Automatic translations update 2023-06-23 02:23:50 +00:00
Jack Nolddor
5e53073e8f Blacklist Summer Sale 2023 appid (#2923) 2023-06-22 16:38:10 +02:00
renovate[bot]
b06aac0024 Update ASF-ui digest to c56f3a3 2023-06-22 02:32:07 +00:00
ArchiBot
54a0857429 Automatic translations update 2023-06-22 02:19:28 +00:00
renovate[bot]
eac12de92e Update github/codeql-action action to v2.20.1 2023-06-21 12:44:12 +00:00
renovate[bot]
ad1ce5be9c Update JetBrains/qodana-action action to v2023.1.5 2023-06-21 11:13:39 +00:00
Archi
b99d7bc78f Bump 2023-06-21 13:13:21 +02:00
Vita Chumakova
7132340ff7 Fix 2FA endpoints (#2921)
* Fix 2FA endpoints

* use fields in data classes

* optimize usings
2023-06-21 13:11:38 +02:00
renovate[bot]
327f988512 Update ASF-ui digest to 0dc9b31 2023-06-21 04:50:24 +00:00
renovate[bot]
8b0449889d Update peter-evans/dockerhub-description action to v3.4.2 2023-06-20 09:20:57 +00:00
ArchiBot
512fa86f83 Automatic translations update 2023-06-20 02:16:44 +00:00
ArchiBot
e7933257bc Automatic translations update 2023-06-19 02:19:27 +00:00
renovate[bot]
e57c041c33 Update ASF-ui digest to 42351b3 2023-06-18 18:07:55 +00:00
renovate[bot]
93c9c4a7d8 Update ASF-ui digest to 92587e8 2023-06-18 04:12:29 +00:00
ArchiBot
76cc33cabf Automatic translations update 2023-06-18 02:23:20 +00:00
renovate[bot]
707579a262 Update wiki digest to c906bac 2023-06-17 21:49:29 +00:00
renovate[bot]
fea70fd0cc Update ASF-ui digest to 83851d9 2023-06-17 05:04:50 +00:00
ArchiBot
9d8821908a Automatic translations update 2023-06-17 02:16:48 +00:00
renovate[bot]
af6602c217 Update ASF-ui digest to 6933718 2023-06-16 17:21:22 +00:00
renovate[bot]
2b84d411e7 Update crowdin/github-action action to v1.11.0 2023-06-16 11:07:09 +00:00
renovate[bot]
e0b26e002d Update ASF-ui digest to bca4a3e 2023-06-15 15:29:18 +00:00
renovate[bot]
ab85699104 Update ASF-ui digest to 30025b9 2023-06-15 05:13:50 +00:00
ArchiBot
d9c8acb67b Automatic translations update 2023-06-15 02:18:22 +00:00
renovate[bot]
46355fac5e Update ASF-ui digest to 4ce6c25 2023-06-14 21:25:42 +00:00
renovate[bot]
a9f6319272 Update ASF-ui digest to 58396d8 2023-06-14 14:33:19 +00:00
renovate[bot]
cfceb26ad5 Update github/codeql-action action to v2.20.0 2023-06-14 04:49:20 +00:00
ArchiBot
599dcfe104 Automatic translations update 2023-06-14 02:19:06 +00:00
renovate[bot]
9921a779cb Update docker/setup-buildx-action action to v2.7.0 2023-06-13 23:16:14 +00:00
renovate[bot]
934ffc71c9 Update wiki digest to 9e96334 2023-06-13 18:55:52 +00:00
renovate[bot]
0e2db4466b Update JetBrains/qodana-action action to v2023.1.4 2023-06-13 17:44:34 +00:00
renovate[bot]
e50b197c67 Update docker/build-push-action action to v4.1.1 2023-06-13 12:03:33 +00:00
renovate[bot]
b0c0beb042 Update crowdin/github-action action to v1.10.0 2023-06-13 07:36:27 +00:00
ArchiBot
cc08c4112a Automatic translations update 2023-06-13 02:18:57 +00:00
renovate[bot]
f26dedd7c9 Update dessant/lock-threads action to v4.0.1 2023-06-12 18:22:16 +00:00
ArchiBot
063a317783 Automatic translations update 2023-06-12 02:22:41 +00:00
renovate[bot]
17d3963c0f Update ASF-ui digest to 47a7a26 2023-06-10 18:23:15 +00:00
Archi
b0239fb291 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-06-10 20:22:46 +02:00
Archi
46fffb9d4a Add handling of EPurchaseResultDetail.NoWallet 2023-06-10 20:22:38 +02:00
ArchiBot
c55bc1d4c2 Automatic translations update 2023-06-10 02:20:19 +00:00
renovate[bot]
0c3411e2f6 Update actions/checkout action to v3.5.3 2023-06-09 16:48:51 +00:00
renovate[bot]
bccc2b49b3 Update docker/build-push-action action to v4.1.0 2023-06-09 13:11:51 +00:00
renovate[bot]
0ca413529d Update ASF-ui digest to 2087d17 2023-06-09 00:31:12 +00:00
renovate[bot]
54179d79b6 Update ASF-ui digest to c4cf465 2023-06-08 07:59:05 +00:00
renovate[bot]
aec802c192 Update ASF-ui digest to 3577b45 2023-06-08 02:59:52 +00:00
renovate[bot]
0814d68ad2 Update docker/setup-buildx-action action to v2.6.0 2023-06-07 19:37:13 +00:00
Archi
773d8e29d0 Bump 2023-06-07 21:36:50 +02:00
Archi
89bdac0692 Retry accepted/rejected trade offers
Very often, despite accepting the trade offer AND confirmation, the trade stays in active state for who knows what reason. ASF has built-in mechanism to not evaluate trade offers that it already did, which we do need and is good e.g. for ignored trade offers. Make it so accepted/rejected are retried as well, since they should not pop up again once we're done with them.
2023-06-07 21:28:04 +02:00
renovate[bot]
3316b15808 Update docker/login-action action to v2.2.0 2023-06-07 14:58:39 +00:00
renovate[bot]
b3016db56c Update dependency Microsoft.NET.Test.Sdk to v17.6.2 2023-06-06 15:14:35 +00:00
renovate[bot]
6d08fa9311 Update dependency AngleSharp.XPath to v2.0.3 2023-06-06 11:54:10 +00:00
renovate[bot]
7a9ec4852c Update ASF-ui digest to 355c868 2023-06-05 22:37:45 +00:00
renovate[bot]
65239d2c50 Update ASF-ui digest to 3929273 (#2909)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-05 09:18:02 +02:00
Archi
57ac7e2816 Bullet-proof against invalid Steam items 2023-06-04 16:39:16 +02:00
renovate[bot]
3143fc8f09 Update ASF-ui digest to 899f763 2023-06-04 07:46:30 +00:00
ArchiBot
ece24772df Automatic translations update 2023-06-04 02:30:59 +00:00
renovate[bot]
903c1cccaa Update ASF-ui digest to 0e1dac8 2023-06-03 18:10:11 +00:00
Archi
09ff465f4a Misc 2023-06-03 17:56:27 +02:00
Archi
665309a890 Bump 2023-06-03 17:52:58 +02:00
Archi
afca1e9509 Bump 2023-06-03 17:52:22 +02:00
Archi
cd8c9cf80e Closes #2908 2023-06-03 17:50:50 +02:00
renovate[bot]
425b869218 Update mstest monorepo to v3.0.4 2023-06-03 04:27:12 +00:00
renovate[bot]
c19831bcca Update github/codeql-action action to v2.3.6 2023-06-03 00:48:28 +00:00
renovate[bot]
cde0ae263e Update dependency Microsoft.NET.Test.Sdk to v17.6.1 2023-06-02 21:27:47 +00:00
Archi
12f1b5e3f4 Misc 2023-06-02 21:50:36 +02:00
renovate[bot]
96370ead2d Update dependency AngleSharp.XPath to v2.0.2 2023-06-02 16:03:19 +00:00
renovate[bot]
c967513dad Update ASF-ui digest to 65d1088 2023-06-02 14:14:17 +00:00
renovate[bot]
d98054559d Update dependency NLog.Web.AspNetCore to v5.3.0 (#2907)
* Update dependency NLog.Web.AspNetCore to v5.3.0

* Address breaking changes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Archi <JustArchi@JustArchi.net>
2023-06-02 16:13:54 +02:00
ArchiBot
9c54c81e05 Automatic translations update 2023-06-02 02:22:05 +00:00
ArchiBot
bf8275d34a Automatic translations update 2023-06-01 02:33:30 +00:00
renovate[bot]
dbc7afb8be Update wiki digest to 4a31925 2023-05-31 14:18:57 +00:00
Archi
def3bdf24a Bump limit slightly 2023-05-31 15:39:42 +02:00
Archi
b39b64e11f Add server-side limit of items also to client side 2023-05-31 15:32:56 +02:00
renovate[bot]
1812259a70 Update crowdin/github-action action to v1.9.0 2023-05-30 19:04:04 +00:00
renovate[bot]
abc0619a89 Update ASF-ui digest to 64b2a4f 2023-05-30 15:19:14 +00:00
ArchiBot
681def143e Automatic translations update 2023-05-30 02:17:36 +00:00
renovate[bot]
0c24a43d8f Update ASF-ui digest to 91f399b 2023-05-29 16:26:14 +00:00
renovate[bot]
3936d5ff20 Update actions/setup-dotnet action to v3.2.0 2023-05-29 12:46:07 +00:00
Archi
e025ae0a95 Bump 2023-05-28 16:27:18 +02:00
renovate[bot]
0c85c1413d Update ASF-ui digest to 3078d92 2023-05-28 10:51:00 +00:00
Jack Nolddor
db65ed7545 Minimize chances of TooManyOffersSent during MatchActively (#2904) 2023-05-28 12:50:37 +02:00
renovate[bot]
8f3252c79f Update ASF-ui digest to c8ef4ab 2023-05-27 01:27:38 +00:00
renovate[bot]
51790c7867 Update ASF-ui digest to 4c224d2 2023-05-26 16:28:21 +00:00
renovate[bot]
5755c36d8c Update ASF-ui digest to 2cf6a6c 2023-05-26 04:30:25 +00:00
renovate[bot]
c427042bdf Update github/codeql-action action to v2.3.5 2023-05-25 20:13:42 +00:00
renovate[bot]
377871c1db Update actions/setup-dotnet action to v3.1.0 2023-05-25 13:44:05 +00:00
renovate[bot]
1f1543ca38 Update mstest monorepo to v3.0.3 2023-05-25 11:03:23 +00:00
renovate[bot]
57f5bd14ba Update dependency JustArchiNET.Madness to v3.15.0 2023-05-25 06:06:08 +00:00
renovate[bot]
4ab826e56a Update github/codeql-action action to v2.3.4 2023-05-25 03:03:59 +00:00
renovate[bot]
50e72bc381 Update ASF-ui digest to 789a73a 2023-05-24 22:39:47 +00:00
Archi
35c22ec4a3 Bump 2023-05-23 15:14:45 +02:00
Archi
b69feff595 More bullet-proofing 2023-05-23 14:43:05 +02:00
Archi
3006290170 Stop matching actively on disconnection 2023-05-23 14:28:30 +02:00
Archi
53fc07638d Slightly improve OnDisconnected() flow
We've added possible delay initializing log on result, but this method is very time-sensitive and there is a possibility of race conditions if we don't reset other stuff, such as AWH, in timely manner ASAP.

It makes sense to move waiting for log on result in a place that isn't so time-sensitive anymore.

This can help with some nasty networking issues where AWH state would get e.g. disabled after already being initialized due to reconnection
2023-05-23 14:21:29 +02:00
renovate[bot]
e782f14cbf Update ASF-ui digest to 0b38e29 2023-05-22 23:21:07 +00:00
renovate[bot]
d1fcf04d23 Update ASF-ui digest to 884de46 2023-05-20 03:29:33 +00:00
ArchiBot
fd3c0c7b0e Automatic translations update 2023-05-20 02:11:15 +00:00
renovate[bot]
96a6871b93 Update ASF-ui digest to e89f9e3 2023-05-19 10:29:15 +00:00
Archi
0026e57e64 Misc doc 2023-05-18 12:24:48 +02:00
Archi
6645577506 Bump 2023-05-18 12:03:34 +02:00
Archi
a557b62e0b Fix for accounts without SG timestamp
Initially I added check against zero as bullet-proofing for unexpected events, but some accounts actually report 0.

Assume 0 is older than needed, if we don't have information available, we shouldn't jump to conclusions.
2023-05-18 12:01:48 +02:00
Archi
d81694c7f0 Closes #2903 2023-05-18 11:06:44 +02:00
renovate[bot]
824fb510a3 Update ASF-ui digest to 15b751d 2023-05-18 05:25:34 +00:00
renovate[bot]
b8055dae07 Update dependency JustArchiNET.Madness to v3.14.0 2023-05-17 16:50:10 +00:00
renovate[bot]
e89260fd8e Update dependency Microsoft.NET.Test.Sdk to v17.6.0 2023-05-17 03:20:39 +00:00
renovate[bot]
fb701b4405 Update ASF-ui digest to fc00f3b 2023-05-16 22:31:34 +00:00
Archi
79b5eb0d7d Bump 2023-05-16 21:32:31 +02:00
Archi
8c83b8c51f Closes #2900 Closes #2901 2023-05-16 21:27:36 +02:00
renovate[bot]
93cbe81dbc Update crowdin/github-action action to v1.8.1 2023-05-16 15:57:59 +00:00
renovate[bot]
c387a5a809 Update dependency JustArchiNET.Madness to v3.13.0 2023-05-16 13:59:17 +00:00
renovate[bot]
1b96dd020d Update ASF-ui digest to 4181444 2023-05-16 03:33:23 +00:00
ArchiBot
93368164f9 Automatic translations update 2023-05-16 02:14:29 +00:00
renovate[bot]
62bbeee168 Update ASF-ui digest to 91ecd85 (#2896)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-05-11 10:43:58 +02:00
Łukasz Domeradzki
bd522deea8 Update code-quality.yml 2023-05-11 09:46:51 +02:00
Łukasz Domeradzki
d10e8e4f27 Update qodana.yaml 2023-05-11 09:41:13 +02:00
renovate[bot]
13c1f7027d Update ASF-ui digest to 2e96565 2023-05-09 12:38:11 +00:00
Łukasz Domeradzki
459ebe301d Update CONTRIBUTING.md 2023-05-09 12:03:13 +02:00
renovate[bot]
aa2df5f2c6 Update ASF-ui digest to cda23e6 2023-05-07 22:00:49 +00:00
renovate[bot]
3355d1086e Update ASF-ui digest to 2a8ae52 2023-05-07 10:33:30 +00:00
renovate[bot]
0d5b31634f Update crazy-max/ghaction-import-gpg action to v5.3.0 2023-05-06 19:01:07 +00:00
renovate[bot]
3f223d4da7 Update ASF-ui digest to c35e56c 2023-05-06 06:08:10 +00:00
Archi
cca70f33e5 Closes #2891
We used user initiated before as a neat way to let plugins know that the disconnection was initiated by us. Since we use it in other situations now, namely as a result of failed login, we can't do it like this anymore. Instead, trust last log on result, and set it to OK where the disconnection was clean and expected.
2023-05-05 19:53:45 +02:00
Archi
2448ae5531 Bump 2023-05-05 19:46:30 +02:00
renovate[bot]
3a82ce45b2 Update github/codeql-action action to v2.3.3 2023-05-04 21:19:25 +00:00
renovate[bot]
e89673b98a Update ASF-ui digest to 40a831d 2023-05-04 02:47:26 +00:00
ArchiBot
3d411a868a Automatic translations update 2023-05-04 02:10:48 +00:00
renovate[bot]
b9dee6d30a Update ASF-ui digest to 785e90d 2023-05-03 02:28:36 +00:00
ArchiBot
7e3d80e06a Automatic translations update 2023-05-03 02:11:13 +00:00
renovate[bot]
6bb60aecc4 Update ASF-ui digest to 993b1c8 2023-05-01 02:50:20 +00:00
ArchiBot
11a1c12f0c Automatic translations update 2023-05-01 02:13:18 +00:00
ArchiBot
75f1a299f2 Automatic translations update 2023-04-30 02:13:21 +00:00
renovate[bot]
c5453c2e9f Update wiki digest to 008d20f 2023-04-29 16:32:20 +00:00
renovate[bot]
101ecce5dd Update ASF-ui digest to 466b710 2023-04-29 02:51:33 +00:00
renovate[bot]
c2cf3167da Update ASF-ui digest to f1e1155 2023-04-28 08:50:19 +00:00
ArchiBot
8223f6c5a0 Automatic translations update 2023-04-28 02:13:27 +00:00
renovate[bot]
50256747dc Update github/codeql-action action to v2.3.2 2023-04-27 19:53:36 +00:00
renovate[bot]
f69abbef35 Update ASF-ui digest to f09fe0d 2023-04-27 04:29:21 +00:00
ArchiBot
7f5b5f7800 Automatic translations update 2023-04-27 02:12:22 +00:00
renovate[bot]
208a9331e6 Update ASF-ui digest to f335fed 2023-04-26 11:21:12 +00:00
renovate[bot]
b553ca0c00 Update ASF-ui digest to 12e4fbf 2023-04-25 20:03:13 +00:00
renovate[bot]
54798627c6 Update crowdin/github-action action to v1.8.0 2023-04-25 08:45:54 +00:00
Archi
786e7f7df7 Merge branch 'main' of https://github.com/JustArchiNET/ArchiSteamFarm 2023-04-24 17:03:55 +02:00
Archi
6bdd656a70 Update CONTRIBUTING.md 2023-04-24 17:03:51 +02:00
renovate[bot]
76feb1d65d Update JetBrains/qodana-action action to v2023 (#2888)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-24 13:21:15 +02:00
Archi
ab120bd21e Bump 2023-04-23 12:15:26 +02:00
Ryzhehvost
7721106fc7 check if bot online before checking for outstanding trades (#2887) 2023-04-23 12:14:07 +02:00
renovate[bot]
a44e9ab34b Update github/codeql-action action to v2.3.0 2023-04-22 08:24:26 +00:00
renovate[bot]
75b0613271 Update ASF-ui digest to 114c390 2023-04-22 04:41:55 +00:00
ArchiBot
2590c16b4c Automatic translations update 2023-04-22 02:12:52 +00:00
Archi
f642f76ee1 Bump 2023-04-21 17:02:40 +02:00
Archi
1d96ff8b1f Misc 2023-04-21 11:41:32 +02:00
Archi
1d5bf32ec6 Remove default implementation from interface
Not supported on netf
2023-04-21 11:32:20 +02:00
ArchiBot
cb1648b8c3 Automatic translations update 2023-04-21 02:12:06 +00:00
Archi
1fb74346bd Make IWebInterface work on netf 2023-04-20 22:56:49 +02:00
Archi
b9fd3d0433 Misc 2023-04-20 22:25:38 +02:00
Archi
55b8c8f0d4 Post-PR improvements 2023-04-20 22:24:38 +02:00
fazelukario
97da56d016 Implemented native web GUI support for plugins inside the ASF IPC. Closes #2876 (#2877)
* Implemented native web GUI support for plugins inside the ASF IPC

ref #2876

* calm down netframework

* less `#if`'s

* code optimization

* misc

* Code improvements

* Support nested paths

* Revert "Support nested paths"

This reverts commit 5d7d9ac6ae.

* Support for nested paths (no errors now I guess)

* better path naming

* fixed typos

* Use `HashSet<string>` instead of `List<string>`

* Code improvements

* Code improvements

* Code improvements

* Code improvements

* Code improvements

* Added support for overriding ASF-ui files

* Removed a modified file from pull request

* Added `IWebInterface`

* less `#if`'s

* Code improvements

* Code improvements

* Added license

* Code improvements

* Added default implementation of `IWebInterface`

* Code improvements:
*Use of `OfType<>` instead `Where` and casting.

* Code improvements:
*Null checking

* Removed useless code

* shut up `netf`

* Removed useless null check

* Code improvements:
*Misc: kvp deconstaction

* Added support for absolute path
2023-04-20 22:02:49 +02:00
Archi
69cb5999ea Make 2fafinalized accept code and add 2fafinalizedforce instead 2023-04-20 21:55:19 +02:00
Archi
19ffc1d5d1 Misc
Not needed
2023-04-20 21:32:52 +02:00
Archi
869904e938 Add 2fafinalized command 2023-04-20 21:31:30 +02:00
renovate[bot]
68265993f7 Update ASF-ui digest to d71555d 2023-04-20 08:16:08 +00:00
renovate[bot]
b0a2997bd2 Update ASF-ui digest to 1fcd731 2023-04-18 02:28:26 +00:00
ArchiBot
1e91408044 Automatic translations update 2023-04-18 02:10:44 +00:00
renovate[bot]
136405d9ff Update ASF-ui digest to d243d24 2023-04-17 23:06:31 +00:00
renovate[bot]
deab1a07f6 Update ASF-ui digest to bd10a4a 2023-04-16 03:30:28 +00:00
ArchiBot
7b431033cd Automatic translations update 2023-04-16 02:16:28 +00:00
renovate[bot]
929cedaa2c Update ASF-ui digest to 7015556 2023-04-15 13:04:27 +00:00
Archi
b1bc56d1f2 Add support for AccountLoginDeniedThrottle
Same as RateLimitExceeded
2023-04-15 13:02:10 +02:00
ArchiBot
82a70e282f Automatic translations update 2023-04-15 02:12:33 +00:00
renovate[bot]
269a7cc7a3 Update github/codeql-action action to v2.2.12 2023-04-14 20:57:30 +00:00
renovate[bot]
82dd41d41b Update wiki digest to 15e3ef2 2023-04-14 17:45:15 +00:00
renovate[bot]
9ac2912c38 Update ASF-ui digest to b0bb104 2023-04-14 13:18:58 +00:00
Archi
ff01aff822 Bump 2023-04-14 12:09:13 +02:00
Archi
fc8eb6d1d9 Postpone TradeCheckTimer on new trade received 2023-04-14 11:47:05 +02:00
Archi
45b3183ed6 Misc cleanup 2023-04-14 11:41:51 +02:00
Ryzhehvost
042c2b4e3e Periodically check for outstanding trades. Closes #2871 (#2878)
* add trade check period

* change default value for timer
2023-04-14 11:01:41 +02:00
Archi
15c8c8b714 Add handling of AccessDenied during login procedure 2023-04-14 10:43:33 +02:00
ArchiBot
352d1c6e98 Automatic translations update 2023-04-14 02:10:05 +00:00
renovate[bot]
24d75b72e6 Update actions/checkout action to v3.5.2 2023-04-13 17:46:30 +00:00
renovate[bot]
e8028ae43b Update ASF-ui digest to d1e6d77 2023-04-13 07:06:42 +00:00
renovate[bot]
a65d937ff4 Update actions/checkout action to v3.5.1 (#2880)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-13 09:06:22 +02:00
renovate[bot]
24120f5e70 Update ASF-ui digest to b8dbb95 2023-04-12 08:08:40 +00:00
Archi
a536a411dd Misc 2023-04-10 15:04:08 +02:00
Archi
54c5be7ef0 Bump 2023-04-10 14:56:46 +02:00
Archi
067d478a76 Closes #2873 2023-04-10 14:55:35 +02:00
renovate[bot]
485942d45b Update peter-evans/dockerhub-description action to v3.4.1 2023-04-10 03:32:06 +00:00
ArchiBot
b0eb199aa1 Automatic translations update 2023-04-10 02:09:33 +00:00
Pavel Djundik
19fbdd1bdd Update server url (#2870) 2023-04-09 21:17:39 +02:00
renovate[bot]
9dac86327d Update ASF-ui digest to fce3428 (#2874)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-04-09 21:17:15 +02:00
renovate[bot]
faf50d0798 Update peter-evans/dockerhub-description action to v3.4.0 2023-04-07 04:34:39 +00:00
ArchiBot
5892454ff4 Automatic translations update 2023-04-07 02:08:56 +00:00
renovate[bot]
1b060549fa Update github/codeql-action action to v2.2.11 2023-04-06 21:18:16 +00:00
renovate[bot]
62bc8cf8d0 Update ASF-ui digest to e599f07 2023-04-06 08:50:54 +00:00
renovate[bot]
54d013a81d Update github/codeql-action action to v2.2.10 2023-04-05 18:30:33 +00:00
ArchiBot
52639d66a6 Automatic translations update 2023-04-05 02:05:15 +00:00
ArchiBot
420b522927 Automatic translations update 2023-04-04 02:13:35 +00:00
Archi
3435d83ea4 Bump 2023-04-03 12:43:39 +02:00
Archi
fc1bdb9b16 Closes #2867 2023-04-03 12:40:36 +02:00
ArchiBot
e443d3f4ab Automatic translations update 2023-04-03 02:09:51 +00:00
Archi
cd40472501 Misc 2023-04-02 23:54:51 +02:00
Archi
4159b379b0 Misc
Thanks @Ryzhehvost
2023-04-02 23:33:07 +02:00
Archi
b1d82da385 Bump 2023-04-02 22:44:42 +02:00
Archi
258ea5df3b Shut up netf 2023-04-02 22:29:46 +02:00
Archi
142d1bdd28 Improve resilency against DuplicateRequest 2023-04-02 22:24:31 +02:00
Archi
b8ba995db0 Handle DuplicateRequest when logging in 2023-04-02 21:38:44 +02:00
Archi
731b5909d1 Closes #2854 2023-04-02 21:26:56 +02:00
renovate[bot]
cd40e5e799 Update ASF-ui digest to bc84d62 2023-04-01 08:56:50 +00:00
renovate[bot]
a9b31a5b41 Update ASF-ui digest to 1107a29 2023-03-31 11:00:29 +00:00
renovate[bot]
9072241d70 Update ASF-ui digest to 5088f79 2023-03-30 03:49:04 +00:00
renovate[bot]
5f7e004956 Update ASF-ui digest to 1768016 2023-03-29 13:23:42 +00:00
renovate[bot]
5ee13455ac Update dependency NLog.Web.AspNetCore to v5.2.3 2023-03-28 21:29:15 +00:00
renovate[bot]
f60c8a220b Update ASF-ui digest to 64a6583 2023-03-28 01:18:16 +00:00
renovate[bot]
cb58c0dc3f Update github/codeql-action action to v2.2.9 2023-03-27 13:55:56 +00:00
renovate[bot]
db77028c6e Update ASF-ui digest to a98f263 2023-03-26 04:39:34 +00:00
ArchiBot
bf907d2d5c Automatic translations update 2023-03-25 02:12:43 +00:00
Archi
fd718b005a Bump 2023-03-24 16:08:37 +01:00
Archi
089cc5beee Closes #2624 2023-03-24 13:56:38 +01:00
Archi
68b22ba64d Add missing support for MobileAuthenticator translations 2023-03-24 13:53:40 +01:00
Archi
dbbfc7344b Closes #2850 2023-03-24 13:51:17 +01:00
renovate[bot]
f1dbf0da6a Update ASF-ui digest to f61f018 2023-03-24 08:35:01 +00:00
renovate[bot]
a99f632bce Update actions/checkout action to v3.5.0 2023-03-24 07:10:29 +00:00
renovate[bot]
e622caf820 Update ASF-ui digest to e51578c 2023-03-24 02:33:03 +00:00
renovate[bot]
3cf43cb837 Update ASF-ui digest to 4844c90 2023-03-23 14:48:38 +00:00
renovate[bot]
a1c241b2cf Update github/codeql-action action to v2.2.8 2023-03-23 06:46:12 +00:00
renovate[bot]
ad0e8fa8b2 Update ASF-ui digest to 8d93ead 2023-03-23 03:51:28 +00:00
ArchiBot
0b5a0875f6 Automatic translations update 2023-03-23 02:13:16 +00:00
ArchiBot
70e996829b Automatic translations update 2023-03-22 02:13:59 +00:00
Łukasz Domeradzki
93f3221378 Misc 2023-03-21 13:03:06 +01:00
ArchiBot
512df5c5e5 Automatic translations update 2023-03-21 02:11:46 +00:00
Archi
d5e5f82e7f Add StartupVideo asset type 2023-03-20 19:53:24 +01:00
ArchiBot
5fa1346f18 Automatic translations update 2023-03-20 02:19:43 +00:00
renovate[bot]
dd62a9ea8e Update ASF-ui digest to 1a81458 2023-03-18 23:09:27 +00:00
renovate[bot]
4796857385 Update ASF-ui digest to 13525c4 2023-03-18 03:09:26 +00:00
Archi
e8679750e1 Bump 2023-03-18 00:33:54 +01:00
Łukasz Domeradzki
dd663f43b9 Closes #2840 (#2843)
* Initial login flow changes

* I hate windows

* Make it compile

* Hehe, you bet

* Another approach

* Misc

* Misc

* Final touches

* Misc

* Okay xpaw

* xPaw update

* Keep set input for reconnection

* Unify login errors

* Add missing registry entry

* Final touches before I lose my sanity
2023-03-17 23:59:46 +01:00
renovate[bot]
25e7e21604 Update ASF-ui digest to 1e372af 2023-03-16 05:43:43 +00:00
renovate[bot]
c4d0c23a0e Update actions/checkout action to v3.4.0 2023-03-15 23:01:55 +00:00
renovate[bot]
2bda115d37 Update github/codeql-action action to v2.2.7 2023-03-15 18:28:53 +00:00
Archi
4d2fdc08c8 Bump 2023-03-15 17:57:06 +01:00
Archi
d2894a8bdc Followup fix 2023-03-15 17:56:24 +01:00
Archi
f685ce598d Bump 2023-03-15 16:07:24 +01:00
Archi
63c206e6c7 Disable revocation check
Likely root cause for https://steamcommunity.com/groups/archiasf/discussions/1/3821906444724042697/
2023-03-15 16:06:53 +01:00
renovate[bot]
b98e23e840 Update ASF-ui digest to e7dad93 2023-03-15 07:05:36 +00:00
renovate[bot]
87cff8f813 Update crowdin/github-action action to v1.7.1 2023-03-14 13:23:03 +00:00
ArchiBot
c337a9b8e1 Automatic translations update 2023-03-14 02:11:37 +00:00
renovate[bot]
c4e75c5b7b Update ASF-ui digest to e6fd69f 2023-03-11 09:06:35 +00:00
ArchiBot
9e59dd69ca Automatic translations update 2023-03-11 02:16:39 +00:00
renovate[bot]
b90707c6d1 Update github/codeql-action action to v2.2.6 2023-03-10 19:05:30 +00:00
renovate[bot]
641dfa4a1d Update docker/setup-buildx-action action to v2.5.0 2023-03-10 11:20:48 +00:00
renovate[bot]
891d6c87c8 Update ASF-ui digest to 3440b7a 2023-03-09 01:25:28 +00:00
renovate[bot]
ccd6720fc1 Update dependency Newtonsoft.Json to v13.0.3 2023-03-08 11:45:46 +00:00
renovate[bot]
7c9bed6441 Update peter-evans/dockerhub-description action to v3.3.0 2023-03-06 07:30:17 +00:00
ArchiBot
4e92de584c Automatic translations update 2023-03-06 02:22:52 +00:00
renovate[bot]
71a70fd274 Update peter-evans/dockerhub-description action to v3.2.0 2023-03-05 04:34:06 +00:00
ArchiBot
554b1fe443 Automatic translations update 2023-03-03 02:53:30 +00:00
ArchiBot
93ee2c38fb Automatic translations update 2023-03-01 02:24:54 +00:00
ArchiBot
8cde60e7d2 Automatic translations update 2023-02-28 02:22:02 +00:00
renovate[bot]
eeef41e67f Update wiki digest to f1dd80f 2023-02-27 18:03:41 +00:00
renovate[bot]
aeba4f2028 Update dependency Markdig.Signed to v0.31.0 2023-02-27 10:07:17 +00:00
renovate[bot]
5794233013 Update ASF-ui digest to 9a59cc9 2023-02-27 10:06:48 +00:00
ArchiBot
95df482938 Automatic translations update 2023-02-27 02:22:18 +00:00
renovate[bot]
a0766ffe41 Update wiki digest to 76c1aa4 2023-02-26 18:15:13 +00:00
Archi
bae511d2cf Bump + misc 2023-02-26 14:11:43 +01:00
148 changed files with 4989 additions and 809 deletions

View File

@@ -9,7 +9,7 @@ Before making an issue or pull request, you should carefully read **[ASF wiki](h
Examples of **invalid** issues:
- Asking how to install the program or use one of its functions
- Having technical difficulties running the program in some environment, encountering expected issues caused by the user's neglect
- Reporting problems that are not caused by ASF, such as ASF-ui issues or Steam not allowing you to log in
- Reporting problems that are not caused by ASF, such as ASF-ui issues or Steam not allowing you to send trade offers
- All issues encountered while running ASF in unsupported environment/setup, such as those with modified ASF source, having more bots than our maximum recommended limit or using custom plugins
- Other activities that are not related to ASF development in any way and do not require any development action from us
@@ -35,7 +35,7 @@ It would also be cool if you could reproduce your issue on latest **[pre-release
While everybody is able to create suggestions how to improve ASF, GitHub issues is not the proper place to discuss if your enhancement makes sense - by posting it you already **believe** that it makes sense, and you're **ready to convince us how**. If you have some idea but you're not sure if it's possible, makes sense, or fits ASF purpose - you have our support channels where we'll be happy to discuss given enhancement in calm atmosphere, evaluating possibilities and pros/cons. This is what we suggest to do in the first place, as in GitHub issue you're switching from **having an idea** into **having a valid enhancement with general concept, given purpose and fixed details - you're ready to defend your idea and convince us how it can be useful for ASF**. This is the general reason why many issues are rejected - because you're lacking details that would prove your suggestion being worthy.
ASF has a strict scope - farming Steam cards from Steam games + basic bots management. ASF scope is very subjective and evaluated on practical/moral basis - how much this feature fits ASF, how much actual coding effort is required to make it happen, how useful/wanted this feature is by the community and likewise. In general we don't mind further enhancements to the program, as there is always a room for improvement, but at the same time we consider ASF to be feature-complete and vast majority of things that are suggested today are simply out of the scope of ASF as a program. This is why we've rejected **[a lot](https://github.com/JustArchiNET/ArchiSteamFarm/issues?q=label%3A"✨+Enhancement"+label%3A"👎+Not+going+to+happen")** of general enhancements, for various different reasons, mainly regarding the scope of the program. Some people may find it hard to understand why we're rather sceptical towards suggestions, while the answer for that isn't obvious at first.
ASF has a strict scope - farming Steam cards from Steam games + basic bots management. ASF scope is very subjective and evaluated on practical/moral basis - how much this feature fits ASF, how much actual coding effort is required to make it happen, how useful/wanted this feature is by the community and likewise. In general we don't mind further enhancements to the program, as there is always a room for improvement, but at the same time we consider ASF to be feature-complete in what we call "active maintenance" state, and vast majority of things that are suggested today are simply out of the scope of ASF as a program. This is why we've rejected **[a lot](https://github.com/JustArchiNET/ArchiSteamFarm/issues?q=label%3A"✨+Enhancement"+label%3A"👎+Not+going+to+happen")** of general enhancements, for various different reasons, mainly regarding the scope of the program. Some people may find it hard to understand why we're rather sceptical towards suggestions, while the answer for that isn't obvious at first.
> In the lifetime of an Open Source project, only 10 percent of the time spent adding a feature will be spent coding it. The other 90 percent will be spent in support of that feature.
@@ -77,9 +77,9 @@ For more info about the license, please check out **[license](https://github.com
### Code style
Please stick with ASF code style when submitting PRs. In repo you can find several different files dedicated to making it easier for you:
Please try to stick with ASF code style when submitting PRs. In repo you can find at least several different files dedicated to making it easier for you:
- **[EditorConfig](https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/.editorconfig)** file which is supported by all major IDEs and requires no further setup. It's a good starting point, although it doesn't include all the rules that we'd like to see.
- **[DotSettings](https://github.com/JustArchiNET/ArchiSteamFarm/blob/main/ArchiSteamFarm.sln.DotSettings)** file that is being used by JetBrains products, namely **[ReSharper](https://www.jetbrains.com/resharper)** and **[Rider](https://www.jetbrains.com/rider)**. This one is the most complete config file that is also being loaded automatically when you're using ReSharper/Rider with our code.
Personally we're using **[JetBrains Rider](https://www.jetbrains.com/rider)**, so no other action is needed after opening `ArchiSteamFarm.sln` solution. If you're using VS alone, it's probably a good idea to import our code style settings, although even editor config should be enough for majority of cases. If you can save us those few extra seconds cleaning up your code after accepting it, it would be great and surely improve overall code history.
Since above files are used automatically, in vast majority of cases, you may just need to run some cleanup operation on files that you've edited, assuming your IDE doesn't do that automatically. If you can save us those few extra seconds cleaning up your code after accepting it, it would be great and surely improve overall code history.

11
.github/crowdin.yml vendored
View File

@@ -23,6 +23,17 @@
".zh-TW.resx": ".zh-Hant.resx"
}
},
{
"source": "/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization/Strings.resx",
"translation": "/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization/Strings.%locale%.resx",
"translation_replace": {
".lol-US.resx": ".qps-Ploc.resx",
".sr-CS.resx": ".sr-Latn.resx",
".zh-CN.resx": ".zh-Hans.resx",
".zh-HK.resx": ".zh-Hant-HK.resx",
".zh-TW.resx": ".zh-Hant.resx"
}
},
{
"source": "/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.resx",
"translation": "/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization/Strings.%locale%.resx",

View File

@@ -19,12 +19,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Setup .NET Core
uses: actions/setup-dotnet@v3.0.3
uses: actions/setup-dotnet@v3.2.0
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -39,7 +39,7 @@ jobs:
- name: Upload latest strings for translation on Crowdin
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' && matrix.configuration == 'Release' && startsWith(matrix.os, 'ubuntu-') }}
uses: crowdin/github-action@v1.7.0
uses: crowdin/github-action@v1.12.0
with:
crowdin_branch_name: main
config: '.github/crowdin.yml'

View File

@@ -12,14 +12,16 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
- name: Run Qodana scan
uses: JetBrains/qodana-action@v2022.3.4
uses: JetBrains/qodana-action@v2023.2.1
with:
args: --property=idea.headless.enable.statistics=false
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
- name: Report Qodana results to GitHub
uses: github/codeql-action/upload-sarif@v2.2.5
uses: github/codeql-action/upload-sarif@v2.21.2
with:
sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json

View File

@@ -17,15 +17,15 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.4.1
uses: docker/setup-buildx-action@v2.9.1
- name: Build ${{ matrix.configuration }} Docker image from ${{ matrix.file }}
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.1
with:
context: .
file: ${{ matrix.file }}

View File

@@ -15,22 +15,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.4.1
uses: docker/setup-buildx-action@v2.9.1
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -55,7 +55,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile.Service
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.1
with:
context: .
file: Dockerfile.Service

View File

@@ -16,22 +16,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.4.1
uses: docker/setup-buildx-action@v2.9.1
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -55,7 +55,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.1
with:
context: .
platforms: ${{ env.PLATFORMS }}
@@ -70,7 +70,7 @@ jobs:
push: true
- name: Update DockerHub repository description
uses: peter-evans/dockerhub-description@v3.1.2
uses: peter-evans/dockerhub-description@v3.4.2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

View File

@@ -16,22 +16,22 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.4.1
uses: docker/setup-buildx-action@v2.9.1
- name: Login to ghcr.io
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
uses: docker/login-action@v2.1.0
uses: docker/login-action@v2.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -56,7 +56,7 @@ jobs:
echo "DH_REPOSITORY=$(echo ${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]')" >> "$GITHUB_ENV"
- name: Build and publish Docker image from Dockerfile
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@v4.1.1
with:
context: .
platforms: ${{ env.PLATFORMS }}

View File

@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Lock inactive threads
uses: dessant/lock-threads@v4.0.0
uses: dessant/lock-threads@v4.0.1
with:
issue-inactive-days: 60
pr-inactive-days: 60

View File

@@ -16,12 +16,12 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
- name: Setup Node.js with npm
uses: actions/setup-node@v3.6.0
uses: actions/setup-node@v3.7.0
with:
check-latest: true
node-version: ${{ env.NODE_JS_VERSION }}
@@ -78,10 +78,10 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
- name: Setup .NET Core
uses: actions/setup-dotnet@v3.0.3
uses: actions/setup-dotnet@v3.2.0
with:
dotnet-version: ${{ env.DOTNET_SDK_VERSION }}
@@ -417,7 +417,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
- name: Download ASF-generic artifact from ubuntu-latest
uses: actions/download-artifact@v3.0.2
@@ -474,7 +474,7 @@ jobs:
path: out
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v5.2.0
uses: crazy-max/ghaction-import-gpg@v5.3.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
@@ -503,7 +503,6 @@ jobs:
path: out/SHA512SUMS.sign
- name: Create ArchiSteamFarm GitHub release
id: github_release
uses: ncipollo/release-action@v1.12.0
with:
artifacts: "out/*"

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v3.3.0
uses: actions/checkout@v3.5.3
with:
submodules: recursive
token: ${{ secrets.ARCHIBOT_GITHUB_TOKEN }}
@@ -26,7 +26,7 @@ jobs:
git reset --hard origin/master
- name: Download latest translations from Crowdin
uses: crowdin/github-action@v1.7.0
uses: crowdin/github-action@v1.12.0
with:
upload_sources: false
download_translations: true
@@ -38,7 +38,7 @@ jobs:
token: ${{ secrets.ASF_CROWDIN_API_TOKEN }}
- name: Import GPG key for signing
uses: crazy-max/ghaction-import-gpg@v5.2.0
uses: crazy-max/ghaction-import-gpg@v5.3.0
with:
gpg_private_key: ${{ secrets.ARCHIBOT_GPG_PRIVATE_KEY }}
git_config_global: true
@@ -71,7 +71,7 @@ jobs:
run: |
set -eu
git add -A "ArchiSteamFarm/Localization" "ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization" "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization" "wiki"
git add -A "ArchiSteamFarm/Localization" "ArchiSteamFarm.OfficialPlugins.ItemsMatcher/Localization" "ArchiSteamFarm.OfficialPlugins.MobileAuthenticator/Localization" "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper/Localization" "wiki"
if ! git diff --cached --quiet; then
git commit -m "Automatic translations update"

2
ASF-ui

Submodule ASF-ui updated: b30b3f5bce...e01b29e635

View File

@@ -44,6 +44,9 @@ internal class AssetForMatching {
[JsonProperty("p", Required = Required.Always)]
internal readonly Asset.EType Type;
[JsonConstructor]
protected AssetForMatching() { }
internal AssetForMatching(Asset asset) {
ArgumentNullException.ThrowIfNull(asset);
@@ -56,7 +59,4 @@ internal class AssetForMatching {
Type = asset.Type;
Rarity = asset.Rarity;
}
[JsonConstructor]
protected AssetForMatching() { }
}

View File

@@ -62,4 +62,20 @@
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>در این دور جمعاً {0} ست مطابقت داده شد.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>در مجموع {0} مورد با ربات {1} ({2}) مطابقت داده شد، درحال ارسال ترید...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>ارسال ترید به ربات {0} ({1}) شکست خورد، درحال ادامه دادن...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>بعضی از تاییدیه ها شکست خورد، تقریبا {0} تا از {1} ترید با موفقیت ارسال شدند.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -67,7 +67,7 @@
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Ilmoitetaan {0} ({1}), jonka inventaariossa on yhteensä {2} kohdetta listattuna...</value>
<value>Ilmoitetaan {0} ({1}), jonka inventoryssa on yhteensä {2} kohdetta listattuna...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
@@ -78,4 +78,8 @@
<value>Vaihtotarjouksen lähettäminen botille {0} ({1}) epäonnistui, jatketaan...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Jotkut vahvistukset epäonnistuivat, noin {0}/{1} kaupasta lähetettiin onnistuneesti.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -63,7 +63,7 @@
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>התאימו בסך הכל {0} ערכות בסיבוב זה.</value>
<value>הותאמו בסך הכל {0} ערכות בסיבוב זה.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
@@ -78,4 +78,8 @@
<value>נכשל שליחת הצעת סחר לבוט {0} ({1}), ממשיך הלאה...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>חלק מהאישורים נכשלו, בערך {0} מתוך {1} עסקאות נשלחו בהצלחה.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -66,4 +66,20 @@
<value>Kopā salīdzināti {0} seti šajā raundā.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Paziņojam {0} ({1}) inventāru, kas kopumā sastāv no {2} lietām, sarakstā...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Sakrita kopumā {0} lietas ar botu {1} ({2}), sūta darījuma pieprasījumu...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Neizdevās nosūtīt darījuma piedāvājumu botam {0} ({1}), turpinam tālāk...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Daži apstiprinājumi nav izdevušies, aptuveni {0} no {1} darījumiem tika veiksmīgi nosūtīti.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Matchet totalt {0} sett denne runden.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Kunngjør {0} ({1}) med inventar laget av totalt {2} gjenstander på oppføringen...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Matchet totalt {0} gjenstander med bot {1} ({2}), sender byttehandel...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Kunne ikke sende en byttehandel til bot {0}({1}), fortsetter...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Noen bekreftelser har mislyktes, ca {0} av {1} byttehandler ble sendt.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -66,4 +66,20 @@
<value>Corresponde a um total de {0} conjuntos nesta rodada.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="ListingAnnouncing" xml:space="preserve">
<value>Anunciando {0} ({1}) com um inventário composto por {2} itens no total na listagem...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname, {2} will be replaced with number of items in the inventory</comment>
</data>
<data name="MatchingFound" xml:space="preserve">
<value>Foi confirmando um total de {0} itens com o bot {1} ({2}), a enviar oferta de troca...</value>
<comment>{0} will be replaced by number of items matched, {1} will be replaced by steam ID (number), {2} will be replaced by user's nickname</comment>
</data>
<data name="TradeOfferFailed" xml:space="preserve">
<value>Falha ao enviar uma oferta de troca para o bot {0} ({1}), a avançar...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Algumas confirmações falharam, aproximadamente {0} de {1} trocas foram enviadas com sucesso.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -78,4 +78,8 @@
<value>{0} ({1}) botuna takas teklifi gönderilemedi, devam ediliyor...</value>
<comment>{0} will be replaced by steam ID (number), {1} will be replaced by user's nickname'</comment>
</data>
<data name="ActivelyMatchingSomeConfirmationsFailed" xml:space="preserve">
<value>Bazı onaylar başarısız oldu, {1} takastan yaklaşık {0} tanesi başarıyla gönderildi.</value>
<comment>{0} will be replaced by amount of the trade offers that succeeded (number), {1} will be replaced by amount of the trade offers that were supposed to be sent in total (number)</comment>
</data>
</root>

View File

@@ -37,22 +37,25 @@ using ArchiSteamFarm.Steam.Cards;
using ArchiSteamFarm.Steam.Data;
using ArchiSteamFarm.Steam.Exchange;
using ArchiSteamFarm.Steam.Integration;
using ArchiSteamFarm.Steam.Security;
using ArchiSteamFarm.Steam.Storage;
using ArchiSteamFarm.Storage;
using ArchiSteamFarm.Web;
using ArchiSteamFarm.Web.Responses;
using Newtonsoft.Json.Linq;
using SteamKit2;
using SteamKit2.Internal;
namespace ArchiSteamFarm.OfficialPlugins.ItemsMatcher;
internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
private const string MatchActivelyTradeOfferIDsStorageKey = $"{nameof(ItemsMatcher)}-{nameof(MatchActively)}-TradeOfferIDs";
private const byte MaxAnnouncementTTL = 60; // Maximum amount of minutes we can wait if the next announcement doesn't happen naturally
private const byte MaxTradeOffersActive = 10; // The actual upper limit is 30, but we should use lower amount to allow some bots to react before we hit the maximum allowed
private const uint MaxItemsCount = 500000; // Server is unwilling to accept more items than this
private const byte MaxTradeOffersActive = 5; // The actual upper limit is 30, but we should use lower amount to allow some bots to react before we hit the maximum allowed
private const byte MinAnnouncementTTL = 5; // Minimum amount of minutes we must wait before the next Announcement
private const byte MinHeartBeatTTL = 10; // Minimum amount of minutes we must wait before sending next HeartBeat
private const byte MinimumSteamGuardEnabledDays = 15; // As imposed by Steam limits
private const byte MinimumPasswordResetCooldownDays = 5; // As imposed by Steam limits
private const byte MinPersonaStateTTL = 5; // Minimum amount of minutes we must wait before requesting persona state update
private static readonly ImmutableHashSet<Asset.EType> AcceptedMatchableTypes = ImmutableHashSet.Create(
@@ -254,7 +257,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
Dictionary<(uint RealAppID, Asset.EType Type, Asset.ERarity Rarity), bool> tradableSets = new();
foreach (Asset item in inventory) {
if (acceptedMatchableTypes.Contains(item.Type)) {
if (item is { AssetID: > 0, Amount: > 0, ClassID: > 0, RealAppID: > 0, Type: > Asset.EType.Unknown, Rarity: > Asset.ERarity.Unknown } && acceptedMatchableTypes.Contains(item.Type)) {
// Only tradable assets matter for MatchEverything bots
if (!matchEverything || item.Tradable) {
assetsForListing.Add(new AssetForListing(item, previousAssetID));
@@ -298,6 +301,16 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
}
if (assetsForListing.Count > MaxItemsCount) {
// We're not eligible, record this as a valid check
LastAnnouncement = DateTime.UtcNow;
ShouldSendAnnouncementEarlier = ShouldSendHeartBeats = false;
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(assetsForListing)} > {MaxItemsCount}"));
return;
}
if (ShouldSendHeartBeats && (tradeToken == LastAnnouncedTradeToken) && (assetsForListing.Count == LastAnnouncedItems.Count) && assetsForListing.All(item => LastAnnouncedItems.TryGetValue(item.AssetID, out uint amount) && (item.Amount == amount))) {
// There is nothing new to announce, this is fine, skip the request
LastAnnouncement = DateTime.UtcNow;
@@ -525,6 +538,44 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
return false;
}
// Bot must pass some general trading requirements
CCredentials_GetSteamGuardDetails_Response? steamGuardStatus = await Bot.ArchiHandler.GetSteamGuardStatus().ConfigureAwait(false);
if (steamGuardStatus == null) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus)}: null"));
return null;
}
// Bot must have SteamGuard active for at least 15 days
if (!steamGuardStatus.is_steamguard_enabled || ((steamGuardStatus.timestamp_steamguard_enabled > 0) && ((DateTimeOffset.UtcNow - DateTimeOffset.FromUnixTimeSeconds(steamGuardStatus.timestamp_steamguard_enabled)).TotalDays < MinimumSteamGuardEnabledDays))) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus.is_steamguard_enabled)}/{nameof(steamGuardStatus.timestamp_steamguard_enabled)}: {steamGuardStatus.is_steamguard_enabled}/{steamGuardStatus.timestamp_steamguard_enabled}"));
return false;
}
// Bot must have 2FA enabled for matching to work
if (!steamGuardStatus.is_twofactor_enabled) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(steamGuardStatus.is_twofactor_enabled)}: false"));
return false;
}
CCredentials_LastCredentialChangeTime_Response? credentialChangeTimeDetails = await Bot.ArchiHandler.GetCredentialChangeTimeDetails().ConfigureAwait(false);
if (credentialChangeTimeDetails == null) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(credentialChangeTimeDetails)}: null"));
return null;
}
// Bot didn't change password in last 5 days
if ((credentialChangeTimeDetails.timestamp_last_password_reset > 0) && ((DateTimeOffset.UtcNow - DateTimeOffset.FromUnixTimeSeconds(credentialChangeTimeDetails.timestamp_last_password_reset)).TotalDays < MinimumPasswordResetCooldownDays)) {
Bot.ArchiLogger.LogGenericTrace(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(credentialChangeTimeDetails.timestamp_last_password_reset)}: {credentialChangeTimeDetails.timestamp_last_password_reset}"));
return false;
}
// Bot must have valid API key (e.g. not being restricted account)
bool? hasValidApiKey = await Bot.ArchiWebHandler.HasValidApiKey().ConfigureAwait(false);
@@ -591,7 +642,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
Dictionary<ulong, Asset> ourInventory;
try {
ourInventory = await Bot.ArchiWebHandler.GetInventoryAsync().Where(item => acceptedMatchableTypes.Contains(item.Type) && !Bot.BotDatabase.MatchActivelyBlacklistAppIDs.Contains(item.RealAppID)).ToDictionaryAsync(static item => item.AssetID).ConfigureAwait(false);
ourInventory = await Bot.ArchiWebHandler.GetInventoryAsync().Where(item => item is { AssetID: > 0, Amount: > 0, ClassID: > 0, RealAppID: > 0, Type: > Asset.EType.Unknown, Rarity: > Asset.ERarity.Unknown } && acceptedMatchableTypes.Contains(item.Type) && !Bot.BotDatabase.MatchActivelyBlacklistAppIDs.Contains(item.RealAppID)).ToDictionaryAsync(static item => item.AssetID).ConfigureAwait(false);
} catch (HttpRequestException e) {
Bot.ArchiLogger.LogGenericWarningException(e);
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(ourInventory)));
@@ -625,6 +676,12 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
return;
}
if (ourInventory.Count > MaxItemsCount) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{nameof(ourInventory)} > {MaxItemsCount}"));
return;
}
// ReSharper disable once RedundantSuppressNullableWarningExpression - required for .NET Framework
(HttpStatusCode StatusCode, ImmutableHashSet<ListedUser> Users)? response = await Backend.GetListedUsersForMatching(ASF.GlobalConfig.LicenseID.Value, Bot, WebBrowser, ourInventory.Values, acceptedMatchableTypes).ConfigureAwait(false);
@@ -745,6 +802,12 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
break;
}
if (!Bot.IsConnectedAndLoggedOn) {
Bot.ArchiLogger.LogGenericWarning(Strings.BotNotConnected);
break;
}
HashSet<(uint RealAppID, Asset.EType Type, Asset.ERarity Rarity)> wantedSets = ourTradableState.Keys.Where(set => listedUser.MatchableTypes.Contains(set.Type)).ToHashSet();
if (wantedSets.Count == 0) {
@@ -926,7 +989,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
pendingMobileTradeOfferIDs.UnionWith(mobileTradeOfferIDs);
if (pendingMobileTradeOfferIDs.Count >= MaxTradeOffersActive) {
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false);
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EConfirmationType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false);
if (!twoFactorSuccess) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ActivelyMatchingSomeConfirmationsFailed, handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));
@@ -1022,7 +1085,7 @@ internal sealed class RemoteCommunication : IAsyncDisposable, IDisposable {
}
if (pendingMobileTradeOfferIDs.Count > 0) {
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false);
(bool twoFactorSuccess, IReadOnlyCollection<Confirmation>? handledConfirmations, _) = Bot.IsConnectedAndLoggedOn ? await Bot.Actions.HandleTwoFactorAuthenticationConfirmations(true, Confirmation.EConfirmationType.Trade, pendingMobileTradeOfferIDs, true).ConfigureAwait(false) : (false, null, null);
if (!twoFactorSuccess) {
Bot.ArchiLogger.LogGenericWarning(string.Format(CultureInfo.CurrentCulture, Localization.Strings.ActivelyMatchingSomeConfirmationsFailed, handledConfirmations?.Count ?? 0, pendingMobileTradeOfferIDs.Count));

View File

@@ -60,6 +60,8 @@ internal static class Commands {
switch (args.Length) {
case 1:
switch (args[0].ToUpperInvariant()) {
case "2FAFINALIZEDFORCE":
return await ResponseTwoFactorFinalized(access, bot).ConfigureAwait(false);
case "2FAINIT":
return await ResponseTwoFactorInit(access, bot).ConfigureAwait(false);
}
@@ -71,6 +73,12 @@ internal static class Commands {
return await ResponseTwoFactorFinalize(access, args[1], Utilities.GetArgsAsText(message, 2), steamID).ConfigureAwait(false);
case "2FAFINALIZE":
return await ResponseTwoFactorFinalize(access, bot, args[1]).ConfigureAwait(false);
case "2FAFINALIZED" when args.Length > 2:
return await ResponseTwoFactorFinalized(access, args[1], Utilities.GetArgsAsText(message, 2), steamID).ConfigureAwait(false);
case "2FAFINALIZED":
return await ResponseTwoFactorFinalized(access, bot, args[1]).ConfigureAwait(false);
case "2FAFINALIZEDFORCE":
return await ResponseTwoFactorFinalized(access, Utilities.GetArgsAsText(args, 1, ","), steamID: steamID).ConfigureAwait(false);
case "2FAINIT":
return await ResponseTwoFactorInit(access, Utilities.GetArgsAsText(args, 1, ","), steamID).ConfigureAwait(false);
}
@@ -228,6 +236,101 @@ internal static class Commands {
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}
private static async Task<string?> ResponseTwoFactorFinalized(EAccess access, Bot bot, string? activationCode = null) {
if (!Enum.IsDefined(access)) {
throw new InvalidEnumArgumentException(nameof(access), (int) access, typeof(EAccess));
}
ArgumentNullException.ThrowIfNull(bot);
if (access < EAccess.Master) {
return access > EAccess.None ? bot.Commands.FormatBotResponse(Strings.ErrorAccessDenied) : null;
}
if (bot.HasMobileAuthenticator) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.HasMobileAuthenticator)));
}
string maFilePath = bot.GetFilePath(Bot.EFileType.MobileAuthenticator);
string maFilePendingPath = $"{maFilePath}.PENDING";
if (!File.Exists(maFilePendingPath)) {
return bot.Commands.FormatBotResponse(Strings.NothingFound);
}
string json;
try {
json = await File.ReadAllTextAsync(maFilePendingPath).ConfigureAwait(false);
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
}
if (string.IsNullOrEmpty(json)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
}
Steam.Security.MobileAuthenticator? mobileAuthenticator = JsonConvert.DeserializeObject<Steam.Security.MobileAuthenticator>(json);
if (mobileAuthenticator == null) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(json)));
}
mobileAuthenticator.Init(bot);
if (!string.IsNullOrEmpty(activationCode)) {
string? generatedCode = await mobileAuthenticator.GenerateToken().ConfigureAwait(false);
if (generatedCode != activationCode) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, $"{generatedCode} != {activationCode}"));
}
}
if (!bot.TryImportAuthenticator(mobileAuthenticator)) {
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, nameof(bot.TryImportAuthenticator)));
}
string maFileFinishedPath = $"{maFilePath}.NEW";
try {
File.Move(maFilePendingPath, maFileFinishedPath, true);
} catch (Exception e) {
bot.ArchiLogger.LogGenericException(e);
return bot.Commands.FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, e.Message));
}
return bot.Commands.FormatBotResponse(Strings.Done);
}
private static async Task<string?> ResponseTwoFactorFinalized(EAccess access, string botNames, string? activationCode = null, ulong steamID = 0) {
if (!Enum.IsDefined(access)) {
throw new InvalidEnumArgumentException(nameof(access), (int) access, typeof(EAccess));
}
if (string.IsNullOrEmpty(botNames)) {
throw new ArgumentNullException(nameof(botNames));
}
if ((steamID != 0) && !new SteamID(steamID).IsIndividualAccount) {
throw new ArgumentOutOfRangeException(nameof(steamID));
}
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return access >= EAccess.Owner ? Steam.Interaction.Commands.FormatStaticResponse(string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)) : null;
}
IList<string?> results = await Utilities.InParallel(bots.Select(bot => ResponseTwoFactorFinalized(Steam.Interaction.Commands.GetProxyAccess(bot, access, steamID), bot, activationCode))).ConfigureAwait(false);
List<string> responses = new(results.Where(static result => !string.IsNullOrEmpty(result))!);
return responses.Count > 0 ? string.Join(Environment.NewLine, responses) : null;
}
private static async Task<string?> ResponseTwoFactorInit(EAccess access, Bot bot) {
if (!Enum.IsDefined(access)) {
throw new InvalidEnumArgumentException(nameof(access), (int) access, typeof(EAccess));

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -109,7 +109,10 @@
<value>Приключи събирането на {0} информация за играта или приложението.</value>
<comment>{0} will be replaced by the number (count this batch) of app infos retrieved</comment>
</data>
<data name="BotFinishedRetrievingDepotKeys" xml:space="preserve">
<value>Успешно извлечени {0} от {1} депо ключове.</value>
<comment>{0} will be replaced by the number (count this batch) of depot keys that were successfully retrieved, {1} will be replaced by the number (count this batch) of depot keys that were supposed to be retrieved</comment>
</data>
<data name="BotFinishedRetrievingTotalDepots" xml:space="preserve">
<value>Приключи събирането на всички ключове за депа за общо {0} игри или проложения.</value>
<comment>{0} will be replaced by the number (total count) of apps retrieved</comment>

View File

@@ -109,7 +109,10 @@
<value>Saatiin haettua {0} sovelluksen tiedot.</value>
<comment>{0} will be replaced by the number (count this batch) of app infos retrieved</comment>
</data>
<data name="BotFinishedRetrievingDepotKeys" xml:space="preserve">
<value>Onnistuneesti haettu {0}/{1} depot-avaimesta.</value>
<comment>{0} will be replaced by the number (count this batch) of depot keys that were successfully retrieved, {1} will be replaced by the number (count this batch) of depot keys that were supposed to be retrieved</comment>
</data>
<data name="BotFinishedRetrievingTotalDepots" xml:space="preserve">
<value>Saatiin haettua kaikki depot-avaimet yhteensä {0} sovellukselle.</value>
<comment>{0} will be replaced by the number (total count) of apps retrieved</comment>

View File

@@ -81,10 +81,22 @@
<data name="SubmissionSuccessfulNewApps" xml:space="preserve">
<value>新しいアプリ: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulVerifiedApps" xml:space="preserve">
<value>認証済みアプリ: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulNewPackages" xml:space="preserve">
<value>新しいパッケージ: {0}</value>
<comment>{0} will be replaced by list of the packages (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulVerifiedPackages" xml:space="preserve">
<value>認証済みパッケージ: {0}</value>
<comment>{0} will be replaced by list of the packages (IDs, numbers), separated by a comma</comment>
</data>

View File

@@ -62,18 +62,50 @@
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="PluginDisabledMissingBuildToken" xml:space="preserve">
<value>{0} ir atspējots, jo trūkst būvējuma marķieris</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin")</comment>
</data>
<data name="PluginDisabledInConfig" xml:space="preserve">
<value>{0} šobrīd ir atspējots balstoties uz konfigurāciju. Ja tu vēlies palīdzēt SteamDB ar datu sūtīšanu, lūdzu vērsies pie mūsu wiki.</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin")</comment>
</data>
<data name="PluginInitializedAndEnabled" xml:space="preserve">
<value>{0} ir veiksmīgi inicializēts, paldies jau iepriekš par palīdzību. Pirmā iesniegšana notiks aptuveni pēc {1} no šī brīža.</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin"), {1} will be replaced by translated TimeSpan string (such as "53 minutes")</comment>
</data>
<data name="FileCouldNotBeLoadedFreshInit" xml:space="preserve">
<value>{0} nevarēja tikt ielādēts, jauna instance tiks inicializēta...</value>
<comment>{0} will be replaced by the name of the file (e.g. "GlobalCache")</comment>
</data>
<data name="BotNoAppsToRefresh" xml:space="preserve">
<value>Nav aplikāciju kas pieprasa atsvaidzināšanu šai botu instancei.</value>
</data>
<data name="BotRetrievingTotalAppAccessTokens" xml:space="preserve">
<value>Iegūst kopumā {0} aplikāciju piekļuves marķierus...</value>
<comment>{0} will be replaced by the number (total count) of app access tokens being retrieved</comment>
</data>
<data name="BotRetrievingAppAccessTokens" xml:space="preserve">
<value>Iegūst {0} aplikāciju piekļuves marķierus...</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens being retrieved</comment>
</data>
<data name="BotFinishedRetrievingAppAccessTokens" xml:space="preserve">
<value>Pabeidza iegūt {0} aplikāciju piekļuves marķierus.</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens retrieved</comment>
</data>
<data name="BotFinishedRetrievingTotalAppAccessTokens" xml:space="preserve">
<value>Pabeidza iegūt kopumā {0} aplikāciju piekļuves marķierus.</value>
<comment>{0} will be replaced by the number (total count) of app access tokens retrieved</comment>
</data>
<data name="BotRetrievingAppInfos" xml:space="preserve">
<value>Iegūst {0} aplikāciju informāciju...</value>
<comment>{0} will be replaced by the number (count this batch) of app infos being retrieved</comment>
</data>
<data name="BotFinishedRetrievingAppInfos" xml:space="preserve">
<value>Pabeidza iegūt {0} aplikāciju informāciju.</value>
<comment>{0} will be replaced by the number (count this batch) of app infos retrieved</comment>
</data>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
</root>

View File

@@ -62,15 +62,41 @@
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="PluginDisabledMissingBuildToken" xml:space="preserve">
<value>{0} foi desativado devido à falta de um token de compilação</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin")</comment>
</data>
<data name="PluginDisabledInConfig" xml:space="preserve">
<value>{0} está atualmente desativado de acordo com a sua configuração. Se quiser ajudar o SteamDB na submissão de dados, por favor confira o nosso wiki.</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin")</comment>
</data>
<data name="PluginInitializedAndEnabled" xml:space="preserve">
<value>{0} foi inicializado com sucesso, obrigado antecipadamente pela sua ajuda. A primeira submissão ocorrerá aproximadamente daqui a {1} a partir de agora.</value>
<comment>{0} will be replaced by the name of the plugin (e.g. "SteamTokenDumperPlugin"), {1} will be replaced by translated TimeSpan string (such as "53 minutes")</comment>
</data>
<data name="FileCouldNotBeLoadedFreshInit" xml:space="preserve">
<value>{0} não pôde ser carregado, uma instância nova será inicializada...</value>
<comment>{0} will be replaced by the name of the file (e.g. "GlobalCache")</comment>
</data>
<data name="BotNoAppsToRefresh" xml:space="preserve">
<value>Não há aplicações que requiram uma atualização nesta instância do bot.</value>
</data>
<data name="BotRetrievingTotalAppAccessTokens" xml:space="preserve">
<value>Recolhendo um total de {0} tokens de acesso a aplicações...</value>
<comment>{0} will be replaced by the number (total count) of app access tokens being retrieved</comment>
</data>
<data name="BotRetrievingAppAccessTokens" xml:space="preserve">
<value>Recolhendo {0} tokens de acesso a aplicações...</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens being retrieved</comment>
</data>
<data name="BotFinishedRetrievingAppAccessTokens" xml:space="preserve">
<value>Terminado o recolhimento de {0} tokens de acesso a aplicações.</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens retrieved</comment>
</data>
<data name="BotFinishedRetrievingTotalAppAccessTokens" xml:space="preserve">
<value>Terminado o recolhimento de um total de {0} tokens de acesso a aplicações.</value>
<comment>{0} will be replaced by the number (total count) of app access tokens retrieved</comment>
</data>

View File

@@ -74,18 +74,36 @@
<data name="BotFinishedRetrievingDepotKeys" xml:space="preserve">
<value>{0} din {1} chei de depozit au fost recuperate cu succes.</value>
<comment>{0} will be replaced by the number (count this batch) of depot keys that were successfully retrieved, {1} will be replaced by the number (count this batch) of depot keys that were supposed to be retrieved</comment>
</data>
<data name="SubmissionSuccessfulNewApps" xml:space="preserve">
<value>Aplicații noi: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulVerifiedApps" xml:space="preserve">
<value>Aplicații verificate: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulNewPackages" xml:space="preserve">
<value>Pachete noi: {0}</value>
<comment>{0} will be replaced by list of the packages (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulVerifiedPackages" xml:space="preserve">
<value>Pachete verificate: {0}</value>
<comment>{0} will be replaced by list of the packages (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulNewDepots" xml:space="preserve">
<value>Depozite noi: {0}</value>
<comment>{0} will be replaced by list of the depots (IDs, numbers), separated by a comma</comment>
</data>

View File

@@ -81,8 +81,14 @@
<data name="SubmissionSuccessfulNewApps" xml:space="preserve">
<value>Nova aplikacija: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>
<data name="SubmissionSuccessfulVerifiedApps" xml:space="preserve">
<value>Verifikovana aplikacija: {0}</value>
<comment>{0} will be replaced by list of the apps (IDs, numbers), separated by a comma</comment>
</data>

View File

@@ -165,12 +165,12 @@
<comment>{0} will be replaced by the name of the config property (e.g. "SecretPackageIDs"), {1} will be replaced by list of the objects (IDs, numbers), separated by a comma</comment>
</data>
<data name="LoadingGlobalCache" xml:space="preserve">
<value>STD küresel önbelleği yükleniyor...</value>
<value>STD genel önbelleği yükleniyor...</value>
</data>
<data name="ValidatingGlobalCacheIntegrity" xml:space="preserve">
<value>STD küresel önbellek bütünlüğü doğrulanıyor...</value>
<value>STD genel önbellek bütünlüğü doğrulama...</value>
</data>
<data name="GlobalCacheIntegrityValidationFailed" xml:space="preserve">
<value>STD küresel önbellek bütünlüğü doğrulanamadı. Bu, olası bir dosya/bellek bozulması olduğunu gösterir, bunun yerine yeni bir örnek başlatılacaktır.</value>
<value>STD genel önbellek bütünlüğü doğrulanamadı. Bu, olası bir dosya / bellek bozulmasına işaret eder, bunun yerine yeni bir örnek başlatılır.</value>
</data>
</root>

View File

@@ -78,12 +78,21 @@
<value>{0} не вдалося завантажити, буде ініціалізований новий екземпляр...</value>
<comment>{0} will be replaced by the name of the file (e.g. "GlobalCache")</comment>
</data>
<data name="BotNoAppsToRefresh" xml:space="preserve">
<value>У цьому екземплярі бота немає додатків, які потребують оновлення.</value>
</data>
<data name="BotRetrievingTotalAppAccessTokens" xml:space="preserve">
<value>Отримано {0} токенів доступу...</value>
<comment>{0} will be replaced by the number (total count) of app access tokens being retrieved</comment>
</data>
<data name="BotRetrievingAppAccessTokens" xml:space="preserve">
<value>Отримання {0} токенів доступу до додатка...</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens being retrieved</comment>
</data>
<data name="BotFinishedRetrievingAppAccessTokens" xml:space="preserve">
<value>Завершено отримання {0} токенів доступу.</value>
<comment>{0} will be replaced by the number (count this batch) of app access tokens retrieved</comment>
</data>
@@ -103,7 +112,6 @@
</root>

View File

@@ -29,7 +29,7 @@ internal static class SharedInfo {
internal const byte MaximumMinutesBeforeFirstUpload = 60; // Must be greater or equal to MinimumMinutesBeforeFirstUpload
internal const byte MinimumMinutesBeforeFirstUpload = 10; // Must be less or equal to MaximumMinutesBeforeFirstUpload
internal const byte MinimumMinutesBetweenUploads = 5; // Rate limiting for the server
internal const string ServerURL = "https://asf-token-dumper.xpaw.me";
internal const string ServerURL = "https://tokendumper-asf.steamdb.info";
internal const string Token = "STEAM_TOKEN_DUMPER_TOKEN"; // This is filled automatically during our CI build with API key provided by xPaw for ASF project
internal static bool HasValidToken => Token.Length == 128;

View File

@@ -195,6 +195,9 @@ internal sealed class SteamTokenDumperPlugin : OfficialPlugin, IASF, IBot, IBotC
}
if (BotSynchronizations.TryRemove(bot, out (SemaphoreSlim RefreshSemaphore, Timer RefreshTimer) synchronization)) {
// Ensure the semaphore is empty, otherwise we're risking disposed exceptions
await synchronization.RefreshSemaphore.WaitAsync().ConfigureAwait(false);
synchronization.RefreshSemaphore.Dispose();
await synchronization.RefreshTimer.DisposeAsync().ConfigureAwait(false);

View File

@@ -33,6 +33,7 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMethodOrOperatorBody/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeMissingParentheses/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeNamespaceBody/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeNullCheckingPattern/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeObjectCreationWhenTypeNotEvident/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeRedundantParentheses/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeStaticMemberQualifier/@EntryIndexedValue">SUGGESTION</s:String>
@@ -188,6 +189,7 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceLockStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceUsingStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EnforceWhileStatementBraces/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ExtractCommonPropertyPattern/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ForeachCanBeConvertedToQueryUsingAnotherGetEnumerator/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ForeachCanBePartlyConvertedToQueryUsingAnotherGetEnumerator/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=FunctionComplexityOverflow/@EntryIndexedValue">HINT</s:String>
@@ -210,6 +212,7 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=LoopCanBePartlyConvertedToQuery/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MarkupAttributeTypo/@EntryIndexedValue">HINT</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MarkupTextTypo/@EntryIndexedValue">HINT</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBeFileLocal/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBeInternal/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBeMadeStatic_002EGlobal/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBeMadeStatic_002ELocal/@EntryIndexedValue">SUGGESTION</s:String>
@@ -241,6 +244,7 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PassStringInterpolation/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PatternAlwaysMatches/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PatternAlwaysOfType/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PlaceAssignmentExpressionIntoBlock/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=PropertyNotResolved/@EntryIndexedValue">WARNING</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantArrayCreationExpression/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantAttributeParentheses/@EntryIndexedValue">SUGGESTION</s:String>
@@ -269,6 +273,11 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ReplaceSubstringWithRangeIndexer/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ReturnTypeCanBeEnumerable_002EGlobal/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ReturnTypeCanBeEnumerable_002ELocal/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RouteTemplates_002EActionRoutePrefixCanBeExtractedToControllerRoute/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RouteTemplates_002EControllerRouteParameterIsNotPassedToMethods/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RouteTemplates_002EMethodMissingRouteParameters/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RouteTemplates_002EParameterConstraintCanBeSpecified/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RouteTemplates_002ERouteParameterIsNotPassedToMethod/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SeparateControlTransferStatement/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SimilarAnonymousTypeNearby/@EntryIndexedValue">SUGGESTION</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SpecifyStringComparison/@EntryIndexedValue">SUGGESTION</s:String>

View File

@@ -123,9 +123,8 @@ public static class ASF {
await InitRateLimiters().ConfigureAwait(false);
StringComparer botsComparer = await PluginsCore.GetBotsComparer().ConfigureAwait(false);
IMachineInfoProvider? customMachineInfoProvider = await PluginsCore.GetCustomMachineInfoProvider().ConfigureAwait(false);
Bot.Init(botsComparer, customMachineInfoProvider);
Bot.Init(botsComparer);
if (!Program.Service && !GlobalConfig.Headless && !Console.IsInputRedirected) {
Logging.StartInteractiveConsole();
@@ -442,7 +441,8 @@ public static class ASF {
LoginSemaphore ??= await PluginsCore.GetCrossProcessSemaphore(nameof(LoginSemaphore)).ConfigureAwait(false);
RateLimitingSemaphore ??= await PluginsCore.GetCrossProcessSemaphore(nameof(RateLimitingSemaphore)).ConfigureAwait(false);
WebLimitingSemaphores ??= new Dictionary<Uri, (ICrossProcessSemaphore RateLimitingSemaphore, SemaphoreSlim OpenConnectionsSemaphore)>(4) {
WebLimitingSemaphores ??= new Dictionary<Uri, (ICrossProcessSemaphore RateLimitingSemaphore, SemaphoreSlim OpenConnectionsSemaphore)>(5) {
{ ArchiWebHandler.SteamCheckoutURL, (await PluginsCore.GetCrossProcessSemaphore($"{nameof(ArchiWebHandler)}-{nameof(ArchiWebHandler.SteamCheckoutURL)}").ConfigureAwait(false), new SemaphoreSlim(WebBrowser.MaxConnections, WebBrowser.MaxConnections)) },
{ ArchiWebHandler.SteamCommunityURL, (await PluginsCore.GetCrossProcessSemaphore($"{nameof(ArchiWebHandler)}-{nameof(ArchiWebHandler.SteamCommunityURL)}").ConfigureAwait(false), new SemaphoreSlim(WebBrowser.MaxConnections, WebBrowser.MaxConnections)) },
{ ArchiWebHandler.SteamHelpURL, (await PluginsCore.GetCrossProcessSemaphore($"{nameof(ArchiWebHandler)}-{nameof(ArchiWebHandler.SteamHelpURL)}").ConfigureAwait(false), new SemaphoreSlim(WebBrowser.MaxConnections, WebBrowser.MaxConnections)) },
{ ArchiWebHandler.SteamStoreURL, (await PluginsCore.GetCrossProcessSemaphore($"{nameof(ArchiWebHandler)}-{nameof(ArchiWebHandler.SteamStoreURL)}").ConfigureAwait(false), new SemaphoreSlim(WebBrowser.MaxConnections, WebBrowser.MaxConnections)) },
@@ -1075,7 +1075,8 @@ public static class ASF {
SteamGuard,
SteamParentalCode,
TwoFactorAuthentication,
Cryptkey
Cryptkey,
DeviceConfirmation
}
internal enum EFileType : byte {

View File

@@ -112,7 +112,7 @@ public static class Utilities {
public static void InBackground<T>(Func<T> function, bool longRunning = false) {
ArgumentNullException.ThrowIfNull(function);
InBackground(void () => function(), longRunning);
InBackground(void() => function(), longRunning);
}
[PublicAPI]
@@ -356,8 +356,8 @@ public static class Utilities {
HashSet<DictionaryEntry> defaultStringObjects = defaultResourceSet.Cast<DictionaryEntry>().ToHashSet();
if (defaultStringObjects.Count == 0) {
ASF.ArchiLogger.LogNullError(defaultStringObjects);
// This means we don't have entries for English, so there is nothing to check against
// Can happen e.g. for plugins with no strings declared which are calling this function
return;
}

View File

@@ -30,6 +30,7 @@ using ArchiSteamFarm.IPC.Requests;
using ArchiSteamFarm.IPC.Responses;
using ArchiSteamFarm.Localization;
using ArchiSteamFarm.Steam;
using ArchiSteamFarm.Steam.Data;
using ArchiSteamFarm.Steam.Security;
using Microsoft.AspNetCore.Mvc;
@@ -37,6 +38,35 @@ namespace ArchiSteamFarm.IPC.Controllers.Api;
[Route("Api/Bot/{botNames:required}/TwoFactorAuthentication")]
public sealed class TwoFactorAuthenticationController : ArchiController {
/// <summary>
/// Fetches pending 2FA confirmations of given bots, requires ASF 2FA module to be active on them.
/// </summary>
[HttpGet("Confirmations")]
[ProducesResponseType(typeof(GenericResponse<IReadOnlyDictionary<string, GenericResponse<IReadOnlyCollection<Confirmation>>>>), (int) HttpStatusCode.OK)]
[ProducesResponseType(typeof(GenericResponse), (int) HttpStatusCode.BadRequest)]
public async Task<ActionResult<GenericResponse>> ConfirmationsGet(string botNames) {
if (string.IsNullOrEmpty(botNames)) {
throw new ArgumentNullException(nameof(botNames));
}
HashSet<Bot>? bots = Bot.GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return BadRequest(new GenericResponse<IReadOnlyDictionary<string, GenericResponse<IReadOnlyCollection<Confirmation>>>>(false, string.Format(CultureInfo.CurrentCulture, Strings.BotNotFound, botNames)));
}
IList<(bool Success, IReadOnlyCollection<Confirmation>? Confirmations, string Message)> results = await Utilities.InParallel(bots.Select(static bot => bot.Actions.GetConfirmations())).ConfigureAwait(false);
Dictionary<string, GenericResponse<IReadOnlyCollection<Confirmation>>> result = new(bots.Count, Bot.BotsComparer);
foreach (Bot bot in bots) {
(bool success, IReadOnlyCollection<Confirmation>? confirmations, string message) = results[result.Count];
result[bot.BotName] = new GenericResponse<IReadOnlyCollection<Confirmation>>(success, message, confirmations);
}
return Ok(new GenericResponse<IReadOnlyDictionary<string, GenericResponse<IReadOnlyCollection<Confirmation>>>>(result));
}
/// <summary>
/// Handles 2FA confirmations of given bots, requires ASF 2FA module to be active on them.
/// </summary>
@@ -51,7 +81,7 @@ public sealed class TwoFactorAuthenticationController : ArchiController {
ArgumentNullException.ThrowIfNull(request);
if (request.AcceptedType.HasValue && ((request.AcceptedType.Value == Confirmation.EType.Unknown) || !Enum.IsDefined(request.AcceptedType.Value))) {
if (request.AcceptedType.HasValue && ((request.AcceptedType.Value == Confirmation.EConfirmationType.Unknown) || !Enum.IsDefined(request.AcceptedType.Value))) {
return BadRequest(new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsInvalid, nameof(request.AcceptedType))));
}

View File

@@ -27,7 +27,7 @@ using System.Globalization;
using System.Linq;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.Localization;
using ArchiSteamFarm.Steam.Security;
using ArchiSteamFarm.Steam.Data;
using Newtonsoft.Json;
namespace ArchiSteamFarm.IPC.Requests;
@@ -50,7 +50,7 @@ public sealed class TwoFactorAuthenticationConfirmationsRequest {
/// Specifies the type of confirmations to handle. If not provided, all confirmation types are considered for an action.
/// </summary>
[JsonProperty]
public Confirmation.EType? AcceptedType { get; private set; }
public Confirmation.EConfirmationType? AcceptedType { get; private set; }
/// <summary>
/// A helper property which works the same as <see cref="AcceptedCreatorIDs" /> but with values written as strings - for javascript compatibility purposes. Use either this one, or <see cref="AcceptedCreatorIDs" />, not both.

View File

@@ -30,12 +30,14 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using ArchiSteamFarm.Core;
using ArchiSteamFarm.IPC.Integration;
using ArchiSteamFarm.Localization;
using ArchiSteamFarm.Plugins;
using ArchiSteamFarm.Plugins.Interfaces;
using ArchiSteamFarm.Storage;
using JetBrains.Annotations;
using Microsoft.AspNetCore.Builder;
@@ -43,8 +45,10 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Headers;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Net.Http.Headers;
using Microsoft.OpenApi.Models;
using Newtonsoft.Json;
@@ -97,39 +101,58 @@ internal sealed class Startup {
// Add support for default root path redirection (GET / -> GET /index.html), must come before static files
app.UseDefaultFiles();
Dictionary<string, string> pluginPaths = new(StringComparer.Ordinal);
if (PluginsCore.ActivePlugins?.Count > 0) {
foreach (IWebInterface plugin in PluginsCore.ActivePlugins.OfType<IWebInterface>()) {
if (string.IsNullOrEmpty(plugin.PhysicalPath) || string.IsNullOrEmpty(plugin.WebPath)) {
// Invalid path provided
continue;
}
string physicalPath = plugin.PhysicalPath;
if (!Path.IsPathRooted(physicalPath)) {
// Relative path
string? assemblyDirectory = Path.GetDirectoryName(plugin.GetType().Assembly.Location);
if (string.IsNullOrEmpty(assemblyDirectory)) {
// Invalid path provided
continue;
}
// ReSharper disable once RedundantSuppressNullableWarningExpression - required for .NET Framework
physicalPath = Path.Combine(assemblyDirectory!, plugin.PhysicalPath);
}
if (!Directory.Exists(physicalPath)) {
// Non-existing path provided
continue;
}
pluginPaths[physicalPath] = plugin.WebPath;
if (plugin.WebPath != "/") {
app.UseDefaultFiles(plugin.WebPath);
}
}
}
// Add support for static files from custom plugins (e.g. HTML, CSS and JS)
foreach ((string physicalPath, string webPath) in pluginPaths) {
app.UseStaticFiles(
new StaticFileOptions {
FileProvider = new PhysicalFileProvider(physicalPath),
OnPrepareResponse = OnPrepareResponse,
RequestPath = webPath
}
);
}
// Add support for static files (e.g. HTML, CSS and JS from IPC GUI)
app.UseStaticFiles(
new StaticFileOptions {
OnPrepareResponse = static context => {
if (context.File is { Exists: true, IsDirectory: false } && !string.IsNullOrEmpty(context.File.Name)) {
string extension = Path.GetExtension(context.File.Name);
CacheControlHeaderValue cacheControl = new();
switch (extension.ToUpperInvariant()) {
case ".CSS" or ".JS":
// Add support for SRI-protected static files
// SRI requires from us to notify the caller (especially proxy) to avoid modifying the data
cacheControl.NoTransform = true;
goto default;
default:
// Instruct the caller to always ask us first about every file it requests
// Contrary to the name, this doesn't prevent client from caching, but rather informs it that it must verify with us first that his cache is still up-to-date
// This is used to handle ASF and user updates to WWW root, we don't want from the client to ever use outdated scripts
cacheControl.NoCache = true;
// All static files are public by definition, we don't have any authorization here
cacheControl.Public = true;
break;
}
ResponseHeaders headers = context.Context.Response.GetTypedHeaders();
headers.CacheControl = cacheControl;
}
}
OnPrepareResponse = OnPrepareResponse
}
);
@@ -340,4 +363,39 @@ internal sealed class Startup {
}
);
}
private static void OnPrepareResponse(StaticFileResponseContext context) {
ArgumentNullException.ThrowIfNull(context);
if (context.File is not { Exists: true, IsDirectory: false } || string.IsNullOrEmpty(context.File.Name)) {
return;
}
string extension = Path.GetExtension(context.File.Name);
CacheControlHeaderValue cacheControl = new();
switch (extension.ToUpperInvariant()) {
case ".CSS" or ".JS":
// Add support for SRI-protected static files
// SRI requires from us to notify the caller (especially proxy) to avoid modifying the data
cacheControl.NoTransform = true;
goto default;
default:
// Instruct the caller to always ask us first about every file it requests
// Contrary to the name, this doesn't prevent client from caching, but rather informs it that it must verify with us first that his cache is still up-to-date
// This is used to handle ASF and user updates to WWW root, we don't want from the client to ever use outdated scripts
cacheControl.NoCache = true;
// All static files are public by definition, we don't have any authorization here
cacheControl.Public = true;
break;
}
ResponseHeaders headers = context.Context.Response.GetTypedHeaders();
headers.CacheControl = cacheControl;
}
}

View File

@@ -261,6 +261,12 @@ namespace ArchiSteamFarm.Localization {
}
}
public static string UserInputDeviceConfirmation {
get {
return ResourceManager.GetString("UserInputDeviceConfirmation", resourceCulture);
}
}
public static string UserInputSteam2FA {
get {
return ResourceManager.GetString("UserInputSteam2FA", resourceCulture);

View File

@@ -190,6 +190,7 @@ StackTrace:
<value>Ваша версія: {0} | Апошняя версія: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Калі ласка, увядзіце код 2FA з з мабільнага дадатку Steam: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -187,6 +187,10 @@
<value>Версия на компютъра Ви: {0} | Версия на сървъра: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Моля, проверете мобилното си приложение Steam, трябва да сте получили известие за одобрение за влизане. Въведете Y, ако сте получили и одобрили известието, N, ако искате да предоставите код вместо това: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Моля въведете Вашият 2FA код от Steam authenticator приложението: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Místní verze: {0} | Vzdálená verze: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Prosím zkontrolujte svou mobilní aplikaci Steam, měli byste dostat oznámení o schválení přihlášení. Napiště Y pokud jste dostali a potvrdili oznámení, N pokud místo toho chcete vypsat přihlašovací kód: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Zadejte váš 2FA kód z aplikace Steam: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,7 @@ StackTrace:
<value>Lokal version: {0} | Fjernversion: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Venligst indtast din 2FA kode fra din steam autentificering app: </value>
<comment>Please note that this translation should end with space</comment>
@@ -303,7 +304,10 @@ StackTrace:
<value>Stoppede med at idle: {0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StoppedIdlingList" xml:space="preserve">
<value>Stoppede med at farme: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="UnknownCommand" xml:space="preserve">
<value>Ukendt kommando!</value>
</data>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Lokale Version: {0} | Verfügbare Version: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Bitte überprüfen Sie ihre Steam Mobile App, Sie sollten eine Benachrichtigung zur Genehmigung der Anmeldung erhalten haben. Geben Sie "Y" ein, wenn Sie die Benachrichtigung erhalten und genehmigt haben, "N" wenn Sie stattdessen den Code eingeben möchten: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Bitte geben Sie Ihren 2FA-Code aus Ihrer Steam-Authentifizierungsapp ein: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,7 @@ StackTrace:
<value>Τοπική έκδοση: {0} | Απομακρυσμένη έκδοση: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Εισάγετε τον κωδικό από την εφαρμογή επαληθευτή Steam σας: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -189,24 +189,28 @@ StackTrace:
<value>Versión local: {0} | Versión remota: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Comprueba tu aplicación móvil de Steam, deberías haber recibido una notificación para aprobar el inicio de sesión. Escribe Y si recibiste y aprobaste la notificación, N si en cambio deseas ingresar un código: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Por favor, introduce el código 2FA que aparece en tu aplicación de Steam: </value>
<value>Introduce el código 2FA que aparece en tu aplicación de Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Por favor, introduce el código de autenticación SteamGuard que ha sido enviado a tu correo electrónico: </value>
<value>Introduce el código de autenticación SteamGuard que ha sido enviado a tu correo electrónico: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Por favor, introduce tus credenciales de Steam: </value>
<value>Introduce tus credenciales de Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalCode" xml:space="preserve">
<value>Por favor, introduce el código parental de Steam: </value>
<value>Introduce el código parental de Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Por favor, introduce tu contraseña de Steam: </value>
<value>Introduce tu contraseña de Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
@@ -502,7 +506,7 @@ StackTrace:
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>¡Por favor, revisa nuestra sección de política de privacidad en la wiki si te preocupa lo que ASF está haciendo!</value>
<value>¡Revisa nuestra sección de política de privacidad en la wiki si te preocupa lo que ASF está haciendo!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Parece ser la primera vez que inicias el programa, ¡bienvenido!</value>
@@ -543,7 +547,7 @@ StackTrace:
<value>¡Acceso denegado!</value>
</data>
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>Estás usando una versión más reciente que la última publicada para tu canal de actualizaciones. Por favor, ten en cuenta que las versiones en prelanzamiento están destinadas a usuarios que saben cómo reportar errores, tratar con problemas y proporcionar comentarios - no se dará soporte técnico.</value>
<value>Estás usando una versión más reciente que la última publicada para tu canal de actualizaciones. Ten en cuenta que las versiones en prelanzamiento están destinadas a usuarios que saben cómo reportar errores, tratar con problemas y proporcionar comentarios - no se dará soporte técnico.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>Uso de memoria actual: {0} MB.
@@ -566,7 +570,7 @@ Tiempo de actividad del proceso: {1}</value>
<value>Actualizando datos de los paquetes...</value>
</data>
<data name="WarningDeprecated" xml:space="preserve">
<value>El uso de {0} está obsoleto y se quitará en futuras versiones del programa. Por favor, en su lugar usa {1}.</value>
<value>El uso de {0} está obsoleto y se quitará en futuras versiones del programa. En su lugar usa {1}.</value>
<comment>{0} will be replaced by the name of deprecated property (such as argument, config property or likewise), {1} will be replaced by the name of valid replacement (such as another argument or config property)</comment>
</data>
<data name="BotAcceptedDonationTrade" xml:space="preserve">
@@ -618,7 +622,7 @@ Tiempo de actividad del proceso: {1}</value>
<value>¡No se encontró nada!</value>
</data>
<data name="PluginsWarning" xml:space="preserve">
<value>Has cargado uno o más plugins personalizados en ASF. Ya que no podemos ofrecer soporte a configuraciones modificadas, por favor, contacta a los desarrolladores de los plugins que decidiste usar en caso de algún problema.</value>
<value>Has cargado uno o más plugins personalizados en ASF. Ya que no podemos ofrecer soporte a configuraciones modificadas, contacta a los desarrolladores de los plugins que decidiste usar en caso de algún problema.</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>Por favor, espera...</value>
@@ -732,7 +736,7 @@ Tiempo de actividad del proceso: {1}</value>
<value>Parchando archivos de ASF...</value>
</data>
<data name="UserInputCryptkey" xml:space="preserve">
<value>Por favor, introduce tu clave de cifrado: </value>
<value>Introduce tu clave de cifrado: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="ErrorIPNotBanned" xml:space="preserve">

View File

@@ -254,6 +254,7 @@
</root>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Paikallinen versio: {0} | Etäkäyttöversio: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Ole hyvä ja tarkista Steam-mobiilisovellus, sinun olisi pitänyt saada kirjautumisen hyväksymisilmoitus. Kirjoita Y jos olet vastaanottanut ilmoituksen ja hyväksynyt sen, N jos haluat antaa koodin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Syötä 2FA-koodi Steam-varmennussovelluksesta: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,10 @@ StackTrace :
<value>Version locale : {0} | Version la plus récente : {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Veuillez vérifier votre application mobile Steam, vous devriez avoir reçu une notification d'approbation de connexion. Tapez-Y si vous avez reçu et approuvé la notification, N si vous voulez fournir du code à la place : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Veuillez entrer votre code 2FA généré par votre application d'authentification de Steam : </value>
<comment>Please note that this translation should end with space</comment>
@@ -586,37 +590,37 @@ Durée de fonctionnement : {1}</value>
<comment>{0} will be replaced by wallet balance value, {1} will be replaced by currency name</comment>
</data>
<data name="BotHasNoWallet" xml:space="preserve">
<value>Le bot n'a pas de portefeuille.</value>
<value>Bot n'a pas de portefeuille.</value>
</data>
<data name="BotLevel" xml:space="preserve">
<value>Le bot a le niveau {0}.</value>
<value>Le bot a le niveau {0}</value>
<comment>{0} will be replaced by bot's level</comment>
</data>
<data name="ActivelyMatchingItems" xml:space="preserve">
<value>En train de match des Items, round #{0}...</value>
<value>Correspondance des éléments Steam, tour #{0}...</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="DoneActivelyMatchingItems" xml:space="preserve">
<value>Fin de l'appariement des Items Steam, round #{0}.</value>
<value>Fin de la correspondance des objets Steam, tour #{0}.</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="ErrorAborted" xml:space="preserve">
<value>Annulé !</value>
<value>Abandonné !</value>
</data>
<data name="WarningExcessiveBotsCount" xml:space="preserve">
<value>Vous utilisez plus de comptes de bot personnels que notre limite supérieure recommandée ({0}). N'oubliez pas que cette configuration n'est pas supportée et peut causer divers problèmes liés à Steam, y compris des suspensions de compte. Consultez la FAQ pour plus de détails.</value>
<value>Vous utilisez plus de comptes de bots personnels que notre limite supérieure recommandée ({0}). N'oubliez pas que cette configuration n'est pas supportée et peut causer divers problèmes liés à Steam, y compris des suspensions de compte. Consultez la FAQ pour plus de détails.</value>
<comment>{0} will be replaced by our maximum recommended bots count (number)</comment>
</data>
<data name="PluginLoaded" xml:space="preserve">
<value>"{0}" a été chargée avec succès!</value>
<value>"{0}" a été chargée avec succès!</value>
<comment>{0} will be replaced by the name of the custom ASF plugin</comment>
</data>
<data name="PluginLoading" xml:space="preserve">
<value>Chargement {0} V{1}...</value>
<value>Chargement {0} V{1}... </value>
<comment>{0} will be replaced by the name of the custom ASF plugin, {1} will be replaced by its version</comment>
</data>
<data name="NothingFound" xml:space="preserve">
<value>Rien n'a été trouvé!</value>
<value>Rien n'a été trouvé!</value>
</data>
<data name="PluginsWarning" xml:space="preserve">
<value>Vous avez chargé un ou plusieurs plugins personnalisés dans ASF. Étant donné que nous ne pouvons pas offrir de support pour les configurations moddées, veuillez contacter les développeurs appropriés des plugins que vous avez décidé d'utiliser en cas de problème.</value>
@@ -732,7 +736,16 @@ Durée de fonctionnement : {1}</value>
<data name="PatchingFiles" xml:space="preserve">
<value>Patch des fichiers ASF...</value>
</data>
<data name="UserInputCryptkey" xml:space="preserve">
<value>Veuillez entrer votre clé de cryptage : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="ErrorIPNotBanned" xml:space="preserve">
<value>L'adresse IP {0} n'est pas interdite !</value>
<comment>{0} will be replaced by an IP address which was requested to be unbanned from using IPC</comment>
</data>
<data name="WarningNoLicense" xml:space="preserve">
<value>Vous avez tenté d'utiliser la fonctionnalité payante {0} mais vous n'avez pas d'identifiant de licence valide dans la configuration globale d'ASF. Veuillez vérifier votre configuration, car la fonctionnalité ne fonctionnera pas sans des détails supplémentaires.</value>
<comment>{0} will be replaced by feature name (e.g. MatchActively)</comment>
</data>
</root>

View File

@@ -97,7 +97,7 @@ StackTrace:
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>לא ניתן לטעון תצורה גלובלית. נא ודאו כי {0} קיים ותקין! ניתן לפנות למדריך ההגדרה ב-wiki להסבר נוסף.</value>
<value>לא ניתן לטעון config גלובלי. נא ודא כי {0} קיים ותקין! ניתן לפנות למדריך ההגדרה ב-wiki להסבר נוסף.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -138,10 +138,10 @@ StackTrace:
<value>נכשל!</value>
</data>
<data name="GlobalConfigChanged" xml:space="preserve">
<value>קובץ תצורה גלובלית השתנה!</value>
<value>קובץ config גלובלי השתנה!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>קובץ תצורה גלובלית הוסר!</value>
<value>קובץ config גלובלי הוסר!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>מתעלם מעסקת חליפין: {0}</value>
@@ -190,6 +190,10 @@ StackTrace:
<value>גירסה מקומית: {0} | הגירסה המרוחקת: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>אנא בדוק את אפליקציית Steam שלך, אתה אמור לקבל התראה להרשאת התחברות. לחץ Y אם קיבלת ואישרת את ההתראה, N אם אתה רוצה לספק קוד במקום: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>אנא הכנס את קוד האימות מאפליקציית המאמת של Steam: </value>
<comment>Please note that this translation should end with space</comment>
@@ -202,7 +206,10 @@ StackTrace:
<value>נא הזינו את משתמש ה- Steam שלכם: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalCode" xml:space="preserve">
<value>הזן בבקשה קוד הורים של Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>אנא הקישו את הסיסמה הנוכחית שלכם: </value>
<comment>Please note that this translation should end with space</comment>
@@ -224,38 +231,86 @@ StackTrace:
<value>לא ניתן למצוא אף בוט בשם {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>{1}/{0} בוטים רצים כרגע, {2} משחקים ({3} קלפים) נותרו להרצה.</value>
<comment>{0} will be replaced by number of active bots, {1} will be replaced by total number of bots, {2} will be replaced by total number of games left to farm, {3} will be replaced by total number of cards left to farm</comment>
</data>
<data name="BotStatusIdling" xml:space="preserve">
<value>הבוט מריץ את המשחק: {0} ({1}, {2} קלפים נותרו להשגה) מתוך {3} משחקים ({4} קלפים) שנותרו להרצה ({5}~ נותרו).</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by number of cards left to farm, {3} will be replaced by total number of games to farm, {4} will be replaced by total number of cards to farm, {5} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>הבוט מריץ את המשחקים: {0} מתוך סך כולל של {1} משחקים ({2} קלפים) שנותרו להרצה ({3}~ נותרו).</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), {1} will be replaced by total number of games to farm, {2} will be replaced by total number of cards to farm, {3} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>בודק עמוד תגים ראשון...</value>
</data>
<data name="CheckingOtherBadgePages" xml:space="preserve">
<value>בודק עמודי תגים אחרים...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>אלגוריתם הרצה שנבחר: {0}</value>
<comment>{0} will be replaced by the name of chosen farming algorithm</comment>
</data>
<data name="Done" xml:space="preserve">
<value>הושלם!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>נותרו {0} משחקים ({1} קלפים) להרצה ({2}~ נותרו)...</value>
<comment>{0} will be replaced by number of games, {1} will be replaced by number of cards, {2} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>ההרצה הסתיימה!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>ההרצה הסתיימה עבור: {0} ({1}) לאחר {2} של זמן משחק!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
<value>הרצת המשחקים התסיימה עבור: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>סטטוס ההרצה של {0} ({1}): {2} קלפים נותרו</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by number of cards left to farm</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
<value>הרצה נעצרה!</value>
</data>
<data name="IgnoredPermanentPauseEnabled" xml:space="preserve">
<value>מתעלם מבקשה זו, כיוון שהשהיה תמידית פועלת!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>אין לנו מה להריץ על החשבון הזה!</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>עכשיו מריץ: {0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="NowIdlingList" xml:space="preserve">
<value>עכשיו מריץ: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="PlayingNotAvailable" xml:space="preserve">
<value>האפשרות לשחק אינה זמינה כעת. ננסה מאוחר יותר!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>עדיין מריץ: {0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StillIdlingList" xml:space="preserve">
<value>עדיין מריץ: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="StoppedIdling" xml:space="preserve">
<value>נעצרה ההרצה: {0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StoppedIdlingList" xml:space="preserve">
<value>נעצרה ההרצה: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="UnknownCommand" xml:space="preserve">
<value>פקודה לא מוכרת!</value>
</data>
@@ -270,7 +325,9 @@ StackTrace:
<value>מאשר מתנה: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>החשבון הזה מוגבל, תהליך ההרצה לא יתאפשר עד להסרת ההגבלה!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>מזהה: {0} | סטטוס: {1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by status string</comment>
@@ -316,7 +373,10 @@ StackTrace:
<data name="BotInstanceNotStartingBecauseDisabled" xml:space="preserve">
<value>לא מריץ את הבוט הזה כי הוא אינו מופעל בקובץ ההגדרה!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>התקבל קוד שגיאה TwoFactorCodeMismatch מספר של {0} פעמים ברציפות. או שפרטי האימות הדו שלבי שהכנסת לא תקפים, או שהזמן שלך לא מסונכרן, מפיל!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
<value>ניתוק מסטים: {0}</value>
<comment>{0} will be replaced by logging off reason (string)</comment>
@@ -357,7 +417,10 @@ StackTrace:
<value>בבעלותך כבר: {0} | {1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotPointsBalance" xml:space="preserve">
<value>יתרת נקודות: {0}</value>
<comment>{0} will be replaced by the points balance value (integer)</comment>
</data>
<data name="BotRateLimitExceeded" xml:space="preserve">
<value>חרגת מגבלת התעריפים, ננסה שוב לאחר {0} שניות/דקות...</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "25 minutes")</comment>
@@ -376,8 +439,12 @@ StackTrace:
<data name="BotRemovedExpiredLoginKey" xml:space="preserve">
<value>הוסר מפתח התחברות שתוקפו פג!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>הבוט לא מריץ דבר.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>הבוט מוגבל ולא יכול להפיק קלפים דרך הרצה.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>הבוט מתחבר לרשת Steam.</value>
</data>
@@ -409,8 +476,12 @@ StackTrace:
<data name="BotConnectionLost" xml:space="preserve">
<value>החיבור לרשת Steam אבד. מתחבר מחדש...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>החשבון כבר לא תפוס: תהליך ההרצה התחדש!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>החשבון נמצא בשימוש כעת: ASF ימשיך את תהליך ההרצה ברגע שהוא יתפנה...</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>מתחבר...</value>
</data>
@@ -444,8 +515,14 @@ StackTrace:
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>ה- CurrentCulture המסופק שלך אינו חוקי, ASF ימשיך לפעול עם אפשרות ברירת המחדל!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF ינסה להשתמש בתרבות {0} המועדפת עליך, אך התרגום לשפה זו הושלם רק ב-{1}. אולי תוכל לעזור לנו לשפר את תרגום ה-ASF עבור השפה שלך?</value>
<comment>{0} will be replaced by culture code, such as "en-US", {1} will be replaced by completeness percentage, such as "78.5%"</comment>
</data>
<data name="IdlingGameNotPossible" xml:space="preserve">
<value>ההרצה {0} ({1}) הושבתה באופן זמני, משום ש-ASF לא מסוגל להריץ את משחק זה כרגע.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="WarningIdlingGameMismatch" xml:space="preserve">
<value>ASF זיהה חוסר התאמה של מזהה עבור {0} ({1}) והשתמש במזהה {2} במקום זאת.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by game's ID (number)</comment>
@@ -454,8 +531,12 @@ StackTrace:
<value>{0} גרסה {1}</value>
<comment>{0} will be replaced by program's name (e.g. "ASF"), {1} will be replaced by program's version (e.g. "1.0.0.0"). This string typically has nothing to translate and you should leave it as it is, unless you need to change the format, e.g. in RTL languages.</comment>
</data>
<data name="BotAccountLocked" xml:space="preserve">
<value>חשבון זה נעול, תהליך ההרצה אינו זמין לצמיתות!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>הבוט נעול ולכן לא יכול להפיק קלפים כלל דרך הרצה.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>פונקציה זו זמינה רק במצב ללא ראש!</value>
</data>
@@ -466,8 +547,14 @@ StackTrace:
<data name="ErrorAccessDenied" xml:space="preserve">
<value>הגישה נדחתה!</value>
</data>
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>אתה משתמש בגירסה חדשה יותר מאשר הגירסה הזמינה. אנא שים לב כי גירסאות קדם הפצה נועדו עבור משתמשים אשר יודעים כיצד לדווח על באגים, להתמודד עם בעיות ולתת משוב - תמיכה טכנית לא תינתן.</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>זיכרון שנמצא בשימוש: {0} מגה בייטים.
זמן פעילות התהליך: {1}</value>
<comment>{0} will be replaced by number (in megabytes) of memory being used, {1} will be replaced by translated TimeSpan string (such as "25 minutes"). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="ClearingDiscoveryQueue" xml:space="preserve">
<value>ניקוי תור גילוי סטים #{0}...</value>
<comment>{0} will be replaced by queue number</comment>
@@ -495,7 +582,9 @@ StackTrace:
<value>הדרך לעקיפת הבעיה עבור {0} באגים הופעלה.</value>
<comment>{0} will be replaced by the bug's name provided by ASF</comment>
</data>
<data name="TargetBotNotConnected" xml:space="preserve">
<value>מופע בוט זה לא מחובר!</value>
</data>
<data name="BotWalletBalance" xml:space="preserve">
<value>יתרה בארנק: {1}{0}</value>
<comment>{0} will be replaced by wallet balance value, {1} will be replaced by currency name</comment>
@@ -507,12 +596,21 @@ StackTrace:
<value>לבוט יש רמה {0}.</value>
<comment>{0} will be replaced by bot's level</comment>
</data>
<data name="ActivelyMatchingItems" xml:space="preserve">
<value>מתאים פריטי Steam, שלב #{0}...</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="DoneActivelyMatchingItems" xml:space="preserve">
<value>הסתיימה ההתאמה של פריטי Steam, שלב #{0}.</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="ErrorAborted" xml:space="preserve">
<value>הופסק!</value>
</data>
<data name="WarningExcessiveBotsCount" xml:space="preserve">
<value>אתה מפעיל יותר חשבונות בוטים אישיים מהמגבלה העליונה המומלצת שלנו ({0}). שים לב שהגדרה זו אינה נתמכת ועלולה לגרום לבעיות שונות הקשורות ל-Steam, כולל השעיית חשבון. עיין בשאלות הנפוצות לפרטים נוספים.</value>
<comment>{0} will be replaced by our maximum recommended bots count (number)</comment>
</data>
<data name="PluginLoaded" xml:space="preserve">
<value>{0} נטען בהצלחה!</value>
<comment>{0} will be replaced by the name of the custom ASF plugin</comment>
@@ -524,52 +622,130 @@ StackTrace:
<data name="NothingFound" xml:space="preserve">
<value>לא נמצא דבר!</value>
</data>
<data name="PluginsWarning" xml:space="preserve">
<value>טענת תוספים מותאמים אישית אחד או מרובים ל-ASF. מכיוון שאיננו יכולים להציע תמיכה עבור הגדרות מופרדות, אנא צור קשר עם המפתחים המתאימים של הפלאגינים שבהם החלטת להשתמש בכל מקרה של בעיות.</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>אנא המתן...</value>
</data>
<data name="EnterCommand" xml:space="preserve">
<value>הקש פקודה: </value>
</data>
<data name="Executing" xml:space="preserve">
<value>מבצע...</value>
</data>
<data name="InteractiveConsoleEnabled" xml:space="preserve">
<value>המסוף האינטראקטיבי פעיל כעת, הקלד 'c' כדי להיכנס למצב פקודה.</value>
</data>
<data name="BotGamesToRedeemInBackgroundCount" xml:space="preserve">
<value>לבוט נותרו {0} משחקים בתור ברקע.</value>
<comment>{0} will be replaced by remaining number of games in BGR's queue</comment>
</data>
<data name="ErrorSingleInstanceRequired" xml:space="preserve">
<value>תהליך ASF כבר פועל עבור ספריית העבודה הזו, מפיל!</value>
</data>
<data name="BotHandledConfirmations" xml:space="preserve">
<value>טופלו בהצלחה {0} אישורים!</value>
<comment>{0} will be replaced by number of confirmations</comment>
</data>
<data name="BotExtraIdlingCooldown" xml:space="preserve">
<value>ממתין עד {0} כדי להבטיח שאנו חופשיים להתחיל בהרצה...</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "1 minute")</comment>
</data>
<data name="UpdateCleanup" xml:space="preserve">
<value>מנקה קבצים ישנים לאחר עדכון...</value>
</data>
<data name="BotGeneratingSteamParentalCode" xml:space="preserve">
<value>יוצר קוד הורים של Steam, זה יכול לקחת זמן מה, שקול לשים אותו ב-config במקום...</value>
</data>
<data name="IPCConfigChanged" xml:space="preserve">
<value>תצורת IPC השתנתה!</value>
</data>
<data name="BotTradeOfferResult" xml:space="preserve">
<value>הצעת המסחר {0} נקבעה להיות {1} בשל {2}.</value>
<comment>{0} will be replaced by trade offer ID (number), {1} will be replaced by internal ASF enum name, {2} will be replaced by technical reason why the trade was determined to be in this state</comment>
</data>
<data name="BotInvalidPasswordDuringLogin" xml:space="preserve">
<value>התקבל קוד שגיאה InvalidPassword מספר של {0} פעמים ברציפות. סביר להניח שהסיסמה שלך לחשבון זה שגויה, מפיל!</value>
<comment>{0} will be replaced by maximum allowed number of failed login attempts</comment>
</data>
<data name="Result" xml:space="preserve">
<value>תוצאה: {0}</value>
<comment>{0} will be replaced by generic result of various functions that use this string</comment>
</data>
<data name="WarningUnsupportedEnvironment" xml:space="preserve">
<value>אתה מנסה להפעיל {0} גרסה של ASF בסביבה לא נתמכת: {1}. ספק --התעלם מ-unsupported-environment argument אם אתה באמת יודע מה אתה עושה.</value>
</data>
<data name="WarningUnknownCommandLineArgument" xml:space="preserve">
<value>שורת פקודה לא ידועה: {0}</value>
<comment>{0} will be replaced by unrecognized command that has been provided</comment>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>לא ניתן לאתר את תיקיית ה-config, מפיל!</value>
</data>
<data name="BotIdlingSelectedGames" xml:space="preserve">
<value>משחק בבחירה {0}: {1}</value>
<comment>{0} will be replaced by internal name of the config property (e.g. "GamesPlayedWhileIdle"), {1} will be replaced by comma-separated list of appIDs that user has chosen</comment>
</data>
<data name="AutomaticFileMigration" xml:space="preserve">
<value>קובץ ה-config שמיקומו {0} יועבר לתחביר העדכני ביותר...</value>
<comment>{0} will be replaced with the relative path to the affected config file</comment>
</data>
<data name="WarningWeakIPCPassword" xml:space="preserve">
<value>נראה שסיסמת ה-IPC שלך חלשה. שקול לבחור חזק יותר להגברת האבטחה. פרטים: {0}</value>
<comment>{0} will be replaced by additional details about the password being considered weak</comment>
</data>
<data name="WarningWeakSteamPassword" xml:space="preserve">
<value>נראה שהסיסמה שלך ב-Steam עבור '{0}' חלשה. שקול לבחור חזק יותר להגברת האבטחה. פרטים: {1}</value>
<comment>{0} will be replaced by the affected bot name, {1} will be replaced by additional details about the password being considered weak</comment>
</data>
<data name="WarningWeakCryptKey" xml:space="preserve">
<value>מפתח ההצפנה שלך נראה חלש. שקול לבחור חזק יותר להגברת האבטחה. פרטים: {0}</value>
<comment>{0} will be replaced by additional details about the encryption key being considered weak</comment>
</data>
<data name="WarningTooShortCryptKey" xml:space="preserve">
<value>מפתח ההצפנה שלך קצר מדי. אנו ממליצים להשתמש באחד שאורכו לפחות {0} בייטים (תווים).</value>
<comment>{0} will be replaced by the number of bytes (characters) recommended</comment>
</data>
<data name="WarningDefaultCryptKeyUsedForHashing" xml:space="preserve">
<value>אתה משתמש בהגדרה {0} של המאפיין {1}, אך לא סיפקת --cryptkey מותאם אישית. עליך לספק --cryptkey מותאם אישית להגברת האבטחה.</value>
<comment>{0} will be replaced by the name of a particular setting (e.g. "SCrypt"), {1} will be replaced by the name of the property (e.g. "IPCPassword")</comment>
</data>
<data name="WarningDefaultCryptKeyUsedForEncryption" xml:space="preserve">
<value>אתה משתמש בהגדרה {0} של המאפיין {1}, אך לא סיפקת --cryptkey מותאם אישית. זה מביס לחלוטין את ההגנה, מכיוון ש-ASF נאלץ להשתמש במפתח (ידוע) משלו. עליך לספק --cryptkey מותאם אישית כדי לעשות שימוש בהטבת האבטחה שמציעה הגדרה זו.</value>
<comment>{0} will be replaced by the name of a particular setting (e.g. "AES"), {1} will be replaced by the name of the property (e.g. "SteamPassword")</comment>
</data>
<data name="WarningRunningAsRoot" xml:space="preserve">
<value>אתה מנסה להפעיל את ASF כמנהל המערכת (שורש). זה גורם לסיכון אבטחה משמעותי למחשב שלך, ומכיוון ש-ASF אינו דורש גישת שורש לצורך פעולתו, אנו ממליצים להפעיל אותו כמשתמש שאינו מנהל במידת האפשר.</value>
</data>
<data name="WarningRunningInUnsupportedEnvironment" xml:space="preserve">
<value>אתה מפעיל את ASF בסביבה לא נתמכת, מספק ארגומנט --ignore-unsupported-environment. שים לב שאיננו מציעים כל סוג של תמיכה בתרחיש זה ואתה עושה זאת על אחריותך בלבד. הוזהרת.</value>
</data>
<data name="FetchingChecksumFromRemoteServer" xml:space="preserve">
<value>מביא checksum מהשרת המרוחק...</value>
</data>
<data name="VerifyingChecksumWithRemoteServer" xml:space="preserve">
<value>מאמת את ה-checksum של הקובץ הבינארי שהורד מול זה מהשרת המרוחק...</value>
</data>
<data name="ChecksumMissing" xml:space="preserve">
<value>השרת המרוחק לא יודע כלום על המהדורה שאליה אנחנו מעדכנים. מצב זה אפשרי אם המהדורה פורסמה לאחרונה - מסרב להמשיך בהליך העדכון באופן מיידי כאמצעי אבטחה נוסף.</value>
</data>
<data name="ChecksumWrong" xml:space="preserve">
<value>שרת מרוחק השיב עם סכום ביקורת אחר, זה עשוי להצביע על הורדה פגומה או התקפת MITM, מסרב להמשיך בהליך העדכון!</value>
</data>
<data name="PatchingFiles" xml:space="preserve">
<value>בונה קבצי ASF...</value>
</data>
<data name="UserInputCryptkey" xml:space="preserve">
<value>נא הכנס את המפתח הקריפטוגרפי שלך: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="ErrorIPNotBanned" xml:space="preserve">
<value>כתובת IP זו {0} לא חסומה!</value>
<comment>{0} will be replaced by an IP address which was requested to be unbanned from using IPC</comment>
</data>
<data name="WarningNoLicense" xml:space="preserve">
<value>ניסית להשתמש בתכונה בתשלום {0} אך אין לך מזהה רישיון חוקי שהוגדר בתצורה הגלובלית של ASF. אנא בדוק את התצורה שלך, מכיוון שהפונקציונליות לא תעבוד ללא פרטים נוספים.</value>
<comment>{0} will be replaced by feature name (e.g. MatchActively)</comment>
</data>
</root>

View File

@@ -188,6 +188,7 @@ StackTrace: {2}</value>
<value>Lokális verzió: {0} | Távoli verzió: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Add meg a 2FA kódot a Steam hitelesítő alkalmazásból: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -185,6 +185,7 @@
<value>Versi lokal: {0} | Versi remote: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Silakan masukkan kode 2FA dari aplikasi authenticator Steam Anda: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -188,6 +188,7 @@
<value>Versione locale: {0} | Versione remota: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Inserisci il codice 2FA dell'autenticatore mobile di Steam: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -187,11 +187,18 @@
<value>現在のバージョン: {0} | 最新バージョン: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Steamモバイルアプリを確認してください。ログイン承認通知を受け取ったはずです。 通知を受け取って承認した場合はYと入力してください。代わりにコードを提供したい場合はNと入力してください。 </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Steam 認証アプリの二次認証コードを入力してください: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>あなたのメールアドレスに送信されたSteamガード認証コードを入力してください: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>あなたの Steam アカウント名を入力してください: </value>
<comment>Please note that this translation should end with space</comment>
@@ -221,9 +228,18 @@
<value>{0} という名前の bot を見つけられませんでした!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>{0}/{1} のbotが実行されています。合計{2} つのゲーム({3} つのカード) をファームできます。</value>
<comment>{0} will be replaced by number of active bots, {1} will be replaced by total number of bots, {2} will be replaced by total number of games left to farm, {3} will be replaced by total number of cards left to farm</comment>
</data>
<data name="BotStatusIdling" xml:space="preserve">
<value>Botはファーミングしています: {0} ({1}, 残りカード{2} つ) 合計{3} つのゲーム({4} つのカード) が残っています(あと~{5})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by number of cards left to farm, {3} will be replaced by total number of games to farm, {4} will be replaced by total number of cards to farm, {5} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Botはファーミングしています: {0} 合計{1} つのゲーム({2} つのカード) が残っています(あと~{3})</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), {1} will be replaced by total number of games to farm, {2} will be replaced by total number of cards to farm, {3} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>最初のバッジのページを確認しています...</value>
</data>
@@ -381,7 +397,9 @@
<data name="BotLootingSuccess" xml:space="preserve">
<value>トレードオファーを正常に送信しました!</value>
</data>
<data name="BotSendingTradeToYourself" xml:space="preserve">
<value>自分自身にトレードを送信することはできません!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>その bot は ASF 二次認証が有効ではありません!認証システムを ASF 二次認証としてインポートするのを忘れていませんか?</value>
</data>
@@ -396,7 +414,10 @@
<value>所有している: {0} | {1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotPointsBalance" xml:space="preserve">
<value>ポイント残高: {0}</value>
<comment>{0} will be replaced by the points balance value (integer)</comment>
</data>
<data name="BotRateLimitExceeded" xml:space="preserve">
<value>回数制限を超過しました。{0} のクールダウン後に再試行します。</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "25 minutes")</comment>
@@ -418,7 +439,9 @@
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Botは何もファーミングしていません。</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Botが制限中のため、ファーミングでカードを得ることができません。</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>bot は Steam Network に接続しています。</value>
</data>
@@ -450,8 +473,12 @@
<data name="BotConnectionLost" xml:space="preserve">
<value>Steam Network への接続が失われました。再接続しています...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>アカウントが開放されました: ファーミング処理を再開します!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>現在アカウントは使用中です: アカウントが開放されたとき、ASFはファーミングを再開します...</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>接続中...</value>
</data>
@@ -485,8 +512,14 @@
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>指定された CurrentCulture が有効ではありません。ASFはデフォルトで実行されます</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF はあなたの言語 {0} の使用を試みますが、この言語の翻訳の完成度は {1} です。もしかしたらあなたが翻訳の向上を助けられるかもしれませんよ?</value>
<comment>{0} will be replaced by culture code, such as "en-US", {1} will be replaced by completeness percentage, such as "78.5%"</comment>
</data>
<data name="IdlingGameNotPossible" xml:space="preserve">
<value>そのゲームをプレイ出来ないため、{0} ({1}) のファーミングは一時的に無効にされています。</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="WarningIdlingGameMismatch" xml:space="preserve">
<value>ASFは {0} ({1}) のIDの不一致を検出しました。代わりに {2} のIDを使用します。</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by game's ID (number)</comment>
@@ -495,8 +528,12 @@
<value>{0} V{1}</value>
<comment>{0} will be replaced by program's name (e.g. "ASF"), {1} will be replaced by program's version (e.g. "1.0.0.0"). This string typically has nothing to translate and you should leave it as it is, unless you need to change the format, e.g. in RTL languages.</comment>
</data>
<data name="BotAccountLocked" xml:space="preserve">
<value>このアカウントはロックされています。ファーミングプロセスは永久的に利用できません!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Botがロックされているため、ファーミングでカードを得ることができません。</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>この機能は headless モードでのみ利用可能です!</value>
</data>
@@ -507,7 +544,9 @@
<data name="ErrorAccessDenied" xml:space="preserve">
<value>アクセスが拒否されました!</value>
</data>
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>あなたの指定した更新チャンネルよりも新しいバージョンを使用しています。プレリリースバージョンはバグの報告と問題への対処、フィードバックのできるユーザー向けであることに留意してください - テクニカルサポートは行われません。</value>
</data>
<data name="BotStats" xml:space="preserve">
<value>Current memory usage: {0} MB.
Process uptime: {1}</value>
@@ -580,7 +619,9 @@ Process uptime: {1}</value>
<data name="NothingFound" xml:space="preserve">
<value>何も見つかりません!</value>
</data>
<data name="PluginsWarning" xml:space="preserve">
<value>ASFに1つ以上のカスタムプラグインをロードしました。私たちはModのセットアップのためにサポートを提供することはできません。何か問題が発生した場合はModの開発者に問い合わせてください。</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>しばらくお待ちください…</value>
</data>
@@ -604,7 +645,10 @@ Process uptime: {1}</value>
<value>{0} 件の確認を正常に処理しました。</value>
<comment>{0} will be replaced by number of confirmations</comment>
</data>
<data name="BotExtraIdlingCooldown" xml:space="preserve">
<value>ファームできる状態になったことを確認するために {0} まで待機しています…</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "1 minute")</comment>
</data>
<data name="UpdateCleanup" xml:space="preserve">
<value>更新後に古いファイルをクリーンアップしています…</value>
</data>
@@ -626,25 +670,79 @@ Process uptime: {1}</value>
<value>結果: {0}</value>
<comment>{0} will be replaced by generic result of various functions that use this string</comment>
</data>
<data name="WarningUnsupportedEnvironment" xml:space="preserve">
<value>サポートされていない環境: {1} で、{0} 向けのASFを実行しようとしています: もしもこれが意図通りの動作であるならば、 --ignore-unsupported-environment 引数を使用してください。</value>
</data>
<data name="WarningUnknownCommandLineArgument" xml:space="preserve">
<value>不明なコマンドライン引数: {0}</value>
<comment>{0} will be replaced by unrecognized command that has been provided</comment>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>設定ディレクトリが見つかりませんでした。中断します!</value>
</data>
<data name="BotIdlingSelectedGames" xml:space="preserve">
<value>選択した {0} をプレイ中: {1}</value>
<comment>{0} will be replaced by internal name of the config property (e.g. "GamesPlayedWhileIdle"), {1} will be replaced by comma-separated list of appIDs that user has chosen</comment>
</data>
<data name="AutomaticFileMigration" xml:space="preserve">
<value>{0} 設定ファイルは最新の構文に移行されます...</value>
<comment>{0} will be replaced with the relative path to the affected config file</comment>
</data>
<data name="WarningWeakIPCPassword" xml:space="preserve">
<value>IPCパスワードが弱いようです。セキュリティを強化するためにもっと強力なパスワードを選択してください。詳細: {0}</value>
<comment>{0} will be replaced by additional details about the password being considered weak</comment>
</data>
<data name="WarningWeakSteamPassword" xml:space="preserve">
<value>あなたのSteamパスワード '{0}' は脆弱なようです。セキュリティを強化するために、より強力なパスワードを選択することを検討してください。詳細: {1}</value>
<comment>{0} will be replaced by the affected bot name, {1} will be replaced by additional details about the password being considered weak</comment>
</data>
<data name="WarningWeakCryptKey" xml:space="preserve">
<value>暗号化キーが弱いようです。セキュリティを強化するために強力なキーを選択することを検討してください。詳細: {0}</value>
<comment>{0} will be replaced by additional details about the encryption key being considered weak</comment>
</data>
<data name="WarningTooShortCryptKey" xml:space="preserve">
<value>暗号化キーが短すぎます。少なくとも {0} バイト (文字) の長いものを使用することをお勧めします。</value>
<comment>{0} will be replaced by the number of bytes (characters) recommended</comment>
</data>
<data name="WarningDefaultCryptKeyUsedForHashing" xml:space="preserve">
<value>{0} 設定の {1} プロパティを使用していますが、カスタム --cryptkeyを指定していません。セキュリティ強化のためにカスタム --cryptkey を指定する必要があります。</value>
<comment>{0} will be replaced by the name of a particular setting (e.g. "SCrypt"), {1} will be replaced by the name of the property (e.g. "IPCPassword")</comment>
</data>
<data name="WarningDefaultCryptKeyUsedForEncryption" xml:space="preserve">
<value>{0} 設定の {1} プロパティを使用していますが、カスタム --cryptkey が設定されていません。 ASFは独自の(既知の) キーを使用することを余儀なくされているため、この状態ではセキュリティ保護がされていないことを意味します。 この設定で提供されるセキュリティ上のメリットを利用するためには、カスタム --cryptkey を提供する必要があります。</value>
<comment>{0} will be replaced by the name of a particular setting (e.g. "AES"), {1} will be replaced by the name of the property (e.g. "SteamPassword")</comment>
</data>
<data name="WarningRunningAsRoot" xml:space="preserve">
<value>あなたは管理者(root) としてASFを実行しようとしています。 これにより、マシンに重大なセキュリティリスクが発生する可能性があります。ASFは操作に管理者アクセスを必要としないため、 可能であれば管理者以外のユーザーとして実行することをお勧めします。</value>
</data>
<data name="WarningRunningInUnsupportedEnvironment" xml:space="preserve">
<value>--ignore-unsupported-environment引数を使用し、サポートされていない環境でASFを実行しています。 我々は、この動作環境に対するいかなる種類のサポートも提供しておらず、自身の責任においてそれを行っていることにご注意ください。 警告はしましたよ。</value>
</data>
<data name="FetchingChecksumFromRemoteServer" xml:space="preserve">
<value>リモートサーバーからチェックサムを取得しています...</value>
</data>
<data name="VerifyingChecksumWithRemoteServer" xml:space="preserve">
<value>リモートサーバーからダウンロードしたバイナリのチェックサムを確認しています...</value>
</data>
<data name="ChecksumMissing" xml:space="preserve">
<value>リモートサーバーがアップデート中のリリースを認知していません。このリリースが直近に公開された場合、この状況が起こることがあります - 万全なセキュリティ対策を期すため、このアップデートを却下します。</value>
</data>
<data name="ChecksumWrong" xml:space="preserve">
<value>リモートサーバーがチェックサムの不一致を確認しました。これはダウンロードが破損しているか、MITM攻撃を示す可能性があります。このアップデートを却下します</value>
</data>
<data name="PatchingFiles" xml:space="preserve">
<value>ASFファイルをパッチ中...</value>
</data>
<data name="UserInputCryptkey" xml:space="preserve">
<value>cryptkeyを入力してください: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="ErrorIPNotBanned" xml:space="preserve">
<value>IPアドレス {0} は禁止されていません!</value>
<comment>{0} will be replaced by an IP address which was requested to be unbanned from using IPC</comment>
</data>
<data name="WarningNoLicense" xml:space="preserve">
<value>有償機能の{0} の使用を試みましたが、ASFグローバル設定に有効なLicenseIDが設定されていません。追加の設定が行われていない場合、この機能は動作しません。設定を確認してください。</value>
<comment>{0} will be replaced by feature name (e.g. MatchActively)</comment>
</data>
</root>

View File

@@ -62,6 +62,14 @@
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>შემოთავაზების მიღება {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
<value>ASF ავტომატურად შემოწმედბა ახალ ვერსიისთვის ყველა {0}-ში.</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "24 hours")</comment>
</data>
@@ -78,10 +86,12 @@
<data name="Exiting" xml:space="preserve">
<value>გამოსვლა...</value>
</data>
<data name="WarningFailed" xml:space="preserve">
<value>ვერ მოხერხდა!</value>
</data>
@@ -258,6 +268,7 @@
</root>

View File

@@ -188,6 +188,7 @@ StackTrace:
<value>로컬 버전: {0} | 원격 버전: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Steam 인증 어플의 2차 인증 코드를 입력하세요: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Vietinė versija: {0} | Versija serveryje: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Patikrinkite jūsų Steam programėlę telefone, jūs turėjote gauti prisijungimo patvirtinimo pranešima. Parašykite Y jei jūs gavote ir patvirtinote pranešimą, N jei jūs norite pateikti kodą vietoje patvirtinimo pranešimo: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Prašome įvesti 2FA kodą iš jūsų Steam autentifikavimo programėlės: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Lokālā versija: {0} | Attālinātā versija: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Pārbaudi Steam mobilo aplikāciju, ir pienācis ziņojums par pierakstīšanās mēģinājumu. Raksti Y, ja saņēmi un apstiprināji pierakstīšanos, raksti N, ja gribi ievadīt pierakstīšanās kodu: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Lūdzu, ievadi savu 2FA kodu no Steam autentifikatora aplikācijas: </value>
<comment>Please note that this translation should end with space</comment>
@@ -732,7 +736,16 @@ Darbspējas laiks: {1}</value>
<data name="PatchingFiles" xml:space="preserve">
<value>Atjauno ASF failus...</value>
</data>
<data name="UserInputCryptkey" xml:space="preserve">
<value>Ievadiet savu crytkey: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="ErrorIPNotBanned" xml:space="preserve">
<value>IP adrese {0} nav aizliegta!</value>
<comment>{0} will be replaced by an IP address which was requested to be unbanned from using IPC</comment>
</data>
<data name="WarningNoLicense" xml:space="preserve">
<value>Jūs mēģinat izmantot maksas pakalpojumu {0}, bet jums nav derīgs LicenseID iestatīts ASF globālajā konfigurācijā. Lūdzu pārskati savu konfigurāciju, jo šī funkcionalitāte nestrādās bez papildu informācijas.</value>
<comment>{0} will be replaced by feature name (e.g. MatchActively)</comment>
</data>
</root>

View File

@@ -189,6 +189,7 @@ StackTrace:
<value>Lokale versie: {0} | Externe versie: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Voer de 2FA code in van je Steam authenticator app: </value>
<comment>Please note that this translation should end with space</comment>

View File

@@ -0,0 +1,281 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Godtar handel: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
<value>ASF vil automatisk se etter nye versjoner hver {0}.</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "24 hours")</comment>
</data>
<data name="Content" xml:space="preserve">
<value>Innhold:
{0}</value>
<comment>{0} will be replaced by content string. Please note that this string should include newline for formatting.</comment>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Konfigurert {0} egenskap er ugyldig: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
<value>ASF V{0} har støtt på et kritisk unntak før hovedmodulen for loggføring fikk initiert!</value>
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
<value>Unntak: {0}() {1}
StackTrace:
{2}</value>
<comment>{0} will be replaced by function name, {1} will be replaced by exception message, {2} will be replaced by entire stack trace. Please note that this string should include newlines for formatting.</comment>
</data>
</root>

View File

@@ -190,6 +190,10 @@ StackTrace:
<value>Lokalna wersja: {0} | Wersja zdalna: {1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceConfirmation" xml:space="preserve">
<value>Sprawdź swoją aplikację mobilną Steam, otrzymasz powiadomienie o zatwierdzeniu logowania. Wpisz Y, jeśli otrzymano i zatwierdzono powiadomienie, N, jeśli zamiast tego chcesz podać kod: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Wprowadź kod uwierzytelnienia dwuskładnikowego z twojego mobilnego tokena Steam: </value>
<comment>Please note that this translation should end with space</comment>

Some files were not shown because too many files have changed in this diff Show More