detox 20.24.0 → 20.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0-sources.jar → 20.25.1/detox-20.25.1-sources.jar} +0 -0
  2. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1-sources.jar.md5 +1 -0
  3. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1-sources.jar.sha1 +1 -0
  4. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1-sources.jar.sha256 +1 -0
  5. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1-sources.jar.sha512 +1 -0
  6. package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.pom → 20.25.1/detox-20.25.1.pom} +1 -1
  7. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1.pom.md5 +1 -0
  8. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1.pom.sha1 +1 -0
  9. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1.pom.sha256 +1 -0
  10. package/Detox-android/com/wix/detox/20.25.1/detox-20.25.1.pom.sha512 +1 -0
  11. package/Detox-android/com/wix/detox/maven-metadata.xml +4 -4
  12. package/Detox-android/com/wix/detox/maven-metadata.xml.md5 +1 -1
  13. package/Detox-android/com/wix/detox/maven-metadata.xml.sha1 +1 -1
  14. package/Detox-android/com/wix/detox/maven-metadata.xml.sha256 +1 -1
  15. package/Detox-android/com/wix/detox/maven-metadata.xml.sha512 +1 -1
  16. package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0-sources.jar → 20.25.1/detox-legacy-20.25.1-sources.jar} +0 -0
  17. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1-sources.jar.md5 +1 -0
  18. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1-sources.jar.sha1 +1 -0
  19. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1-sources.jar.sha256 +1 -0
  20. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1-sources.jar.sha512 +1 -0
  21. package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.pom → 20.25.1/detox-legacy-20.25.1.pom} +1 -1
  22. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1.pom.md5 +1 -0
  23. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1.pom.sha1 +1 -0
  24. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1.pom.sha256 +1 -0
  25. package/Detox-android/com/wix/detox-legacy/20.25.1/detox-legacy-20.25.1.pom.sha512 +1 -0
  26. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml +4 -4
  27. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.md5 +1 -1
  28. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha1 +1 -1
  29. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha256 +1 -1
  30. package/Detox-android/com/wix/detox-legacy/maven-metadata.xml.sha512 +1 -1
  31. package/Detox-ios-framework.tbz +0 -0
  32. package/Detox-ios-src.tbz +0 -0
  33. package/Detox-ios-xcuitest.tbz +0 -0
  34. package/package.json +2 -2
  35. package/src/devices/allocation/DeviceAllocator.js +7 -0
  36. package/src/devices/allocation/drivers/android/genycloud/GenyAllocDriver.js +9 -1
  37. package/src/devices/allocation/drivers/android/genycloud/exec/GenyCloudExec.js +1 -1
  38. package/src/devices/allocation/drivers/android/genycloud/services/GenyInstanceLifecycleService.js +27 -3
  39. package/src/devices/allocation/factories/android.js +1 -1
  40. package/src/devices/common/drivers/android/exec/ADB.js +6 -2
  41. package/src/realms/DetoxPrimaryContext.js +29 -16
  42. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0-sources.jar.md5 +0 -1
  43. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0-sources.jar.sha1 +0 -1
  44. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0-sources.jar.sha256 +0 -1
  45. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0-sources.jar.sha512 +0 -1
  46. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0.pom.md5 +0 -1
  47. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0.pom.sha1 +0 -1
  48. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0.pom.sha256 +0 -1
  49. package/Detox-android/com/wix/detox/20.24.0/detox-20.24.0.pom.sha512 +0 -1
  50. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0-sources.jar.md5 +0 -1
  51. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0-sources.jar.sha1 +0 -1
  52. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0-sources.jar.sha256 +0 -1
  53. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0-sources.jar.sha512 +0 -1
  54. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0.pom.md5 +0 -1
  55. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0.pom.sha1 +0 -1
  56. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0.pom.sha256 +0 -1
  57. package/Detox-android/com/wix/detox-legacy/20.24.0/detox-legacy-20.24.0.pom.sha512 +0 -1
  58. /package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.aar → 20.25.1/detox-20.25.1.aar} +0 -0
  59. /package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.aar.md5 → 20.25.1/detox-20.25.1.aar.md5} +0 -0
  60. /package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.aar.sha1 → 20.25.1/detox-20.25.1.aar.sha1} +0 -0
  61. /package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.aar.sha256 → 20.25.1/detox-20.25.1.aar.sha256} +0 -0
  62. /package/Detox-android/com/wix/detox/{20.24.0/detox-20.24.0.aar.sha512 → 20.25.1/detox-20.25.1.aar.sha512} +0 -0
  63. /package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.aar → 20.25.1/detox-legacy-20.25.1.aar} +0 -0
  64. /package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.aar.md5 → 20.25.1/detox-legacy-20.25.1.aar.md5} +0 -0
  65. /package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.aar.sha1 → 20.25.1/detox-legacy-20.25.1.aar.sha1} +0 -0
  66. /package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.aar.sha256 → 20.25.1/detox-legacy-20.25.1.aar.sha256} +0 -0
  67. /package/Detox-android/com/wix/detox-legacy/{20.24.0/detox-legacy-20.24.0.aar.sha512 → 20.25.1/detox-legacy-20.25.1.aar.sha512} +0 -0
@@ -0,0 +1 @@
1
+ ef152eed43d99abecc781d2c5581ed2c
@@ -0,0 +1 @@
1
+ a00c63f1d6864fe3684aabdc4addaf251db4f12d
@@ -0,0 +1 @@
1
+ 9d2842e3781dc8085a80c2029c5d63cac9b382181371e3d715e71248ae81e619
@@ -0,0 +1 @@
1
+ 9f993e109ac46d9ec4132ad900b0eee9e4f5604909c69496ebc364ba1bc32ceb19fca9b5adbfe6a9e61c4c489e6a21e61efd58ec6a0602a4c8dd35c0f1897c72
@@ -3,7 +3,7 @@
3
3
  <modelVersion>4.0.0</modelVersion>
4
4
  <groupId>com.wix</groupId>
5
5
  <artifactId>detox</artifactId>
6
- <version>20.24.0</version>
6
+ <version>20.25.1</version>
7
7
  <packaging>aar</packaging>
8
8
  <name>Detox</name>
9
9
  <description>Gray box end-to-end testing and automation library for mobile apps</description>
@@ -0,0 +1 @@
1
+ 5a378650b3fb1fc751bad1924a05e988
@@ -0,0 +1 @@
1
+ a2d652e833f0d7a91a8f05e2232a4ca964992a66
@@ -0,0 +1 @@
1
+ 97b5030e5db6c3d762c9a24ecc11a6989f4079591ddab23d2b8c67e4ac20bfb7
@@ -0,0 +1 @@
1
+ 37ab0fe6dec997c70fdff5e0f76acf744c487d150a70954bffa0467042c861b2bfe3711d53762c1ea0efce1a6fc8c29b82bfb822435cac2756474fcec24c4d5e
@@ -3,11 +3,11 @@
3
3
  <groupId>com.wix</groupId>
4
4
  <artifactId>detox</artifactId>
5
5
  <versioning>
6
- <latest>20.24.0</latest>
7
- <release>20.24.0</release>
6
+ <latest>20.25.1</latest>
7
+ <release>20.25.1</release>
8
8
  <versions>
9
- <version>20.24.0</version>
9
+ <version>20.25.1</version>
10
10
  </versions>
11
- <lastUpdated>20240712095248</lastUpdated>
11
+ <lastUpdated>20240716121904</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- cbe838e81e9b2489895384dbf73d9855
1
+ 275ff0123e1dbaa1aed3a7e91e9ae762
@@ -1 +1 @@
1
- 248526814045318fcaeda09d11dcff993503e58c
1
+ f986a8170fefe76b9f4efd0b755aaccde8b51bdd
@@ -1 +1 @@
1
- 674cb578d4b1ab1e1f0f3af2f9e6b7d237e9417840a73f4a55181cc61aa55a75
1
+ 779e3063806e639cd380893e02fe5a902fbdad0f12d6eb06b09819f07a863272
@@ -1 +1 @@
1
- bf96117e1935d3a9c81337a743672b5ef93cc5c786026f5b2bca4118ab69c5c3b4a55600019581dc75f5b533e0fc310963e457df556d8b5108f2628aa246fbd8
1
+ 8c0fae16887da6da5fa405a62587e05612fa0b27a8d4e047419dfeb0bf3889b83c4c367941056b92b309b327c3f9aa28f1b26cc882ce6dda96ec2564a0836089
@@ -0,0 +1 @@
1
+ 5faf79ea736df2cf512a937df79bec2a
@@ -0,0 +1 @@
1
+ 834508470595778511d3f3b564de2d31413e57ff
@@ -0,0 +1 @@
1
+ 3d5e951f611b30a5d85d3535db3152824f019c4cd99972ff304b76d0c46b1038
@@ -0,0 +1 @@
1
+ ff7bf763835d49aa17a6ba58b738cf47e5577038c10de0e6af0c629be076970895540b02ee8ba9d431c277f28aa1458c617d95b9df0adb0a32d0fa3afb67972c
@@ -3,7 +3,7 @@
3
3
  <modelVersion>4.0.0</modelVersion>
4
4
  <groupId>com.wix</groupId>
5
5
  <artifactId>detox-legacy</artifactId>
6
- <version>20.24.0</version>
6
+ <version>20.25.1</version>
7
7
  <packaging>aar</packaging>
8
8
  <name>Detox</name>
9
9
  <description>Gray box end-to-end testing and automation library for mobile apps</description>
@@ -0,0 +1 @@
1
+ 275a026938b603bc63c62aa9105660ab
@@ -0,0 +1 @@
1
+ 38f52f7d5a0616f1ea0c7fd7831197ebda6b4df9
@@ -0,0 +1 @@
1
+ 92ee50857ac9fb128bd30d6079ed09ef71e53526fe45581baec69d72bc05c5a4
@@ -0,0 +1 @@
1
+ e6ca3c09f9026d4e0c54b71f8b1c78506fc6a2005c3f41e6df65b4f8f36fb4bea770cca153c887f140ce338200397777168a55e52bd51c4894dbe11677d422b6
@@ -3,11 +3,11 @@
3
3
  <groupId>com.wix</groupId>
4
4
  <artifactId>detox-legacy</artifactId>
5
5
  <versioning>
6
- <latest>20.24.0</latest>
7
- <release>20.24.0</release>
6
+ <latest>20.25.1</latest>
7
+ <release>20.25.1</release>
8
8
  <versions>
9
- <version>20.24.0</version>
9
+ <version>20.25.1</version>
10
10
  </versions>
11
- <lastUpdated>20240712095305</lastUpdated>
11
+ <lastUpdated>20240716121940</lastUpdated>
12
12
  </versioning>
13
13
  </metadata>
@@ -1 +1 @@
1
- ebd10c4caa0af7ac57ef360ffe5e7c41
1
+ 39a5211574c6847cfa8ba0c843d19419
@@ -1 +1 @@
1
- 82e96d3f328e2794534a91f0b921dd1c51413e8e
1
+ 03853c1e7b6181d8a82d09756d5ffeb0894d2883
@@ -1 +1 @@
1
- 1d2093dc2d529e5844dd5117be23864ddfc8101c2d5b5a935b48ce56cf434cb2
1
+ 3c07d8c65169a75189c32e72f195d09399c059a0a42a5d42e0a54e06a9c1af8e
@@ -1 +1 @@
1
- 515cd3e14cf792392678590d01108ca641e8ae53db46446f4fa7bbbebc9a680b8efd5568b7b5306ce4ed46e12e36c3fd9fe5d8c05e412a25cfbd5b5fd17a963d
1
+ 01a09bb5c4de685f4a81bb7b11d211230808546068b486ca51e3889dfb74ad278c18f7a330c6b1898d73a8b993d91884e36336fcb84054e1a923b93f6578613f
Binary file
package/Detox-ios-src.tbz CHANGED
Binary file
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "detox",
3
3
  "description": "E2E tests and automation for mobile",
4
- "version": "20.24.0",
4
+ "version": "20.25.1",
5
5
  "bin": {
6
6
  "detox": "local-cli/cli.js"
7
7
  },
@@ -115,5 +115,5 @@
115
115
  "browserslist": [
116
116
  "node 14"
117
117
  ],
118
- "gitHead": "4a442cee82115ef4eeb5dd618e8ab4d0281f4b2a"
118
+ "gitHead": "f25468f5b0cf6e2895fb6b51b96ffc14263f2084"
119
119
  }
@@ -4,6 +4,8 @@
4
4
  * @typedef {import('../common/drivers/DeviceCookie').DeviceCookie} DeviceCookie
5
5
  */
6
6
 
7
+ const _ = require('lodash');
8
+
7
9
  const log = require('../../utils/logger').child({ cat: 'device,device-allocation' });
8
10
  const traceMethods = require('../../utils/traceMethods');
9
11
 
@@ -16,6 +18,11 @@ class DeviceAllocator {
16
18
  this._counter = 0;
17
19
  this._ids = new Map();
18
20
  traceMethods(log, this, ['init', 'cleanup', 'emergencyCleanup']);
21
+
22
+ // Init and cleanup should be called once for each allocation driver type
23
+ this.init = _.once(this.init.bind(this));
24
+ this.cleanup = _.once(this.cleanup.bind(this));
25
+ this.emergencyCleanup = _.once(this.emergencyCleanup.bind(this));
19
26
  }
20
27
 
21
28
  /**
@@ -10,6 +10,7 @@ const log = require('../../../../../utils/logger').child({ cat: 'device' });
10
10
  const GenyRegistry = require('./GenyRegistry');
11
11
 
12
12
  const events = {
13
+ GENYCLOUD_INIT: { event: 'GENYCLOUD_INIT' },
13
14
  GENYCLOUD_TEARDOWN: { event: 'GENYCLOUD_TEARDOWN' },
14
15
  };
15
16
 
@@ -40,12 +41,19 @@ class GenyAllocDriver {
40
41
  this._instanceCounter = 0;
41
42
  }
42
43
 
44
+ async init() {
45
+ try {
46
+ await this._adb.startDaemon();
47
+ } catch (error) {
48
+ log.warn({ ...events.GENYCLOUD_INIT, error }, 'ADB server start failed; error ignored');
49
+ }
50
+ }
51
+
43
52
  /**
44
53
  * @param deviceConfig { Object }
45
54
  * @return {Promise<GenycloudEmulatorCookie>}
46
55
  */
47
56
  async allocate(deviceConfig) {
48
- await new Promise((resolve) => setTimeout(resolve, 10000));
49
57
  const deviceQuery = deviceConfig.device;
50
58
  const recipe = await this._recipeQuerying.getRecipeFromQuery(deviceQuery);
51
59
  this._assertRecipe(deviceQuery, recipe);
@@ -28,7 +28,7 @@ class GenyCloudExec {
28
28
  }
29
29
 
30
30
  adbConnect(instanceUUID) {
31
- return this._exec(`instances adbconnect ${instanceUUID}`);
31
+ return this._exec(`instances adbconnect ${instanceUUID}`, { retries: 0 });
32
32
  }
33
33
 
34
34
  stopInstance(instanceUUID) {
@@ -1,8 +1,16 @@
1
+ const log = require('../../../../../../utils/logger').child({ cat: 'device' });
2
+ const retry = require('../../../../../../utils/retry');
3
+
1
4
  const Instance = require('./dto/GenyInstance');
2
5
 
3
6
  class GenyInstanceLifecycleService {
4
- constructor(genyCloudExec) {
7
+ /**
8
+ * @param { import('../exec/GenyCloudExec') } genyCloudExec
9
+ * @param { import('../../../../../common/drivers/android/exec/ADB') } adb
10
+ */
11
+ constructor(genyCloudExec, adb) {
5
12
  this._genyCloudExec = genyCloudExec;
13
+ this._adb = adb;
6
14
  }
7
15
 
8
16
  async createInstance(recipeUUID, instanceName) {
@@ -10,8 +18,24 @@ class GenyInstanceLifecycleService {
10
18
  return new Instance(result.instance);
11
19
  }
12
20
 
13
- async adbConnectInstance(instanceUUID) {
14
- const result = (await this._genyCloudExec.adbConnect(instanceUUID));
21
+ async adbConnectInstance(instanceUUID){
22
+ const doAdbConnect = async () =>
23
+ this._genyCloudExec.adbConnect(instanceUUID);
24
+ const beforeEachRetry = async () => {
25
+ try {
26
+ const { stdout } = await this._adb.devices({ retries: 0, verbosity: 'low' });
27
+ log.warn('adb-connect command failed, current ADB devices list:\n', stdout);
28
+ } catch (e) {
29
+ log.warn('adb-connect command failed; couldn\'t get the list of current devices (see error)', e);
30
+ }
31
+ return true;
32
+ };
33
+ const options = {
34
+ conditionFn: beforeEachRetry,
35
+ retries: 2,
36
+ };
37
+
38
+ const result = await retry(options, doAdbConnect);
15
39
  return new Instance(result.instance);
16
40
  }
17
41
 
@@ -66,7 +66,7 @@ class Genycloud extends DeviceAllocatorFactory {
66
66
  const recipeService = new RecipesService(exec);
67
67
 
68
68
  const InstanceLifecycleService = require('../drivers/android/genycloud/services/GenyInstanceLifecycleService');
69
- const instanceLifecycleService = new InstanceLifecycleService(exec);
69
+ const instanceLifecycleService = new InstanceLifecycleService(exec, adb);
70
70
 
71
71
  const RecipeQuerying = require('../drivers/android/genycloud/GenyRecipeQuerying');
72
72
  const recipeQuerying = new RecipeQuerying(recipeService);
@@ -16,8 +16,12 @@ class ADB {
16
16
  this.adbBin = getAdbPath();
17
17
  }
18
18
 
19
- async devices() {
20
- const { stdout } = await this.adbCmd('', 'devices', { verbosity: 'high' });
19
+ async startDaemon() {
20
+ await this.adbCmd('', 'start-server', { retries: 0, verbosity: 'high' });
21
+ }
22
+
23
+ async devices(options) {
24
+ const { stdout } = await this.adbCmd('', 'devices', { verbosity: 'high', ...options });
21
25
  /** @type {DeviceHandle[]} */
22
26
  const devices = _.chain(stdout)
23
27
  .trim()
@@ -26,6 +26,7 @@ const _logFinalError = Symbol('logFinalError');
26
26
  const _cookieAllocators = Symbol('cookieAllocators');
27
27
  const _deviceAllocators = Symbol('deviceAllocators');
28
28
  const _createDeviceAllocator = Symbol('createDeviceAllocator');
29
+ const _createDeviceAllocatorInstance = Symbol('createDeviceAllocatorInstance');
29
30
  //#endregion
30
31
 
31
32
  class DetoxPrimaryContext extends DetoxContext {
@@ -272,29 +273,41 @@ class DetoxPrimaryContext extends DetoxContext {
272
273
  /** @param {Detox.DetoxDeviceConfig} deviceConfig */
273
274
  [_createDeviceAllocator] = async (deviceConfig) => {
274
275
  const deviceType = deviceConfig.type;
276
+ const deviceAllocator = this[_createDeviceAllocatorInstance](deviceConfig);
277
+
278
+ try {
279
+ await deviceAllocator.init();
280
+ } catch (e) {
281
+ try {
282
+ delete this[_deviceAllocators][deviceType];
283
+ await deviceAllocator.cleanup();
284
+ } catch (e2) {
285
+ this[symbols.logger].error({ cat: 'device', err: e2 }, `Failed to cleanup the device allocation driver for ${deviceType} after a failed initialization`);
286
+ }
287
+
288
+ throw e;
289
+ }
290
+
291
+ return this[_deviceAllocators][deviceType];
292
+ };
293
+
294
+ /**
295
+ * @param {Detox.DetoxDeviceConfig} deviceConfig
296
+ * @returns { DeviceAllocator }
297
+ */
298
+ [_createDeviceAllocatorInstance] = (deviceConfig) => {
299
+ const deviceType = deviceConfig.type;
300
+
275
301
  if (!this[_deviceAllocators][deviceType]) {
276
302
  const environmentFactory = require('../environmentFactory');
277
303
  const { deviceAllocatorFactory } = environmentFactory.createFactories(deviceConfig);
278
304
  const { detoxConfig } = this[$sessionState];
279
- const deviceAllocator = deviceAllocatorFactory.createDeviceAllocator({
305
+
306
+ this[_deviceAllocators][deviceType] = deviceAllocatorFactory.createDeviceAllocator({
280
307
  detoxConfig,
281
- detoxSession: this[$sessionState],
308
+ detoxSession: this[$sessionState]
282
309
  });
283
-
284
- try {
285
- await deviceAllocator.init();
286
- this[_deviceAllocators][deviceType] = deviceAllocator;
287
- } catch (e) {
288
- try {
289
- await deviceAllocator.cleanup();
290
- } catch (e2) {
291
- this[symbols.logger].error({ cat: 'device', err: e2 }, `Failed to cleanup the device allocation driver for ${deviceType} after a failed initialization`);
292
- }
293
-
294
- throw e;
295
- }
296
310
  }
297
-
298
311
  return this[_deviceAllocators][deviceType];
299
312
  };
300
313
 
@@ -1 +0,0 @@
1
- 619b3e428e498fda0870620ce2d3c5c4
@@ -1 +0,0 @@
1
- 017905bcc89ab25f26a51c0d724680d83416b2e7
@@ -1 +0,0 @@
1
- d88cd6cd15872d9f04c77c23c1c2fd4474787eb0f25333f08452c2fb4de8c74b
@@ -1 +0,0 @@
1
- 2757b909c56c219bdb8fcb4b629523bcad05556234bf89ae5953b21e62c3a9676f45ad36ed3eb4b8a875a891406664c55a7102ff8933a8c4dcb8eecf3f2723a1
@@ -1 +0,0 @@
1
- d6caeb72643d8530ef1b332e98566350
@@ -1 +0,0 @@
1
- 13c3cb0d37f92bcd283ef5344897c975396b93d0
@@ -1 +0,0 @@
1
- 348ea5305bc6ebd7658d9966eee32c073f268adf33e802a12469c2dad0c136bf
@@ -1 +0,0 @@
1
- cf5032396a95a97fd964672c188382d46fd16195e5708a6b21f85322a678595d8923f7dac31479f05e1121af4fcef0734c22ceabdf22afd54db9213ccb70a9dc
@@ -1 +0,0 @@
1
- 9e833c26f83f840d110b10f49e930040
@@ -1 +0,0 @@
1
- 47fa17817e76b9388404db2f8af6adf908faa1cb
@@ -1 +0,0 @@
1
- 4ad337ac65a1942992b394b1bacdbec38f2415032903af63d6dfbe7bf8539233
@@ -1 +0,0 @@
1
- 5d9ddd3356f022e5a7a341caddb73a9a2deb69f36886824bda7e7f48f104ad94f7950924101dbd6248a7afd4cb03a8da2ae5a9a4b2f1cf498cae53f306a68ccf
@@ -1 +0,0 @@
1
- c0fb34a4b4869fb29fe7c29e071a8905
@@ -1 +0,0 @@
1
- 01fb530a4a232d4ddd2428bc594a69de25963637
@@ -1 +0,0 @@
1
- 6cb3e5c70e00b6dc5f102587810da45a304a2b61dc843161b00a9022cdae27de
@@ -1 +0,0 @@
1
- d6a1b08152dc9a8c0f5defe3251ed611cd3fd2648702b54d12e53f00d3a8a1315897466eb02e31350379002eb74e8bbdd91539a91b18c5bfffa4a5fa8db78719